Pārlūkot izejas kodu

feat:自提商品订单相关接口调整

caoliqin 2 nedēļas atpakaļ
vecāks
revīzija
e972822be9

+ 24 - 0
fs-common/src/main/java/com/fs/common/core/domain/R.java

@@ -1,6 +1,7 @@
 package com.fs.common.core.domain;
 
 import com.fs.common.constant.HttpStatus;
+import lombok.Data;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -46,8 +47,31 @@ public class R extends HashMap<String, Object> {
 		return new R();
 	}
 
+	/**
+	 * 返回带强类型 data 的结果,便于接口文档生成返回对象结构
+	 */
+	public static <T> RData<T> okData(T data) {
+		return new RData<>(data);
+	}
+
 	public R put(String key, Object value) {
 		super.put(key, value);
 		return this;
 	}
+
+	/**
+	 * 扩展的强类型返回体,不影响原有 R 的 Map 结构与使用方式
+	 */
+	@Data
+	public static class RData<T> {
+		private Integer code;
+		private String msg;
+		private T data;
+
+		public RData(T data) {
+			this.code = HttpStatus.SUCCESS;
+			this.msg = "success";
+			this.data = data;
+		}
+	}
 }

+ 4 - 0
fs-service/src/main/java/com/fs/hisStore/param/FsStoreOrderPickAddParam.java

@@ -21,6 +21,10 @@ public class FsStoreOrderPickAddParam {
     @NotNull
     private Long productId;
 
+    /** 商品数量 */
+    @NotNull
+    private Integer productNum;
+
     /** 所属公司 */
     private Long companyId;
 

+ 5 - 5
fs-service/src/main/java/com/fs/hisStore/param/FsStoreOrderPickComputeParam.java

@@ -14,11 +14,11 @@ public class FsStoreOrderPickComputeParam implements Serializable {
     @NotNull
     private Long orderId;
 
-    @NotNull
-    private Long companyId;
-
-    @NotNull
-    private Long companyUserId;
+//    @NotNull
+//    private Long companyId;
+//
+//    @NotNull
+//    private Long companyUserId;
 
     @NotNull
     Integer payType;

+ 5 - 2
fs-service/src/main/java/com/fs/hisStore/param/FsStoreProductUserRecordAddParam.java

@@ -2,6 +2,7 @@ package com.fs.hisStore.param;
 
 import lombok.Data;
 
+import javax.validation.constraints.NotNull;
 import java.util.List;
 
 /**
@@ -10,13 +11,15 @@ import java.util.List;
 @Data
 public class FsStoreProductUserRecordAddParam {
 
-    /** 模板ID */
-    private Long tempId;
+//    /** 模板ID */
+//    private Long tempId;
 
     /** 商品ID */
+    @NotNull
     private Long productId;
 
     /** 用户ID */
+    @NotNull
     private Long userId;
 
     /** 备注 */

+ 8 - 2
fs-service/src/main/java/com/fs/hisStore/param/FsStoreProductUserRecordValueAddParam.java

@@ -2,6 +2,9 @@ package com.fs.hisStore.param;
 
 import lombok.Data;
 
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
 /**
  * 商品信息采集记录值新增参数
  */
@@ -9,15 +12,18 @@ import lombok.Data;
 public class FsStoreProductUserRecordValueAddParam {
 
     /** 模板字段ID */
+    @NotNull
     private Long tempFieldId;
 
     /** 字段名称 */
+    @NotBlank
     private String fieldName;
 
     /** 字段值(文本) */
+    @NotBlank
     private String fieldValue;
 
-    /** 复杂值(对象/数组) */
-    private String valueJson;
+//    /** 复杂值(对象/数组) */
+//    private String valueJson;
 }
 

+ 18 - 14
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderPickServiceImpl.java

@@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fs.common.core.domain.R;
 import com.fs.common.exception.ServiceException;
 import com.fs.common.utils.DateUtils;
+import com.fs.common.utils.SnowflakeUtil;
 import com.fs.common.utils.StringUtils;
 import com.fs.common.utils.ServletUtils;
 import com.fs.common.utils.ip.IpUtils;
@@ -80,6 +81,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import javax.servlet.http.HttpServletRequest;
 import java.io.ByteArrayInputStream;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 
 /**
@@ -208,12 +210,12 @@ public class FsStoreOrderPickServiceImpl extends ServiceImpl<FsStoreOrderPickMap
         if (product == null || 1 == product.getIsDel()) {
             return R.error("商品不存在");
         }
-        String orderCode = OrderCodeUtils.getOrderSn();
+//        String orderCode = OrderCodeUtils.getOrderSn();
+        String orderCode = SnowflakeUtil.nextIdStr();
         if (StringUtils.isEmpty(orderCode)) {
             return R.error("订单生成失败,请重试");
         }
         BigDecimal price = product.getPrice() == null ? BigDecimal.ZERO : product.getPrice();
-        String redeemQrUrl = generateRedeemedQrUrl(orderCode);
         FsStoreOrderScrm order = new FsStoreOrderScrm();
         order.setOrderCode(orderCode);
         order.setUserId(user.getUserId());
@@ -222,9 +224,14 @@ public class FsStoreOrderPickServiceImpl extends ServiceImpl<FsStoreOrderPickMap
         order.setUserPhone(user.getPhone());
         order.setUserAddress(param.getPickupAddress());
         order.setTotalNum(1L);
-        order.setTotalPrice(price);
-        order.setPayPrice(price);
-        order.setPayMoney(BigDecimal.ZERO);
+
+        // 计算订单价格
+        Integer productNum = param.getProductNum();
+        BigDecimal num = new BigDecimal(productNum);
+        BigDecimal priceN = price.multiply(num).setScale(2, RoundingMode.HALF_UP);
+        order.setTotalPrice(priceN);
+        order.setPayPrice(priceN);
+        order.setPayMoney(priceN);
         order.setPaid(0);
         order.setIsPay(0);
         order.setPayType("1");
@@ -241,7 +248,6 @@ public class FsStoreOrderPickServiceImpl extends ServiceImpl<FsStoreOrderPickMap
         }
         order.setOrderType(8);
         order.setIsPickup(1);
-        order.setRedeemedCode(redeemQrUrl);
         order.setRedeemedStatus(1);
         order.setCompanyId(param.getCompanyId());
         order.setCompanyUserId(param.getCompanyUserId());
@@ -256,13 +262,13 @@ public class FsStoreOrderPickServiceImpl extends ServiceImpl<FsStoreOrderPickMap
         orderItem.setOrderId(order.getId());
         orderItem.setOrderCode(orderCode);
         orderItem.setProductId(product.getProductId());
-        orderItem.setNum(1);
+        orderItem.setNum(param.getProductNum());
         PickItemJsonInfo jsonInfo = new PickItemJsonInfo();
         jsonInfo.setImage(product.getImage());
         jsonInfo.setProductId(product.getProductId());
-        jsonInfo.setNum(1);
+        jsonInfo.setNum(param.getProductNum());
         jsonInfo.setProductName(product.getProductName());
-        jsonInfo.setPrice(price);
+        jsonInfo.setPrice(priceN);
         orderItem.setJsonInfo(JSONUtil.toJsonStr(jsonInfo));
         fsStoreOrderItemScrmMapper.insertFsStoreOrderItem(orderItem);
         List<FsStoreOrderItemScrm> itemList = new ArrayList<>();
@@ -271,6 +277,8 @@ public class FsStoreOrderPickServiceImpl extends ServiceImpl<FsStoreOrderPickMap
         updateOrder.setId(order.getId());
         updateOrder.setItemJson(JSONUtil.toJsonStr(itemList));
         updateOrder.setUpdateTime(DateUtils.getNowDate());
+        String redeemQrUrl = generateRedeemedQrUrl(order.getId().toString());
+        updateOrder.setRedeemedCode(redeemQrUrl);
         fsStoreOrderScrmMapper.updateFsStoreOrder(updateOrder);
         return R.ok().put("order", order);
     }
@@ -310,7 +318,6 @@ public class FsStoreOrderPickServiceImpl extends ServiceImpl<FsStoreOrderPickMap
         if (payPrice.compareTo(new BigDecimal(0)) > 0) {
             if (param.getPayType().equals(1)) {
                 //全款支付
-                payMoney = payPrice;
                 payRemain = new BigDecimal(0);
                 payDelivery = new BigDecimal(0);
             }
@@ -343,8 +350,6 @@ public class FsStoreOrderPickServiceImpl extends ServiceImpl<FsStoreOrderPickMap
         }
         FsStoreOrderPickComputeParam computeParam = new FsStoreOrderPickComputeParam();
         computeParam.setOrderId(order.getId());
-        computeParam.setCompanyId(order.getCompanyId());
-        computeParam.setCompanyUserId(order.getCompanyUserId());
         computeParam.setPayType(param.getPayType());
         Map<String, Object> moneys = computeOrderMoney(order.getTotalPrice(), computeParam);
         FsStoreOrderScrm updateOrder = new FsStoreOrderScrm();
@@ -729,8 +734,7 @@ public class FsStoreOrderPickServiceImpl extends ServiceImpl<FsStoreOrderPickMap
      */
     private String generateRedeemedQrUrl(String orderCode) {
         try {
-            String qrContent = "pickOrderCode=" + orderCode;
-            byte[] imageBytes = QRCodeUtils.create(qrContent).toByteArray();
+            byte[] imageBytes = QRCodeUtils.create(orderCode).toByteArray();
             CloudStorageService storage = OSSFactory.build();
             if (storage == null) {
                 throw new ServiceException("OSS配置异常");

+ 0 - 1
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreProductUserRecordServiceImpl.java

@@ -113,7 +113,6 @@ public class FsStoreProductUserRecordServiceImpl extends ServiceImpl<FsStoreProd
                 value.setTempFieldId(item.getTempFieldId());
                 value.setFieldName(item.getFieldName());
                 value.setFieldValue(item.getFieldValue());
-                value.setValueJson(item.getValueJson());
                 value.setCreateTime(DateUtils.getNowDate());
                 fsStoreProductUserRecordValueService.insertFsStoreProductUserRecordValue(value);
             }

+ 44 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsStoreProductPackageVO.java

@@ -0,0 +1,44 @@
+package com.fs.hisStore.vo;
+
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+ public class FsStoreProductPackageVO implements Serializable
+{
+
+    /** 套餐包id */
+    private Long packageId;
+
+    /** 标题 */
+    @Excel(name = "标题")
+    private String title;
+
+    /** 描述 */
+    @Excel(name = "描述")
+    private String descs;
+
+    /** 内容 */
+    @Excel(name = "内容")
+    private String content;
+
+    /** 封面 */
+    @Excel(name = "封面")
+    private String imgUrl;
+
+    @Excel(name = "组图")
+    private String images;
+
+    /** 支付金额 */
+    @Excel(name = "支付金额")
+    private BigDecimal payMoney;
+
+
+
+
+
+
+}

+ 2 - 2
fs-user-app/src/main/java/com/fs/app/controller/store/FsPickupGoodsController.java

@@ -40,7 +40,7 @@ public class FsPickupGoodsController extends AppBaseController {
      * 自提商品列表
      */
     @GetMapping("/list")
-    public R list(FsPickupGoodsListParam param) {
+    public R.RData<PageInfo<FsStoreProductListVO>> list(FsPickupGoodsListParam param) {
         PageHelper.startPage(param.getPageNum(), param.getPageSize());
         FsStoreProductScrm fsStoreProduct = new FsStoreProductScrm();
         BeanUtils.copyProperties(param, fsStoreProduct);
@@ -49,7 +49,7 @@ public class FsPickupGoodsController extends AppBaseController {
         fsStoreProduct.setIsPickup(1);
         List<FsStoreProductListVO> list = fsStoreProductService.selectFsStoreProductListVO(fsStoreProduct);
         PageInfo<FsStoreProductListVO> listPageInfo= new PageInfo<>(list);
-        return R.ok().put("data",listPageInfo);
+        return R.okData(listPageInfo);
     }
 
     /**

+ 12 - 12
fs-user-app/src/main/java/com/fs/app/controller/store/FsStoreOrderPickController.java

@@ -36,7 +36,7 @@ public class FsStoreOrderPickController extends AppBaseController
      */
     @Login
     @GetMapping("/list")
-    public R list(FsStoreOrderPickListParam param)
+    public R.RData<List<FsStoreOrderScrm>> list(FsStoreOrderPickListParam param)
     {
         String userId = getUserId();
         FsStoreOrderScrm fsStoreOrder = new FsStoreOrderScrm();
@@ -46,19 +46,19 @@ public class FsStoreOrderPickController extends AppBaseController
         fsStoreOrder.setIsPickup(1);
         startPage();
         List<FsStoreOrderScrm> list = fsStoreOrderScrmService.selectFsStoreOrderList(fsStoreOrder);
-        return R.ok().put("data", list);
+        return R.okData(list);
     }
 
-    /**
-     * 获取自提商品订单详细信息
-     */
-    @Login
-    @GetMapping
-    public R getInfo(@RequestParam("id") Long id)
-    {
-        FsStoreOrderPick fsStoreOrderPick = fsStoreOrderPickService.selectFsStoreOrderPickById(id);
-        return R.ok().put("data", fsStoreOrderPick);
-    }
+//    /**
+//     * 获取自提商品订单详细信息
+//     */
+//    @Login
+//    @GetMapping
+//    public R.RData<FsStoreOrderPick> getInfo(@RequestParam("id") Long id)
+//    {
+//        FsStoreOrderPick fsStoreOrderPick = fsStoreOrderPickService.selectFsStoreOrderPickById(id);
+//        return R.okData(fsStoreOrderPick);
+//    }
 
     /**
      * 新增自提商品订单

+ 4 - 4
fs-user-app/src/main/java/com/fs/app/controller/store/FsStoreProductUserRecordController.java

@@ -28,23 +28,23 @@ public class FsStoreProductUserRecordController extends AppBaseController
      * 判断用户是否已填写信息采集表
      */
     @GetMapping("/hasFilled")
-    public R hasFilled(@RequestParam("userId") Long userId)
+    public R.RData<Boolean> hasFilled(@RequestParam("userId") Long userId)
     {
         FsStoreProductUserRecord query = new FsStoreProductUserRecord();
         query.setUserId(userId);
         query.setIsDel(0);
         boolean hasFilled = !fsStoreProductUserRecordService.selectFsStoreProductUserRecordList(query).isEmpty();
-        return R.ok().put("hasFilled", hasFilled);
+        return R.okData(hasFilled);
     }
 
     /**
      * 根据商品ID查询启用中的信息采集模板
      */
     @GetMapping("/template")
-    public R getTemplateByProductId(@RequestParam("productId") Long productId)
+    public R.RData<FsStoreProductUserTempDetailVO> getTemplateByProductId(@RequestParam("productId") Long productId)
     {
         FsStoreProductUserTempDetailVO result = fsStoreProductUserRecordService.selectTemplateDetailByProductId(productId);
-        return R.ok().put("data", result);
+        return R.okData(result);
     }
 
     /**