package com.ruoyi.other.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
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.ServletUtils;
|
import com.ruoyi.common.core.utils.StringUtils;
|
import com.ruoyi.common.security.service.TokenService;
|
import com.ruoyi.common.security.utils.SecurityUtils;
|
import com.ruoyi.order.feignClient.OrderClient;
|
import com.ruoyi.other.api.domain.*;
|
import com.ruoyi.other.mapper.GoodsShopMapper;
|
import com.ruoyi.other.mapper.SeckillActivityInfoMapper;
|
import com.ruoyi.other.mapper.ShopMapper;
|
import com.ruoyi.other.service.GoodsSeckillService;
|
import com.ruoyi.other.service.GoodsService;
|
import com.ruoyi.other.service.SeckillActivityInfoService;
|
import com.ruoyi.other.vo.SeckillActivityDetailVO;
|
import com.ruoyi.other.vo.SeckillActivityVO;
|
import com.ruoyi.system.api.model.LoginUser;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.annotation.Resource;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 服务实现类
|
* </p>
|
*
|
* @author luodangjia
|
* @since 2024-11-20
|
*/
|
@Service
|
public class SeckillActivityInfoServiceImpl extends ServiceImpl<SeckillActivityInfoMapper, SeckillActivityInfo> implements SeckillActivityInfoService {
|
@Resource
|
private SeckillActivityInfoMapper seckillActivityInfoMapper;
|
@Resource
|
private GoodsShopMapper goodsShopMapper;
|
@Resource
|
private ShopMapper shopMapper;
|
@Resource
|
private TokenService tokenService;
|
@Resource
|
private AppUserClient appUserClient;
|
@Resource
|
private GoodsSeckillService goodsSeckillService;
|
@Resource
|
private GoodsService goodsService;
|
@Resource
|
private OrderClient orderClient;
|
|
@Override
|
public List<SeckillActivityVO> listSeckillActivity(Goods goods) {
|
LoginUser loginUserApplet = tokenService.getLoginUserApplet();
|
AppUser appUser = appUserClient.getAppUserById(loginUserApplet.getUserid());
|
goods.setVipId(appUser.getVipId());
|
List<SeckillActivityVO> seckillActivityVOS = seckillActivityInfoMapper.listSeckillActivity(goods);
|
return seckillActivityVOS;
|
}
|
|
@Override
|
public SeckillActivityDetailVO detail(Integer seckillActivityId) {
|
Integer vipId = 0;
|
String token = SecurityUtils.getToken(ServletUtils.getRequest());
|
if(StringUtils.isNotEmpty(token)){
|
Long userid = tokenService.getLoginUserApplet().getUserid();
|
AppUser appUser = appUserClient.getAppUserById(userid);
|
vipId = appUser.getVipId();
|
}
|
SeckillActivityDetailVO seckillActivityDetailVO = seckillActivityInfoMapper.selectDetail(seckillActivityId, vipId);
|
Integer goodsId = seckillActivityDetailVO.getGoodsId();
|
|
Goods goods = goodsService.getById(goodsId);
|
seckillActivityDetailVO.setGoodsName(goods.getName());
|
seckillActivityDetailVO.setGoodsType(goods.getType());
|
List<Shop> shops;
|
if(goods.getAppointStore() == 1){
|
List<Integer> shopIdList = goodsShopMapper.selectList(new LambdaQueryWrapper<GoodsShop>()
|
.eq(GoodsShop::getGoodsId, goodsId)).stream().map(GoodsShop::getShopId).collect(Collectors.toList());
|
shops = shopMapper.selectList(new LambdaQueryWrapper<Shop>()
|
.in(shopIdList.size() > 0, Shop::getId, shopIdList).eq(Shop::getDelFlag, 0));
|
}else{
|
shops = shopMapper.selectList(new LambdaUpdateWrapper<Shop>().eq(Shop::getDelFlag, 0));
|
}
|
seckillActivityDetailVO.setShopList(shops);
|
Integer integer = orderClient.getGoodsSaleNum(goods.getId(), 2).getData();
|
seckillActivityDetailVO.setSaleNum(integer);
|
return seckillActivityDetailVO;
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void saveSeckillActivityInfo(SeckillActivityInfo seckillActivityInfo) {
|
this.baseMapper.insert(seckillActivityInfo);
|
List<GoodsSeckill> goodsSeckills = seckillActivityInfo.getGoodsSeckills();
|
for (GoodsSeckill goodsSeckill : goodsSeckills) {
|
goodsSeckill.setCashPayment(null == goodsSeckill.getSellingPrice() ? 0 : 1);
|
goodsSeckill.setPointPayment(null == goodsSeckill.getIntegral() ? 0 : 1);
|
goodsSeckill.setSeckillActivityInfoId(seckillActivityInfo.getId());
|
}
|
goodsSeckillService.saveBatch(goodsSeckills);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void updateSeckillActivityInfo(SeckillActivityInfo seckillActivityInfo) {
|
this.baseMapper.updateById(seckillActivityInfo);
|
goodsSeckillService.remove(new LambdaQueryWrapper<GoodsSeckill>().eq(GoodsSeckill::getSeckillActivityInfoId, seckillActivityInfo.getId()));
|
List<GoodsSeckill> goodsSeckills = seckillActivityInfo.getGoodsSeckills();
|
for (GoodsSeckill goodsSeckill : goodsSeckills) {
|
goodsSeckill.setCashPayment(null == goodsSeckill.getSellingPrice() ? 0 : 1);
|
goodsSeckill.setPointPayment(null == goodsSeckill.getIntegral() ? 0 : 1);
|
goodsSeckill.setSeckillActivityInfoId(seckillActivityInfo.getId());
|
}
|
goodsSeckillService.saveBatch(goodsSeckills);
|
}
|
}
|