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);
|
}
|
|
|
}
|