admin
2020-12-25 25680e135b5bdc15658622cbfde74bab73cfee77
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
package com.ks.lucky.service.impl;
 
import com.ks.lucky.exception.LuckyActivityAwardException;
import com.ks.lucky.mapper.LuckyActivityAwardResultMapper;
import com.ks.lucky.mapper.LuckyActivityAwardsMapper;
import com.ks.lucky.mapper.LuckyActivityJoinRecordMapper;
import com.ks.lucky.pojo.DO.LuckyActivityAwardMaterial;
import com.ks.lucky.pojo.DO.LuckyActivityAwardResult;
import com.ks.lucky.pojo.DO.LuckyActivityAwards;
import com.ks.lucky.pojo.DO.LuckyActivityJoinRecord;
import com.ks.lucky.query.ActivityAwardQuery;
import com.ks.lucky.query.ActivityAwardResultQuery;
import com.ks.lucky.query.ActivityJoinRecordQuery;
import com.ks.lucky.remote.service.LuckyActivityAwardService;
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.HashMap;
import java.util.List;
import java.util.Map;
 
/**
 * 活动奖项管理
 */
@Component
public class LuckyActivityJoinManager {
 
    @Resource
    private LuckyActivityJoinRecordMapper luckyActivityJoinRecordMapper;
 
    @Resource
    private LuckyActivityAwardResultMapper luckyActivityAwardResultMapper;
 
 
    public LuckyActivityJoinRecord getRecord(Long activityId, Long appId, String uid) {
        ActivityJoinRecordQuery query = new ActivityJoinRecordQuery();
        query.appId = appId;
        query.uid = uid;
        query.activityId = activityId;
        query.start = 0;
        query.count = 1;
        List<LuckyActivityJoinRecord> list = luckyActivityJoinRecordMapper.list(query);
        if (list != null && list.size() > 0)
            return list.get(0);
        return null;
    }
 
    /**
     * 获取参与数据
     *
     * @param activityId
     * @return
     */
    public Map<String, Integer> getJoinData(Long activityId) {
        Map<String, Integer> map = new HashMap<>();
        ActivityJoinRecordQuery query = new ActivityJoinRecordQuery();
        query.activityId = activityId;
        long count = luckyActivityJoinRecordMapper.count(query);
        int pageSize = 200;
        int page = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
        for (int i = 0; i < page; i++) {
            query.start = i * pageSize;
            query.count = query.start + pageSize > count ? (int) (count - query.start) : pageSize;
            List<LuckyActivityJoinRecord> list = luckyActivityJoinRecordMapper.list(query);
            if (list != null) {
                for (LuckyActivityJoinRecord record : list) {
                    //APPID与用户ID采用#链接
                    map.put(record.getAppId() + "#" + record.getUid(), record.getWeight());
                }
            }
        }
        return map;
    }
 
 
    /**
     * 设置所有的参与者未中奖
     *
     * @param activityId
     */
    public void setActivityAllJoinerUnDraw(Long activityId) {
        ActivityJoinRecordQuery query = new ActivityJoinRecordQuery();
        query.activityId = activityId;
        LuckyActivityJoinRecord record = new LuckyActivityJoinRecord();
        record.setUpdateTime(new Date());
        record.setDrawState(LuckyActivityJoinRecord.DRAW_STATE_NOT_DRAWN);
        luckyActivityJoinRecordMapper.updateSelectiveWithQuery(record, query);
    }
 
 
    /**
     * 设置已经中奖的参与记录为中奖
     *
     * @param activityId
     */
    public void setActivityDrawnJoinerState(Long activityId) {
        //查询中奖记录
        ActivityAwardResultQuery query = new ActivityAwardResultQuery();
        query.activityId = activityId;
        long count = luckyActivityAwardResultMapper.count(query);
        //分页查询
        int pageSize = 200;
        int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
 
        for (int page = 0; page < totalPage; page++) {
            query.start = page * pageSize;
            query.count = pageSize;
            //查询出中奖记录
            List<LuckyActivityAwardResult> list = luckyActivityAwardResultMapper.list(query);
            for (LuckyActivityAwardResult result : list) {
                ActivityJoinRecordQuery recordQuery = new ActivityJoinRecordQuery();
                recordQuery.activityId = activityId;
                recordQuery.appId = result.getAppId();
                recordQuery.uid = result.getUid();
                recordQuery.count = 1;
                //查询中奖记录对应的参与记录
                List<LuckyActivityJoinRecord> recordList = luckyActivityJoinRecordMapper.list(recordQuery);
                if (recordList != null && recordList.size() > 0) {
                    LuckyActivityJoinRecord record = new LuckyActivityJoinRecord();
                    record.setId(recordList.get(0).getId());
                    record.setDrawState(LuckyActivityJoinRecord.DRAW_STATE_DRAWN);
                    record.setUpdateTime(new Date());
                    //修改参与记录的状态的已中奖
                    luckyActivityJoinRecordMapper.updateByPrimaryKeySelective(record);
                }
            }
        }
 
 
    }
 
 
}