From 9d909e5f8048b74ac56d8f853758cfccfea61759 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期二, 28 十一月 2023 15:23:55 +0800 Subject: [PATCH] 后台1 --- cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java | 309 +++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 260 insertions(+), 49 deletions(-) diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java index e5a6145..bb4fc3d 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java +++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java @@ -1,7 +1,6 @@ package com.dsh.account.service.impl; -import com.alibaba.fastjson.JSONObject; import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; import com.alipay.api.DefaultAlipayClient; @@ -19,15 +18,10 @@ import com.dsh.account.dto.*; import com.dsh.account.entity.*; import com.dsh.account.enums.RechargeRecordEnum; -import com.dsh.account.feignclient.activity.IntroduceRewardsClient; -import com.dsh.account.feignclient.activity.MerChandiseClient; -import com.dsh.account.feignclient.activity.MerChandiseStoreClient; -import com.dsh.account.feignclient.activity.UserConponClient; +import com.dsh.account.feignclient.activity.*; import com.dsh.account.feignclient.activity.model.*; import com.dsh.account.feignclient.competition.DeductionCompetitionsClient; import com.dsh.account.feignclient.competition.model.BillingDataRequestVo; -import com.dsh.account.feignclient.competition.model.PaymentCompetition; -import com.dsh.account.feignclient.competition.model.PurchaseRecordVo; import com.dsh.account.feignclient.course.CoursePackageClient; import com.dsh.account.feignclient.course.CoursePackageConfigClient; import com.dsh.account.feignclient.course.CoursePaymentClient; @@ -37,7 +31,6 @@ import com.dsh.account.feignclient.other.RechargeConfigClient; import com.dsh.account.feignclient.other.SiteClient; import com.dsh.account.feignclient.other.StoreClient; -import com.dsh.account.feignclient.other.model.SiteBooking; import com.dsh.account.feignclient.other.model.Store; import com.dsh.account.feignclient.other.model.StoreDetailOfCourse; import com.dsh.account.feignclient.other.model.TImgConfig; @@ -46,7 +39,6 @@ import com.dsh.account.model.AppUserByNameAndPhoneDTO; import com.dsh.account.model.dto.Coupon; import com.dsh.account.model.query.appUserQuery.QueryAppUser; -import com.dsh.account.model.vo.DetailsListVo; import com.dsh.account.model.vo.QueryAppUserVO; import com.dsh.account.model.vo.classDetails.CourseVenue; import com.dsh.account.model.vo.classDetails.ExerciseVideo; @@ -156,9 +148,6 @@ private CoursePackageConfigClient cpconClient; @Resource - private PayMoneyUtil payMoneyUtil; - - @Resource private SiteClient stClient; @Autowired private TAppUserMapper appUserMapper; @@ -182,6 +171,16 @@ private TAppUserService appUserService; @Resource private MerChandiseClient merChandiseClient; + + @Autowired + private PayMoneyUtil payMoneyUtil; + + @Resource + private UserCouponPaymentClient userCouponPaymentClient; + + + + // 对数据进行分页处理的方法 private static Page<Goods> getPage(List<Goods> dataList, Pageable pageable) { @@ -1281,9 +1280,6 @@ @Override @Transactional public synchronized ResultUtil productRedemptionOperation(Integer userIdFormRedis, GoodsExchangeVo exchangeType) { - System.out.println("exchangeType:--->"); - - ReturnModel returnModel = new ReturnModel(); Long returnId = null; //如果是兑换优惠卷 @@ -1295,7 +1291,7 @@ queryIds.add(coupon.getId()); queryIds.add(userIdFormRedis); Integer counts = userConponClient.queryCounts(queryIds); - if (coupon.getQuantityIssued() - counts == 0) { + if (coupon.getQuantityIssued().compareTo(counts) == 0) { return new ResultUtil(0, "当前数量不足"); } //查询该用户是否超出限领数量 @@ -1304,40 +1300,56 @@ if (usercounts == coupon.getPickUpQuantity()) { return new ResultUtil<>(0, "限领数量已达最大"); } -// userConponClient.queryCouponById(exchangeType.getGoodId()); - UserCoupon userCoupon = new UserCoupon(); - userCoupon.setCouponId(exchangeType.getGoodId()); - userCoupon.setUserId(userIdFormRedis); - userCoupon.setStatus(1); - userCoupon.setInsertTime(new Date()); - userConponClient.insertToAppuserCoupon(userCoupon); - //扣积分 - TAppUser user = appUserService.getById(userIdFormRedis); - if (user.getIntegral() < coupon.getIntegral().intValue()) { - return new ResultUtil<>(0, "当前用户积分不足"); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); + //生成支付订单 + UserCouponPayment userCouponPayment = new UserCouponPayment(); + userCouponPayment.setCouponId(exchangeType.getGoodId()); + userCouponPayment.setUserId(userIdFormRedis); + userCouponPayment.setStatus(1); + userCouponPayment.setCode(code); + userCouponPayment.setPayType(coupon.getRedemptionMethod()); + userCouponPayment.setIntegral(coupon.getIntegral().intValue()); + userCouponPayment.setCash(coupon.getCash().doubleValue()); + userCouponPayment.setCashPayType(exchangeType.getPayType()); + userCouponPayment.setInsertTime(new Date()); + + //积分兑换 + if(coupon.getRedemptionMethod() == 1){ + UserCoupon userCoupon = new UserCoupon(); + userCoupon.setCouponId(exchangeType.getGoodId()); + userCoupon.setUserId(userIdFormRedis); + userCoupon.setStatus(1); + userCoupon.setInsertTime(new Date()); + userConponClient.insertToAppuserCoupon(userCoupon); + //扣积分 + TAppUser user = appUserService.getById(userIdFormRedis); + if (user.getIntegral() < coupon.getIntegral().intValue()) { + return new ResultUtil<>(0, "当前用户积分不足"); + } + user.setIntegral(user.getIntegral() - coupon.getIntegral().intValue()); + appUserService.updateById(user); + + userCouponPayment.setStatus(2); + userCouponPayment.setPaymentTime(new Date()); + userCouponPaymentClient.addUserCouponPayment(userCouponPayment); + return ResultUtil.success(returnId); } - user.setIntegral(user.getIntegral() - coupon.getIntegral().intValue()); - appUserService.updateById(user); - - //记录 -// UserPointsMerchandise pointsMerchandise = new UserPointsMerchandise(); -// pointsMerchandise.setPointsMerchandiseId(exchangeType.getGoodId()); -// pointsMerchandise.setUserId(userIdFormRedis); -// pointsMerchandise.setStatus(1); -// pointsMerchandise.setState(1); -// pointsMerchandise.setPayStatus(1); -//// if (merchandise.getUseScope() == 3){ -//// if (exchangeType.getGoodsType() == 2){ -//// CoursePackage coursePackage = cpageClient.queryCoursePackageById(merchandise.getCoursePackageId()); -//// pointsMerchandise.setStoreId(coursePackage.getStoreId()); -//// }else { -//// pointsMerchandise.setStoreId(exchangeType.getStoreId()); -//// } -//// } -//// pointsMerchandise.setCode(code); -// returnId = mcClient.saveDetailsUserPointMercase(pointsMerchandise); - - return ResultUtil.success(returnId); + //积分+现金 + if(coupon.getRedemptionMethod() == 1){ + userCouponPaymentClient.addUserCouponPayment(userCouponPayment); + try { + if(exchangeType.getPayType() == 1){ + return weChatPaymentCoupon("购买优惠券", userCouponPayment); + } + if(exchangeType.getPayType() == 2){ + return aliPaymentCoupon("购买优惠券", userCouponPayment); + } + } catch (Exception e) { + e.printStackTrace(); + } + } } @@ -1558,6 +1570,205 @@ } + + /** + * 优惠券微信支付 + * @param body + * @param userCouponPayment + * @return + * @throws Exception + */ + public ResultUtil weChatPaymentCoupon(String body, UserCouponPayment userCouponPayment) throws Exception { + String code = userCouponPayment.getCode(); + Double cash = userCouponPayment.getCash(); + ResultUtil weixinpay = payMoneyUtil.weixinpay(body, "", code, cash.toString(), "/base/coupon/weChatPaymentCouponCallback", "APP", ""); + if (weixinpay.getCode() == 200) { + 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); + UserCouponPayment userCouponPayment1 = userCouponPaymentClient.getUserCouponPayment(code); + if (userCouponPayment1.getStatus() == 2) { + break; + } + ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryWXOrder(code, ""); + if (resultUtil.getCode() == 200 && userCouponPayment1.getStatus() == 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) { + //有待支付的订单,这里不处理 + userCouponPayment1.setStatus(-1); + userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1); + break; + } + if ("SUCCESS".equals(s)) { + userCouponPayment1.setStatus(2); + userCouponPayment1.setPaymentTime(new Date()); + userCouponPayment1.setOrderNumber(transaction_id); + userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1); + + UserCoupon userCoupon = new UserCoupon(); + userCoupon.setCouponId(userCouponPayment1.getCouponId()); + userCoupon.setUserId(userCouponPayment1.getUserId()); + userCoupon.setStatus(1); + userCoupon.setInsertTime(new Date()); + userConponClient.insertToAppuserCoupon(userCoupon); + + if(null != userCouponPayment1.getIntegral() && 0 != userCouponPayment1.getIntegral()){ + //扣积分 + TAppUser user = appUserService.getById(userCouponPayment1.getUserId()); + user.setIntegral(user.getIntegral() - userCouponPayment1.getIntegral().intValue()); + appUserService.updateById(user); + } + break; + } + if ("USERPAYING".equals(s)) { + num++; + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + }).start(); + } + return weixinpay; + } + + + /** + * 优惠券支付宝支付 + * + * @param uid + * @param paymentPrice + * @param paymentCourseVo + * @return + * @throws Exception + */ + public ResultUtil aliPaymentCoupon(String body, UserCouponPayment userCouponPayment) throws Exception { + String code = userCouponPayment.getCode(); + Double cash = userCouponPayment.getCash(); + + ResultUtil alipay = payMoneyUtil.alipay(body, body, "", code, cash.toString(), "/base/coupon/aliPaymentCouponCallback"); + if (alipay.getCode() == 200) { + 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); + UserCouponPayment userCouponPayment1 = userCouponPaymentClient.getUserCouponPayment(code); + if (userCouponPayment1.getStatus() == 2) { + break; + } + AlipayTradeQueryResponse alipayTradeQueryResponse = payMoneyUtil.queryALIOrder(code); + if (null != alipayTradeQueryResponse) { + /** + * WAIT_BUYER_PAY(交易创建,等待买家付款)、 + * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、 + * TRADE_SUCCESS(交易支付成功)、 + * TRADE_FINISHED(交易结束,不可退款) + */ + String s = alipayTradeQueryResponse.getTradeStatus(); + + String tradeNo = alipayTradeQueryResponse.getTradeNo(); + if ("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10) { + //有待支付的订单,这里不处理 + userCouponPayment1.setStatus(-1); + userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1); + break; + } + if ("TRADE_SUCCESS".equals(s)) { + userCouponPayment1.setStatus(2); + userCouponPayment1.setPaymentTime(new Date()); + userCouponPayment1.setOrderNumber(tradeNo); + userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1); + + UserCoupon userCoupon = new UserCoupon(); + userCoupon.setCouponId(userCouponPayment1.getCouponId()); + userCoupon.setUserId(userCouponPayment1.getUserId()); + userCoupon.setStatus(1); + userCoupon.setInsertTime(new Date()); + userConponClient.insertToAppuserCoupon(userCoupon); + + if(null != userCouponPayment1.getIntegral() && 0 != userCouponPayment1.getIntegral()){ + //扣积分 + TAppUser user = appUserService.getById(userCouponPayment1.getUserId()); + user.setIntegral(user.getIntegral() - userCouponPayment1.getIntegral().intValue()); + appUserService.updateById(user); + } + break; + } + if ("WAIT_BUYER_PAY".equals(s)) { + num++; + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + }).start(); + } + return alipay; + } + + /** + * 支付回调 + * @param code + * @param orderNumber + * @return + */ + @Override + public ResultUtil paymentCouponCallback(String code, String orderNumber) { + UserCouponPayment userCouponPayment1 = userCouponPaymentClient.getUserCouponPayment(code); + if (userCouponPayment1.getStatus() == 2) { + return ResultUtil.success(); + } + userCouponPayment1.setStatus(2); + userCouponPayment1.setPaymentTime(new Date()); + userCouponPayment1.setOrderNumber(orderNumber); + userCouponPaymentClient.updateUserCouponPayment(userCouponPayment1); + + UserCoupon userCoupon = new UserCoupon(); + userCoupon.setCouponId(userCouponPayment1.getCouponId()); + userCoupon.setUserId(userCouponPayment1.getUserId()); + userCoupon.setStatus(1); + userCoupon.setInsertTime(new Date()); + userConponClient.insertToAppuserCoupon(userCoupon); + + if(null != userCouponPayment1.getIntegral() && 0 != userCouponPayment1.getIntegral()){ + //扣积分 + TAppUser user = appUserService.getById(userCouponPayment1.getUserId()); + user.setIntegral(user.getIntegral() - userCouponPayment1.getIntegral().intValue()); + appUserService.updateById(user); + } + return ResultUtil.success(); + } + public boolean dealAppUserIntegral(Integer appUserId, TAppUser appUser, Integer points) { try { if (ToolUtil.isEmpty(appUser.getIntegral()) || (ToolUtil.isNotEmpty(appUser.getIntegral()) && appUser.getIntegral() < points)) { -- Gitblit v1.7.1