package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.utils.LoginUserUtil; import cc.mrbird.febs.mall.dto.AddCollectionDto; import cc.mrbird.febs.mall.dto.MemberCollectionListDto; import cc.mrbird.febs.mall.entity.MallGoods; import cc.mrbird.febs.mall.entity.MallMember; import cc.mrbird.febs.mall.entity.MallMemberCollection; import cc.mrbird.febs.mall.mapper.MallMemberCollectionMapper; import cc.mrbird.febs.mall.service.IApiMallGoodsService; import cc.mrbird.febs.mall.service.IMallMemberCollectionService; import cc.mrbird.febs.mall.vo.AddCollectionVo; import cc.mrbird.febs.mall.vo.CollectionListVo; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @Slf4j @Service @RequiredArgsConstructor public class MallMemberCollectionServiceImpl extends ServiceImpl implements IMallMemberCollectionService { private final IApiMallGoodsService apiMallGoodsService; @Override public void add(AddCollectionDto addCollectionDto) { MallMember member = LoginUserUtil.getLoginUser(); MallGoods mallgoods = apiMallGoodsService.getById(addCollectionDto.getGoodsId()); if (mallgoods == null) { throw new FebsException("商品不存在"); } LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(MallMemberCollection::getMemberId, member.getId()); queryWrapper.eq(MallMemberCollection::getGoodsId, addCollectionDto.getGoodsId()); List mallMemberCollections = this.baseMapper.selectList(queryWrapper); if (CollUtil.isNotEmpty(mallMemberCollections)) { throw new FebsException("商品已收藏"); } MallMemberCollection collection = new MallMemberCollection(); collection.setMemberId(member.getId()); collection.setGoodsId(addCollectionDto.getGoodsId()); this.baseMapper.insert(collection); } @Override public List findMemberCollectionList(MemberCollectionListDto memberCollectionListDto) { MallMember member = LoginUserUtil.getLoginUser(); MallMemberCollection collection = new MallMemberCollection(); collection.setMemberId(member.getId()); Page page = new Page<>(memberCollectionListDto.getPageNow(), memberCollectionListDto.getPageSize()); IPage result = this.baseMapper.selectMemberCollectionListInPage(collection, page); if (CollUtil.isEmpty(result.getRecords())) { return new ArrayList<>(); } return result.getRecords().stream().map(item -> BeanUtil.copyProperties(item, CollectionListVo.class)).collect(Collectors.toList()); } @Override public void del(String ids) { MallMember member = LoginUserUtil.getLoginUser(); List goodsIdList = StrUtil.split(ids, ','); LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.in(MallMemberCollection::getGoodsId, goodsIdList); query.eq(MallMemberCollection::getMemberId, member.getId()); List collections = this.baseMapper.selectList(query); List idsList = collections.stream().map(MallMemberCollection::getId).collect(Collectors.toList()); LambdaQueryWrapper delQuery = new LambdaQueryWrapper<>(); delQuery.in(MallMemberCollection::getId, idsList); delQuery.eq(MallMemberCollection::getMemberId, member.getId()); this.baseMapper.delete(delQuery); } }