Explorar el Código

平台修改商品的状态

Yangzw hace 7 meses
padre
commit
bbcc401f44

+ 2 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/spu/vo/ProductSpuUpdateStatusReqVO.java

@@ -3,12 +3,14 @@ package cn.newfeifan.mall.module.product.controller.admin.spu.vo;
 import cn.newfeifan.mall.framework.common.validation.InEnum;
 import cn.newfeifan.mall.module.product.enums.spu.ProductSpuStatusEnum;
 import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Builder;
 import lombok.Data;
 
 import javax.validation.constraints.NotNull;
 
 @Schema(description = "管理后台 - 商品 SPU Status 更新 Request VO")
 @Data
+@Builder
 public class ProductSpuUpdateStatusReqVO{
 
     @Schema(description = "商品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")

+ 9 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/spuapply/SpuApplyController.java

@@ -1,5 +1,6 @@
 package cn.newfeifan.mall.module.product.controller.admin.spuapply;
 
+import cn.newfeifan.mall.module.product.controller.admin.spu.vo.ProductSpuUpdateStatusReqVO;
 import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import org.springframework.validation.annotation.Validated;
@@ -43,6 +44,14 @@ public class SpuApplyController {
         return success(true);
     }
 
+    @PutMapping("/update-status")
+    @Operation(summary = "更新商品 SPUApply Status")
+    @PreAuthorize("@ss.hasPermission('product:spu:update')")
+    public CommonResult<Boolean> updateStatus(@Valid @RequestBody ProductSpuUpdateStatusReqVO updateReqVO) {
+        spuApplyService.updateSpuStatus(updateReqVO);
+        return success(true);
+    }
+
     @DeleteMapping("/delete")
     @Operation(summary = "删除商品spu申请")
     @Parameter(name = "id", description = "编号", required = true)

+ 6 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/service/spu/ProductSpuService.java

@@ -149,4 +149,10 @@ public interface ProductSpuService {
      * @return spu
      */
     ProductSpuDO getSpuByApplyId(Long applyId);
+
+    /**
+     * 更新商品
+     * @param spu 商品
+     */
+    void updateById(ProductSpuDO spu);
 }

+ 5 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/service/spu/ProductSpuServiceImpl.java

@@ -203,6 +203,11 @@ public class ProductSpuServiceImpl implements ProductSpuService {
         return productSpuMapper.selectOne(ProductSpuDO::getSpuApplyId, applyId);
     }
 
+    @Override
+    public void updateById(ProductSpuDO spu) {
+        productSpuMapper.updateById(spu);
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void deleteSpu(Long id) {

+ 18 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/service/spuapply/SpuApplyService.java

@@ -1,10 +1,14 @@
 package cn.newfeifan.mall.module.product.service.spuapply;
 
 import javax.validation.*;
+
+import cn.newfeifan.mall.module.product.controller.admin.spu.vo.ProductSpuUpdateStatusReqVO;
 import cn.newfeifan.mall.module.product.controller.admin.spuapply.vo.*;
 import cn.newfeifan.mall.module.product.dal.dataobject.spuapply.SpuApplyDO;
 import cn.newfeifan.mall.framework.common.pojo.PageResult;
 
+import java.util.List;
+
 /**
  * 商品spu申请 Service 接口
  *
@@ -70,4 +74,18 @@ public interface SpuApplyService {
      * @return 数量
      */
     Long getSpuApplyTotal();
+
+    /**
+     * 更新 SPU 状态
+     *
+     * @param updateReqVO 更新请求
+     */
+    void updateSpuStatus(ProductSpuUpdateStatusReqVO updateReqVO);
+
+    /**
+     * 根据商户id查询spu
+     * @param merId 商户id
+     * @return spuApply
+     */
+    List<SpuApplyDO> selectListByMerId(Long merId);
 }

+ 24 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/service/spuapply/SpuApplyServiceImpl.java

@@ -1,6 +1,7 @@
 package cn.newfeifan.mall.module.product.service.spuapply;
 
 import cn.newfeifan.mall.module.product.controller.admin.spu.vo.ProductSpuSaveReqVO;
+import cn.newfeifan.mall.module.product.controller.admin.spu.vo.ProductSpuUpdateStatusReqVO;
 import cn.newfeifan.mall.module.product.controller.admin.spuapplylog.vo.SpuApplyLogSaveReqVO;
 import cn.newfeifan.mall.module.product.convert.spuapply.SpuApplyConvert;
 import cn.newfeifan.mall.module.product.dal.dataobject.skuapply.SkuApplyDO;
@@ -129,6 +130,9 @@ public class SpuApplyServiceImpl implements SpuApplyService {
         validateSpuApplyExists(id);
         // 删除
         spuApplyMapper.deleteById(id);
+
+        ProductSpuDO spu = spuService.getSpuByApplyId(id);
+        spuService.deleteSpu(spu.getId());
     }
 
     private void validateSpuApplyExists(Long id) {
@@ -174,4 +178,24 @@ public class SpuApplyServiceImpl implements SpuApplyService {
         return spuApplyMapper.selectCount(SpuApplyDO::getCheckStatus, SpuApplyCheckStatusEnum.WAIT_CHECK.getStatus());
     }
 
+    @Override
+    public void updateSpuStatus(ProductSpuUpdateStatusReqVO updateReqVO) {
+
+        // 校验存在
+        validateSpuApplyExists(updateReqVO.getId());
+        // TODO 非繁人:【可选】参与活动中的商品,不允许下架???
+
+        // 更新状态
+        SpuApplyDO productSpuDO = spuApplyMapper.selectById(updateReqVO.getId()).setStatus(updateReqVO.getStatus());
+        spuApplyMapper.updateById(productSpuDO);
+
+        ProductSpuDO spu = spuService.getSpuByApplyId(updateReqVO.getId()).setStatus(updateReqVO.getStatus());
+        spuService.updateById(spu);
+    }
+
+    @Override
+    public List<SpuApplyDO> selectListByMerId(Long merId) {
+        return spuApplyMapper.selectList(SpuApplyDO::getMerchantId,merId);
+    }
+
 }

+ 18 - 1
feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/service/merchant/MerchantServiceImpl.java

@@ -3,7 +3,11 @@ package cn.newfeifan.mall.sale.service.merchant;
 import cn.newfeifan.mall.framework.common.exception.ErrorCode;
 import cn.newfeifan.mall.framework.common.pojo.PageResult;
 import cn.newfeifan.mall.framework.common.util.json.JsonUtils;
+import cn.newfeifan.mall.module.product.controller.admin.spu.vo.ProductSpuUpdateStatusReqVO;
+import cn.newfeifan.mall.module.product.dal.dataobject.spuapply.SpuApplyDO;
+import cn.newfeifan.mall.module.product.enums.spu.ProductSpuStatusEnum;
 import cn.newfeifan.mall.module.product.service.sku.ProductSkuService;
+import cn.newfeifan.mall.module.product.service.spuapply.SpuApplyService;
 import cn.newfeifan.mall.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO;
 import cn.newfeifan.mall.module.system.dal.dataobject.user.AdminUserDO;
 import cn.newfeifan.mall.module.system.dal.mysql.user.AdminUserMapper;
@@ -58,6 +62,8 @@ public class MerchantServiceImpl implements MerchantService {
     @Resource
     private ShopService shopService;
     @Resource
+    private SpuApplyService spuApplyService;
+    @Resource
     private StringRedisTemplate stringRedisTemplate;
 
     @Override
@@ -106,7 +112,18 @@ public class MerchantServiceImpl implements MerchantService {
     @Override
     public void deleteMerchant(Long id) {
         // 校验存在
-        validateMerchantExists(id);
+//        validateMerchantExists(id);
+        List<SpuApplyDO> spuApplyDOS = spuApplyService.selectListByMerId(id);
+        spuApplyDOS.forEach(spuApplyDO -> {
+        ProductSpuUpdateStatusReqVO build = ProductSpuUpdateStatusReqVO.builder().id(spuApplyDO.getId()).status(ProductSpuStatusEnum.DISABLE.getStatus()).build();
+            spuApplyService.updateSpuStatus(build);
+        });
+
+
+//        spuApplyDOS.forEach(spuApplyDO -> {
+//                    spuApplyService.deleteSpuApply(spuApplyDO.getId());
+//        });
+
         // 删除
         merchantMapper.deleteById(id);
     }