From 1d9f7b0cf4251f3058badb07dd7a2bc06b6bc09a Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期五, 11 四月 2025 10:05:32 +0800 Subject: [PATCH] bug修改 --- cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java | 377 ++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 258 insertions(+), 119 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 5f7274c..121df37 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,7 +5,12 @@ import com.alibaba.fastjson.JSON; 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; @@ -15,10 +20,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; @@ -49,6 +51,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; @@ -123,6 +126,14 @@ @Resource private UserIntegralChangesClient userIntegralChangesClient; + @Resource + private StudentHonorClient studentHonorClient; + + + + + + @Override public List<CoursePackagePaymentVO> listAll(CoursePackagePaymentQuery query) { @@ -166,7 +177,7 @@ 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")){ @@ -360,6 +371,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 +382,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"; @@ -414,7 +434,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()); @@ -424,8 +443,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()); @@ -780,36 +797,37 @@ } @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) { + System.err.println("请求参数"+request); + AppUser appUser = appuClient.queryAppUser(userId); + CoursePackageOrder coursePackageOrder = coursePackageOrderService.getById(request.getCoursePayId()); + System.err.println("上次支付记录"+coursePackageOrder); String code = ""; - BigDecimal money = tCoursePackagePayment.getCashPayment(); - Integer wpGold = tCoursePackagePayment.getPlayPaiCoin(); - if (tCoursePackagePayment.getPayStatus() == 1) { -// 待支付的订单 - code = tCoursePackagePayment.getCode(); - tCoursePackagePayment.setPayType(request.getPayType()); + BigDecimal money = BigDecimal.valueOf(request.getCash()); + Integer wpGold = request.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())); + 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); - if (userIdFormRedis.getIsVip() == 1) { + if (appUser.getIsVip() == 1) { Double jsonObjectDouble = jsonObject.getDouble("num1"); money = BigDecimal.valueOf(jsonObjectDouble); } else { @@ -817,55 +835,64 @@ 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(request.getCourseHoursNum()); + 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); + 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"); @@ -880,9 +907,11 @@ money = BigDecimal.valueOf((Double) amount); } } + return AlipayPayment(code, money); case 3: - PlaypaiGoldPayment(userIdFormRedis, code, wpGold); + System.err.println("选择"); + PlaypaiGoldPayment(appUser, code, wpGold); break; default: break; @@ -890,12 +919,27 @@ return ResultUtil.success(); } - - public ResultUtil WeChatPayment(String code, BigDecimal request) throws Exception { - TCoursePackagePaymentMapper baseMapper1 = this.baseMapper; - ResultUtil weixinpay = payMoneyUtil.weixinpay("课包续费", "", code, request.toString(), + 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); + // 是否分账 0否1是 + int isFenZhang= 1; + String merchantNumber = ""; + if (store.getOperatorId()==null || store.getOperatorId()==0){ + // 平台 + isFenZhang = 0; + } + System.err.println("拉起支付"); + ResultUtil weixinpay = payMoneyUtil.weixinpay("课包续费"+"-"+isFenZhang, "", code, request.toString(), "/base/coursePackage/wechatRegisteredCoursesCallback", "APP", ""); if (weixinpay.getCode() == 200) { + String finalCode = code; new Thread(new Runnable() { @Override public void run() { @@ -906,12 +950,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—转入退款, @@ -924,18 +969,28 @@ 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) { - coursePackagePayment.setState(3); - baseMapper1.deleteById(coursePackagePayment.getId()); + if ("REFUND".equals(s) || "CLOSED".equals(s) || "REVOKED".equals(s) || "PAYERROR".equals(s) || num == 10) { + //有待支付的订单,这里不处理 +// 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)) { + if ("USERPAYING".equals(s) || "NOTPAY".equals(s)) { num++; } } @@ -950,7 +1005,23 @@ } 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 获取对应的商户号 @@ -968,36 +1039,38 @@ 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)) { @@ -1009,13 +1082,17 @@ TCoursePackage byId = coursePackageService.getById(coursePackageId); Store store = storeClient.queryStoreById(byId.getStoreId()); if (store.getOperatorId() == null ){ - // 说明是平台的门店 - payMoneyUtil.confirm(smid,code,tradeNo,request.toString()); + // 说明是平台的门店 无需冻结资金 不走分账 + payMoneyUtil.confirm1(smid,code,tradeNo,request.toString()); }else if (store.getOperatorId() == 0){ - payMoneyUtil.confirm(smid,code,tradeNo,request.toString()); + // 说明是平台的门店 + payMoneyUtil.confirm1(smid,code,tradeNo,request.toString()); + // 发起分账 + extracted(store, coursePackageOrder1, tradeNo); }else{ - String smid = storeClient.getSMIDByOperatorId(store.getOperatorId()); - payMoneyUtil.confirm(smid,code,tradeNo,request.toString()); + payMoneyUtil.confirm(storeClient.getSMIDByOperatorId(store.getOperatorId()),code,tradeNo,request.toString()); + // 发起分账 + extracted(store, coursePackageOrder1, tradeNo); } break; } @@ -1033,18 +1110,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(); } @@ -1067,17 +1205,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) @@ -1114,19 +1243,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; } @@ -1136,8 +1254,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()); @@ -1164,12 +1280,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)) { @@ -1200,13 +1311,11 @@ } } -// } - return recordVoList; } 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); @@ -1224,14 +1333,47 @@ } @Override - public ResultUtil insertVipPaymentCallback(String code, String orderNumber) { - TCoursePackagePayment coursePackagePayment = this.baseMapper.getCoursePackagePaymentByCode(code); - if (coursePackagePayment.getPayStatus() != 1) { + 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) { 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.getCoursePackageId()) + .eq("classHours", coursePackageOrder1.getClassHours()) + ); + coursePackageService.addCoursePackageOrderStudent(coursePackageOrder1.getId(), coursePackagePaymentConfig); + TCoursePackage byId = coursePackageService.getById(coursePackageOrder1.getCoursePackageId()); + Integer storeId = byId.getStoreId(); + Store store = storeClient.queryStoreById(storeId); + + if (store.getOperatorId()!=null && store.getOperatorId()!=0){ + // 休眠两分钟后再调用分账接口 避免提示订单正在处理中 + Thread.sleep(120000); + // 根据运营商id获取对应运营商分账比例 返回格式: 微信分账比例,支付宝分账比例 + String proportionByOperatorId = storeClient.getProportionByOperatorId(store.getOperatorId()); + String[] split = proportionByOperatorId.split(","); + String s1 = split[0]; + if (!s1.equals("未设置")){ + BigDecimal bigDecimal = new BigDecimal(s1); + // 分账比例 + BigDecimal bigDecimal1 = bigDecimal.divide(new BigDecimal(100)).setScale(2); + // 微信商户号 + String s2 = storeClient.getmerchantNumberByOperatorId(store.getOperatorId()); + String nonce_str = UUIDUtil.getRandomCode(16); + + ResultUtil fenzhang = payMoneyUtil.fenzhang(orderNumber, coursePackageOrder1.getCashPayment().multiply(bigDecimal1), s2,nonce_str); + if (!fenzhang.getCode().equals(200)){ + System.err.println("分账失败 原因是:"+fenzhang.getData()); + } + } + } return ResultUtil.success(); } @@ -1464,9 +1606,6 @@ @Autowired private TCoursePackageService packageService; - - @Autowired - private TCoursePackagePaymentService packagePaymentService; @Autowired private CoursePackageStudentService coursePackageStudentService; -- Gitblit v1.7.1