Переглянути джерело

修改获取商品、加购物车,创建订单接口

baolei 6 місяців тому
батько
коміт
8bb459cfd8

+ 1 - 1
08.src/Xingxi/xingxi-miniprogram-api/src/main/java/com/xingxi/api/controller/ProdApiController.java

@@ -38,7 +38,7 @@ public class ProdApiController extends BaseApiController {
     @PostMapping("/prodDetail")
     public MercProdResponse getProdDetail(@Valid @RequestBody MercProdRequest request) {
 
-        return prodService.selectMercProdById(request.getMercProdId());
+        return prodService.selectMercProdById(request);
 
     }
 }

+ 0 - 2
08.src/Xingxi/xingxi-miniprogram-api/src/main/java/com/xingxi/api/data/domain/MercProdRequest.java

@@ -6,8 +6,6 @@ import lombok.Data;
 @Data
 public class MercProdRequest extends PageDTO {
 
-    private Long mercProdId;
-
     // 商户ID
     private Long mercId;
 

+ 1 - 1
08.src/Xingxi/xingxi-miniprogram-api/src/main/java/com/xingxi/api/data/domain/MercProdResponse.java

@@ -9,7 +9,7 @@ import java.util.List;
 @Data
 public class MercProdResponse {
 
-    private Long mercProdId;
+//    private Long mercProdId;
 
     // 商户ID
     private Long mercId;

+ 2 - 0
08.src/Xingxi/xingxi-miniprogram-api/src/main/java/com/xingxi/api/data/mapper/WxApiProductMapper.java

@@ -2,6 +2,7 @@ package com.xingxi.api.data.mapper;
 
 import com.xingxi.api.data.domain.MercProdRequest;
 import com.xingxi.api.data.domain.MercProdResponse;
+import com.xingxi.master.merchant.domain.MerchantProd;
 import com.xingxi.master.merchant.mapper.MerchantProdMapper;
 import com.xingxi.master.product.mapper.ProdMapper;
 import org.apache.ibatis.annotations.Mapper;
@@ -13,5 +14,6 @@ public interface WxApiProductMapper extends ProdMapper, MerchantProdMapper {
 
     List<MercProdResponse> selectProductList(MercProdRequest request);
 
+    MerchantProd selectFirstMerchantProdByCondition(MerchantProd merchantProd);
 
 }

+ 3 - 1
08.src/Xingxi/xingxi-miniprogram-api/src/main/java/com/xingxi/api/model/CartsRequest.java

@@ -12,7 +12,9 @@ public class CartsRequest {
     // 主键
     private Long id;
     @NotNull
-    private Long mercProdId;
+    private Long mercId;
+    @NotNull
+    private Long prodId;
     @NotNull
     private Long prodAttrId;
     @NotNull

+ 3 - 1
08.src/Xingxi/xingxi-miniprogram-api/src/main/java/com/xingxi/api/model/OrderItemDTO.java

@@ -9,7 +9,9 @@ public class OrderItemDTO {
 
     private Long cartsId;
 
-    private Long mercProdId;
+    private Long mercId;
+    private Long prodId;
+    private Long prodAttrId;
 
     private Integer count;
 }

+ 1 - 1
08.src/Xingxi/xingxi-miniprogram-api/src/main/java/com/xingxi/api/service/ProdServiceI.java

@@ -11,6 +11,6 @@ public interface ProdServiceI {
 
     List<MercProdResponse> selectMercProdList(MercProdRequest request);
 
-    MercProdResponse selectMercProdById(Long mercProdId);
+    MercProdResponse selectMercProdById(MercProdRequest mercProd);
 
 }

+ 18 - 9
08.src/Xingxi/xingxi-miniprogram-api/src/main/java/com/xingxi/api/service/impl/CartsApiServiceImpl.java

@@ -1,6 +1,7 @@
 package com.xingxi.api.service.impl;
 
 import com.xingxi.api.common.UserContext;
+import com.xingxi.api.data.mapper.WxApiProductMapper;
 import com.xingxi.api.model.CartsRequest;
 import com.xingxi.api.model.CartsListResponse;
 import com.xingxi.api.model.CartsResponse;
@@ -41,7 +42,7 @@ class CartsApiServiceImpl implements CartsServiceI {
     @Autowired
     private ProdPicServiceImpl prodPicServiceImpl;
     @Autowired
-    private MerchantProdMapper merchantProdMapper;
+    private WxApiProductMapper wxApiProductMapper;
 
     @Override
     public CartsListResponse add(UserContext userContext, CartsRequest request) {
@@ -49,9 +50,17 @@ class CartsApiServiceImpl implements CartsServiceI {
         SysUser currentUser = userContext.getCurrentUser();
         Long userId = currentUser.getUserId();
 
+        MerchantProd condMercProd = new MerchantProd();
+
+        condMercProd.setMercId(request.getMercId());
+        condMercProd.setProdId(request.getProdId());
+        condMercProd.setProdAttrId(request.getProdAttrId());
+
+        MerchantProd merchantProd = wxApiProductMapper.selectFirstMerchantProdByCondition(condMercProd);
+
         Carts cond = new Carts();
         cond.setUserId(userId);
-        cond.setMercProdId(request.getMercProdId());
+        cond.setMercProdId(merchantProd.getMercProdId());
         cond.setProdAttrId(request.getProdAttrId());
         cond.setDelFlag(EDelFlag.NO.getVal());
 
@@ -61,9 +70,9 @@ class CartsApiServiceImpl implements CartsServiceI {
 
         if (StringUtils.isEmpty(exiCarts)) {
             carts.setUserId(userId);
-            carts.setMercProdId(request.getMercProdId());
+            carts.setMercProdId(merchantProd.getMercProdId());
             carts.setProdAttrId(request.getProdAttrId());
-            carts.setQuantity(1);
+            carts.setQuantity(request.getCount());
             carts.setDelFlag(EDelFlag.NO.getVal());
             carts.setCheckFlag(EYesNo.YES.getVal());
 
@@ -93,7 +102,7 @@ class CartsApiServiceImpl implements CartsServiceI {
 
             CartsResponse cartsResponse = new CartsResponse();
 
-            MerchantProd mercProd = merchantProdMapper.selectMerchantProdByMercProdId(carts.getMercProdId());
+            MerchantProd mercProd = wxApiProductMapper.selectMerchantProdByMercProdId(carts.getMercProdId());
 
             cartsResponse.setId(carts.getId());
             cartsResponse.setUserId(userId);
@@ -150,7 +159,7 @@ class CartsApiServiceImpl implements CartsServiceI {
         BigDecimal sum = BigDecimal.ZERO;
         for (Carts carts : exiCarts) {
 
-            MerchantProd mercProd = merchantProdMapper.selectMerchantProdByMercProdId(carts.getMercProdId());
+            MerchantProd mercProd = wxApiProductMapper.selectMerchantProdByMercProdId(carts.getMercProdId());
 
             ProdAttrPrice condPrice = new ProdAttrPrice();
             condPrice.setProdAttrId(carts.getProdAttrId());
@@ -202,7 +211,7 @@ class CartsApiServiceImpl implements CartsServiceI {
         BigDecimal sum = BigDecimal.ZERO;
         for (Carts carts : exiCarts) {
 
-            MerchantProd mercProd = merchantProdMapper.selectMerchantProdByMercProdId(carts.getMercProdId());
+            MerchantProd mercProd = wxApiProductMapper.selectMerchantProdByMercProdId(carts.getMercProdId());
 
             carts.setCheckFlag(EYesNo.YES.getVal());
             carts.setUpdateUser(userContext.getCurrentUser().getUserId().toString());
@@ -256,7 +265,7 @@ class CartsApiServiceImpl implements CartsServiceI {
         BigDecimal sum = BigDecimal.ZERO;
         for (Carts carts : exiCarts) {
 
-            MerchantProd mercProd = merchantProdMapper.selectMerchantProdByMercProdId(carts.getMercProdId());
+            MerchantProd mercProd = wxApiProductMapper.selectMerchantProdByMercProdId(carts.getMercProdId());
 
             carts.setCheckFlag(EYesNo.YES.getVal());
             carts.setUpdateUser(userContext.getCurrentUser().getUserId().toString());
@@ -302,7 +311,7 @@ class CartsApiServiceImpl implements CartsServiceI {
         BigDecimal sum = BigDecimal.ZERO;
         for (Carts carts : exiCarts) {
 
-            MerchantProd mercProd = merchantProdMapper.selectMerchantProdByMercProdId(carts.getMercProdId());
+            MerchantProd mercProd = wxApiProductMapper.selectMerchantProdByMercProdId(carts.getMercProdId());
 
             ProdAttrPrice condPrice = new ProdAttrPrice();
             condPrice.setProdAttrId(carts.getProdAttrId());

+ 12 - 4
08.src/Xingxi/xingxi-miniprogram-api/src/main/java/com/xingxi/api/service/impl/OrderApiServiceImpl.java

@@ -15,6 +15,7 @@ import com.xingxi.api.data.domain.OrderDetailDTO;
 import com.xingxi.api.data.mapper.WxApiOrderMapper;
 import com.xingxi.api.data.mapper.WxApiPaymentInfoMapper;
 import com.xingxi.api.data.mapper.WxApiProdInventoryMapper;
+import com.xingxi.api.data.mapper.WxApiProductMapper;
 import com.xingxi.api.model.*;
 import com.xingxi.api.service.OrderServiceI;
 import com.xingxi.business.Order.domain.Order;
@@ -74,7 +75,7 @@ class OrderApiServiceImpl implements OrderServiceI {
     @Autowired
     private OrderDeliveryExprMapper orderDeliveryExprMapper;
     @Autowired
-    private MerchantProdMapper merchantProdMapper;
+    private WxApiProductMapper wxApiProductMapper;
     @Autowired
     private ProdMapper prodMapper;
     @Autowired
@@ -199,7 +200,14 @@ class OrderApiServiceImpl implements OrderServiceI {
 
         List<OrderDetail> orderDetailItems = new ArrayList<>();
         for (OrderItemDTO orderItemDTO : orderItemDTOS) {
-            MerchantProd merchantProd = merchantProdMapper.selectMerchantProdByMercProdId(orderItemDTO.getMercProdId());
+//            MerchantProd merchantProd = merchantProdMapper.selectMerchantProdByMercProdId(orderItemDTO.getMercProdId());
+            MerchantProd condMerchant = new MerchantProd();
+            condMerchant.setMercId(orderItemDTO.getMercId());
+            condMerchant.setProdId(orderItemDTO.getProdId());
+            condMerchant.setProdAttrId(orderItemDTO.getProdAttrId());
+
+            MerchantProd merchantProd = wxApiProductMapper.selectFirstMerchantProdByCondition(condMerchant);
+
             Prod prod = prodMapper.selectProdById(merchantProd.getProdId());
             order.setSellerId(merchantProd.getMercId());
 
@@ -210,7 +218,7 @@ class OrderApiServiceImpl implements OrderServiceI {
 
             List<ProdVendor> prodVendorList = prodVendorMapper.selectProdVendorList(condPv);
             if (prodVendorList.isEmpty()) {
-                log.error("商户商品[" + orderItemDTO.getMercProdId() + "]无供应商");
+                log.error("商户商品[" + merchantProd.getMercProdId() + "]无供应商");
                 throw new BusinessException("未查询到商品的供应商");
             }
 
@@ -231,7 +239,7 @@ class OrderApiServiceImpl implements OrderServiceI {
             condPrice.setSellerId(merchantProd.getMercId());
             List<ProdAttrPrice> prodAttrPriceList = prodAttrPriceMapper.selectProdAttrPriceList(condPrice);
             if (StringUtils.isEmpty(prodAttrPriceList)) {
-                log.error("商户商品[{}]无价格", orderItemDTO.getMercProdId());
+                log.error("商户商品[{}]无价格", merchantProd.getMercProdId());
                 throw new BusinessException("未查询到商品的价格");
             }
 

+ 28 - 22
08.src/Xingxi/xingxi-miniprogram-api/src/main/java/com/xingxi/api/service/impl/ProdApiServiceImpl.java

@@ -14,7 +14,9 @@ import com.xingxi.common.enums.ERoleKey;
 import com.xingxi.common.utils.PageUtils;
 import com.xingxi.common.utils.StringUtils;
 import com.xingxi.master.merchant.domain.MerchantProd;
+import com.xingxi.master.merchant.mapper.MerchantProdMapper;
 import com.xingxi.master.product.domain.*;
+import com.xingxi.master.product.mapper.ProdAttrMapper;
 import com.xingxi.master.product.service.IProdAttrJointService;
 import com.xingxi.master.product.service.IProdAttrPriceService;
 import com.xingxi.master.product.service.IProdAttrService;
@@ -41,7 +43,7 @@ class ProdApiServiceImpl implements ProdServiceI {
     IProdPicService prodPicService;
 
     @Autowired
-    IProdAttrService prodAttrService;
+    ProdAttrMapper prodAttrMapper;
 
     @Autowired
     IProdAttrPriceService prodAttrPriceService;
@@ -52,6 +54,9 @@ class ProdApiServiceImpl implements ProdServiceI {
     @Autowired
     private SysConfigMapper configMapper;
 
+    @Autowired
+    private MerchantProdMapper merchantProdMapper;
+
     /**
      * 根据键名查询参数配置信息
      *
@@ -80,8 +85,6 @@ class ProdApiServiceImpl implements ProdServiceI {
         Page<MercProdResponse> rtn  = PageHelper.startPage(pageNum, pageSize)
                 .doSelectPage(() -> productMapper.selectProductList(request));
 
-//        List<MercProdResponse> rtn = productMapper.selectProductList(request);
-
         for (MercProdResponse mp : rtn) {
             ProdPic condPic = new ProdPic();
             condPic.setProdId(mp.getProdId());
@@ -91,19 +94,21 @@ class ProdApiServiceImpl implements ProdServiceI {
 
             mp.setProdPicList(prodPicList);
 
-            ProdAttr condAttr = new ProdAttr();
-            condAttr.setProdId(mp.getProdId());
-            condAttr.setDelFlag(EDelFlag.NO.getVal());
+            MerchantProd condMercProd = new MerchantProd();
+            condMercProd.setMercId(mp.getMercId());
+            condMercProd.setProdId(mp.getProdId());
+            condMercProd.setDelFlag(EDelFlag.NO.getVal());
 
-            List<ProdAttr> prodAttrList = prodAttrService.selectProdAttrList(condAttr);
+            List<MerchantProd> merchantProdList = merchantProdMapper.selectMerchantProdList(condMercProd);
 
             List<ProdAttrResponse> prodAttrResponseList = new ArrayList<>();
 
-            for (ProdAttr prodAttr : prodAttrList) {
-                ProdAttrResponse prodAttrResponse = new ProdAttrResponse();
+            for (MerchantProd merchantProd : merchantProdList) {
+                ProdAttr prodAttr = prodAttrMapper.selectProdAttrByProdAttrId(merchantProd.getProdAttrId());
 
-                prodAttrResponse.setProdAttrId(prodAttr.getProdAttrId());
-                prodAttrResponse.setProdId(prodAttr.getProdId());
+                ProdAttrResponse prodAttrResponse = new ProdAttrResponse();
+                prodAttrResponse.setProdAttrId(merchantProd.getProdAttrId());
+                prodAttrResponse.setProdId(merchantProd.getProdId());
                 prodAttrResponse.setAttrName(prodAttr.getAttrName());
                 prodAttrResponse.setAttrType(prodAttr.getAttrType());
                 prodAttrResponse.setDelFlag(prodAttr.getDelFlag());
@@ -135,12 +140,9 @@ class ProdApiServiceImpl implements ProdServiceI {
     }
 
     @Override
-    public MercProdResponse selectMercProdById(Long mercProdId) {
+    public MercProdResponse selectMercProdById(MercProdRequest mercProd) {
         MercProdResponse rtn = new MercProdResponse();
 
-        MerchantProd mercProd = productMapper.selectMerchantProdByMercProdId(mercProdId);
-
-        rtn.setMercProdId(mercProd.getMercProdId());
         rtn.setMercId(mercProd.getMercId());
         rtn.setProdId(mercProd.getProdId());
         Prod prod = productMapper.selectProdById(mercProd.getProdId());
@@ -159,19 +161,23 @@ class ProdApiServiceImpl implements ProdServiceI {
         List<ProdPic> prodPicList = prodPicService.selectProdPicList(condPic);
         rtn.setProdPicList(prodPicList);
 
-        ProdAttr condAttr = new ProdAttr();
-        condAttr.setProdId(prod.getId());
-        condAttr.setDelFlag(EDelFlag.NO.getVal());
+        MerchantProd condMercProd = new MerchantProd();
+        condMercProd.setMercId(mercProd.getMercId());
+        condMercProd.setProdId(mercProd.getProdId());
+        condMercProd.setProdAttrId(mercProd.getProdAttrId());
+        condMercProd.setDelFlag(EDelFlag.NO.getVal());
 
-        List<ProdAttr> prodAttrList = prodAttrService.selectProdAttrList(condAttr);
+        List<MerchantProd> merchantProdList = merchantProdMapper.selectMerchantProdList(condMercProd);
 
         List<ProdAttrResponse> prodAttrResponseList = new ArrayList<>();
 
-        for (ProdAttr prodAttr : prodAttrList) {
+        for (MerchantProd mp : merchantProdList) {
+            ProdAttr prodAttr= prodAttrMapper.selectProdAttrByProdAttrId(mp.getProdAttrId());
+
             ProdAttrResponse prodAttrResponse = new ProdAttrResponse();
 
-            prodAttrResponse.setProdAttrId(prodAttr.getProdAttrId());
-            prodAttrResponse.setProdId(prodAttr.getProdId());
+            prodAttrResponse.setProdAttrId(mp.getProdAttrId());
+            prodAttrResponse.setProdId(mp.getProdId());
             prodAttrResponse.setAttrName(prodAttr.getAttrName());
             prodAttrResponse.setAttrType(prodAttr.getAttrType());
             prodAttrResponse.setDelFlag(prodAttr.getDelFlag());

+ 13 - 3
08.src/Xingxi/xingxi-miniprogram-api/src/main/resources/META-INF/sqlmap/WxApiProductMapper.xml

@@ -5,7 +5,6 @@
 <mapper namespace="com.xingxi.api.data.mapper.WxApiProductMapper">
 
     <resultMap id="MercProdResponse" type="MercProdResponse">
-        <id property="mercProdId"    column="mercProdId"/>
         <result property="mercId" column="mercId"/>
         <result property="prodClassId"    column="prodClassId"/>
         <result property="prodId"    column="prodId"/>
@@ -19,13 +18,12 @@
     </resultMap>
 
     <select id="selectProductList" parameterType="MercProdRequest" resultMap="MercProdResponse">
-        SELECT mmp.mercProdId,mmp.mercId,mp.prodClassId,mmp.prodId,mp.prodName,mp.Id,mp.designerId,mp.description,mp.prodStatus,mmp.delFlag
+        SELECT distinct mmp.mercId,mp.prodClassId,mmp.prodId,mp.prodName,mp.Id,mp.designerId,mp.description,mp.prodStatus,mmp.delFlag
         FROM m_merchant_prod mmp
         LEFT JOIN m_prod mp ON mmp.prodId = mp.id
         <where>
             mmp.shelfFlag = '1'
             AND mmp.delFlag = '0'
-            <if test="mercProdId != null ">AND mmp.mercProdId = #{mercProdId}</if>
             <if test="mercId != null ">AND mmp.mercId = #{mercId}</if>
             <if test="prodId != null ">AND mmp.prodId = #{prodId}</if>
             <if test="prodAttrId != null">AND mmp.prodAttrId = #{prodAttrId} </if>
@@ -34,4 +32,16 @@
             <if test="prodName != null and prodName != ''">AND mp.prodName like concat('%',#{prodName},'%')</if>
         </where>
     </select>
+
+    <select id="selectFirstMerchantProdByCondition" parameterType="MerchantProd" resultType="MerchantProd">
+        select mercProdId, mercId, prodId, prodAttrId, shelfTime, shelfFlag, delFlag, createUser, createTime, updateUser, updateTime
+        FROM m_merchant_prod
+        <where>
+            <if test="mercProdId != null ">AND mercProdId = #{mercProdId}</if>
+            <if test="mercId != null ">AND mercId = #{mercId}</if>
+            <if test="prodId != null ">AND prodId = #{prodId}</if>
+            <if test="prodAttrId != null">AND prodAttrId = #{prodAttrId} </if>
+        </where>
+        limit 1
+    </select>
 </mapper>