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 | 257 +++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 195 insertions(+), 62 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 125794f..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); } @@ -121,15 +177,15 @@ */ private void checkActivityForPublish(LuckyActivity activity) throws LuckyActivityException { notNull(activity); - if (activity.getStartTime() == null) { + if (activity.getPreStartTime() == null) { throw new LuckyActivityException(1, "娲诲姩寮�濮嬫椂闂存湭璁剧疆"); } - if (activity.getStartTime().getTime() < System.currentTimeMillis()) { + if (activity.getPreStartTime().getTime() < System.currentTimeMillis()) { throw new LuckyActivityException(1, "娲诲姩寮�濮嬫椂闂翠笉鑳藉皬浜庡綋鍓嶆椂闂�"); } - if (activity.getFinishTime() != null && activity.getStartTime().getTime() >= activity.getFinishTime().getTime()) { + if (activity.getPreFinishTime() != null && activity.getPreStartTime().getTime() >= activity.getPreFinishTime().getTime()) { throw new LuckyActivityException(1, "娲诲姩寮�濮嬬粨鏉熸椂闂翠笉鑳藉皬浜庡紑濮嬫椂闂�"); } @@ -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 { @@ -179,35 +247,57 @@ @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) + @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); - - //灏濊瘯鍒犻櫎娑堟伅 try { - LuckyMQ mq = LuckyMQFactory.createStartUpActivity(activity); - luckyMQService.removeUnSendMsg(mq.getTaskId()); + luckyActivityManager.startUpActivity(activityId); } catch (LuckyMQException e) { - e.printStackTrace(); + throw new LuckyActivityException(e.getCode(), e.getMsg()); } - } @Transactional(rollbackFor = Exception.class) @Override public void verifyActivity(Long activityId, boolean pass, String remarks) throws LuckyActivityException { LuckyActivity activity = luckyActivityMapper.selectByPrimaryKeyForUpdate(activityId); + notNull(activity); if (activity.getState() != LuckyActivity.STATE_WAITING_VERIFY) { throw new LuckyActivityException(2, "娲诲姩灏氭湭澶勪簬瀹℃牳鐘舵��"); } //瀹℃牳娲诲姩 - //瀹℃牳閫氳繃 if (pass) { + //瀹℃牳閫氳繃 luckyActivityManager.setState(activityId, LuckyActivity.STATE_NOT_PUBLISH, remarks); } else { //瀹℃牳鏈�氳繃 @@ -216,18 +306,15 @@ } - @Transactional(rollbackFor = Exception.class) @Override public void forceFinishActivity(Long activityId, String remarks) throws LuckyActivityException { - LuckyActivity activity = luckyActivityMapper.selectByPrimaryKeyForUpdate(activityId); + LuckyActivity activity = luckyActivityMapper.selectByPrimaryKey(activityId); notNull(activity); - - if (activity.getState() != LuckyActivity.STATE_STARTED) { - throw new LuckyActivityException(1, "娲诲姩鏈浜庡凡寮�濮嬬姸鎬�"); + try { + luckyActivityManager.finishActivity(activityId, true, remarks); + } catch (LuckyMQException e) { + throw new LuckyActivityException(e.getCode(), e.getMsg()); } - - //璁剧疆娲诲姩澶勪簬寮哄埗缁撴潫鐘舵�� - luckyActivityManager.setState(activityId, LuckyActivity.STATE_FOUCE_FINISH, remarks); } @Transactional(rollbackFor = Exception.class) @@ -254,27 +341,34 @@ } @Override + public void cancelVerify(Long activityId) throws LuckyActivityException { + LuckyActivity activity = luckyActivityMapper.selectByPrimaryKeyForUpdate(activityId); + notNull(activity); + if (activity.getState() != LuckyActivity.STATE_WAITING_VERIFY) { + throw new LuckyActivityException(1, "娲诲姩鏈浜庣瓑寰呭鏍哥姸鎬�"); + } + + luckyActivityManager.setState(activityId, LuckyActivity.STATE_NOT_SUBMIT_VERIFY, "涓诲姩鍙栨秷瀹℃牳"); + } + + @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 @@ -282,8 +376,47 @@ if (activity.getState() != null) { throw new LuckyActivityException(1, "涓嶈兘鏇存敼娲诲姩鐘舵��"); } + if (!luckyActivityManager.canUpdate(activity.getId())) { + throw new LuckyActivityException(1, "褰撳墠娲诲姩涓嶈兘淇敼"); + } + 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