|
|
@@ -6,6 +6,7 @@ import java.util.*;
|
|
|
import com.izouma.awesomeadmin.dto.Result;
|
|
|
import com.izouma.awesomeadmin.model.*;
|
|
|
import com.izouma.awesomeadmin.service.*;
|
|
|
+import com.izouma.awesomeadmin.util.DateTimeTool;
|
|
|
import com.izouma.awesomeadmin.util.MbappUtil;
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
import org.apache.log4j.Logger;
|
|
|
@@ -187,30 +188,76 @@ public class HouseInfoServiceImpl implements HouseInfoService {
|
|
|
|
|
|
if (houseInfo != null) {
|
|
|
|
|
|
- HouseLevel houseLevel = houseInfo.getHouseLevelInfo();
|
|
|
+ if (houseInfo.getStatusFlag() == AppConstant.HouseStatus.END) {//只有结束比赛的才能结束
|
|
|
|
|
|
- BigDecimal firstRatio = houseLevel.getFirstRatio();
|
|
|
- BigDecimal secondRatio = houseLevel.getSecondRatio();
|
|
|
- BigDecimal thirdRatio = houseLevel.getThirdRatio();
|
|
|
- BigDecimal feeRatio = houseLevel.getFeeRatio();
|
|
|
- BigDecimal poolRatio = houseLevel.getPoolRatio();
|
|
|
+ HouseLevel houseLevel = houseInfo.getHouseLevelInfo();
|
|
|
|
|
|
+ BigDecimal firstRatio = houseLevel.getFirstRatio();
|
|
|
+ BigDecimal secondRatio = houseLevel.getSecondRatio();
|
|
|
+ BigDecimal thirdRatio = houseLevel.getThirdRatio();
|
|
|
+ BigDecimal poolRatio = houseLevel.getPoolRatio();
|
|
|
|
|
|
- PlayerInfo param = new PlayerInfo();
|
|
|
- param.setHouseId(record.getId());
|
|
|
- List<PlayerInfo> playerInfoList = playerInfoService.getSettlementPlayer(param);
|
|
|
|
|
|
- if (CollectionUtils.isNotEmpty(playerInfoList)) {
|
|
|
- for (int i = 0; i < playerInfoList.size(); i++) {
|
|
|
+ PlayerInfo param = new PlayerInfo();
|
|
|
+ param.setHouseId(record.getId());
|
|
|
+ List<PlayerInfo> playerInfoList = playerInfoService.getSettlementPlayer(param);
|
|
|
|
|
|
+ if (CollectionUtils.isNotEmpty(playerInfoList)) {
|
|
|
+ for (int i = 0; i < playerInfoList.size(); i++) {
|
|
|
+ PlayerInfo playerInfo = playerInfoList.get(i);
|
|
|
+ playerInfo.setHouseRank(i + 1);
|
|
|
+ BigDecimal bonus = BigDecimal.ZERO;
|
|
|
+ if (1 == playerInfo.getRanking()) {//只有吃鸡才能获得奖励
|
|
|
+
|
|
|
+ if (i == 0) {//第一名
|
|
|
+ bonus = BigDecimal.valueOf((firstRatio.doubleValue() / 100) * houseInfo.getBonus().doubleValue());
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ if (i == 1) {//第二名
|
|
|
+ bonus = BigDecimal.valueOf((secondRatio.doubleValue() / 100) * houseInfo.getBonus().doubleValue());
|
|
|
+ }
|
|
|
+ if (i == 2) {//第三名
|
|
|
+ bonus = BigDecimal.valueOf((thirdRatio.doubleValue() / 100) * houseInfo.getBonus().doubleValue());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ playerInfo.setBonus(bonus);
|
|
|
+
|
|
|
+ if (AppConstant.PlayerStatus.END == playerInfo.getStatusFlag()) {//如果是正常结束的则更新为结束完成
|
|
|
+ playerInfo.setStatusFlag(AppConstant.PlayerStatus.SETTLEMENT);
|
|
|
+
|
|
|
+ SystemNotice systemNotice = new SystemNotice();
|
|
|
+ systemNotice.setGameId(playerInfo.getGameId());
|
|
|
+ systemNotice.setHouseId(playerInfo.getHouseId());
|
|
|
+ systemNotice.setUserId(playerInfo.getUserId());
|
|
|
+ systemNotice.setSeasonId(playerInfo.getSeasonId());
|
|
|
+ systemNotice.setPlayerId(playerInfo.getId());
|
|
|
+ systemNotice.setRemark("定时任务");
|
|
|
+ String content = "恭喜你,在" + DateTimeTool.dateTimeToTimeYYYYHHmmStr(houseInfo.getBeginTime())
|
|
|
+ + "开始的游戏竞赛 " + houseInfo.getHouseName() + "获得了第" + playerInfo.getHouseRank()
|
|
|
+ + "名,赶快领取你的奖励吧。";
|
|
|
+ systemNotice.setContent(content);
|
|
|
+ systemNotice.setTypeFlag(AppConstant.NoticeType.RESULT);
|
|
|
+
|
|
|
+ systemNoticeService.createSystemNotice(systemNotice);
|
|
|
+ }
|
|
|
+
|
|
|
+ playerInfoService.updatePlayerInfo(playerInfo);
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- int updates = houseInfoMapper.updateByPrimaryKeySelective(record);
|
|
|
+ if (poolRatio.doubleValue() > 0) {
|
|
|
+ BigDecimal pool = BigDecimal.valueOf((poolRatio.doubleValue() / 100) * houseInfo.getBonus().doubleValue());
|
|
|
+
|
|
|
+ //TODO 加入到赛季奖金池中
|
|
|
+ }
|
|
|
|
|
|
- if (updates > 0) {
|
|
|
return true;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -221,6 +268,12 @@ public class HouseInfoServiceImpl implements HouseInfoService {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 加入房间
|
|
|
+ *
|
|
|
+ * @param record
|
|
|
+ * @return
|
|
|
+ */
|
|
|
@Override
|
|
|
public Result joinHouseInfo(PlayerInfo record) {
|
|
|
|
|
|
@@ -383,7 +436,40 @@ public class HouseInfoServiceImpl implements HouseInfoService {
|
|
|
logger.error("autoEnd", e);
|
|
|
}
|
|
|
|
|
|
- return new Result(false, "开始失败");
|
|
|
+ return new Result(false, "结束失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Result handEnd(HouseInfo record) {
|
|
|
+
|
|
|
+ logger.info("handEnd");
|
|
|
+ try {
|
|
|
+
|
|
|
+ HouseInfo houseInfo = houseInfoMapper.queryHouseInfo(record);
|
|
|
+ if (houseInfo != null) {
|
|
|
+ if (AppConstant.HouseStatus.START == houseInfo.getStatusFlag()) {//房间为开始状态
|
|
|
+
|
|
|
+ houseInfo.setStatusFlag(AppConstant.HouseStatus.END);
|
|
|
+ houseInfo.setEndTime(new Date());
|
|
|
+ houseInfoMapper.updateByPrimaryKeySelective(houseInfo);
|
|
|
+
|
|
|
+ //更新比赛超时的
|
|
|
+ PlayerInfo playerInfo = new PlayerInfo();
|
|
|
+ playerInfo.setHouseId(houseInfo.getId());
|
|
|
+ playerInfoService.overTimePlayer(playerInfo);
|
|
|
+
|
|
|
+ settlementHouse(houseInfo);//比赛结果结算。
|
|
|
+
|
|
|
+ return new Result(true, "结束成功");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error("handEnd", e);
|
|
|
+ }
|
|
|
+
|
|
|
+ return new Result(false, "结束失败");
|
|
|
}
|
|
|
|
|
|
|