From afa0dbb4f54e7244835dd67ec33c3e545f122f71 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期五, 17 一月 2025 16:40:43 +0800
Subject: [PATCH] bug修改

---
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java |  544 ++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 505 insertions(+), 39 deletions(-)

diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java
index d4652e2..e66d55a 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java
@@ -1,31 +1,45 @@
 package com.ruoyi.goods.service.impl.goods;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.core.exception.ServiceException;
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.core.utils.bean.BeanUtils;
+import com.ruoyi.common.core.utils.uuid.IdUtils;
+import com.ruoyi.common.security.utils.CodeFactoryUtil;
 import com.ruoyi.goods.domain.dto.*;
+import com.ruoyi.system.api.domain.poji.activity.Activity;
+import com.ruoyi.goods.domain.pojo.goods.GoodsTotal;
+import com.ruoyi.goods.domain.vo.*;
+import com.ruoyi.goods.mapper.goods.GoodsMapper;
+import com.ruoyi.goods.service.activity.ActivityGoodsService;
+import com.ruoyi.goods.service.activity.ActivityRecordService;
+import com.ruoyi.goods.service.activity.ActivityService;
+import com.ruoyi.goods.service.goods.GoodsFileService;
+import com.ruoyi.goods.service.goods.GoodsService;
+import com.ruoyi.goods.service.goods.GoodsTotalService;
+import com.ruoyi.goods.service.goods.ShopGoodsService;
+import com.ruoyi.system.api.constant.AppErrorConstant;
+import com.ruoyi.system.api.domain.dto.AppActivityGoodsPageDto;
+import com.ruoyi.system.api.domain.dto.MerGoodsPriceListDto;
+import com.ruoyi.system.api.domain.dto.MgtBaseGetDto;
+import com.ruoyi.system.api.domain.dto.MgtClassNumDto;
+import com.ruoyi.system.api.domain.poji.activity.ActivityGoods;
+import com.ruoyi.system.api.domain.poji.config.SysClassification;
 import com.ruoyi.system.api.domain.poji.goods.Goods;
 import com.ruoyi.system.api.domain.poji.goods.GoodsFile;
 import com.ruoyi.system.api.domain.poji.goods.ShopGoods;
-import com.ruoyi.goods.domain.vo.AppGoodsInfoVo;
-import com.ruoyi.goods.domain.vo.AppSimpleActivityGoodsVo;
-import com.ruoyi.goods.domain.vo.AppSimpleGoodsVo;
-import com.ruoyi.goods.domain.vo.MerGoodsPageVo;
-import com.ruoyi.goods.mapper.goods.GoodsMapper;
-import com.ruoyi.goods.service.activity.ActivityGoodsService;
-import com.ruoyi.goods.service.goods.GoodsFileService;
-import com.ruoyi.goods.service.goods.GoodsService;
-import com.ruoyi.goods.service.goods.ShopGoodsService;
-import com.ruoyi.system.api.constant.AppErrorConstant;
-import com.ruoyi.system.api.domain.poji.activity.ActivityGoods;
-import org.springframework.beans.BeanUtils;
+import com.ruoyi.system.api.domain.vo.MerGoodsPriceListVo;
+import com.ruoyi.system.api.domain.vo.MgtSelectGoodsPageVo;
+import com.ruoyi.system.api.service.RemoteConfigService;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
-import java.util.StringJoiner;
+import java.nio.charset.StandardCharsets;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -50,15 +64,50 @@
     @Resource
     private GoodsFileService goodsFileService;
 
+    @Resource
+    private RemoteConfigService remoteConfigService;
+
+    @Resource
+    private GoodsTotalService goodsTotalService;
+
+    @Resource
+    private ActivityService activityService;
+
+    @Resource
+    private ActivityRecordService activityRecordService;
+
     /**
-     * 获取推荐商品列表
-     * @param page
-     * @return
-     */
+    * @description 获取推荐商品列表
+    * @param page shopId
+    * @return List<AppSimpleGoodsVo>
+    * @author jqs34
+    * @date 2023/6/4 16:27
+    */
     @Override
     public List<AppSimpleGoodsVo> pageRecommendGoods(Page page, Long shopId){
         List<AppSimpleGoodsVo> appSimpleGoodsVoList = goodsMapper.pageRecommendGoods(page,shopId);
         return appSimpleGoodsVoList;
+    }
+
+    /**
+     * @description  获取活动精选
+     * @author  jqs
+     * @date    2023/7/4 18:06
+     * @param shopId
+     * @return  List<AppSimpleGoodsVo>
+     */
+    @Override
+    public AppHomeActivityVo pageActivityGoods(Long shopId){
+        AppHomeActivityVo appHomeActivityVo = new AppHomeActivityVo();
+        Activity activity = activityService.getRecommendActivity(shopId);
+        List<AppSimpleGoodsVo> simpleGoodsVoList = new ArrayList<>();
+        if(activity!=null){
+            appHomeActivityVo.setEndTime(activity.getActivityEndTime());
+            appHomeActivityVo.setTimestamp(activity.getActivityEndTime().getTime());
+            simpleGoodsVoList = goodsMapper.pageActivityGoods(activity.getActivityId(),shopId);
+            appHomeActivityVo.setGoodsVoList(simpleGoodsVoList);
+        }
+        return appHomeActivityVo;
     }
 
     /**
@@ -93,20 +142,24 @@
      */
     @Override
     public List<AppSimpleActivityGoodsVo> pageSearchActivityGoods(Page page, AppSearchGoodsPageDto appSearchGoodsPageDto){
-        List<AppSimpleActivityGoodsVo> appSimpleGoodsVoList = goodsMapper.pageSearchActivityGoods(page,appSearchGoodsPageDto);
-        Integer activityNumber;
-        BigDecimal activityNumberBig;
-        Integer salesNumber;
-        BigDecimal salesNumberBig;
-        BigDecimal salesPercent;
-        for(AppSimpleActivityGoodsVo appSimpleActivityGoodsVo : appSimpleGoodsVoList){
-            activityNumber = appSimpleActivityGoodsVo.getActivityNumber();
-            salesNumber = appSimpleActivityGoodsVo.getSalesNumber();
-            activityNumberBig = BigDecimal.valueOf(activityNumber);
-            salesNumberBig = BigDecimal.valueOf(salesNumber);
-            salesPercent = salesNumberBig.divide(activityNumberBig,2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100.00"));
+        List<String> activityIdList = activityService.listActivityIdByShopId(appSearchGoodsPageDto.getShopId());
+        appSearchGoodsPageDto.setActivityIdList(activityIdList);
+        // 获取搜索结果的商品列表
+        List<AppSimpleActivityGoodsVo> appSimpleGoodsVoList = goodsMapper.pageSearchActivityGoods(page, appSearchGoodsPageDto);
+        // 计算销售百分比和设置时间戳
+        for (AppSimpleActivityGoodsVo appSimpleActivityGoodsVo : appSimpleGoodsVoList) {
+            int activityNumber = appSimpleActivityGoodsVo.getActivityNumber();
+            int salesNumber = appSimpleActivityGoodsVo.getSalesNumber();
+            BigDecimal salesPercent = BigDecimal.ZERO;
+            // 计算销售百分比
+            if (activityNumber != 0) {
+                salesPercent = BigDecimal.valueOf(salesNumber).multiply(BigDecimal.valueOf(100)).divide(BigDecimal.valueOf(activityNumber),2, BigDecimal.ROUND_HALF_UP);
+            }
+            // 设置销售百分比和时间戳
             appSimpleActivityGoodsVo.setSalesPercent(salesPercent);
+            appSimpleActivityGoodsVo.setTimestamp(appSimpleActivityGoodsVo.getEndTime().getTime());
         }
+        // 返回结果
         return appSimpleGoodsVoList;
     }
 
@@ -119,16 +172,22 @@
     public AppGoodsInfoVo getGoodsInfo(AppGoodsInfoGetDto appGoodsInfoGetDto){
         AppGoodsInfoVo appGoodsInfoVo = new AppGoodsInfoVo();
         Goods goods = this.getById(appGoodsInfoGetDto.getId());
+        if(goods.getGoodsStatus()==-1){
+            throw new ServiceException(AppErrorConstant.GOODS_DELETED);
+        }
         BeanUtils.copyProperties(goods, appGoodsInfoVo);
         //商户定制价格
         ShopGoods shopGoods = shopGoodsService.getByShopIdAndGoodsId(appGoodsInfoGetDto.getShopId(),goods.getGoodsId());
         if(shopGoods!=null){
             appGoodsInfoVo.setSalesPrice(shopGoods.getSalesPrice());
-            appGoodsInfoVo.setSalesNum(shopGoods.getServiceNum());
+            appGoodsInfoVo.setServiceNum(shopGoods.getServiceNum());
         }
+        GoodsTotal goodsTotal = goodsTotalService.getById(goods.getGoodsId());
+        appGoodsInfoVo.setSalesNum(goodsTotal.getBuyNumCount());
         //活动商品判断
         if(appGoodsInfoGetDto.getActivityFlag()==1){
-            ActivityGoods activityGoods = activityGoodsService.getByGoodsId(goods.getGoodsId());
+            ActivityGoods activityGoods = activityGoodsService.getByGoodsId(appGoodsInfoGetDto.getActivityId(),goods.getGoodsId());
+            Activity activity = activityService.getById(appGoodsInfoGetDto.getActivityId());
             //原价取较大值
             if(shopGoods!=null&&goods.getSalesPrice().compareTo(shopGoods.getSalesPrice())>0){
                 appGoodsInfoVo.setSalesPrice(goods.getSalesPrice());
@@ -136,29 +195,46 @@
             appGoodsInfoVo.setActivityFlag(1);
             appGoodsInfoVo.setActivityPrice(activityGoods.getActivityPrice());
             appGoodsInfoVo.setSalesNum(activityGoods.getSalesNumber());
-            appGoodsInfoVo.setActivityDeadline(activityGoods.getActivityDeadline());
+            appGoodsInfoVo.setActivityStartTime(activity.getActivityStartTime());
+            appGoodsInfoVo.setActivityDeadline(activity.getActivityEndTime());
+            appGoodsInfoVo.setTimestamp(activity.getActivityEndTime().getTime());
+            Integer availableBuyNum = 0;
             //售罄判断
             if(activityGoods.getActivityNumber().equals(activityGoods.getSalesNumber())){
                 appGoodsInfoVo.setSellOutFlag(1);
             }else{
+                availableBuyNum = activityGoods.getActivityNumber() - activityGoods.getSalesNumber();
                 appGoodsInfoVo.setSellOutFlag(0);
             }
+            appGoodsInfoVo.setActivityId(appGoodsInfoGetDto.getActivityId());
+            //限购判断
+            appGoodsInfoVo.setPurchaseLimitationFlag(activityGoods.getPurchaseLimitationFlag());
+            if(activityGoods.getPurchaseLimitationFlag()==1){
+                Integer buyNum = activityRecordService.getUserActivityGoodsNum(goods.getGoodsId(),activityGoods.getActivityId(),appGoodsInfoGetDto.getUserId());
+                Integer limitBuyNum = activityGoods.getLimitNumber() - buyNum;
+                if(limitBuyNum<availableBuyNum){
+                    availableBuyNum = limitBuyNum;
+                }
+            }
+            appGoodsInfoVo.setAvailableBuyNum(availableBuyNum);
         }else{
             appGoodsInfoVo.setActivityFlag(0);
         }
         //商品图片
         List<GoodsFile> goodsFileList = goodsFileService.listByGoodsId(goods.getGoodsId());
-        StringJoiner bannerSJ = new StringJoiner(",");
+        List<String> bannerList = new ArrayList<>();
         if(goodsFileList!=null&&!goodsFileList.isEmpty()){
             for(GoodsFile goodsFile : goodsFileList){
-                if(goodsFile.getFileType()==2){
+                if(goodsFile.getFileType()==1){
+                    appGoodsInfoVo.setGoodsPicture(goodsFile.getFileUrl());
+                }else if(goodsFile.getFileType()==2){
                     appGoodsInfoVo.setGoodsVideo(goodsFile.getFileUrl());
                 }else if(goodsFile.getFileType()==3){
-                    bannerSJ.add(goodsFile.getFileUrl());
+                    bannerList.add(goodsFile.getFileUrl());
                 }
             }
-            if(bannerSJ!=null&&bannerSJ.length()>0){
-                appGoodsInfoVo.setGoodsBanners(bannerSJ.toString());
+            if(!bannerList.isEmpty()){
+                appGoodsInfoVo.setGoodsBanners(String.join(",", bannerList));
             }
         }
         return appGoodsInfoVo;
@@ -176,6 +252,19 @@
 
     }
 
+    /**
+     * @description  获取确认次数周期商品
+     * @author  jqs
+     * @date    2023/7/31 16:49
+     * @param shopId
+     * @return  List<MerGoodsPageVo>
+     */
+    @Override
+    public List<MerGoodsPageVo> listMerCycleGoods (Long shopId){
+        List<MerGoodsPageVo> merGoodsPageVoList = goodsMapper.listMerCycleGoods(shopId);
+        return merGoodsPageVoList;
+
+    }
 
     /**
      * 修改商户商品
@@ -206,4 +295,381 @@
         }
         shopGoodsService.saveOrUpdate(shopGoods);
     }
+
+    /**
+     * 平台分页获取商品
+     * @param page
+     * @param mgtGoodsPageDto
+     * @return
+     */
+    @Override
+    public List<MgtGoodsPageVo> pageMgtGoods(Page page, MgtGoodsPageDto mgtGoodsPageDto) {
+        // 调用goodsMapper的方法获取MgtGoodsPageVo列表
+        List<MgtGoodsPageVo> mgtGoodsPageVoList = goodsMapper.pageMgtGoods(page, mgtGoodsPageDto);
+        // 如果列表不为空
+        if (mgtGoodsPageVoList != null && !mgtGoodsPageVoList.isEmpty()) {
+            // 获取所有商品分类的ID
+            List<Long> goodsClassIds = mgtGoodsPageVoList.stream()
+                    .map(MgtGoodsPageVo::getGoodsClass)
+                    .map(Long::valueOf)
+                    .collect(Collectors.toList());
+            // 通过远程服务获取商品分类
+            Map<Long, SysClassification> sysClassificationMap = remoteConfigService.getSysClassificationList(goodsClassIds).getData();
+            // 遍历所有商品
+            mgtGoodsPageVoList.forEach(mgtGoodsPageVo -> {
+                // 获取商品分类
+                SysClassification sysClassification = sysClassificationMap.get(Long.valueOf(mgtGoodsPageVo.getGoodsClass()));
+                // 如果商品分类不为空,则设置商品分类名称
+                if (sysClassification != null) {
+                    mgtGoodsPageVo.setGoodsClass(sysClassification.getClassName());
+                }
+            });
+        }
+        // 返回处理后的商品列表
+        return mgtGoodsPageVoList;
+    }
+
+    /**
+     *
+     * @return
+     */
+    @Override
+    public MgtGoodsTotalVo getMgtGoodsTotal(){
+        MgtGoodsTotalVo goodsTotalVo = goodsMapper.getMgtGoodsTotal();
+        LambdaQueryWrapper<Goods> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Goods::getDelFlag,0);
+        goodsTotalVo.setGoodsTotal(this.count(queryWrapper));
+        return goodsTotalVo;
+    }
+
+    /**
+    * @description: editMgtGoods
+    * @param: mgtGoodsEditDto
+    * @return: void
+    * @author jqs34
+    * @date: 2023/6/4 15:37
+    */
+    @Override
+    public void editMgtGoods(MgtGoodsEditDto mgtGoodsEditDto) {
+        Goods goods;
+        Boolean newGoods = false;
+        String goodsId = mgtGoodsEditDto.getGoodsId();
+        Goods goodsSame = this.getOne(new LambdaQueryWrapper<Goods>().eq(Goods::getDelFlag,0).eq(Goods::getGoodsName,mgtGoodsEditDto.getGoodsName()));
+        // 创建MgtClassNumDto对象
+        MgtClassNumDto mgtClassNumDto = new MgtClassNumDto();
+        if(mgtGoodsEditDto.getGoodsType()!=1){
+            mgtGoodsEditDto.setCycleNumFlag(1);
+        }else{
+            if(mgtGoodsEditDto.getCycleNumFlag()==null){
+                throw new ServiceException("周期商品需选择是否明确次数");
+            }
+        }
+        // 判断是否有商品ID 没有则新建
+        if (StringUtils.isNotBlank(goodsId)) {
+            if(goodsSame!=null&&!Objects.equals(goodsSame.getGoodsId(), goodsId)){
+                throw new ServiceException(AppErrorConstant.GOODS_DOUBLE);
+            }
+            goods = this.getById(goodsId);
+            if(goods.getGoodsStatus()==-1){
+                throw new ServiceException(AppErrorConstant.GOODS_DELETED);
+            }
+            //删除历史数据
+            goodsFileService.deleteByGoodsId(goodsId);
+            // 如果类别ID不为空并且文章的类别ID不为空并且类别ID不同,则设置子类别ID和新增类别ID
+            if (mgtGoodsEditDto.getGoodsClassId() != null && goods.getGoodsClassId() != null
+                    && !mgtGoodsEditDto.getGoodsClassId().equals(goods.getGoodsClassId())) {
+                mgtClassNumDto.setSubClassId(goods.getGoodsClassId());
+                mgtClassNumDto.setAddClassId(mgtGoodsEditDto.getGoodsClassId());
+            }
+            // 如果类别ID不为空并且文章的类别ID为空,则设置新增类别ID
+            else if (mgtGoodsEditDto.getGoodsClassId() != null && goods.getGoodsClassId() == null) {
+                mgtClassNumDto.setAddClassId(mgtGoodsEditDto.getGoodsClassId());
+            }
+        } else {
+            if(goodsSame!=null){
+                throw new ServiceException(AppErrorConstant.GOODS_DOUBLE);
+            }
+            goods = new Goods();
+            goodsId = IdUtils.simpleUUID();
+            goods.setGoodsId(goodsId);
+            goods.setDelFlag(0);
+            goods.setGoodsNo(CodeFactoryUtil.getGoodsNo());
+            goods.setCreateTime(new Date());
+            goods.setCreateUserId(mgtGoodsEditDto.getUserId());
+            newGoods = true;
+            mgtClassNumDto.setAddClassId(mgtGoodsEditDto.getGoodsClassId());
+        }
+        goods.setUpdateTime(new Date());
+        goods.setUpdateUserId(mgtGoodsEditDto.getUserId());
+        goods.setGoodsStatus(mgtGoodsEditDto.getGoodsStatus());
+        goods.setGoodsType(mgtGoodsEditDto.getGoodsType());
+        goods.setGoodsClassId(mgtGoodsEditDto.getGoodsClassId());
+        goods.setGoodsName(mgtGoodsEditDto.getGoodsName());
+        goods.setCycleNumFlag(mgtGoodsEditDto.getCycleNumFlag());
+        goods.setServiceNum(mgtGoodsEditDto.getServiceNum());
+        goods.setGoodsIntroduction(mgtGoodsEditDto.getGoodsIntroduction());
+        goods.setSalesPrice(mgtGoodsEditDto.getSalesPrice());
+        goods.setMininumPrice(mgtGoodsEditDto.getMininumPrice());
+        if (mgtGoodsEditDto.getSubscription() != null && mgtGoodsEditDto.getSubscription().compareTo(BigDecimal.valueOf(0)) > 0) {
+            goods.setSubscriptionFlag(1);
+        } else {
+            goods.setSubscriptionFlag(0);
+        }
+        goods.setSubscription(mgtGoodsEditDto.getSubscription());
+        String goodsDetail = mgtGoodsEditDto.getGoodsDetail();
+        if(StringUtils.isNotBlank(goodsDetail)){
+            byte[] decodedBytes = Base64.getDecoder().decode(goodsDetail);
+            goodsDetail = new String(decodedBytes, StandardCharsets.UTF_8);
+            goods.setGoodsDetail(goodsDetail);
+        }
+        goods.setRecommendFlag(0);
+        goods.setGoodsNurses(mgtGoodsEditDto.getGoodsNurses());
+        goods.setGoodsTags(mgtGoodsEditDto.getGoodsTags());
+        this.saveOrUpdate(goods);
+        //商品图片视频处理
+        final String goodsIdFinal = goodsId;
+        saveGoodsFiles(goodsIdFinal, mgtGoodsEditDto.getGoodsPicture(), 1);
+        saveGoodsFiles(goodsIdFinal, mgtGoodsEditDto.getGoodsVideo(), 2);
+        saveGoodsFiles(goodsIdFinal, mgtGoodsEditDto.getGoodsBanners(), 3);
+        //如果是新建商品创建商品统计
+        if (newGoods) {
+            GoodsTotal goodsTotal = new GoodsTotal();
+            goodsTotal.setGoodsId(goodsId);
+            goodsTotal.setBuyCount(0);
+            goodsTotal.setBuyNumCount(0);
+            goodsTotal.setBuyUserCount(0);
+            goodsTotal.setBuyMoneyTotal(new BigDecimal("0.00"));
+            goodsTotalService.saveOrUpdate(goodsTotal);
+        }
+        //更新商品分类统计
+        remoteConfigService.changeClassNum(mgtClassNumDto);
+    }
+
+    /**
+    * @description: 处理商品文件
+    * @param: goodsId fileUrls fileType
+    * @return: void
+    * @author jqs34
+    * @date: 2023/6/4 16:25
+    */
+     private void saveGoodsFiles(String goodsId, String fileUrls, int fileType) {
+         if (StringUtils.isNotEmpty(fileUrls)) {
+             List<GoodsFile> files = Arrays.stream(fileUrls.split(","))
+                     .map(str -> {
+                         GoodsFile goodsFile = new GoodsFile();
+                         goodsFile.setDelFlag(0);
+                         goodsFile.setGoodsId(goodsId);
+                         goodsFile.setFileType(fileType);
+                         goodsFile.setFileUrl(str);
+                         return goodsFile;
+                     })
+                     .collect(Collectors.toList());
+             // 保存文件列表
+             goodsFileService.saveBatch(files);
+         }
+     }
+
+    /**
+     * @description: 上下架
+     * @author jqs
+     * @date   2023/6/5 17:21
+     * @version 1.0
+     */
+    @Override
+    public void upDownMgtGoods(MgtGoodsUpDownDto mgtGoodsUpDownDto){
+        Goods goods = this.getById(mgtGoodsUpDownDto.getGoodsId());
+        if(goods.getGoodsStatus()==-1){
+            throw new ServiceException(AppErrorConstant.GOODS_DELETED);
+        }
+        goods.setGoodsStatus(mgtGoodsUpDownDto.getGoodsStatus());
+        goods.setUpdateTime(new Date());
+        goods.setUpdateUserId(mgtGoodsUpDownDto.getUserId());
+        this.saveOrUpdate(goods);
+    }
+
+    /**
+     * @description  推荐商品
+     * @author  jqs
+     * @date    2023/6/5 17:32
+     * @param mgtGoodsRecommendDto
+     * @return  void
+     */
+    @Override
+    public void recommendMgtGoods(MgtGoodsRecommendDto mgtGoodsRecommendDto){
+        Goods goods = this.getById(mgtGoodsRecommendDto.getGoodsId());
+        if(goods.getGoodsStatus()==-1){
+            throw new ServiceException(AppErrorConstant.GOODS_DELETED);
+        }
+        goods.setRecommendFlag(mgtGoodsRecommendDto.getRecommendFlag());
+        goods.setUpdateTime(new Date());
+        goods.setUpdateUserId(mgtGoodsRecommendDto.getUserId());
+        this.saveOrUpdate(goods);
+    }
+
+    /**
+     * @description  删除商品
+     * @author  jqs
+     * @date    2023/6/5 17:36
+     * @param goodsId
+     * @return  void
+     */
+    @Override
+    public void deleteMgtGoods(String goodsId,Long userId){
+        Goods goods = this.getById(goodsId);
+        goods.setDelFlag(1);
+        goods.setGoodsStatus(-1);
+        goods.setUpdateTime(new Date());
+        goods.setUpdateUserId(userId);
+        this.saveOrUpdate(goods);
+        if(goods.getGoodsClassId()!=null){
+            MgtClassNumDto mgtClassNumDto = new MgtClassNumDto();
+            mgtClassNumDto.setSubClassId(goods.getGoodsClassId());
+            //更新商品分类统计
+            remoteConfigService.changeClassNum(mgtClassNumDto);
+        }
+    }
+
+    /**
+     * @description  删除商品分类
+     * @author  jqs
+     * @date    2023/6/8 10:31
+     * @param classId
+     * @return  void
+     */
+    @Override
+    public void deleteGoodsClass(Long classId){
+        goodsMapper.deleteGoodsClass(classId);
+    }
+
+    /**
+     * @description  删除商品标签
+     * @author  jqs
+     * @date    2023/6/8 17:02
+     * @param goodsTag
+     * @return  void
+     */
+    @Override
+    public void deleteGoodsTag(String goodsTag){
+        goodsMapper.deleteGoodsTag(goodsTag);
+    }
+
+    /**
+     * @description  通过id获取商品列表
+     * @author  jqs
+     * @date    2023/6/13 15:55
+     * @param goodsIds
+     * @return  List<Goods>
+     */
+    @Override
+    public List<Goods> listGoodsByGoodsId(String goodsIds){
+        return goodsMapper.listGoodsByGoodsId(goodsIds);
+    }
+
+    /**
+     * @description  分页获取商品选择列表
+     * @author  jqs
+     * @date    2023/6/13 16:33
+     * @param page
+     * @param mgtSelectGoodsPageDto
+     * @return  List<MgtSelectGoodsPageVo>
+     */
+    @Override
+    public List<MgtSelectGoodsPageVo> pageMgtSelectGoods(Page page, MgtSelectGoodsPageDto mgtSelectGoodsPageDto){
+        return goodsMapper.pageMgtSelectGoods(page, mgtSelectGoodsPageDto);
+    }
+
+    /**
+     * @description  通过id获取商品列表
+     * @author  jqs
+     * @date    2023/7/3 9:58
+     * @param merGoodsPriceListDto
+     * @return  List<MerGoodsPriceListVo>
+     */
+    @Override
+    public List<MerGoodsPriceListVo> listGoodsPriceByGoodsId(MerGoodsPriceListDto merGoodsPriceListDto){
+        return goodsMapper.listGoodsPriceByGoodsId(merGoodsPriceListDto.getShopId(),merGoodsPriceListDto.getGoodsIds());
+    }
+
+
+    /**
+     * @description  分页获取活动商品
+     * @author  jqs
+     * @date    2023/7/6 9:40
+     * @param page
+     * @param appActivityGoodsPageDto
+     * @return  List<AppSimpleActivityGoodsVo>
+     */
+    @Override
+    public List<AppSimpleActivityGoodsVo> pageAppActivityGoods(Page page, AppActivityGoodsPageDto appActivityGoodsPageDto){
+        // 获取搜索结果的商品列表
+        List<AppSimpleActivityGoodsVo> appSimpleGoodsVoList = goodsMapper.pageAppActivityGoods(page, appActivityGoodsPageDto);
+        // 计算销售百分比和设置时间戳
+        for (AppSimpleActivityGoodsVo appSimpleActivityGoodsVo : appSimpleGoodsVoList) {
+            int activityNumber = appSimpleActivityGoodsVo.getActivityNumber();
+            int salesNumber = appSimpleActivityGoodsVo.getSalesNumber();
+            BigDecimal salesPercent = BigDecimal.ZERO;
+            // 计算销售百分比
+            if (activityNumber != 0) {
+                salesPercent = BigDecimal.valueOf(salesNumber).multiply(BigDecimal.valueOf(100)).divide(BigDecimal.valueOf(activityNumber),2, BigDecimal.ROUND_HALF_UP);
+            }
+            // 设置销售百分比和时间戳
+            appSimpleActivityGoodsVo.setSalesPercent(salesPercent);
+            appSimpleActivityGoodsVo.setTimestamp(appSimpleActivityGoodsVo.getEndTime().getTime());
+            //限购判断
+            if(appSimpleActivityGoodsVo.getPurchaseLimitationFlag()==1){
+                Integer buyNum = activityRecordService.getUserActivityGoodsNum(appSimpleActivityGoodsVo.getGoodsId(),appActivityGoodsPageDto.getActivityId(),appActivityGoodsPageDto.getUserId());
+                Integer limitBuyNum = appSimpleActivityGoodsVo.getLimitNumber() - buyNum;
+                appSimpleActivityGoodsVo.setAvailableBuyNum(limitBuyNum);
+            }
+        }
+        // 返回结果
+        return appSimpleGoodsVoList;
+    }
+
+    /**
+     * @description  获取商品编辑详情
+     * @author  jqs
+     * @date    2023/7/11 16:48
+     * @param mgtBaseGetDto
+     * @return  MgtGoodsEditInfoVo
+     */
+    @Override
+    public MgtGoodsEditInfoVo getMgtGoodsEditInfo(MgtBaseGetDto mgtBaseGetDto){
+        MgtGoodsEditInfoVo mgtGoodsEditInfoVo = new MgtGoodsEditInfoVo();
+        Goods goods = this.getById(mgtBaseGetDto.getId());
+        BeanUtils.copyProperties(goods,mgtGoodsEditInfoVo);
+        if(goods.getSubscriptionFlag()==0){
+            mgtGoodsEditInfoVo.setSubscription(null);
+        }
+        List<GoodsFile> goodsFileList = goodsFileService.listByGoodsId(goods.getGoodsId());
+        if(goodsFileList!=null&&!goodsFileList.isEmpty()){
+            StringJoiner goodsBannersSj = new StringJoiner(",");
+            for(GoodsFile goodsFile : goodsFileList){
+                if(goodsFile.getFileType()==1){
+                    mgtGoodsEditInfoVo.setGoodsPicture(goodsFile.getFileUrl());
+                }else if(goodsFile.getFileType()==2){
+                    mgtGoodsEditInfoVo.setGoodsVideo(goodsFile.getFileUrl());
+                }else if(goodsFile.getFileType()==3){
+                    goodsBannersSj.add(goodsFile.getFileUrl());
+                }
+            }
+            if(goodsBannersSj!=null){
+                mgtGoodsEditInfoVo.setGoodsBanners(goodsBannersSj.toString());
+            }
+        }
+        return mgtGoodsEditInfoVo;
+    }
+
+    /**
+     * @description  获取商品分类名
+     * @author  jqs
+     * @date    2023/8/12 18:33
+     * @param classId
+     * @return  List<String>
+     */
+    @Override
+    public List<String> listGoodsNameByGoodsClass(Long classId){
+        List<String> goodsNameList = goodsMapper.listGoodsNameByGoodsClass(classId);
+        return goodsNameList;
+    }
 }

--
Gitblit v1.7.1