| | |
| | | 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.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.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; |
| | | 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.*; |
| | |
| | | @Resource |
| | | private CoursePackageOrderStudentClient coursePackageOrderStudentClient; |
| | | |
| | | @Resource |
| | | private GameClient gameClient; |
| | | |
| | | @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); |
| | | } |
| | | } |
| | | //对查询结果进行距离排序(直线距离) |
| | | 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()){ |
| | | return ResultUtil.error("赛事还未开始"); |
| | |
| | | if(worldCup.getStatus() == 4){ |
| | | return ResultUtil.error("赛事已取消"); |
| | | } |
| | | //1、通过扫码获取的sutuid查询t_game表中的红蓝方sutuid |
| | | String code = startWorldCup.getCode(); |
| | | JSONObject object = JSON.parseObject(code); |
| | | String sutu_id = object.getString("sutu_id"); |
| | | TGame tGame = gameClient.getTGameBySutuId(sutu_id); |
| | | if(null == tGame){ |
| | | return ResultUtil.error("无效的游戏二维码"); |
| | | } |
| | | |
| | | String people = startWorldCup.getPeople(); |
| | | JSONArray jsonArray = JSON.parseArray(people); |
| | | if(jsonArray.size() != 6){ |
| | | return ResultUtil.error("参赛人数只能是6人"); |
| | | } |
| | | 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); |
| | | |
| | | JSONObject jsonObject = new JSONObject(); |
| | | jsonObject.put("gameType", 1); |
| | | jsonObject.put("ids", ids); |
| | | //2、调起开启游戏的接口。 |
| | | 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("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(); |
| | | } else { |
| | | return ResultUtil.error(message); |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | */ |
| | | @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) { |
| | |
| | | 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); |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | 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()); |
| | | } |
| | | }); |
| | | } |
| | |
| | | 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(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()){ |
| | | 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()))){ |
| | | 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{ |
| | | 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() + "】年龄不符合要求"); |
| | | } |
| | | } |
| | |
| | | //微信 |
| | | 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", ""); |
| | | worldCupPayment.getAmount().toString(), "/base/worldCup/wxPayWorldCupCallback", "APP", ""); |
| | | } |
| | | //支付宝 |
| | | if(payType == 2){ |
| | | 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"); |
| | | worldCupPayment.getAmount().toString(), "/base/worldCup/aliPayWorldCupCallback"); |
| | | } |
| | | //玩湃币 |
| | | if(payType == 3){ |
| | |
| | | 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(); |
| | |
| | | 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){ |
| | | 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){ |
| | |
| | | deductionClassHour.setClassHour(laveClassHours); |
| | | deductionClassHour.setStudentId(packageOrderStudent.getStudentId()); |
| | | deductionClassHour.setCoursePackageId(packageOrderStudent.getCoursePackageId()); |
| | | packageOrderStudent.setLaveClassHours(0); |
| | | list.add(deductionClassHour); |
| | | }else{ |
| | | //够扣除直接跳出进行下个学员 |
| | |
| | | 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{ |
| | |
| | | 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(); |
| | |
| | | @Override |
| | | public ResultUtil paymentWorldCupCallback(String code, String outTradeNo) { |
| | | 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); |
| | | } |
| | | return ResultUtil.success(); |
| | |
| | | map.put("total", count); |
| | | return map; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 取消赛事后退还费用 |
| | | * @param id |
| | | */ |
| | | @Override |
| | | public void cancelWorldCupRefund(Integer id) { |
| | | //免费除外 |
| | | List<WorldCupPayment> list2 = worldCupPaymentService.list(new QueryWrapper<WorldCupPayment>().eq("worldCupId", id) |
| | | .ne("payType", 0).eq("payStatus", 2).eq("state", 1)); |
| | | 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){ |
| | | 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); |
| | | } |
| | | } |