package com.yeshi.fanli.service.impl.user.integral;
|
|
import java.util.Date;
|
import java.util.List;
|
|
import javax.annotation.Resource;
|
|
import org.springframework.stereotype.Service;
|
|
import com.yeshi.fanli.dao.mybatis.integral.IntegralExchangeRecordMapper;
|
import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
|
import com.yeshi.fanli.entity.integral.IntegralExchange;
|
import com.yeshi.fanli.entity.integral.IntegralExchange.ExchangeTypeEnum;
|
import com.yeshi.fanli.entity.integral.IntegralExchangeRecord;
|
import com.yeshi.fanli.log.LogHelper;
|
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
|
import com.yeshi.fanli.service.inter.user.integral.CodePublishRecordService;
|
import com.yeshi.fanli.service.inter.user.integral.IntegralExchangeRecordService;
|
import com.yeshi.fanli.service.inter.user.integral.IntegralExchangeService;
|
import com.yeshi.fanli.util.StringUtil;
|
|
@Service
|
public class IntegralExchangeRecordServiceImpl implements IntegralExchangeRecordService {
|
|
@Resource
|
private IntegralExchangeRecordMapper integralExchangeRecordMapper;
|
|
@Resource
|
private IntegralExchangeService integralExchangeService;
|
|
@Resource
|
private UserInfoExtraService userInfoExtraService;
|
|
@Resource
|
private CodePublishRecordService codePublishRecordService;
|
|
|
|
@Override
|
public List<IntegralExchange> listExchange(long start, int count, Long uid){
|
List<IntegralExchange> listValid = integralExchangeService.listValidCache(start, count);
|
if (listValid == null || listValid.size() == 0) {
|
return listValid;
|
}
|
|
boolean hasCode = false;
|
try {
|
UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
|
if (userInfoExtra != null && !StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode())) {
|
hasCode = true;
|
}
|
} catch (Exception e) {
|
LogHelper.errorDetailInfo(e);
|
}
|
|
for(int i = 0; i < listValid.size(); i++) {
|
IntegralExchange exchange = listValid.get(i);
|
|
ExchangeTypeEnum type = exchange.getType();
|
if (type == null) {
|
listValid.remove(i);
|
i --;
|
continue;
|
}
|
|
Long id = exchange.getId();
|
if (type == ExchangeTypeEnum.freeCouponBuy) {
|
// 注:因自购免单券,一个用户只能兑换一次,则当前用户一旦兑换成功,自购免单券兑换入口永久在当前用户金币兑换列表中消失。
|
long num = integralExchangeRecordMapper.countRecordByUid(id, uid, null);
|
if (num >= 1) {
|
listValid.remove(i);
|
i --;
|
continue;
|
}
|
}
|
|
// 邀请码激活卡,兑换项,如果当前用户已经激活了邀请功能,则不需要显示该兑换项。
|
if (type == ExchangeTypeEnum.inviteCodeActivate) {
|
if (hasCode) {
|
listValid.remove(i);
|
i --;
|
continue;
|
}
|
|
// 兑换一次之后隐藏
|
long num = integralExchangeRecordMapper.countRecordByUid(id, uid, null);
|
if (num >= 1) {
|
listValid.remove(i);
|
i --;
|
continue;
|
}
|
}
|
|
// 邀请码发布卡,兑换项,如果当前用户未激活邀请功能,则不需要显示该兑换项。
|
if (type == ExchangeTypeEnum.inviteCodePublish) {
|
if (!hasCode) {
|
listValid.remove(i);
|
i --;
|
continue;
|
}
|
|
if(codePublishRecordService.countValidRecord(uid) > 0) {
|
exchange.setBtnName("去查看");
|
exchange.setNeedJump(true);
|
}
|
}
|
|
String progress = exchange.getProgress();
|
if (StringUtil.isNullOrEmpty(progress))
|
continue;
|
|
// 自购免单券-只能兑换一次
|
if (type == ExchangeTypeEnum.freeCouponBuy) {
|
long num = integralExchangeRecordMapper.countRecordByUid(id, uid, null);
|
if (num >= 1) {
|
listValid.remove(i);
|
i --;
|
continue;
|
}
|
}
|
|
// 今日兑换情况
|
long num = integralExchangeRecordMapper.countRecordByUid(id, uid, 1);
|
Integer upperLimit = exchange.getUpperLimit();
|
if (upperLimit == null) {
|
progress = progress.replace("{已兑换}", num + "").replace("/{上限数}", "");
|
} else {
|
progress = progress.replace("{已兑换}", num + "").replace("{上限数}", exchange.getUpperLimit() + "");
|
}
|
exchange.setProgress(progress);
|
}
|
return listValid;
|
}
|
|
@Override
|
public long countRecordByUid(long exchangeid, Long uid, Integer today){
|
return integralExchangeRecordMapper.countRecordByUid(exchangeid, uid, today);
|
}
|
|
@Override
|
public void addExchangeRecord(long exchangeid, Long uid){
|
IntegralExchangeRecord record = new IntegralExchangeRecord();
|
record.setExchangeId(exchangeid);
|
record.setUid(uid);
|
record.setCreateTime(new Date());
|
integralExchangeRecordMapper.insertSelective(record);
|
}
|
}
|