package com.yeshi.fanli.service.impl.user.invite;
|
|
import java.math.BigDecimal;
|
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.user.UserInviteValidNumMapper;
|
import com.yeshi.fanli.dao.mybatis.user.UserInviteValidRecordMapper;
|
import com.yeshi.fanli.entity.bus.user.ThreeSale;
|
import com.yeshi.fanli.entity.bus.user.UserInviteValidNum;
|
import com.yeshi.fanli.entity.bus.user.UserInviteValidRecord;
|
import com.yeshi.fanli.log.LogHelper;
|
import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
|
import com.yeshi.fanli.service.inter.user.invite.UserInviteValidNumService;
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.util.StringUtil;
|
|
@Service
|
public class UserInviteValidNumServiceImpl implements UserInviteValidNumService {
|
@Resource
|
private UserInviteValidNumMapper userInviteValidNumMapper;
|
|
@Resource
|
private UserInviteValidRecordMapper userInviteValidRecordMapper;
|
|
@Resource
|
private ThreeSaleSerivce threeSaleSerivce;
|
|
|
@Override
|
public UserInviteValidNum selectByPrimaryKey(Long id) {
|
return userInviteValidNumMapper.selectByPrimaryKey(id);
|
}
|
|
|
/**
|
* 直接粉丝 +1
|
* @param uid
|
*/
|
@Transactional(rollbackFor = Exception.class)
|
private void addNumFirst(Long uid) {
|
UserInviteValidNum inviteValid = userInviteValidNumMapper.selectForUpdate(uid);
|
if (inviteValid != null) {
|
userInviteValidNumMapper.addNumFirst(uid, 1);
|
} else {
|
inviteValid = new UserInviteValidNum();
|
inviteValid.setId(uid);
|
inviteValid.setNumFirst(1);
|
inviteValid.setNumSecond(0);
|
inviteValid.setUpdateTime(new Date());
|
userInviteValidNumMapper.insertSelective(inviteValid);
|
}
|
}
|
|
/**
|
* 间接粉丝 +1
|
* @param uid
|
*/
|
@Transactional(rollbackFor = Exception.class)
|
private void addNumSecond(Long uid) {
|
UserInviteValidNum inviteValid = userInviteValidNumMapper.selectForUpdate(uid);
|
if (inviteValid != null) {
|
userInviteValidNumMapper.addNumSecond(uid, 1);
|
} else {
|
inviteValid = new UserInviteValidNum();
|
inviteValid.setId(uid);
|
inviteValid.setNumFirst(0);
|
inviteValid.setNumSecond(1);
|
inviteValid.setUpdateTime(new Date());
|
userInviteValidNumMapper.insertSelective(inviteValid);
|
}
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void addValidTeamNum(Long uid, BigDecimal payment, Date payDate) {
|
if (uid == null || payment == null || payDate == null) {
|
return;
|
}
|
|
try {
|
// 付款金额小于1
|
if (payment.compareTo(Constant.VIP_ORDER_PAY) < 0) {
|
return;
|
}
|
|
// 是否上级
|
ThreeSale threeSale = threeSaleSerivce.getMyBoss(uid);
|
if (threeSale == null) {
|
return;
|
}
|
|
// 队员关系有效时间
|
Long succeedTime = threeSale.getSucceedTime();
|
if (succeedTime == null) {
|
succeedTime = threeSale.getCreateTime();
|
}
|
|
// 下单时间在生产关系之前
|
if (payDate.getTime() <= succeedTime.longValue()) {
|
return;
|
}
|
|
Long bossId = threeSale.getBoss().getId();
|
String uniqueKey = StringUtil.Md5(bossId + "#" + uid + "#" + UserInviteValidRecord.TYPE_ONE);
|
UserInviteValidRecord record = userInviteValidRecordMapper.selectByUniqueKey(uniqueKey);
|
if (record == null) {
|
record = new UserInviteValidRecord();
|
record.setUid(bossId);
|
record.setWorkerId(uid);
|
record.setType(UserInviteValidRecord.TYPE_ONE);
|
record.setUniqueKey(uniqueKey);
|
record.setCreateTime(new Date());
|
userInviteValidRecordMapper.insertSelective(record);
|
|
// 更新上级的直接粉丝数量
|
addNumFirst(bossId);
|
}
|
|
// 是否上上级
|
ThreeSale threeSaleSuper = threeSaleSerivce.getMyBoss(bossId);
|
if (threeSaleSuper == null) {
|
return;
|
}
|
|
// 间接关系
|
Long bossIdSuper = threeSaleSuper.getBoss().getId();
|
String uniqueKeySuper = StringUtil.Md5(bossIdSuper + "#" + uid + "#" + UserInviteValidRecord.TYPE_TWO);
|
UserInviteValidRecord recordSuper = userInviteValidRecordMapper.selectByUniqueKey(uniqueKeySuper);
|
if (recordSuper == null) {
|
recordSuper = new UserInviteValidRecord();
|
recordSuper.setUid(bossIdSuper);
|
recordSuper.setWorkerId(uid);
|
recordSuper.setType(UserInviteValidRecord.TYPE_TWO);
|
recordSuper.setUniqueKey(uniqueKeySuper);
|
recordSuper.setCreateTime(new Date());
|
userInviteValidRecordMapper.insertSelective(recordSuper);
|
|
// 更新上上级的间接粉丝数量
|
addNumSecond(bossIdSuper);
|
}
|
} catch (Exception e) {
|
LogHelper.error(e);
|
}
|
}
|
|
}
|