From df4733091b30b0434a04dacd0e844663114d4cfe Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期三, 09 七月 2025 17:51:56 +0800 Subject: [PATCH] 修改支付宝支付和bug修改 --- cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java | 338 +++++++++++++++++++++++++++++++------------------------- 1 files changed, 187 insertions(+), 151 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 75b2215..b6210d4 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 @@ -6,7 +6,11 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alipay.api.AlipayApiException; +import com.alipay.api.AlipayClient; +import com.alipay.api.DefaultAlipayClient; import com.alipay.api.domain.Person; +import com.alipay.api.request.AlipayTradeOrderSettleRequest; +import com.alipay.api.response.AlipayTradeOrderSettleResponse; import com.alipay.api.response.AlipayTradeQueryResponse; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -33,6 +37,7 @@ import com.dsh.course.model.vo.response.*; import com.dsh.course.service.*; import com.dsh.course.util.*; +import com.dsh.course.util.wx.WxV3PayConfig; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.beans.factory.annotation.Autowired; @@ -47,6 +52,7 @@ import javax.annotation.Resource; import javax.persistence.criteria.CriteriaBuilder; import java.math.BigDecimal; +import java.math.BigInteger; import java.math.MathContext; import java.math.RoundingMode; import java.text.ParseException; @@ -125,11 +131,6 @@ private StudentHonorClient studentHonorClient; - - - - - @Override public List<CoursePackagePaymentVO> listAll(CoursePackagePaymentQuery query) { return cpConfigMapper.listAll(query); @@ -162,20 +163,20 @@ String cityCode = studentQeryDto.getCityCode(); //获取用户数据 List<Integer> appUserIds = null; - if(ToolUtil.isNotEmpty(cityCode)){ + if (ToolUtil.isNotEmpty(cityCode)) { List<AppUser> appUsers = appuClient.queryAppUserByCityCode(cityCode); - if(appUsers.size() > 0){ + 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){ + if (null != appUserIds) { status.in("appUserId", appUserIds); } - List<Map<String, Object>> maps = this.baseMapper.getStudentTotal(appUserIds, studentQeryDto.getStart(), studentQeryDto.getEnd()); + List<Map<String, Object>> maps = this.baseMapper.getStudentTotal(appUserIds, studentQeryDto.getStart(), studentQeryDto.getEnd(), studentQeryDto.getCoursePackageIds()); List<Map<String, Object>> list = new ArrayList<>(); for (Map<String, Object> objectMap : maps) { - if(null == objectMap.get("studentId")){ + if (null == objectMap.get("studentId")) { continue; } Integer studentId = Integer.valueOf(objectMap.get("studentId").toString()); @@ -184,12 +185,12 @@ Integer number = Integer.valueOf(objectMap.get("number").toString()); Map<String, Object> map = new HashMap<>(); Student student = studentClient.queryStudentById(studentId); - if(null == student){ + if (null == student) { continue; } map.put("studentName", student.getName()); AppUser appUser = appuClient.queryAppUser(appUserId); - if(null == appUser){ + if (null == appUser) { continue; } map.put("province", appUser.getProvince()); @@ -204,7 +205,7 @@ .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){ + if (null != coursePackageOrder && coursePackageOrder.getClassHours() > 0) { cashPayment = coursePackageOrder.getCashPayment().divide(new BigDecimal(coursePackageOrder.getClassHours()), new MathContext(2, RoundingMode.HALF_EVEN)).doubleValue(); } map.put("cashPayment", cashPayment * number); @@ -240,7 +241,7 @@ for (CoursePackageOrder coursePackageOrder : list) { p = p.add(coursePackageOrder.getCashPayment()); } - if(list.size() > 0){ + if (list.size() > 0) { cashPayment = p.divide(new BigDecimal(list.size()), new MathContext(2, RoundingMode.HALF_EVEN)).doubleValue(); } map.put("cashPayment", cashPayment * number); @@ -429,7 +430,6 @@ TCoursePackage coursePackage = tcpmapper.selectById(tCoursePackagePayment.getCoursePackageId()); Store store = stoClient.queryStoreById(coursePackage.getStoreId()); RegisterCourseVo registerCourseVo = new RegisterCourseVo(); - // 2.0 registerCourseVo.setType(coursePackage.getType()); registerCourseVo.setOrderId(tCoursePackagePayment.getOrderId().longValue()); @@ -439,8 +439,6 @@ registerCourseVo.setPackageImg(coursePackage.getCoverDrawing()); String storeAndCourse = coursePackage.getName() + "(" + store.getName() + ")"; registerCourseVo.setCourseNameStore(storeAndCourse); -// registerCourseVo.setCourseTime(coursePackage.getClassStartTime()+"-"+coursePackage.getClassEndTime()); - // 2.0 registerCourseVo.setCourseTime(new SimpleDateFormat("yyyy-MM-dd").format(tCoursePackagePayment.getInsertTime())); Coach coach = coachClient.queryCoachById(coursePackage.getCoachId()); registerCourseVo.setCourseTeacher(ToolUtil.isEmpty(coach) ? "" : coach.getName()); @@ -529,14 +527,12 @@ private ALiSendSms aLiSendSms; - - @Override public CourseDetailsResponse queryRegisteredCourseDetails(Long coursePayId, Integer appUserId, String lon, String lat) { AppUser appUser = appuClient.queryAppUser(appUserId); CourseDetailsResponse response = new CourseDetailsResponse(); CoursePackageOrder coursePackageOrder = coursePackageOrderService.getById(coursePayId); - if (coursePackageOrder==null){ + if (coursePackageOrder == null) { // student = coursePackageStudentService.getById(coursePayId); CoursePackageOrderStudent student = coursePackageOrderStudentService.getById(coursePayId); @@ -596,7 +592,7 @@ response.setIntroduceDrawing(coursePackage.getIntroduceDrawing()); Integer payType = coursePackageOrder.getPayType(); - if(null == payType){ + 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; @@ -637,7 +633,7 @@ response.setVipAmount(discountMember); break; case 2: - if (playPaiCoin!=null) { + if (playPaiCoin != null) { response.setWpGold(playPaiCoin); } break; @@ -796,11 +792,13 @@ @Override public ResultUtil ContinuationOrpaymentCourse(Integer userId, ClasspaymentRequest request) { + System.err.println("请求参数" + request); AppUser appUser = appuClient.queryAppUser(userId); CoursePackageOrder coursePackageOrder = coursePackageOrderService.getById(request.getCoursePayId()); + System.err.println("上次支付记录" + coursePackageOrder); String code = ""; - BigDecimal money = coursePackageOrder.getCashPayment(); - Integer wpGold = coursePackageOrder.getPlayPaiCoin(); + BigDecimal money = BigDecimal.valueOf(request.getCash()); + Integer wpGold = request.getPlayPaiCoin(); if (coursePackageOrder.getPayStatus() == 1) { code = coursePackageOrder.getCode(); coursePackageOrder.setPayType(request.getPayType()); @@ -813,11 +811,13 @@ CoursePackagePaymentConfig paymentConfig = cpConfigMapper.selectOne(new QueryWrapper<CoursePackagePaymentConfig>() .eq("coursePackageId", request.getLessonId()) .eq("classHours", request.getCourseHoursNum())); + System.err.println("价格配置" + paymentConfig); TCoursePackageDiscount coursePackageDiscount = tcpdMapper.selectOne(new QueryWrapper<TCoursePackageDiscount>() .eq("coursePackageId", request.getLessonId()) .eq("type", 2) .eq("auditStatus", 1) .eq("coursePackagePaymentConfigId", paymentConfig.getCoursePackageId())); + System.err.println("折扣" + coursePackageDiscount); if (ToolUtil.isNotEmpty(coursePackageDiscount)) { String content = coursePackageDiscount.getContent(); JSONObject jsonObject = JSON.parseObject(content); @@ -835,7 +835,7 @@ newPayment.setAppUserId(appUser.getId()); newPayment.setStudentIds(request.getStuId().toString()); newPayment.setCoursePackageId(request.getLessonId()); - newPayment.setClassHours(coursePackageOrder.getClassHours()); + newPayment.setClassHours(request.getCourseHoursNum()); newPayment.setOriginalPrice(coursePackageOrder.getOriginalPrice()); if (request.getUseConpon() == 1) { newPayment.setUserCouponId(Long.valueOf(request.getUseConpon())); @@ -846,35 +846,47 @@ newPayment.setPayType(request.getPayType()); newPayment.setState(1); newPayment.setInsertTime(new Date()); + if (request.getCash() != null && request.getCash() != 0) { + newPayment.setCashPayment(BigDecimal.valueOf(request.getCash())); + } + newPayment.setPlayPaiCoin(request.getPlayPaiCoin()); + newPayment.setOrderType(1); + newPayment.setUserCouponId(request.getConponId()); coursePackageOrderService.save(newPayment); code = newPayment.getCode(); } + System.err.println("选择"); switch (request.getPayType()) { case 1: if (request.getUseConpon() == 1) { - Coupon coupon = client.queryCouponById(request.getConponId()); - if (coupon.getType() == 1) { - Map<String, Object> couponRules = client.getCouponRules(coupon.getId()); - Double conditionalAmount = (Double) couponRules.get("conditionalAmount"); - Double deductionAmount = (Double) couponRules.get("deductionAmount"); - if (money.compareTo(BigDecimal.valueOf(conditionalAmount)) >= 0) { - money = BigDecimal.valueOf(deductionAmount); - } - } - if (coupon.getType() == 2) { - Map<String, Object> couponRules = client.getCouponRules(coupon.getId()); - Object amount = couponRules.get("deductionAmount"); - money = BigDecimal.valueOf((Double) amount); - } + Integer coupon1 = client.queryUserCouponById(request.getConponId()); + System.err.println("优惠券id" + coupon1); + Coupon coupon = client.queryCouponById(coupon1); + System.err.println("优惠券信息" + coupon); +// if (coupon.getType() == 1) { +// Map<String, Object> couponRules = client.getCouponRules(coupon.getId()); +// Double conditionalAmount = (Double) couponRules.get("conditionalAmount"); +// Double deductionAmount = (Double) couponRules.get("deductionAmount"); +// if (money.compareTo(BigDecimal.valueOf(conditionalAmount)) >= 0) { +// money = BigDecimal.valueOf(deductionAmount); +// } +// } +// if (coupon.getType() == 2) { +// Map<String, Object> couponRules = client.getCouponRules(coupon.getId()); +// System.err.println("优惠券规则"+couponRules); +// Object amount = couponRules.get("conditionalAmount"); +// money = BigDecimal.valueOf((Double) amount); +// } } try { - return WeChatPayment(code, money); + return WeChatPayment(code, money, request.getLessonId()); } catch (Exception e) { return ResultUtil.runErr(); } case 2: if (request.getUseConpon() == 1) { - Coupon coupon = client.queryCouponById(request.getConponId()); + Integer coupon1 = client.queryUserCouponById(request.getConponId()); + Coupon coupon = client.queryCouponById(coupon1); if (coupon.getType() == 1) { Map<String, Object> couponRules = client.getCouponRules(coupon.getId()); Double conditionalAmount = (Double) couponRules.get("conditionalAmount"); @@ -889,8 +901,10 @@ money = BigDecimal.valueOf((Double) amount); } } + return AlipayPayment(code, money); case 3: + System.err.println("选择"); PlaypaiGoldPayment(appUser, code, wpGold); break; default: @@ -899,95 +913,71 @@ return ResultUtil.success(); } - - public ResultUtil WeChatPayment(String code, BigDecimal request) throws Exception { - 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() { - try { - int num = 1; - int wait = 0; - while (num <= 10) { - int min = 5000; - wait += (min * num); - Thread.sleep(wait); - 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(finalCode, ""); - if (resultUtil.getCode() == 200 && coursePackageOrder1.getPayStatus() == 1) { - /** - * SUCCESS—支付成功, - * REFUND—转入退款, - * NOTPAY—未支付, - * CLOSED—已关闭, - * REVOKED—已撤销(刷卡支付), - * USERPAYING--用户支付中, - * PAYERROR--支付失败(其他原因,如银行返回失败) - */ - Map<String, String> data1 = resultUtil.getData(); - 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) { - //有待支付的订单,这里不处理 -// coursePackageOrder1.setState(3); -// coursePackageOrderService.updateById(coursePackageOrder1); - break; - } - if ("SUCCESS".equals(s)) { - 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)) { - num++; - } - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } - }).start(); + public ResultUtil WeChatPayment(String code, BigDecimal request, Integer coursePackageId) throws Exception { + System.err.println("code-------------" + code); + System.err.println("request---------------" + request); + System.err.println("coursePackageId-------------" + coursePackageId); + TCoursePackage byId = coursePackageService.getById(coursePackageId); + System.err.println("课包" + coursePackageId); + Integer storeId = byId.getStoreId(); + Store store = storeClient.queryStoreById(storeId); + System.err.println("门店查询" + store); + if (store.getOperatorId() == null || store.getOperatorId() == 0) { + ResultUtil weixinpay = payMoneyUtil.weixinpay("课包续费", "", code, request.toString(), + "/base/coursePackage/wechatRegisteredCoursesCallback", "APP", ""); + return weixinpay; + } else { + String s = storeClient.getmerchantNumberByOperatorId(store.getOperatorId()); + System.err.println("微信商户号" + s); + if (!StringUtils.hasLength(s)) { + return ResultUtil.error("运营商未配置微信商户号,获取支付失败!"); + } + return payMoneyUtil.weixinpayV3(s, "课包续费", code, + "/base/coursePackage/wechatRegisteredCoursesCallback1", request.toString(), ""); } - return weixinpay; } + private String smid = "2088330203191220";//平台支付宝商户号 + // public static void main(String[] args) { +// BigDecimal bigDecimal = new BigDecimal("100"); +// +// +// String s = "1"; +// double v = Double.parseDouble(s); +// double v1 = v * 0.01; +// +// BigDecimal bigDecimal1 = new BigDecimal(String.valueOf(v1)); +// BigDecimal multiply = bigDecimal1.multiply(bigDecimal); +// System.err.println(v); +// System.err.println(v1); +// System.err.println(multiply); +// } public ResultUtil AlipayPayment(String code, BigDecimal request) { + // 二级商户商户号 + String smidUser; TCoursePackagePaymentMapper baseMapper1 = this.baseMapper; 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 ){ + String smid1 = ""; + if (store.getOperatorId() == null) { smid1 = smid; - }else if (store.getOperatorId() == 0){ + } else if (store.getOperatorId() == 0) { smid1 = smid; - }else{ - smid1 = storeClient.getSMIDByOperatorId(store.getOperatorId()); + } else { + smid1 = storeClient.getmerchantNumberAliByOperatorId(store.getOperatorId()); } - ResultUtil alipay = payMoneyUtil.alipay(smid1,"课包购买", "课包购买", "", code, request.toString(), + if (!StringUtils.hasLength(smid1)) { + return ResultUtil.error("运营商未配置支付宝商户号,获取支付失败!"); + } + ResultUtil alipay = payMoneyUtil.alipay(smid1, "课包购买", "课包购买", "", code, request.toString(), "/base/coursePackage/alipayRegisteredCoursesCallback"); if (alipay.getCode() == 200) { String finalCode = code; + String finalSmid = smid1; new Thread(new Runnable() { @Override public void run() { @@ -1025,19 +1015,8 @@ 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()); - } + Thread.sleep(30000); + payMoneyUtil.confirm(finalSmid, code, tradeNo, request.toString()); break; } if ("WAIT_BUYER_PAY".equals(s)) { @@ -1054,18 +1033,79 @@ return alipay; } + private void extracted(Store store, CoursePackageOrder coursePackageOrder1, String tradeNo) throws Exception { + // 分账 + AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", + "2021004105665036", + "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCi5i9nW/hGLJ3A06cZxTQdviFC7THpdSihoTYGLr9q006hu0V26ecBMY/o4w5bvIX0Ok/yofmZsVcCJpAPvbXL/uqVrIjnRRxXiaeBFThlxoBUTdunvbUSDYfzlEhJr5NvUKI6H6lz2niXlQGx4qy8Hau4ccWit9kM8jwUvsBVQoFgJA+xrjMvooA7YLopQtpOD+UJr5thApTSf1xrnr1W12yolTLEH15JmNV372cqXrYUuqnY0QsaPtxeqJUGAOcGdVLllQ7easEznP8DFBvDdHATcmp2SHNQDUEWN6MCVPbMgY06NQVqAXxqjTAYSVh+6TRu6bofPmpYC3TZB003AgMBAAECggEBAJAcR2+PA3NBYUYHeFrqBRMS8uX8ZR19kjZ7IgoSLTFaQsP9opRylPSPXhrPVBKAE5leRQAHn4MCSlESwHvMfxo7KFjFTFAc6dffZZpipYQUOc9bGampwJh58/3e/pyBgVMG6J23CPf/HJQtNFSkjd/V9+ayb/9l2dUEL3bC0fAZ/dbx8HsxdLw8wn3fLlWLj68hOMqa2deCZe3JdSVsPbeWqkh56FFsMLug0Nd+Ar4TgRl9/jnhXF0JWiD0LmPUYLhboY7EfUBzN4w1iYbDi1P+3zvoOYsiVKAXox9GMhQ2VzOO2UcSTuizSza2e98mGpabl/GpKmCz+RDFjtkX6eECgYEA2MyCij65eO3aGIm3FUe93DULRBYTfX8qJQSJq2WOWA3mmQlEW6L3O2B5/lG2h+8WmN6iLEs9eHpgycGYp7vAqgrANEn16ACVcuyx0scFtrZfZ+kmHMzFfiUWxJjVYk/6YngsGVBLdw6ueM42C8TTP67X9tU5TdVGoGWuqEj4W98CgYEAwFqwprXOch5Pqk/RPbb49r0Ou03K/UbciWnWWKzUhFFNS8MdlQPoDvQZbMwHLeWsa2VhaKITK3x5biLQb3U+0GLOn6lTvEyrEUH+ucREyLgVYTRAvwBPtnvlrzpyxPk2HnslQjju8WrvvLLBMKWUjlTrTOzhaHT21gz3pHMiOakCgYEAhLmfaXdBITGshb054sNLDtdCkGpbgEcrzAHdLps769iGxkYQHXHFngpQZUwtTUcoNGqIKknd1jZFrv7gsD+XkgKG7PwimehRlkwmCX5ilxtLiVgJRzRt6+5U5AMVD90a0tHzXYP0z2yjj73fBJF5KtGl0a10KZxaYrQdm1UhB00CgYBZZgzx/k9rtHC8LAqIj1CYhHejT92G53c6Gkl3vyOqN4sgKhfGmSEySfrDGPRBPZxr8ZtbIPCd5mUdberH0osWGMYFaJI1UsCy7aQwvGpniz7MhZeN7dweaOjwDs8mgtjHQ96mL4XGCDhR0BZ/wIURvZ/6iaGdhbbu9unlsWj3uQKBgQCmZYdsbbZkd3ev6f8rwyvMz+DrCQyYpY44cegBYuJgrZiQnL2fJioeN7ixX0UM48SfwsZEIrzshP/LGAwnc2MdjxKUl4jLN8SEe0NAjXOnz9Zaw740+aOmLpXcLWdP4uM2gIhWsvW1tEkQZCXmm7c9s/RsU8Pmzv+YL3+fSijOzA==", + "json", "GBK", + "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB", + "RSA2"); + AlipayTradeOrderSettleRequest request = new AlipayTradeOrderSettleRequest(); + String randomCode = UUIDUtil.getRandomCode(16); + String proportionByOperatorId = storeClient.getProportionByOperatorId(store.getOperatorId()); + // 支付宝分账比例 + String s1 = proportionByOperatorId.split(",")[1]; + double i = Double.parseDouble(s1); + double v = i * 0.01; + BigDecimal bigDecimal1 = new BigDecimal(String.valueOf(v)); + BigDecimal cashPayment = coursePackageOrder1.getCashPayment(); + // 分账金额 + BigDecimal bigDecimal2 = cashPayment.multiply(bigDecimal1).setScale(2, RoundingMode.DOWN); + request.setBizContent("{" + + " \"out_request_no\":\"" + randomCode + "\"," + + " \"trade_no\":\"" + tradeNo + "\"," + + " \"royalty_parameters\":[" + + " {" + + " \"royalty_type\":\"transfer\"," + + " \"trans_out\":\"" + storeClient.getSMIDByOperatorId(store.getOperatorId()) + "\"," + + " \"trans_out_type\":\"userId\"," + + " \"trans_in_type\":\"userId\"," + + " \"trans_in\":\"" + smid + "\"," + + " \"amount\":" + bigDecimal2 + "," + + " \"desc\":\"平台服务费\"," + + " \"royalty_scene\":\"平台服务费\"," + + " }" + + " ]," + + " \"extend_params\":{" + + " \"royalty_finish\":\"true\"" + + " }," + + " \"royalty_mode\":\"async\"" + + "}"); + AlipayTradeOrderSettleResponse response = alipayClient.execute(request); + if (response.isSuccess()) { + System.out.println("调用成功"); + } else { + System.out.println("调用失败"); + } + } + public ResultUtil PlaypaiGoldPayment(AppUser appUser, String code, Integer wpGold) { - TCoursePackagePayment packagePayment = this.baseMapper.selectOne(new QueryWrapper<TCoursePackagePayment>() + System.err.println("进入玩湃支付"); + CoursePackageOrder packagePayment = coursePackageOrderService.getOne(new QueryWrapper<CoursePackageOrder>() .eq("code", code)); + System.err.println("支付" + packagePayment); + System.err.println("用户信息" + appUser); + System.err.println("code" + code); + System.err.println("wpGold" + wpGold); if (appUser.getPlayPaiCoins() < wpGold) { return ResultUtil.error("玩湃币不足!"); } packagePayment.setPayStatus(2); packagePayment.setPayUserId(appUser.getId()); packagePayment.setPlayPaiCoin(wpGold); - this.baseMapper.updateById(packagePayment); + System.err.println("扣去玩湃币"); + try { + System.err.println("修改"); + boolean b = coursePackageOrderService.updateById(packagePayment); + } catch (Exception e) { + System.err.println("报错" + e.getCause()); + System.err.println("报错" + e.getMessage()); + e.printStackTrace(); + } appUser.setPlayPaiCoins(ToolUtil.isNotEmpty(appUser.getPlayPaiCoins()) ? appUser.getPlayPaiCoins() - wpGold : wpGold); + appuClient.updateAppUser(appUser); return ResultUtil.success(); } @@ -1162,8 +1202,7 @@ } else if (start.after(new Date())) { //待上课 recordVo.setStatus(1); - } - else { + } else { CancelledClasses cancelledClasses = cacMapper.selectOne(new QueryWrapper<CancelledClasses>() .eq("coursePackageSchedulingId", byId.getId()).last("limit 1")); if (ToolUtil.isNotEmpty(cancelledClasses)) { @@ -1198,7 +1237,7 @@ } public List<Integer> getIds(Integer siteId) { - HttpRequest httpRequest = HttpRequest.get("https://try.daowepark.com/v7/user_api/general/get_space_area?space_id=" + siteId); + HttpRequest httpRequest = HttpRequest.get("https://port.daowepark.com/v7/user_api/general/get_space_area?space_id=" + siteId); HttpResponse execute = httpRequest.execute(); String body = execute.body(); JSONObject jsonObject = JSONObject.parseObject(body); @@ -1216,7 +1255,7 @@ } @Override - public ResultUtil insertVipPaymentCallback(String code, String orderNumber) { + public ResultUtil insertVipPaymentCallback(String code, String orderNumber) throws Exception { CoursePackageOrder coursePackageOrder1 = coursePackageOrderService.getOne(new QueryWrapper<CoursePackageOrder>() .eq("code", code).eq("state", 1)); if (coursePackageOrder1.getPayStatus() == 2) { @@ -1228,15 +1267,15 @@ coursePackageOrderService.updateById(coursePackageOrder1); CoursePackagePaymentConfig coursePackagePaymentConfig = coursePackagePaymentConfigService.getOne(new QueryWrapper<CoursePackagePaymentConfig>() - .eq("coursePackageId", coursePackageOrder1.getId()) + .eq("coursePackageId", coursePackageOrder1.getCoursePackageId()) .eq("classHours", coursePackageOrder1.getClassHours()) ); coursePackageService.addCoursePackageOrderStudent(coursePackageOrder1.getId(), coursePackagePaymentConfig); - try { - coursePackageService.moneyOut(orderNumber,orderNumber,code); - } catch (AlipayApiException e) { - e.printStackTrace(); - } + TCoursePackage byId = coursePackageService.getById(coursePackageOrder1.getCoursePackageId()); + Integer storeId = byId.getStoreId(); + Store store = storeClient.queryStoreById(storeId); + + return ResultUtil.success(); } @@ -1276,22 +1315,22 @@ List<Map<String, Object>> list = new ArrayList<>(); - if (coursePackage.getType()==1){ - list = this.baseMapper.queryRegistrationRecord(page, coursePackageId, userIds, studentIds); - }else { + if (coursePackage.getType() == 1) { + 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)); + 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()); Integer studentId = 0; - if (coursePackage.getType()==1) { + if (coursePackage.getType() == 1) { studentId = Integer.valueOf(map.get("studentId").toString()); - }else { + } else { studentId = Integer.valueOf(map.get("studentIds").toString().split(",")[0]); } @@ -1303,7 +1342,7 @@ 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)); + int count = coursePackageStudentService.count(new QueryWrapper<CoursePackageStudent>().eq("coursePackageId", coursePackageId).eq("studentId", studentId).eq("signInOrNot", 2)); map.put("absencesNumber", count); @@ -1469,9 +1508,6 @@ @Autowired private TCoursePackageService packageService; - - @Autowired - private TCoursePackagePaymentService packagePaymentService; @Autowired private CoursePackageStudentService coursePackageStudentService; @@ -1502,12 +1538,12 @@ //需要购买使用的课时数 Integer num = req.getNum(); //需要删除多余的排课记录 - if(num.compareTo(laveClassHours1) > 0){ + if (num.compareTo(laveClassHours1) > 0) { //课时数差额 int number1 = num - laveClassHours1; double o = number1 % coursePackage.getNeedNum(); int l = 0; - if(0 != o){ + if (0 != o) { l = 1; } int n = Double.valueOf(number1 / coursePackage.getNeedNum()).intValue() + l; @@ -1563,7 +1599,7 @@ coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours() - req.getNum()); coursePackageOrderStudentService.updateById(coursePackageOrderStudent); Integer laveClassHours = coursePackageOrderStudent.getLaveClassHours(); - if(3 >= laveClassHours){ + if (3 >= laveClassHours) { AppUser appUser = appuClient.queryAppUser(coursePackageOrderStudent.getAppUserId()); //发送短信提醒 aLiSendSms.sendSms(appUser.getPhone(), "SMS_463646317", ""); -- Gitblit v1.7.1