package com.ks.lucky.service.impl.remote;
|
|
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.LuckyActivity;
|
import com.ks.lucky.pojo.DO.LuckyActivityJoinAssist;
|
import com.ks.lucky.pojo.DO.LuckyActivityJoinRecord;
|
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 org.apache.dubbo.config.annotation.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.annotation.Resource;
|
import java.util.Date;
|
import java.util.List;
|
|
@Service(version = "1.0")
|
public class LuckyActivityJoinAssistServiceImpl implements LuckyActivityJoinAssistService {
|
|
@Resource
|
private LuckyActivityJoinAssistMapper luckyActivityJoinAssistMapper;
|
|
@Resource
|
private AppManager appManager;
|
|
@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 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, "当前活动不可助力");
|
}
|
|
|
Long appId = appManager.getAppId(appKey);
|
|
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.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(1);
|
luckyActivityJoinRecordMapper.addWeight(record.getId(), assist.getWeight());
|
luckyActivityJoinAssistMapper.insertSelective(assist);
|
}
|
|
@Override
|
public List<LuckyActivityJoinAssist> getAssistRecordList(Long activityId, String appKey, String uid, int page, int pageSize) {
|
Long appId = appManager.getAppId(appKey);
|
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, String appKey, String uid) {
|
Long appId = appManager.getAppId(appKey);
|
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);
|
}
|
}
|