From 5dc40fcd64b0513150f1d8335ab849e6d8cdc28e Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期五, 04 七月 2025 19:42:49 +0800 Subject: [PATCH] 支付版本更新 根据资金流向使用V2或V3服务商版本支付 --- cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java | 163 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 145 insertions(+), 18 deletions(-) diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java index 5e82c62..41f3fae 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java +++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java @@ -2,6 +2,7 @@ import cn.mb.cloud.common.data.controller.BaseController; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -14,6 +15,8 @@ import com.dsh.course.model.vo.TQueryBenefitsVideosVO; import com.dsh.course.service.*; import com.dsh.course.util.*; +import com.dsh.course.util.wx.WxV3PayConfig; +import com.wechat.pay.contrib.apache.httpclient.util.AesUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -26,8 +29,10 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.BufferedReader; import java.io.PrintWriter; import java.math.BigDecimal; +import java.nio.charset.StandardCharsets; import java.util.*; import java.util.stream.Collectors; @@ -59,8 +64,14 @@ @Autowired private TCoursePackageDiscountService discountService; + @Autowired private ICoursePackagePaymentConfigService coursePackagePaymentConfigService; + + @Autowired + private ICoursePackageOrderService coursePackageOrderService; + + /** * 上/下架 1为上架 2为下架 3为删除 @@ -123,6 +134,29 @@ return ResultUtil.runErr(); } } + + @ResponseBody + @PostMapping("/base/course/queryCoursePackageType") + @ApiOperation(value = "获取课程类型列表", tags = {"APP-课程列表"}) + @ApiImplicitParams({ + }) + public ResultUtil<List<BaseVo>> queryCoursePackageType1() { + try { + List<TCoursePackageType> coursePackageTypes = coursePackageTypeService.list(new QueryWrapper<TCoursePackageType>().eq("state", 1)); + List<BaseVo> list = new ArrayList<>(); + coursePackageTypes.forEach(c -> { + BaseVo baseVo = new BaseVo(); + BeanUtils.copyProperties(c, baseVo); + list.add(baseVo); + }); + return ResultUtil.success(list); + } catch (Exception e) { + e.printStackTrace(); + return ResultUtil.runErr(); + } + } + + @ResponseBody @@ -211,7 +245,7 @@ } } - // 2.0 + @ResponseBody @PostMapping("/api/course/paymentCourseCouponList") @ApiOperation(value = "支付课程--完成后优惠券列表", tags = {"APP-课程列表"}) @@ -238,6 +272,47 @@ * @param response */ @ResponseBody + @PostMapping("/base/course/weChatPaymentCourseCallback1") + public void weChatPaymentCourseCallback1(HttpServletRequest request, HttpServletResponse response) { + try { + System.err.println("微信回调"); + System.err.println("请求" + request); + BufferedReader reader = request.getReader(); + String string1 = reader.toString(); + System.err.println("请求reader" + string1); + StringBuilder requestBody = new StringBuilder(); + String line; + while ((line = reader.readLine()) != null) { + requestBody.append(line); + } + System.err.println("全部请求体" + requestBody); + JSONObject jsonObject = JSONObject.parseObject(requestBody.toString()); + JSONObject resource = jsonObject.getJSONObject("resource"); + + AesUtil aesUtil = new AesUtil(WxV3PayConfig.apiV3Key.getBytes(StandardCharsets.UTF_8)); + String decryptedData = aesUtil.decryptToString(resource.getString("associated_data").getBytes(StandardCharsets.UTF_8), resource.getString("nonce").getBytes(StandardCharsets.UTF_8), + resource.getString("ciphertext")); + System.err.println("微信解密的字符串信息" + decryptedData); + JSONObject jsonInfo = (JSONObject) JSONObject.parse(decryptedData); + String code = jsonInfo.getString("out_trade_no"); + String transaction_id = jsonInfo.getString("transaction_id"); + String trade_state = jsonInfo.getString("trade_state"); + String attach = jsonInfo.getString("attach"); + if (trade_state.equals("SUCCESS")) { + + ResultUtil resultUtil = coursePackageService.paymentCourseCallback(code, transaction_id, attach); + if (resultUtil.getCode() == 200) { + PrintWriter out = response.getWriter(); + out.write("SUCCESS"); + out.flush(); + out.close(); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + @ResponseBody @PostMapping("/base/course/weChatPaymentCourseCallback") public void weChatPaymentCourseCallback(HttpServletRequest request, HttpServletResponse response) { try { @@ -260,7 +335,6 @@ e.printStackTrace(); } } - /** * 购买课程支付宝回调 @@ -289,7 +363,6 @@ e.printStackTrace(); } } - /** * 根据id获取课程数据 @@ -431,10 +504,12 @@ public List<String> queryPackageById(@RequestBody Integer coursePackageId) { ArrayList<String> strings = new ArrayList<>(); TCoursePackage byId = coursePackageService.getById(coursePackageId); + if(null == byId){ + return null; + } Integer coursePackageTypeId = byId.getCoursePackageTypeId(); strings.add(coursePackageTypeService.getById(coursePackageTypeId).getName()); strings.add(byId.getName()); - return strings; } @@ -497,14 +572,12 @@ @PostMapping("/course/auditDiscount") public Boolean auditDiscount(@RequestBody AuditDiscount auditDiscount) { - List<TCoursePackageDiscount> list = discountService.list(new LambdaQueryWrapper<TCoursePackageDiscount>() .eq(TCoursePackageDiscount::getCoursePackageId, auditDiscount.getId())); for (TCoursePackageDiscount tCoursePackageDiscount : list) { tCoursePackageDiscount.setAuditStatus(auditDiscount.getType()); tCoursePackageDiscount.setAuditRemark(auditDiscount.getText()); } - return discountService.updateBatchById(list); } @@ -522,8 +595,6 @@ selectDto.setValue(String.valueOf(coursePackagePaymentConfig.getClassHours())); integerList.add(selectDto); } - - return integerList; } @@ -534,25 +605,32 @@ List<Integer> ids = queryDataFee.getIds(); if (ids.size() == 0) { ids.add(-1); + }else{ + List<TCoursePackage> list = coursePackageService.list(new QueryWrapper<TCoursePackage>().in("storeId", ids) + .ne("status", 4).eq("auditStatus", 2).eq("state", 1)); + ids = list.stream().map(TCoursePackage::getId).collect(Collectors.toList()); + if(ids.size() == 0){ + ids.add(-1); + } } - LambdaQueryWrapper<TCoursePackagePayment> wrapper = new LambdaQueryWrapper<>(); + LambdaQueryWrapper<CoursePackageOrder> wrapper = new LambdaQueryWrapper<>(); if (ToolUtil.isNotEmpty(data)) { String stime = data.split(" - ")[0] + " 00:00:00"; String etime = data.split(" - ")[1] + " 23:59:59"; - wrapper.between(TCoursePackagePayment::getInsertTime, stime, etime); + wrapper.between(CoursePackageOrder::getInsertTime, stime, etime); } - wrapper.in(TCoursePackagePayment::getAppUserId, ids); - wrapper.eq(TCoursePackagePayment::getPayStatus, 2); + wrapper.in(CoursePackageOrder::getCoursePackageId, ids); + wrapper.eq(CoursePackageOrder::getPayStatus, 2); ArrayList<Integer> objects = new ArrayList<>(); objects.add(1); objects.add(2); objects.add(5); objects.add(6); - wrapper.in(TCoursePackagePayment::getPayType, objects); - List<TCoursePackagePayment> list = coursePackagePaymentService.list(wrapper); - double v = list.stream().map(TCoursePackagePayment::getCashPayment).reduce(BigDecimal.ZERO, BigDecimal::add).doubleValue(); - List<Integer> collect = list.stream().map(TCoursePackagePayment::getCoursePackageId).collect(Collectors.toList()); + wrapper.in(CoursePackageOrder::getPayType, objects); + List<CoursePackageOrder> list = coursePackageOrderService.list(wrapper); + double v = list.stream().map(CoursePackageOrder::getCashPayment).reduce(BigDecimal.ZERO, BigDecimal::add).doubleValue(); + List<Integer> collect = list.stream().map(CoursePackageOrder::getCoursePackageId).collect(Collectors.toList()); if (collect.size() == 0) { collect.add(-1); } @@ -561,7 +639,7 @@ // 课类型 List<TCoursePackageType> list1 = coursePackageTypeService.list(); - for (TCoursePackagePayment tCoursePackagePayment : list) { + for (CoursePackageOrder tCoursePackagePayment : list) { for (TCoursePackage tCoursePackage : list2) { if (tCoursePackagePayment.getCoursePackageId().equals(tCoursePackage.getId())) { tCoursePackagePayment.setType(tCoursePackage.getCoursePackageTypeId()); @@ -575,7 +653,7 @@ HashMap<String, Object> objectObjectHashMap = new HashMap<>(); objectObjectHashMap.put("name", tCoursePackageType.getName()); double a = 0; - for (TCoursePackagePayment tCoursePackagePayment : list) { + for (CoursePackageOrder tCoursePackagePayment : list) { if (tCoursePackagePayment.getType().equals(tCoursePackageType.getId())) { a += tCoursePackagePayment.getCashPayment().doubleValue(); } @@ -590,4 +668,53 @@ return map1; } + + + /** + * 课包支付成功后排课操作 + * @param addCoursePackageOrderStudent + */ + @PostMapping("/course/addCoursePackageOrderStudent") + public void addCoursePackageOrderStudent(@RequestBody AddCoursePackageOrderStudent addCoursePackageOrderStudent){ + coursePackageService.addCoursePackageOrderStudent(addCoursePackageOrderStudent.getCoursePackageOrderId(), addCoursePackageOrderStudent.getCoursePackagePaymentConfig()); + } + + + /** + * 根据code获取待支付数据 + * @param code + * @return + */ + @PostMapping("/course/getCoursePackageOrderByCode") + public CoursePackageOrder getCoursePackageOrderByCode(@RequestBody String code){ + CoursePackageOrder coursePackageOrder = coursePackageOrderService.getOne(new QueryWrapper<CoursePackageOrder>() + .eq("code", code).eq("state", 1)); + return coursePackageOrder; + } + + + /** + * 修改数据 + * @param coursePackageOrder + */ + @PostMapping("/course/updateCoursePackageOrder") + public void updateCoursePackageOrder(@RequestBody CoursePackageOrder coursePackageOrder){ + coursePackageOrder.setAppUserId(null); + coursePackageOrderService.updateById(coursePackageOrder); + } + + + /** + * 获取课包配置 + * @param getCoursePackagePaymentConfig + * @return + */ + @PostMapping("/course/getCoursePackagePaymentConfig") + public CoursePackagePaymentConfig getCoursePackagePaymentConfig(@RequestBody GetCoursePackagePaymentConfig getCoursePackagePaymentConfig){ + CoursePackagePaymentConfig coursePackagePaymentConfig = coursePackagePaymentConfigService.getOne(new QueryWrapper<CoursePackagePaymentConfig>() + .eq("coursePackageId", getCoursePackagePaymentConfig.getCoursePackageId()) + .eq("classHours", getCoursePackagePaymentConfig.getClassHours()) + ); + return coursePackagePaymentConfig; + } } -- Gitblit v1.7.1