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
|
* @param userType 用户类型
|
* @return
|
*/
|
public Map<String, Integer> getJoinData(Long activityId, Integer userType) {
|
Map<String, Integer> map = new HashMap<>();
|
ActivityJoinRecordQuery query = new ActivityJoinRecordQuery();
|
if (userType != null) {
|
query.userType = userType;
|
}
|
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);
|
}
|
}
|
}
|
|
|
}
|
|
|
}
|