From a7a57c08a3c632bfc7fc82b8015167022c2d8505 Mon Sep 17 00:00:00 2001
From: jiaosong <jiaosong6760@dingtalk.com>
Date: 星期四, 14 九月 2023 18:23:37 +0800
Subject: [PATCH] #自测修改

---
 server/service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java |  247 +++++++++++++++++++++++++++++++++++-------------
 1 files changed, 178 insertions(+), 69 deletions(-)

diff --git a/server/service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
index fd52229..4e04375 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
@@ -20,6 +20,7 @@
 import com.doumee.dao.business.model.dto.BatchDisableDTO;
 import com.doumee.dao.business.model.dto.GoodCreatePlatRequest;
 import com.doumee.dao.business.model.dto.GoodsRequest;
+import com.doumee.dao.business.model.dto.PlatGoodsParam;
 import com.doumee.service.business.GoodsService;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import org.apache.commons.lang3.StringUtils;
@@ -38,7 +39,6 @@
 import java.io.File;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
 import java.net.URLEncoder;
 import java.nio.charset.Charset;
@@ -54,6 +54,10 @@
 
     @Autowired
     private GoodsMapper goodsMapper;
+    @Autowired
+    private BaseGoodsMapper baseGoodsMapper;
+    @Autowired
+    private BaseGoodsParamMapper baseGoodsParamMapper;
     @Autowired
     private CategoryMapper categoryMapper;
     @Autowired
@@ -75,8 +79,6 @@
     @Autowired
     private CateParamSelectMapper cateParamSelectMapper;
 
-    @Autowired
-    private BaseGoodsMapper baseGoodsMapper;
 
 
 
@@ -140,11 +142,80 @@
                 || param.getGoodsParamList().size()==0))){
             throw  new BusinessException(ResponseStatus.BAD_REQUEST);
         }
-        Goods goods = new Goods();
-
-        if(goodsMapper.selectCount(new QueryWrapper<Goods>().eq("ISDELETED",Constants.ZERO).eq("name",goods.getName()))>0){
-            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"銆�"+goods.getName()+"銆戝凡瀛樺湪");
+        Category category = categoryMapper.selectById(param.getCategoryId());
+        if(category ==null ||Constants.equalsInteger(category.getIsdeleted(), Constants.ONE) ||Constants.equalsInteger(category.getCompanyId(), user.getCompanyId())){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绫诲埆淇℃伅涓嶆纭紝璇峰埛鏂伴噸璇曪紒");
         }
+        if(category.getPlatCateId() == null){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇峰墠寰�銆愮被鍒鐞嗐�戝厛鍏宠仈骞冲彴绫诲埆锛�");
+        }
+        BaseGoods bp = new BaseGoods();
+        bp.setCategoryId(category.getPlatCateId());
+        bp.setIsdeleted(Constants.ZERO);
+        List<BaseGoods> goodsList = new ArrayList<>();
+        List<Integer> ids = null;
+        if(Constants.equalsInteger(Constants.ONE, param.getType())){
+            //濡傛灉閫夋嫨閮ㄥ垎鍟嗗搧
+            for(PlatGoodsParam p : param.getGoodsParamList()){
+                if(p.getGoodsId() == null || p.getPrice() == null){
+                    throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇锋纭�夋嫨骞冲彴鍟嗗搧骞堕厤缃叆鎵嬩环锛�");
+                }
+                ids.add(p.getGoodsId());
+            }
+        }
+        goodsList = baseGoodsMapper.selectList(new QueryWrapper<>(bp).lambda().in((ids!=null && ids.size()>0),BaseGoods::getId,ids));
+        if(Constants.equalsInteger(Constants.ONE, param.getType()) || goodsList==null || ids.size()!=goodsList.size()){
+            //  濡傛灉閫夋嫨骞冲彴鍟嗗搧鍜屾煡璇㈢粨鏋滃涓嶄笂锛屾彁绀洪敊璇�
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇锋纭�夋嫨骞冲彴鍟嗗搧锛�");
+        }
+        for(BaseGoods model : goodsList){
+            //閬嶅巻骞冲彴鍟嗗搧淇℃伅锛岃繘琛屽晢鍝佷俊鎭悓姝�
+            Goods goods = initGoodsPlatParam(user,model,param);
+            if(goods == null){
+                continue;
+            }
+            goodsMapper.insert(goods);
+           //寮�濮嬪鐞嗛檮浠�
+            dealPlatMultifule(goods.getId(),user,model);
+            //寮�濮嬪鐞嗗弬鏁伴厤缃�
+            dealPlatGoodsParam(model,goods,user);
+        }
+
+
+        return 1;
+    }
+
+    private void dealPlatGoodsParam(BaseGoods model, Goods goods, LoginUserInfo user) {
+        BaseGoodsParam baseGoodsParam = new BaseGoodsParam();
+        baseGoodsParam.setGoodsId(model.getId());
+        baseGoodsParam.setIsdeleted(Constants.ZERO);
+        List<BaseGoodsParam> goodsParamList = baseGoodsParamMapper.selectList(new QueryWrapper<>(baseGoodsParam));
+        if(!Objects.isNull(goodsParamList)&&goodsParamList.size()>0){
+            for (int i = 0; i < goodsParamList.size(); i++) {
+                BaseGoodsParam bgParam = goodsParamList.get(i);
+                GoodsParam goodsParam = new GoodsParam();
+                goodsParam.setCreator(user.getId());
+                goodsParam.setCreateDate(new Date());
+                goodsParam.setIsdeleted(Constants.ZERO);
+                goodsParam.setSortnum(i+Constants.ONE);
+                goodsParam.setStatus(Constants.ZERO);
+                goodsParam.setGoodsId(goods.getId());
+                goodsParam.setVal(bgParam.getVal());
+                goodsParam.setName(bgParam.getName());
+                goodsParamMapper.insert(goodsParam);
+            }
+        }
+    }
+
+    private Goods initGoodsPlatParam(LoginUserInfo user, BaseGoods model, GoodCreatePlatRequest param) {
+        Goods goods = new Goods();
+        goods.setIsdeleted(Constants.ZERO);
+        goods.setGoodsId(model.getId());
+        if(goodsMapper.selectCount(new QueryWrapper<>(goods))>0){
+            //濡傛灉宸茬粡鍚屾杩囷紝璺宠繃姝ゆ鍚屾
+            return  null;
+        }
+        goods.setType(Constants.ONE);
         goods.setStatus(Constants.ZERO);
         goods.setCreateDate(new Date());
         goods.setCreator(user.getId());
@@ -152,9 +223,25 @@
         //澶勭悊鎷奸煶闂
         goods.setPinyin(PinYinUtil.getFullSpell(goods.getName()));
         goods.setShortPinyin(PinYinUtil.getFirstSpell(goods.getName()));
-        goodsMapper.insert(goods);
+        goods.setName(model.getName());
+        goods.setCategoryId(param.getCategoryId());
+        //鑾峰彇鍏ユ墜浠锋牸
+        goods.setPrice(getPriceFromParam(model,param));
+        goods.setZdPrice(model.getZdPrice());
+        goods.setRemark(model.getRemark());
+        goods.setImgurl(model.getImgurl());
+        goods.setBrandId(model.getBrandId());
+        return goods;
+    }
 
-        List<Multifile> multifileList = goods.getMultifileList();
+    /**
+     *  寮�濮嬪鐞嗗钩鍙板晢鍝佸叧鑱旈檮浠讹紝澶嶅埗涓�濂楀埌浼佷笟鍟嗗搧涓�
+     */
+    private void dealPlatMultifule(Integer id, LoginUserInfo user, BaseGoods model) {
+        Multifile f = new Multifile();
+        f.setObjId(model.getId());
+        f.setIsdeleted(Constants.ZERO);
+        List<Multifile> multifileList =multifileMapper.selectList(new QueryWrapper<>(f));
         if(!Objects.isNull(multifileList)&&multifileList.size()>Constants.ZERO){
             for (int i = 0; i < multifileList.size(); i++) {
                 Multifile multifile = multifileList.get(i);
@@ -162,26 +249,33 @@
                 multifile.setCreateDate(new Date());
                 multifile.setIsdeleted(Constants.ZERO);
                 multifile.setSortnum(i+Constants.ONE);
-                multifile.setObjId(goods.getId());
+                multifile.setObjId(id);
                 multifile.setType(Constants.ZERO);
                 multifile.setObjType(Constants.ZERO);
+                multifile.setFileurl(multifile.getFileurl());
+                multifile.setName(multifile.getName());
+                multifile.setSortnum(multifile.getSortnum());
+                multifile.setCompanyId(user.getCompanyId());
                 multifileMapper.insert(multifile);
             }
         }
-        List<GoodsParam> goodsParamList = goods.getGoodsParamList();
-        if(!Objects.isNull(goodsParamList)&&goodsParamList.size()>0){
-            for (int i = 0; i < goodsParamList.size(); i++) {
-                GoodsParam goodsParam = goodsParamList.get(i);
-                goodsParam.setCreator(user.getId());
-                goodsParam.setCreateDate(new Date());
-                goodsParam.setIsdeleted(Constants.ZERO);
-                goodsParam.setStatus(Constants.ZERO);
-                goodsParam.setSortnum(i+Constants.ONE);
-                goodsParam.setGoodsId(goods.getId());
-                goodsParamMapper.insert(goodsParam);
+    }
+
+    private BigDecimal getPriceFromParam(BaseGoods model, GoodCreatePlatRequest param) {
+        if(Constants.equalsInteger(Constants.ONE, param.getType())){
+            for(PlatGoodsParam p: param.getGoodsParamList()){
+                if(Constants.equalsInteger(model.getId(),p.getGoodsId())){
+                    return p.getPrice();
+                }
             }
         }
-        return goods.getId();
+        //濡傛灉娌℃湁閰嶇疆鍏ユ墜浠凤紝瀹夎鍔犱环绯绘暟鏉ヨ绠�
+        if(model.getCateRatePrice()==null){
+            model.setCateRatePrice(systemDictDataBiz.getGoodsPriceRate());
+        }
+        //杩斿洖
+        return Constants.formatBigdecimal(model.getPrice()).multiply(model.getCateRatePrice()).multiply(param.getRate());
+
     }
 
 
@@ -550,9 +644,10 @@
         if (pageWrap.getModel().getBrandId() != null) {
             queryWrapper.eq(Goods::getBrandId, pageWrap.getModel().getBrandId());
         }
-
+        if (pageWrap.getModel().getCompanyId() != null) {
+            queryWrapper.eq(Goods::getCompanyId, pageWrap.getModel().getCompanyId());
+        }
         queryWrapper.orderByDesc(Goods::getId);
-
         IPage<Goods> goodsIPage =  goodsJoinMapper.selectJoinPage(page, Goods.class, queryWrapper);
         String prefixUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.FILE_DIR).getCode()
                 + systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.PROJECTS).getCode();
@@ -667,54 +762,54 @@
             //鏌ヨ鍏ㄩ儴灞炴��1鍜屽睘鎬�2瑙勬牸鍊�
             List<CateAttr> allAttr = cateAttrMapper.selectList(new QueryWrapper<>(ca));
             //灞炴��1闆嗗悎
-            String[] attrs = StringUtils.defaultString(m.getAttrFirstNames(),"").split("\n");
+//            String[] attrs = StringUtils.defaultString(m.getAttrFirstNames(),"").split("\n");
             //灞炴��2闆嗗悎
-            String[] attrs2 = StringUtils.defaultString(m.getAttrSecodNames(),"").split("\n");
+//            String[] attrs2 = StringUtils.defaultString(m.getAttrSecodNames(),"").split("\n");
             //浜у搧鍙傛暟闆嗗悎
             String[] params =  StringUtils.defaultString(m.getParamStr(),"").split("\n");
-            if(attrs.length > 0){
-                String attrids="" ,attrNames="";
-                for(String s : attrs){
-                    if(StringUtils.isBlank(s)){
-                        continue;
-                    }
-                    //鏌ヨ灞炴�ц鏍煎璞�
-                    CateAttr ta = getCateAttrByName(s,Constants.ZERO,allAttr);
-                    if(ta == null){
-                        throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗��"+(num)+"銆戣灞炴��1涓��"+s+"銆戞棤鏁堬紝璇锋鏌ヨ緭鍏ワ紒");
-                    }
-                    if(StringUtils.isNotBlank(attrids)){
-                        attrids += ",";
-                        attrNames += ",";
-                    }
-                    attrids+= ta.getId();
-                    attrNames+= ta.getName();
-                }
-                newModel.setAttrFirstIds(attrids);
-                newModel.setAttrFirstNames(attrNames);
-            }
-            if(attrs2.length > 0){
-                String attrids="" ,attrNames="";
-                for(String s : attrs2){
-                    if(StringUtils.isBlank(s)){
-                        continue;
-                    }
-                    //鏌ヨ灞炴�ц鏍煎璞�
-                    CateAttr ta = getCateAttrByName(s,Constants.ONE,allAttr);
-                    if(ta == null){
-                        throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗��"+(num)+"銆戣灞炴��1涓��"+s+"銆戞棤鏁堬紝璇锋鏌ヨ緭鍏ワ紒");
-                    }
-                    if(StringUtils.isNotBlank(attrids)){
-                        attrids += ",";
-                        attrNames += ",";
-                    }
-                    attrids+= ta.getId();
-                    attrNames+= ta.getName();
-                }
-                newModel.setAttrSecodIds(attrids);
-                newModel.setAttrSecodNames(attrNames);
-
-            }
+//            if(attrs.length > 0){
+//                String attrids="" ,attrNames="";
+//                for(String s : attrs){
+//                    if(StringUtils.isBlank(s)){
+//                        continue;
+//                    }
+//                    //鏌ヨ灞炴�ц鏍煎璞�
+//                    CateAttr ta = getCateAttrByName(s,Constants.ZERO,allAttr);
+//                    if(ta == null){
+//                        throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗��"+(num)+"銆戣灞炴��1涓��"+s+"銆戞棤鏁堬紝璇锋鏌ヨ緭鍏ワ紒");
+//                    }
+//                    if(StringUtils.isNotBlank(attrids)){
+//                        attrids += ",";
+//                        attrNames += ",";
+//                    }
+//                    attrids+= ta.getId();
+//                    attrNames+= ta.getName();
+//                }
+//                newModel.setAttrFirstIds(attrids);
+//                newModel.setAttrFirstNames(attrNames);
+//            }
+//            if(attrs2.length > 0){
+//                String attrids="" ,attrNames="";
+//                for(String s : attrs2){
+//                    if(StringUtils.isBlank(s)){
+//                        continue;
+//                    }
+//                    //鏌ヨ灞炴�ц鏍煎璞�
+//                    CateAttr ta = getCateAttrByName(s,Constants.ONE,allAttr);
+//                    if(ta == null){
+//                        throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗��"+(num)+"銆戣灞炴��1涓��"+s+"銆戞棤鏁堬紝璇锋鏌ヨ緭鍏ワ紒");
+//                    }
+//                    if(StringUtils.isNotBlank(attrids)){
+//                        attrids += ",";
+//                        attrNames += ",";
+//                    }
+//                    attrids+= ta.getId();
+//                    attrNames+= ta.getName();
+//                }
+//                newModel.setAttrSecodIds(attrids);
+//                newModel.setAttrSecodNames(attrNames);
+//
+//            }
             List<String> mulFiles = null;
             String proDir =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PROJECTS).getCode();
 
@@ -796,6 +891,20 @@
                     gp.setSortnum(ta.getSortnum());
                     //鎻掑叆浜у搧鍙傛暟鍏宠仈琛�
                     goodsParamMapper.insert(gp);
+                    //瀛樺偍 cate_param_select 鏌ヨ鏄惁宸插瓨鍦�
+                    if(cateParamSelectMapper.selectCount(new QueryWrapper<CateParamSelect>()
+                            .eq("PARAM_ID",gp.getPramaId()).eq("NAME",gp.getName()))<=Constants.ZERO){
+                        CateParamSelect cateParamSelect = new CateParamSelect();
+                        cateParamSelect.setCreator(user.getId());
+                        cateParamSelect.setCreateDate(new Date());
+                        cateParamSelect.setName(gp.getVal());
+                        cateParamSelect.setIsdeleted(Constants.ZERO);
+                        cateParamSelect.setStatus(Constants.ZERO);
+                        cateParamSelect.setParamId(gp.getPramaId());
+                        cateParamSelect.setCategoryId(newModel.getCategoryId());
+                        cateParamSelect.setStatus(Constants.ZERO);
+                        cateParamSelectMapper.insert(cateParamSelect);
+                    };
                 }
             }
             if(mulFiles !=null && mulFiles.size()>0){

--
Gitblit v1.9.3