From 5a02b62b3b2b3663b89a1fb8be0c3f6ac1eb1d3f Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Tue, 29 Jun 2021 17:54:48 +0800
Subject: [PATCH] fix

---
 gc-shop/src/main/java/com/xzx/gc/shop/service/GoodsService.java |  318 ++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 303 insertions(+), 15 deletions(-)

diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/service/GoodsService.java b/gc-shop/src/main/java/com/xzx/gc/shop/service/GoodsService.java
index 59030c1..089e010 100644
--- a/gc-shop/src/main/java/com/xzx/gc/shop/service/GoodsService.java
+++ b/gc-shop/src/main/java/com/xzx/gc/shop/service/GoodsService.java
@@ -1,33 +1,33 @@
 package com.xzx.gc.shop.service;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.convert.Convert;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUnit;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import com.xzx.gc.common.constant.CommonEnum;
 import com.xzx.gc.common.constant.Constants;
-import com.xzx.gc.common.dto.log.OperationAppLog;
 import com.xzx.gc.common.utils.MqUtil;
-import com.xzx.gc.entity.CoreUser;
-import com.xzx.gc.entity.ScoreGoodsCategory;
-import com.xzx.gc.model.JsonResult;
+import com.xzx.gc.entity.*;
 import com.xzx.gc.model.admin.GoodsCategoryModel;
-import com.xzx.gc.shop.dto.QueryGoodsCategoryListDto;
-import com.xzx.gc.shop.mapper.ScoreGoodsCategoryMapper;
-import com.xzx.gc.shop.vo.QueryGoodsCategoryListVo;
-import com.xzx.gc.shop.vo.ViewGoodsCategoryVo;
-import com.xzx.gc.util.SessionUtil;
+import com.xzx.gc.model.order.OrderInfoVo;
+import com.xzx.gc.shop.dto.*;
+import com.xzx.gc.shop.mapper.*;
+import com.xzx.gc.shop.vo.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import tk.mybatis.mapper.entity.Example;
 
 import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @Service
 @Transactional
@@ -36,6 +36,16 @@
 
     @Resource
     ScoreGoodsCategoryMapper scoreGoodsCategoryMapper;
+    @Resource
+    ScoreGoodsMapper scoreGoodsMapper;
+    @Resource
+    ScoreGoodsSkuMapper scoreGoodsSkuMapper;
+    @Resource
+    ScoreGoodsImagesMapper scoreGoodsImagesMapper;
+    @Resource
+    ScoreGoodsStyleMapper scoreGoodsStyleMapper;
+    @Resource
+    ScoreGoodsSearchMapper scoreGoodsSearchMapper;
 
     @Autowired
     private MqUtil mqUtil;
@@ -63,7 +73,7 @@
         scoreGoodsCategory.setParentId(model.getParentId());
         scoreGoodsCategory.setCreatedBy(model.getCreatedBy());
         scoreGoodsCategory.setCreatedTime(model.getCreatedTime());
-        scoreGoodsCategoryMapper.insert(scoreGoodsCategory);
+        scoreGoodsCategoryMapper.insertSelective(scoreGoodsCategory);
         return scoreGoodsCategory.getId();
     }
 
@@ -89,4 +99,282 @@
         scoreGoodsCategory.setParentId(model.getParentId());
         scoreGoodsCategoryMapper.updateByPrimaryKey(scoreGoodsCategory);
     }
+
+    public Map<String, Object> queryGoodsList(QueryGoodsListDto model) {
+        String name = model.getName() == null ? "":model.getName();
+        int delFlag = model.getDelFlag() == null ? 2:model.getDelFlag();
+        PageHelper.startPage(model.getPage(), model.getLimit());
+
+        List<QueryGoodsListVo> maps = scoreGoodsMapper.queryGoodsList(name,delFlag);
+        PageInfo pageInfo = new PageInfo(maps);
+        int count = Convert.toInt(pageInfo.getTotal());
+        Map<String, Object> map = new HashMap<>();
+        map.put("data", maps);
+        map.put("count", count);
+        map.put("code", 0);
+        return map;
+    }
+
+    public Long addGoods(AddGoodsDto model) {
+        //新增商品主信息
+        ObjectMapper objectMapper = new ObjectMapper();
+        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+        ScoreGoods scoreGoods = objectMapper.convertValue(model, ScoreGoods.class);
+        scoreGoods.setDelFlag(Convert.toShort(Constants.DEL_NOT_FLAG));
+        scoreGoodsMapper.insertSelective(scoreGoods);
+        //样式信息
+        List<ScoreGoodsStyleDto> scoreGoodsStyleDtos = model.getScoreGoodsStyles();
+        if(CollUtil.isNotEmpty(scoreGoodsStyleDtos)){
+            for(ScoreGoodsStyleDto scoreGoodsStyleDto : scoreGoodsStyleDtos){
+                ScoreGoodsStyle scoreGoodsStyle = objectMapper.convertValue(scoreGoodsStyleDto, ScoreGoodsStyle.class);
+                scoreGoodsStyle.setGoodsId(scoreGoods.getId());
+                scoreGoodsStyle.setDelFlag(Convert.toShort(Constants.DEL_NOT_FLAG));
+                scoreGoodsStyleMapper.insertSelective(scoreGoodsStyle);
+                //规格信息
+                List<ScoreGoodsSkuDto> scoreGoodsSkuDtos = scoreGoodsStyleDto.getScoreGoodsSkus();
+                if(CollUtil.isNotEmpty(scoreGoodsSkuDtos)){
+                    for(ScoreGoodsSkuDto scoreGoodsSkuDto : scoreGoodsSkuDtos){
+                        ScoreGoodsSku scoreGoodsSku = objectMapper.convertValue(scoreGoodsSkuDto, ScoreGoodsSku.class);
+                        scoreGoodsSku.setGoodsId(scoreGoods.getId());
+                        scoreGoodsSku.setStyleId(scoreGoodsStyle.getId());
+                        scoreGoodsSku.setDelFlag(Convert.toShort(Constants.DEL_NOT_FLAG));
+                        scoreGoodsSkuMapper.insertSelective(scoreGoodsSku);
+                    }
+                }
+            }
+        }
+        //轮播图信息
+        List<String> goodsImages = model.getGoodsImages();
+        if(CollUtil.isNotEmpty(goodsImages)){
+            for(String goodImage : goodsImages){
+                ScoreGoodsImages scoreGoodsImages = new ScoreGoodsImages();
+                scoreGoodsImages.setImageUrl(goodImage);
+                scoreGoodsImages.setGoodsId(scoreGoods.getId());
+                scoreGoodsImages.setDelFlag(Convert.toShort(Constants.DEL_NOT_FLAG));
+                scoreGoodsImagesMapper.insert(scoreGoodsImages);
+            }
+        }
+        return scoreGoods.getId();
+    }
+
+    public void deleteGoods(long id) {
+
+        scoreGoodsMapper.updateDelFlagById(id,Convert.toShort(Constants.DEL_FLAG));
+
+        Example exampleStyle = new Example(ScoreGoodsStyle.class);
+        Example.Criteria criteriaStyle = exampleStyle.createCriteria();
+        criteriaStyle.andEqualTo("goodsId",id);
+        List<ScoreGoodsStyle> goodsStyles = scoreGoodsStyleMapper.selectByExample(exampleStyle);
+        if(CollUtil.isNotEmpty(goodsStyles)){
+            for(ScoreGoodsStyle scoreGoodsStyle : goodsStyles){
+                scoreGoodsStyleMapper.updateDelFlagById(scoreGoodsStyle.getId(),Convert.toShort(Constants.DEL_FLAG));
+            }
+        }
+
+        Example exampleSku = new Example(ScoreGoodsStyle.class);
+        Example.Criteria criteriaSku = exampleSku.createCriteria();
+        criteriaSku.andEqualTo("goodsId",id);
+        List<ScoreGoodsSku> goodsSkus = scoreGoodsSkuMapper.selectByExample(exampleSku);
+        if(CollUtil.isNotEmpty(goodsSkus)){
+            for(ScoreGoodsSku scoreGoodsSku : goodsSkus){
+                scoreGoodsSkuMapper.updateDelFlagById(scoreGoodsSku.getId(),Convert.toShort(Constants.DEL_FLAG));
+            }
+        }
+    }
+
+    public ViewGoodsVo viewGoods(long id) {
+        ViewGoodsVo viewGoodsVo = new ViewGoodsVo();
+        ScoreGoods scoreGoods = scoreGoodsMapper.selectByPrimaryKey(id);
+        if(ObjectUtil.isNotEmpty(scoreGoods)){
+            ObjectMapper objectMapper = new ObjectMapper();
+            objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+            viewGoodsVo = objectMapper.convertValue(scoreGoods, ViewGoodsVo.class);
+//            viewGoodsVo.setCreateTime(scoreGoods.getCreatedTime().toString());
+            //轮播图
+            List<String> goodsImages = scoreGoodsImagesMapper.selectScoreGoodsImagesByGoodsId(id);
+            viewGoodsVo.setGoodsImages(goodsImages);
+            //样式
+            List<ScoreGoodsStyleVo> scoreGoodsStyleVos = new ArrayList<>();
+            List<ScoreGoodsStyle> goodsStyles = scoreGoodsStyleMapper.selectScoreGoodsStyleByGoodsId(id);
+            if(CollUtil.isNotEmpty(goodsStyles)){
+                for(ScoreGoodsStyle goodsStyle : goodsStyles){
+                    ScoreGoodsStyleVo scoreGoodsStyleVo = objectMapper.convertValue(goodsStyle, ScoreGoodsStyleVo.class);
+                    //获取规格
+                    Long styleId = goodsStyle.getId();
+                    List<ScoreGoodsSkuVo> goodsSkus = scoreGoodsSkuMapper.selectScoreGoodsSkuByGoodsIdAndStyleId(id,styleId);
+                    scoreGoodsStyleVo.setScoreGoodsSkus(goodsSkus);
+                    scoreGoodsStyleVos.add(scoreGoodsStyleVo);
+                }
+            }
+            viewGoodsVo.setScoreGoodsStyles(scoreGoodsStyleVos);
+        }
+        return viewGoodsVo;
+    }
+
+    public void updateGoods(UpdateGoodsDto model) {
+        ObjectMapper objectMapper = new ObjectMapper();
+        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+//        ScoreGoods scoreGoods = objectMapper.convertValue(model, ScoreGoods.class);
+        ScoreGoods scoreGoods = BeanUtil.copyProperties(model, ScoreGoods.class);
+        scoreGoodsMapper.updateByPrimaryKey(scoreGoods);
+
+        //轮播图
+        Example exampleImages = new Example(ScoreGoodsImages.class);
+        Example.Criteria criteriaImages = exampleImages.createCriteria();
+        criteriaImages.andEqualTo("goodsId",scoreGoods.getId());
+        scoreGoodsImagesMapper.deleteByExample(exampleImages);
+        List<String> goodsImages = model.getGoodsImages();
+        if(CollUtil.isNotEmpty(goodsImages)){
+            for(String goodImage : goodsImages){
+                ScoreGoodsImages scoreGoodsImages = new ScoreGoodsImages();
+                scoreGoodsImages.setImageUrl(goodImage);
+                scoreGoodsImages.setGoodsId(scoreGoods.getId());
+                scoreGoodsImages.setDelFlag(Convert.toShort(Constants.DEL_NOT_FLAG));
+                scoreGoodsImagesMapper.insertSelective(scoreGoodsImages);
+            }
+        }
+
+        List<ScoreGoodsStyleDto> scoreGoodsStyleDtos = model.getScoreGoodsStyles();
+        if(CollUtil.isNotEmpty(scoreGoodsStyleDtos)){
+            Example exampleStyle = new Example(ScoreGoodsStyle.class);
+            Example.Criteria criteriaStyle = exampleStyle.createCriteria();
+            criteriaStyle.andEqualTo("goodsId",scoreGoods.getId());
+            scoreGoodsStyleMapper.deleteByExample(exampleImages);
+
+            Example exampleSku = new Example(ScoreGoodsSku.class);
+            Example.Criteria criteriaSku = exampleSku.createCriteria();
+            criteriaSku.andEqualTo("goodsId",scoreGoods.getId());
+            scoreGoodsSkuMapper.deleteByExample(exampleImages);
+
+            for(ScoreGoodsStyleDto scoreGoodsStyleDto : scoreGoodsStyleDtos){
+                ScoreGoodsStyle scoreGoodsStyle = new ScoreGoodsStyle();
+                scoreGoodsStyle.setId(scoreGoodsStyleDto.getId());
+                scoreGoodsStyle.setName(scoreGoodsStyleDto.getName());
+                scoreGoodsStyle.setGoodsId(scoreGoods.getId());
+                scoreGoodsStyleMapper.insertSelective(scoreGoodsStyle);
+                //规格
+                List<ScoreGoodsSkuDto> scoreGoodsSkuDtos = scoreGoodsStyleDto.getScoreGoodsSkus();
+                if(CollUtil.isNotEmpty(scoreGoodsSkuDtos)){
+                    for(ScoreGoodsSkuDto scoreGoodsSkuDto : scoreGoodsSkuDtos){
+                        ScoreGoodsSku scoreGoodsSku = objectMapper.convertValue(scoreGoodsSkuDto, ScoreGoodsSku.class);
+                        scoreGoodsSku.setGoodsId(scoreGoods.getId());
+                        scoreGoodsSku.setStyleId(scoreGoodsStyle.getId());
+                        scoreGoodsSkuMapper.insertSelective(scoreGoodsSku);
+                    }
+                }
+            }
+        }
+    }
+
+    public void saleGoods(long id, Integer issale) {
+        ScoreGoods scoreGoods = new ScoreGoods();
+        scoreGoods.setIsSale(issale);
+        Example exampleGoods = new Example(ScoreGoods.class);
+        Example.Criteria criteriaGoods = exampleGoods.createCriteria();
+        criteriaGoods.andEqualTo("id",id);
+        scoreGoodsMapper.updateByExampleSelective(scoreGoods,exampleGoods);
+    }
+
+    public void snapUpGoods(SnapUpGoodsDto model) {
+        long id = model.getId();
+        Integer isQg = model.getIsQg();
+        if(ScoreGoods.ISQG_YES == isQg){
+            ScoreGoods scoreGoods = new ScoreGoods();
+            scoreGoods.setIsQg(ScoreGoods.ISQG_YES);
+            scoreGoods.setQgStartTime(model.getQgStartTime());
+            scoreGoods.setQgEndTime(model.getQgEndTime());
+            Example exampleGoods = new Example(ScoreGoods.class);
+            Example.Criteria criteriaGoods = exampleGoods.createCriteria();
+            criteriaGoods.andEqualTo("id",id);
+            scoreGoodsMapper.updateByExampleSelective(scoreGoods,exampleGoods);
+        }else{
+            ScoreGoods scoreGoods = new ScoreGoods();
+            scoreGoods.setIsQg(ScoreGoods.ISQG_NO);
+            scoreGoods.setQgEndTime(null);
+            scoreGoods.setQgStartTime(null);
+            Example exampleGoods = new Example(ScoreGoods.class);
+            Example.Criteria criteriaGoods = exampleGoods.createCriteria();
+            criteriaGoods.andEqualTo("id",id);
+            scoreGoodsMapper.updateByExampleSelective(scoreGoods,exampleGoods);
+        }
+    }
+
+    public List<ViewGoodsCategoryListVo> viewGoodsCategoryList(ViewGoodsCategoryListDto viewGoodsCategoryListDto) {
+        List<ViewGoodsCategoryListVo> maps = new ArrayList<>();
+        if(viewGoodsCategoryListDto.getParentId() == 0L){
+            maps = scoreGoodsCategoryMapper.viewGoodsCategoryOneList(viewGoodsCategoryListDto.getParentId());
+        }else{
+            maps = scoreGoodsCategoryMapper.viewGoodsCategoryList();
+        }
+        return maps;
+    }
+
+    public List<GoodsCategoryVo> findCategoryWithChildren() {
+        return scoreGoodsCategoryMapper.selectCategoryWithChildren();
+    }
+
+    public PageInfo<XcxGoodsListVo> findGoodsListInPage(XcxGoodsListDto xcxGoodsListDto) {
+
+        PageHelper.startPage(xcxGoodsListDto.getPageNo(), xcxGoodsListDto.getPageSize());
+        List<XcxGoodsListVo> data = scoreGoodsMapper.selectXcxGoodsList(xcxGoodsListDto);
+        if(StrUtil.isNotEmpty(xcxGoodsListDto.getName())){
+            Example exampleSearch = new Example(ScoreGoodsSearch.class);
+            Example.Criteria criteriaSearch = exampleSearch.createCriteria();
+            criteriaSearch.andEqualTo("contents",xcxGoodsListDto.getName());
+            criteriaSearch.andEqualTo("userId",xcxGoodsListDto.getUserId());
+            List<ScoreGoodsSearch> scoreGoodsSearches = scoreGoodsSearchMapper.selectByExample(exampleSearch);
+            if(CollUtil.isEmpty(scoreGoodsSearches)){
+                ScoreGoodsSearch scoreGoodsSearch = new ScoreGoodsSearch();
+                scoreGoodsSearch.setUserId(xcxGoodsListDto.getUserId());
+                scoreGoodsSearch.setContents(xcxGoodsListDto.getName());
+                scoreGoodsSearch.setCreatedTime(new Date());
+                scoreGoodsSearchMapper.insert(scoreGoodsSearch);
+            }
+        }
+        return new PageInfo<>(data);
+    }
+
+    public XcxGoodsDetailVo findGoodsDetails(Long id) {
+        XcxGoodsDetailVo data = scoreGoodsMapper.selectGoodsDetailsById(id);
+        XcxGoodsListDto dto = new XcxGoodsListDto();
+        dto.setId(id);
+        List<XcxGoodsListVo> list = scoreGoodsMapper.selectXcxGoodsList(dto);
+
+        List<String> images = scoreGoodsImagesMapper.selectScoreGoodsImagesByGoodsId(id);
+        data.setImages(images);
+        if (CollUtil.isNotEmpty(list)) {
+            data.setQuantity(list.get(0).getQuantity());
+            data.setStock(list.get(0).getStock());
+        }
+
+        if (ScoreGoods.ISQG_YES.equals(data.getIsQg())) {
+            if (new Date().before(data.getQgStartTime())) {
+                data.setIsStartQg(2);
+            } else {
+                data.setIsStartQg(1);
+                Long remain = DateUtil.between(new Date(), data.getQgEndTime(), DateUnit.SECOND, false);
+                data.setRemainTime(remain);
+            }
+        }
+        return data;
+    }
+
+    public List<GoodsSearchVo> goodsSearch(GoodsSearchDto goodsSearchDto) {
+        return scoreGoodsSearchMapper.goodsSearch(goodsSearchDto);
+    }
+
+    public void delGoodsSearch(Long id, String userId) {
+        Example exampleSearch = new Example(ScoreGoodsSearch.class);
+        Example.Criteria criteriaSearch = exampleSearch.createCriteria();
+        criteriaSearch.andEqualTo("id",id);
+        criteriaSearch.andEqualTo("userId",userId);
+        scoreGoodsSearchMapper.deleteByExample(exampleSearch);
+    }
+
+    public void delAllSearch(String userId) {
+        Example exampleSearch = new Example(ScoreGoodsSearch.class);
+        Example.Criteria criteriaSearch = exampleSearch.createCriteria();
+        criteriaSearch.andEqualTo("userId",userId);
+        scoreGoodsSearchMapper.deleteByExample(exampleSearch);
+    }
 }

--
Gitblit v1.9.1