From 640ff18d2d7f4be02ddb7f8f75e899f05545eb98 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期一, 05 二月 2024 11:56:52 +0800 Subject: [PATCH] 更新bug修改 --- cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java | 209 +++++++++++++++++++++++++++++++--------------------- 1 files changed, 125 insertions(+), 84 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 dbd2952..75b2215 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 @@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.alipay.api.AlipayApiException; import com.alipay.api.domain.Person; import com.alipay.api.response.AlipayTradeQueryResponse; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -15,10 +16,7 @@ import com.dsh.course.entity.*; import com.dsh.course.entity.TAppUser; import com.dsh.course.entity.dto.StudentQeryDto; -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.UserIntegralChangesClient; +import com.dsh.course.feignclient.account.*; import com.dsh.course.feignclient.account.model.*; import com.dsh.course.feignclient.activity.BenefitVideoClient; import com.dsh.course.feignclient.activity.CouponClient; @@ -122,6 +120,14 @@ @Resource private UserIntegralChangesClient userIntegralChangesClient; + + @Resource + private StudentHonorClient studentHonorClient; + + + + + @Override @@ -360,6 +366,7 @@ .eq("coursePackageId", detailsRequest.getCoursePackageId()) .eq("courseId", detailsRequest.getVideoId()) ); + //完成学习 if (null != userVideoDetails && userVideoDetails.getState() == 1 && detailsRequest.getIsOver() == 1) { userVideoDetails.setState(2); userVideoDetails.setUpdateTime(new Date()); @@ -370,11 +377,19 @@ 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); + //添加勋章数据 + Integer number = uvdmapper.selectCount(new QueryWrapper<UserVideoDetails>().eq("appUserId", appUserId).eq("state", 2)); + StudentHonor studentHonor = new StudentHonor(); + studentHonor.setAppUserId(appUserId); + studentHonor.setHonorType(4); + studentHonor.setNumber(number); + studentHonorClient.saveStudentHonor(studentHonor); return "SUCCESS"; } return "ERROR"; @@ -509,6 +524,9 @@ @Autowired private TCoursePackageService coursePackageService; + + @Autowired + private ALiSendSms aLiSendSms; @@ -777,24 +795,21 @@ } @Override - public ResultUtil ContinuationOrpaymentCourse(Integer ids, ClasspaymentRequest request) { - AppUser userIdFormRedis = appuClient.queryAppUser(ids); - TCoursePackagePayment tCoursePackagePayment = this.baseMapper.selectById(request.getCoursePayId()); + public ResultUtil ContinuationOrpaymentCourse(Integer userId, ClasspaymentRequest request) { + AppUser appUser = appuClient.queryAppUser(userId); + CoursePackageOrder coursePackageOrder = coursePackageOrderService.getById(request.getCoursePayId()); String code = ""; - BigDecimal money = tCoursePackagePayment.getCashPayment(); - Integer wpGold = tCoursePackagePayment.getPlayPaiCoin(); - if (tCoursePackagePayment.getPayStatus() == 1) { -// 待支付的订单 - code = tCoursePackagePayment.getCode(); - tCoursePackagePayment.setPayType(request.getPayType()); + BigDecimal money = coursePackageOrder.getCashPayment(); + Integer wpGold = coursePackageOrder.getPlayPaiCoin(); + if (coursePackageOrder.getPayStatus() == 1) { + code = coursePackageOrder.getCode(); + coursePackageOrder.setPayType(request.getPayType()); if (request.getUseConpon() == 1) { - tCoursePackagePayment.setUserCouponId(Long.valueOf(request.getUseConpon())); + coursePackageOrder.setUserCouponId(Long.valueOf(request.getUseConpon())); } - this.baseMapper.updateById(tCoursePackagePayment); + coursePackageOrder.setAppUserId(null); + coursePackageOrderService.updateById(coursePackageOrder); } else { -// 续课的订单 -// 查询是否续课优惠 - CoursePackagePaymentConfig paymentConfig = cpConfigMapper.selectOne(new QueryWrapper<CoursePackagePaymentConfig>() .eq("coursePackageId", request.getLessonId()) .eq("classHours", request.getCourseHoursNum())); @@ -806,7 +821,7 @@ if (ToolUtil.isNotEmpty(coursePackageDiscount)) { String content = coursePackageDiscount.getContent(); JSONObject jsonObject = JSON.parseObject(content); - if (userIdFormRedis.getIsVip() == 1) { + if (appUser.getIsVip() == 1) { Double jsonObjectDouble = jsonObject.getDouble("num1"); money = BigDecimal.valueOf(jsonObjectDouble); } else { @@ -814,27 +829,24 @@ money = BigDecimal.valueOf(jsonObjectDouble); } } - TCoursePackagePayment newPayment = new TCoursePackagePayment(); + CoursePackageOrder newPayment = new CoursePackageOrder(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); newPayment.setCode(sdf.format(new Date()) + UUIDUtil.getNumberRandom(5)); - newPayment.setAppUserId(userIdFormRedis.getId()); - newPayment.setStudentId(request.getStuId()); + newPayment.setAppUserId(appUser.getId()); + newPayment.setStudentIds(request.getStuId().toString()); newPayment.setCoursePackageId(request.getLessonId()); - newPayment.setClassHours(tCoursePackagePayment.getClassHours()); - newPayment.setOriginalPrice(tCoursePackagePayment.getOriginalPrice()); - newPayment.setTotalClassHours(tCoursePackagePayment.getTotalClassHours()); - newPayment.setLaveClassHours(tCoursePackagePayment.getTotalClassHours()); + newPayment.setClassHours(coursePackageOrder.getClassHours()); + newPayment.setOriginalPrice(coursePackageOrder.getOriginalPrice()); if (request.getUseConpon() == 1) { newPayment.setUserCouponId(Long.valueOf(request.getUseConpon())); } - newPayment.setAbsencesNumber(0); newPayment.setPayUserType(1); newPayment.setPayStatus(1); newPayment.setStatus(1); newPayment.setPayType(request.getPayType()); newPayment.setState(1); newPayment.setInsertTime(new Date()); - this.baseMapper.insert(newPayment); + coursePackageOrderService.save(newPayment); code = newPayment.getCode(); } switch (request.getPayType()) { @@ -879,7 +891,7 @@ } return AlipayPayment(code, money); case 3: - PlaypaiGoldPayment(userIdFormRedis, code, wpGold); + PlaypaiGoldPayment(appUser, code, wpGold); break; default: break; @@ -889,10 +901,10 @@ public ResultUtil WeChatPayment(String code, BigDecimal request) throws Exception { - TCoursePackagePaymentMapper baseMapper1 = this.baseMapper; ResultUtil weixinpay = payMoneyUtil.weixinpay("课包续费", "", code, request.toString(), "/base/coursePackage/wechatRegisteredCoursesCallback", "APP", ""); if (weixinpay.getCode() == 200) { + String finalCode = code; new Thread(new Runnable() { @Override public void run() { @@ -903,12 +915,13 @@ int min = 5000; wait += (min * num); Thread.sleep(wait); - TCoursePackagePayment coursePackagePayment = baseMapper1.getCoursePackagePaymentByCode(code); - if (coursePackagePayment.getPayStatus() == 2) { + CoursePackageOrder coursePackageOrder1 = coursePackageOrderService.getOne(new QueryWrapper<CoursePackageOrder>() + .eq("code", finalCode).eq("state", 1)); + if (coursePackageOrder1.getPayStatus() == 2) { break; } - ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryWXOrder(code, ""); - if (resultUtil.getCode() == 200 && coursePackagePayment.getPayStatus() == 1) { + ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryWXOrder(finalCode, ""); + if (resultUtil.getCode() == 200 && coursePackageOrder1.getPayStatus() == 1) { /** * SUCCESS—支付成功, * REFUND—转入退款, @@ -922,14 +935,23 @@ 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) { - coursePackagePayment.setState(3); - baseMapper1.deleteById(coursePackagePayment.getId()); + //有待支付的订单,这里不处理 +// coursePackageOrder1.setState(3); +// coursePackageOrderService.updateById(coursePackageOrder1); break; } if ("SUCCESS".equals(s)) { - coursePackagePayment.setPayStatus(2); - coursePackagePayment.setOrderNumber(transaction_id); - baseMapper1.updateById(coursePackagePayment); + coursePackageOrder1.setPayStatus(2); + coursePackageOrder1.setOrderNumber(transaction_id); + coursePackageOrder1.setAppUserId(null); + coursePackageOrderService.updateById(coursePackageOrder1); + //修改课时有效期 + + CoursePackagePaymentConfig coursePackagePaymentConfig = coursePackagePaymentConfigService.getOne(new QueryWrapper<CoursePackagePaymentConfig>() + .eq("coursePackageId", coursePackageOrder1.getId()) + .eq("classHours", coursePackageOrder1.getClassHours()) + ); + coursePackageService.addCoursePackageOrderStudent(coursePackageOrder1.getId(), coursePackagePaymentConfig); break; } if ("USERPAYING".equals(s)) { @@ -945,48 +967,77 @@ } 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 if (store.getOperatorId() == 0){ + smid1 = smid; + }else{ + smid1 = storeClient.getSMIDByOperatorId(store.getOperatorId()); + } + ResultUtil alipay = payMoneyUtil.alipay(smid1,"课包购买", "课包购买", "", code, request.toString(), "/base/coursePackage/alipayRegisteredCoursesCallback"); if (alipay.getCode() == 200) { + String finalCode = code; new Thread(new Runnable() { @Override public void run() { try { + Thread.sleep(1000); int num = 1; int wait = 0; while (num <= 10) { int min = 5000; wait += (min * num); Thread.sleep(wait); - TCoursePackagePayment coursePackagePayment = baseMapper1.getCoursePackagePaymentByCode(code); - if (coursePackagePayment.getPayStatus() == 2) { + CoursePackageOrder coursePackageOrder1 = coursePackageOrderService.getOne(new QueryWrapper<CoursePackageOrder>() + .eq("code", finalCode).eq("state", 1)); + if (coursePackageOrder1.getPayStatus() == 2) { break; } - AlipayTradeQueryResponse alipayTradeQueryResponse = payMoneyUtil.queryALIOrder(code); - - if (coursePackagePayment.getPayStatus() == 1) { + AlipayTradeQueryResponse alipayTradeQueryResponse = payMoneyUtil.queryALIOrder(finalCode); + if (null != alipayTradeQueryResponse) { /** * WAIT_BUYER_PAY(交易创建,等待买家付款)、 * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、 * TRADE_SUCCESS(交易支付成功)、 * TRADE_FINISHED(交易结束,不可退款) */ -// Map<String, String> data1 = resultUtil.getData(); String s = alipayTradeQueryResponse.getTradeStatus(); + String tradeNo = alipayTradeQueryResponse.getTradeNo(); if ("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10) { - coursePackagePayment.setState(3); - baseMapper1.deleteById(coursePackagePayment.getId()); + //有待支付的订单,这里不处理 +// coursePackageOrder1.setState(3); +// coursePackageOrderService.updateById(coursePackageOrder1); 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 if (store.getOperatorId() == 0){ + 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)) { @@ -1007,7 +1058,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()); @@ -1037,17 +1088,8 @@ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy.MM.dd"); SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm"); if (tCoursePackagePayments.size() > 0) { - -// int pageNum = 1; // 页码 int pageSize = 10; // 每页记录数 Page<CoursePackageStudent> page = new Page<>(pageNum, pageSize); - -// for (TCoursePackagePayment tCoursePackagePayment : tCoursePackagePayments) { -// List<CoursePackageStudent> coursePackageStudent1 = cpsMapper.selectList(new QueryWrapper<CoursePackageStudent>() -// .in("coursePackageId",ids) -// .eq("studentId",stuId) -// .eq("appUserId",appUserId) -// .eq("reservationStatus",1)); IPage<CoursePackageStudent> coursePackageStudentPage = cpsMapper.selectPage(page, new QueryWrapper<CoursePackageStudent>() .in("coursePackageId", ids) .eq("studentId", stuId) @@ -1084,19 +1126,8 @@ } } -// recordVo.setCourseHours(tCoursePackagePayment.getClassHours()); - Date date = DateUtil.getDate(); - - CoursePackageScheduling byId = coursePackageSchedulingService.getById(coursePackageStudent.getCoursePackageSchedulingId()); -// String classStartTime = coursePackage.getClassStartTime(); -// String classEndTime = coursePackage.getClassEndTime(); //这里是过滤今天之后的数据 - -// if (byId == null||byId.getClassDate().after(new Date())){ -// continue; -// } - if (byId == null) { continue; } @@ -1106,8 +1137,6 @@ recordVo.setTimeFrame(dateString1 + "-" + dateString2.substring(11)); - -// recordVo.setTimeFrame(simpleDateFormat.format(date)+" "+classStartTime+"-"+classEndTime); Store store = stoClient.queryStoreById(coursePackage.getStoreId()); recordVo.setStoreNameAddr(store.getName() + store.getAddress()); recordVo.setCourseStuRecordId(coursePackageStudent.getId()); @@ -1134,12 +1163,7 @@ //待上课 recordVo.setStatus(1); } -// else if(coursePackageStudent.getSignInOrNot()==2){ -// recordVo.setStatus(5); -// } else { -// CancelledClasses cancelledClasses = cacMapper.selectOne(new QueryWrapper<CancelledClasses>() -// .eq("coursePackageId",coursePackageStudent.getCoursePackageId())); CancelledClasses cancelledClasses = cacMapper.selectOne(new QueryWrapper<CancelledClasses>() .eq("coursePackageSchedulingId", byId.getId()).last("limit 1")); if (ToolUtil.isNotEmpty(cancelledClasses)) { @@ -1170,8 +1194,6 @@ } } -// } - return recordVoList; } @@ -1195,13 +1217,26 @@ @Override public ResultUtil insertVipPaymentCallback(String code, String orderNumber) { - TCoursePackagePayment coursePackagePayment = this.baseMapper.getCoursePackagePaymentByCode(code); - if (coursePackagePayment.getPayStatus() != 1) { + CoursePackageOrder coursePackageOrder1 = coursePackageOrderService.getOne(new QueryWrapper<CoursePackageOrder>() + .eq("code", code).eq("state", 1)); + if (coursePackageOrder1.getPayStatus() == 2) { return ResultUtil.success(); } - coursePackagePayment.setPayStatus(2); - coursePackagePayment.setOrderNumber(orderNumber); - this.baseMapper.updateById(coursePackagePayment); + coursePackageOrder1.setPayStatus(2); + coursePackageOrder1.setOrderNumber(orderNumber); + coursePackageOrder1.setAppUserId(null); + coursePackageOrderService.updateById(coursePackageOrder1); + + CoursePackagePaymentConfig coursePackagePaymentConfig = coursePackagePaymentConfigService.getOne(new QueryWrapper<CoursePackagePaymentConfig>() + .eq("coursePackageId", coursePackageOrder1.getId()) + .eq("classHours", coursePackageOrder1.getClassHours()) + ); + coursePackageService.addCoursePackageOrderStudent(coursePackageOrder1.getId(), coursePackagePaymentConfig); + try { + coursePackageService.moneyOut(orderNumber,orderNumber,code); + } catch (AlipayApiException e) { + e.printStackTrace(); + } return ResultUtil.success(); } @@ -1527,6 +1562,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