|  |  |  | 
|---|
|  |  |  | 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.MallGoods; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.entity.MallGoodsComment; | 
|---|
|  |  |  | 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.entity.*; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.mapper.*; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.service.IApiMallGoodsService; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.vo.MallGoodsCommentVo; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.vo.MallGoodsDetailsVo; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.vo.MallGoodsListVo; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.vo.*; | 
|---|
|  |  |  | import cn.hutool.core.collection.CollUtil; | 
|---|
|  |  |  | import cn.hutool.core.util.ObjectUtil; | 
|---|
|  |  |  | import cn.hutool.core.util.StrUtil; | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private final MallGoodsImagesMapper goodsImagesMapper; | 
|---|
|  |  |  | private final MallGoodsCommentMapper mallGoodsCommentMapper; | 
|---|
|  |  |  | private final DataDictionaryCustomMapper dataDictionaryCustomMapper; | 
|---|
|  |  |  | private final MallCarriageRuleMapper mallCarriageRuleMapper; | 
|---|
|  |  |  | private final MallCarriageRuleInfoMapper mallCarriageRuleInfoMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @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 ApiMallCarriageRuleVo findMallCarriageRuleById(Long id) { | 
|---|
|  |  |  | ApiMallCarriageRuleVo apiMallCarriageRuleVo = new ApiMallCarriageRuleVo(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | MallCarriageRule mallCarriageRule = mallCarriageRuleMapper.selectById(id); | 
|---|
|  |  |  | if(ObjectUtil.isEmpty(mallCarriageRule)){ | 
|---|
|  |  |  | throw new FebsException("商品不存在"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | apiMallCarriageRuleVo.setName(mallCarriageRule.getName()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<MallCarriageRuleInfo> mallCarriageRuleInfos = mallCarriageRuleInfoMapper.selectMallCarriageRuleInfoByRuleIdAndAreaAddress(id, null); | 
|---|
|  |  |  | if(CollUtil.isNotEmpty(mallCarriageRuleInfos)){ | 
|---|
|  |  |  | List<ApiMallCarriageRuleInfoVo> apiMallCarriageRuleInfoVos = new ArrayList<>(); | 
|---|
|  |  |  | for(MallCarriageRuleInfo mallCarriageRuleInfo : mallCarriageRuleInfos){ | 
|---|
|  |  |  | ApiMallCarriageRuleInfoVo apiMallCarriageRuleInfoVo = new ApiMallCarriageRuleInfoVo(); | 
|---|
|  |  |  | apiMallCarriageRuleInfoVo.setAreaAddress(mallCarriageRuleInfo.getAreaAddress()); | 
|---|
|  |  |  | apiMallCarriageRuleInfoVo.setBasicPrice(mallCarriageRuleInfo.getBasicPrice()); | 
|---|
|  |  |  | apiMallCarriageRuleInfoVo.setBasicCnt(mallCarriageRuleInfo.getBasicCnt()); | 
|---|
|  |  |  | apiMallCarriageRuleInfoVo.setMoreCnt(mallCarriageRuleInfo.getMoreCnt()); | 
|---|
|  |  |  | apiMallCarriageRuleInfoVo.setMorePrice(mallCarriageRuleInfo.getMorePrice()); | 
|---|
|  |  |  | apiMallCarriageRuleInfoVos.add(apiMallCarriageRuleInfoVo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | apiMallCarriageRuleVo.setApiMallCarriageRuleInfoVos(apiMallCarriageRuleInfoVos); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return apiMallCarriageRuleVo; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<String> images = goodsImagesMapper.selectGoodsImagesByGoodsId(mallGoods.getId()); | 
|---|
|  |  |  | MallGoodsDetailsVo mallGoodsDetailsVo = MallGoodsConversion.INSTANCE.entityToDetailsVo(mallGoods); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<GoodsDetailsStyleVo> styles = mallGoodsDetailsVo.getStyles(); | 
|---|
|  |  |  | if(ObjectUtil.isNotEmpty(styles)){ | 
|---|
|  |  |  | for(GoodsDetailsStyleVo goodsDetailsStyleVo : styles){ | 
|---|
|  |  |  | List<GoodsDetailsSkuVo> skus = goodsDetailsStyleVo.getSkus(); | 
|---|
|  |  |  | if(CollUtil.isNotEmpty(skus) ){ | 
|---|
|  |  |  | for(GoodsDetailsSkuVo goodsDetailsSkuVo : skus){ | 
|---|
|  |  |  | if(StrUtil.isNotEmpty(goodsDetailsSkuVo.getSample())){ | 
|---|
|  |  |  | goodsDetailsSkuVo.setSampleFlag(true); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | goodsDetailsSkuVo.setSampleFlag(false); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (CollUtil.isNotEmpty(mallGoods.getStyles())) { | 
|---|
|  |  |  | Map<String, BigDecimal> stockAndVolume = this.baseMapper.selectGoodsStockAndVolume(id); | 
|---|
|  |  |  | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|