From 6e281067fe81dbf180c63a2833f74c1615d32f18 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期一, 30 十一月 2020 16:44:46 +0800
Subject: [PATCH] 抽奖服务完善

---
 service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityServiceImpl.java |  118 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 104 insertions(+), 14 deletions(-)

diff --git a/service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityServiceImpl.java b/service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityServiceImpl.java
index ae684a0..55f195f 100644
--- a/service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityServiceImpl.java
+++ b/service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityServiceImpl.java
@@ -11,10 +11,7 @@
 import com.ks.lucky.query.ActivityDaoQuery;
 import com.ks.lucky.remote.service.LuckyActivityService;
 import com.ks.lucky.service.LuckyMQService;
-import com.ks.lucky.service.impl.AppManager;
-import com.ks.lucky.service.impl.LuckyActivityAwardManager;
-import com.ks.lucky.service.impl.LuckyActivityOpenInfoManager;
-import com.ks.lucky.service.impl.LuckyActivitySponsorInfoManager;
+import com.ks.lucky.service.impl.*;
 import com.ks.lucky.util.mq.LuckyMQFactory;
 import org.apache.dubbo.config.annotation.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -29,6 +26,9 @@
 
     @Resource
     private LuckyActivityMapper luckyActivityMapper;
+
+    @Resource
+    private LuckyActivityManager luckyActivityManager;
 
     @Resource
     private LuckyActivityOpenInfoManager luckyActivityOpenInfoManager;
@@ -47,6 +47,12 @@
 
     private Long getAppId(String appKey) throws AppException {
         return appManager.getAppId(appKey);
+    }
+
+    private void notNull(LuckyActivity activity) throws LuckyActivityException {
+        if (activity == null) {
+            throw new LuckyActivityException(LuckyActivityException.CODE_NOT_EXIST, "娲诲姩涓嶅瓨鍦�");
+        }
     }
 
     @Override
@@ -90,6 +96,17 @@
         return activity.getId();
     }
 
+    @Override
+    public void submitVerify(Long activityId) throws LuckyActivityException {
+        LuckyActivity activity = luckyActivityMapper.selectByPrimaryKeyForUpdate(activityId);
+        notNull(activity);
+        if (activity.getState() != LuckyActivity.STATE_NOT_SUBMIT_VERIFY && activity.getState() != LuckyActivity.STATE_VERIFY_REJECT) {
+            throw new LuckyActivityException(1, "娲诲姩鏈浜庡鏍歌鎷掔粷/鏈彁浜ゅ鏍哥姸鎬�");
+        }
+
+        luckyActivityManager.setState(activityId, LuckyActivity.STATE_WAITING_VERIFY, "绛夊緟瀹℃牳");
+    }
+
 
     /**
      * 妫�鏌ヨ鍙戝竷鐨勬椿鍔�
@@ -97,9 +114,7 @@
      * @param activity
      */
     private void checkActivityForPublish(LuckyActivity activity) throws LuckyActivityException {
-        if (activity == null) {
-            throw new LuckyActivityException(LuckyActivityException.CODE_NOT_EXIST, "娲诲姩涓嶅瓨鍦�");
-        }
+        notNull(activity);
         if (activity.getStartTime() == null) {
             throw new LuckyActivityException(1, "娲诲姩寮�濮嬫椂闂存湭璁剧疆");
         }
@@ -145,11 +160,8 @@
         LuckyActivity activity = luckyActivityMapper.selectByPrimaryKeyForUpdate(activityId);
         checkActivityForPublish(activity);
 
-        LuckyActivity update = new LuckyActivity();
-        update.setId(activityId);
-        update.setState(LuckyActivity.STATE_NOT_STARTED);
-        update.setStateRemarks("宸插彂甯�");
-        update.setUpdateTime(new Date());
+
+        luckyActivityManager.setState(activityId, LuckyActivity.STATE_NOT_STARTED, "宸插彂甯�");
 
         //鍔犲叆浠e彂娑堟伅鍒楄〃
         try {
@@ -159,19 +171,97 @@
         }
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void startActivity(Long activityId, String remarks) throws LuckyActivityException {
+        LuckyActivity activity = luckyActivityMapper.selectByPrimaryKeyForUpdate(activityId);
+        if (activity.getState() != LuckyActivity.STATE_NOT_STARTED) {
+            throw new LuckyActivityException(2, "娲诲姩灏氭湭澶勪簬宸插彂甯冪姸鎬�");
+        }
+
+        luckyActivityManager.startUpActivity(activityId);
+
+
+    }
+
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void verifyActivity(Long activityId, boolean pass, String remarks) throws LuckyActivityException {
+        LuckyActivity activity = luckyActivityMapper.selectByPrimaryKeyForUpdate(activityId);
+        if (activity.getState() != LuckyActivity.STATE_WAITING_VERIFY) {
+            throw new LuckyActivityException(2, "娲诲姩灏氭湭澶勪簬瀹℃牳鐘舵��");
+        }
 
+        //瀹℃牳娲诲姩
+        //瀹℃牳閫氳繃
+        if (pass) {
+            luckyActivityManager.setState(activityId, LuckyActivity.STATE_NOT_PUBLISH, remarks);
+        } else {
+            //瀹℃牳鏈�氳繃
+            luckyActivityManager.setState(activityId, LuckyActivity.STATE_VERIFY_REJECT, remarks);
+        }
+
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void forceFinishActivity(Long activityId, String remarks) throws LuckyActivityException {
+        LuckyActivity activity = luckyActivityMapper.selectByPrimaryKeyForUpdate(activityId);
+        notNull(activity);
+
+        if (activity.getState() != LuckyActivity.STATE_STARTED) {
+            throw new LuckyActivityException(1, "娲诲姩鏈浜庡凡寮�濮嬬姸鎬�");
+        }
+
+        //璁剧疆娲诲姩澶勪簬寮哄埗缁撴潫鐘舵��
+        luckyActivityManager.setState(activityId, LuckyActivity.STATE_FOUCE_FINISH, remarks);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void cancelPublish(Long activityId, String remarks) throws LuckyActivityException {
+        LuckyActivity activity = luckyActivityMapper.selectByPrimaryKeyForUpdate(activityId);
+        notNull(activity);
+
+        if (activity.getState() != LuckyActivity.STATE_NOT_STARTED) {
+            throw new LuckyActivityException(1, "娲诲姩鏈浜庡凡鍙戝竷鐘舵��");
+        }
+
+        //璁剧疆娲诲姩涓烘湭鍙戝竷鐘舵��
+        luckyActivityManager.setState(activityId, LuckyActivity.STATE_NOT_PUBLISH, remarks);
     }
 
     @Override
     public LuckyActivity getActivityDetail(Long id) {
-        return null;
+        LuckyActivity activity = luckyActivityMapper.selectByPrimaryKey(id);
+        if (activity == null) {
+            return null;
+        }
+        //鍔犺浇寮�濂栦俊鎭�
+        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());
+        activity.setAwardsList(awardsList);
+
+        return activity;
     }
 
     @Override
     public void updateActivity(LuckyActivity activity) throws LuckyActivityException {
-
+        if (activity.getState() != null) {
+            throw new LuckyActivityException(1, "涓嶈兘鏇存敼娲诲姩鐘舵��");
+        }
+        activity.setUpdateTime(new Date());
+        luckyActivityMapper.updateByPrimaryKeySelective(activity);
     }
 
 

--
Gitblit v1.8.0