| | |
| | | package com.ks.lucky.service.impl; |
| | | |
| | | 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.DTO.ActivityMQMsg; |
| | | import com.ks.lucky.pojo.DTO.mq.ActivityStateChangeMsgDTO; |
| | | import com.ks.lucky.service.LuckyMQService; |
| | | 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; |
| | | |
| | |
| | | |
| | | @Resource |
| | | private LuckyActivityOpenInfoManager luckyActivityOpenInfoManager; |
| | | |
| | | @Resource |
| | | private LuckyMQService luckyMQService; |
| | | |
| | | |
| | | /** |
| | |
| | | } |
| | | |
| | | return true; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 是否可以更改活动内容 |
| | | * |
| | | * @param activityId |
| | | * @return |
| | | */ |
| | | public boolean canUpdate(Long activityId) { |
| | | LuckyActivity activity = luckyActivityMapper.selectByPrimaryKey(activityId); |
| | | if (activity != null) { |
| | | if (activity.getState() == LuckyActivity.STATE_VERIFY_REJECT || activity.getState() == LuckyActivity.STATE_NOT_SUBMIT_VERIFY) { |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | |
| | | * |
| | | * @param activityId |
| | | */ |
| | | public void startUpActivity(Long activityId) throws LuckyActivityException { |
| | | public void startUpActivity(Long activityId) throws LuckyActivityException, LuckyMQException { |
| | | LuckyActivity luckyActivity = luckyActivityMapper.selectByPrimaryKeyForUpdate(activityId); |
| | | if (luckyActivity == null) { |
| | | throw new LuckyActivityException(LuckyActivityException.CODE_NOT_EXIST, "活动不存在"); |
| | |
| | | |
| | | //启动活动 |
| | | setState(activityId, LuckyActivity.STATE_STARTED, "已经启动"); |
| | | //设置实际开始时间 |
| | | LuckyActivity update = new LuckyActivity(); |
| | | update.setId(activityId); |
| | | update.setActualStartTime(new Date()); |
| | | update.setUpdateTime(new Date()); |
| | | luckyActivityMapper.updateByPrimaryKeySelective(update); |
| | | |
| | | //有预计结束时间 |
| | | if (luckyActivity.getPreFinishTime() != null) { |
| | | //添加结束消息 |
| | | LuckyMQ mq = LuckyMQFactory.createFinishActivity(luckyActivity); |
| | | luckyMQService.addMQ(mq); |
| | | } |
| | | |
| | | //尝试删除消息 |
| | | try { |
| | | LuckyMQ mq = LuckyMQFactory.createStartUpActivity(luckyActivity); |
| | | luckyMQService.removeUnSendMsg(mq.getTaskId()); |
| | | } catch (LuckyMQException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 结束活动 |
| | | * |
| | | * @param activityId |
| | | * @param force 是否强制结束 |
| | | * @param remarks |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void finishActivity(Long activityId, boolean force, String remarks) throws LuckyActivityException, LuckyMQException { |
| | | LuckyActivity activity = luckyActivityMapper.selectByPrimaryKeyForUpdate(activityId); |
| | | if (activity.getState() != LuckyActivity.STATE_STARTED) { |
| | | throw new LuckyActivityException(1, "活动未处于已开始状态"); |
| | | } |
| | | |
| | | //设置活动处于强制结束状态 |
| | | if (force) { |
| | | setState(activityId, LuckyActivity.STATE_FOUCE_FINISH, remarks); |
| | | } else { |
| | | setState(activityId, LuckyActivity.STATE_FINISH, remarks); |
| | | } |
| | | LuckyActivity update = new LuckyActivity(); |
| | | update.setId(activityId); |
| | | update.setActualFinishTime(new Date()); |
| | | update.setUpdateTime(new Date()); |
| | | luckyActivityMapper.updateByPrimaryKeySelective(update); |
| | | |
| | | activity.setActualFinishTime(update.getActualFinishTime()); |
| | | //强制结束的不开奖 |
| | | if (!force) { |
| | | //添加开奖消息 |
| | | LuckyMQ mq = LuckyMQFactory.createOpenActivity(activity); |
| | | luckyMQService.addMQ(mq); |
| | | } |
| | | //尝试删除消息 |
| | | try { |
| | | LuckyMQ mq1 = LuckyMQFactory.createFinishActivity(activity); |
| | | luckyMQService.removeUnSendMsg(mq1.getTaskId()); |
| | | } catch (LuckyMQException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | * @param state |
| | | * @param stateRemarks |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void setState(Long activityId, int state, String stateRemarks) { |
| | | LuckyActivity activity = new LuckyActivity(); |
| | | activity.setId(activityId); |
| | |
| | | activity.setStateRemarks(stateRemarks); |
| | | activity.setUpdateTime(new Date()); |
| | | luckyActivityMapper.updateByPrimaryKeySelective(activity); |
| | | CMQManager.getInstance().publishActivityStateChangeMsg(new ActivityStateChangeMsgDTO(activityId, state, stateRemarks, activity.getUpdateTime())); |
| | | } |
| | | |
| | | } |