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