admin
2020-12-25 25680e135b5bdc15658622cbfde74bab73cfee77
service-lucky/src/main/java/com/ks/lucky/service/impl/LuckyActivityAwardResultManager.java
@@ -6,12 +6,22 @@
import com.ks.app.entity.AppInfo;
import com.ks.lucky.exception.LuckyActivityAwardException;
import com.ks.lucky.exception.LuckyActivityAwardResultException;
import com.ks.lucky.exception.LuckyMQException;
import com.ks.lucky.mapper.LuckyActivityAwardResultExtraMapper;
import com.ks.lucky.mapper.LuckyActivityAwardResultMapper;
import com.ks.lucky.pojo.DO.LuckyActivityAwardResult;
import com.ks.lucky.pojo.DO.LuckyActivityAwardResultExtra;
import com.ks.lucky.pojo.DO.LuckyActivityAwards;
import com.ks.lucky.pojo.DO.LuckyMQ;
import com.ks.lucky.pojo.DTO.ActivityAwardParams;
import com.ks.lucky.pojo.DTO.mq.ActivityDrawnMsgDTO;
import com.ks.lucky.query.ActivityAwardResultQuery;
import com.ks.lucky.service.LuckyMQService;
import com.ks.lucky.util.Constant;
import com.ks.lucky.util.mq.CMQManager;
import com.ks.lucky.util.mq.LuckyMQFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.yeshi.utils.StringUtil;
@@ -21,12 +31,14 @@
import org.yeshi.utils.entity.alipay.AlipayTransferAccount;
import org.yeshi.utils.entity.alipay.AlipayTransferInfo;
import org.yeshi.utils.exception.AlipayTransferException;
import org.yeshi.utils.generater.entity.ExceptionData;
import javax.annotation.Resource;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Set;
/**
@@ -34,6 +46,8 @@
 */
@Component
public class LuckyActivityAwardResultManager {
    Logger logger = LoggerFactory.getLogger(LuckyActivityAwardResultManager.class);
    @Resource
    private LuckyActivityAwardManager luckyActivityAwardManager;
@@ -47,8 +61,8 @@
    @Resource
    private LuckyActivityAwardResultExtraMapper luckyActivityAwardResultExtraMapper;
    @Resource
    private LuckyMQService luckyMQService;
    /**
@@ -79,6 +93,13 @@
            extra.setAwardResultId(result.getId());
            extra.setCreateTime(new Date());
            luckyActivityAwardResultExtraMapper.insertSelective(extra);
            //添加通知
            try {
                CMQManager.getInstance().publishActivityDrawnMsg(ActivityDrawnMsgDTO.create(result));
            } catch (Exception e) {
            }
        }
@@ -159,9 +180,55 @@
    }
    @Transactional
    public void setResultShow(Long activityId) {
        luckyActivityAwardResultMapper.setStateByActivityId(activityId, LuckyActivityAwardResult.STATE_NOT_RECIEVE, "等待领取", new Date());
    @Transactional(rollbackFor = Exception.class)
    public void setResultShow(Long activityId) throws LuckyMQException {
        Date date = new Date();
        luckyActivityAwardResultMapper.setStateByActivityId(activityId, LuckyActivityAwardResult.STATE_NOT_RECIEVE, "等待领取", date);
        ActivityAwardResultQuery query = new ActivityAwardResultQuery();
        query.activityId = activityId;
        long count = luckyActivityAwardResultMapper.count(query);
        query.count = (int) count;
        List<LuckyActivityAwardResult> resultList = luckyActivityAwardResultMapper.list(query);
        if (resultList != null && resultList.size() > 0) {
            for (LuckyActivityAwardResult result : resultList) {
                //添加过期领取通知
                LuckyMQ mq = LuckyMQFactory.createActivityDrawnOutDate(result.getId(), new Date(date.getTime() + Constant.ACTIVITY_DRAWN_RECIEVE_VALID_TIME));
                luckyMQService.addMQ(mq);
                //添加通知
                try {
                    CMQManager.getInstance().publishActivityDrawnMsg(ActivityDrawnMsgDTO.create(result));
                } catch (Exception e) {
                    logger.error("发布活动中奖的订阅消息出错:", result.getId(), e.getMessage());
                }
            }
        }
    }
    /**
     * 使中奖过期
     *
     * @param id
     */
    @Transactional(rollbackFor = Exception.class)
    public void setResultOutDate(Long id) {
        LuckyActivityAwardResult result = luckyActivityAwardResultMapper.selectByPrimaryKeyForUpdate(id);
        if (result.getState() != LuckyActivityAwardResult.STATE_NOT_RECIEVE) {
            return;
        }
        LuckyActivityAwardResult update = new LuckyActivityAwardResult();
        update.setId(id);
        update.setState(LuckyActivityAwardResult.STATE_OUT_OF_DATE);
        update.setStateDesc("过期未领取");
        update.setUpdateTime(new Date());
        luckyActivityAwardResultMapper.updateByPrimaryKeySelective(update);
        result.setStateDesc(update.getStateDesc());
        result.setState(update.getState());
        //发布消息
        CMQManager.getInstance().publishActivityDrawnMsg(ActivityDrawnMsgDTO.create(result));
    }
}