From 22839ef1aee121cb9b96f4db3b0930667595022f Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 03 四月 2025 10:27:19 +0800
Subject: [PATCH] 修改反馈文档bug
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java | 442 +++++++++++++++++++++++++++++++++++++------------------
1 files changed, 298 insertions(+), 144 deletions(-)
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
index 0647455..a21ace2 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
@@ -11,8 +11,10 @@
import com.ruoyi.account.api.vo.PaymentUserCoupon;
import com.ruoyi.account.api.vo.PaymentUserCouponVo;
import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.order.event.PayEvent;
import com.ruoyi.order.mapper.ShoppingCartMapper;
import com.ruoyi.order.model.Order;
import com.ruoyi.order.model.OrderBalancePayment;
@@ -30,6 +32,7 @@
import com.ruoyi.other.api.vo.GetGoodsShopByGoodsIds;
import com.ruoyi.other.api.vo.GetSeckillActivityInfo;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.ApplicationEventPublisher;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
@@ -40,6 +43,9 @@
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.*;
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@Slf4j
@@ -104,12 +110,6 @@
private CommissionService commissionService;
@Resource
- private VipSettingClient vipSettingClient;
-
- @Resource
- private UserChangeLogClient userChangeLogClient;
-
- @Resource
private PointSettingClient pointSettingClient;
@Resource
@@ -117,6 +117,9 @@
@Resource
private RedisTemplate redisTemplate;
+
+ @Resource
+ private ApplicationEventPublisher applicationEventPublisher;
@@ -141,11 +144,37 @@
throw new RuntimeException("根据类型(1=服务商品,2=单品商品)获取商品数据失败");
}
List<Integer> goodsIds = data.stream().map(Goods::getId).collect(Collectors.toList());
+ if(goodsIds.isEmpty()){
+ return new ArrayList<>();
+ }
//查询符合商品类型的商品数据
List<ShoppingCart> list = this.list(new LambdaQueryWrapper<ShoppingCart>().eq(ShoppingCart::getAppUserId, userid)
.in(ShoppingCart::getGoodsId, goodsIds).eq(ShoppingCart::getStatus, 1));
+ //删除过期的秒杀活动商品
+ List<ShoppingCart> list1 = new ArrayList<>();
+ for (ShoppingCart shoppingCart : list) {
+ if(shoppingCart.getType() == 2){
+ GetSeckillActivityInfo info = new GetSeckillActivityInfo();
+ info.setGoodsId(shoppingCart.getGoodsId());
+ info.setVip(appUser.getVipId());
+ GoodsSeckill data1 = seckillActivityInfoClient.getSeckillActivityInfo(info).getData();
+ if(null != data1){
+ SeckillActivityInfo seckillActivityInfo = seckillActivityInfoClient.getSeckillActivityInfoById(data1.getSeckillActivityInfoId()).getData();
+ if(null != seckillActivityInfo && (seckillActivityInfo.getIsShelves() == 1 &&
+ seckillActivityInfo.getStartTime().isBefore(LocalDateTime.now()) && seckillActivityInfo.getEndTime().isAfter(LocalDateTime.now()))){
+
+ list1.add(shoppingCart);
+ continue;
+ }
+ }
+ this.removeById(shoppingCart.getId());
+ }else{
+ list1.add(shoppingCart);
+ }
+ }
+
//构建返回数据
- List<MyShoppingCartVo> page = buildDetail(appUser, shopId, list, null);
+ List<MyShoppingCartVo> page = buildDetail(appUser, shopId, list1, null);
return page;
}
@@ -167,7 +196,7 @@
info.setVip(appUser.getVipId());
GoodsSeckill goodsSeckill = seckillActivityInfoClient.getSeckillActivityInfo(info).getData();
//没有秒杀活动或者添加的普通商品则不使用秒杀活动价格
- if(null == goodsSeckill || type == 1){
+ if((null == goodsSeckill || (null == goodsSeckill.getCashPayment() && null == goodsSeckill.getPointPayment())) || type == 1){
//没有秒杀价,则判断门店特价
GetGoodsBargainPrice goodsBargainPrice = new GetGoodsBargainPrice();
goodsBargainPrice.setGoodsId(goodsId);
@@ -186,17 +215,17 @@
area.setVip(appUser.getVipId());
area.setGoodsId(goodsId);
GoodsArea goodsArea = goodsAreaClient.getGoodsArea(area).getData();
- if(null == goodsArea){
+ if(null == goodsArea || (null == goodsArea.getCashPayment() && null == goodsArea.getPointPayment())){
//没有地区价格,则使用会员价格
GoodsVip goodsVip = goodsVipClient.getGoodsVip(goodsId, appUser.getVipId()).getData();
- if(null == goodsVip){
+ if(null == goodsVip || (null == goodsVip.getCashPayment() && null == goodsVip.getPointPayment())){
//没有配置价格,直接使用原始基础价格
return null;
}else{
price.setCash(goodsVip.getSellingPrice());
price.setPoint(goodsVip.getIntegral());
- price.setCashPayment(goodsVip.getCashPayment() == 1);
- price.setPointPayment(goodsVip.getPointPayment() == 1);
+ price.setCashPayment(null != goodsVip.getCashPayment() && goodsVip.getCashPayment() == 1);
+ price.setPointPayment(null != goodsVip.getPointPayment() && goodsVip.getPointPayment() == 1);
price.setEarnSpendingPoints(goodsVip.getEarnSpendingPoints());
price.setSuperiorSubcommission(goodsVip.getSuperiorSubcommission());
price.setSuperiorRebatePoints(goodsVip.getSuperiorRebatePoints());
@@ -213,8 +242,8 @@
}else{
price.setCash(goodsArea.getSellingPrice());
price.setPoint(goodsArea.getIntegral());
- price.setCashPayment(goodsArea.getCashPayment() == 1);
- price.setPointPayment(goodsArea.getPointPayment() == 1);
+ price.setCashPayment(null !=goodsArea.getCashPayment() && goodsArea.getCashPayment() == 1);
+ price.setPointPayment(null !=goodsArea.getPointPayment() && goodsArea.getPointPayment() == 1);
price.setEarnSpendingPoints(goodsArea.getEarnSpendingPoints());
price.setSuperiorSubcommission(goodsArea.getSuperiorSubcommission());
price.setSuperiorRebatePoints(goodsArea.getSuperiorRebatePoints());
@@ -281,8 +310,8 @@
if(goodsSeckill.getCashPayment() == 0 && goodsSeckill.getPointPayment() == 1){
price.setPoint(goodsSeckill.getIntegral());
}
- price.setCashPayment(goodsSeckill.getCashPayment() == 1);
- price.setPointPayment(goodsSeckill.getPointPayment() == 1);
+ price.setCashPayment(null != goodsSeckill.getCashPayment() && goodsSeckill.getCashPayment() == 1);
+ price.setPointPayment(null != goodsSeckill.getPointPayment() && goodsSeckill.getPointPayment() == 1);
price.setEndTime(goodsSeckill.getEndTime());
price.setEarnSpendingPoints(goodsSeckill.getEarnSpendingPoints());
price.setSuperiorSubcommission(goodsSeckill.getSuperiorSubcommission());
@@ -306,6 +335,29 @@
@Override
public Long addGoods(ShoppingCart shoppingCart) {
Long userid = tokenService.getLoginUserApplet().getUserid();
+ long goodsSaleNum = orderService.getGoodsSaleNum(shoppingCart.getGoodsId(), null, userid);
+ long count = count(new LambdaQueryWrapper<ShoppingCart>()
+ .eq(ShoppingCart::getGoodsId, shoppingCart.getGoodsId())
+ .eq(ShoppingCart::getStatus,1)
+ .eq(ShoppingCart::getAppUserId, userid));
+ goodsSaleNum += count;
+ Goods goods = goodsClient.getGoodsById(shoppingCart.getGoodsId()).getData();
+
+ Integer maxNum = 0;
+ if(shoppingCart.getType() == 2){
+ R<SeckillActivityInfo> r = seckillActivityInfoClient.getSeckillActivityInfoByGoodsId(shoppingCart.getGoodsId());
+ if (R.isError(r)){
+ throw new ServiceException("获取秒杀商品失败!");
+ }
+ SeckillActivityInfo seckillActivityInfo = r.getData();
+ maxNum = seckillActivityInfo.getMaxNum();
+ }else {
+ maxNum = goods.getPurchaseLimit();
+ }
+
+ if(null != goods.getPurchaseLimit() && -1 != maxNum && (goodsSaleNum + shoppingCart.getNumber()) > maxNum){
+ throw new ServiceException("超出购买数量限制");
+ }
ShoppingCart one = this.getOne(new LambdaQueryWrapper<ShoppingCart>().eq(ShoppingCart::getAppUserId, userid)
.eq(ShoppingCart::getGoodsId, shoppingCart.getGoodsId()).eq(ShoppingCart::getType, shoppingCart.getType()).eq(ShoppingCart::getStatus, 1));
if(null != one){
@@ -328,15 +380,18 @@
*/
@Override
public R setGoodsNumber(SetGoodsNumber setGoodsNumber) {
+
+ ShoppingCart shoppingCart = this.getById(setGoodsNumber.getId());
if(0 >= setGoodsNumber.getNumber()){
return R.fail("修改数量不能小于等于0");
}
- ShoppingCart shoppingCart = this.getById(setGoodsNumber.getId());
if(null != shoppingCart){
- Goods goods = goodsClient.getGoodsById(shoppingCart.getGoodsId()).getData();
- if(null != goods.getPurchaseLimit() && -1 != goods.getPurchaseLimit() && goods.getPurchaseLimit() < setGoodsNumber.getNumber()){
+ Goods goods1 = goodsClient.getGoodsById(shoppingCart.getGoodsId()).getData();
+ if(null != goods1.getPurchaseLimit() && -1 != goods1.getPurchaseLimit()
+ && goods1.getPurchaseLimit() < setGoodsNumber.getNumber()
+ && setGoodsNumber.getNumber() >= shoppingCart.getNumber()){
return R.fail("修改数量不能大于限购数量");
}
@@ -400,7 +455,7 @@
}else{
int sum = 0;
for (MyShoppingCartVo myShoppingCartVo : goodsList) {
- sum += (myShoppingCartVo.getPoint() * myShoppingCartVo.getNumber());
+ sum += ((null != myShoppingCartVo.getPoint() ? myShoppingCartVo.getPoint() : 0) * myShoppingCartVo.getNumber());
}
confirmOrderVo.setOrderPoint(sum);
}
@@ -409,7 +464,6 @@
BigDecimal paymentMoney = orderMoney;
//总优惠金额
BigDecimal activityAmount = BigDecimal.ZERO;
-
BaseSetting baseSetting = baseSettingClient.getBaseSetting(4).getData();
confirmOrderVo.setUseSimultaneously(JSON.parseObject(baseSetting.getContent()).getInteger("status") == 1);
@@ -448,7 +502,7 @@
BigDecimal goodsMoney = BigDecimal.ZERO;
for (MyShoppingCartVo myShoppingCartVo : goodsList) {
String goodsId = myShoppingCartVo.getGoodsId().toString();
- BigDecimal cash = myShoppingCartVo.getCash();
+ BigDecimal cash = myShoppingCartVo.getCash().multiply(new BigDecimal(myShoppingCartVo.getNumber()));
if(parseArray.contains(goodsId)){
goodsMoney = goodsMoney.add(cash);
}else{
@@ -509,6 +563,10 @@
confirmOrderVo.setDiscountAmount(activityAmount);
int earnPoint = goodsList.stream().mapToInt(MyShoppingCartVo::getEarnSpendingPoints).sum();
confirmOrderVo.setEarnPoint(earnPoint);
+ if(null != paymentMoney && BigDecimal.ZERO.compareTo(paymentMoney) > 0){
+ paymentMoney = BigDecimal.ZERO;
+ }
+
//支付金额,订单金额-订单优惠
confirmOrderVo.setPayMoney(paymentMoney);
confirmOrderVo.setResidualPoint(appUser.getAvailablePoint().intValue());
@@ -516,6 +574,7 @@
UserAddress userAddress = userAddressClient.getDefaultUserAddress(userid).getData();
if(null != userAddress){
userAddress.setIdStr(userAddress.getId().toString());
+ userAddress.setRecieveAddress(userAddress.getProvince() + userAddress.getCity() + userAddress.getDistrict() + userAddress.getRecieveAddress());
confirmOrderVo.setUserAddress(userAddress);
}
confirmOrderVo.setPaymentType(confirmOrder.getPaymentType());
@@ -541,11 +600,11 @@
}
}else{
//部分商品适用
- BigDecimal goodsMoney = BigDecimal.ZERO;
+ BigDecimal goodsMoney = BigDecimal.ZERO;
for (MyShoppingCartVo myShoppingCartVo : goodsList) {
Integer goodsId = myShoppingCartVo.getGoodsId();
BigDecimal cash = myShoppingCartVo.getCash();
- if(forGoodIds.contains(goodsId)){
+ if(forGoodIds.contains(String.valueOf(goodsId))){
goodsMoney = goodsMoney.add(cash);
}
}
@@ -654,18 +713,18 @@
vo.setPurchaseLimitNum(goods.getPurchaseLimit() - sum);
}
vo.setDistributionMode(goods.getDistributionMode());
- vo.setEarnSpendingPoints(price.getEarnSpendingPoints());
- vo.setSuperiorSubcommission(price.getSuperiorSubcommission());
- vo.setSuperiorRebatePoints(price.getSuperiorRebatePoints());
+ vo.setEarnSpendingPoints(price.getEarnSpendingPoints() * shoppingCart.getNumber());
+ vo.setSuperiorSubcommission(price.getSuperiorSubcommission().multiply(new BigDecimal(shoppingCart.getNumber())));
+ vo.setSuperiorRebatePoints(price.getSuperiorRebatePoints() * shoppingCart.getNumber());
vo.setSuperiorType(price.getSuperiorType());
vo.setSuperiorPriceType(price.getSuperiorPriceType());
- vo.setServuceShopCharges(price.getServuceShopCharges());
- vo.setServuceShopPoints(price.getServuceShopPoints());
- vo.setTechnicianPoints(price.getTechnicianPoints());
- vo.setBoundShopCharges(price.getBoundShopCharges());
- vo.setBoundShopPoints(price.getBoundShopPoints());
- vo.setBoundShopSuperiorsCharges(price.getBoundShopSuperiorsCharges());
- vo.setBoundShopSuperiorsPoints(price.getBoundShopSuperiorsPoints());
+ vo.setServuceShopCharges(price.getServuceShopCharges().multiply(new BigDecimal(shoppingCart.getNumber())));
+ vo.setServuceShopPoints(price.getServuceShopPoints() * shoppingCart.getNumber());
+ vo.setTechnicianPoints(price.getTechnicianPoints() * shoppingCart.getNumber());
+ vo.setBoundShopCharges(price.getBoundShopCharges().multiply(new BigDecimal(shoppingCart.getNumber())));
+ vo.setBoundShopPoints(price.getBoundShopPoints() * shoppingCart.getNumber());
+ vo.setBoundShopSuperiorsCharges(price.getBoundShopSuperiorsCharges().multiply(new BigDecimal(shoppingCart.getNumber())));
+ vo.setBoundShopSuperiorsPoints(price.getBoundShopSuperiorsPoints() * shoppingCart.getNumber());
page.add(vo);
}
return page;
@@ -693,7 +752,7 @@
num += num1;
ShoppingCart shoppingCart = this.getById(id);
//判断当前数量是否已经超出限购数量(需要计算已经购买的数量)
- Integer goodsSaleNum = orderService.getGoodsSaleNum(shoppingCart.getGoodsId(), type);
+ Integer goodsSaleNum = orderService.getGoodsSaleNum(shoppingCart.getGoodsId(), type, userid);
Goods goods = goodsClient.getGoodsById(shoppingCart.getGoodsId()).getData();
if(1 == type){
if(null != goods.getPurchaseLimit() && -1 != goods.getPurchaseLimit() && (goodsSaleNum + num1) > goods.getPurchaseLimit()){
@@ -711,6 +770,14 @@
}
}
}
+
+ if(goods.getStatus() == 1){
+ throw new RuntimeException(goods.getName() + "商品已被下架");
+ }
+ if(!goods.getCommodityAuthority().contains("-1") && !goods.getCommodityAuthority().contains(appUser.getVipId().toString())){
+ throw new RuntimeException("无权限购买" + goods.getName());
+ }
+
ids.add(id);
}
@@ -816,7 +883,7 @@
BigDecimal goodsMoney = BigDecimal.ZERO;
for (MyShoppingCartVo myShoppingCartVo : goodsList) {
String goodsId = myShoppingCartVo.getGoodsId().toString();
- BigDecimal cash = myShoppingCartVo.getCash();
+ BigDecimal cash = myShoppingCartVo.getCash().multiply(new BigDecimal(myShoppingCartVo.getNumber()));
if(parseArray.contains(goodsId)){
goodsMoney = goodsMoney.add(cash);
}else{
@@ -880,7 +947,7 @@
//可获得的消费积分
int earnPoint = 0;
for (MyShoppingCartVo myShoppingCartVo : goodsList) {
- earnPoint += (myShoppingCartVo.getEarnSpendingPoints() * myShoppingCartVo.getNumber());
+ earnPoint += myShoppingCartVo.getEarnSpendingPoints();
}
//获取快递策略,计算快递费
@@ -908,6 +975,10 @@
}
}
}
+ if(BigDecimal.ZERO.compareTo(paymentMoney) > 0){
+ paymentMoney = BigDecimal.ZERO;
+ }
+
//构建订单明细
Order order = new Order();
order.setAppUserId(userid);
@@ -922,7 +993,7 @@
order.setGoodName(goodName.substring(0, goodName.length() - 1));
Goods goods = goodsClient.getGoodsById(goodsList.get(0).getGoodsId()).getData();
order.setOrderType(goods.getType());
- order.setOrderStatus(goods.getType() == 1 ? 3 : 1);
+ order.setOrderStatus(goods.getType() == 1 ? 3 : (shoppingCartPayment.getDistributionMode() == 2 ? 1 : 2));
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
order.setOrderNumber("QJS" + getNumber(3) + sdf.format(new Date()));
order.setTotalAmount(orderMoney.setScale(2, RoundingMode.HALF_EVEN));
@@ -944,7 +1015,7 @@
if(null != orderActivityInfo1){
order.setActivityJson(JSON.toJSONString(orderActivityInfo1));
}
- if(null != shoppingCartPayment.getUserAddressId()){
+ if(2 == shoppingCartPayment.getDistributionMode()){
UserAddress address = userAddressClient.getUserAddressById(shoppingCartPayment.getUserAddressId()).getData();
order.setExpressAmount(expressFee);
order.setAddressJson(JSON.toJSONString(address));
@@ -955,6 +1026,7 @@
order.setDelFlag(0);
order.setCreateTime(LocalDateTime.now());
order.setExpressPayMethod(shoppingCartPayment.getFreightPaymentType());
+ order.setDistributionMode(shoppingCartPayment.getDistributionMode());
if(2 == shoppingCartPayment.getPaymentType()){
BigDecimal balance = appUser.getBalance();
@@ -964,7 +1036,7 @@
}
if(3 == shoppingCartPayment.getPaymentType()){
Integer availablePoint = appUser.getAvailablePoint();
- if(availablePoint < orderPoint){
+ if(availablePoint.compareTo(orderPoint) < 0){
return R.fail("账户可用积分不足");
}
}
@@ -1028,21 +1100,95 @@
//开始构建支付数据
//现金支付
paymentMoney = paymentMoney.add(expressFee).setScale(2, RoundingMode.HALF_EVEN);
+ if(BigDecimal.ZERO.compareTo(paymentMoney) > 0){
+ paymentMoney = BigDecimal.ZERO;
+ }
if(1 == shoppingCartPayment.getPaymentType()){
- //调起微信支付
- String goodsNames = goodsList.stream().map(MyShoppingCartVo::getName).collect(Collectors.joining("\n"));
- UniPayResult uniPayResult = PaymentUtil.uniPay(order.getOrderNumber(), paymentMoney.doubleValue(), order.getOrderType() == 1 ? "购买服务商品" : "购买单品商品",
- goodsNames, "", "/order/shopping-cart/shoppingCartPaymentCallback", appUser.getWxOpenid(), null);
- if(null == uniPayResult || !"100".equals(uniPayResult.getRa_Code())){
- return R.fail(null == uniPayResult ? "支付失败" : uniPayResult.getRb_CodeMsg());
+ if(BigDecimal.ZERO.compareTo(paymentMoney) < 0){
+ //调起微信支付
+ String goodsNames = goodsList.stream().map(MyShoppingCartVo::getName).collect(Collectors.joining("\n"));
+ UniPayResult uniPayResult = PaymentUtil.uniPay(order.getOrderNumber(), paymentMoney.doubleValue(), order.getOrderType() == 1 ? "购买服务商品" : "购买单品商品",
+ goodsNames, "", "/order/shopping-cart/shoppingCartPaymentCallback", appUser.getWxOpenid(), null);
+ if(null == uniPayResult || !"100".equals(uniPayResult.getRa_Code())){
+ return R.fail(null == uniPayResult ? "支付失败" : uniPayResult.getRb_CodeMsg());
+ }
+ String rc_result = uniPayResult.getRc_Result();
+ JSONObject jsonObject = JSON.parseObject(rc_result);
+ jsonObject.put("orderId", order.getId().toString());
+ //将支付数据添加到redis队列中,便于定时任务去校验是否完成支付,没有完成支付支付,15分钟后关闭订单。
+ long second = LocalDateTime.now().plusMinutes(15).toEpochSecond(ZoneOffset.UTC);
+ redisTemplate.opsForZSet().add("OrderPayment", order.getOrderNumber(), second);
+ return R.ok(jsonObject.toJSONString());
+ }else{
+
+ earnPoint = order.getGetPoint();
+ appUser = appUserClient.getAppUserById(order.getAppUserId());
+ Integer lavePoint = appUser.getLavePoint();
+ paymentMoney = order.getPaymentAmount();
+ //构建积分流水记录
+ if(earnPoint > 0){
+ PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
+ int earnPoint1 = 0;
+ if(null != pointSetting && 1 == pointSetting.getBuyPointOpen()){
+ earnPoint1 = new BigDecimal(earnPoint).multiply(pointSetting.getBuyPoint().divide(new BigDecimal(100))).intValue();
+ }
+ appUser.setShopPoint(appUser.getShopPoint() + earnPoint);
+ appUser.setLavePoint(appUser.getLavePoint() + earnPoint);
+ appUser.setTotalPoint(appUser.getTotalPoint() + earnPoint);
+ appUser.setAvailablePoint(appUser.getAvailablePoint() + earnPoint1);
+ appUser.setTotalAvailablePoint(appUser.getTotalAvailablePoint() + earnPoint1);
+
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("shopPoint", earnPoint);
+ jsonObject.put("availablePoint", earnPoint1);
+ if(null != pointSetting && 1 == pointSetting.getBuyPointGift()){
+ appUser.setTransferablePoint(appUser.getTransferablePoint() + earnPoint1);
+ jsonObject.put("transferablePoint", earnPoint1);
+ }
+
+ if(earnPoint > 0){
+ UserPoint userPoint = new UserPoint();
+ userPoint.setType(1);
+ userPoint.setVariablePoint(earnPoint);
+ userPoint.setCreateTime(LocalDateTime.now());
+ userPoint.setAppUserId(appUser.getId());
+ userPoint.setObjectId(order.getId());
+ userPoint.setExtention(jsonObject.toJSONString());
+ userPoint.setChangeDirection(1);
+ userPointClient.saveUserPoint(userPoint);
+ }
+ }
+ appUser.setShopAmount(appUser.getShopAmount().add(paymentMoney).setScale(2, RoundingMode.HALF_EVEN));
+ appUser.setLastShopTime(LocalDateTime.now());
+ appUserClient.editAppUserById(appUser);
+ //变更等级
+ applicationEventPublisher.publishEvent(new PayEvent(JSON.toJSONString(appUser)));
+ //修改订支付状态
+ order.setPayStatus(2);
+ //自提
+ if(order.getOrderType() == 1 && StringUtils.isEmpty(order.getAddressJson())){
+ order.setOrderStatus(2);
+ }
+ orderService.updateById(order);
+
+ //处理优惠券
+ if(null != order.getUserCouponId()){
+ UserCoupon userCoupon = userCouponClient.getUserCoupon(order.getUserCouponId()).getData();
+ if(null != userCoupon && null == userCoupon.getUseTime()){
+ userCoupon.setStatus(2);
+ userCoupon.setUseTime(LocalDateTime.now());
+ userCouponClient.editUserCoupon(userCoupon);
+ }
+ }
+
+
+ //删除购物车数据
+ userid = tokenService.getLoginUserApplet().getUserid();
+ List<OrderGood> list1 = orderGoodService.list(new LambdaQueryWrapper<OrderGood>().eq(OrderGood::getOrderId, order.getId()));
+ List<Integer> goodsIds1 = list1.stream().map(OrderGood::getGoodsId).collect(Collectors.toList());
+ this.remove(new LambdaQueryWrapper<ShoppingCart>().eq(ShoppingCart::getAppUserId, userid).in(ShoppingCart::getGoodsId, goodsIds1));
+
}
- String rc_result = uniPayResult.getRc_Result();
- JSONObject jsonObject = JSON.parseObject(rc_result);
- jsonObject.put("orderId", order.getId().toString());
- //将支付数据添加到redis队列中,便于定时任务去校验是否完成支付,没有完成支付支付,15分钟后关闭订单。
- long second = LocalDateTime.now().plusMinutes(15).toEpochSecond(ZoneOffset.UTC);
- redisTemplate.opsForZSet().add("OrderPayment", order.getOrderNumber(), second);
- return R.ok(jsonObject.toJSONString());
}
//账户余额
BigDecimal redPacketAmount = BigDecimal.ZERO;
@@ -1053,33 +1199,36 @@
BigDecimal balance = appUser.getBalance();
//红包金额满足支付
BigDecimal paymentMoney1 = paymentMoney;
- if(paymentMoney1.compareTo(totalRedPacketAmount) <= 0){
- totalRedPacketAmount = totalRedPacketAmount.subtract(paymentMoney1);
- balance = balance.subtract(paymentMoney1);
- appUser.setTotalRedPacketAmount(totalRedPacketAmount);
- appUser.setBalance(balance);
- redPacketAmount = paymentMoney1;
- }else{
- paymentMoney1 = paymentMoney1.subtract(totalRedPacketAmount);
- redPacketAmount = totalRedPacketAmount;
- totalRedPacketAmount = BigDecimal.ZERO;
- if(paymentMoney1.compareTo(totalDistributionAmount) <= 0){
- totalDistributionAmount = totalDistributionAmount.subtract(paymentMoney1);
- balance = balance.subtract(paymentMoney1);
- appUser.setTotalRedPacketAmount(totalRedPacketAmount);
- appUser.setTotalDistributionAmount(totalDistributionAmount);
- appUser.setBalance(balance);
- distributionAmount = paymentMoney1;
- }else{
- paymentMoney1 = paymentMoney1.subtract(totalDistributionAmount);
- totalDistributionAmount = BigDecimal.ZERO;
- balance = balance.subtract(paymentMoney1);
- appUser.setTotalRedPacketAmount(totalRedPacketAmount);
- appUser.setTotalDistributionAmount(totalDistributionAmount);
- appUser.setBalance(balance);
- distributionAmount = totalDistributionAmount;
- }
- }
+ balance = balance.subtract(paymentMoney1);
+ appUser.setBalance(balance);
+
+// if(paymentMoney1.compareTo(totalRedPacketAmount) <= 0){
+// totalRedPacketAmount = totalRedPacketAmount.subtract(paymentMoney1);
+// balance = balance.subtract(paymentMoney1);
+// appUser.setTotalRedPacketAmount(totalRedPacketAmount);
+// appUser.setBalance(balance);
+// redPacketAmount = paymentMoney1;
+// }else{
+// paymentMoney1 = paymentMoney1.subtract(totalRedPacketAmount);
+// redPacketAmount = totalRedPacketAmount;
+// totalRedPacketAmount = BigDecimal.ZERO;
+// if(paymentMoney1.compareTo(totalDistributionAmount) <= 0){
+//// totalDistributionAmount = totalDistributionAmount.subtract(paymentMoney1);
+// balance = balance.subtract(paymentMoney1);
+// appUser.setTotalRedPacketAmount(totalRedPacketAmount);
+//// appUser.setTotalDistributionAmount(totalDistributionAmount);
+// appUser.setBalance(balance);
+// distributionAmount = paymentMoney1;
+// }else{
+// paymentMoney1 = paymentMoney1.subtract(totalDistributionAmount);
+// totalDistributionAmount = BigDecimal.ZERO;
+// balance = balance.subtract(paymentMoney1);
+// appUser.setTotalRedPacketAmount(totalRedPacketAmount);
+//// appUser.setTotalDistributionAmount(totalDistributionAmount);
+// appUser.setBalance(balance);
+// distributionAmount = totalDistributionAmount;
+// }
+// }
//构建积分流水记录
if(earnPoint > 0){
PointSetting pointSetting = pointSettingClient.getPointSetting(appUser.getVipId()).getData();
@@ -1104,13 +1253,12 @@
if(earnPoint > 0){
UserPoint userPoint = new UserPoint();
userPoint.setType(1);
- userPoint.setHistoricalPoint(appUser.getLavePoint() - earnPoint);
userPoint.setVariablePoint(earnPoint);
- userPoint.setBalance(appUser.getLavePoint());
userPoint.setCreateTime(LocalDateTime.now());
userPoint.setAppUserId(appUser.getId());
userPoint.setObjectId(order.getId());
userPoint.setExtention(jsonObject.toJSONString());
+ userPoint.setChangeDirection(1);
userPointClient.saveUserPoint(userPoint);
}
}
@@ -1118,17 +1266,17 @@
appUser.setLastShopTime(LocalDateTime.now());
appUserClient.editAppUserById(appUser);
//变更等级
- appUserClient.vipUpgrade(appUser.getId());
+ applicationEventPublisher.publishEvent(new PayEvent(JSON.toJSONString(appUser)));
//构建余额明细变动记录
BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
balanceChangeRecord.setAppUserId(appUser.getId());
+ balanceChangeRecord.setVipId(appUser.getVipId());
balanceChangeRecord.setOrderId(order.getId());
balanceChangeRecord.setChangeType(5);
- balanceChangeRecord.setBeforeAmount(balance.add(paymentMoney));
balanceChangeRecord.setChangeAmount(paymentMoney);
- balanceChangeRecord.setAfterAmount(balance);
balanceChangeRecord.setDelFlag(0);
balanceChangeRecord.setCreateTime(LocalDateTime.now());
+ balanceChangeRecord.setChangeDirection(-1);
balanceChangeRecordClient.saveBalanceChangeRecord(balanceChangeRecord);
//修改订支付状态
order.setPayStatus(2);
@@ -1141,17 +1289,12 @@
//处理优惠券
if(null != order.getUserCouponId()){
UserCoupon userCoupon = userCouponClient.getUserCoupon(order.getUserCouponId()).getData();
- if(null != userCoupon && 1 == userCoupon.getStatus()){
- userCoupon.setStatus(2);
+ if(null != userCoupon && null == userCoupon.getUseTime()){
userCoupon.setUseTime(LocalDateTime.now());
userCouponClient.editUserCoupon(userCoupon);
}
}
- //添加查询快递信息队列
- if(StringUtils.isNotEmpty(order.getExpressJson())){
- //一小时后定时查询快递信息
- redisTemplate.opsForZSet().add("order_express", order.getId(), LocalDateTime.now().plusHours(1).toEpochSecond(ZoneOffset.UTC));
- }
+
}
//积分支付
if(3 == shoppingCartPayment.getPaymentType()){
@@ -1189,21 +1332,22 @@
}
//构建积分流水记录
- UserPoint userPoint = new UserPoint();
- userPoint.setType(11);
- userPoint.setHistoricalPoint(lavePoint);
- userPoint.setVariablePoint(orderPoint);
- userPoint.setBalance(appUser.getLavePoint());
- userPoint.setCreateTime(LocalDateTime.now());
- userPoint.setAppUserId(appUser.getId());
- userPoint.setObjectId(order.getId());
- userPoint.setExtention((tra >= 0 ? orderPoint : transferablePoint) + "");
- userPointClient.saveUserPoint(userPoint);
+ if(orderPoint > 0){
+ UserPoint userPoint = new UserPoint();
+ userPoint.setType(11);
+ userPoint.setVariablePoint(orderPoint);
+ userPoint.setCreateTime(LocalDateTime.now());
+ userPoint.setAppUserId(appUser.getId());
+ userPoint.setObjectId(order.getId());
+ userPoint.setExtention((tra >= 0 ? orderPoint : transferablePoint) + "");
+ userPoint.setChangeDirection(-1);
+ userPointClient.saveUserPoint(userPoint);
+ }
appUser.setLastShopTime(LocalDateTime.now());
appUserClient.editAppUserById(appUser);
//变更等级
- appUserClient.vipUpgrade(appUser.getId());
+ applicationEventPublisher.publishEvent(new PayEvent(JSON.toJSONString(appUser)));
//积分支付不返佣
@@ -1228,7 +1372,7 @@
totalDistributionAmount = totalDistributionAmount.subtract(expressFee1);
balance = balance.subtract(expressFee1);
appUser.setTotalRedPacketAmount(totalRedPacketAmount);
- appUser.setTotalDistributionAmount(totalDistributionAmount);
+// appUser.setTotalDistributionAmount(totalDistributionAmount);
appUser.setBalance(balance);
distributionAmount = expressFee1;
}else{
@@ -1236,7 +1380,7 @@
totalDistributionAmount = BigDecimal.ZERO;
balance = balance.subtract(expressFee1);
appUser.setTotalRedPacketAmount(totalRedPacketAmount);
- appUser.setTotalDistributionAmount(totalDistributionAmount);
+// appUser.setTotalDistributionAmount(totalDistributionAmount);
appUser.setBalance(balance);
distributionAmount = totalDistributionAmount;
}
@@ -1246,13 +1390,13 @@
//构建余额明细变动记录
BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
balanceChangeRecord.setAppUserId(appUser.getId());
+ balanceChangeRecord.setVipId(appUser.getVipId());
balanceChangeRecord.setOrderId(order.getId());
balanceChangeRecord.setChangeType(5);
- balanceChangeRecord.setBeforeAmount(balance.add(expressFee));
balanceChangeRecord.setChangeAmount(expressFee);
- balanceChangeRecord.setAfterAmount(balance);
balanceChangeRecord.setDelFlag(0);
balanceChangeRecord.setCreateTime(LocalDateTime.now());
+ balanceChangeRecord.setChangeDirection(-1);
balanceChangeRecordClient.saveBalanceChangeRecord(balanceChangeRecord);
//修改订支付状态
order.setPayStatus(2);
@@ -1273,14 +1417,7 @@
//删除购物车数据
this.removeBatchByIds(ids);
}
- //添加查询快递信息队列
- if(StringUtils.isNotEmpty(order.getExpressJson())){
- //一小时后定时查询快递信息
- SystemConfig systemConfig = systemConfigClient.getSystemConfig(3).getData();
- JSONObject jsonObject = JSON.parseObject(systemConfig.getContent());
- Integer waitTime = jsonObject.getInteger("waitTime");
- redisTemplate.opsForZSet().add("order_express", order.getId(), LocalDateTime.now().plusHours(waitTime).toEpochSecond(ZoneOffset.UTC));
- }
+
}
//添加账户余额支付明细
@@ -1291,8 +1428,18 @@
orderBalancePayment.setDistributionAmount(distributionAmount);
orderBalancePaymentService.save(orderBalancePayment);
}
+
+ commissionService.calculationCommissionUser(order.getId());
return R.ok(order.getId().toString());
}
+
+
+
+
+
+
+
+
public String getNumber(Integer size){
@@ -1340,50 +1487,56 @@
jsonObject.put("transferablePoint", earnPoint1);
}
- UserPoint userPoint = new UserPoint();
- userPoint.setType(1);
- userPoint.setHistoricalPoint(lavePoint);
- userPoint.setVariablePoint(earnPoint);
- userPoint.setBalance(appUser.getLavePoint());
- userPoint.setCreateTime(LocalDateTime.now());
- userPoint.setAppUserId(appUser.getId());
- userPoint.setObjectId(order.getId());
- userPoint.setExtention(jsonObject.toJSONString());
- userPointClient.saveUserPoint(userPoint);
+ if(earnPoint > 0){
+ UserPoint userPoint = new UserPoint();
+ userPoint.setType(1);
+ userPoint.setVariablePoint(earnPoint);
+ userPoint.setCreateTime(LocalDateTime.now());
+ userPoint.setAppUserId(appUser.getId());
+ userPoint.setObjectId(order.getId());
+ userPoint.setExtention(jsonObject.toJSONString());
+ userPoint.setChangeDirection(1);
+ userPointClient.saveUserPoint(userPoint);
+ }
}
appUser.setShopAmount(appUser.getShopAmount().add(paymentMoney).setScale(2, RoundingMode.HALF_EVEN));
appUser.setLastShopTime(LocalDateTime.now());
appUserClient.editAppUserById(appUser);
//变更等级
- appUserClient.vipUpgrade(appUser.getId());
+ applicationEventPublisher.publishEvent(new PayEvent(JSON.toJSONString(appUser)));
//修改订支付状态
order.setPayStatus(2);
//自提
if(order.getOrderType() == 1 && StringUtils.isEmpty(order.getAddressJson())){
order.setOrderStatus(2);
}
+
+ String r7TrxNo = uniPayCallbackResult.getR9_BankTrxNo();
+ order.setSerialNumber(r7TrxNo);
orderService.updateById(order);
//处理优惠券
if(null != order.getUserCouponId()){
UserCoupon userCoupon = userCouponClient.getUserCoupon(order.getUserCouponId()).getData();
- if(null != userCoupon && 1 == userCoupon.getStatus()){
+ if(null != userCoupon && null == userCoupon.getUseTime()){
userCoupon.setStatus(2);
userCoupon.setUseTime(LocalDateTime.now());
userCouponClient.editUserCoupon(userCoupon);
}
}
- //添加查询快递信息队列
- if(StringUtils.isNotEmpty(order.getExpressJson())){
- //一小时后定时查询快递信息
- redisTemplate.opsForZSet().add("order_express", order.getId(), LocalDateTime.now().plusHours(1).toEpochSecond(ZoneOffset.UTC));
- }
//删除购物车数据
- Long userid = tokenService.getLoginUserApplet().getUserid();
+ Long userid = order.getAppUserId();
List<OrderGood> list = orderGoodService.list(new LambdaQueryWrapper<OrderGood>().eq(OrderGood::getOrderId, order.getId()));
List<Integer> goodsIds = list.stream().map(OrderGood::getGoodsId).collect(Collectors.toList());
this.remove(new LambdaQueryWrapper<ShoppingCart>().eq(ShoppingCart::getAppUserId, userid).in(ShoppingCart::getGoodsId, goodsIds));
+
+ //商品销量增加
+ for (Integer goodsId : goodsIds) {
+ goodsClient.editGoodsNum(goodsId, 1);
+ }
+
+ commissionService.calculationCommissionUser(order.getId());
return R.ok();
}
@@ -1419,23 +1572,24 @@
}
//构建积分流水记录
- UserPoint userPoint = new UserPoint();
- userPoint.setType(11);
- userPoint.setHistoricalPoint(lavePoint);
- userPoint.setVariablePoint(orderPoint);
- userPoint.setBalance(appUser.getLavePoint());
- userPoint.setCreateTime(LocalDateTime.now());
- userPoint.setAppUserId(appUser.getId());
- userPoint.setObjectId(order.getId());
- userPoint.setExtention((tra >= 0 ? orderPoint : transferablePoint) + "");
- userPointClient.saveUserPoint(userPoint);
+ if(orderPoint > 0){
+ UserPoint userPoint = new UserPoint();
+ userPoint.setType(11);
+ userPoint.setVariablePoint(orderPoint);
+ userPoint.setCreateTime(LocalDateTime.now());
+ userPoint.setAppUserId(appUser.getId());
+ userPoint.setObjectId(order.getId());
+ userPoint.setExtention((tra >= 0 ? orderPoint : transferablePoint) + "");
+ userPoint.setChangeDirection(-1);
+ userPointClient.saveUserPoint(userPoint);
+ }
//积分支付不反积分
appUser.setLastShopTime(LocalDateTime.now());
appUserClient.editAppUserById(appUser);
//变更等级
- appUserClient.vipUpgrade(appUser.getId());
+ applicationEventPublisher.publishEvent(new PayEvent(JSON.toJSONString(appUser)));
//修改订支付状态
order.setPayStatus(2);
--
Gitblit v1.7.1