admin
2020-12-31 74196bcc835d9b76cdd1bc3d85b0dfbe0191fc00
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
package com.ks.lucky.service.impl;
 
import com.ks.lucky.dao.LuckyActivityAwardMaterialDao;
import com.ks.lucky.exception.LuckyActivityAwardException;
import com.ks.lucky.mapper.LuckyActivityAwardsMapper;
import com.ks.lucky.pojo.DO.LuckyActivityAwardMaterial;
import com.ks.lucky.pojo.DO.LuckyActivityAwards;
import com.ks.lucky.query.ActivityAwardQuery;
import com.ks.lucky.util.annotation.RedisCache;
import com.ks.lucky.util.annotation.RedisCacheEvict;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;
import org.yeshi.utils.StringUtil;
 
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
 
/**
 * 活动奖项管理
 */
@Component
public class LuckyActivityAwardManager {
 
    @Resource
    private LuckyActivityAwardsMapper luckyActivityAwardsMapper;
 
    @Resource
    private LuckyActivityAwardMaterialDao luckyActivityAwardMaterialDao;
 
    /**
     * 添加奖项
     *
     * @param award
     * @throws LuckyActivityAwardException
     */
    @Validated
    public void addAward(LuckyActivityAwards award) throws LuckyActivityAwardException {
        if (award.getCreateTime() == null) {
            award.setCreateTime(new Date());
        }
        ActivityAwardQuery query = new ActivityAwardQuery();
        query.activityId = award.getActivityId();
        query.level = award.getLevel();
        query.count = 1;
        List<LuckyActivityAwards> list = luckyActivityAwardsMapper.list(query);
        if (list != null && list.size() > 0) {
            throw new LuckyActivityAwardException(LuckyActivityAwardException.CODE_EXIST, "同等级的奖项已经存在");
        }
 
        luckyActivityAwardsMapper.insertSelective(award);
    }
 
 
    /**
     * 修改奖项
     *
     * @param award
     * @throws LuckyActivityAwardException
     */
    @RedisCacheEvict(cate = "activity", key = "'activity-detail-'+#activityId")
    @RedisCacheEvict(cate = "activity-awards", key = "'getAwardList-'+#activityId")
    @RedisCacheEvict(cate = "activity-awards", key = "'getAwardDetail-'+#award.id")
    public void updateAward(LuckyActivityAwards award, Long activityId) throws LuckyActivityAwardException {
        if (award.getId() == null) {
            throw new LuckyActivityAwardException(LuckyActivityAwardException.CODE_PARAMS_NOT_ENOUGH, "参数不完整");
        }
 
        if (award.getUpdateTime() == null) {
            award.setUpdateTime(new Date());
        }
        luckyActivityAwardsMapper.updateByPrimaryKeySelective(award);
    }
 
 
    /**
     * 获取奖项列表
     *
     * @param activityId
     * @return
     */
    @RedisCache(cate = "activity-awards", key = "'getAwardList-'+#activityId", second = 3600)
    public List<LuckyActivityAwards> getAwardList(Long activityId) {
        ActivityAwardQuery query = new ActivityAwardQuery();
        query.activityId = activityId;
        query.start = 0;
        query.count = 100;
        return luckyActivityAwardsMapper.list(query);
    }
 
    /**
     * 获取奖项详情
     *
     * @param id
     * @return
     */
    @RedisCache(cate = "activity-awards", key = "'getAwardDetail-'+#id", second = 3600)
    public LuckyActivityAwards getAwardDetail(Long id) {
        LuckyActivityAwards awards = luckyActivityAwardsMapper.selectByPrimaryKey(id);
        if (!StringUtil.isNullOrEmpty(awards.getMaterialId())) {
            LuckyActivityAwardMaterial material = luckyActivityAwardMaterialDao.get(awards.getMaterialId());
            if (material != null) {
                awards.setMaterial(material);
            }
        }
        return awards;
    }
 
    /**
     * 删除奖项
     *
     * @param id
     */
 
    @RedisCacheEvict(cate = "activity", key = "'activity-detail-'+#activityId")
    @RedisCacheEvict(cate = "activity-awards", key = "'getAwardList-'+#activityId")
    @RedisCacheEvict(cate = "activity-awards", key = "'getAwardDetail-'+#id")
    public void deleteAward(Long id, Long activityId) {
        LuckyActivityAwards awards = getAwardDetail(id);
        if (awards.getMaterial() != null) {
            luckyActivityAwardMaterialDao.delete(awards.getMaterial().getId());
        }
        luckyActivityAwardsMapper.deleteByPrimaryKey(id);
    }
 
 
}