From ae99a4a7654a6a3d8fd8343c22c415930f0a18cb Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Thu, 09 Feb 2023 11:15:15 +0800
Subject: [PATCH] 后台运费模板功能

---
 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java |  186 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 186 insertions(+), 0 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java
index a65ff45..6774b7f 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java
@@ -13,6 +13,7 @@
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -39,6 +40,8 @@
     private final MallGoodsStyleMapper mallGoodsStyleMapper;
     private final MallGoodsImagesMapper mallGoodsImagesMapper;
     private final MallShoppingCartMapper mallShoppingCartMapper;
+    private final MallCarriageRuleMapper mallCarriageRuleMapper;
+    private final MallCarriageRuleInfoMapper mallCarriageRuleInfoMapper;
 
     @Override
     public IPage<AdminMallGoodsVo> getCategoryListInPage(MallGoods mallGoods, QueryRequest request) {
@@ -525,4 +528,187 @@
         dataDictionaryCustomMapper.updateById(dataDictionaryCustom);
         return new FebsResponse().success();
     }
+
+    @Override
+    public IPage<MallCarriageRule> getMallCarriageRuleListInPage(MallCarriageRule mallCarriageRule, QueryRequest request) {
+        Page<MallCarriageRule> page = new Page<>(request.getPageNum(), request.getPageSize());
+        IPage<MallCarriageRule> mallCarriageRules = mallCarriageRuleMapper.selectMallCarriageRuleListInPage(page, mallCarriageRule);
+        return mallCarriageRules;
+    }
+
+    @Override
+    @Transactional
+    public FebsResponse carriageRuleDelById(Long id) {
+        MallCarriageRule mallCarriageRule = mallCarriageRuleMapper.selectById(id);
+        if(ObjectUtil.isEmpty(mallCarriageRule)){
+            return new FebsResponse().fail().message("操作失败");
+        }
+        List<MallGoods> mallGoods = this.baseMapper.selectMallGoodsListQueryByRuleId(id);
+        if(CollUtil.isNotEmpty(mallGoods)){
+            StringBuffer goodsNameBuffer = new StringBuffer();
+            for(MallGoods goods : mallGoods){
+                goodsNameBuffer.append(goods.getGoodsName());
+                goodsNameBuffer.append(",");
+            }
+            return new FebsResponse().fail().message(goodsNameBuffer+"正在使用当前模板,请先编辑商品信息");
+        }
+        QueryWrapper<MallCarriageRuleInfo> objectQueryWrapper = new QueryWrapper<>();
+        objectQueryWrapper.eq("rule_id",id);
+        mallCarriageRuleInfoMapper.delete(objectQueryWrapper);
+
+        mallCarriageRuleMapper.deleteById(id);
+        return new FebsResponse().success();
+    }
+
+    @Override
+    @Transactional
+    public FebsResponse carriageRuleAdd(AdminCarriageRuleAddDto adminCarriageRuleAddDto) {
+        String ruleName = adminCarriageRuleAddDto.getRuleName();
+        QueryWrapper<MallCarriageRule> objectQueryWrapper = new QueryWrapper<>();
+        objectQueryWrapper.eq("name",ruleName);
+        List<MallCarriageRule> mallCarriageRules = mallCarriageRuleMapper.selectList(objectQueryWrapper);
+        if(CollUtil.isNotEmpty(mallCarriageRules)){
+            return new FebsResponse().fail().message("标题不能重复");
+        }
+
+        MallCarriageRule mallCarriageRule = new MallCarriageRule();
+        mallCarriageRule.setName(ruleName);
+        mallCarriageRuleMapper.insert(mallCarriageRule);
+
+        Long ruleId = mallCarriageRule.getId();
+        /**
+         * 生成默认的运费规则
+         */
+        MallCarriageRuleInfo mallCarriageRuleInfoDefault = new MallCarriageRuleInfo();
+        mallCarriageRuleInfoDefault.setRuleId(ruleId);
+        //计价方式(1:按件算 2:按重量算)
+        mallCarriageRuleInfoDefault.setValuationType(adminCarriageRuleAddDto.getValuationType());
+        mallCarriageRuleInfoDefault.setValuationUnit(
+                adminCarriageRuleAddDto.getValuationType() == 1?"件":"千克"
+        );
+        mallCarriageRuleInfoDefault.setBasicCnt(adminCarriageRuleAddDto.getBasicCntDefault());
+        mallCarriageRuleInfoDefault.setBasicPrice(adminCarriageRuleAddDto.getBasicPriceDefault());
+        mallCarriageRuleInfoDefault.setMoreCnt(adminCarriageRuleAddDto.getMoreCntDefault());
+        mallCarriageRuleInfoDefault.setMorePrice(adminCarriageRuleAddDto.getMorePriceDefault());
+        mallCarriageRuleInfoMapper.insert(mallCarriageRuleInfoDefault);
+
+        List<AdminCarriageRuleAddInfoDto> adminCarriageRuleAddInfoDtos = adminCarriageRuleAddDto.getAdminCarriageRuleAddInfoDtos();
+        if(CollUtil.isNotEmpty(adminCarriageRuleAddInfoDtos)){
+            for(AdminCarriageRuleAddInfoDto adminCarriageRuleAddInfoDto : adminCarriageRuleAddInfoDtos){
+                MallCarriageRuleInfo mallCarriageRuleInfo = new MallCarriageRuleInfo();
+                mallCarriageRuleInfo.setRuleId(ruleId);
+                mallCarriageRuleInfo.setAreaAddress(adminCarriageRuleAddInfoDto.getAreaAddress());
+                //计价方式(1:按件算 2:按重量算)
+                mallCarriageRuleInfo.setValuationType(adminCarriageRuleAddDto.getValuationType());
+                mallCarriageRuleInfo.setValuationUnit(
+                        adminCarriageRuleAddDto.getValuationType() == 1?"件":"千克"
+                );
+                mallCarriageRuleInfo.setBasicCnt(adminCarriageRuleAddInfoDto.getBasicCnt());
+                mallCarriageRuleInfo.setBasicPrice(adminCarriageRuleAddInfoDto.getBasicPrice());
+                mallCarriageRuleInfo.setMoreCnt(adminCarriageRuleAddInfoDto.getMoreCnt());
+                mallCarriageRuleInfo.setMorePrice(adminCarriageRuleAddInfoDto.getMorePrice());
+                mallCarriageRuleInfoMapper.insert(mallCarriageRuleInfo);
+            }
+        }
+        return new FebsResponse().success().message("操作成功");
+    }
+
+    @Override
+    public AdminMallCarriageRuleVo selectCarriageRuleByRuleId(long id) {
+        AdminMallCarriageRuleVo adminMallCarriageRuleVo = new AdminMallCarriageRuleVo();
+
+        MallCarriageRule mallCarriageRule = mallCarriageRuleMapper.selectById(id);
+        adminMallCarriageRuleVo.setId(id);
+        adminMallCarriageRuleVo.setRuleName(mallCarriageRule.getName());
+
+        List<MallCarriageRuleInfo> mallCarriageRuleInfos = mallCarriageRuleInfoMapper.selectMallCarriageRuleInfoByRuleIdAndAreaAddress(id,null);
+        if(CollUtil.isNotEmpty(mallCarriageRuleInfos)){
+            List<AdminMallCarriageRuleInfoVo> adminCarriageRuleInfoVos = new ArrayList<>();
+            for(MallCarriageRuleInfo mallCarriageRuleInfo : mallCarriageRuleInfos){
+                if(StrUtil.isNotEmpty(mallCarriageRuleInfo.getAreaAddress())){
+                    AdminMallCarriageRuleInfoVo adminMallCarriageRuleInfoVo = new AdminMallCarriageRuleInfoVo();
+                    adminMallCarriageRuleInfoVo.setId(mallCarriageRuleInfo.getId());
+                    adminMallCarriageRuleInfoVo.setAreaAddress(mallCarriageRuleInfo.getAreaAddress());
+                    adminMallCarriageRuleInfoVo.setBasicCnt(mallCarriageRuleInfo.getBasicCnt());
+                    adminMallCarriageRuleInfoVo.setBasicPrice(mallCarriageRuleInfo.getBasicPrice());
+                    adminMallCarriageRuleInfoVo.setMoreCnt(mallCarriageRuleInfo.getMoreCnt());
+                    adminMallCarriageRuleInfoVo.setMorePrice(mallCarriageRuleInfo.getMorePrice());
+                    adminCarriageRuleInfoVos.add(adminMallCarriageRuleInfoVo);
+                }else{
+                    //默认规则
+                    adminMallCarriageRuleVo.setBasicCntDefault(mallCarriageRuleInfo.getBasicCnt());
+                    adminMallCarriageRuleVo.setBasicPriceDefault(mallCarriageRuleInfo.getBasicPrice());
+                    adminMallCarriageRuleVo.setMoreCntDefault(mallCarriageRuleInfo.getMoreCnt());
+                    adminMallCarriageRuleVo.setMorePriceDefault(mallCarriageRuleInfo.getMorePrice());
+                    adminMallCarriageRuleVo.setValuationType(mallCarriageRuleInfo.getValuationType());
+                }
+            }
+            adminMallCarriageRuleVo.setAdminCarriageRuleInfoVos(adminCarriageRuleInfoVos);
+        }
+        return adminMallCarriageRuleVo;
+    }
+
+    @Override
+    @Transactional
+    public FebsResponse carriageRuleUpdate(AdminCarriageRuleUpdateDto adminCarriageRuleUpdateDto) {
+        Long id = adminCarriageRuleUpdateDto.getId();
+        MallCarriageRule mallCarriageRule = mallCarriageRuleMapper.selectById(id);
+        if(ObjectUtil.isEmpty(mallCarriageRule)){
+            return new FebsResponse().fail().message("运费模板不存在");
+        }
+
+        List<MallGoods> mallGoods = this.baseMapper.selectMallGoodsListQueryByRuleIdAndIsSale(id,MallGoods.ISHOT_STATE_YES);
+        if(CollUtil.isNotEmpty(mallGoods)){
+            StringBuffer goodsNameBuffer = new StringBuffer();
+            for(MallGoods goods : mallGoods){
+                goodsNameBuffer.append(goods.getGoodsName());
+                goodsNameBuffer.append(",");
+            }
+            return new FebsResponse().fail().message(goodsNameBuffer+"正在使用当前模板,请先下架商品");
+        }
+        //删除现有的所有运费模板子表数据
+        List<MallCarriageRuleInfo> mallCarriageRuleInfos = mallCarriageRuleInfoMapper.selectMallCarriageRuleInfoByRuleIdAndAreaAddress(id, null);
+        if(CollUtil.isNotEmpty(mallCarriageRuleInfos)){
+            for(MallCarriageRuleInfo mallCarriageRuleInfo : mallCarriageRuleInfos){
+                mallCarriageRuleInfoMapper.deleteById(mallCarriageRuleInfo.getId());
+            }
+        }
+
+        /**
+         * 生成运费模板子表数据
+         */
+        MallCarriageRuleInfo mallCarriageRuleInfoDefault = new MallCarriageRuleInfo();
+        mallCarriageRuleInfoDefault.setRuleId(id);
+        //计价方式(1:按件算 2:按重量算)
+        mallCarriageRuleInfoDefault.setValuationType(adminCarriageRuleUpdateDto.getValuationType());
+        mallCarriageRuleInfoDefault.setValuationUnit(
+                adminCarriageRuleUpdateDto.getValuationType() == 1?"件":"千克"
+        );
+        mallCarriageRuleInfoDefault.setBasicCnt(adminCarriageRuleUpdateDto.getBasicCntDefault());
+        mallCarriageRuleInfoDefault.setBasicPrice(adminCarriageRuleUpdateDto.getBasicPriceDefault());
+        mallCarriageRuleInfoDefault.setMoreCnt(adminCarriageRuleUpdateDto.getMoreCntDefault());
+        mallCarriageRuleInfoDefault.setMorePrice(adminCarriageRuleUpdateDto.getMorePriceDefault());
+        mallCarriageRuleInfoMapper.insert(mallCarriageRuleInfoDefault);
+
+        List<AdminCarriageRuleAddInfoDto> adminCarriageRuleAddInfoDtos = adminCarriageRuleUpdateDto.getAdminCarriageRuleAddInfoDtos();
+        if(CollUtil.isNotEmpty(adminCarriageRuleAddInfoDtos)){
+            for(AdminCarriageRuleAddInfoDto adminCarriageRuleAddInfoDto : adminCarriageRuleAddInfoDtos){
+                MallCarriageRuleInfo mallCarriageRuleInfo = new MallCarriageRuleInfo();
+                mallCarriageRuleInfo.setRuleId(id);
+                mallCarriageRuleInfo.setAreaAddress(adminCarriageRuleAddInfoDto.getAreaAddress());
+                //计价方式(1:按件算 2:按重量算)
+                mallCarriageRuleInfo.setValuationType(mallCarriageRuleInfoDefault.getValuationType());
+                mallCarriageRuleInfo.setValuationUnit(
+                        mallCarriageRuleInfoDefault.getValuationType() == 1?"件":"千克"
+                );
+                mallCarriageRuleInfo.setBasicCnt(adminCarriageRuleAddInfoDto.getBasicCnt());
+                mallCarriageRuleInfo.setBasicPrice(adminCarriageRuleAddInfoDto.getBasicPrice());
+                mallCarriageRuleInfo.setMoreCnt(adminCarriageRuleAddInfoDto.getMoreCnt());
+                mallCarriageRuleInfo.setMorePrice(adminCarriageRuleAddInfoDto.getMorePrice());
+                mallCarriageRuleInfoMapper.insert(mallCarriageRuleInfo);
+            }
+        }
+
+        return new FebsResponse().success().message("操作成功");
+    }
 }

--
Gitblit v1.9.1