Răsfoiți Sursa

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/main/java/com/izouma/awesomeadmin/constant/AppConstant.java
x1ongzhu 7 ani în urmă
părinte
comite
4619bfd85c

+ 6 - 1
src/main/java/com/izouma/awesomeadmin/constant/AppConstant.java

@@ -334,6 +334,11 @@ public interface AppConstant {
          */
         Integer CLOSE = 5;
 
+        /**
+         * 解析完成
+         */
+        Integer ANALYSIS = 8;
+
     }
 
     /**
@@ -381,7 +386,7 @@ public interface AppConstant {
         Integer OVERTIME = 7;
 
         /**
-         * 比赛超时
+         * 解析完成
          */
         Integer PROCESSED = 8;
 

+ 2 - 0
src/main/java/com/izouma/awesomeadmin/dao/HouseInfoMapper.java

@@ -37,5 +37,7 @@ public interface HouseInfoMapper{
     List<HouseInfo> autoBeginHouseInfo(HouseInfo record);
 
     List<HouseInfo> autoEndHouseInfo(HouseInfo record);
+
+    int updateToAnalysis(HouseInfo record);
 }
 

+ 17 - 0
src/main/java/com/izouma/awesomeadmin/dao/HouseInfoMapper.xml

@@ -839,6 +839,23 @@
             id in (${idStr})
         </if>
     </update>
+    <update id="updateToAnalysis">
+        UPDATE house_info
+        SET house_info.status_flag = 8
+        WHERE
+            house_info.del_flag = 'N'
+        AND house_info.status_flag = 3
+        AND (
+            SELECT
+                COUNT(player_info.id)
+            FROM
+                player_info
+            WHERE
+                player_info.del_flag = 'N'
+            AND player_info.house_id = house_info.id
+            AND player_info.status_flag = 3
+        ) = 0
+    </update>
     <select id="query" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.HouseInfo">
         select
         <include refid="Base_Column_List"/>

+ 1 - 1
src/main/java/com/izouma/awesomeadmin/dao/PlayerInfoMapper.xml

@@ -1317,7 +1317,7 @@
                      column="{ id = game_id }"/>
         <association property="houseInfo"
                      javaType="com.izouma.awesomeadmin.model.HouseInfo"
-                     select="com.izouma.awesomeadmin.dao.HouseInfoMapper.getHouseInfoPlayerNum"
+                     select="com.izouma.awesomeadmin.dao.HouseInfoMapper.queryHouseInfo"
                      column="{ id = user_id }"/>
 
 

+ 4 - 0
src/main/java/com/izouma/awesomeadmin/service/HouseInfoService.java

@@ -42,5 +42,9 @@ public interface HouseInfoService {
     Result autoNoStartPlay(HouseInfo record);
 
     boolean settlementHouse(HouseInfo houseInfo);
+
+    Result updateToAnalysis(HouseInfo record);
+
+    Result autoSettlement(HouseInfo record);
 }
 

+ 59 - 5
src/main/java/com/izouma/awesomeadmin/service/impl/HouseInfoServiceImpl.java

@@ -200,7 +200,7 @@ public class HouseInfoServiceImpl implements HouseInfoService {
 
             if (houseInfo != null) {
 
-                if (houseInfo.getStatusFlag() == AppConstant.HouseStatus.END) {//只有结束比赛的才能结算
+                if (houseInfo.getStatusFlag() == AppConstant.HouseStatus.ANALYSIS) {//只有结束比赛的才能结算
 
                     HouseLevel houseLevel = houseInfo.getHouseLevelInfo();
 
@@ -219,7 +219,8 @@ public class HouseInfoServiceImpl implements HouseInfoService {
                             PlayerInfo playerInfo = playerInfoList.get(i);
                             playerInfo.setHouseRank(i + 1);
                             BigDecimal bonus = BigDecimal.ZERO;
-                            if (1 == playerInfo.getRanking()) {//只有吃鸡才能获得奖励
+
+                            if (playerInfo.getRanking() != null && 1 == playerInfo.getRanking()) {//只有吃鸡才能获得奖励
 
                                 if (i == 0) {//第一名
                                     bonus = BigDecimal.valueOf((firstRatio.doubleValue() / 100) * houseInfo.getBonus().doubleValue());
@@ -235,7 +236,7 @@ public class HouseInfoServiceImpl implements HouseInfoService {
                             }
                             playerInfo.setBonus(bonus);
 
-                            if (AppConstant.PlayerStatus.END == playerInfo.getStatusFlag()) {//如果是正常结束的则更新为结束完成
+                            if (AppConstant.PlayerStatus.ANALYSIS == playerInfo.getStatusFlag()) {//如果是正常结束且解析完成的则更新为结束完成
                                 playerInfo.setStatusFlag(AppConstant.PlayerStatus.SETTLEMENT);
 
                                 SystemNotice systemNotice = new SystemNotice();
@@ -469,7 +470,7 @@ public class HouseInfoServiceImpl implements HouseInfoService {
                 playerInfo.setHouseId(houseInfo.getId());
                 playerInfoService.overTimePlayer(playerInfo);
 
-                settlementHouse(houseInfo);//比赛结果结算。
+                //settlementHouse(houseInfo);//比赛结果结算。
             }
 
             return new Result(true, "结束成功");
@@ -482,6 +483,59 @@ public class HouseInfoServiceImpl implements HouseInfoService {
         return new Result(false, "结束失败");
     }
 
+
+    /**
+     * 自动结算
+     *
+     * @param record
+     * @return
+     */
+    @Override
+    public Result autoSettlement(HouseInfo record) {
+
+        logger.info("autoSettlement");
+        try {
+
+            record.setStatusFlag(AppConstant.HouseStatus.ANALYSIS);//获取解析完成带结算的房间。
+            List<HouseInfo> houseInfoList = houseInfoMapper.queryAllHouseInfo(record);
+
+            for (HouseInfo houseInfo : houseInfoList) {
+
+
+                settlementHouse(houseInfo);//比赛结果结算。
+            }
+
+            return new Result(true, "结束成功");
+
+
+        } catch (Exception e) {
+            logger.error("autoSettlement", e);
+        }
+
+        return new Result(false, "结束失败");
+    }
+
+    @Override
+    public Result updateToAnalysis(HouseInfo record) {
+
+        logger.info("updateToAnalysis");
+        try {
+
+            int updates = houseInfoMapper.updateToAnalysis(record);
+
+            if (updates > 0) {
+
+                return new Result(true, "更新成功");
+            }
+
+
+        } catch (Exception e) {
+            logger.error("updateToAnalysis", e);
+        }
+
+        return new Result(false, "更新失败");
+    }
+
     @Override
     public Result handEnd(HouseInfo record) {
 
@@ -501,7 +555,7 @@ public class HouseInfoServiceImpl implements HouseInfoService {
                     playerInfo.setHouseId(houseInfo.getId());
                     playerInfoService.overTimePlayer(playerInfo);
 
-                    settlementHouse(houseInfo);//比赛结果结算。
+                    //settlementHouse(houseInfo);//比赛结果结算。
 
                     return new Result(true, "结束成功");
                 }

+ 25 - 0
src/main/java/com/izouma/awesomeadmin/web/HouseInfoController.java

@@ -231,6 +231,31 @@ public class HouseInfoController {
         return houseInfoService.autoEnd(null);
     }
 
+
+    /**
+     * 自动结算
+     *
+     * @return
+     */
+    @RequestMapping(value = "/autoSettlement", method = RequestMethod.POST)
+    @ResponseBody
+    public Result autoSettlement() {
+
+        HouseInfo record = new HouseInfo();
+        return houseInfoService.autoSettlement(record);
+    }
+
+    /**
+     * 自动更新房间状态为解析完成
+     *
+     * @return
+     */
+    @RequestMapping(value = "/updateToAnalysis", method = RequestMethod.POST)
+    @ResponseBody
+    public Result updateToAnalysis() {
+        return houseInfoService.updateToAnalysis(null);
+    }
+
     /**
      * 手动开始比赛
      *

+ 3 - 1
src/main/resources/spring/appWebService.xml

@@ -31,8 +31,10 @@
 
 	<task:scheduled-tasks>
 		<task:scheduled ref="houseInfoTask" method="autoBegin" cron="0 0/5 * * * ? "/>
-		<task:scheduled ref="houseInfoTask" method="autoNoStartPlay" cron="0 0/1 * * * ? "/>
+		<task:scheduled ref="houseInfoTask" method="autoNoStartPlay" cron="0 0/2 * * * ? "/>
 		<task:scheduled ref="houseInfoTask" method="autoEnd" cron="0 0/10 * * * ? "/>
+		<task:scheduled ref="houseInfoTask" method="updateToAnalysis" cron="0 0/5 * * * ? "/>
+		<task:scheduled ref="houseInfoTask" method="autoSettlement" cron="0 0/10 * * * ? "/>
 	</task:scheduled-tasks>