jiangqs
2023-07-06 1f9b64476716a6a1de3bcb886bf4e64b123f7523
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java
@@ -14,12 +14,14 @@
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.poji.activity.ActivityGoods;
import com.ruoyi.system.api.domain.poji.config.SysClassification;
import com.ruoyi.system.api.domain.poji.goods.Goods;
@@ -66,6 +68,9 @@
    @Resource
    private ActivityService activityService;
    @Resource
    private ActivityRecordService activityRecordService;
    /**
    * @description 获取推荐商品列表
@@ -175,7 +180,7 @@
        }
        //活动商品判断
        if(appGoodsInfoGetDto.getActivityFlag()==1){
            ActivityGoods activityGoods = activityGoodsService.getByGoodsId(goods.getGoodsId());
            ActivityGoods activityGoods = activityGoodsService.getByGoodsId(appGoodsInfoGetDto.getActivityId(),goods.getGoodsId());
            //原价取较大值
            if(shopGoods!=null&&goods.getSalesPrice().compareTo(shopGoods.getSalesPrice())>0){
                appGoodsInfoVo.setSalesPrice(goods.getSalesPrice());
@@ -184,12 +189,26 @@
            appGoodsInfoVo.setActivityPrice(activityGoods.getActivityPrice());
            appGoodsInfoVo.setSalesNum(activityGoods.getSalesNumber());
            appGoodsInfoVo.setActivityDeadline(activityGoods.getActivityDeadline());
            appGoodsInfoVo.setTimestamp(activityGoods.getActivityDeadline().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);
        }
@@ -293,7 +312,11 @@
     */
    @Override
    public MgtGoodsTotalVo getMgtGoodsTotal(){
        return goodsMapper.getMgtGoodsTotal();
        MgtGoodsTotalVo goodsTotalVo = goodsMapper.getMgtGoodsTotal();
        LambdaQueryWrapper<Goods> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Goods::getDelFlag,0);
        goodsTotalVo.setGoodsTotal(this.count(queryWrapper));
        return goodsTotalVo;
    }
    /**
@@ -508,4 +531,34 @@
    public List<MerGoodsPriceListVo> listGoodsPriceByGoodsId(String goodsIds){
        return goodsMapper.listGoodsPriceByGoodsId(goodsIds);
    }
    /**
     * @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());
        }
        // 返回结果
        return appSimpleGoodsVoList;
    }
}