| | |
| | | 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; |
| | |
| | | @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); |
| | |
| | | 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, targetUid, 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(),eventKey)); |
| | | } |
| | | |
| | | @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(Long joinId, Long activityId, @NotNull Long appId, @NotEmpty String uid, @NotNull ActivityJoinAssistEvent eventKey) { |
| | | if (joinId != null) { |
| | | 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); |
| | | } else { |
| | | ActivityJoinAssistQuery query = new ActivityJoinAssistQuery(); |
| | | query.appId = appId; |
| | | query.uid = uid; |
| | | query.eventKey = eventKey; |
| | | query.count = 1; |
| | | List<LuckyActivityJoinAssist> assistList = luckyActivityJoinAssistMapper.listByActivityId(query, activityId); |
| | | 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; |
| | |
| | | } |
| | | |
| | | @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; |
| | |
| | | |
| | | 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()); |
| | | } |
| | | } |