|  |  |  | 
|---|
|  |  |  | import com.alibaba.fastjson.JSON; | 
|---|
|  |  |  | import com.alibaba.fastjson.JSONArray; | 
|---|
|  |  |  | import com.alibaba.fastjson.JSONObject; | 
|---|
|  |  |  | import com.alipay.api.AlipayApiException; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 
|---|
|  |  |  | 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.StudentHonorClient; | 
|---|
|  |  |  | 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.StudentHonor; | 
|---|
|  |  |  | 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.course.CoursePackageOrderStudentClient; | 
|---|
|  |  |  | import com.dsh.communityWorldCup.feignclient.course.model.CoursePackageOrderStudent; | 
|---|
|  |  |  | import com.dsh.communityWorldCup.feignclient.other.GameClient; | 
|---|
|  |  |  | import com.dsh.communityWorldCup.feignclient.other.StoreClient; | 
|---|
|  |  |  | import com.dsh.communityWorldCup.feignclient.other.model.Store; | 
|---|
|  |  |  | import com.dsh.communityWorldCup.feignclient.other.model.TGame; | 
|---|
|  |  |  | import com.dsh.communityWorldCup.mapper.WorldCupMapper; | 
|---|
|  |  |  | import com.dsh.communityWorldCup.model.*; | 
|---|
|  |  |  | import com.dsh.communityWorldCup.service.*; | 
|---|
|  |  |  | import com.dsh.communityWorldCup.util.*; | 
|---|
|  |  |  | import com.dsh.communityWorldCup.util.wx.WxV3PayConfig; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.stereotype.Service; | 
|---|
|  |  |  | import org.springframework.util.StringUtils; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import javax.annotation.Resource; | 
|---|
|  |  |  | import java.math.BigDecimal; | 
|---|
|  |  |  | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private CoursePackageOrderStudentClient coursePackageOrderStudentClient; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private GameClient gameClient; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private StudentHonorClient studentHonorClient; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private UserIntegralChangesClient userIntegralChangesClient; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public List<WorldCupListCoachVo> getWorldCupListCoach(WorldCupListCoach worldCupListCoach) { | 
|---|
|  |  |  | List<WorldCupListCoachVo> worldCupListCoach1 = this.baseMapper.getWorldCupListCoach(worldCupListCoach); | 
|---|
|  |  |  | for (WorldCupListCoachVo worldCupListCoachVo : worldCupListCoach1) { | 
|---|
|  |  |  | String lat = worldCupListCoachVo.getLat(); | 
|---|
|  |  |  | String lon = worldCupListCoachVo.getLon(); | 
|---|
|  |  |  | if (ToolUtil.isNotEmpty(worldCupListCoach.getLon()) && ToolUtil.isNotEmpty(worldCupListCoach.getLat())) { | 
|---|
|  |  |  | Map<String, Double> distance2 = GeodesyUtil.getDistance(lon + "," + lat, worldCupListCoach.getLon() + "," + worldCupListCoach.getLat()); | 
|---|
|  |  |  | Double wgs842 = distance2.get("WGS84"); | 
|---|
|  |  |  | worldCupListCoachVo.setDistance(wgs842); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | worldCupListCoachVo.setDistance(0D); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(worldCupListCoachVo.getType()!=null && worldCupListCoachVo.getType()==2){ | 
|---|
|  |  |  | // 获取正在进行的赛事 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | int size = worldCupCompetitorService.list(new LambdaQueryWrapper<WorldCupCompetitor>().eq(WorldCupCompetitor::getWorldCupId, worldCupListCoachVo.getId()) | 
|---|
|  |  |  | .and(w->w.isNull(WorldCupCompetitor::getEndTime).or(s->s.le(WorldCupCompetitor::getStartTime, new Date()).ge(WorldCupCompetitor::getEndTime, new Date()))).groupBy(WorldCupCompetitor::getCode)).size(); | 
|---|
|  |  |  | worldCupListCoachVo.setNowNum(size); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //对查询结果进行距离排序(直线距离) | 
|---|
|  |  |  | Collections.sort(worldCupListCoach1, new Comparator<WorldCupListCoachVo>() { | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public int compare(WorldCupListCoachVo o1, WorldCupListCoachVo o2) { | 
|---|
|  |  |  | Map<String, Double> distance1 = GeodesyUtil.getDistance(o1.getLon() + "," + o1.getLat(), worldCupListCoach.getLon() + "," + worldCupListCoach.getLat()); | 
|---|
|  |  |  | Double wgs841 = distance1.get("WGS84"); | 
|---|
|  |  |  | Map<String, Double> distance2 = GeodesyUtil.getDistance(o2.getLon() + "," + o2.getLat(), worldCupListCoach.getLon() + "," + worldCupListCoach.getLat()); | 
|---|
|  |  |  | Double wgs842 = distance2.get("WGS84"); | 
|---|
|  |  |  | return wgs841.compareTo(wgs842); | 
|---|
|  |  |  | return o1.getDistance().compareTo(o2.getDistance()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | return worldCupListCoach1; | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public ResultUtil startWorldCup(StartWorldCup startWorldCup) { | 
|---|
|  |  |  | //先检测当前是否已经结束 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | WorldCup worldCup = this.getById(startWorldCup.getWorldCupId()); | 
|---|
|  |  |  | if(worldCup.getStartTime().getTime() > System.currentTimeMillis()){ | 
|---|
|  |  |  | if (worldCup.getStartTime().getTime() > System.currentTimeMillis()) { | 
|---|
|  |  |  | return ResultUtil.error("赛事还未开始"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(worldCup.getEndTime().getTime() <= System.currentTimeMillis()){ | 
|---|
|  |  |  | if (worldCup.getEndTime().getTime() <= System.currentTimeMillis()) { | 
|---|
|  |  |  | return ResultUtil.error("赛事已结束"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(worldCup.getStatus() == 4){ | 
|---|
|  |  |  | if (worldCup.getStatus() == 4) { | 
|---|
|  |  |  | return ResultUtil.error("赛事已取消"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //1、通过扫码获取的sutuid查询t_game表中的红蓝方sutuid | 
|---|
|  |  |  | // 智慧需要判断code | 
|---|
|  |  |  | TGame tGame =new TGame(); | 
|---|
|  |  |  | if (worldCup.getType() == null || worldCup.getType() == 1) { | 
|---|
|  |  |  | String code = startWorldCup.getCode(); | 
|---|
|  |  |  | JSONObject object = JSON.parseObject(code); | 
|---|
|  |  |  | String sutu_id = object.getString("sutu_id"); | 
|---|
|  |  |  | tGame = gameClient.getTGameBySutuId(sutu_id); | 
|---|
|  |  |  | if (null == tGame) { | 
|---|
|  |  |  | return ResultUtil.error("无效的游戏二维码"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String people = startWorldCup.getPeople(); | 
|---|
|  |  |  | JSONArray jsonArray = JSON.parseArray(people); | 
|---|
|  |  |  | int red=0; | 
|---|
|  |  |  | int blue=0; | 
|---|
|  |  |  | for (Object o : jsonArray) { | 
|---|
|  |  |  | JSONObject jsonObject = JSONObject.parseObject(o.toString()); | 
|---|
|  |  |  | String type = jsonObject.get("type").toString(); | 
|---|
|  |  |  | if("red".equals( type)){ | 
|---|
|  |  |  | red++; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if("blue".equals( type)){ | 
|---|
|  |  |  | blue++; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(red==0){ | 
|---|
|  |  |  | return ResultUtil.error("红方最少要1人参赛"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(red>5){ | 
|---|
|  |  |  | return ResultUtil.error("红方最多5人参赛"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(blue==0){ | 
|---|
|  |  |  | return ResultUtil.error("蓝方最少要1人参赛"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(blue>5){ | 
|---|
|  |  |  | return ResultUtil.error("蓝方最多5人参赛"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | String timeStr = UUIDUtil.getTimeStr() + UUIDUtil.getNumberRandom(3); | 
|---|
|  |  |  | 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(); | 
|---|
|  |  |  | 
|---|
|  |  |  | worldCupCompetitor.setParticipantId(id); | 
|---|
|  |  |  | worldCupCompetitor.setParticipant("blue".equals(type) ? 1 : 2); | 
|---|
|  |  |  | worldCupCompetitor.setStartTime(new Date()); | 
|---|
|  |  |  | worldCupCompetitorService.save(worldCupCompetitor); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //调接口开启游戏 | 
|---|
|  |  |  | //添加参赛奖励 | 
|---|
|  |  |  | if (null != worldCup.getParticipationIntegral() && 0 < worldCup.getParticipationIntegral()) { | 
|---|
|  |  |  | worldCupCompetitor.setParticipationIntegral(worldCup.getParticipationIntegral()); | 
|---|
|  |  |  | //增加积分明细 | 
|---|
|  |  |  | SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo(); | 
|---|
|  |  |  | vo.setAppUserId(worldCupCompetitor.getAppUserId()); | 
|---|
|  |  |  | vo.setIntegral(worldCup.getParticipationIntegral()); | 
|---|
|  |  |  | vo.setType(6); | 
|---|
|  |  |  | userIntegralChangesClient.saveUserIntegralChanges(vo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return ResultUtil.success(); | 
|---|
|  |  |  | worldCupCompetitorService.save(worldCupCompetitor); | 
|---|
|  |  |  | ids.add(worldCupCompetitor.getId()); | 
|---|
|  |  |  | //已参赛 | 
|---|
|  |  |  | if (0 == worldCupPaymentParticipant.getAlreadyEntered()) { | 
|---|
|  |  |  | worldCupPaymentParticipant.setWorldCupId(null); | 
|---|
|  |  |  | worldCupPaymentParticipant.setAlreadyEntered(1); | 
|---|
|  |  |  | worldCupPaymentParticipantService.updateById(worldCupPaymentParticipant); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | worldCup.setMatchNumber(worldCup.getMatchNumber() + 1); | 
|---|
|  |  |  | this.updateById(worldCup); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //2、调起开启游戏的接口。 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | JSONObject jsonObject = new JSONObject(); | 
|---|
|  |  |  | jsonObject.put("gameType", 1); | 
|---|
|  |  |  | jsonObject.put("ids", ids); | 
|---|
|  |  |  | if (worldCup.getType() == null || worldCup.getType() == 1) { | 
|---|
|  |  |  | HashMap<String, String> map = new HashMap<>(); | 
|---|
|  |  |  | map.put("sign", "0DB011836143EEE2C2E072967C9F4E4B"); | 
|---|
|  |  |  | map.put("space_id", tGame.getSiteId() + ""); | 
|---|
|  |  |  | map.put("red_sutu_id", tGame.getRed()); | 
|---|
|  |  |  | map.put("blue_sutu_id", tGame.getBlue()); | 
|---|
|  |  |  | map.put("api_url", "https://online.daowepark.com:443/communityWorldCup/base/worldCup/endWorldCupCallback"); | 
|---|
|  |  |  | //            map.put("api_url", "http://221.182.45.100:1234/communityWorldCup/base/worldCup/endWorldCupCallback"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | map.put("custom", jsonObject.toJSONString()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String s = HttpRequestUtil.postRequest("https://port.daowepark.com/v7/user_api/general/quickStart", map); | 
|---|
|  |  |  | JSONObject jsonObject1 = JSONObject.parseObject(s); | 
|---|
|  |  |  | Integer code1 = jsonObject1.getInteger("code"); | 
|---|
|  |  |  | String message = jsonObject1.getString("message"); | 
|---|
|  |  |  | if (200 == code1) { | 
|---|
|  |  |  | return ResultUtil.success(jsonObject.toJSONString()); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | return ResultUtil.error(message); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | return ResultUtil.success(jsonObject.toJSONString()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @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(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public List<WorldCupListVo> getWorldCupList(WorldCupList worldCupList) { | 
|---|
|  |  |  | //没有筛选门店,默认使用当前门店 | 
|---|
|  |  |  | if(null == worldCupList.getStoreId()){ | 
|---|
|  |  |  | worldCupList.setStoreId(worldCupList.getStoreId()); | 
|---|
|  |  |  | if (null != worldCupList.getGender() && 0 == worldCupList.getGender()) { | 
|---|
|  |  |  | worldCupList.setGender(null); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<WorldCupListVo> worldCupList1 = this.baseMapper.getWorldCupList(worldCupList); | 
|---|
|  |  |  | for (WorldCupListVo worldCupListVo : worldCupList1) { | 
|---|
|  |  |  | 
|---|
|  |  |  | List<WorldCupPayment> list = worldCupPaymentService.list(new QueryWrapper<WorldCupPayment>().eq("worldCupId", id).eq("payStatus", 2).eq("state", 1)); | 
|---|
|  |  |  | List<Long> collect = list.stream().map(WorldCupPayment::getId).collect(Collectors.toList()); | 
|---|
|  |  |  | Integer heat = worldCupListVo.getHeat(); | 
|---|
|  |  |  | if(collect.size() > 0){ | 
|---|
|  |  |  | if (collect.size() > 0) { | 
|---|
|  |  |  | int count = worldCupPaymentParticipantService.count(new QueryWrapper<WorldCupPaymentParticipant>().in("worldCupPaymentId", collect)); | 
|---|
|  |  |  | heat += count; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | worldCupListVo.setHeat(heat); | 
|---|
|  |  |  | String lat = worldCupListVo.getLat(); | 
|---|
|  |  |  | String lon = worldCupListVo.getLon(); | 
|---|
|  |  |  | Map<String, Double> distance = GeodesyUtil.getDistance(lon + "," + lat, worldCupList.getLon() + "," + worldCupList.getLat()); | 
|---|
|  |  |  | worldCupListVo.setDistance(distance.get("WGS84")); | 
|---|
|  |  |  | if (ToolUtil.isNotEmpty(lat) && ToolUtil.isNotEmpty(lon)) { | 
|---|
|  |  |  | Map<String, Double> distance = GeodesyUtil.getDistance(lon + "," + lat, worldCupList.getLon() + "," + worldCupList.getLat()); | 
|---|
|  |  |  | worldCupListVo.setDistance(distance.get("WGS84")); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | worldCupListVo.setDistance(0D); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(null != worldCupList.getSort()){ | 
|---|
|  |  |  | if (null != worldCupList.getSort()) { | 
|---|
|  |  |  | Collections.sort(worldCupList1, new Comparator<WorldCupListVo>() { | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public int compare(WorldCupListVo o1, WorldCupListVo o2) { | 
|---|
|  |  |  | if(worldCupList.getSort() == 1){ | 
|---|
|  |  |  | if (worldCupList.getSort() == 1) { | 
|---|
|  |  |  | return o1.getHeat().compareTo(o2.getHeat()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(worldCupList.getSort() == 2){ | 
|---|
|  |  |  | if (worldCupList.getSort() == 2) { | 
|---|
|  |  |  | return o1.getHeat().compareTo(o2.getHeat()) * -1; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return 0; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | 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()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | List<WorldCupPayment> list = worldCupPaymentService.list(new QueryWrapper<WorldCupPayment>().eq("worldCupId", id).eq("payStatus", 2).eq("state", 1)); | 
|---|
|  |  |  | List<Long> collect = list.stream().map(WorldCupPayment::getId).collect(Collectors.toList()); | 
|---|
|  |  |  | Integer heat = worldCupInfo.getHeat(); | 
|---|
|  |  |  | if(collect.size() > 0){ | 
|---|
|  |  |  | if (collect.size() > 0) { | 
|---|
|  |  |  | 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) { | 
|---|
|  |  |  | 
|---|
|  |  |  | objects.add(map); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | worldCupInfo.setStoreInfos(objects); | 
|---|
|  |  |  | String address = worldCupInfo.getAddress(); | 
|---|
|  |  |  | String province = worldCupInfo.getProvince(); | 
|---|
|  |  |  | String city = worldCupInfo.getCity(); | 
|---|
|  |  |  | int index = address.indexOf("市"); | 
|---|
|  |  |  | if (index != -1) { | 
|---|
|  |  |  | address = address.substring(index + 1); | 
|---|
|  |  |  | worldCupInfo.setAddress(address); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | index = province.indexOf("省"); | 
|---|
|  |  |  | if (index != -1) { | 
|---|
|  |  |  | province = province.substring(0, index - 1); | 
|---|
|  |  |  | worldCupInfo.setProvince(province); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | index = city.indexOf("市"); | 
|---|
|  |  |  | if (index != -1) { | 
|---|
|  |  |  | city = city.substring(0, index - 1); | 
|---|
|  |  |  | worldCupInfo.setCity(city); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return worldCupInfo; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | @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()){ | 
|---|
|  |  |  | if (appUser.getPlayPaiCoins() < multiply.intValue()) { | 
|---|
|  |  |  | checkPaymentMethodVo.setPaiCoin(0); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | checkPaymentMethodVo.setPaiCoin(1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | Integer id = jsonObject.getInteger("id"); | 
|---|
|  |  |  | //是否是学员(0=否,1=是) | 
|---|
|  |  |  | Integer isStudent = jsonObject.getInteger("isStudent"); | 
|---|
|  |  |  | if(0 == isStudent){ | 
|---|
|  |  |  | if (0 == isStudent) { | 
|---|
|  |  |  | classHour = 0; | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<CoursePackageOrderStudent> coursePackageOrderStudent = coursePackageOrderStudentClient.getCoursePackageOrderStudent(id); | 
|---|
|  |  |  | int sum = coursePackageOrderStudent.stream().mapToInt(CoursePackageOrderStudent::getLaveClassHours).sum(); | 
|---|
|  |  |  | if(sum < worldCup.getClassHour()){ | 
|---|
|  |  |  | if (sum < worldCup.getClassHour()) { | 
|---|
|  |  |  | classHour = 0; | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | checkPaymentMethodVo.setClassHour(classHour); | 
|---|
|  |  |  | return checkPaymentMethodVo; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public ResultUtil paymentWorldCup(PaymentWorldCup paymentWorldCup) { | 
|---|
|  |  |  | WorldCup worldCup = this.getById(paymentWorldCup.getId()); | 
|---|
|  |  |  | if(null == worldCup){ | 
|---|
|  |  |  | if (null == worldCup) { | 
|---|
|  |  |  | return ResultUtil.error("报名数据异常"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(System.currentTimeMillis() > worldCup.getRegistrationClosingTime().getTime()){ | 
|---|
|  |  |  | if (null != worldCup.getRegistrationClosingTime() && System.currentTimeMillis() > worldCup.getRegistrationClosingTime().getTime()) { | 
|---|
|  |  |  | return ResultUtil.error("报名时间已结束,无法完成报名"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(System.currentTimeMillis() > worldCup.getEndTime().getTime()){ | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | 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("已超出最大报名人数"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | if (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); | 
|---|
|  |  |  | if(worldCup.getStartAge() > Integer.valueOf(sdf.format(tStudent.getBirthday()))){ | 
|---|
|  |  |  | if (isStudent == 1) { | 
|---|
|  |  |  | 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() + "】年龄不符合要求"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(worldCup.getEndAge() < Integer.valueOf(sdf.format(tStudent.getBirthday()))){ | 
|---|
|  |  |  | if (worldCup.getEndAge() < (Integer.valueOf(sdf.format(new Date())) - Integer.valueOf(sdf.format(tStudent.getBirthday())))) { | 
|---|
|  |  |  | return ResultUtil.error("【" + tStudent.getName() + "】年龄不符合要求"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | Participant participant = participantClient.getParticipant(id); | 
|---|
|  |  |  | if(worldCup.getStartAge() > Integer.valueOf(sdf.format(participant.getBirthday()))){ | 
|---|
|  |  |  | 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() + "】年龄不符合要求"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(worldCup.getEndAge() < Integer.valueOf(sdf.format(participant.getBirthday()))){ | 
|---|
|  |  |  | if (worldCup.getEndAge() < (Integer.valueOf(sdf.format(new Date())) - Integer.valueOf(sdf.format(participant.getBirthday())))) { | 
|---|
|  |  |  | return ResultUtil.error("【" + participant.getName() + "】年龄不符合要求"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return payment; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private String smid = "2088330203191220";//平台支付宝商户号 | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | worldCupPayment.setEntrant(paymentWorldCup.getIds()); | 
|---|
|  |  |  | int num = JSON.parseArray(paymentWorldCup.getIds()).size(); | 
|---|
|  |  |  | //不免费 | 
|---|
|  |  |  | if(worldCup.getPayType() != 0){ | 
|---|
|  |  |  | String payType1 = worldCup.getPayType().split(",")[0]; | 
|---|
|  |  |  | if (!"0".equals(payType1)) { | 
|---|
|  |  |  | Integer payType = paymentWorldCup.getPayType(); | 
|---|
|  |  |  | //微信 | 
|---|
|  |  |  | if(payType == 1){ | 
|---|
|  |  |  | if (payType == 1) { | 
|---|
|  |  |  | worldCupPayment.setAmount(new BigDecimal(num).multiply(worldCup.getCash())); | 
|---|
|  |  |  | worldCupPayment.setUnitPrice(worldCupPayment.getAmount().divide(new BigDecimal(num))); | 
|---|
|  |  |  | worldCupPaymentService.save(worldCupPayment); | 
|---|
|  |  |  | return payMoneyUtil.weixinpay("社区世界杯报名", "", worldCupPayment.getCode(), | 
|---|
|  |  |  | worldCup.getCash().toString(), "/base/worldCup/wxPayWorldCupCallback", "APP", ""); | 
|---|
|  |  |  | List<WorldCupStore> list = worldCupStoreService.lambdaQuery().eq(WorldCupStore::getWorldCupId, worldCup.getId()).list(); | 
|---|
|  |  |  | if (list.isEmpty()) { | 
|---|
|  |  |  | return payMoneyUtil.weixinpay("社区世界杯报名", "", worldCupPayment.getCode(), | 
|---|
|  |  |  | worldCupPayment.getAmount().toString(), "/base/worldCup/wxPayWorldCupCallback", "APP", ""); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | Integer storeId = list.get(0).getStoreId(); | 
|---|
|  |  |  | Store store = storeClient.queryStoreById(storeId); | 
|---|
|  |  |  | if (store.getOperatorId() == null || store.getOperatorId() == 0) { | 
|---|
|  |  |  | // 平台 | 
|---|
|  |  |  | return payMoneyUtil.weixinpay("社区世界杯报名", "", worldCupPayment.getCode(), | 
|---|
|  |  |  | worldCupPayment.getAmount().toString(), "/base/worldCup/wxPayWorldCupCallback", "APP", ""); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | String s2 = storeClient.getmerchantNumberByOperatorId(store.getOperatorId()); | 
|---|
|  |  |  | System.err.println("微信商户号" + s2); | 
|---|
|  |  |  | if (!StringUtils.hasLength(s2)) { | 
|---|
|  |  |  | return ResultUtil.error("运营商未配置微信商户号,获取支付失败!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return payMoneyUtil.weixinpayV3(s2, "社区世界杯报名", worldCupPayment.getCode() | 
|---|
|  |  |  | , "/base/worldCup/wxPayWorldCupCallback1", worldCupPayment.getAmount().toString()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //支付宝 | 
|---|
|  |  |  | if(payType == 2){ | 
|---|
|  |  |  | if (payType == 2) { | 
|---|
|  |  |  | String smidRes = smid;// 结算资金到商户号 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | worldCupPayment.setAmount(new BigDecimal(num).multiply(worldCup.getCash())); | 
|---|
|  |  |  | worldCupPayment.setUnitPrice(worldCupPayment.getAmount().divide(new BigDecimal(num))); | 
|---|
|  |  |  | worldCupPaymentService.save(worldCupPayment); | 
|---|
|  |  |  | return payMoneyUtil.alipay("2088330203191220", "社区世界杯报名", "世界杯报名", "", worldCupPayment.getCode(), | 
|---|
|  |  |  | worldCup.getCash().toString(), "/base/worldCup/aliPayWorldCupCallback"); | 
|---|
|  |  |  | List<WorldCupStore> list = worldCupStoreService.lambdaQuery().eq(WorldCupStore::getWorldCupId, worldCup.getId()).list(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (list.isEmpty()) { | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | Integer storeId = list.get(0).getStoreId(); | 
|---|
|  |  |  | Store store = storeClient.queryStoreById(storeId); | 
|---|
|  |  |  | if (store.getOperatorId() == null || store.getOperatorId() == 0) { | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | String s2 = storeClient.getmerchantNumberAliByOperatorId(store.getOperatorId()); | 
|---|
|  |  |  | System.err.println("支付宝商户号" + s2); | 
|---|
|  |  |  | if (!StringUtils.hasLength(s2)) { | 
|---|
|  |  |  | return ResultUtil.error("运营商未配置支付宝商户号,获取支付失败!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | smidRes = s2; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return payMoneyUtil.alipay(smidRes, "社区世界杯报名", "世界杯报名", "", worldCupPayment.getCode(), | 
|---|
|  |  |  | worldCupPayment.getAmount().toString(), "/base/worldCup/aliPayWorldCupCallback"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //玩湃币 | 
|---|
|  |  |  | if(payType == 3){ | 
|---|
|  |  |  | if (payType == 3) { | 
|---|
|  |  |  | AppUser appUser = appUserClient.getAppUser(paymentWorldCup.getUid()); | 
|---|
|  |  |  | BigDecimal multiply = new BigDecimal(num).multiply(new BigDecimal(worldCup.getPaiCoin())); | 
|---|
|  |  |  | if(appUser.getPlayPaiCoins() < multiply.intValue()){ | 
|---|
|  |  |  | if (appUser.getPlayPaiCoins() < multiply.intValue()) { | 
|---|
|  |  |  | return ResultUtil.error("报名失败,玩湃币不足,请充值!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | worldCupPayment.setAmount(multiply); | 
|---|
|  |  |  | worldCupPayment.setPayStatus(2); | 
|---|
|  |  |  | worldCupPayment.setPayTime(new Date()); | 
|---|
|  |  |  | worldCupPayment.setUnitPrice(worldCupPayment.getAmount().divide(new BigDecimal(num))); | 
|---|
|  |  |  | worldCupPaymentService.save(worldCupPayment); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | appUser.setPlayPaiCoins(appUser.getPlayPaiCoins() - multiply.intValue()); | 
|---|
|  |  |  | appUserClient.updateAppUser(appUser); | 
|---|
|  |  |  | // | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //添加报名明细 | 
|---|
|  |  |  | String ids = paymentWorldCup.getIds(); | 
|---|
|  |  |  | 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"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | worldCupPaymentParticipant.setAppUserId(paymentWorldCup.getUid()); | 
|---|
|  |  |  | worldCupPaymentParticipant.setParticipantType(isStudent == 0 ? 2 : 1); | 
|---|
|  |  |  | worldCupPaymentParticipant.setParticipantId(id); | 
|---|
|  |  |  | worldCupPaymentParticipant.setAlreadyEntered(0); | 
|---|
|  |  |  | worldCupPaymentParticipant.setCreateTime(new Date()); | 
|---|
|  |  |  | worldCupPaymentParticipantService.save(worldCupPaymentParticipant); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return ResultUtil.success(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //课时 | 
|---|
|  |  |  | if(payType == 4){ | 
|---|
|  |  |  | if (payType == 4) { | 
|---|
|  |  |  | BigDecimal multiply = new BigDecimal(num).multiply(new BigDecimal(worldCup.getClassHour())); | 
|---|
|  |  |  | String ids = paymentWorldCup.getIds(); | 
|---|
|  |  |  | JSONArray jsonArray = JSON.parseArray(ids); | 
|---|
|  |  |  | List<DeductionClassHour> list = new ArrayList<>(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<CoursePackageOrderStudent> coursePackageOrderStudent = coursePackageOrderStudentClient.getCoursePackageOrderUser(paymentWorldCup.getUid()); | 
|---|
|  |  |  | int sum = coursePackageOrderStudent.stream().mapToInt(CoursePackageOrderStudent::getLaveClassHours).sum(); | 
|---|
|  |  |  | if (sum < worldCup.getClassHour() * num) { | 
|---|
|  |  |  | return ResultUtil.error("报名失败,课时不足,请续课!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | for (int i = 0; i < jsonArray.size(); i++) { | 
|---|
|  |  |  | JSONObject jsonObject = jsonArray.getJSONObject(i); | 
|---|
|  |  |  | Integer id = jsonObject.getInteger("id"); | 
|---|
|  |  |  | //是否是学员(0=否,1=是) | 
|---|
|  |  |  | Integer isStudent = jsonObject.getInteger("isStudent"); | 
|---|
|  |  |  | if(0 == isStudent){ | 
|---|
|  |  |  | if (0 == isStudent) { | 
|---|
|  |  |  | return ResultUtil.error("非学员无法使用课时报名"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<CoursePackageOrderStudent> coursePackageOrderStudent = coursePackageOrderStudentClient.getCoursePackageOrderStudent(id); | 
|---|
|  |  |  | int sum = coursePackageOrderStudent.stream().mapToInt(CoursePackageOrderStudent::getLaveClassHours).sum(); | 
|---|
|  |  |  | if(sum < worldCup.getClassHour()){ | 
|---|
|  |  |  | return ResultUtil.error("报名失败,课时不足,请续课!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | worldCupPayment.setAmount(multiply); | 
|---|
|  |  |  | worldCupPayment.setPayStatus(2); | 
|---|
|  |  |  | worldCupPayment.setPayTime(new Date()); | 
|---|
|  |  |  | worldCupPayment.setUnitPrice(worldCupPayment.getAmount().divide(new BigDecimal(num))); | 
|---|
|  |  |  | worldCupPaymentService.save(worldCupPayment); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //添加报名明细 | 
|---|
|  |  |  | for (int i = 0; i < jsonArray.size(); i++) { | 
|---|
|  |  |  | JSONObject jsonObject = jsonArray.getJSONObject(i); | 
|---|
|  |  |  | Long id = jsonObject.getLong("id"); | 
|---|
|  |  |  | //是否是学员(0=否,1=是) | 
|---|
|  |  |  | Integer isStudent = jsonObject.getInteger("isStudent"); | 
|---|
|  |  |  | List<DeductionClassHour> list = new ArrayList<>(); | 
|---|
|  |  |  | //构建扣减课时数据 | 
|---|
|  |  |  | Integer classHour = worldCup.getClassHour(); | 
|---|
|  |  |  | for (CoursePackageOrderStudent packageOrderStudent : coursePackageOrderStudent) { | 
|---|
|  |  |  | Integer laveClassHours = packageOrderStudent.getLaveClassHours(); | 
|---|
|  |  |  | if (laveClassHours == 0) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | DeductionClassHour deductionClassHour = new DeductionClassHour(); | 
|---|
|  |  |  | if(classHour.compareTo(laveClassHours) > 0){ | 
|---|
|  |  |  | if (classHour.compareTo(laveClassHours) > 0) { | 
|---|
|  |  |  | //不够扣除,轮询直到扣除完 | 
|---|
|  |  |  | classHour = classHour - laveClassHours; | 
|---|
|  |  |  | deductionClassHour.setId(packageOrderStudent.getId()); | 
|---|
|  |  |  | deductionClassHour.setClassHour(laveClassHours); | 
|---|
|  |  |  | deductionClassHour.setStudentId(packageOrderStudent.getStudentId()); | 
|---|
|  |  |  | deductionClassHour.setCoursePackageId(packageOrderStudent.getCoursePackageId()); | 
|---|
|  |  |  | packageOrderStudent.setLaveClassHours(0); | 
|---|
|  |  |  | list.add(deductionClassHour); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | //够扣除直接跳出进行下个学员 | 
|---|
|  |  |  | deductionClassHour.setId(packageOrderStudent.getId()); | 
|---|
|  |  |  | deductionClassHour.setClassHour(classHour); | 
|---|
|  |  |  | deductionClassHour.setStudentId(packageOrderStudent.getStudentId()); | 
|---|
|  |  |  | deductionClassHour.setCoursePackageId(packageOrderStudent.getCoursePackageId()); | 
|---|
|  |  |  | packageOrderStudent.setLaveClassHours(laveClassHours - classHour); | 
|---|
|  |  |  | list.add(deductionClassHour); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //扣减课时操作 | 
|---|
|  |  |  | DeductionClassHourList deductionClassHourList = new DeductionClassHourList(); | 
|---|
|  |  |  | deductionClassHourList.setDeductionClassHourList(list); | 
|---|
|  |  |  | DeductionClassHourList deductionClassHourList1 = coursePackageOrderStudentClient.deductionClassHour(deductionClassHourList); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | WorldCupPaymentParticipant worldCupPaymentParticipant = new WorldCupPaymentParticipant(); | 
|---|
|  |  |  | worldCupPaymentParticipant.setWorldCupId(paymentWorldCup.getId()); | 
|---|
|  |  |  | worldCupPaymentParticipant.setWorldCupPaymentId(worldCupPayment.getId()); | 
|---|
|  |  |  | worldCupPaymentParticipant.setAppUserId(paymentWorldCup.getUid()); | 
|---|
|  |  |  | worldCupPaymentParticipant.setParticipantType(isStudent == 0 ? 2 : 1); | 
|---|
|  |  |  | worldCupPaymentParticipant.setParticipantId(id); | 
|---|
|  |  |  | worldCupPaymentParticipant.setAlreadyEntered(0); | 
|---|
|  |  |  | worldCupPaymentParticipant.setCreateTime(new Date()); | 
|---|
|  |  |  | worldCupPaymentParticipant.setContent(JSON.toJSONString(deductionClassHourList1)); | 
|---|
|  |  |  | worldCupPaymentParticipantService.save(worldCupPaymentParticipant); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //扣减课时操作 | 
|---|
|  |  |  | DeductionClassHourList deductionClassHourList = new DeductionClassHourList(); | 
|---|
|  |  |  | deductionClassHourList.setDeductionClassHourList(list); | 
|---|
|  |  |  | coursePackageOrderStudentClient.deductionClassHour(deductionClassHourList); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | worldCupPayment.setAmount(multiply); | 
|---|
|  |  |  | worldCupPayment.setPayStatus(2); | 
|---|
|  |  |  | worldCupPayment.setPayTime(new Date()); | 
|---|
|  |  |  | worldCupPaymentService.save(worldCupPayment); | 
|---|
|  |  |  | return ResultUtil.success(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | worldCupPayment.setPayType(0); | 
|---|
|  |  |  | worldCupPayment.setAmount(BigDecimal.ZERO); | 
|---|
|  |  |  | worldCupPayment.setPayStatus(2); | 
|---|
|  |  |  | worldCupPayment.setPayTime(new Date()); | 
|---|
|  |  |  | worldCupPayment.setUnitPrice(BigDecimal.ZERO); | 
|---|
|  |  |  | worldCupPaymentService.save(worldCupPayment); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //添加报名明细 | 
|---|
|  |  |  | 
|---|
|  |  |  | 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"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | worldCupPaymentParticipant.setAppUserId(paymentWorldCup.getUid()); | 
|---|
|  |  |  | worldCupPaymentParticipant.setParticipantType(isStudent == 0 ? 2 : 1); | 
|---|
|  |  |  | worldCupPaymentParticipant.setParticipantId(id); | 
|---|
|  |  |  | worldCupPaymentParticipant.setAlreadyEntered(0); | 
|---|
|  |  |  | worldCupPaymentParticipant.setCreateTime(new Date()); | 
|---|
|  |  |  | worldCupPaymentParticipantService.save(worldCupPaymentParticipant); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return ResultUtil.success(); | 
|---|
|  |  |  | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public ResultUtil paymentWorldCupCallback(String code, String outTradeNo) { | 
|---|
|  |  |  | public ResultUtil paymentWorldCupCallback(String code, String outTradeNo) throws AlipayApiException { | 
|---|
|  |  |  | WorldCupPayment worldCupPayment = worldCupPaymentService.getOne(new QueryWrapper<WorldCupPayment>().eq("code", code)); | 
|---|
|  |  |  | Integer worldCupId = worldCupPayment.getWorldCupId(); | 
|---|
|  |  |  | worldCupPayment.setPayStatus(2); | 
|---|
|  |  |  | worldCupPayment.setPayOrderNo(outTradeNo); | 
|---|
|  |  |  | worldCupPayment.setPayTime(new Date()); | 
|---|
|  |  |  | worldCupPayment.setWorldCupId(null); | 
|---|
|  |  |  | worldCupPaymentService.updateById(worldCupPayment); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //添加报名明细 | 
|---|
|  |  |  | 
|---|
|  |  |  | 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"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | WorldCupPaymentParticipant worldCupPaymentParticipant = new WorldCupPaymentParticipant(); | 
|---|
|  |  |  | worldCupPaymentParticipant.setWorldCupId(worldCupPayment.getWorldCupId()); | 
|---|
|  |  |  | worldCupPaymentParticipant.setWorldCupId(worldCupId); | 
|---|
|  |  |  | worldCupPaymentParticipant.setWorldCupPaymentId(worldCupPayment.getId()); | 
|---|
|  |  |  | worldCupPaymentParticipant.setAppUserId(worldCupPayment.getAppUserId()); | 
|---|
|  |  |  | worldCupPaymentParticipant.setParticipantType(isStudent == 0 ? 2 : 1); | 
|---|
|  |  |  | worldCupPaymentParticipant.setParticipantId(id); | 
|---|
|  |  |  | worldCupPaymentParticipant.setAlreadyEntered(0); | 
|---|
|  |  |  | worldCupPaymentParticipant.setCreateTime(new Date()); | 
|---|
|  |  |  | worldCupPaymentParticipantService.save(worldCupPaymentParticipant); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (worldCupPayment.getPayType() == 2) { | 
|---|
|  |  |  | List<WorldCupStore> list = worldCupStoreService.lambdaQuery().eq(WorldCupStore::getWorldCupId, worldCupPayment.getWorldCupId()).list(); | 
|---|
|  |  |  | String resSmid = smid; | 
|---|
|  |  |  | if (!list.isEmpty()) { | 
|---|
|  |  |  | Integer storeId = list.get(0).getStoreId(); | 
|---|
|  |  |  | Store store = storeClient.queryStoreById(storeId); | 
|---|
|  |  |  | if (store.getOperatorId() == null || store.getOperatorId() == 0) { | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | String s2 = storeClient.getmerchantNumberAliByOperatorId(store.getOperatorId()); | 
|---|
|  |  |  | System.err.println("支付宝商户号" + s2); | 
|---|
|  |  |  | if (!StringUtils.hasLength(s2)) { | 
|---|
|  |  |  | return ResultUtil.error("运营商未配置支付宝商户号,获取支付失败!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | resSmid = s2; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | String finalResSmid = resSmid; | 
|---|
|  |  |  | new Thread(new Runnable() { | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void run() { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | Thread.sleep(30000); | 
|---|
|  |  |  | payMoneyUtil.confirm(finalResSmid, code, outTradeNo, worldCupPayment.getAmount().toString()); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }).start(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return ResultUtil.success(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | List<WorldCupPayment> lists = worldCupPaymentService.list(new QueryWrapper<WorldCupPayment>().eq("worldCupId", id).eq("payStatus", 2).eq("state", 1)); | 
|---|
|  |  |  | List<Long> collect = lists.stream().map(WorldCupPayment::getId).collect(Collectors.toList()); | 
|---|
|  |  |  | Integer count = 0; | 
|---|
|  |  |  | if(collect.size() > 0){ | 
|---|
|  |  |  | if (collect.size() > 0) { | 
|---|
|  |  |  | count = worldCupPaymentParticipantService.count(new QueryWrapper<WorldCupPaymentParticipant>().in("worldCupPaymentId", collect)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | map1.put("maxPeople", maxPeople + " - " + count); | 
|---|
|  |  |  | 
|---|
|  |  |  | map.put("total", count); | 
|---|
|  |  |  | return map; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 取消赛事后退还费用 | 
|---|
|  |  |  | * @param id | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void cancelWorldCupRefund(Integer id) throws Exception { | 
|---|
|  |  |  | //免费除外 | 
|---|
|  |  |  | List<WorldCupPayment> list2 = worldCupPaymentService.list(new QueryWrapper<WorldCupPayment>().eq("worldCupId", id) | 
|---|
|  |  |  | .ne("payType", 0).eq("payStatus", 2).eq("state", 1)); | 
|---|
|  |  |  | List<WorldCupStore> list = worldCupStoreService.lambdaQuery().eq(WorldCupStore::getWorldCupId, id).list(); | 
|---|
|  |  |  | Integer storeId = list.get(0).getStoreId(); | 
|---|
|  |  |  | Store store = storeClient.queryStoreById(storeId); | 
|---|
|  |  |  | for (WorldCupPayment worldCupPayment : list2) { | 
|---|
|  |  |  | List<WorldCupPaymentParticipant> list1 = worldCupPaymentParticipantService.list(new QueryWrapper<WorldCupPaymentParticipant>() | 
|---|
|  |  |  | .eq("worldCupId", id).eq("worldCupPaymentId", worldCupPayment.getId()).eq("alreadyEntered", 0)); | 
|---|
|  |  |  | //总支付金额 | 
|---|
|  |  |  | BigDecimal multiply = worldCupPayment.getUnitPrice().multiply(new BigDecimal(list1.size())); | 
|---|
|  |  |  | //微信支付 | 
|---|
|  |  |  | if (worldCupPayment.getPayType() == 1) { | 
|---|
|  |  |  | if (store.getOperatorId() != null && store.getOperatorId() != 0) { | 
|---|
|  |  |  | String smidVx = storeClient.getmerchantNumberByOperatorId(store.getOperatorId()); | 
|---|
|  |  |  | if (!StringUtils.hasLength(smidVx)) { | 
|---|
|  |  |  | System.err.println("运营商未配置微信商户号,获取支付失败!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); | 
|---|
|  |  |  | String codeRefund = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);// 退款单号 | 
|---|
|  |  |  | // 运营商退款 | 
|---|
|  |  |  | payMoneyUtil.weixinRefundV3(smidVx, codeRefund, worldCupPayment.getPayOrderNo(), worldCupPayment.getAmount().toString(), "/base/worldCup/wxRefundWorldCupCallback1"); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | Map<String, String> map = payMoneyUtil.wxRefund(worldCupPayment.getPayOrderNo(), worldCupPayment.getCode(), | 
|---|
|  |  |  | worldCupPayment.getAmount().toString(), multiply.toString(), "/base/worldCup/wxRefundWorldCupCallback"); | 
|---|
|  |  |  | if (!"SUCCESS".equals(map.get("return_code"))) { | 
|---|
|  |  |  | System.err.println("-------------微信退款失败---------"); | 
|---|
|  |  |  | System.err.println(map.get("return_msg")); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | worldCupPayment.setRefundAmount(multiply); | 
|---|
|  |  |  | worldCupPaymentService.updateById(worldCupPayment); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //支付宝支付 | 
|---|
|  |  |  | if (worldCupPayment.getPayType() == 2) { | 
|---|
|  |  |  | Map<String, String> map = null; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | map = payMoneyUtil.aliRefund(worldCupPayment.getPayOrderNo(), multiply.toString()); | 
|---|
|  |  |  | } catch (AlipayApiException e) { | 
|---|
|  |  |  | throw new RuntimeException(e); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if ("10000".equals(map.get("code"))) { | 
|---|
|  |  |  | String trade_no = map.get("trade_no"); | 
|---|
|  |  |  | worldCupPayment.setWorldCupId(null); | 
|---|
|  |  |  | worldCupPayment.setRefundTime(new Date()); | 
|---|
|  |  |  | worldCupPayment.setRefundOrderNo(trade_no); | 
|---|
|  |  |  | worldCupPayment.setRefundAmount(multiply); | 
|---|
|  |  |  | worldCupPayment.setPayStatus(3); | 
|---|
|  |  |  | worldCupPaymentService.updateById(worldCupPayment); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //玩湃币支付 | 
|---|
|  |  |  | if (worldCupPayment.getPayType() == 3) { | 
|---|
|  |  |  | Integer appUserId = worldCupPayment.getAppUserId(); | 
|---|
|  |  |  | AppUser appUser = appUserClient.getAppUser(appUserId); | 
|---|
|  |  |  | appUser.setPlayPaiCoins(appUser.getPlayPaiCoins() + multiply.intValue()); | 
|---|
|  |  |  | appUserClient.updateAppUser(appUser); | 
|---|
|  |  |  | worldCupPayment.setWorldCupId(null); | 
|---|
|  |  |  | worldCupPayment.setRefundTime(new Date()); | 
|---|
|  |  |  | worldCupPayment.setRefundOrderNo(""); | 
|---|
|  |  |  | worldCupPayment.setRefundAmount(multiply); | 
|---|
|  |  |  | worldCupPayment.setPayStatus(3); | 
|---|
|  |  |  | worldCupPaymentService.updateById(worldCupPayment); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //课时支付 | 
|---|
|  |  |  | if (worldCupPayment.getPayType() == 4) { | 
|---|
|  |  |  | for (WorldCupPaymentParticipant worldCupPaymentParticipant1 : list1) { | 
|---|
|  |  |  | String content = worldCupPaymentParticipant1.getContent(); | 
|---|
|  |  |  | DeductionClassHourList deductionClassHourList = JSON.parseObject(content, DeductionClassHourList.class); | 
|---|
|  |  |  | coursePackageOrderStudentClient.backspaceClassHour(deductionClassHourList); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | worldCupPayment.setWorldCupId(null); | 
|---|
|  |  |  | worldCupPayment.setRefundTime(new Date()); | 
|---|
|  |  |  | worldCupPayment.setRefundOrderNo(""); | 
|---|
|  |  |  | worldCupPayment.setPayStatus(3); | 
|---|
|  |  |  | worldCupPayment.setRefundAmount(multiply); | 
|---|
|  |  |  | worldCupPaymentService.updateById(worldCupPayment); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | WorldCup worldCup = this.getById(id); | 
|---|
|  |  |  | worldCup.setStatus(4); | 
|---|
|  |  |  | this.updateById(worldCup); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 定时任务修改状态 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void taskUpdateStatus() { | 
|---|
|  |  |  | List<WorldCup> worldCups = this.list(new QueryWrapper<WorldCup>().eq("status", 1).last(" and startTime <= now()")); | 
|---|
|  |  |  | for (WorldCup worldCup : worldCups) { | 
|---|
|  |  |  | worldCup.setStatus(2); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (worldCups.size() > 0) { | 
|---|
|  |  |  | this.updateBatchById(worldCups); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | worldCups = this.list(new QueryWrapper<WorldCup>().eq("status", 2).last(" and endTime <= now()")); | 
|---|
|  |  |  | for (WorldCup worldCup : worldCups) { | 
|---|
|  |  |  | worldCup.setStatus(3); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (worldCups.size() > 0) { | 
|---|
|  |  |  | this.updateBatchById(worldCups); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取比赛统计列表数据 | 
|---|
|  |  |  | * @param worldCupGameStatistics | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public Map<String, Object> worldCupGameStatistics(WorldCupGameStatistics worldCupGameStatistics) { | 
|---|
|  |  |  | Map<String, Object> map = new HashMap<>(); | 
|---|
|  |  |  | List<Map<String, Object>> mapList = this.baseMapper.worldCupGameStatistics(worldCupGameStatistics); | 
|---|
|  |  |  | for (Map<String, Object> stringObjectMap : mapList) { | 
|---|
|  |  |  | Integer id = Integer.valueOf(stringObjectMap.get("id").toString()); | 
|---|
|  |  |  | int count = worldCupCompetitorService.getMatchTime(id); | 
|---|
|  |  |  | stringObjectMap.put("matchTime", count); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<WorldCupPayment> list = worldCupPaymentService.list(new QueryWrapper<WorldCupPayment>().eq("worldCupId", id) | 
|---|
|  |  |  | .eq("payStatus", 2).eq("state", 1)); | 
|---|
|  |  |  | List<Long> collect = list.stream().map(WorldCupPayment::getId).collect(Collectors.toList()); | 
|---|
|  |  |  | if (collect.size() == 0) { | 
|---|
|  |  |  | stringObjectMap.put("applicants", 0); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public ResultUtil endWorldCup(String custom, Integer red_score, Integer blue_score) { | 
|---|
|  |  |  | String[] split = custom.split(","); | 
|---|
|  |  |  | ArrayList<Long> ids = new ArrayList<>(); | 
|---|
|  |  |  | for (String s : split) { | 
|---|
|  |  |  | ids.add(Long.parseLong(s)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<WorldCupCompetitor> worldCupCompetitors = worldCupCompetitorService.listByIds(ids); | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | WorldCupCompetitor worldCupCompetitor1 = worldCupCompetitors.get(0); | 
|---|
|  |  |  | WorldCup worldCup = this.getById(worldCupCompetitor1.getWorldCupId()); | 
|---|
|  |  |  | if(worldCup.getType()==null || worldCup.getType() == 1){ | 
|---|
|  |  |  | return ResultUtil.error("非智慧赛事才可以结束比赛"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | worldCupCompetitor.setDrawIntegral(0); | 
|---|
|  |  |  | worldCupCompetitor.setLoseIntegral(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); | 
|---|
|  |  |  | }else if(null != worldCup.getDrawIntegral() && 0 < worldCup.getDrawIntegral() && blue_score.compareTo(red_score) == 0){ | 
|---|
|  |  |  | worldCupCompetitor.setDrawIntegral(worldCup.getDrawIntegral()); | 
|---|
|  |  |  | //增加积分明细 | 
|---|
|  |  |  | SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo(); | 
|---|
|  |  |  | vo.setAppUserId(worldCupCompetitor.getAppUserId()); | 
|---|
|  |  |  | vo.setIntegral(worldCup.getDrawIntegral()); | 
|---|
|  |  |  | vo.setType(9); | 
|---|
|  |  |  | userIntegralChangesClient.saveUserIntegralChanges(vo); | 
|---|
|  |  |  | }else if(null != worldCup.getLoseIntegral() && 0 < worldCup.getLoseIntegral() && blue_score.compareTo(red_score) < 0){ | 
|---|
|  |  |  | worldCupCompetitor.setLoseIntegral(worldCup.getLoseIntegral()); | 
|---|
|  |  |  | //增加积分明细 | 
|---|
|  |  |  | SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo(); | 
|---|
|  |  |  | vo.setAppUserId(worldCupCompetitor.getAppUserId()); | 
|---|
|  |  |  | vo.setIntegral(worldCup.getLoseIntegral()); | 
|---|
|  |  |  | vo.setType(10); | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | worldCupCompetitor.setDrawIntegral(0); | 
|---|
|  |  |  | worldCupCompetitor.setLoseIntegral(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); | 
|---|
|  |  |  | }else if(null != worldCup.getDrawIntegral() && 0 < worldCup.getDrawIntegral() && blue_score.compareTo(red_score) == 0){ | 
|---|
|  |  |  | worldCupCompetitor.setDrawIntegral(worldCup.getDrawIntegral()); | 
|---|
|  |  |  | //增加积分明细 | 
|---|
|  |  |  | SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo(); | 
|---|
|  |  |  | vo.setAppUserId(worldCupCompetitor.getAppUserId()); | 
|---|
|  |  |  | vo.setIntegral(worldCup.getDrawIntegral()); | 
|---|
|  |  |  | vo.setType(9); | 
|---|
|  |  |  | userIntegralChangesClient.saveUserIntegralChanges(vo); | 
|---|
|  |  |  | }else if(null != worldCup.getLoseIntegral() && 0 < worldCup.getLoseIntegral() && blue_score.compareTo(red_score) < 0){ | 
|---|
|  |  |  | worldCupCompetitor.setDrawIntegral(worldCup.getLoseIntegral()); | 
|---|
|  |  |  | //增加积分明细 | 
|---|
|  |  |  | SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo(); | 
|---|
|  |  |  | vo.setAppUserId(worldCupCompetitor.getAppUserId()); | 
|---|
|  |  |  | vo.setIntegral(worldCup.getLoseIntegral()); | 
|---|
|  |  |  | vo.setType(10); | 
|---|
|  |  |  | userIntegralChangesClient.saveUserIntegralChanges(vo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | worldCupCompetitorService.updateBatchById(worldCupCompetitors); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //添加勋章 | 
|---|
|  |  |  | for (WorldCupCompetitor worldCupCompetitor : worldCupCompetitors) { | 
|---|
|  |  |  | Integer appUserId = worldCupCompetitor.getAppUserId(); | 
|---|
|  |  |  | //常胜将军 | 
|---|
|  |  |  | if(1 == worldCupCompetitor.getMatchResult()){ | 
|---|
|  |  |  | int count = worldCupCompetitorService.count(new QueryWrapper<WorldCupCompetitor>().eq("appUserId", appUserId).eq("matchResult", 1)); | 
|---|
|  |  |  | StudentHonor studentHonor = new StudentHonor(); | 
|---|
|  |  |  | studentHonor.setAppUserId(appUserId); | 
|---|
|  |  |  | studentHonor.setHonorType(5); | 
|---|
|  |  |  | studentHonor.setNumber(count); | 
|---|
|  |  |  | studentHonorClient.saveStudentHonor(studentHonor); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //越战越勇 | 
|---|
|  |  |  | int count = worldCupCompetitorService.count(new QueryWrapper<WorldCupCompetitor>().eq("appUserId", appUserId)); | 
|---|
|  |  |  | StudentHonor studentHonor = new StudentHonor(); | 
|---|
|  |  |  | studentHonor.setAppUserId(appUserId); | 
|---|
|  |  |  | studentHonor.setHonorType(6); | 
|---|
|  |  |  | studentHonor.setNumber(count); | 
|---|
|  |  |  | studentHonorClient.saveStudentHonor(studentHonor); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return ResultUtil.success(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|