puzhibing
2024-03-12 b28d69f6cba1a7aed03fd9c07a14693281f9a9a0
cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupServiceImpl.java
@@ -9,7 +9,9 @@
import com.dsh.communityWorldCup.entity.*;
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.SaveUserIntegralChangesVo;
import com.dsh.communityWorldCup.feignclient.account.model.TStudent;
import com.dsh.communityWorldCup.feignclient.competition.ParticipantClient;
import com.dsh.communityWorldCup.feignclient.competition.model.Participant;
@@ -73,6 +75,9 @@
    @Resource
    private GameClient gameClient;
    @Resource
    private UserIntegralChangesClient userIntegralChangesClient;
@@ -131,7 +136,7 @@
        List<Long> ids = new ArrayList<>();
        for (int i = 0; i < jsonArray.size(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            Integer id = jsonObject.getInteger("id");
            Long id = jsonObject.getLong("id");
            Integer participantType = jsonObject.getInteger("participantType");
            String type = jsonObject.getString("type");
            WorldCupCompetitor worldCupCompetitor = new WorldCupCompetitor();
@@ -146,27 +151,33 @@
            //添加参赛奖励
            if(null != worldCup.getParticipationIntegral() && 0 < worldCup.getParticipationIntegral()){
                worldCupCompetitor.setParticipationIntegral(worldCup.getParticipationIntegral());
                AppUser appUser = appUserClient.getAppUser(worldCupCompetitor.getAppUserId());
                appUser.setIntegral(appUser.getIntegral() + worldCup.getParticipationIntegral());
                appUserClient.updateAppUser(appUser);
                //增加积分明细
                SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo();
                vo.setAppUserId(worldCupCompetitor.getAppUserId());
                vo.setIntegral(worldCup.getParticipationIntegral());
                vo.setType(6);
                userIntegralChangesClient.saveUserIntegralChanges(vo);
            }
            worldCupCompetitorService.save(worldCupCompetitor);
            ids.add(worldCupCompetitor.getId());
            //已参赛
            worldCupPaymentParticipant.setAlreadyEntered(1);
            worldCupPaymentParticipantService.updateById(worldCupPaymentParticipant);
//            worldCupPaymentParticipant.setAlreadyEntered(1);
//            worldCupPaymentParticipantService.updateById(worldCupPaymentParticipant);
        }
        worldCup.setMatchNumber(worldCup.getMatchNumber() + 1);
        this.updateById(worldCup);
        //2、调起开启游戏的接口。
        HashMap<String, String> map = new HashMap<>();
        map.put("sign", "0DB011836143EEE2C2E072967C9F4E4B");
        map.put("space_id", tGame.getSiteId() + "");
        map.put("space_id", tGame.getStoreId() + "");
        map.put("red_sutu_id", tGame.getRed());
        map.put("blue_sutu_id", tGame.getBlue());
        map.put("api_url", "http://221.182.45.100:56666/communityWorldCup/base/worldCup/endWorldCupCallback");
        map.put("custom", JSON.toJSONString(ids));
        String s = HttpRequestUtil.postRequest("https://try.daowepark.com/v7/user_api/general/batterGame", map);
        String s = HttpRequestUtil.postRequest("https://try.daowepark.com/v7/user_api/general/quickStart", map);
        JSONObject jsonObject = JSONObject.parseObject(s);
        Integer code1 = jsonObject.getInteger("code");
        String message = jsonObject.getString("message");
@@ -185,9 +196,17 @@
     */
    @Override
    public Integer getCompletedWorldCupTips(Integer uid) {
        int count = worldCupCompetitorService.count(new QueryWrapper<WorldCupCompetitor>()
                .eq("appUserId", uid).eq("tips", 0).isNotNull("endTime"));
        return count;
        List<WorldCupCompetitor> list = worldCupCompetitorService.list(new QueryWrapper<WorldCupCompetitor>()
                .eq("appUserId", uid).eq("tips", 0).isNotNull("endTime")
                .orderByDesc("endTime").last(" limit 0, 1"));
        list.forEach(v->{
            v.setWorldCupId(null);
            v.setTips(1);
        });
        if(list.size() > 0){
            worldCupCompetitorService.updateBatchById(list);
        }
        return list.size();
    }
@@ -198,10 +217,6 @@
     */
    @Override
    public List<WorldCupListVo> getWorldCupList(WorldCupList worldCupList) {
        //没有筛选门店,默认使用当前门店
        if(null == worldCupList.getStoreId()){
            worldCupList.setStoreId(worldCupList.getStoreId());
        }
        List<WorldCupListVo> worldCupList1 = this.baseMapper.getWorldCupList(worldCupList);
        for (WorldCupListVo worldCupListVo : worldCupList1) {
            Integer id = Integer.valueOf(worldCupListVo.getId());
@@ -237,7 +252,7 @@
            Collections.sort(worldCupList1, new Comparator<WorldCupListVo>() {
                @Override
                public int compare(WorldCupListVo o1, WorldCupListVo o2) {
                    return o1.getDistance().compareTo(o2.getDistance()) * -1;
                    return o1.getDistance().compareTo(o2.getDistance());
                }
            });
        }
@@ -269,6 +284,14 @@
            int count = worldCupPaymentParticipantService.count(new QueryWrapper<WorldCupPaymentParticipant>().in("worldCupPaymentId", collect));
            heat += count;
        }
        String infoImg = worldCupInfo.getInfoImg();
        JSONArray jsonArray1 = JSON.parseArray(infoImg);
        String imgs = "";
        for (int i = 0; i < jsonArray1.size(); i++) {
            String url = jsonArray1.getJSONObject(i).getString("url");
            imgs += url + ",";
        }
        worldCupInfo.setInfoImg(imgs.substring(0,imgs.length() - 1));
        worldCupInfo.setHeat(heat);
        ArrayList<Map<String, Object>> objects = new ArrayList<>();
        for (WorldCupStore worldCupStore : worldCupStores) {
@@ -310,8 +333,14 @@
    @Override
    public CheckPaymentMethodVo checkPaymentMethod(CheckPaymentMethod checkPaymentMethod) {
        WorldCup worldCup = this.getById(checkPaymentMethod.getId());
        JSONArray jsonArray = JSON.parseArray(checkPaymentMethod.getIds());
        String[] split = worldCup.getPayType().split(",");
        CheckPaymentMethodVo checkPaymentMethodVo = new CheckPaymentMethodVo();
        if(split.length == 1 && "0".equals(split[0])){
            checkPaymentMethodVo.setPaiCoin(0);
            checkPaymentMethodVo.setClassHour(0);
            return checkPaymentMethodVo;
        }
        JSONArray jsonArray = JSON.parseArray(checkPaymentMethod.getIds());
        AppUser appUser = appUserClient.getAppUser(checkPaymentMethod.getUid());
        BigDecimal multiply = new BigDecimal(jsonArray.size()).multiply(new BigDecimal(worldCup.getPaiCoin()));
        if(appUser.getPlayPaiCoins() < multiply.intValue()){
@@ -362,16 +391,45 @@
        if(System.currentTimeMillis() > worldCup.getEndTime().getTime()){
            return ResultUtil.error("世界杯赛事已结束,无法完成报名");
        }
        String ids = paymentWorldCup.getIds();
        JSONArray jsonArray = JSON.parseArray(ids);
        String cupIds = paymentWorldCup.getIds();
        JSONArray jsonArray = JSON.parseArray(cupIds);
        if(jsonArray.size() != 6){
            return ResultUtil.error("参赛人数只能是6人");
        }
        List<WorldCupPayment> payments = worldCupPaymentService.list(new QueryWrapper<WorldCupPayment>().eq("worldCupId", worldCup.getId())
                .eq("payStatus", 2).eq("state", 1));
        List<Long> ids = payments.stream().map(WorldCupPayment::getId).collect(Collectors.toList());
        if(ids.size() > 0){
            int count = worldCupPaymentParticipantService.count(new QueryWrapper<WorldCupPaymentParticipant>().eq("worldCupId", worldCup.getId())
                    .eq("worldCupPaymentId", ids));
            if((count + jsonArray.size()) >= worldCup.getMaxPeople()){
                return ResultUtil.error("已超出最大报名人数");
            }
        }
        List<WorldCupPayment> list = worldCupPaymentService.list(new QueryWrapper<WorldCupPayment>().eq("worldCupId", worldCup.getId()).eq("appUserId", paymentWorldCup.getUid())
                .eq("payStatus", 2).eq("state", 1));
        List<Long> collect = list.stream().map(WorldCupPayment::getId).collect(Collectors.toList());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
        for (int i = 0; i < jsonArray.size(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            Integer id = jsonObject.getInteger("id");
            Long id = jsonObject.getLong("id");
            //是否是学员(0=否,1=是)
            Integer isStudent = jsonObject.getInteger("isStudent");
            if(isStudent == 1){
                TStudent tStudent = studentClient.queryById(id);
                TStudent tStudent = studentClient.queryById(id.intValue());
                if(worldCup.getGender() != 0 && !tStudent.getSex().equals(worldCup.getGender())){
                    return ResultUtil.error("此比赛只能是" + (worldCup.getGender() == 1 ? "男" : "女") + "性参加");
                }
                if(collect.size() > 0){
                    WorldCupPaymentParticipant one = worldCupPaymentParticipantService.getOne(new QueryWrapper<WorldCupPaymentParticipant>().eq("worldCupId", worldCup.getId())
                            .eq("participantId", id).eq("participantType", isStudent == 0 ? 2 : 1).in("worldCupPaymentId", collect));
                    if(null != one){
                        return ResultUtil.error("【" + tStudent.getName() + "】已报过名了");
                    }
                }
                if(worldCup.getStartAge() > (Integer.valueOf(sdf.format(new Date())) - Integer.valueOf(sdf.format(tStudent.getBirthday())))){
                    return ResultUtil.error("【" + tStudent.getName() + "】年龄不符合要求");
                }
@@ -380,6 +438,17 @@
                }
            }else{
                Participant participant = participantClient.getParticipant(id);
                if(worldCup.getGender() != 0 && !participant.getGender().equals(worldCup.getGender())){
                    return ResultUtil.error("此比赛只能是" + (worldCup.getGender() == 1 ? "男" : "女") + "性参加");
                }
                if(collect.size() > 0){
                    WorldCupPaymentParticipant one = worldCupPaymentParticipantService.getOne(new QueryWrapper<WorldCupPaymentParticipant>().eq("worldCupId", worldCup.getId())
                            .eq("participantId", id).eq("participantType", isStudent == 0 ? 2 : 1).in("worldCupPaymentId", collect));
                    if(null != one){
                        return ResultUtil.error("【" + participant.getName() + "】已报过名了");
                    }
                }
                if(worldCup.getStartAge() > (Integer.valueOf(sdf.format(new Date())) - Integer.valueOf(sdf.format(participant.getBirthday())))){
                    return ResultUtil.error("【" + participant.getName() + "】年龄不符合要求");
                }
@@ -459,7 +528,7 @@
                JSONArray jsonArray = JSON.parseArray(ids);
                for (int i = 0; i < jsonArray.size(); i++) {
                    JSONObject jsonObject = jsonArray.getJSONObject(i);
                    Integer id = jsonObject.getInteger("id");
                    Long id = jsonObject.getLong("id");
                    //是否是学员(0=否,1=是)
                    Integer isStudent = jsonObject.getInteger("isStudent");
@@ -483,13 +552,13 @@
                List<DeductionClassHour> list = new ArrayList<>();
                for (int i = 0; i < jsonArray.size(); i++) {
                    JSONObject jsonObject = jsonArray.getJSONObject(i);
                    Integer id = jsonObject.getInteger("id");
                    Long id = jsonObject.getLong("id");
                    //是否是学员(0=否,1=是)
                    Integer isStudent = jsonObject.getInteger("isStudent");
                    if(0 == isStudent){
                        return ResultUtil.error("非学员无法使用课时报名");
                    }
                    List<CoursePackageOrderStudent> coursePackageOrderStudent = coursePackageOrderStudentClient.getCoursePackageOrderStudent(id);
                    List<CoursePackageOrderStudent> coursePackageOrderStudent = coursePackageOrderStudentClient.getCoursePackageOrderStudent(id.intValue());
                    int sum = coursePackageOrderStudent.stream().mapToInt(CoursePackageOrderStudent::getLaveClassHours).sum();
                    if(sum < worldCup.getClassHour()){
                        return ResultUtil.error("报名失败,课时不足,请续课!");
@@ -546,7 +615,7 @@
                //添加报名明细
                for (int i = 0; i < jsonArray.size(); i++) {
                    JSONObject jsonObject = jsonArray.getJSONObject(i);
                    Integer id = jsonObject.getInteger("id");
                    Long id = jsonObject.getLong("id");
                    //是否是学员(0=否,1=是)
                    Integer isStudent = jsonObject.getInteger("isStudent");
@@ -575,7 +644,7 @@
            JSONArray jsonArray = JSON.parseArray(ids);
            for (int i = 0; i < jsonArray.size(); i++) {
                JSONObject jsonObject = jsonArray.getJSONObject(i);
                Integer id = jsonObject.getInteger("id");
                Long id = jsonObject.getLong("id");
                //是否是学员(0=否,1=是)
                Integer isStudent = jsonObject.getInteger("isStudent");
@@ -613,7 +682,7 @@
        JSONArray jsonArray = JSON.parseArray(ids);
        for (int i = 0; i < jsonArray.size(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            Integer id = jsonObject.getInteger("id");
            Long id = jsonObject.getLong("id");
            //是否是学员(0=否,1=是)
            Integer isStudent = jsonObject.getInteger("isStudent");
@@ -672,6 +741,13 @@
                    .eq("worldCupPaymentId", worldCupPaymentId).eq("alreadyEntered", 0));
            WorldCupPayment worldCupPayment = worldCupPaymentService.getById(worldCupPaymentId);
            BigDecimal multiply = worldCupPayment.getUnitPrice().multiply(new BigDecimal(list1.size()));
            //免费
            if(worldCupPayment.getPayType() == 0){
                worldCupPayment.setRefundOrderNo("");
                worldCupPayment.setRefundTime(new Date());
                worldCupPayment.setPayStatus(3);
                worldCupPaymentService.updateById(worldCupPayment);
            }
            //微信支付
            if(worldCupPayment.getPayType() == 1){
                Map<String, String> map = payMoneyUtil.wxRefund(worldCupPayment.getPayOrderNo(), worldCupPayment.getCode(),
@@ -766,14 +842,22 @@
            if(collect.size() == 0){
                stringObjectMap.put("applicants", 0);
            }else{
                int count1 = worldCupPaymentParticipantService.count(new QueryWrapper<WorldCupPaymentParticipant>()
                        .eq("worldCupId", id).in("worldCupPaymentId", collect)
                        .groupBy("worldCupPaymentId, participantType"));
                int count1 = worldCupPaymentParticipantService.getCount(id, collect);
                stringObjectMap.put("applicants", count1);
            }
        }
        map.put("rows", mapList);
        int count = this.baseMapper.worldCupGameStatisticsCount(worldCupGameStatistics);
        map.put("total", count);
        return map;
    }
    /**
     * 修改所有参数
     * @param worldCup
     */
    @Override
    public void updateWorldCupAll(WorldCup worldCup) {
        this.baseMapper.updateWorldCupAll(worldCup);
    }
}