Bläddra i källkod

商品现金购买

cup 2 år sedan
förälder
incheckning
8d5872f965

+ 47 - 4
mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserDeliverOrderController.java

@@ -4,7 +4,11 @@ import cn.hutool.core.date.LocalDateTimeUtil;
 import cn.hutool.core.util.NumberUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.qs.mp.admin.domain.Goods;
+import com.qs.mp.admin.domain.GoodsSku;
 import com.qs.mp.admin.domain.vo.ShippingTemplateCalculateVO;
+import com.qs.mp.admin.service.IGoodsService;
+import com.qs.mp.admin.service.IGoodsSkuService;
 import com.qs.mp.channel.domain.ChannelOrder;
 import com.qs.mp.channel.domain.param.OrderPayParam;
 import com.qs.mp.common.core.domain.AjaxResult;
@@ -90,6 +94,12 @@ public class UserDeliverOrderController extends BaseApiController {
   @Autowired
   private IShippingTemplateService shippingTemplateService;
 
+  @Autowired
+  private IGoodsService goodsService;
+
+  @Autowired
+  private IGoodsSkuService goodsSkuService;
+
   @Value("${shipping.user}")
   public Long shippingTemplateId;
 
@@ -175,9 +185,43 @@ public class UserDeliverOrderController extends BaseApiController {
     Integer orderAmt = 0;
     Integer freightAmt = 0;
 
-    List<UserPrizeStorage> prizeStorageList = userPrizeStorageService.list(new LambdaQueryWrapper<UserPrizeStorage>()
-        .eq(UserPrizeStorage::getUserId, userId).eq(UserPrizeStorage::getStatus, PrizeStorageStatusEnum.NOT_DISTRIBUTED)
-        .in(UserPrizeStorage::getStorageId, param.getIds()));
+
+    // 商品数量
+    int goodsNum = 0;
+    List<UserPrizeStorage> prizeStorageList = new ArrayList<>();
+    if (DeliverOrderResourceEnum.PAYMENT.equals(param.getResource())) {
+      // 现金支付,设置金额信息
+      if (Objects.isNull(param.getGoodsId()) || Objects.isNull(param.getNum())) {
+        return AjaxResult.error("商品信息不能为空");
+      }
+      goodsNum = param.getNum();
+      // 获取商品信息
+      Goods goods = goodsService.getById(param.getGoodsId());
+      GoodsSku goodsSku = goodsSkuService.getById(param.getSkuId());
+      if (Objects.isNull(goods)) {
+        return AjaxResult.error("商品不存在");
+      }
+      // 封装商品信息出参
+      UserPrizeStorage prizeStorage = new UserPrizeStorage();
+      prizeStorage.setGoodsId(goods.getGoodsId());
+      prizeStorage.setPicUrl(goods.getPicUrl());
+      prizeStorage.setTitle(goods.getTitle());
+      prizeStorage.setGoodsNum(goodsNum);
+      if (Objects.nonNull(goodsSku)) {
+        prizeStorage.setPicUrl(goodsSku.getPicUrl());
+        prizeStorage.setSkuId(goodsSku.getSkuId());
+        prizeStorage.setProperties(goodsSku.getProperties());
+      }
+
+      prizeStorageList.add(prizeStorage);
+      orderSettleVO.setResource(DeliverOrderResourceEnum.PAYMENT);
+    }else {
+      prizeStorageList = userPrizeStorageService.list(new LambdaQueryWrapper<UserPrizeStorage>()
+              .eq(UserPrizeStorage::getUserId, userId).eq(UserPrizeStorage::getStatus, PrizeStorageStatusEnum.NOT_DISTRIBUTED)
+              .in(UserPrizeStorage::getStorageId, param.getIds()));
+      goodsNum = prizeStorageList.stream().mapToInt(UserPrizeStorage::getGoodsNum).sum();
+      orderSettleVO.setResource(DeliverOrderResourceEnum.DELIVER);
+    }
 
 
     // 计算运费
@@ -192,7 +236,6 @@ public class UserDeliverOrderController extends BaseApiController {
         orderSettleVO.setFreightType(shippingTemplateCalculateVO.getType());
 
         if (ShippingTemplateRuleTypeEnum.SHIP.getValue().equals(shippingTemplateCalculateVO.getType())) {
-          int goodsNum = prizeStorageList.stream().mapToInt(UserPrizeStorage::getGoodsNum).sum();
           // 计算运费
           freightAmt = shippingTemplateService.calculateFreightAmt(goodsNum,shippingTemplateCalculateVO);
         }

+ 1 - 1
mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserTicketController.java

@@ -139,7 +139,7 @@ public class UserTicketController extends BaseApiController {
         continue;
 //        ticketAwardsLabelVO.setHitRate(new BigDecimal(0));
       }else {
-        ticketAwardsLabelVO.setHitRate(new BigDecimal(num).divide(new BigDecimal(quantity), 1, RoundingMode.HALF_UP));
+        ticketAwardsLabelVO.setHitRate(new BigDecimal(num).divide(new BigDecimal(quantity).multiply(BigDecimal.valueOf(100)), 1, RoundingMode.HALF_UP));
       }
       ticketAwardsLabelVOS.add(ticketAwardsLabelVO);
     }

+ 13 - 0
mp-service/src/main/java/com/qs/mp/user/domain/param/DeliverOrderParam.java

@@ -1,5 +1,6 @@
 package com.qs.mp.user.domain.param;
 
+import com.qs.mp.common.enums.DeliverOrderResourceEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import java.util.List;
@@ -10,6 +11,18 @@ import lombok.Data;
 @Data
 public class DeliverOrderParam {
 
+	@ApiModelProperty("订单来源:1提货订单,2现金购买")
+	private DeliverOrderResourceEnum resource;
+
+	@ApiModelProperty("商品id")
+	private Long goodsId;
+
+	@ApiModelProperty("sku Id")
+	private Long skuId;
+
+	@ApiModelProperty("商品数量")
+	private Integer num;
+
 	@NotEmpty(message = "奖品库ID不能为空")
 	@ApiModelProperty(value = "奖品库IDs",required=true)
 	private List<String> ids;

+ 6 - 0
mp-service/src/main/java/com/qs/mp/user/domain/vo/DeliverOrderSettleVO.java

@@ -1,5 +1,7 @@
 package com.qs.mp.user.domain.vo;
 
+import com.qs.mp.admin.domain.vo.GoodsVO;
+import com.qs.mp.common.enums.DeliverOrderResourceEnum;
 import com.qs.mp.user.domain.UserAddr;
 import com.qs.mp.user.domain.UserPrizeStorage;
 import java.util.ArrayList;
@@ -17,6 +19,10 @@ import lombok.Data;
 @ApiModel("用户提货订单结算出参类")
 public class DeliverOrderSettleVO {
 
+  @ApiModelProperty("订单来源:1提货订单,2现金购买")
+  private DeliverOrderResourceEnum resource;
+
+
   @ApiModelProperty("用户配送地址")
   private UserAddr addr;
 

+ 9 - 9
mp-service/src/main/java/com/qs/mp/user/service/impl/UserDeliverOrderServiceImpl.java

@@ -7,10 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.qs.mp.admin.domain.Goods;
 import com.qs.mp.admin.domain.param.UserDeliverOrderShipParam;
 import com.qs.mp.admin.service.IGoodsService;
-import com.qs.mp.common.enums.DeliverOrderStatusEnum;
-import com.qs.mp.common.enums.DeliverTypeEnum;
-import com.qs.mp.common.enums.PrizeStorageStatusEnum;
-import com.qs.mp.common.enums.UserTicketOrderStatusEnum;
+import com.qs.mp.common.enums.*;
 import com.qs.mp.common.exception.ServiceException;
 import com.qs.mp.common.utils.DateUtils;
 import com.qs.mp.common.utils.LogUtil;
@@ -72,6 +69,7 @@ public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMap
     UserDeliverOrder userDeliverOrder = new UserDeliverOrder();
     userDeliverOrder.setOrderId(bizIdGenerator.newIdWithUidSharding(String.valueOf(userId)));
     userDeliverOrder.setUserId(userId);
+    userDeliverOrder.setResource(orderSettleVO.getResource());
     UserAddr userAddr = orderSettleVO.getAddr();
     userDeliverOrder.setReceiver(userAddr.getReceiver());
     userDeliverOrder.setTel(userAddr.getMobile());
@@ -106,13 +104,15 @@ public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMap
       orderItem.setSupplierId(goods.getSupplierId());
       orderItem.setShoppingLink(goods.getShoppingLink());
 
-        userDeliverOrderItemService.save(orderItem);
-      boolean rtn = userPrizeStorageService.update(new LambdaUpdateWrapper<UserPrizeStorage>()
-                .set(UserPrizeStorage::getStatus, PrizeStorageStatusEnum.HAS_DISTRIBUTED)
-                .eq(UserPrizeStorage::getStorageId, prizeStorage.getStorageId()));
+      userDeliverOrderItemService.save(orderItem);
+      if (!DeliverOrderResourceEnum.PAYMENT.equals(orderSettleVO.getResource())) {
+          boolean rtn = userPrizeStorageService.update(new LambdaUpdateWrapper<UserPrizeStorage>()
+                  .set(UserPrizeStorage::getStatus, PrizeStorageStatusEnum.HAS_DISTRIBUTED)
+                  .eq(UserPrizeStorage::getStorageId, prizeStorage.getStorageId()));
 
-        Assert.isTrue(rtn, "提交提货订单时,更新状态失败。userDeliverOrder:" + JSONObject.toJSONString(userDeliverOrder));
+          Assert.isTrue(rtn, "提交提货订单时,更新状态失败。userDeliverOrder:" + JSONObject.toJSONString(userDeliverOrder));
 
+      }
     }
 
     return userDeliverOrder.getOrderId();