admin
2021-02-06 6c09cbd70388ae53ec593de253f69cfa1a3eeda7
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
package com.ks.daylucky.service.impl.remote;
 
import com.beust.jcommander.ParameterException;
import com.ks.daylucky.mapper.ActivityTagMapper;
import com.ks.daylucky.pojo.DO.ActivityTag;
import com.ks.daylucky.service.ActivityTagService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
 
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
 
@Service
public class ActivityTagServiceImpl implements ActivityTagService {
 
    @Resource
    private ActivityTagMapper activityTagMapper;
 
 
    @Validated
    @Override
    public void addActivityTag(@Valid ActivityTag tag) throws ParameterException {
        if (tag.getWeight() == null) {
            tag.setWeight(1);
        }
        tag.setCreateTime(new Date());
        activityTagMapper.insertSelective(tag);
    }
 
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void setTags(Long activityId, List<ActivityTag> tags) {
        if (tags == null) {
            return;
        }
 
        List<ActivityTag> oList = getTagList(activityId);
 
        //删除TAG
        if (tags.size() == 0) {
            for (ActivityTag tag : oList) {
                activityTagMapper.deleteByPrimaryKey(tag.getId());
            }
            return;
        }
 
        //获取老ID
        Set<Long> ids = new HashSet<>();
        for (ActivityTag tag : oList) {
            ids.add(tag.getId());
        }
 
        for (int i = 0; i < tags.size(); i++) {
            ActivityTag tag = tags.get(i);
            tag.setWeight(tags.size() - i);
            if (tag.getId() == null) {
                //新增
                tag.setCreateTime(new Date());
                tag.setActivityId(activityId);
                addActivityTag(tag);
            } else {
                ids.remove(tag.getId());
                //更新权重
                ActivityTag update = new ActivityTag();
                update.setId(tag.getId());
                update.setWeight(tag.getWeight());
                update(update);
            }
        }
 
        //删除需要删除的标签
        for (Long id : ids) {
            delete(id);
        }
    }
 
 
    @Override
    public List<ActivityTag> getTagList(Long activityId) {
        return activityTagMapper.listByActivityId(activityId);
    }
 
    @Override
    public void update(ActivityTag tag) {
        if (tag == null || tag.getId() == null) {
            return;
        }
        tag.setUpdateTime(new Date());
        activityTagMapper.updateByPrimaryKeySelective(tag);
    }
 
    @Override
    public void delete(Long id) {
        activityTagMapper.deleteByPrimaryKey(id);
    }
}