From 5405154d6979f1b50ce2d881bb164b1acca80b6d Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期五, 15 一月 2021 18:58:18 +0800
Subject: [PATCH] 修改相关bug

---
 service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityServiceImpl.java |  211 ++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 168 insertions(+), 43 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 818d6be..36a16b1 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
@@ -1,25 +1,31 @@
 package com.ks.lucky.service.impl.remote;
 
-import com.ks.app.exception.AppException;
+import com.ks.daylucky.exception.LuckySponsorMoneyRecordException;
 import com.ks.lib.common.exception.ParamsException;
-import com.ks.lucky.exception.LuckyActivityException;
-import com.ks.lucky.exception.LuckyMQException;
+import com.ks.lucky.exception.*;
 import com.ks.lucky.mapper.LuckyActivityMapper;
 import com.ks.lucky.pojo.DO.*;
 import com.ks.lucky.query.ActivityDaoQuery;
 import com.ks.lucky.remote.service.LuckyActivityService;
+import com.ks.lucky.service.LuckyActivityImageService;
 import com.ks.lucky.service.LuckyMQService;
+import com.ks.lucky.service.LuckySponsorMoneyService;
 import com.ks.lucky.service.impl.*;
+import com.ks.lucky.util.annotation.RedisCache;
+import com.ks.lucky.util.annotation.RedisCacheEvict;
 import com.ks.lucky.util.mq.LuckyMQFactory;
 import org.apache.dubbo.config.annotation.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 
-@Service(version = "1.0")
+@Service(version = "1.0.0")
 public class LuckyActivityServiceImpl implements LuckyActivityService {
 
     @Resource
@@ -43,9 +49,11 @@
     @Resource
     private LuckyMQService luckyMQService;
 
-    private Long getAppId(String appKey) throws AppException {
-        return appManager.getAppId(appKey);
-    }
+    @Resource
+    private LuckyActivityImageService luckyActivityImageService;
+
+    @Resource
+    private LuckySponsorMoneyService luckySponsorMoneyService;
 
     private void notNull(LuckyActivity activity) throws LuckyActivityException {
         if (activity == null) {
@@ -53,35 +61,83 @@
         }
     }
 
+    @Validated
+    @Transactional(rollbackFor = Exception.class)
     @Override
-    public List<LuckyActivity> getActivityList(String appKey, Long sponsorId, List<Integer> stateList, String key, int page, int pageSize) {
+    public Long addActivity(LuckyActivity activity) throws ParamsException, LuckyActivityException, LuckyActivitySponsorInfoException, LuckyActivityAwardException, LuckyActivityOpenInfoException, LuckySponsorAdException, LuckyActivityAwardMaterialException {
+        Long activityId = createActivity(activity);
+        //娣诲姞banner鍥剧墖
+        if (activity.getBannerList() != null) {
+            for (LuckyActivityImage image : activity.getBannerList()) {
+                image.setActivityId(activityId);
+                luckyActivityImageService.add(image);
+            }
+        }
+
+        //娣诲姞璧炲姪娲诲姩
+        activity.getSponsorInfo().setActivityId(activityId);
+        luckyActivitySponsorInfoManager.addSponsorInfo(activity.getSponsorInfo());
+        //娣诲姞濂栭」
+        for (LuckyActivityAwards awards : activity.getAwardsList()) {
+            awards.setActivityId(activityId);
+            luckyActivityAwardManager.addAward(awards);
+        }
+
+        //娣诲姞寮�濂栦俊鎭�
+        activity.getOpenInfo().setActivityId(activityId);
+        luckyActivityOpenInfoManager.addOpenInfo(activity.getOpenInfo());
+        return activityId;
+    }
+
+    @Override
+    public List<LuckyActivity> getActivityList(Long appId, Long sponsorId, List<Integer> stateList, String key, int page, int pageSize) {
         ActivityDaoQuery query = new ActivityDaoQuery();
         query.stateList = stateList;
         query.key = key;
         query.sponsorId = sponsorId;
-
-        try {
-            query.appId = getAppId(appKey);
-        } catch (AppException e) {
-            return null;
-        }
+        query.appId = appId;
         query.start = (page - 1) * pageSize;
         query.count = pageSize;
-        query.sort = "start_time desc";
+        query.sortList = Arrays.asList(new String[]{"actual_start_time desc"});
         return luckyActivityMapper.list(query);
     }
 
     @Override
-    public long countActivity(String appKey, Long sponsorId, List<Integer> stateList, String key) {
+    public List<LuckyActivity> getActivityList(Long appId, Long sponsorId, List<Integer> stateList, List<Long> excludeActivityIds, String key, int page, int pageSize) {
+
+
         ActivityDaoQuery query = new ActivityDaoQuery();
         query.stateList = stateList;
         query.key = key;
         query.sponsorId = sponsorId;
-        try {
-            query.appId = getAppId(appKey);
-        } catch (AppException e) {
-            return 0L;
-        }
+        query.excludeActivityIds = excludeActivityIds;
+        query.appId = appId;
+        query.start = (page - 1) * pageSize;
+        query.count = pageSize;
+        query.sortList = Arrays.asList(new String[]{"actual_start_time desc"});
+        return luckyActivityMapper.list(query);
+    }
+
+    @Override
+    public long countActivity(Long appId, Long sponsorId, List<Integer> stateList, String key) {
+        ActivityDaoQuery query = new ActivityDaoQuery();
+        query.stateList = stateList;
+        query.key = key;
+        query.sponsorId = sponsorId;
+        query.appId = appId;
+
+        return luckyActivityMapper.count(query);
+    }
+
+    @Override
+    public long countActivity(Long appId, Long sponsorId, List<Integer> stateList, String key, List<Long> excludeActivityIds) {
+        ActivityDaoQuery query = new ActivityDaoQuery();
+        query.stateList = stateList;
+        query.key = key;
+        query.sponsorId = sponsorId;
+        query.appId = appId;
+        query.excludeActivityIds = excludeActivityIds;
+
         return luckyActivityMapper.count(query);
     }
 
@@ -138,7 +194,7 @@
 
         //妫�鏌ユ椿鍔ㄧ姸鎬�
         if (activity.getState() != LuckyActivity.STATE_NOT_PUBLISH) {
-            throw new LuckyActivityException(1, "娲诲姩宸插彂甯�");
+            throw new LuckyActivityException(1, "娲诲姩鏈浜庡鏍告垚鍔熺姸鎬�");
         }
         //妫�鏌ュ紑濂栦俊鎭�
         LuckyActivityOpenInfo openInfo = luckyActivityOpenInfoManager.getOpenInfo(activity.getId());
@@ -165,9 +221,21 @@
     public void publishActivity(Long activityId) throws LuckyActivityException {
         LuckyActivity activity = luckyActivityMapper.selectByPrimaryKeyForUpdate(activityId);
         checkActivityForPublish(activity);
+        BigDecimal money = luckyActivityAwardManager.computeAwardsMoney(activityId);
 
-
+        if (money.compareTo(new BigDecimal(0)) > 0) {
+            try {
+                luckySponsorMoneyService.publishActivity(activity.getSponsorId(), activityId, money);
+            } catch (LuckySponsorException e) {
+                throw new LuckyActivityException(e.getCode(), e.getMsg());
+            } catch (LuckySponsorMoneyRecordException e) {
+                throw new LuckyActivityException(e.getCode(), e.getMsg());
+            } catch (ParamsException e) {
+                throw new LuckyActivityException(e.getCode(), e.getMsg());
+            }
+        }
         luckyActivityManager.setState(activityId, LuckyActivity.STATE_NOT_STARTED, "宸插彂甯�");
+
 
         //鍔犲叆浠e彂娑堟伅鍒楄〃
         try {
@@ -175,6 +243,32 @@
         } catch (LuckyMQException e) {
             throw new LuckyActivityException(10, "娑堟伅鎶曢�掑け璐�");
         }
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void publishActivity(Long activityId, Date startTime, Date finishTime) throws LuckyActivityException {
+        //璁剧疆寮�濮嬫椂闂翠笌缁撴潫鏃堕棿
+        LuckyActivity activity = new LuckyActivity();
+        activity.setId(activityId);
+        activity.setPreStartTime(startTime);
+        activity.setPreFinishTime(finishTime);
+        activity.setUpdateTime(new Date());
+        luckyActivityManager.updateSelectiveByPrimaryKey(activity);
+        //璁剧疆寮�濂栨椂闂�
+        LuckyActivityOpenInfo openInfo = luckyActivityOpenInfoManager.getOpenInfo(activityId);
+        if (openInfo != null && openInfo.getPreOpenTime() == null) {
+            LuckyActivityOpenInfo updateOpenInfo = new LuckyActivityOpenInfo();
+            updateOpenInfo.setId(openInfo.getId());
+            //缁撴潫鍚�5鍒嗛挓寮�濂�
+            updateOpenInfo.setPreOpenTime(new Date(finishTime.getTime() + 1000 * 60 * 5));
+            try {
+                luckyActivityOpenInfoManager.updateOpenInfo(updateOpenInfo, activityId);
+            } catch (LuckyActivityOpenInfoException e) {
+            }
+        }
+
+        publishActivity(activityId);
     }
 
     @Transactional(rollbackFor = Exception.class)
@@ -258,27 +352,23 @@
     }
 
     @Override
+    public LuckyActivity getActivity(Long id) {
+        return luckyActivityManager.selectByPrimaryKey(id);
+    }
+
+    @Override
     public LuckyActivity getActivityDetail(Long id) {
-        LuckyActivity activity = luckyActivityMapper.selectByPrimaryKey(id);
-        if (activity == null) {
-            return null;
+        return luckyActivityManager.getActivityDetail(id);
+    }
+
+    @Override
+    public List<LuckyActivity> getActivityDetail(List<Long> ids) {
+        List<LuckyActivity> activityList = new ArrayList<>();
+        for (Long id : ids) {
+            LuckyActivity luckyActivity = luckyActivityManager.getActivityDetail(id);
+            activityList.add(luckyActivity);
         }
-        //鍔犺浇寮�濂栦俊鎭�
-        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;
+        return activityList;
     }
 
     @Override
@@ -291,7 +381,42 @@
         }
 
         activity.setUpdateTime(new Date());
-        luckyActivityMapper.updateByPrimaryKeySelective(activity);
+        luckyActivityManager.updateSelectiveByPrimaryKey(activity);
+    }
+
+    @Override
+    public List<LuckyActivity> getRecommendActivity(Long appId, String uid, int page, int pageSize) {
+        ActivityDaoQuery query = new ActivityDaoQuery();
+        query.appId = appId;
+        query.start = (page - 1) * pageSize;
+        query.count = pageSize;
+        query.sortList = Arrays.asList(new String[]{"actual_start_time desc"});
+
+        query.stateList = Arrays.asList(new Integer[]{
+                LuckyActivity.STATE_STARTED,
+                LuckyActivity.STATE_FINISH,
+                LuckyActivity.STATE_PRE_OPENED,
+                LuckyActivity.STATE_OPENED,
+        });
+
+        List<LuckyActivity> list = luckyActivityMapper.list(query);
+        return list;
+    }
+
+    @Override
+    public Long getRecommendActivityCount(Long appId, String uid) {
+        ActivityDaoQuery query = new ActivityDaoQuery();
+        query.appId = appId;
+
+        query.stateList = Arrays.asList(new Integer[]{
+                LuckyActivity.STATE_STARTED,
+                LuckyActivity.STATE_FINISH,
+                LuckyActivity.STATE_PRE_OPENED,
+                LuckyActivity.STATE_OPENED,
+        });
+
+
+        return luckyActivityMapper.count(query);
     }
 
 

--
Gitblit v1.8.0