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 implements IApiMallGoodsService { private final MallGoodsImagesMapper goodsImagesMapper; private final MallGoodsCommentMapper mallGoodsCommentMapper; private final DataDictionaryCustomMapper dataDictionaryCustomMapper; @Override public IPage findMallGoodsListInPage(MallGoodsQueryDto queryDto) { Page page = new Page<>(queryDto.getPageNow(), queryDto.getPageSize()); return this.baseMapper.selectMallGoodsListQueryInPage(queryDto, page); } @Override public MallGoodsDetailsVo findMallGoodsDetailsById(Long id) { MallGoods mallGoods = this.baseMapper.selectGoodsDetailById(id); if (mallGoods == null) { throw new FebsException("商品不存在"); } List images = goodsImagesMapper.selectGoodsImagesByGoodsId(mallGoods.getId()); MallGoodsDetailsVo mallGoodsDetailsVo = MallGoodsConversion.INSTANCE.entityToDetailsVo(mallGoods); if (CollUtil.isNotEmpty(mallGoods.getStyles())) { Map stockAndVolume = this.baseMapper.selectGoodsStockAndVolume(id); mallGoodsDetailsVo.setStock(stockAndVolume.get("stock").intValue()); mallGoodsDetailsVo.setVolume(stockAndVolume.get("volume").intValue()); } mallGoodsDetailsVo.setImages(images); QueryWrapper objectQueryWrapper = new QueryWrapper<>(); objectQueryWrapper.eq("goods_id",id); Integer commentCount = mallGoodsCommentMapper.selectCount(objectQueryWrapper); mallGoodsDetailsVo.setCommentCount(commentCount); return mallGoodsDetailsVo; } @Override public IPage findMallGoodsCommentByGoodsId(ApiMallGoodsCommentDto queryDto) { Page 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 homeDeliverySettings = dataDictionaryCustomMapper.selectDicByType(DataDictionaryEnum.FRIST_COST_LEVEL.getType()); if(CollUtil.isNotEmpty(homeDeliverySettings)){ List 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; } }