From d7b3c61e01aadf99ce6a1d8ebf18c4e6dd81cc2b Mon Sep 17 00:00:00 2001 From: luodangjia <luodangjia> Date: 星期四, 12 十二月 2024 18:05:34 +0800 Subject: [PATCH] 12.12 --- ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java | 134 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 134 insertions(+), 0 deletions(-) diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java new file mode 100644 index 0000000..7176262 --- /dev/null +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java @@ -0,0 +1,134 @@ +package com.ruoyi.other.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.account.api.feignClient.AppUserClient; +import com.ruoyi.account.api.model.AppUser; +import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.common.core.utils.bean.BeanUtils; +import com.ruoyi.common.security.service.TokenService; +import com.ruoyi.other.api.domain.*; +import com.ruoyi.other.enums.GoodsStatus; +import com.ruoyi.other.mapper.GoodsAreaMapper; +import com.ruoyi.other.mapper.GoodsMapper; +import com.ruoyi.other.mapper.GoodsShopMapper; +import com.ruoyi.other.mapper.ShopMapper; +import com.ruoyi.other.service.GoodsService; +import com.ruoyi.other.service.GoodsVipService; +import com.ruoyi.other.service.VipSettingService; +import com.ruoyi.other.vo.GoodsVO; +import com.ruoyi.system.api.model.LoginUser; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * <p> + * 服务实现类 + * </p> + * + * @author luodangjia + * @since 2024-11-20 + */ +@Service +public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements GoodsService { + @Resource + private GoodsMapper goodsMapper; + @Resource + private TokenService tokenService; + @Resource + private VipSettingService vipSettingService; + @Resource + private GoodsAreaMapper goodsAreaMapper; + @Resource + private GoodsVipService goodsVipService; + @Resource + private AppUserClient appUserClient; + @Resource + private GoodsShopMapper goodsShopMapper; + @Resource + private ShopMapper shopMapper; + + @Override + public List<GoodsVO> goodsList(Goods search) { + List<Goods> goodsList = this.list(new LambdaQueryWrapper<Goods>() + .eq(Goods::getStatus, GoodsStatus.UP.getCode()) + .eq(Objects.nonNull(search.getGoodsCategoryId()), Goods::getGoodsCategoryId, search.getGoodsCategoryId()) + .like(StringUtils.isNotEmpty(search.getName()), Goods::getName, search.getName())); + + List<GoodsVO> result = new ArrayList<>(); + for (Goods goods : goodsList) { + GoodsVO goodsVO = new GoodsVO(); + BeanUtils.copyBeanProp(goodsVO, goods); + goodsVO.setGoodsId(goods.getId()); + goodsVO.setGoodsName(goods.getName()); + result.add(goodsVO); + } + return result; + } + + @Override + public GoodsVO goodsDetail(Long goodsId) { + if (goodsId == null || goodsId <= 0) { + throw new NullPointerException("商品ID不能为空"); + } + + LoginUser loginUserApplet = tokenService.getLoginUserApplet(); + AppUser appUser = appUserClient.getAppUserById(loginUserApplet.getUserid()); + BigDecimal sellingPrice; + Integer integral; + + GoodsArea goodsArea = goodsAreaMapper.selectOne(new LambdaQueryWrapper<GoodsArea>() + .eq(GoodsArea::getGoodsId, goodsId) + .eq(GoodsArea::getProvinceCode, appUser.getProvinceCode()) + .eq(StringUtils.isNotEmpty(appUser.getCityCode()), GoodsArea::getCityCode, appUser.getCityCode()) + .eq(StringUtils.isNotEmpty(appUser.getDistrictCode()), GoodsArea::getDistrictsCode, appUser.getDistrictCode())); + + if (Objects.nonNull(goodsArea)){ + sellingPrice = goodsArea.getSellingPrice(); + integral = goodsArea.getIntegral(); + }else { + VipSetting vipSetting = vipSettingService.getVipSettingByUserId(loginUserApplet.getUserid()); + GoodsVip goodsVip = goodsVipService.getOne(new LambdaQueryWrapper<GoodsVip>() + .eq(GoodsVip::getVip, vipSetting.getId()) + .eq(GoodsVip::getGoodsId, goodsId)); + + sellingPrice = goodsVip.getSellingPrice(); + integral = goodsVip.getIntegral(); + } + + Goods goods = this.getById(goodsId); + GoodsVO goodsVO = new GoodsVO(); + BeanUtils.copyBeanProp(goodsVO, goods); + goodsVO.setGoodsId(goods.getId()); + goodsVO.setGoodsName(goods.getName()); + goodsVO.setSellingPrice(sellingPrice); + goodsVO.setIntegral(integral); + + List<GoodsShop> goodsShopList = goodsShopMapper.selectList(new LambdaQueryWrapper<GoodsShop>() + .eq(GoodsShop::getGoodsId, goodsId)); + if (!CollectionUtils.isEmpty(goodsShopList)){ + List<Integer> shopIds = goodsShopList.stream().map(GoodsShop::getShopId).collect(Collectors.toList()); + List<Shop> shopList = shopMapper.selectList(new LambdaQueryWrapper<Shop>() + .in(Shop::getId, shopIds)); + + goodsVO.setShopList(shopList); + } + return goodsVO; + } + + + @Override + public List<Goods> getGoodsListByShopId(Integer shopId) { + LoginUser loginUserApplet = tokenService.getLoginUserApplet(); + VipSetting vipSetting = vipSettingService.getVipSettingByUserId(loginUserApplet.getUserid()); + return goodsMapper.selectListByShopId(shopId, vipSetting.getId()); + } + +} -- Gitblit v1.7.1