Browse Source

sku不许删除

liujunchi 2 years ago
parent
commit
1425a60e7a

+ 6 - 0
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/PmsProductServiceImpl.java

@@ -11,6 +11,7 @@ import com.yonge.cooleshow.admin.dto.PmsProductResult;
 import com.yonge.cooleshow.admin.service.PmsProductService;
 import com.yonge.cooleshow.mbg.mapper.*;
 import com.yonge.cooleshow.mbg.model.*;
+import com.yonge.toolset.base.exception.BizException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -192,6 +193,11 @@ public class PmsProductServiceImpl implements PmsProductService {
         }
         //删除sku
         if(CollUtil.isNotEmpty(removeSkuList)){
+            for (PmsSkuStock pmsSkuStock : removeSkuList) {
+                if (org.apache.commons.lang3.StringUtils.isNotBlank(pmsSkuStock.getPlatformLock())) {
+                    throw new BizException("该商品已被锁定,不能删除");
+                }
+            }
             List<Long> removeSkuIds = removeSkuList.stream().map(PmsSkuStock::getId).collect(Collectors.toList());
             PmsSkuStockExample removeExample = new PmsSkuStockExample();
             removeExample.createCriteria().andIdIn(removeSkuIds);

+ 1 - 1
cooleshow-mall/mall-admin/src/main/resources/config/mybatis/PmsProductDao.xml

@@ -24,7 +24,7 @@
             l.id ladder_id,l.product_id ladder_product_id,l.discount ladder_discount,l.count ladder_count,l.price ladder_price,
             pf.id full_id,pf.product_id full_product_id,pf.full_price full_full_price,pf.reduce_price full_reduce_price,
             m.id member_id,m.product_id member_product_id,m.member_level_id member_member_level_id,m.member_price member_member_price,m.member_level_name member_member_level_name,
-            s.id as  sku_id,s.product_id sku_product_id,s.price sku_price,s.low_stock sku_low_stock,s.pic sku_pic,s.sale sku_sale,s.sku_code sku_sku_code,s.stock sku_stock,s.sp_data sku_sp_data,
+            s.id as  sku_id,s.product_id sku_product_id,s.price sku_price,s.low_stock sku_low_stock,s.pic sku_pic,s.sale sku_sale,s.sku_code sku_sku_code,s.stock sku_stock,s.sp_data sku_sp_data,s.platform_lock sku_platform_lock,
             a.id attribute_id,a.product_id attribute_product_id,a.product_attribute_id attribute_product_attribute_id,a.value attribute_value
         FROM pms_product p
         LEFT JOIN pms_product_category pc on pc.id = p.product_category_id

+ 12 - 0
cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/PmsSkuStock.java

@@ -35,8 +35,20 @@ public class PmsSkuStock implements Serializable {
     @ApiModelProperty(value = "商品销售属性,json格式")
     private String spData;
 
+    @ApiModelProperty("平台锁定 被其他平台使用,不许删除")
+    private String platformLock;
+
     private static final long serialVersionUID = 1L;
 
+
+    public String getPlatformLock() {
+        return platformLock;
+    }
+
+    public void setPlatformLock(String platformLock) {
+        this.platformLock = platformLock;
+    }
+
     public Long getId() {
         return id;
     }

+ 18 - 3
cooleshow-mall/mall-mbg/src/main/resources/config/mybatis/PmsSkuStockMapper.xml

@@ -13,6 +13,7 @@
     <result column="promotion_price" jdbcType="DECIMAL" property="promotionPrice" />
     <result column="lock_stock" jdbcType="INTEGER" property="lockStock" />
     <result column="sp_data" jdbcType="VARCHAR" property="spData" />
+    <result column="platform_lock" jdbcType="VARCHAR" property="platformLock" />
   </resultMap>
   <sql id="Example_Where_Clause">
     <where>
@@ -73,7 +74,7 @@
     </where>
   </sql>
   <sql id="Base_Column_List">
-    id, product_id, sku_code, price, stock, low_stock, pic, sale, promotion_price, lock_stock, 
+    id, product_id, sku_code, price, stock, low_stock, pic, sale, promotion_price, lock_stock, platform_lock,
     sp_data
   </sql>
   <select id="selectByExample" parameterType="com.yonge.cooleshow.mbg.model.PmsSkuStockExample" resultMap="BaseResultMap">
@@ -112,11 +113,11 @@
     </selectKey>
     insert into pms_sku_stock (product_id, sku_code, price, 
       stock, low_stock, pic, 
-      sale, promotion_price, lock_stock, 
+      sale, promotion_price, lock_stock, platform_lock,
       sp_data)
     values (#{productId,jdbcType=BIGINT}, #{skuCode,jdbcType=VARCHAR}, #{price,jdbcType=DECIMAL}, 
       #{stock,jdbcType=INTEGER}, #{lowStock,jdbcType=INTEGER}, #{pic,jdbcType=VARCHAR}, 
-      #{sale,jdbcType=INTEGER}, #{promotionPrice,jdbcType=DECIMAL}, #{lockStock,jdbcType=INTEGER}, 
+      #{sale,jdbcType=INTEGER}, #{promotionPrice,jdbcType=DECIMAL}, #{lockStock,jdbcType=INTEGER}, #{platformLock},
       #{spData,jdbcType=VARCHAR})
   </insert>
   <insert id="insertSelective" parameterType="com.yonge.cooleshow.mbg.model.PmsSkuStock">
@@ -155,6 +156,9 @@
       <if test="spData != null">
         sp_data,
       </if>
+      <if test="platformLock != null">
+        platform_lock,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
       <if test="productId != null">
@@ -187,6 +191,9 @@
       <if test="spData != null">
         #{spData,jdbcType=VARCHAR},
       </if>
+      <if test="platformLock != null">
+        #{platformLock,jdbcType=VARCHAR},
+      </if>
     </trim>
   </insert>
   <select id="countByExample" parameterType="com.yonge.cooleshow.mbg.model.PmsSkuStockExample" resultType="java.lang.Long">
@@ -231,6 +238,9 @@
       <if test="record.spData != null">
         sp_data = #{record.spData,jdbcType=VARCHAR},
       </if>
+      <if test="record.spData != null">
+        platform_lock = #{record.platformLock,jdbcType=VARCHAR},
+      </if>
     </set>
     <if test="_parameter != null">
       <include refid="Update_By_Example_Where_Clause" />
@@ -248,6 +258,7 @@
       sale = #{record.sale,jdbcType=INTEGER},
       promotion_price = #{record.promotionPrice,jdbcType=DECIMAL},
       lock_stock = #{record.lockStock,jdbcType=INTEGER},
+      platform_lock = #{record.platformLock,jdbcType=VARCHAR},
       sp_data = #{record.spData,jdbcType=VARCHAR}
     <if test="_parameter != null">
       <include refid="Update_By_Example_Where_Clause" />
@@ -286,6 +297,9 @@
       <if test="spData != null">
         sp_data = #{spData,jdbcType=VARCHAR},
       </if>
+      <if test="spData != null">
+        platform_lock = #{platformLock,jdbcType=VARCHAR},
+      </if>
     </set>
     where id = #{id,jdbcType=BIGINT}
   </update>
@@ -300,6 +314,7 @@
       sale = #{sale,jdbcType=INTEGER},
       promotion_price = #{promotionPrice,jdbcType=DECIMAL},
       lock_stock = #{lockStock,jdbcType=INTEGER},
+    platform_lock = #{platformLock,jdbcType=VARCHAR},
       sp_data = #{spData,jdbcType=VARCHAR}
     where id = #{id,jdbcType=BIGINT}
   </update>

+ 15 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/open/OpenShareController.java

@@ -202,4 +202,19 @@ public class OpenShareController extends BaseController {
         return R.ok(portalOrderService.productOrderCourier(orderNo));
 
     }
+
+
+
+
+
+    /**
+     * 锁定/解锁 sku
+     *
+     */
+    @GetMapping(value = "/product/lockSku/{id}", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
+    public R<Boolean> productOrderCourier(@PathVariable(name = "id") Long skuId,@RequestParam("platform") String platform,@RequestParam("lockState") Boolean lockState) {
+        log.info("锁定/解锁 skuId : {},platform:{},lockState:{}",skuId,platform,lockState);
+        return R.ok(portalOrderService.lockSku(skuId,platform,lockState));
+
+    }
 }

+ 10 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/OmsPortalOrderService.java

@@ -151,4 +151,14 @@ public interface OmsPortalOrderService {
      * @return
      */
     OmsOrderCourier productOrderCourier(String orderNo);
+
+    /**
+     * 锁定/ 解锁 sku
+     *
+     * @param skuId skuId
+     * @param platform 平台
+     * @param lockState 锁定状态
+     * @return
+     */
+    Boolean lockSku(Long skuId, String platform, Boolean lockState);
 }

+ 32 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java

@@ -1046,6 +1046,38 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
         return null;
     }
 
+    @Override
+    @Transactional
+    public Boolean lockSku(Long skuId, String platform, Boolean lockState) {
+
+        PmsSkuStock pmsSkuStock = skuStockMapper.selectByPrimaryKey(skuId);
+        if (pmsSkuStock == null) {
+            throw new BizException("商品规格不存在");
+        }
+        String platformLock = pmsSkuStock.getPlatformLock();
+        if (StringUtil.isEmpty(platformLock)) {
+            platformLock = platform;
+        } else {
+            if (lockState) {
+                if (platformLock.contains(platform)) {
+                    // throw new BizException("商品已锁定");
+                    return true;
+                }
+                platformLock = platformLock + "," + platform;
+            } else {
+                if (!platformLock.contains(platform)) {
+                    // throw new BizException("商品未锁定");
+                    return true;
+                }
+                platformLock = platformLock.replace(platform, "");
+            }
+        }
+        pmsSkuStock.setPlatformLock(platformLock);
+        skuStockMapper.updateByPrimaryKeySelective(pmsSkuStock);
+        return true;
+
+    }
+
     private void FinishReceiveOrder(Long orderId) {
 
         // UmsMember member = memberService.getCurrentMember();