rentaiming
2024-07-10 b29becf95484be48aa09e87fcc7cc19f94cf9c81
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
package com.ruoyi.auction.service.impl;
 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.auction.domain.AuctionBidRecord;
import com.ruoyi.auction.domain.MemberAuctionCollection;
import com.ruoyi.auction.mapper.AuctionBidRecordMapper;
import com.ruoyi.auction.mapper.AuctionGoodsMapper;
import com.ruoyi.auction.mapper.MemberAuctionCollectionMapper;
import com.ruoyi.auction.service.IMemberAuctionCollectionService;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.page.PageDTO;
import com.ruoyi.system.api.domain.AuctionGoods;
import com.ruoyi.system.api.domain.GoodsSku;
import com.ruoyi.system.api.domain.dto.AuctionCollectionDTO;
import com.ruoyi.system.api.domain.dto.AuctionGoodsListPageDTO;
import com.ruoyi.system.api.domain.vo.AuctionGoodsListVO;
import com.ruoyi.system.api.feignClient.GoodsSkuClient;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
 
/**
 * <p>
 * 用户收藏的普通拍卖商品 服务实现类
 * </p>
 *
 * @author mitao
 * @since 2024-05-27
 */
@Service
public class MemberAuctionCollectionServiceImpl extends ServiceImpl<MemberAuctionCollectionMapper, MemberAuctionCollection> implements IMemberAuctionCollectionService {
 
    @Resource
    private GoodsSkuClient goodsSkuClient;
    @Resource
    private AuctionGoodsMapper auctionGoodsMapper;
 
    @Resource
    private AuctionBidRecordMapper auctionBidRecordMapper;
 
 
    @Override
    public void saveAuctionCollection(AuctionCollectionDTO auctionCollectionDTO) {
        if (auctionCollectionDTO.getMemberId()==null) {
            throw new ServiceException("用户ID不能为空");
        }
        if (auctionCollectionDTO.getState()==null) {
            throw new ServiceException("类型不能为空");
        }
 
        LambdaQueryWrapper< MemberAuctionCollection> wrapper= Wrappers.lambdaQuery();
        wrapper.eq(MemberAuctionCollection::getMemberId,auctionCollectionDTO.getMemberId());
        wrapper.eq(MemberAuctionCollection::getTargetId,auctionCollectionDTO.getGoodsSkuId());
        if (auctionCollectionDTO.getState()==1){
            List<MemberAuctionCollection> list = this.list(wrapper);
            if (list.size()==0){
                MemberAuctionCollection m =new MemberAuctionCollection();
                m.setMemberId(auctionCollectionDTO.getMemberId());
                m.setTargetId(auctionCollectionDTO.getGoodsSkuId());
                this.save(m);
            }
        }else{
            List<MemberAuctionCollection> list = this.list(wrapper);
            if (list.size()>0){
                for (MemberAuctionCollection memberArticleCollection:list){
                    this.removeById(memberArticleCollection);
                }
            }
 
        }
    }
 
    @Override
    public PageDTO<AuctionGoodsListVO> getMemberAuctionCollectionList(AuctionCollectionDTO auctionCollectionDTO) {
        Set<Long> goodsSkuIdList = null;
        if (StringUtils.isNotEmpty(auctionCollectionDTO.getGoodsSkuName())) {
            List<GoodsSku> goodsSku = goodsSkuClient.getGoodsByName(auctionCollectionDTO.getGoodsSkuName(),
                            SecurityConstants.INNER)
                    .getData();
            goodsSkuIdList = goodsSku.stream().map(GoodsSku::getId)
                    .collect(Collectors.toSet());
        }
        AuctionGoodsListPageDTO auctionGoodsListPageDTO=new AuctionGoodsListPageDTO();
        auctionGoodsListPageDTO.setGoodsSkuIdList(goodsSkuIdList);
 
        Page<AuctionGoodsListVO> page = new Page<>();
        page.setSize(auctionCollectionDTO.getPageSize());
        page.setCurrent(auctionCollectionDTO.getPageCurr());
        LambdaQueryWrapper< MemberAuctionCollection> wrapper= Wrappers.lambdaQuery();
        wrapper.eq(MemberAuctionCollection::getMemberId,auctionCollectionDTO.getMemberId());
        if (StringUtils.isNotEmpty(auctionCollectionDTO.getGoodsSkuName())){
            if (goodsSkuIdList.size()>0){
                wrapper.in(MemberAuctionCollection::getTargetId,goodsSkuIdList);
            }else{
                goodsSkuIdList=new HashSet<>();
                goodsSkuIdList.add(0L);
                wrapper.in(MemberAuctionCollection::getTargetId,goodsSkuIdList);
            }
        }
        List<MemberAuctionCollection> list = this.list(wrapper);
 
        List<AuctionGoodsListVO> auctionGoodsVOS=new ArrayList<>();
        for (MemberAuctionCollection auctionCollection:list){
            AuctionGoods auctionGoods = auctionGoodsMapper.selectById(auctionCollection.getTargetId());
            AuctionGoodsListVO auctionGoodsVO=new AuctionGoodsListVO();
            auctionGoodsVO.setAuctionStock(auctionGoods.getAuctionStock());
            auctionGoodsVO.setGoodsSkuId(auctionGoods.getId());
            auctionGoodsVO.setEndTime(auctionGoods.getEndTime());
            auctionGoodsVO.setStartTime(auctionGoods.getStartTime());
            auctionGoodsVO.setStartingPrice(auctionGoods.getStartingPrice());
            auctionGoodsVO.setStartStatus(auctionGoods.getStartStatus());
            GoodsSku goodsSkuOne = goodsSkuClient.getGoodsSkuOne(auctionGoods.getGoodsSkuId(), SecurityConstants.INNER).getData();
            auctionGoodsVO.setUnit(goodsSkuOne.getUnit());
            auctionGoodsVO.setSpec(goodsSkuOne.getSpec());
            auctionGoodsVO.setIsCollection(2);
            auctionGoodsVO.setSpecUnit(goodsSkuOne.getSpecUnit());
            auctionGoodsVO.setGoodsSkuName(goodsSkuOne.getSkuName());
            auctionGoodsVO.setCoverPic(goodsSkuOne.getCoverPic());
 
 
            LambdaQueryWrapper<AuctionBidRecord> wrapper1=Wrappers.lambdaQuery();
            wrapper1.eq(AuctionBidRecord::getMemberId,auctionCollectionDTO.getMemberId());
            wrapper1.eq(AuctionBidRecord::getAuctionType,1);
            wrapper1.eq(AuctionBidRecord::getTargetId,auctionGoods.getId());
            wrapper1.eq(AuctionBidRecord::getDelFlag,0);
            AuctionBidRecord list1 = auctionBidRecordMapper.selectOne(wrapper1);
            if (list1!=null){
                if (list1.getStatus().getCode()==2){
                    auctionGoodsVO.setIsStatus(2);
                }else{
                    auctionGoodsVO.setIsStatus(1);
                }
            }else{
                auctionGoodsVO.setIsStatus(1);
            }
 
            auctionGoodsVOS.add(auctionGoodsVO);
 
        }
        page.setRecords(auctionGoodsVOS);
       return PageDTO.of(page);
    }
}