From a2fe11f549f52e887937dbdb63d967a09d3a3f21 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 02 十二月 2020 18:54:38 +0800 Subject: [PATCH] 抽奖核心服务完善,天天抽奖服务基本搭建 --- service-lucky/src/main/java/com/ks/lucky/service/impl/LuckyActivityManager.java | 101 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 95 insertions(+), 6 deletions(-) diff --git a/service-lucky/src/main/java/com/ks/lucky/service/impl/LuckyActivityManager.java b/service-lucky/src/main/java/com/ks/lucky/service/impl/LuckyActivityManager.java index a0f2fd5..ce2dcce 100644 --- a/service-lucky/src/main/java/com/ks/lucky/service/impl/LuckyActivityManager.java +++ b/service-lucky/src/main/java/com/ks/lucky/service/impl/LuckyActivityManager.java @@ -1,11 +1,15 @@ 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.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; @@ -22,6 +26,9 @@ @Resource private LuckyActivityOpenInfoManager luckyActivityOpenInfoManager; + @Resource + private LuckyMQService luckyMQService; + /** * 娲诲姩鏄惁杩樺彲浠ュ弬鍔� @@ -36,12 +43,9 @@ throw new LuckyActivityException(LuckyActivityException.CODE_NOT_EXIST, "娲诲姩涓嶅瓨鍦�"); } - if (activity.getState() == LuckyActivity.STATE_NOT_STARTED) { - throw new LuckyActivityException(1, "娲诲姩杩樻湭寮�濮�"); - } - if (activity.getState() == LuckyActivity.STATE_FINISH || activity.getState() == LuckyActivity.STATE_OPENED) { - throw new LuckyActivityException(1, "娲诲姩宸茬粡缁撴潫"); + if (activity.getState() != LuckyActivity.STATE_STARTED) { + throw new LuckyActivityException(1, "娲诲姩涓嶅彲鍙備笌"); } if (activity.getCurrentPersonCount() >= activity.getMaxPersonCount()) { @@ -49,6 +53,23 @@ } 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; } /** @@ -93,7 +114,7 @@ * * @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, "娲诲姩涓嶅瓨鍦�"); @@ -105,6 +126,74 @@ //鍚姩娲诲姩 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(); + } + + } -- Gitblit v1.8.0