From ee9cb0da4a43bcf523ebb157678f64a2895fba1a Mon Sep 17 00:00:00 2001 From: nickchange <126672920+nickchange@users.noreply.github.com> Date: 星期二, 10 十月 2023 15:30:38 +0800 Subject: [PATCH] 10.10 --- cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java | 89 +++++++++++++++++++++++++++++++------------- 1 files changed, 62 insertions(+), 27 deletions(-) diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java index b0f2838..c5340f4 100644 --- a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java +++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java @@ -16,10 +16,7 @@ import com.dsh.competition.feignclient.other.StoreClient; import com.dsh.competition.feignclient.other.model.Store; import com.dsh.competition.mapper.CompetitionMapper; -import com.dsh.competition.model.CompetitionInfo; -import com.dsh.competition.model.CompetitionListVo; -import com.dsh.competition.model.ParticipantVo; -import com.dsh.competition.model.PaymentCompetitionVo; +import com.dsh.competition.model.*; import com.dsh.competition.service.CompetitionService; import com.dsh.competition.service.IParticipantService; import com.dsh.competition.service.IPaymentCompetitionService; @@ -32,10 +29,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -83,8 +77,9 @@ * @return */ @Override - public List<CompetitionListVo> queryCompetitionList(String cityCode, String content, Integer registerCondition, Integer heat) throws Exception { - return this.baseMapper.queryCompetitionList(cityCode, content, registerCondition, heat); + public List<CompetitionListVo> queryCompetitionList(String cityCode, String content, Integer registerCondition, String heat) throws Exception { + List<CompetitionListVo> competitionListVos = this.baseMapper.queryCompetitionList(cityCode, content, registerCondition, heat); + return competitionListVos; } @@ -104,19 +99,32 @@ competitionInfo.setImgs(competition.getImgs()); competitionInfo.setName(competition.getName()); competitionInfo.setRegisterCondition(competition.getRegisterCondition()); + + // 2.0 + ArrayList<Map<String,Object>> objects = new ArrayList<>(); if(null != competition.getStoreId()){ - Store store = storeClient.queryStoreById(competition.getStoreId()); - competitionInfo.setStoreName(store.getName()); - competitionInfo.setStoreAddress(store.getAddress()); - competitionInfo.setStoreLon(store.getLon()); - competitionInfo.setStoreLat(store.getLat()); - competitionInfo.setStoreCoverDrawing(store.getCoverDrawing()); - if(ToolUtil.isNotEmpty(lon) && ToolUtil.isNotEmpty(lat)){ - Map<String, Double> distance = GeodesyUtil.getDistance(lon + "," + lat, store.getLon() + "," + store.getLat()); - double wgs84 = new BigDecimal(distance.get("WGS84")).divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); - competitionInfo.setDistance(wgs84); + + String storeId = competition.getStoreId(); + for (String s : storeId.split(",")) { + HashMap<String, Object> map = new HashMap<>(); + Store store = storeClient.queryStoreById(Integer.valueOf(s)); + map.put("name",store.getName()); + map.put("address",store.getAddress()); + map.put("storeLon",store.getLon()); + map.put("storeLat",store.getLat()); + map.put("storeCoverDrawing",store.getCoverDrawing()); + if(ToolUtil.isNotEmpty(lon) && ToolUtil.isNotEmpty(lat)){ + Map<String, Double> distance = GeodesyUtil.getDistance(lon + "," + lat, store.getLon() + "," + store.getLat()); + double wgs84 = new BigDecimal(distance.get("WGS84")).divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); + map.put("distance",wgs84); + } + objects.add(map); } + } + competitionInfo.setStoreInfos(objects); + + competitionInfo.setRegisterEndTime(sdf.format(competition.getRegisterEndTime())); competitionInfo.setStartTime(sdf.format(competition.getStartTime())); competitionInfo.setEndTime(sdf.format(competition.getEndTime())); @@ -124,8 +132,9 @@ competitionInfo.setProvince(competition.getEntryProvince()); competitionInfo.setCity(competition.getEntryCity()); competitionInfo.setAddress(competition.getEntryAddress()); - competitionInfo.setPayType(competition.getPayType()); - competitionInfo.setPrice(competition.getPrice().doubleValue()); + competitionInfo.setCashPrice(competition.getCashPrice()); + competitionInfo.setPlayPaiCoin(competition.getPlayPaiCoin()); + competitionInfo.setClassPrice(competition.getClassPrice()); competitionInfo.setIntroduction(competition.getIntroduction()); competitionInfo.setRegistrationNotes(competition.getRegistrationNotes()); competitionInfo.setApply(0); @@ -168,21 +177,27 @@ AppUser appUser = appUserClient.queryAppUser(uid); String[] split = paymentCompetitionVo.getIds().split(";"); Competition competition = this.getById(paymentCompetitionVo.getId()); - BigDecimal money = competition.getPrice().multiply(new BigDecimal(split.length)).setScale(2, RoundingMode.HALF_EVEN); + BigDecimal money = null; + if(paymentCompetitionVo.getPayType() == 1 || paymentCompetitionVo.getPayType() == 2){ + money = new BigDecimal(competition.getCashPrice()).multiply(new BigDecimal(split.length)).setScale(2, RoundingMode.HALF_EVEN); + } if(paymentCompetitionVo.getPayType() == 3){//玩湃币 + money = new BigDecimal(competition.getPlayPaiCoin()).multiply(new BigDecimal(split.length)).setScale(2, RoundingMode.HALF_EVEN); if(money.compareTo(new BigDecimal(appUser.getPlayPaiCoins())) > 0){ return ResultUtil.error("报名失败,玩湃币不足,请充值"); } } if(paymentCompetitionVo.getPayType() == 4){//课程 + money = new BigDecimal(competition.getClassPrice()).multiply(new BigDecimal(split.length)).setScale(2, RoundingMode.HALF_EVEN); for (String s : split) { Participant participant = participantService.getById(s); Student student = studentClient.queryStudentByPhone(participant.getPhone()); if(null == student){ return ResultUtil.error(participant.getName() + "不是学员,无法使用课时支付。"); } - Integer integer = coursePackagePaymentClient.queryResidueClassHour(student.getId()); - if(new BigDecimal(integer).compareTo(competition.getPrice()) < 0){ + // 2.0 + Integer integer = coursePackagePaymentClient.queryResidueClassHourById(paymentCompetitionVo.getCoursePaymentId()); + if(new BigDecimal(integer).compareTo(new BigDecimal(competition.getClassPrice())) < 0){ return ResultUtil.error(participant.getName() + "剩余课时不足,无法完成支付。"); } } @@ -195,8 +210,9 @@ paymentCompetition.setCompetitionId(paymentCompetitionVo.getId()); paymentCompetition.setAppUserId(uid); paymentCompetition.setPayType(paymentCompetitionVo.getPayType()); - paymentCompetition.setAmount(competition.getPrice().multiply(new BigDecimal(split.length)).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); + paymentCompetition.setAmount(money.doubleValue()); paymentCompetition.setPayStatus(1); + paymentCompetition.setState(1); paymentCompetition.setInsertTime(new Date()); paymentCompetitionService.save(paymentCompetition); @@ -220,6 +236,8 @@ appUser.setPlayPaiCoins(appUser.getPlayPaiCoins() - money.intValue()); appUserClient.updateAppUser(appUser); + paymentCompetition = paymentCompetitionService.getById(paymentCompetition.getId()); + paymentCompetition.setAppUserId(null); paymentCompetition.setPayStatus(2); paymentCompetition.setPayTime(new Date()); paymentCompetition.setPayOrderNo(""); @@ -234,10 +252,13 @@ Student student = studentClient.queryStudentByPhone(participant.getPhone()); PaymentDeductionClassHour paymentDeductionClassHour = new PaymentDeductionClassHour(); paymentDeductionClassHour.setId(student.getId()); - paymentDeductionClassHour.setClassHour(competition.getPrice().intValue()); + paymentDeductionClassHour.setClassHour(competition.getClassPrice()); paymentDeductionClassHour.setCode(code); + paymentDeductionClassHour.setCourseId(paymentCompetitionVo.getCoursePaymentId()); coursePackagePaymentClient.paymentDeductionClassHour(paymentDeductionClassHour); } + paymentCompetition = paymentCompetitionService.getById(paymentCompetition.getId()); + paymentCompetition.setAppUserId(null); paymentCompetition.setPayStatus(2); paymentCompetition.setPayTime(new Date()); paymentCompetition.setPayOrderNo(""); @@ -289,11 +310,13 @@ String s = data1.get("trade_state"); String transaction_id = data1.get("transaction_id"); if("REFUND".equals(s) || "NOTPAY".equals(s) || "CLOSED".equals(s) || "REVOKED".equals(s) || "PAYERROR".equals(s) || num == 10){ + paymentCompetition.setAppUserId(null); paymentCompetition.setState(3); userCompetitionService.remove(new QueryWrapper<UserCompetition>().eq("paymentCompetitionId", paymentCompetition.getId())); break; } if("SUCCESS".equals(s)){ + paymentCompetition.setAppUserId(null); paymentCompetition.setPayStatus(2); paymentCompetition.setPayTime(new Date()); paymentCompetition.setPayOrderNo(transaction_id); @@ -351,11 +374,13 @@ String s = data1.get("tradeStatus"); String tradeNo = data1.get("tradeNo"); if("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10){ + paymentCompetition.setAppUserId(null); paymentCompetition.setState(3); userCompetitionService.remove(new QueryWrapper<UserCompetition>().eq("paymentCompetitionId", paymentCompetition.getId())); break; } if("TRADE_SUCCESS".equals(s)){ + paymentCompetition.setAppUserId(null); paymentCompetition.setPayStatus(2); paymentCompetition.setPayTime(new Date()); paymentCompetition.setPayOrderNo(tradeNo); @@ -385,4 +410,14 @@ this.baseMapper.taskSetStatusStart(); this.baseMapper.taskSetStatusEnd(); } + + @Override + public ResultUtil paymentCompetitionCourseList(Integer uid, Integer id) { + Competition competition = this.baseMapper.selectById(id); + // 获取门店id 找出符合这些门店的课包 + String storeId = competition.getStoreId(); + + List<PayCourseRes> list = coursePackagePaymentClient.paymentCompetitionCourseList(uid+"_"+storeId); + return ResultUtil.success(list); + } } -- Gitblit v1.7.1