From 74196bcc835d9b76cdd1bc3d85b0dfbe0191fc00 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期四, 31 十二月 2020 19:23:43 +0800 Subject: [PATCH] 活动信息缓存 --- service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityJoinAssistServiceImpl.java | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 104 insertions(+), 14 deletions(-) diff --git a/service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityJoinAssistServiceImpl.java b/service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityJoinAssistServiceImpl.java index 5210310..02d11c8 100644 --- a/service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityJoinAssistServiceImpl.java +++ b/service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityJoinAssistServiceImpl.java @@ -1,29 +1,39 @@ package com.ks.lucky.service.impl.remote; +import com.ks.lib.common.exception.ParamsException; +import com.ks.lucky.exception.LuckyActivityException; import com.ks.lucky.exception.LuckyActivityJoinAssistException; import com.ks.lucky.mapper.LuckyActivityJoinAssistMapper; import com.ks.lucky.mapper.LuckyActivityJoinRecordMapper; -import com.ks.lucky.pojo.DO.LuckyActivityJoinAssist; -import com.ks.lucky.pojo.DO.LuckyActivityJoinRecord; +import com.ks.lucky.mapper.LuckyActivityMapper; +import com.ks.lucky.pojo.DO.*; +import com.ks.lucky.pojo.DTO.ActivityAssistFriend; +import com.ks.lucky.pojo.DTO.ActivityFriendAssistInfo; +import com.ks.lucky.pojo.DTO.mq.ActivityAssistMsgDTO; import com.ks.lucky.query.ActivityJoinAssistQuery; import com.ks.lucky.remote.service.LuckyActivityJoinAssistService; -import com.ks.lucky.service.impl.AppManager; import com.ks.lucky.service.impl.LuckyActivityJoinManager; +import com.ks.lucky.service.impl.LuckyActivityUserWeightRecordManager; +import com.ks.lucky.util.factory.LuckyActivityUserWeightRecordFactory; +import com.ks.lucky.util.mq.CMQManager; import org.apache.dubbo.config.annotation.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; import java.util.Date; import java.util.List; -@Service(version = "1.0") +@Service(version = "1.0.0") public class LuckyActivityJoinAssistServiceImpl implements LuckyActivityJoinAssistService { @Resource private LuckyActivityJoinAssistMapper luckyActivityJoinAssistMapper; @Resource - private AppManager appManager; + private LuckyActivityUserWeightRecordManager luckyActivityUserWeightRecordManager; @Resource private LuckyActivityJoinRecordMapper luckyActivityJoinRecordMapper; @@ -31,22 +41,40 @@ @Resource private LuckyActivityJoinManager luckyActivityJoinManager; + @Resource + private LuckyActivityMapper luckyActivityMapper; + @Transactional(rollbackFor = Exception.class) @Override - public void assist(Long activityId, String appKey, String uid, String targetUid) throws LuckyActivityJoinAssistException { - Long appId = appManager.getAppId(appKey); + public void assist(Long activityId, Long appId, String uid, String targetUid, ActivityJoinAssistEvent eventKey, int weight) throws LuckyActivityException, LuckyActivityJoinAssistException { + + if (uid.equalsIgnoreCase(targetUid)) { + throw new LuckyActivityJoinAssistException(1, "涓嶈兘涓鸿嚜宸卞姪鍔�"); + } + + LuckyActivity activity = luckyActivityMapper.selectByPrimaryKey(activityId); + if (activity == null) { + throw new LuckyActivityException(LuckyActivityException.CODE_NOT_EXIST, "娲诲姩涓嶅瓨鍦�"); + } + + if (activity.getState() != LuckyActivity.STATE_STARTED) { + throw new LuckyActivityException(1, "褰撳墠娲诲姩涓嶅彲鍔╁姏"); + } - LuckyActivityJoinRecord record = luckyActivityJoinManager.getRecord(activityId, appId, uid); + LuckyActivityJoinRecord record = luckyActivityJoinManager.getRecord(activityId, appId, targetUid); if (record == null) { throw new LuckyActivityJoinAssistException(1, "鍔╁姏瀵硅薄灏氭湭鍙傚姞娲诲姩"); } + record = luckyActivityJoinRecordMapper.selectByPrimaryKeyForUpdate(record.getId()); + ActivityJoinAssistQuery query = new ActivityJoinAssistQuery(); query.joinId = record.getId(); query.appId = appId; query.uid = uid; + query.eventKey = eventKey; query.start = 0; query.count = 1; List<LuckyActivityJoinAssist> list = luckyActivityJoinAssistMapper.list(query); @@ -60,15 +88,50 @@ assist.setCreateTime(new Date()); assist.setJoinId(record.getId()); assist.setUid(uid); - assist.setWeight(1); + assist.setWeight(weight); + assist.setEventKey(eventKey); + luckyActivityJoinRecordMapper.addWeight(record.getId(), assist.getWeight()); luckyActivityJoinAssistMapper.insertSelective(assist); - luckyActivityJoinRecordMapper.addWeight(record.getId(), assist.getWeight()); + + LuckyActivityUserWeightRecord weightRecord = LuckyActivityUserWeightRecordFactory.createAssist(activityId, appId, uid, eventKey, weight); + try { + luckyActivityUserWeightRecordManager.addRecord(weightRecord); + } catch (ParamsException e) { + throw new LuckyActivityJoinAssistException(1, "娣诲姞璁板綍鍑洪敊"); + } + + //鍔╁姏娑堟伅 + CMQManager.getInstance().publishActivityAssistMsg(new ActivityAssistMsgDTO(activityId, appId, uid, targetUid, true, assist.getCreateTime())); } @Override - public List<LuckyActivityJoinAssist> getAssistRecordList(Long activityId, String appKey, String uid, int page, int pageSize) { - Long appId = appManager.getAppId(appKey); + public boolean isAssisted(@NotNull Long joinId, @NotNull Long appId, @NotEmpty String uid, @NotNull ActivityJoinAssistEvent eventKey) { + ActivityJoinAssistQuery query = new ActivityJoinAssistQuery(); + query.joinId = joinId; + query.appId = appId; + query.uid = uid; + query.eventKey = eventKey; + return luckyActivityJoinAssistMapper.count(query) > 0; + } + + @Override + public LuckyActivityJoinAssist getRecord(@NotNull Long joinId, @NotNull Long appId, @NotEmpty String uid, @NotNull ActivityJoinAssistEvent eventKey) { + ActivityJoinAssistQuery query = new ActivityJoinAssistQuery(); + query.joinId = joinId; + query.appId = appId; + query.uid = uid; + query.eventKey = eventKey; + query.count = 1; + List<LuckyActivityJoinAssist> assistList = luckyActivityJoinAssistMapper.list(query); + if (assistList == null || assistList.size() == 0) { + return null; + } + return assistList.get(0); + } + + @Override + public List<LuckyActivityJoinAssist> getAssistRecordList(Long activityId, Long appId, String uid, int page, int pageSize) { LuckyActivityJoinRecord record = luckyActivityJoinManager.getRecord(activityId, appId, uid); if (record == null) { return null; @@ -85,8 +148,7 @@ } @Override - public long countAssistRecord(Long activityId, String appKey, String uid) { - Long appId = appManager.getAppId(appKey); + public long countAssistRecord(Long activityId, Long appId, String uid) { LuckyActivityJoinRecord record = luckyActivityJoinManager.getRecord(activityId, appId, uid); if (record == null) { return 0L; @@ -99,4 +161,32 @@ return luckyActivityJoinAssistMapper.count(query); } + + @Override + public List<ActivityAssistFriend> getAssistFriendsList(Long appId, String targetUid, int page, int pageSize) { + return luckyActivityJoinAssistMapper.listAssistFriends(appId, targetUid, (page - 1) * pageSize, pageSize); + } + + @Override + public long countAssistFriends(Long appId, String targetUid) { + return luckyActivityJoinAssistMapper.countAssistFriends(appId, targetUid); + } + + @Override + public List<ActivityFriendAssistInfo> getActivityFriendAssistInfoList(Long activityId, Long appId, String uid, int page, int pageSize) { + LuckyActivityJoinRecord record = luckyActivityJoinManager.getRecord(activityId, appId, uid); + if (record == null) { + return null; + } + return luckyActivityJoinAssistMapper.listActivityFriendAssistInfo(record.getId(), (page - 1) * pageSize, pageSize); + } + + @Override + public long countyActivityFriendAssistInfo(Long activityId, Long appId, String uid) { + LuckyActivityJoinRecord record = luckyActivityJoinManager.getRecord(activityId, appId, uid); + if (record == null) { + return 0L; + } + return luckyActivityJoinAssistMapper.countActivityFriendAssistInfo(record.getId()); + } } -- Gitblit v1.8.0