admin
2021-01-08 7e389247b3b2877c12f1eaae6e33c9c33e91d2dd
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
package com.ks.lucky.service.impl;
 
import com.ks.lib.common.exception.ParamsException;
import com.ks.lucky.dao.LuckyActivityAwardMaterialDao;
import com.ks.lucky.exception.LuckyActivityAwardException;
import com.ks.lucky.exception.LuckyActivityAwardMaterialException;
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.remote.service.LuckyActivityAwardMaterialService;
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;
 
    @Resource
    private LuckyActivityAwardMaterialService luckyActivityAwardMaterialService;
 
    /**
     * 添加奖项
     *
     * @param award
     * @throws LuckyActivityAwardException
     */
    @Validated
    public void addAward(LuckyActivityAwards award) throws LuckyActivityAwardException, LuckyActivityAwardMaterialException, ParamsException {
        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, "同等级的奖项已经存在");
        }
 
        if (award.getMaterial() != null && award.getMaterial().getId() == null) {
            String id = luckyActivityAwardMaterialService.addAwardMaterial(award.getMaterial());
            award.getMaterial().setId(id);
            award.setMaterialId(id);
        }
 
        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);
    }
 
 
}