package com.yeshi.fanli.service.impl.user.invite;
|
|
import java.util.Date;
|
|
import javax.annotation.Resource;
|
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import com.yeshi.fanli.dao.mybatis.integral.UserGetIntegralFromOrderRecordMapper;
|
import com.yeshi.fanli.entity.integral.UserGetIntegralFromOrderRecord;
|
import com.yeshi.fanli.exception.integral.UserGetIntegralFromOrderRecordException;
|
import com.yeshi.fanli.manager.util.AtomMethodCallInterface;
|
import com.yeshi.fanli.manager.util.AtomMethodCallManager;
|
import com.yeshi.fanli.service.inter.user.integral.UserGetIntegralFromOrderRecordService;
|
import com.yeshi.fanli.util.StringUtil;
|
|
import redis.clients.jedis.Jedis;
|
import redis.clients.jedis.JedisPool;
|
|
@Service
|
public class UserGetIntegralFromOrderRecordServiceImpl implements UserGetIntegralFromOrderRecordService {
|
|
@Resource
|
private UserGetIntegralFromOrderRecordMapper userGetIntegralFromOrderRecordMapper;
|
|
@Resource
|
private AtomMethodCallManager atomMethodCallManager;
|
|
@Override
|
public long countByEventTypeAndUidAndOrderInfo(int eventType, Long uid, String orderNo, int orderSourceType) {
|
UserGetIntegralFromOrderRecord record = new UserGetIntegralFromOrderRecord();
|
record.setEventType(eventType);
|
record.setOrderNo(orderNo);
|
record.setOrderSourceType(orderSourceType);
|
record.setUid(uid);
|
return userGetIntegralFromOrderRecordMapper.countByRecordInfo(record);
|
}
|
|
@Transactional
|
@Override
|
public void addRecord(UserGetIntegralFromOrderRecord record) throws UserGetIntegralFromOrderRecordException {
|
if (record == null || record.getUid() == null || record.getEventType() == null
|
|| StringUtil.isNullOrEmpty(record.getOrderNo()) || record.getOrderSourceType() == null)
|
throw new UserGetIntegralFromOrderRecordException(1, "信息不完整");
|
|
String key = String.format("rs-%s",
|
StringUtil.Md5(String.format("UserGetIntegralFromOrderRecord-addRecord-%s-%s-%s-%s", record.getUid(),
|
record.getEventType(), record.getOrderNo(), record.getOrderSourceType())));
|
|
atomMethodCallManager.excute(key, new AtomMethodCallInterface() {
|
|
@Override
|
public void excute() {
|
long count = countByEventTypeAndUidAndOrderInfo(record.getEventType(), record.getUid(),
|
record.getOrderNo(), record.getOrderSourceType());
|
if (count > 0)
|
return;
|
if (record.getCreateTime() == null)
|
record.setCreateTime(new Date());
|
userGetIntegralFromOrderRecordMapper.insertSelective(record);
|
}
|
});
|
}
|
|
}
|