admin
2020-12-17 452714cdffb21300ed64d5818efaa9cc38c3ee83
service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityOpenServiceImpl.java
@@ -2,17 +2,19 @@
import com.ks.lucky.exception.LuckyActivityAwardException;
import com.ks.lucky.exception.LuckyActivityException;
import com.ks.lucky.exception.LuckyActivityOpenException;
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.LuckyActivityAwards;
import com.ks.lucky.pojo.DO.LuckyActivityOpenInfo;
import com.ks.lucky.pojo.DTO.ActivityMQMsg;
import com.ks.lucky.remote.service.LuckyActivityOpenService;
import com.ks.lucky.service.impl.LuckyActivityAwardManager;
import com.ks.lucky.service.impl.LuckyActivityAwardResultManager;
import com.ks.lucky.service.impl.LuckyActivityJoinManager;
import com.ks.lucky.service.impl.LuckyActivityOpenInfoManager;
import com.ks.lucky.service.impl.*;
import com.ks.lucky.util.LuckyRunUtil;
import com.ks.lucky.util.mq.CMQManager;
import org.apache.dubbo.config.annotation.Service;
import org.omg.PortableServer.THREAD_POLICY_ID;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
@@ -21,7 +23,7 @@
import java.util.Map;
import java.util.Set;
@Service(version = "1.0")
@Service(version = "1.0.0")
public class LuckyActivityOpenServiceImpl implements LuckyActivityOpenService {
    @Resource
@@ -39,6 +41,9 @@
    @Resource
    private LuckyActivityAwardResultManager luckyActivityAwardResultManager;
    @Resource
    private LuckyActivityManager luckyActivityManager;
    /**
     * 是否可以开奖了
@@ -48,7 +53,6 @@
     */
    private boolean canOpen(LuckyActivity activity) throws LuckyActivityException {
        long now = System.currentTimeMillis();
        if (activity.getState() != LuckyActivity.STATE_FINISH) {
            throw new LuckyActivityException(1, "活动尚未结束");
        }
@@ -72,16 +76,19 @@
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void preOpenAward(Long activityId) throws LuckyActivityException, LuckyActivityAwardException {
    public void preOpenAward(Long activityId) throws LuckyActivityException, LuckyActivityOpenException, LuckyActivityAwardException {
        //判断活动状态
        LuckyActivity activity = luckyActivityMapper.selectByPrimaryKeyForUpdate(activityId);
        if (activity == null) {
            throw new LuckyActivityException(LuckyActivityException.CODE_NOT_EXIST, "活动不存在");
        }
        //判断是否达到开奖条件
        canOpen(activity);
        try {
            canOpen(activity);
        } catch (LuckyActivityException e) {
            throw new LuckyActivityOpenException(1, "尚未达到开奖条件");
        }
        //------------计算开奖-------------
        //获取奖项数据
@@ -107,6 +114,8 @@
        update.setStateRemarks("预开奖成功");
        update.setUpdateTime(new Date());
        luckyActivityMapper.updateByPrimaryKeySelective(update);
        //添加消息
        CMQManager.getInstance().addActivityMsg(new ActivityMQMsg(activityId, ActivityMQMsg.TYPE_OPEN_SHOW, new Date()));
    }
    @Transactional(rollbackFor = Exception.class)
@@ -123,8 +132,32 @@
        update.setState(LuckyActivity.STATE_OPENED);
        update.setStateRemarks("已开奖");
        luckyActivityMapper.updateByPrimaryKeySelective(update);
        //先设置所有记录未中奖
        luckyActivityJoinManager.setActivityAllJoinerUnDraw(activityId);
        //设置中奖用户状态为中奖
        luckyActivityJoinManager.setActivityDrawnJoinerState(activityId);
        luckyActivityAwardResultManager.setResultShow(activityId);
    }
    @Override
    public void reachMinPerson(Long activityId) throws LuckyActivityException {
        LuckyActivity activity = luckyActivityMapper.selectByPrimaryKey(activityId);
        if (activity == null) {
            throw new LuckyActivityException(LuckyActivityException.CODE_NOT_EXIST, "活动不存在");
        }
        //如果未设置开奖时间,且活动正在进行,就判断是否达到最低人数
        if (activity.getPreOpenTime() == null) {
            if (activity.getState() == LuckyActivity.STATE_STARTED) {
                try {
                    luckyActivityManager.finishActivity(activityId, false, "达到最低开奖人数");
                } catch (LuckyMQException e) {
                    throw new LuckyActivityException(1, e.getMsg());
                }
            }
        }
    }
}