From 0b9c144b5110a7e2a85b2e5581ef304bb81a3ebc Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 19 九月 2023 19:24:35 +0800
Subject: [PATCH] 修改

---
 server/service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java |  530 ++++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 437 insertions(+), 93 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 cd8eea3..bb7ec36 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
@@ -17,9 +17,12 @@
 import com.doumee.dao.business.*;
 import com.doumee.dao.business.join.GoodsJoinMapper;
 import com.doumee.dao.business.model.*;
-import com.doumee.dao.business.model.dto.GoodsRequest;
+import com.doumee.dao.business.model.dto.*;
+import com.doumee.service.business.BaseDataService;
 import com.doumee.service.business.GoodsService;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import io.swagger.v3.oas.annotations.callbacks.Callback;
+import lombok.extern.java.Log;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
@@ -36,14 +39,10 @@
 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;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 
 /**
  * 鍟嗗搧淇℃伅琛⊿ervice瀹炵幇
@@ -55,6 +54,13 @@
 
     @Autowired
     private GoodsMapper goodsMapper;
+    @Autowired
+    @Lazy
+    private BaseDataService baseDataService;
+    @Autowired
+    private BaseGoodsMapper baseGoodsMapper;
+    @Autowired
+    private BaseGoodsParamMapper baseGoodsParamMapper;
     @Autowired
     private CategoryMapper categoryMapper;
     @Autowired
@@ -73,6 +79,10 @@
 
     @Autowired
     private GoodsJoinMapper goodsJoinMapper;
+    @Autowired
+    private CateParamSelectMapper cateParamSelectMapper;
+
+
 
 
     @Override
@@ -118,6 +128,237 @@
             }
         }
 
+        return goods.getId();
+    }
+    @Override
+    @Transactional( rollbackFor = {Exception.class, BusinessException.class})
+    public  Integer createPlat(GoodCreatePlatRequest param){
+        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        if(!Constants.equalsInteger(user.getType(), Constants.UserType.COMPANY.getKey())){
+            //闈炰紒涓氱敤鎴蜂笉鑳芥搷浣�
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED);
+        }
+        if(param.getCategoryId() == null
+                || param.getType() == null
+                || param.getRate() == null
+                || (Constants.equalsInteger(param.getType(), Constants.ONE)
+                && (param.getGoodsParamList() == null
+                || param.getGoodsParamList().size()==0))){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        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(),"瀵逛笉璧凤紝璇锋纭�夋嫨骞冲彴鍟嗗搧骞堕厤缃叆鎵嬩环锛�");
+                }
+                if(ids == null){
+                    ids = new ArrayList<>();
+                }
+                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);
+                //鏍规嵁骞冲彴鍟嗗搧閰嶇疆鐨勫钩鍙板弬鏁颁俊鎭煡璇紒涓氱粦瀹氱殑鍙傛暟淇℃伅 杩涜瀛樺偍鍒� 浼佷笟鍟嗗搧鍙傛暟鍐�
+                CateParam cateParam = cateParamMapper.selectOne(new QueryWrapper<CateParam>()
+                        .eq("CATEGORY_ID",goods.getCategoryId())
+                        .eq("BASE_CATE_PARAM_ID",bgParam.getPramaId())
+                        .eq("ISDELETED",Constants.ZERO)
+                        .eq("STATUS",Constants.ZERO)
+                        .last(" limit 1 "));
+//                if(Objects.isNull(cateParam)){
+//                    throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"浼佷笟鍒嗙被鏁版嵁鍚屾寮傚父璇疯仈绯荤鐞嗗憳");
+//                }
+                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());
+                goodsParam.setPramaId(Objects.isNull(cateParam)?null:cateParam.getId());
+                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());
+        goods.setCompanyId(user.getCompanyId());
+        goods.setIsdeleted(Constants.ZERO);
+        //澶勭悊鎷奸煶闂
+        goods.setPinyin(PinYinUtil.getFullSpell(goods.getName()));
+        goods.setShortPinyin(PinYinUtil.getFirstSpell(goods.getName()));
+        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;
+    }
+
+    /**
+     *  寮�濮嬪鐞嗗钩鍙板晢鍝佸叧鑱旈檮浠讹紝澶嶅埗涓�濂楀埌浼佷笟鍟嗗搧涓�
+     */
+    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);
+                multifile.setCreator(user.getId());
+                multifile.setCreateDate(new Date());
+                multifile.setIsdeleted(Constants.ZERO);
+                multifile.setSortnum(i+Constants.ONE);
+                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);
+            }
+        }
+    }
+
+    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();
+                }
+            }
+        }
+        //濡傛灉娌℃湁閰嶇疆鍏ユ墜浠凤紝瀹夎鍔犱环绯绘暟鏉ヨ绠�
+        if(model.getCateRatePrice()==null){
+            model.setCateRatePrice(systemDictDataBiz.getGoodsPriceRate());
+        }
+        //杩斿洖
+        return Constants.formatBigdecimal(model.getPrice()).multiply(model.getCateRatePrice()).multiply(param.getRate());
+
+    }
+
+
+    @Override
+    public Integer companyCreate(Goods goods) {
+        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        if(user.getType()==1){
+            goods.setCompanyId(user.getCompanyId());
+        }else{
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠鐧诲綍鐢ㄦ埛绫诲埆閿欒锛屾棤娉曡繘琛岃鎿嶄綔");
+        }
+        if(goodsMapper.selectCount(new QueryWrapper<Goods>().eq("COMPANY_ID",user.getCompanyId()).eq("ISDELETED",Constants.ZERO).eq("name",goods.getName()))>0){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"銆�"+goods.getName()+"銆戝凡瀛樺湪");
+        }
+        goods.setStatus(Constants.ZERO);
+        goods.setCreateDate(new Date());
+        goods.setCreator(user.getId());
+        goods.setIsdeleted(Constants.ZERO);
+        //澶勭悊鎷奸煶闂
+        goods.setPinyin(PinYinUtil.getFullSpell(goods.getName()));
+        goods.setShortPinyin(PinYinUtil.getFirstSpell(goods.getName()));
+        goodsMapper.insert(goods);
+
+        List<Multifile> multifileList = goods.getMultifileList();
+        if(!Objects.isNull(multifileList)&&multifileList.size()>Constants.ZERO){
+            for (int i = 0; i < multifileList.size(); i++) {
+                Multifile multifile = multifileList.get(i);
+                multifile.setCreator(user.getId());
+                multifile.setCreateDate(new Date());
+                multifile.setIsdeleted(Constants.ZERO);
+                multifile.setSortnum(i+Constants.ONE);
+                multifile.setObjId(goods.getId());
+                multifile.setType(Constants.ZERO);
+                multifile.setObjType(Constants.ZERO);
+                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);
+                //瀛樺偍 cate_param_select 鏌ヨ鏄惁宸插瓨鍦�
+//                if(cateParamSelectMapper.selectCount(new QueryWrapper<CateParamSelect>()
+//                        .eq("PARAM_ID",goodsParam.getPramaId()).eq("NAME",goodsParam.getName()))<=Constants.ZERO){
+//                    CateParamSelect cateParamSelect = new CateParamSelect();
+//                    cateParamSelect.setCreator(user.getId());
+//                    cateParamSelect.setCreateDate(new Date());
+//                    cateParamSelect.setName(goodsParam.getVal());
+//                    cateParamSelect.setIsdeleted(Constants.ZERO);
+//                    cateParamSelect.setStatus(Constants.ZERO);
+//                    cateParamSelect.setParamId(goodsParam.getPramaId());
+//                    cateParamSelect.setCategoryId(goods.getCategoryId());
+//                    cateParamSelect.setStatus(Constants.ZERO);
+//                    cateParamSelectMapper.insert(cateParamSelect);
+//                };
+            }
+        }
         return goods.getId();
     }
 
@@ -191,6 +432,74 @@
         }
     }
 
+
+    @Override
+    public void companyUpdateById(Goods goods) {
+        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        if(user.getType()==1){
+            goods.setCompanyId(user.getCompanyId());
+        }else{
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠鐧诲綍鐢ㄦ埛绫诲埆閿欒锛屾棤娉曡繘琛岃鎿嶄綔");
+        }
+        if(goodsMapper.selectCount(new QueryWrapper<Goods>().eq("COMPANY_ID",user.getCompanyId()).eq("ISDELETED",Constants.ZERO).ne("id",goods.getId()).eq("name",goods.getName()))>0){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"銆�"+goods.getName()+"銆戝凡瀛樺湪");
+        };
+        goods.setStatus(Constants.ZERO);
+        goods.setEditDate(new Date());
+        goods.setEditor(user.getId());
+        goods.setIsdeleted(Constants.ZERO);
+        //澶勭悊鎷奸煶闂
+        goods.setPinyin(PinYinUtil.getFullSpell(goods.getName()));
+        goods.setShortPinyin(PinYinUtil.getFirstSpell(goods.getName()));
+        goodsMapper.updateById(goods);
+
+        multifileMapper.delete(new QueryWrapper<Multifile>().eq("OBJ_ID",goods.getId())
+                .eq("OBJ_TYPE",0).eq("COMPANY_ID",user.getCompanyId()));
+        List<Multifile> multifileList = goods.getMultifileList();
+        if(!Objects.isNull(multifileList)&&multifileList.size()>Constants.ZERO){
+            for (int i = 0; i < multifileList.size(); i++) {
+                Multifile multifile = multifileList.get(i);
+                multifile.setCreator(user.getId());
+                multifile.setCreateDate(new Date());
+                multifile.setIsdeleted(Constants.ZERO);
+                multifile.setSortnum(i+Constants.ONE);
+                multifile.setObjId(goods.getId());
+                multifile.setType(Constants.ZERO);
+                multifile.setObjType(Constants.ZERO);
+                multifileMapper.insert(multifile);
+            }
+        }
+        goodsParamMapper.delete(new QueryWrapper<GoodsParam>().eq("GOODS_ID",goods.getId()));
+        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.setSortnum(i+Constants.ONE);
+                goodsParam.setStatus(Constants.ZERO);
+                goodsParam.setGoodsId(goods.getId());
+                goodsParamMapper.insert(goodsParam);
+                //瀛樺偍 cate_param_select 鏌ヨ鏄惁宸插瓨鍦�
+//                if(cateParamSelectMapper.selectCount(new QueryWrapper<CateParamSelect>()
+//                        .eq("PARAM_ID",goodsParam.getPramaId()).eq("NAME",goodsParam.getName()))<=Constants.ZERO){
+//                    CateParamSelect cateParamSelect = new CateParamSelect();
+//                    cateParamSelect.setCreator(user.getId());
+//                    cateParamSelect.setCreateDate(new Date());
+//                    cateParamSelect.setName(goodsParam.getVal());
+//                    cateParamSelect.setIsdeleted(Constants.ZERO);
+//                    cateParamSelect.setStatus(Constants.ZERO);
+//                    cateParamSelect.setParamId(goodsParam.getPramaId());
+//                    cateParamSelect.setCategoryId(goods.getCategoryId());
+//                    cateParamSelect.setStatus(Constants.ZERO);
+//                    cateParamSelectMapper.insert(cateParamSelect);
+//                };
+            }
+        }
+    }
+
+
     @Override
     public void updateByIdInBatch(List<Goods> goodss) {
         if (CollectionUtils.isEmpty(goodss)) {
@@ -205,16 +514,73 @@
     @Override
     public void updateDisableById(Goods goods) {
         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        Goods dbGoods = goodsMapper.selectById(goods.getId());
+        if(Objects.isNull(dbGoods)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        //鎷夊紡鍟嗗搧 涓� 涓婃灦鏃讹紝闇�瑕侀檺鍒� 骞冲彴鍟嗗搧鏄惁宸蹭笅鏋�
+        if(dbGoods.getType().equals(Constants.goodsType.PULL)&&goods.getStatus().equals(Constants.ZERO)){
+            BaseGoods baseGoods = baseGoodsMapper.selectById(dbGoods.getGoodsId());
+            if(Objects.isNull(baseGoods)){
+                throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌骞冲彴鍟嗗搧淇℃伅");
+            }
+            if(!baseGoods.getStatus().equals(Constants.ZERO)){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"骞冲彴鍟嗗搧宸蹭笅鏋讹紝鏃犳硶涓婃灦");
+            }
+        }
         goods.setEditDate(new Date());
         goods.setEditor(user.getId());
         goodsMapper.updateById(goods);
     }
 
+    /**
+     * 鎵归噺涓婁笅鏋�
+     * @param batchDisableDTO
+     * @return
+     */
+    @Override
+    public String batchUpdateDisableById(BatchDisableDTO batchDisableDTO) {
+        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        if(StringUtils.isBlank(batchDisableDTO.getIds())){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璇烽�夋嫨瀵瑰簲鐨勫晢鍝佽繘琛岃鎿嶄綔");
+        }
+        if(!(batchDisableDTO.getStatus().equals(Constants.ZERO)||batchDisableDTO.getStatus().equals(Constants.ONE))){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鎿嶄綔绫诲瀷閿欒");
+        }
+        Integer okNum = 0;
+        Integer errNum = 0;
+        List<String> goodsList  = Arrays.asList(batchDisableDTO.getIds().split(","));
+        for (String goodsId:goodsList) {
+            Goods dbGoods = goodsMapper.selectById(goodsId);
+            if(Objects.isNull(dbGoods)){
+                errNum++;
+                continue;
+            }
+            //鎷夊紡鍟嗗搧 涓� 涓婃灦鏃讹紝闇�瑕侀檺鍒� 骞冲彴鍟嗗搧鏄惁宸蹭笅鏋�
+            if(dbGoods.getType().equals(Constants.goodsType.PULL)&&batchDisableDTO.getStatus().equals(Constants.ZERO)){
+                BaseGoods baseGoods = baseGoodsMapper.selectById(dbGoods.getGoodsId());
+                if(Objects.isNull(baseGoods)||!baseGoods.getStatus().equals(Constants.ZERO)){
+                    errNum++;
+                    continue;
+                }
+            }
+            dbGoods.setEditDate(new Date());
+            dbGoods.setEditor(user.getId());
+            dbGoods.setStatus(batchDisableDTO.getStatus());
+            goodsMapper.updateById(dbGoods);
+            okNum++;
+        }
+        return "鏇存柊鎴愬姛鏁伴噺("+okNum+");鏇存柊澶辫触鏁伴噺("+errNum+")";
+    }
+
+
+
+
     @Override
     public Goods findById(Integer id) {
         Goods goods = goodsMapper.selectById(id);
-        String prefixUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.FILE_DIR).getCode()
-                + systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.PROJECTS).getCode();
+        String prefixUrl = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
+                + systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_IMG).getCode();
         goods.setPrefixUrl(prefixUrl);
         Brand brand = brandMapper.selectById(goods.getBrandId());
         if(!Objects.isNull(brand)){
@@ -257,8 +623,8 @@
                 Goods::getPrice,goods.getSPrice(),goods.getEPrice());
         queryWrapper.orderByDesc(Goods::getId);
         List<Goods> goodsList = goodsJoinMapper.selectJoinList(Goods.class,queryWrapper);
-        String prefixUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.FILE_DIR).getCode()
-                + systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.PROJECTS).getCode();
+        String prefixUrl = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
+                + systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_IMG).getCode();
         goodsList.forEach(i->{
             i.setPrefixUrl(prefixUrl);
             i.setMultifileList(multifileMapper.selectList(new QueryWrapper<Multifile>().eq("OBJ_ID",i.getId()).orderByAsc(" SORTNUM ")));
@@ -275,11 +641,16 @@
         queryWrapper.selectAll(Goods.class);
 
         queryWrapper.selectAs(Category::getName, Goods::getCategoryName);
+        queryWrapper.selectAs(BaseGoods::getZdPrice, Goods::getBaseZdPrice);
+        queryWrapper.selectAs(BaseGoods::getPrice, Goods::getBasePrice);
         queryWrapper.selectAs(Brand::getName, Goods::getBrandName);
         queryWrapper.selectAs(Category::getAttrFirst, Goods::getAttrFirst);
         queryWrapper.selectAs(Category::getAttrSecond, Goods::getAttrSecond);
+        queryWrapper.selectAs(BaseCategory::getPriceRate,Goods::getBasePriceRate);
         queryWrapper.leftJoin(Category.class, Category::getId, Goods::getCategoryId);
         queryWrapper.leftJoin(Brand.class, Brand::getId, Goods::getBrandId);
+        queryWrapper.leftJoin(BaseGoods.class,BaseGoods::getId,Goods::getGoodsId);
+        queryWrapper.leftJoin(BaseCategory.class,BaseCategory::getId,BaseGoods::getCategoryId);
 
         queryWrapper.eq(Goods::getIsdeleted, Constants.ZERO);
         if (pageWrap.getModel().getId() != null) {
@@ -291,19 +662,22 @@
         if (pageWrap.getModel().getStatus() != null) {
             queryWrapper.eq(Goods::getStatus, pageWrap.getModel().getStatus());
         }
-
+        if (pageWrap.getModel().getType() != null) {
+            queryWrapper.eq(Goods::getType, pageWrap.getModel().getType());
+        }
         if (pageWrap.getModel().getCategoryId() != null) {
             queryWrapper.eq(Goods::getCategoryId, pageWrap.getModel().getCategoryId());
         }
         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();
+        String prefixUrl = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
+                + systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_IMG).getCode();
         goodsIPage.getRecords().forEach(i->{
             i.setPrefixUrl(prefixUrl);
         });
@@ -361,6 +735,7 @@
             Goods g = new Goods();
             g.setIsdeleted(Constants.ZERO);
             g.setRemark(m.getId());
+            g.setCompanyId(user.getCompanyId());
             //鍝佺被鏁版嵁
             g = goodsMapper.selectOne(new QueryWrapper<>(g).last(" limit 1"));
             if(g != null){
@@ -369,6 +744,7 @@
             Category cate = new Category();
             cate.setIsdeleted(Constants.ZERO);
             cate.setName(m.getCategory());
+            cate.setCompanyId(user.getCompanyId());
             //鍝佺被鏁版嵁
             cate = categoryMapper.selectOne(new QueryWrapper<>(cate).last(" limit 1"));
             if(cate == null){
@@ -378,7 +754,9 @@
             brand.setIsdeleted(Constants.ZERO);
             brand.setName(m.getBrand());
             //鍝佺被鏁版嵁
-            brand = brandMapper.selectOne(new QueryWrapper<>(brand).last(" limit 1"));
+            QueryWrapper<Brand> qwrapper = new QueryWrapper<>(brand);
+            qwrapper.lambda().and(wapper-> wapper.eq(Brand::getCompanyId ,user.getCompanyId()).or().eq(Brand::getType,Constants.ONE));
+            brand = brandMapper.selectOne(qwrapper.last(" limit 1"));
             if(brand == null){
                 throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗��"+(num)+"銆戣鍟嗗搧鍝佺墝鏃犳晥锛岃妫�鏌ヨ緭鍏ワ紒");
             }
@@ -391,6 +769,7 @@
             newModel.setBrandId(brand.getId());
             newModel.setIsdeleted(Constants.ZERO);
             newModel.setCreator(user.getId());
+            newModel.setCompanyId(user.getCompanyId());
             newModel.setCreateDate(new Date());
             newModel.setName(m.getName());
             newModel.setStatus(Constants.ZERO);
@@ -409,67 +788,14 @@
             newModel.setPinyin(PinYinUtil.getFullSpell(m.getName()));
             newModel.setShortPinyin(PinYinUtil.getFirstSpell(m.getName()));
 
-            CateAttr ca = new CateAttr();
-            ca.setCategoryId(cate.getId());
-            ca.setIsdeleted(Constants.ZERO);
-            //鏌ヨ鍏ㄩ儴灞炴��1鍜屽睘鎬�2瑙勬牸鍊�
-            List<CateAttr> allAttr = cateAttrMapper.selectList(new QueryWrapper<>(ca));
-            //灞炴��1闆嗗悎
-            String[] attrs = StringUtils.defaultString(m.getAttrFirstNames(),"").split("\n");
-            //灞炴��2闆嗗悎
-            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);
-
-            }
             List<String> mulFiles = null;
             String proDir =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PROJECTS).getCode();
 
-            String tf = proDir.substring(0,proDir.length()-1);
             String path = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.GOODS_IMG_DIR).getCode()
-                    + proDir;
+                    + proDir + File.separator + user.getCompanyId();
             if(StringUtils.isNotBlank(path)){
+                OssModel ossModel = baseDataService.initOssModel();
                 File dir =new File(path+File.separator+newModel.getRemark()+File.separator);
                 if(dir!=null && dir.isDirectory()){
                     File[]  files = dir.listFiles();
@@ -477,16 +803,8 @@
                         for(File f:files){
                             if(StringUtils.isBlank(newModel.getImgurl()) && isImgFile(f)){
                                 //鍙栫涓�寮犲浘鐗囦綔涓哄垪琛ㄥ浘
-                                String imgdir =f.getPath().substring(f.getPath().indexOf(tf)+tf.length()+1);
-                                newModel.setImgurl(imgdir.replace(File.separator,"/"));
-//                                 newModel.setImgurl(f.getPath().replace(path.replace(File.separator,"/"),""));
+                                newModel.setImgurl(baseDataService.getOssImgurl(ossModel,ossModel.getGoodsFolder(),f));
                             }
-//                             else{
-//                                 if(mulFiles==null){
-//                                     mulFiles = new ArrayList<>();
-//                                 }
-//                                 mulFiles.add(f.getPath().replace(path.replace("/",File.separator),""));
-//                             }
                             if((mulFiles ==null || mulFiles.size() == 0) && f.isDirectory()){
                                 //濡傛灉鏄枃浠跺す
                                 File[] fs = f.listFiles();
@@ -496,12 +814,7 @@
                                             if(mulFiles==null){
                                                 mulFiles = new ArrayList<>();
                                             }
-
-                                            String imgdir =mf.getPath().substring(mf.getPath().indexOf(tf)+tf.length()+1);
-                                            mulFiles.add(imgdir.replace(File.separator,"/"));
-//                                             newModel.setImgurl(imgdir);
-////                                             mulFiles.add(mf.getName());
-//                                             mulFiles.add(mf.getPath().replace(path.replace(File.separator,"/"),""));
+                                            mulFiles.add(baseDataService.getOssImgurl(ossModel,ossModel.getGoodsFolder(),mf));
                                         }
                                     }
                                 }
@@ -544,6 +857,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){
@@ -558,6 +885,7 @@
                     f.setCreator(newModel.getCreator());
                     f.setIsdeleted(Constants.ZERO);
                     f.setSortnum(i);
+                    f.setCompanyId(user.getCompanyId());
                     f.setFileurl(s);
                     multifileMapper.insert(f);
                 }
@@ -567,6 +895,9 @@
         return  num;
 
     }
+
+
+
 
     private boolean isImgFile(File f) {
         if(f!=null && f.isFile() ){
@@ -653,6 +984,7 @@
     @Override
     public void export(HttpServletRequest request, HttpServletResponse response) throws Exception {
         try {
+            LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
             String fileName = "浜у搧瀵煎叆琛�"+System.currentTimeMillis()+".xlsx";
             // 鑾峰彇鏂囦欢杈撳叆娴�
             InputStream inputStream =  this.getClass().getClassLoader().getResourceAsStream("static/file/goodsExcelTemp.xlsx");
@@ -666,7 +998,10 @@
             // sheet.getPhysicalNumberOfRows()鑾峰彇鎬荤殑琛屾暟
             // 寰幆璇诲彇姣忎竴琛�
             Row row = sheet.createRow(1);
-            List<Category> categoryList = categoryMapper.selectList(new QueryWrapper<Category>().eq("ISDELETED",0));
+            List<Category> categoryList = categoryMapper.selectList(
+                    new QueryWrapper<Category>().eq("ISDELETED",0)
+                            .eq("COMPANY_ID",loginUserInfo.getCompanyId())
+            );
             categoryList.forEach(i->{
                 i.setParamList(cateParamMapper.selectList(new QueryWrapper<CateParam>().eq("ISDELETED",0).eq("CATEGORY_ID",i.getId())));
             });
@@ -725,14 +1060,18 @@
                                 .or().like(Goods::getShortPinyin,pageWrap.getModel().getKeyword())
                                 .or().like(Goods::getName,pageWrap.getModel().getKeyword())
                 )
-                .apply(!Objects.isNull(pageWrap.getModel()) && !Objects.isNull(pageWrap.getModel().getAttrFirst()), " find_in_set('"+pageWrap.getModel().getAttrFirst()+"',t.ATTR_FIRST_IDS) ")
-                .apply(!Objects.isNull(pageWrap.getModel()) && !Objects.isNull(pageWrap.getModel().getAttrSecond()), " find_in_set('"+pageWrap.getModel().getAttrSecond()+"',t.ATTR_SECOD_IDS) ")
+//                .apply(!Objects.isNull(pageWrap.getModel()) && !Objects.isNull(pageWrap.getModel().getAttrFirst()), " find_in_set('"+pageWrap.getModel().getAttrFirst()+"',t.ATTR_FIRST_IDS) ")
+//                .apply(!Objects.isNull(pageWrap.getModel()) && !Objects.isNull(pageWrap.getModel().getAttrSecond()), " find_in_set('"+pageWrap.getModel().getAttrSecond()+"',t.ATTR_SECOD_IDS) ")
+                .apply(!Objects.isNull(pageWrap.getModel()) && !Objects.isNull(pageWrap.getModel().getAttrFirst()), " t.id in ( SELECT  gp.GOODS_ID   FROM  cate_param_select cps  ,  goods_param gp where     gp.PRAMA_ID = cps.PARAM_ID     and gp.VAL = cps.`NAME`  " +
+                        " and cps.ID = '"+pageWrap.getModel().getAttrFirst()+"' ) ")
+                .apply(!Objects.isNull(pageWrap.getModel()) && !Objects.isNull(pageWrap.getModel().getAttrSecond()), " t.id in ( SELECT  gp.GOODS_ID   FROM  cate_param_select cps  ,  goods_param gp where     gp.PRAMA_ID = cps.PARAM_ID     and gp.VAL = cps.`NAME`  " +
+                        " and cps.ID = '"+pageWrap.getModel().getAttrSecond()+"' ) ")
                 .apply(!Objects.isNull(pageWrap.getModel()) && !Objects.isNull(pageWrap.getModel().getSPrice()), "  t.PRICE >=  "+pageWrap.getModel().getSPrice()+" ")
                 .apply(!Objects.isNull(pageWrap.getModel()) && !Objects.isNull(pageWrap.getModel().getEPrice()), "  t.PRICE <=  "+pageWrap.getModel().getEPrice()+" ");
         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();
+        String prefixUrl = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
+                + systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_IMG).getCode();
         goodsIPage.getRecords().forEach(i->{
             i.setPrefixUrl(prefixUrl);
             i.setMultifileList(multifileMapper.selectList(new QueryWrapper<Multifile>().eq("OBJ_ID",i.getId()).orderByAsc(" SORTNUM ")));
@@ -744,6 +1083,10 @@
 
     @Override
     public List<Goods> findListForH5(GoodsRequest goodsRequest) {
+        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        if(!loginUserInfo.getType().equals(Constants.UserType.ZHUBO.getKey())){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炰富鎾敤鎴锋棤娉曚娇鐢�");
+        }
         MPJLambdaWrapper<Goods> queryWrapper = new MPJLambdaWrapper<>();
         queryWrapper.selectAll(Goods.class);
         queryWrapper.selectAs(Category::getName, Goods::getCategoryName);
@@ -755,6 +1098,7 @@
         queryWrapper.leftJoin(Brand.class, Brand::getId, Goods::getBrandId);
         queryWrapper.eq(Goods::getStatus,Constants.ZERO);
         queryWrapper.eq(Goods::getIsdeleted,Constants.ZERO);
+        queryWrapper.eq(Goods::getCompanyId,loginUserInfo.getCompanyId());
         queryWrapper.eq(!Objects.isNull(goodsRequest) && !Objects.isNull(goodsRequest.getCategoryId()), Goods::getCategoryId, goodsRequest.getCategoryId())
                 .eq(!Objects.isNull(goodsRequest) && !Objects.isNull(goodsRequest.getBrandId()), Goods::getBrandId, goodsRequest.getBrandId())
                 .and(!Objects.isNull(goodsRequest) && StringUtils.isNotBlank(goodsRequest.getKeyword()),
@@ -768,8 +1112,8 @@
                 .apply(!Objects.isNull(goodsRequest) && !Objects.isNull(goodsRequest.getEPrice()), "  t.PRICE <=  "+goodsRequest.getEPrice()+" ");
         queryWrapper.orderByDesc(Goods::getId);
         List<Goods> goodsList = goodsJoinMapper.selectJoinList(Goods.class,queryWrapper);
-        String prefixUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.FILE_DIR).getCode()
-                + systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.PROJECTS).getCode();
+        String prefixUrl = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
+                + systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_IMG).getCode();
         goodsList.forEach(i->{
             i.setPrefixUrl(prefixUrl);
             i.setMultifileList(multifileMapper.selectList(new QueryWrapper<Multifile>().eq("OBJ_ID",i.getId()).orderByAsc(" SORTNUM ")));

--
Gitblit v1.9.3