From 168d852672f8f671a01d6f0f053349d0d321ec7c Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期三, 03 一月 2024 11:43:11 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java | 288 +++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 178 insertions(+), 110 deletions(-) diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java index 73a3de4..21f0578 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java +++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java @@ -18,10 +18,8 @@ import com.dsh.course.feignclient.account.AppUserClient; import com.dsh.course.feignclient.account.CoachClient; import com.dsh.course.feignclient.account.StudentClient; -import com.dsh.course.feignclient.account.model.AppUser; -import com.dsh.course.feignclient.account.model.Coach; -import com.dsh.course.feignclient.account.model.Student; -import com.dsh.course.feignclient.account.model.TCourseInfoRecord; +import com.dsh.course.feignclient.account.UserIntegralChangesClient; +import com.dsh.course.feignclient.account.model.*; import com.dsh.course.feignclient.activity.BenefitVideoClient; import com.dsh.course.feignclient.activity.CouponClient; import com.dsh.course.feignclient.activity.model.BenefitsVideos; @@ -51,6 +49,7 @@ import javax.annotation.Resource; import javax.persistence.criteria.CriteriaBuilder; import java.math.BigDecimal; +import java.math.MathContext; import java.math.RoundingMode; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -118,9 +117,11 @@ @Autowired private ICoursePackageSchedulingService coursePackageSchedulingService; - @Autowired private RestTemplate internalRestTemplate; + + @Resource + private UserIntegralChangesClient userIntegralChangesClient; @Override @@ -130,13 +131,8 @@ @Override public int changeState(CoursePackagePayDTO dto) { - List<String> ids = dto.getIds(); - List<Long> list = new ArrayList<>(); - for (String id : ids) { - long value = Long.parseLong(id); - list.add(value); - } - return cpConfigMapper.changeState(list, dto.getPayUserName(), dto.getUserId()); + + return cpConfigMapper.changeState(Long.valueOf(dto.getIds()), dto.getPayUserName(), dto.getUserId()); } @Override @@ -157,100 +153,96 @@ @Override public List<Map<String, Object>> getStudentTotal(StudentQeryDto studentQeryDto) { - List<Map<String, Object>> studentTotal = this.baseMapper.getStudentTotal(studentQeryDto); - - for (Map<String, Object> student : studentTotal) { - Integer appUserId = (Integer) student.get("appUserId"); - AppUser appUser = appuClient.queryAppUser(appUserId); - student.put("province", appUser.getProvince()); - student.put("provinceCode", appUser.getProvinceCode()); - - student.put("city", appUser.getCity()); - student.put("cityCode", appUser.getCityCode()); - - Student studentId = studentClient.queryStudentById((Integer) student.get("studentId")); - student.put("studentName", studentId.getName()); - BigDecimal cashPayment = (BigDecimal) student.get("cashPayment"); - BigDecimal totalClassHours = (BigDecimal) student.get("totalClassHours"); - BigDecimal hasHours = (BigDecimal) student.get("hasHours"); - if (cashPayment == null) { + String cityCode = studentQeryDto.getCityCode(); + //获取用户数据 + List<Integer> appUserIds = null; + if(ToolUtil.isNotEmpty(cityCode)){ + List<AppUser> appUsers = appuClient.queryAppUserByCityCode(cityCode); + if(appUsers.size() > 0){ + appUserIds = appUsers.stream().map(AppUser::getId).collect(Collectors.toList()); + } + } + QueryWrapper<CoursePackageStudent> status = new QueryWrapper<CoursePackageStudent>().eq("payStatus", 2).eq("status", 1); + if(null != appUserIds){ + status.in("appUserId", appUserIds); + } + List<Map<String, Object>> maps = this.baseMapper.getStudentTotal(appUserIds, studentQeryDto.getStart(), studentQeryDto.getEnd()); + List<Map<String, Object>> list = new ArrayList<>(); + for (Map<String, Object> objectMap : maps) { + if(null == objectMap.get("studentId")){ continue; } - if (totalClassHours.compareTo(BigDecimal.ZERO) == 0) { - totalClassHours = totalClassHours.add(new BigDecimal("1")); + Integer studentId = Integer.valueOf(objectMap.get("studentId").toString()); + Integer appUserId = Integer.valueOf(objectMap.get("appUserId").toString()); + Integer coursePackageId = Integer.valueOf(objectMap.get("coursePackageId").toString()); + Integer number = Integer.valueOf(objectMap.get("number").toString()); + Map<String, Object> map = new HashMap<>(); + Student student = studentClient.queryStudentById(studentId); + if(null == student){ + continue; } - BigDecimal hasPayment = cashPayment.divide(totalClassHours, 2, RoundingMode.HALF_UP) - .multiply(hasHours).setScale(2, RoundingMode.HALF_UP); - student.put("hasPayment", hasPayment); - } - - if (studentQeryDto.getCityCode() != null && studentQeryDto.getCityCode() != "") { - String value = studentQeryDto.getCityCode(); - boolean allZeros = value.substring(value.length() - 4).endsWith("0000"); - System.out.println(allZeros); // Output: true - if (allZeros) { - Iterator<Map<String, Object>> iterator = studentTotal.iterator(); - while (iterator.hasNext()) { - Map<String, Object> student = iterator.next(); - String cityCode = (String) student.get("provinceCode"); - if (!cityCode.equals(studentQeryDto.getCityCode())) { - iterator.remove(); // Remove the element from the list - } - } - } else { - Iterator<Map<String, Object>> iterator = studentTotal.iterator(); - while (iterator.hasNext()) { - Map<String, Object> student = iterator.next(); - String cityCode = (String) student.get("cityCode"); - if (!cityCode.equals(studentQeryDto.getCityCode())) { - iterator.remove(); // Remove the element from the list - } - } + map.put("studentName", student.getName()); + AppUser appUser = appuClient.queryAppUser(appUserId); + if(null == appUser){ + continue; } - } + map.put("province", appUser.getProvince()); + map.put("provinceCode", appUser.getProvinceCode()); + map.put("city", appUser.getCity()); + map.put("cityCode", appUser.getCityCode()); + TCoursePackage coursePackage = coursePackageService.getById(coursePackageId); + map.put("courseName", coursePackage.getName()); + map.put("totalClassHours", number); - if (studentQeryDto.getStudentName() != null && studentQeryDto.getStudentName() != "") { - List<Map<String, Object>> totallike = new ArrayList<>(); - for (Map<String, Object> student : studentTotal) { - String studentName = (String) student.get("studentName"); - if (studentName.contains(studentQeryDto.getStudentName())) { - totallike.add(student); - } - + CoursePackageOrder coursePackageOrder = coursePackageOrderService.getOne(new QueryWrapper<CoursePackageOrder>().eq("appUserId", appUserId) + .eq("coursePackageId", coursePackageId).eq("payStatus", 2).eq("state", 1) + .gt("cashPayment", 0).last(" and studentIds like '%" + studentId + "%' order by insertTime desc limit 0, 1")); + Double cashPayment = 0D; + if(null != coursePackageOrder && coursePackageOrder.getClassHours() > 0){ + cashPayment = coursePackageOrder.getCashPayment().divide(new BigDecimal(coursePackageOrder.getClassHours()), new MathContext(2, RoundingMode.HALF_EVEN)).doubleValue(); } - return totallike; + map.put("cashPayment", cashPayment * number); + + int count = coursePackageSchedulingService.count(new QueryWrapper<CoursePackageScheduling>().eq("studentId", studentId) + .eq("coursePackageId", coursePackageId).eq("status", 3)); + map.put("hasHours", count); + map.put("hasPayment", count * cashPayment); + + list.add(map); } - return studentTotal; + return list; } @Override public List<Map<String, Object>> bypac(PacQueryDto pacQueryDto) { - if (pacQueryDto.getCityCode() != null && pacQueryDto.getCityCode() != "") { - String value = pacQueryDto.getCityCode(); - boolean allZeros = value.substring(value.length() - 4).endsWith("0000"); - System.out.println(allZeros); // Output: true + List<Map<String, Object>> maps = this.baseMapper.pacQueryDto(pacQueryDto.getStart(), pacQueryDto.getEnd(), pacQueryDto.getStoreIds(), pacQueryDto.getName()); + for (Map<String, Object> map : maps) { + Integer id = Integer.valueOf(map.get("id").toString()); + Integer storeId = Integer.valueOf(map.get("storeId").toString()); + Integer number = Integer.valueOf(map.get("number").toString()); + Store store = storeClient.queryStoreById(storeId); + map.put("store", store.getName()); + map.put("totalClassHours", number); - if (allZeros) { - pacQueryDto.setProvinceCode(pacQueryDto.getCityCode()); - pacQueryDto.setCityCode(null); + List<CoursePackageOrder> list = coursePackageOrderService.list(new QueryWrapper<CoursePackageOrder>() + .eq("coursePackageId", id).eq("payStatus", 2).eq("state", 1) + .gt("cashPayment", 0)); + + + Double cashPayment = 0D; + BigDecimal p = new BigDecimal(0); + for (CoursePackageOrder coursePackageOrder : list) { + p = p.add(coursePackageOrder.getCashPayment()); } - - } - List<Map<String, Object>> maps = this.baseMapper.pacQueryDto(pacQueryDto); - - if (pacQueryDto.getName() != null && pacQueryDto.getName() != "") { - List<Map<String, Object>> totallike = new ArrayList<>(); - for (Map<String, Object> student : maps) { - String studentName = (String) student.get("name"); - if (studentName.contains(pacQueryDto.getName())) { - totallike.add(student); - } - + if(list.size() > 0){ + cashPayment = p.divide(new BigDecimal(list.size()), new MathContext(2, RoundingMode.HALF_EVEN)).doubleValue(); } - return totallike; + map.put("cashPayment", cashPayment * number); + + int count = coursePackageSchedulingService.count(new QueryWrapper<CoursePackageScheduling>().eq("coursePackageId", id).eq("status", 3)); + map.put("hasHours", count); + map.put("lavePay", count * cashPayment); } - - return maps; } @@ -326,7 +318,6 @@ @Override public CourseOfVideoResponse queryVideoDetails(CourseWithDetailsRequest detailsRequest, Integer appUserId) { CourseOfVideoResponse response = new CourseOfVideoResponse(); -// BenefitsVideos videosWithIds = bfvoClient.getVideosWithIds(detailsRequest.getVideoId()); TCourse byId = courseService.getById(detailsRequest.getVideoId()); TCoursePackage coursePackage = tcpmapper.selectById(detailsRequest.getCoursePackageId()); CoursePackageScheduling byId1 = new CoursePackageScheduling(); @@ -373,6 +364,17 @@ userVideoDetails.setState(2); userVideoDetails.setUpdateTime(new Date()); uvdmapper.updateById(userVideoDetails); + + CoursePackageScheduling coursePackageScheduling = coursePackageSchedulingService.getById(detailsRequest.getScId()); + //添加积分 + AppUser appUser = appuClient.queryAppUser(coursePackageScheduling.getAppUserId()); + appUser.setIntegral((null == appUser.getIntegral() ? 0 : appUser.getIntegral()) + (null == coursePackageScheduling.getIntegral() ? 0 : coursePackageScheduling.getIntegral())); + appuClient.updateAppUser(appUser); + SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo(); + vo.setAppUserId(coursePackageScheduling.getAppUserId()); + vo.setIntegral(coursePackageScheduling.getIntegral()); + vo.setType(4); + userIntegralChangesClient.saveUserIntegralChanges(vo); return "SUCCESS"; } return "ERROR"; @@ -508,6 +510,9 @@ @Autowired private TCoursePackageService coursePackageService; + @Autowired + private ALiSendSms aLiSendSms; + @@ -516,9 +521,21 @@ AppUser appUser = appuClient.queryAppUser(appUserId); CourseDetailsResponse response = new CourseDetailsResponse(); CoursePackageOrder coursePackageOrder = coursePackageOrderService.getById(coursePayId); + if (coursePackageOrder==null){ +// student = coursePackageStudentService.getById(coursePayId); + CoursePackageOrderStudent student = coursePackageOrderStudentService.getById(coursePayId); + + coursePackageOrder = coursePackageOrderService.getOne(new QueryWrapper<CoursePackageOrder>().eq("appUserId", student.getAppUserId()).like("studentIds", student.getStudentId()).eq("coursePackageId", student.getCoursePackageId()).orderByDesc("insertTime").last("limit 1")); + + } + response.setOrinPrice(coursePackageOrder.getOriginalPrice()); response.setChooseHours(coursePackageOrder.getClassHours()); + response.setStuIds(coursePackageOrder.getStudentIds().split(";")); + response.setPayType(coursePackageOrder.getPayType()); + response.setPayPrice(coursePackageOrder.getCashPayment()); + response.setCoinPrice(coursePackageOrder.getPlayPaiCoin()); if (null != coursePackageOrder) { TCoursePackage coursePackage = tcpmapper.selectById(coursePackageOrder.getCoursePackageId()); @@ -527,6 +544,7 @@ } Store store = storeClient.queryStoreById(coursePackage.getStoreId()); response.setStoreName(store.getName()); + response.setStoreAddress(store.getAddress()); if (ToolUtil.isNotEmpty(lon) && ToolUtil.isNotEmpty(lat)) { Map<String, Double> distance = GeodesyUtil.getDistance(lon + "," + lat, store.getLon() + "," + store.getLat()); @@ -563,6 +581,16 @@ response.setIntroduceDrawing(coursePackage.getIntroduceDrawing()); Integer payType = coursePackageOrder.getPayType(); + if(null == payType){ + CoursePackagePaymentConfig config = coursePackagePaymentConfigService.list(new QueryWrapper<CoursePackagePaymentConfig>().eq("coursePackageId", coursePackage.getId()).orderByAsc("classHours")).get(0); + if (ToolUtil.isNotEmpty(config.getCashPayment()) && config.getCashPayment() > 0 && ToolUtil.isNotEmpty(config.getPlayPaiCoin()) && config.getPlayPaiCoin() > 0) { + payType = 3; + } else if (ToolUtil.isNotEmpty(config.getCashPayment()) && config.getCashPayment() > 0) { + payType = 1; + } else if (ToolUtil.isNotEmpty(config.getPlayPaiCoin()) && config.getPlayPaiCoin() > 0) { + payType = 2; + } + } BigDecimal cashPayment = coursePackageOrder.getCashPayment(); double cashPaymentValue = 0.0; if (cashPayment != null) { @@ -589,12 +617,14 @@ switch (payType) { case 1: - case 2: + case 3: response.setAmount(cashPaymentValue); response.setVipAmount(discountMember); break; - case 3: - response.setWpGold(playPaiCoin); + case 2: + if (playPaiCoin!=null) { + response.setWpGold(playPaiCoin); + } break; } @@ -712,16 +742,16 @@ TCoursePackageDiscount discount = coursePackageDiscountService.getOne(new QueryWrapper<TCoursePackageDiscount>().eq("coursePackagePaymentConfigId", coursePackagePaymentConfig.getId()) .eq("type", 2).eq("auditStatus", 2)); - Double continuingMember = JSON.parseObject(discount.getContent()).getDouble("continuingUser"); - Double vipcontinuingMember = JSON.parseObject(discount.getContent()).getDouble("continuingMember"); - - - if (coursePackagePaymentConfigVo.getPaymentPrice() > continuingMember) { - coursePackagePaymentConfigVo.setPaymentPrice(continuingMember); - } - if (coursePackagePaymentConfigVo.getVipPrice() > vipcontinuingMember) { - coursePackagePaymentConfigVo.setVipPrice(vipcontinuingMember); - } +// Double continuingMember = JSON.parseObject(discount.getContent()).getDouble("continuingUser"); +// Double vipcontinuingMember = JSON.parseObject(discount.getContent()).getDouble("continuingMember"); +// +// +// if (coursePackagePaymentConfigVo.getPaymentPrice() > continuingMember) { +// coursePackagePaymentConfigVo.setPaymentPrice(continuingMember); +// } +// if (coursePackagePaymentConfigVo.getVipPrice() > vipcontinuingMember) { +// coursePackagePaymentConfigVo.setVipPrice(vipcontinuingMember); +// } if (coursePackagePaymentConfigVo.getPaymentPrice() < coursePackagePaymentConfigVo.getVipPrice()) { @@ -918,11 +948,22 @@ } return weixinpay; } - + private String smid = "2088330203191220";//平台支付宝商户号 public ResultUtil AlipayPayment(String code, BigDecimal request) { TCoursePackagePaymentMapper baseMapper1 = this.baseMapper; - ResultUtil alipay = payMoneyUtil.alipay("课包购买", "课包购买", "", code, request.toString(), + TCoursePackagePayment coursePackagePayment = baseMapper1.getCoursePackagePaymentByCode(code); + // 判断这个课包属于哪个门店 属于哪个运营商 根据运营商 id 获取对应的商户号 + Integer coursePackageId = coursePackagePayment.getCoursePackageId(); + TCoursePackage byId = coursePackageService.getById(coursePackageId); + Store store = storeClient.queryStoreById(byId.getStoreId()); + String smid1=""; + if (store.getOperatorId() == null ){ + smid1 = smid; + }else{ + smid1 = storeClient.getSMIDByOperatorId(store.getOperatorId()); + } + ResultUtil alipay = payMoneyUtil.alipay(smid1,"课包购买", "课包购买", "", code, request.toString(), "/base/coursePackage/alipayRegisteredCoursesCallback"); if (alipay.getCode() == 200) { new Thread(new Runnable() { @@ -954,12 +995,24 @@ if ("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10) { coursePackagePayment.setState(3); baseMapper1.deleteById(coursePackagePayment.getId()); + break; } if ("TRADE_SUCCESS".equals(s)) { coursePackagePayment.setPayStatus(2); coursePackagePayment.setOrderNumber(tradeNo); baseMapper1.updateById(coursePackagePayment); + // 判断这个课包属于哪个门店 属于哪个运营商 根据运营商 id 获取对应的商户号 + Integer coursePackageId = coursePackagePayment.getCoursePackageId(); + TCoursePackage byId = coursePackageService.getById(coursePackageId); + Store store = storeClient.queryStoreById(byId.getStoreId()); + if (store.getOperatorId()== null ){ + // 说明是平台的门店 + payMoneyUtil.confirm(smid,code,tradeNo,request.toString()); + }else{ + String smid = storeClient.getSMIDByOperatorId(store.getOperatorId()); + payMoneyUtil.confirm(smid,code,tradeNo,request.toString()); + } break; } if ("WAIT_BUYER_PAY".equals(s)) { @@ -980,7 +1033,7 @@ TCoursePackagePayment packagePayment = this.baseMapper.selectOne(new QueryWrapper<TCoursePackagePayment>() .eq("code", code)); if (appUser.getPlayPaiCoins() < wpGold) { - return ResultUtil.error("玩牌币不足!"); + return ResultUtil.error("玩湃币不足!"); } packagePayment.setPayStatus(2); packagePayment.setPayUserId(appUser.getId()); @@ -1215,10 +1268,14 @@ List<Map<String, Object>> list = new ArrayList<>(); if (coursePackage.getType()==1){ - list = this.baseMapper.queryRegistrationRecord(page, coursePackageId, userIds, studentIds);}else { + list = this.baseMapper.queryRegistrationRecord(page, coursePackageId, userIds, studentIds); + }else { list = this.baseMapper.queryRegistrationRecord1(page, coursePackageId, userIds, studentIds); } + + list.addAll(this.baseMapper.queryRegistrationRecord3(coursePackageId,userIds,studentIds)); for (Map<String, Object> map : list) { + Long id = Long.valueOf(map.get("id").toString()); Integer appUserId = Integer.valueOf(map.get("appUserId").toString()); @@ -1226,7 +1283,7 @@ if (coursePackage.getType()==1) { studentId = Integer.valueOf(map.get("studentId").toString()); }else { - studentId = Integer.valueOf(map.get("studentIds").toString()); + studentId = Integer.valueOf(map.get("studentIds").toString().split(",")[0]); } TAppUser appUser = appuClient.queryAppUser1(appUserId); @@ -1236,6 +1293,11 @@ map.put("studentName", null != student ? student.getName() : ""); Integer integer = cpsMapper.selectCount(new QueryWrapper<CoursePackageStudent>().eq("appUserId", appUserId) .eq("studentId", studentId).eq("coursePackagePaymentId", id).eq("signInOrNot", 2)); + + int count = coursePackageStudentService.count(new QueryWrapper<CoursePackageStudent>().eq("coursePackageId", coursePackageId).eq("studentId", studentId).eq("signInOrNot",2)); + + map.put("absencesNumber", count); + map.put("already", integer); } return list; @@ -1491,6 +1553,12 @@ coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours() - req.getNum()); coursePackageOrderStudentService.updateById(coursePackageOrderStudent); + Integer laveClassHours = coursePackageOrderStudent.getLaveClassHours(); + if(3 >= laveClassHours){ + AppUser appUser = appuClient.queryAppUser(coursePackageOrderStudent.getAppUserId()); + //发送短信提醒 + aLiSendSms.sendSms(appUser.getPhone(), "SMS_463646317", ""); + } CourseCounsum courseCounsum = new CourseCounsum(); -- Gitblit v1.7.1