puzhibing
2024-03-11 2b6370e31f46eb49dfea453def3be734745e936c
cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupCompetitorServiceImpl.java
@@ -7,15 +7,19 @@
import com.dsh.communityWorldCup.entity.WorldCupCompetitor;
import com.dsh.communityWorldCup.feignclient.account.AppUserClient;
import com.dsh.communityWorldCup.feignclient.account.StudentClient;
import com.dsh.communityWorldCup.feignclient.account.UserIntegralChangesClient;
import com.dsh.communityWorldCup.feignclient.account.model.AppUser;
import com.dsh.communityWorldCup.feignclient.account.model.AppUserIdsByCityName;
import com.dsh.communityWorldCup.feignclient.account.model.SaveUserIntegralChangesVo;
import com.dsh.communityWorldCup.feignclient.account.model.TStudent;
import com.dsh.communityWorldCup.feignclient.competition.ParticipantClient;
import com.dsh.communityWorldCup.feignclient.competition.model.Participant;
import com.dsh.communityWorldCup.feignclient.other.StoreClient;
import com.dsh.communityWorldCup.mapper.WorldCupCompetitorMapper;
import com.dsh.communityWorldCup.mapper.WorldCupPaymentParticipantMapper;
import com.dsh.communityWorldCup.model.*;
import com.dsh.communityWorldCup.service.IWorldCupCompetitorService;
import com.dsh.communityWorldCup.service.IWorldCupPaymentParticipantService;
import com.dsh.communityWorldCup.service.IWorldCupService;
import com.dsh.communityWorldCup.util.ToolUtil;
import org.springframework.beans.factory.annotation.Autowired;
@@ -46,6 +50,9 @@
    @Autowired
    private IWorldCupService worldCupService;
    @Resource
    private UserIntegralChangesClient userIntegralChangesClient;
@@ -261,43 +268,54 @@
     * 比赛结束后通知处理逻辑
     * @param custom        开始比赛接口上传的自定义参数
     * @param red_score     红方分数
     * @param blue          蓝方分数
     * @param blue_score    蓝方分数
     */
    @Override
    public void endWorldCupCallback(String custom, Integer red_score, Integer blue) {
    public void endWorldCupCallback(String custom, Integer red_score, Integer blue_score) {
        List<Long> ids = JSON.parseArray(custom, Long.class);
        List<WorldCupCompetitor> worldCupCompetitors = this.listByIds(ids);
        WorldCupCompetitor worldCupCompetitor1 = worldCupCompetitors.get(0);
        WorldCup worldCup = worldCupService.getById(worldCupCompetitor1.getWorldCupId());
        for (WorldCupCompetitor worldCupCompetitor : worldCupCompetitors) {
            //蓝方
            if(worldCupCompetitor.getParticipant() == 1){
                worldCupCompetitor.setMatchResult(blue.compareTo(red_score));
                worldCupCompetitor.setOurScore(blue);
                worldCupCompetitor.setOpponentScore(red_score);
                worldCupCompetitor.setEndTime(new Date());
                worldCupCompetitor.setWinIntegral(0);
                if(null != worldCup.getWinIntegral() && 0 < worldCup.getWinIntegral() && blue.compareTo(red_score) >= 0){
                    worldCupCompetitor.setWinIntegral(worldCup.getWinIntegral());
                    AppUser appUser = appUserClient.getAppUser(worldCupCompetitor.getAppUserId());
                    appUser.setIntegral(appUser.getIntegral() + worldCup.getWinIntegral());
                    appUserClient.updateAppUser(appUser);
        try {
            WorldCupCompetitor worldCupCompetitor1 = worldCupCompetitors.get(0);
            WorldCup worldCup = worldCupService.getById(worldCupCompetitor1.getWorldCupId());
            for (WorldCupCompetitor worldCupCompetitor : worldCupCompetitors) {
                worldCupCompetitor.setWorldCupId(null);
                //蓝方
                if(worldCupCompetitor.getParticipant() == 1){
                    worldCupCompetitor.setMatchResult(blue_score.compareTo(red_score));
                    worldCupCompetitor.setOurScore(blue_score);
                    worldCupCompetitor.setOpponentScore(red_score);
                    worldCupCompetitor.setEndTime(new Date());
                    worldCupCompetitor.setWinIntegral(0);
                    if(null != worldCup.getWinIntegral() && 0 < worldCup.getWinIntegral() && blue_score.compareTo(red_score) >= 0){
                        worldCupCompetitor.setWinIntegral(worldCup.getWinIntegral());
                        //增加积分明细
                        SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo();
                        vo.setAppUserId(worldCupCompetitor.getAppUserId());
                        vo.setIntegral(worldCup.getWinIntegral());
                        vo.setType(7);
                        userIntegralChangesClient.saveUserIntegralChanges(vo);
                    }
                }
                //红方
                if(worldCupCompetitor.getParticipant() == 2){
                    worldCupCompetitor.setMatchResult(red_score.compareTo(blue_score));
                    worldCupCompetitor.setOurScore(red_score);
                    worldCupCompetitor.setOpponentScore(blue_score);
                    worldCupCompetitor.setEndTime(new Date());
                    worldCupCompetitor.setWinIntegral(0);
                    if(null != worldCup.getWinIntegral() && 0 < worldCup.getWinIntegral() && red_score.compareTo(blue_score) >= 0){
                        worldCupCompetitor.setWinIntegral(worldCup.getWinIntegral());
                        //增加积分明细
                        SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo();
                        vo.setAppUserId(worldCupCompetitor.getAppUserId());
                        vo.setIntegral(worldCup.getWinIntegral());
                        vo.setType(7);
                        userIntegralChangesClient.saveUserIntegralChanges(vo);
                    }
                }
            }
            //红方
            if(worldCupCompetitor.getParticipant() == 2){
                worldCupCompetitor.setMatchResult(red_score.compareTo(blue));
                worldCupCompetitor.setOurScore(red_score);
                worldCupCompetitor.setOpponentScore(blue);
                worldCupCompetitor.setEndTime(new Date());
                worldCupCompetitor.setWinIntegral(0);
                if(null != worldCup.getWinIntegral() && 0 < worldCup.getWinIntegral() && red_score.compareTo(blue) >= 0){
                    worldCupCompetitor.setWinIntegral(worldCup.getWinIntegral());
                    AppUser appUser = appUserClient.getAppUser(worldCupCompetitor.getAppUserId());
                    appUser.setIntegral(appUser.getIntegral() + worldCup.getWinIntegral());
                    appUserClient.updateAppUser(appUser);
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        this.updateBatchById(worldCupCompetitors);
@@ -388,7 +406,7 @@
                }
                map.put("name", tStudent.getName());
                map.put("phone", tStudent.getPhone());
                map.put("phone", ToolUtil.isEmpty(tStudent.getPhone()) ? appUser.getPhone() : tStudent.getPhone());
            }else{
                Participant participant = participantClient.getParticipant(participantId);
                if(ToolUtil.isNotEmpty(name) && participant.getName().indexOf(name) == -1){
@@ -402,7 +420,7 @@
                }
                map.put("name", participant.getName());
                map.put("phone", participant.getPhone());
                map.put("phone", ToolUtil.isNotEmpty(participant.getPhone()) ? participant.getPhone() : appUser.getPhone());
            }
            list.add(map);
        }
@@ -421,17 +439,17 @@
     */
    @Override
    public Map<String, Object> worldCupGameStatisticsListInfo(WorldCupGameStatisticsListInfo worldCupGameStatisticsListInfo) {
        Long id = worldCupGameStatisticsListInfo.getId();
        Long participantId = worldCupGameStatisticsListInfo.getParticipantId();
        Integer participantType = worldCupGameStatisticsListInfo.getParticipantType();
        String name = worldCupGameStatisticsListInfo.getName();
        WorldCupCompetitor worldCupCompetitor = this.getById(id);
        List<WorldCupCompetitor> list = this.list(new QueryWrapper<WorldCupCompetitor>().eq("code", worldCupCompetitor.getCode()));
        List<WorldCupCompetitor> list = this.list(new QueryWrapper<WorldCupCompetitor>()
                .eq("participantType", participantType).eq("participantId", participantId)
                .isNotNull("matchResult").orderByDesc("startTime"));
        List<Map<String, Object>> mapList = new ArrayList<>();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy.HH.dd HH:mm");
        for (WorldCupCompetitor cupCompetitor : list) {
            Map<String, Object> map = new HashMap<>();
            map.put("id", cupCompetitor.getId());
            Integer participantType = cupCompetitor.getParticipantType();
            Long participantId = cupCompetitor.getParticipantId();
            if(1 == participantType){
                TStudent tStudent = studentClient.queryById(participantId.intValue());
                if(ToolUtil.isNotEmpty(name) && tStudent.getName().indexOf(name) == -1){
@@ -450,7 +468,7 @@
            map.put("score", cupCompetitor.getOurScore().compareTo(cupCompetitor.getOpponentScore()) > 0 ?
                    cupCompetitor.getOurScore() + ":" + cupCompetitor.getOpponentScore() :
                    cupCompetitor.getOpponentScore() + ":" + cupCompetitor.getOurScore());
            map.put("matchResult", cupCompetitor.getMatchResult() == 1 ? "胜" : "负");
            map.put("matchResult", cupCompetitor.getMatchResult() == 1 ? "胜" : cupCompetitor.getMatchResult() == 0 ? "平" : "负");
            mapList.add(map);
        }
        Map<String, Object> map = new HashMap<>();
@@ -470,23 +488,42 @@
        Integer blue = changeScore.getBlue();
        Integer red = changeScore.getRed();
        WorldCupCompetitor worldCupCompetitor = this.getById(id);
        List<WorldCupCompetitor> blueList = this.list(new QueryWrapper<WorldCupCompetitor>().eq("code", worldCupCompetitor.getCode()).eq("participant", 1));
        List<WorldCupCompetitor> blueList = this.list(new QueryWrapper<WorldCupCompetitor>().eq("code", worldCupCompetitor.getCode())
                .eq("participant", 1));
        WorldCup worldCup = worldCupService.getById(blueList.get(0).getWorldCupId());
        for (WorldCupCompetitor cupCompetitor : blueList) {
            //如果之前输了,现在赢了,需要增加积分
            if(cupCompetitor.getMatchResult() == -1 && blue.compareTo(red) > 0){
                AppUser appUser = appUserClient.getAppUser(cupCompetitor.getAppUserId());
                appUser.setIntegral(appUser.getIntegral() + worldCup.getWinIntegral());
                appUserClient.updateAppUser(appUser);
            //如果之前输了,现在赢/平了,需要增加积分
            if(cupCompetitor.getMatchResult() == -1 && (blue.compareTo(red) > 0 || blue.compareTo(red) == 0)){
                //增加积分明细
                SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo();
                vo.setAppUserId(cupCompetitor.getAppUserId());
                vo.setIntegral(worldCup.getWinIntegral());
                vo.setType(7);
                userIntegralChangesClient.saveUserIntegralChanges(vo);
                cupCompetitor.setMatchResult(1);
                cupCompetitor.setWinIntegral(worldCup.getWinIntegral());
            }
            //如果之前赢了,现在输了,需要扣减积分
            if(cupCompetitor.getMatchResult() == 1 && blue.compareTo(red) < 0){
                AppUser appUser = appUserClient.getAppUser(cupCompetitor.getAppUserId());
                appUser.setIntegral(appUser.getIntegral() - worldCup.getWinIntegral());
                appUserClient.updateAppUser(appUser);
                //增加积分明细
                SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo();
                vo.setAppUserId(cupCompetitor.getAppUserId());
                vo.setIntegral(worldCup.getWinIntegral() * -1);
                vo.setType(8);
                userIntegralChangesClient.saveUserIntegralChanges(vo);
                cupCompetitor.setMatchResult(-1);
                cupCompetitor.setWinIntegral(0);
            }
            //如果之前平了,现在输了,需要扣减积分
            if(cupCompetitor.getMatchResult() == 0 && blue.compareTo(red) < 0){
                //增加积分明细
                SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo();
                vo.setAppUserId(cupCompetitor.getAppUserId());
                vo.setIntegral(worldCup.getWinIntegral() * -1);
                vo.setType(8);
                userIntegralChangesClient.saveUserIntegralChanges(vo);
                cupCompetitor.setMatchResult(-1);
                cupCompetitor.setWinIntegral(0);
@@ -498,20 +535,38 @@
        List<WorldCupCompetitor> redList = this.list(new QueryWrapper<WorldCupCompetitor>().eq("code", worldCupCompetitor.getCode()).eq("participant", 2));
        for (WorldCupCompetitor cupCompetitor : redList) {
            //如果之前输了,现在赢了,需要增加积分
            if(cupCompetitor.getMatchResult() == -1 && red.compareTo(blue) > 0){
                AppUser appUser = appUserClient.getAppUser(cupCompetitor.getAppUserId());
                appUser.setIntegral(appUser.getIntegral() + worldCup.getWinIntegral());
                appUserClient.updateAppUser(appUser);
            //如果之前输了,现在赢/平了,需要增加积分
            if(cupCompetitor.getMatchResult() == -1 && (red.compareTo(blue) > 0 || red.compareTo(blue) == 0)){
                //增加积分明细
                SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo();
                vo.setAppUserId(cupCompetitor.getAppUserId());
                vo.setIntegral(worldCup.getWinIntegral());
                vo.setType(7);
                userIntegralChangesClient.saveUserIntegralChanges(vo);
                cupCompetitor.setMatchResult(1);
                cupCompetitor.setWinIntegral(worldCup.getWinIntegral());
            }
            //如果之前赢了,现在输了,需要扣减积分
            if(cupCompetitor.getMatchResult() == 1 && red.compareTo(blue) < 0){
                AppUser appUser = appUserClient.getAppUser(cupCompetitor.getAppUserId());
                appUser.setIntegral(appUser.getIntegral() - worldCup.getWinIntegral());
                appUserClient.updateAppUser(appUser);
                //增加积分明细
                SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo();
                vo.setAppUserId(cupCompetitor.getAppUserId());
                vo.setIntegral(worldCup.getWinIntegral() * -1);
                vo.setType(8);
                userIntegralChangesClient.saveUserIntegralChanges(vo);
                cupCompetitor.setMatchResult(-1);
                cupCompetitor.setWinIntegral(0);
            }
            //如果之前平了,现在输了,需要扣减积分
            if(cupCompetitor.getMatchResult() == 0 && red.compareTo(blue) < 0){
                //增加积分明细
                SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo();
                vo.setAppUserId(cupCompetitor.getAppUserId());
                vo.setIntegral(worldCup.getWinIntegral() * -1);
                vo.setType(8);
                userIntegralChangesClient.saveUserIntegralChanges(vo);
                cupCompetitor.setMatchResult(-1);
                cupCompetitor.setWinIntegral(0);
@@ -555,7 +610,7 @@
            map.put("score", ourScore.compareTo(opponentScore) > 0 ?
                    ourScore + ":" + opponentScore :
                    opponentScore + ":" + ourScore);
            map.put("matchResult", matchResult == 1 ? "胜" : "负");
            map.put("matchResult", matchResult == 1 ? "胜" : matchResult == 0 ? "平" :"负");
            mapList.add(map);
        }
        Map<String, Object> map = new HashMap<>();