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.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.query.ActivityJoinAssistQuery;
|
import com.ks.lucky.query.ActivityJoinRecordQuery;
|
import com.ks.lucky.remote.service.LuckyActivityJoinAssistService;
|
import com.ks.lucky.service.impl.LuckyActivityJoinManager;
|
import com.ks.lucky.service.impl.LuckyActivityUserWeightRecordManager;
|
import com.ks.lucky.util.factory.LuckyActivityUserWeightRecordFactory;
|
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.0")
|
public class LuckyActivityJoinAssistServiceImpl implements LuckyActivityJoinAssistService {
|
|
@Resource
|
private LuckyActivityJoinAssistMapper luckyActivityJoinAssistMapper;
|
|
@Resource
|
private LuckyActivityUserWeightRecordManager luckyActivityUserWeightRecordManager;
|
|
@Resource
|
private LuckyActivityJoinRecordMapper luckyActivityJoinRecordMapper;
|
|
@Resource
|
private LuckyActivityJoinManager luckyActivityJoinManager;
|
|
@Resource
|
private LuckyActivityMapper luckyActivityMapper;
|
|
@Transactional(rollbackFor = Exception.class)
|
@Validated
|
@Override
|
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, 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);
|
if (list != null && list.size() > 0) {
|
throw new LuckyActivityJoinAssistException(1, "已经助力过");
|
}
|
|
|
LuckyActivityJoinAssist assist = new LuckyActivityJoinAssist();
|
assist.setAppId(appId);
|
assist.setCreateTime(new Date());
|
assist.setJoinId(record.getId());
|
assist.setUid(uid);
|
assist.setWeight(weight);
|
assist.setEventKey(eventKey);
|
luckyActivityJoinRecordMapper.addWeight(record.getId(), assist.getWeight());
|
luckyActivityJoinAssistMapper.insertSelective(assist);
|
|
|
LuckyActivityUserWeightRecord weightRecord = LuckyActivityUserWeightRecordFactory.createAssist(activityId, appId, uid, eventKey, weight);
|
try {
|
luckyActivityUserWeightRecordManager.addRecord(weightRecord);
|
} catch (ParamsException e) {
|
throw new LuckyActivityJoinAssistException(1, "添加记录出错");
|
}
|
}
|
|
@Override
|
public boolean isAssisted(@NotNull Long joinId, @NotEmpty 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 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;
|
}
|
|
ActivityJoinAssistQuery query = new ActivityJoinAssistQuery();
|
query.joinId = record.getId();
|
query.appId = appId;
|
query.uid = uid;
|
query.start = (page - 1) * pageSize;
|
query.count = pageSize;
|
|
return luckyActivityJoinAssistMapper.list(query);
|
}
|
|
@Override
|
public long countAssistRecord(Long activityId, Long appId, String uid) {
|
LuckyActivityJoinRecord record = luckyActivityJoinManager.getRecord(activityId, appId, uid);
|
if (record == null) {
|
return 0L;
|
}
|
|
ActivityJoinAssistQuery query = new ActivityJoinAssistQuery();
|
query.joinId = record.getId();
|
query.appId = appId;
|
query.uid = uid;
|
|
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());
|
}
|
}
|