浏览代码

暂时注释了-直播订单下单的时候 又没有减商城商品的库存加销量(现在只管直播商品库存的销量)/积分订单待支付列表数据补全

三七 4 周之前
父节点
当前提交
1530d9cdc8

+ 1 - 0
fs-service/src/main/java/com/fs/company/vo/easycall/EasyCallVoiceCodeVO.java

@@ -16,4 +16,5 @@ public class EasyCallVoiceCodeVO {
     /** 声音源:aliyun_tts */
     private String voiceSource;
     private Integer priority;
+    private String ttsModels;
 }

+ 2 - 0
fs-service/src/main/java/com/fs/his/param/FsIntegralOrderDoPayParam.java

@@ -1,5 +1,6 @@
 package com.fs.his.param;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 
 import javax.validation.constraints.NotNull;
@@ -7,6 +8,7 @@ import javax.validation.constraints.NotNull;
 @Data
 public class FsIntegralOrderDoPayParam {
     @NotNull(message = "订单号不能为空")
+    @JsonProperty("orderId")
     private Long orderId;
 
     private Long userId;

+ 11 - 0
fs-service/src/main/java/com/fs/his/vo/FsIntegralOrderListUVO.java

@@ -1,6 +1,7 @@
 package com.fs.his.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -64,5 +65,15 @@ public class FsIntegralOrderListUVO implements Serializable {
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date deliveryTime;
 
+    @ApiModelProperty("购物车中的商品信息(多个)")
+    private String itemCartJson;
+    @ApiModelProperty("购物车中的商品对应积分(多个)")
+    private String integralByCart;
+    @ApiModelProperty("购物车中对应的商品编码(多个)")
+    private String barCodeCart;
+    @ApiModelProperty("商品对应的数量(多个)")
+    private String quantityCart;
+
+
 
 }

+ 46 - 34
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java

@@ -1079,7 +1079,7 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
             }
             String json = configService.selectConfigByKey("store.config");
             StoreConfig config= JSONUtil.toBean(json, StoreConfig.class);
-            
+
             //卓美商城正常下单
             if(hisStoreConfig != null && Boolean.TRUE.equals(hisStoreConfig.getEnableOrderSalesBinding())){
                 //绑定销售
@@ -1366,7 +1366,7 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
         Integer orderType = param.getOrderType();
         int activityDeductNum = 1; // Redis库存扣减数量(仅秒杀/限时折扣使用,异常时用于回滚)
         Long reservedGroupBuyId = null; // 团购下单阶段预占到的团ID,异常时用于释放名额
-    
+
         //活动参数校验(6=秒杀 7=限时折扣 8=限时团购)
         if (orderType == null || (orderType != 6 && orderType != 7 && orderType != 8)) {
             return R.error("无效的活动类型");
@@ -1451,13 +1451,13 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
                 param.setCompanyId(fsUserCompanyUser.getCompanyId());
                 param.setCompanyUserId(fsUserCompanyUser.getCompanyUserId());
             }
-    
+
             if (!CloudHostUtils.hasCloudHostName("鹤颜堂")){
                 if (ObjectUtil.isEmpty(param.getAddressId())){
                     return R.error("地址不能为空!");
                 }
             }
-    
+
             FsStoreOrderComputedParam computedParam = new FsStoreOrderComputedParam();
             BeanUtils.copyProperties(param, computedParam);
             //计算金额
@@ -1504,7 +1504,7 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
                 }
                 String json = configService.selectConfigByKey("store.config");
                 StoreConfig config= JSONUtil.toBean(json, StoreConfig.class);
-                    
+
                 //绑定销售
                 if(hisStoreConfig != null && Boolean.TRUE.equals(hisStoreConfig.getEnableOrderSalesBinding())){
                     FsUserScrm fsuser= userService.selectFsUserById(userId);
@@ -1527,7 +1527,7 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
                         }
                     }
                 }
-    
+
                 CompanyUserUser map=new CompanyUserUser();
                 map.setCompanyUserId(param.getCompanyUserId());
                 map.setUserId(userId);
@@ -1539,7 +1539,7 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
                         companyUserUserMapper.insertCompanyUserUser(map);
                     }
                 }
-    
+
                 storeOrder.setUserId(userId);
                 storeOrder.setOrderCode(orderSn);
                 if (ObjectUtil.isNotEmpty(address)){
@@ -1552,7 +1552,7 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
                 storeOrder.setTotalNum(Long.parseLong(String.valueOf(carts.size())));
                 storeOrder.setTotalPrice(dto.getTotalPrice());
                 storeOrder.setTotalPostage(dto.getPayPostage());
-    
+
                 //优惠券处理
                 if (param.getCouponUserId() != null) {
                     FsStoreCouponUserScrm couponUser = couponUserService.selectFsStoreCouponUserById(param.getCouponUserId());
@@ -1593,11 +1593,11 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
                 storeOrder.setIsChannel(1);
                 storeOrder.setShippingType(1);
                 storeOrder.setCreateTime(new Date());
-    
+
                 if (config.getServiceFee() != null) {
                     storeOrder.setServiceFee(config.getServiceFee());
                 }
-    
+
                 //后台制单处理
                 if (param.getPayPrice() != null && param.getPayPrice().compareTo(BigDecimal.ZERO) > 0) {
                     if (param.getPayPrice().compareTo(dto.getTotalPrice()) > 0) {
@@ -1607,7 +1607,7 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
                 } else {
                     storeOrder.setPayPrice(dto.getPayPrice());
                 }
-    
+
                 //付款方式
                 if (param.getPayType().equals("1") || param.getPayType().equals("99")) {
                     storeOrder.setStatus(0);
@@ -1658,7 +1658,7 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
                     storeOrder.setOrderType(param.getOrderType());
                     storeOrder.setOrderMedium(param.getOrderMedium());
                 }
-    
+
                 //活动商品只扣Redis(已在上文扣减),DB延后扣减
                 // storeOrder.setAssociatedId
                 storeOrder.setAssociatedId(associatedId);
@@ -1670,10 +1670,10 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
                 if (flag == 0) {
                     return R.error("订单创建失败");
                 }
-    
+
                 // 活动商品:订单创建成功后,同步扣减DB中的商品规格库存和销量(与普通下单一致)
                 this.deStockIncSale(carts);
-    
+
                 if (!isPay && storeOrder.getCompanyId() != null) {
                     addOrderAudit(storeOrder);
                 }
@@ -1681,7 +1681,7 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
                 if (dto.getUsedIntegral() > 0) {
                     this.decIntegral(userId, dto.getUsedIntegral(), dto.getDeductionPrice(), storeOrder.getId().toString());
                 }
-    
+
                 //保存OrderItem
                 List<FsStoreOrderItemScrm> listOrderItem = new ArrayList<>();
                 for (FsStoreCartQueryVO vo : carts) {
@@ -1723,17 +1723,17 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
                 }
                 //购物车状态修改
                 cartMapper.updateIsPay(cartIds);
-    
+
                 //删除缓存
                 redisCache.deleteObject("orderKey:" + param.getOrderKey());
                 if (config.getIsBrushOrders() == null || !(config.getIsBrushOrders() && param.getCompanyUserId() != null)) {
                     redisCache.deleteObject("orderCarts:" + param.getOrderKey());
                 }
-    
+
                 //添加记录
                 orderStatusService.create(storeOrder.getId(), OrderLogEnum.CREATE_ORDER.getValue(),
                         OrderLogEnum.CREATE_ORDER.getDesc());
-    
+
                 //加入redis,24小时自动取消
                 String redisKey = String.valueOf(StrUtil.format("{}{}",
                         StoreConstants.REDIS_ORDER_OUTTIME_UNPAY, storeOrder.getId()));
@@ -7048,25 +7048,37 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
      * @return
      */
     public FsStoreOrderScrm buildPayment(FsIntegralOrderDoPayParam param){
-        if(param.getType().equals("live")){
-            LiveOrder liveOrder = liveOrderMapper.selectLiveOrderByOrderId(String.valueOf(param.getOrderId()));
-            if (ObjectUtil.isNotEmpty(liveOrder)){
-                FsStoreOrderScrm orderScrm = new FsStoreOrderScrm();
-                BeanUtils.copyProperties(liveOrder,orderScrm);
-                orderScrm.setId(liveOrder.getOrderId());
-                orderScrm.setUserId(Long.valueOf(liveOrder.getUserId()));
-                orderScrm.setIsLive(true);
-                return orderScrm;
-            }
+//        if(param.getType().equals("live")){
+//            LiveOrder liveOrder = liveOrderMapper.selectLiveOrderByOrderId(String.valueOf(param.getOrderId()));
+//            if (ObjectUtil.isNotEmpty(liveOrder)){
+//                FsStoreOrderScrm orderScrm = new FsStoreOrderScrm();
+//                BeanUtils.copyProperties(liveOrder,orderScrm);
+//                orderScrm.setId(liveOrder.getOrderId());
+//                orderScrm.setUserId(Long.valueOf(liveOrder.getUserId()));
+//                orderScrm.setIsLive(true);
+//                return orderScrm;
+//            }
+//        }
+//        if (param.getType().equals("store")){
+//            FsStoreOrderScrm order = fsStoreOrderMapper.selectFsStoreOrderById(param.getOrderId());
+//            if (ObjectUtil.isNotEmpty(order)){
+//                return order;
+//            }
+//        }
+
+        FsStoreOrderScrm order = fsStoreOrderMapper.selectFsStoreOrderById(param.getOrderId());
+
+        if (ObjectUtil.isEmpty(order)){
+            log.error("订单不存在,orderId: {}, type: {}", param.getOrderId(), param.getType());
+            return null;
         }
-        if (param.getType().equals("store")){
-            FsStoreOrderScrm order = fsStoreOrderMapper.selectFsStoreOrderById(param.getOrderId());
-            if (ObjectUtil.isNotEmpty(order)){
-                return order;
-            }
+
+        if ("live".equals(param.getType())){
+            order.setIsLive(true);
+            return order;
         }
 
-        return null;
+        return order;
     }
 
 

+ 5 - 5
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStorePaymentScrmServiceImpl.java

@@ -1187,12 +1187,12 @@ public class FsStorePaymentScrmServiceImpl implements IFsStorePaymentScrmService
 
         // 创建记录 TODO 根据type创建支付
         FsStorePaymentScrm storePayment = new FsStorePaymentScrm();
-        if (payOrderParam.getBusinessType().getPrefix().equals("live")) {
-            LiveOrderPayment liveOrderPayment = createLiveStorePayment(payConfig, user, payOrderParam,merchantAppConfig.getMerchantId());
-            BeanUtils.copyProperties(liveOrderPayment, storePayment);
-        } else {
+//        if (payOrderParam.getBusinessType().getPrefix().equals("live")) {
+//            LiveOrderPayment liveOrderPayment = createLiveStorePayment(payConfig, user, payOrderParam,merchantAppConfig.getMerchantId());
+//            BeanUtils.copyProperties(liveOrderPayment, storePayment);
+//        } else {
             storePayment = createStorePaymentScrm(payConfig, user, payOrderParam,merchantAppConfig.getMerchantId());
-        }
+//        }
 
         // 根据配置类型创建第三方支付订单
         return createThirdPartyPaymentScrm(payConfig, storePayment, user, payOrderParam);

+ 53 - 18
fs-service/src/main/java/com/fs/live/service/impl/LiveOrderServiceImpl.java

@@ -4038,7 +4038,14 @@ public class LiveOrderServiceImpl implements ILiveOrderService {
         LiveGoodsUploadMqVo vo = LiveGoodsUploadMqVo.builder().goodsId(goods.getGoodsId()).goodsNum(Integer.parseInt(liveOrder.getTotalNum())).build();
         try {
             log.info("订单提交MQ:{}", vo);
-            rocketMQTemplate.syncSend("live-goods-upload", JSON.toJSONString(vo));
+
+            if (("北京卓美").equals(cloudHostProper.getCompanyName())){
+                rocketMQTemplate.syncSend("live-goods-upload", JSON.toJSONString(vo));
+            }else {
+                //其他客户没有mq,暂时直接更新
+                updateStockAndSales(goods.getGoodsId(), purchaseNum);
+            }
+
         }catch (Exception e){
             log.error("更新库存失败!{}", vo, e);
         }
@@ -4134,6 +4141,7 @@ public class LiveOrderServiceImpl implements ILiveOrderService {
 
         // 设置支付金额
         storeOrder.setPayPrice(payPrice.subtract(discountMoney));
+        storeOrder.setPayMoney(payPrice.subtract(discountMoney));
 
         // 设置订单状态
         storeOrder.setStatus(0); // 待支付
@@ -4299,7 +4307,13 @@ public class LiveOrderServiceImpl implements ILiveOrderService {
         LiveGoodsUploadMqVo vo = LiveGoodsUploadMqVo.builder().goodsId(goods.getGoodsId()).goodsNum(Integer.parseInt(liveOrder.getTotalNum())).build();
         try {
             log.info("订单提交MQ:{}", vo);
-            rocketMQTemplate.syncSend("live-goods-upload", JSON.toJSONString(vo));
+           if (("北京卓美").equals(cloudHostProper.getCompanyName())){
+                            rocketMQTemplate.syncSend("live-goods-upload", JSON.toJSONString(vo));
+            }else {
+               //其他客户没有mq,暂时直接更新
+               updateStockAndSales(goods.getGoodsId(), purchaseNum);
+           }
+
         }catch (Exception e){
             log.error("更新库存失败!{}", vo, e);
         }
@@ -4449,6 +4463,25 @@ public class LiveOrderServiceImpl implements ILiveOrderService {
         }
     }
 
+
+    /**
+     * 更新商品库存和销量
+     * @param goodsId 商品ID
+     * @param quantity 购买数量
+     */
+    private void updateStockAndSales(Long goodsId, Integer quantity) {
+        try {
+            int affectedRows = liveGoodsMapper.updateStock(goodsId, quantity);
+            if (affectedRows <= 0) {
+                throw new RuntimeException("库存不足或更新失败,商品ID: " + goodsId);
+            }
+            log.info("库存更新成功,商品ID: {}, 数量: {}", goodsId, quantity);
+        } catch (Exception e) {
+            log.error("库存更新失败,商品ID: {}, 数量: {}", goodsId, quantity, e);
+            throw new RuntimeException("库存更新失败: " + e.getMessage(), e);
+        }
+    }
+
     @Override
     @Transactional(rollbackFor = Throwable.class, propagation = Propagation.REQUIRED)
     public R createLiveOrderTest(LiveOrder liveOrder) {
@@ -4742,25 +4775,27 @@ public class LiveOrderServiceImpl implements ILiveOrderService {
             // 创建订单日志
             liveOrderLogsService.create(order.getOrderId(), OrderLogEnum.CANCEL_ORDER.getValue(),
                     OrderLogEnum.CANCEL_ORDER.getDesc());
-            // 恢复库存
-            FsStoreProductScrm fsStoreProduct = fsStoreProductService.selectFsStoreProductById(liveOrder.getProductId());
-            LiveGoods goods = liveGoodsMapper.selectLiveGoodsByProductId(liveOrder.getLiveId(), liveOrder.getProductId());
-            fsStoreProduct.setStock(fsStoreProduct.getStock() + Integer.parseInt(liveOrder.getTotalNum()));
-            List<LiveOrderItem> liveOrderItems = liveOrderItemMapper.selectCheckedByOrderId(order.getOrderId());
-            List<String> barCodeList = new ArrayList<>();
-            //更新规格库存
-            for (LiveOrderItem item : liveOrderItems) {
-                FsStoreProduct cartDTO = JSONUtil.toBean(item.getJsonInfo(), FsStoreProduct.class);
-                if (StringUtils.isNotEmpty(cartDTO.getBarCode())) {
-                    barCodeList.add(cartDTO.getBarCode());
+            // 恢复库存 (暂时注释了-直播订单下单的时候 又没有减商城商品的库存加销量 这里纯bug,北京卓美的先不变)
+            if (("北京卓美").equals(cloudHostProper.getCompanyName())){
+                FsStoreProductScrm fsStoreProduct = fsStoreProductService.selectFsStoreProductById(liveOrder.getProductId());
+                fsStoreProduct.setStock(fsStoreProduct.getStock() + Integer.parseInt(liveOrder.getTotalNum()));
+                List<LiveOrderItem> liveOrderItems = liveOrderItemMapper.selectCheckedByOrderId(order.getOrderId());
+                List<String> barCodeList = new ArrayList<>();
+                //更新规格库存
+                for (LiveOrderItem item : liveOrderItems) {
+                    FsStoreProduct cartDTO = JSONUtil.toBean(item.getJsonInfo(), FsStoreProduct.class);
+                    if (StringUtils.isNotEmpty(cartDTO.getBarCode())) {
+                        barCodeList.add(cartDTO.getBarCode());
+                    }
                 }
-            }
-            if (!barCodeList.isEmpty()) {
-                attrValueScrmMapper.incStock(fsStoreProduct.getProductId(), barCodeList, liveOrder.getTotalNum());
+                if (!barCodeList.isEmpty()) {
+                    attrValueScrmMapper.incStock(fsStoreProduct.getProductId(), barCodeList, liveOrder.getTotalNum());
+                }
+//             更新商品库存
+                fsStoreProductScrmMapper.incStockDecSales(Long.valueOf(liveOrder.getTotalNum()), fsStoreProduct.getProductId());
             }
 
-            // 更新商品库存
-            fsStoreProductScrmMapper.incStockDecSales(Long.valueOf(liveOrder.getTotalNum()), fsStoreProduct.getProductId());
+            LiveGoods goods = liveGoodsMapper.selectLiveGoodsByProductId(liveOrder.getLiveId(), liveOrder.getProductId());
             goods.setStock(goods.getStock() + Long.parseLong(liveOrder.getTotalNum()));
             goods.setSales(goods.getSales() - Integer.parseInt(liveOrder.getTotalNum()));
             // 更新直播商品库存

+ 1 - 0
fs-user-app/src/main/java/com/fs/app/controller/app/AppController.java

@@ -60,6 +60,7 @@ public class AppController extends AppBaseController {
         if (AppId != null && !AppId.isEmpty()) {
             param.setAppId(AppId);
         }
+        log.info("支付宝支付:{}", param);
         return fsStoreOrderScrmService.payment(param, PaymentMethodEnum.ALIPAY);
     }
 

+ 1 - 1
fs-user-app/src/main/java/com/fs/app/controller/live/LiveOrderController.java

@@ -329,7 +329,7 @@ public class LiveOrderController extends AppBaseController
     }
 
     @Login
-    @ApiOperation("创建订单")
+    @ApiOperation("直播创建订单")
     @PostMapping("/create")
     @RateLimiter(time = 10, count = 10000, msg = "当前下单的人比较多,请稍后再试")
     public R create(@Validated @RequestBody LiveOrder param, HttpServletRequest request){