admin
2020-12-31 74196bcc835d9b76cdd1bc3d85b0dfbe0191fc00
service-lucky/src/main/java/com/ks/lucky/service/impl/LuckyActivityManager.java
@@ -3,19 +3,22 @@
import com.ks.lucky.exception.LuckyActivityException;
import com.ks.lucky.exception.LuckyMQException;
import com.ks.lucky.mapper.LuckyActivityMapper;
import com.ks.lucky.pojo.DO.LuckyActivity;
import com.ks.lucky.pojo.DO.LuckyActivityOpenInfo;
import com.ks.lucky.pojo.DO.LuckyMQ;
import com.ks.lucky.pojo.DO.*;
import com.ks.lucky.pojo.DTO.ActivityMQMsg;
import com.ks.lucky.pojo.DTO.mq.ActivityStateChangeMsgDTO;
import com.ks.lucky.service.LuckyActivityImageService;
import com.ks.lucky.service.LuckyMQService;
import com.ks.lucky.util.annotation.RedisCache;
import com.ks.lucky.util.annotation.RedisCacheEvict;
import com.ks.lucky.util.mq.CMQManager;
import com.ks.lucky.util.mq.LuckyMQFactory;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Component
@@ -29,6 +32,52 @@
    @Resource
    private LuckyMQService luckyMQService;
    @Resource
    private LuckyActivityImageService luckyActivityImageService;
    @Resource
    private LuckyActivitySponsorInfoManager luckyActivitySponsorInfoManager;
    @Resource
    private LuckyActivityAwardManager luckyActivityAwardManager;
    @RedisCache(cate = "activity", key = "'activity-detail-'+#id", second = 3600)
    public LuckyActivity getActivityDetail(Long id) {
        LuckyActivity activity = luckyActivityMapper.selectByPrimaryKey(id);
        if (activity == null) {
            return null;
        }
        //加载图片信息
        List<LuckyActivityImage> bannerList = luckyActivityImageService.listByActivityId(id, LuckyActivityImage.LuckyImageType.banner);
        activity.setBannerList(bannerList);
        //加载开奖信息
        LuckyActivityOpenInfo openInfo = luckyActivityOpenInfoManager.getOpenInfo(activity.getId());
        activity.setOpenInfo(openInfo);
        //加载赞助信息
        LuckyActivitySponsorInfo sponsorInfo = luckyActivitySponsorInfoManager.getSponsorInfo(activity.getId());
        if (sponsorInfo != null) {
            sponsorInfo = luckyActivitySponsorInfoManager.getSponsorInfoDetail(sponsorInfo.getId());
        }
        activity.setSponsorInfo(sponsorInfo);
        //加载奖项信息
        List<LuckyActivityAwards> awardsList = luckyActivityAwardManager.getAwardList(activity.getId());
        List<LuckyActivityAwards> awardsDetailList = new ArrayList<>();
        if (awardsList != null) {
            for (LuckyActivityAwards awards : awardsList) {
                awards = luckyActivityAwardManager.getAwardDetail(awards.getId());
                if (awards != null) {
                    awardsDetailList.add(awards);
                }
            }
        }
        activity.setAwardsList(awardsDetailList);
        return activity;
    }
    /**
@@ -80,6 +129,7 @@
     * @param count
     * @throws LuckyActivityException
     */
    @RedisCacheEvict(cate = "activity", key = "'activity-detail-'+#activityId")
    @Transactional(rollbackFor = Exception.class)
    public void addJoinCount(Long activityId, int count) throws LuckyActivityException {
        LuckyActivity luckyActivity = luckyActivityMapper.selectByPrimaryKeyForUpdate(activityId);
@@ -115,6 +165,7 @@
     *
     * @param activityId
     */
    @RedisCacheEvict(cate = "activity", key = "'activity-detail-'+#activityId")
    public void startUpActivity(Long activityId) throws LuckyActivityException, LuckyMQException {
        LuckyActivity luckyActivity = luckyActivityMapper.selectByPrimaryKeyForUpdate(activityId);
        if (luckyActivity == null) {
@@ -160,6 +211,7 @@
     * @param force      是否强制结束
     * @param remarks
     */
    @RedisCacheEvict(cate = "activity", key = "'activity-detail-'+#activityId")
    @Transactional(rollbackFor = Exception.class)
    public void finishActivity(Long activityId, boolean force, String remarks) throws LuckyActivityException, LuckyMQException {
        LuckyActivity activity = luckyActivityMapper.selectByPrimaryKeyForUpdate(activityId);
@@ -216,6 +268,7 @@
     * @param state
     * @param stateRemarks
     */
    @RedisCacheEvict(cate = "activity", key = "'activity-detail-'+#activityId")
    @Transactional(rollbackFor = Exception.class)
    public void setState(Long activityId, int state, String stateRemarks) {
        LuckyActivity activity = new LuckyActivity();
@@ -223,8 +276,16 @@
        activity.setState(state);
        activity.setStateRemarks(stateRemarks);
        activity.setUpdateTime(new Date());
        luckyActivityMapper.updateByPrimaryKeySelective(activity);
        updateSelectiveByPrimaryKey(activity);
        CMQManager.getInstance().publishActivityStateChangeMsg(new ActivityStateChangeMsgDTO(activityId, state, stateRemarks, activity.getUpdateTime()));
    }
    @RedisCacheEvict(cate = "activity", key = "'activity-detail-'+#activity.id")
    public void updateSelectiveByPrimaryKey(LuckyActivity activity) {
        if (activity.getUpdateTime() == null) {
            activity.setUpdateTime(new Date());
        }
        luckyActivityMapper.updateByPrimaryKeySelective(activity);
    }
}