| package cc.mrbird.febs.mall.service.impl; | 
|   | 
| import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; | 
| import cc.mrbird.febs.common.exception.FebsException; | 
| import cc.mrbird.febs.common.utils.AppContants; | 
| import cc.mrbird.febs.mall.conversion.MallGoodsConversion; | 
| import cc.mrbird.febs.mall.conversion.MallMemberConversion; | 
| import cc.mrbird.febs.mall.dto.ApiMallGoodsCommentDto; | 
| import cc.mrbird.febs.mall.dto.MallGoodsQueryDto; | 
| import cc.mrbird.febs.mall.entity.DataDictionaryCustom; | 
| import cc.mrbird.febs.mall.entity.MallGoods; | 
| import cc.mrbird.febs.mall.entity.MallGoodsComment; | 
| import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper; | 
| import cc.mrbird.febs.mall.mapper.MallGoodsCommentMapper; | 
| import cc.mrbird.febs.mall.mapper.MallGoodsImagesMapper; | 
| import cc.mrbird.febs.mall.mapper.MallGoodsMapper; | 
| import cc.mrbird.febs.mall.service.IApiMallGoodsService; | 
| import cc.mrbird.febs.mall.vo.*; | 
| import cn.hutool.core.collection.CollUtil; | 
| import cn.hutool.core.util.ObjectUtil; | 
| import cn.hutool.json.JSONUtil; | 
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
| import com.baomidou.mybatisplus.core.metadata.IPage; | 
| import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 
| import lombok.RequiredArgsConstructor; | 
| import lombok.extern.slf4j.Slf4j; | 
| import org.checkerframework.checker.units.qual.A; | 
| import org.springframework.stereotype.Service; | 
|   | 
| import java.math.BigDecimal; | 
| import java.util.ArrayList; | 
| import java.util.List; | 
| import java.util.Map; | 
|   | 
| /** | 
|  * @author wzy | 
|  * @date 2021-09-17 | 
|  **/ | 
| @Slf4j | 
| @Service | 
| @RequiredArgsConstructor | 
| public class ApiMallGoodsServiceImpl extends ServiceImpl<MallGoodsMapper, MallGoods> implements IApiMallGoodsService { | 
|   | 
|     private final MallGoodsImagesMapper goodsImagesMapper; | 
|     private final MallGoodsCommentMapper mallGoodsCommentMapper; | 
|     private final DataDictionaryCustomMapper dataDictionaryCustomMapper; | 
|   | 
|   | 
|     @Override | 
|     public IPage<MallGoodsListVo> findMallGoodsListInPage(MallGoodsQueryDto queryDto) { | 
|         Page<MallGoodsListVo> page = new Page<>(queryDto.getPageNow(), queryDto.getPageSize()); | 
|         return this.baseMapper.selectMallGoodsListQueryInPage(queryDto, page); | 
|     } | 
|   | 
|     @Override | 
|     public List<MallGoodsListVo> findMallGoodsListNoPage(MallGoodsQueryDto queryDto) { | 
|         return this.baseMapper.selectMallGoodsListQueryNoPage(queryDto); | 
|     } | 
|   | 
|     @Override | 
|     public MallGoodsDetailsVo findMallGoodsDetailsById(Long id) { | 
|         MallGoods mallGoods = this.baseMapper.selectGoodsDetailById(id); | 
|         if (mallGoods == null) { | 
|             throw new FebsException("商品不存在"); | 
|         } | 
|         List<String> images = goodsImagesMapper.selectGoodsImagesByGoodsId(mallGoods.getId()); | 
|         MallGoodsDetailsVo mallGoodsDetailsVo = MallGoodsConversion.INSTANCE.entityToDetailsVo(mallGoods); | 
|   | 
|         if (CollUtil.isNotEmpty(mallGoods.getStyles())) { | 
|             Map<String, BigDecimal> stockAndVolume = this.baseMapper.selectGoodsStockAndVolume(id); | 
|             mallGoodsDetailsVo.setStock(stockAndVolume.get("stock").intValue()); | 
|             mallGoodsDetailsVo.setVolume(stockAndVolume.get("volume").intValue()); | 
|         } | 
|         mallGoodsDetailsVo.setImages(images); | 
|   | 
|         QueryWrapper<MallGoodsComment> objectQueryWrapper = new QueryWrapper<>(); | 
|         objectQueryWrapper.eq("goods_id",id); | 
|         Integer commentCount = mallGoodsCommentMapper.selectCount(objectQueryWrapper); | 
|         mallGoodsDetailsVo.setCommentCount(commentCount); | 
|         return mallGoodsDetailsVo; | 
|     } | 
|   | 
|     @Override | 
|     public IPage<MallGoodsCommentVo> findMallGoodsCommentByGoodsId(ApiMallGoodsCommentDto queryDto) { | 
|         Page<MallGoodsCommentVo> page = new Page<>(queryDto.getPageNow(), queryDto.getPageSize()); | 
|         MallGoodsComment mallGoodsComment = new MallGoodsComment(); | 
|         mallGoodsComment.setGoodsId(queryDto.getGoodsId()); | 
|         mallGoodsComment.setCommentType(queryDto.getCommentType()); | 
|         return this.baseMapper.selectMallGoodsCommentListQueryInPage(page,mallGoodsComment); | 
|     } | 
|   | 
|     @Override | 
|     public ApiMallGoodsDeliveryVo findDeliverySetting() { | 
|         ApiMallGoodsDeliveryVo apiMallGoodsDeliveryVo = new ApiMallGoodsDeliveryVo(); | 
|         DataDictionaryCustom deliverySetting = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.HOME_DELIVERY_AMOUNT.getType(), DataDictionaryEnum.HOME_DELIVERY_AMOUNT.getCode()); | 
|         if(ObjectUtil.isNotNull(deliverySetting)){ | 
|             apiMallGoodsDeliveryVo.setHomeDeliveryServiceAmount(Double.parseDouble(deliverySetting.getValue())); | 
|         } | 
|         List<DataDictionaryCustom> homeDeliverySettings = dataDictionaryCustomMapper.selectDicByType(DataDictionaryEnum.FRIST_COST_LEVEL.getType()); | 
|         if(CollUtil.isNotEmpty(homeDeliverySettings)){ | 
|             List<ApiMallGoodsDeliverySettingVo> apiMallGoodsDeliverySettingVos = new ArrayList<>(); | 
|             for(DataDictionaryCustom dic : homeDeliverySettings){ | 
|                 String apiMallGoodsDeliverySettingVoJson = dic.getValue(); | 
|                 ApiMallGoodsDeliverySettingVo apiMallGoodsDeliverySettingVo = JSONUtil.toBean(apiMallGoodsDeliverySettingVoJson, ApiMallGoodsDeliverySettingVo.class); | 
|                 apiMallGoodsDeliverySettingVos.add(apiMallGoodsDeliverySettingVo); | 
|             } | 
|             apiMallGoodsDeliveryVo.setApiMallGoodsDeliverySettingVos(apiMallGoodsDeliverySettingVos); | 
|         } | 
|         return apiMallGoodsDeliveryVo; | 
|     } | 
|   | 
|     @Override | 
|     public MallGoodsCommentVo findMallGoodsCommentLevelByGoodsId(Long id) { | 
|         return this.baseMapper.findMallGoodsCommentLevelByGoodsId(id); | 
|     } | 
| } |