| | |
| | |
|
| | | import java.math.BigDecimal;
|
| | | import java.util.Date;
|
| | | import java.util.List;
|
| | |
|
| | | import javax.annotation.Resource;
|
| | |
|
| | | import org.springframework.context.annotation.Lazy;
|
| | | 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.UserInfo;
|
| | | 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.order.CommonOrderService;
|
| | | import com.yeshi.fanli.service.inter.user.UserInfoService;
|
| | | import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
|
| | | import com.yeshi.fanli.service.inter.user.invite.UserInviteValidNumService;
|
| | | import com.yeshi.fanli.util.Constant;
|
| | |
| | | @Resource
|
| | | private UserInviteValidRecordMapper userInviteValidRecordMapper;
|
| | |
|
| | | @Lazy
|
| | | @Resource
|
| | | private ThreeSaleSerivce threeSaleSerivce;
|
| | | |
| | | @Lazy
|
| | | @Resource
|
| | | private UserInfoService userInfoService;
|
| | | |
| | | @Lazy
|
| | | @Resource
|
| | | private CommonOrderService commonOrderService;
|
| | | |
| | |
|
| | |
|
| | | @Override
|
| | |
| | | * 直接粉丝 +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
|
| | | */
|
| | | @Override
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | public void reduceValidNumFirst(Long uid, Long workerId) {
|
| | | UserInviteValidRecord record = userInviteValidRecordMapper.getByUidAndWorkerId(uid, workerId,
|
| | | UserInviteValidRecord.TYPE_ONE);
|
| | | if (record == null) {
|
| | | return;
|
| | | }
|
| | | |
| | | UserInviteValidNum inviteValid = userInviteValidNumMapper.selectForUpdate(uid);
|
| | | if (inviteValid != null) {
|
| | | int num = 0;
|
| | | if (inviteValid.getNumFirst() > 0) {
|
| | | num = inviteValid.getNumFirst() - 1;
|
| | | }
|
| | | inviteValid.setId(uid);
|
| | | inviteValid.setNumFirst(num);
|
| | | inviteValid.setUpdateTime(new Date());
|
| | | userInviteValidNumMapper.updateByPrimaryKeySelective(inviteValid);
|
| | | }
|
| | | |
| | | // 删除有效记录
|
| | | userInviteValidRecordMapper.deleteByPrimaryKey(record.getId());
|
| | | }
|
| | | |
| | | /**
|
| | | * 直接粉丝 -1
|
| | | * @param uid
|
| | | */
|
| | | @Override
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | public void reduceValidNumSecond(Long uid, Long workerId) {
|
| | | UserInviteValidRecord record = userInviteValidRecordMapper.getByUidAndWorkerId(uid, workerId,
|
| | | UserInviteValidRecord.TYPE_TWO);
|
| | | if (record == null) {
|
| | | return;
|
| | | }
|
| | | |
| | | UserInviteValidNum inviteValid = userInviteValidNumMapper.selectForUpdate(uid);
|
| | | if (inviteValid != null) {
|
| | | int num = 0;
|
| | | if (inviteValid.getNumFirst() > 0) {
|
| | | num = inviteValid.getNumSecond() - 1;
|
| | | }
|
| | | inviteValid.setId(uid);
|
| | | inviteValid.setNumSecond(num);
|
| | | inviteValid.setUpdateTime(new Date());
|
| | | userInviteValidNumMapper.updateByPrimaryKeySelective(inviteValid);
|
| | | }
|
| | | |
| | | // 删除有效记录
|
| | | userInviteValidRecordMapper.deleteByPrimaryKey(record.getId());
|
| | | }
|
| | | |
| | | |
| | | |
| | |
|
| | | /**
|
| | | * 间接粉丝 +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());
|
| | |
| | | }
|
| | |
|
| | | @Override
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | public void addValidTeamNum(Long uid, BigDecimal payment, Date payDate) {
|
| | | if (uid == null || payment == null || payDate == null) {
|
| | | return;
|
| | |
| | | }
|
| | |
|
| | | Long bossId = threeSale.getBoss().getId();
|
| | | String uniqueKey = StringUtil.Md5(bossId + "#" + uid + "#" + UserInviteValidRecord.TYPE_ONE);
|
| | | String uniqueKey = StringUtil.Md5(uid + "#" + UserInviteValidRecord.TYPE_ONE);
|
| | | UserInviteValidRecord record = userInviteValidRecordMapper.selectByUniqueKey(uniqueKey);
|
| | | if (record == null) {
|
| | | record = new UserInviteValidRecord();
|
| | |
| | | if (threeSaleSuper == null) {
|
| | | return;
|
| | | }
|
| | | |
| | | // 间接关系
|
| | | Long bossIdSuper = threeSaleSuper.getBoss().getId();
|
| | | String uniqueKeySuper = StringUtil.Md5(bossIdSuper + "#" + bossId + "#" + UserInviteValidRecord.TYPE_TWO);
|
| | | String uniqueKeySuper = StringUtil.Md5(uid + "#" + UserInviteValidRecord.TYPE_TWO);
|
| | | UserInviteValidRecord recordSuper = userInviteValidRecordMapper.selectByUniqueKey(uniqueKeySuper);
|
| | | if (recordSuper == null) {
|
| | | recordSuper = new UserInviteValidRecord();
|
| | | recordSuper.setUid(bossIdSuper);
|
| | | recordSuper.setWorkerId(bossId);
|
| | | recordSuper.setWorkerId(uid);
|
| | | recordSuper.setType(UserInviteValidRecord.TYPE_TWO);
|
| | | recordSuper.setUniqueKey(uniqueKeySuper);
|
| | | recordSuper.setCreateTime(new Date());
|
| | |
| | | }
|
| | |
|
| | |
|
| | | @Override
|
| | | public void syncInfoAgain(Long workerId) {
|
| | | // 更新上级
|
| | | ThreeSale threeSale = threeSaleSerivce.getByWorkerId(workerId);
|
| | | if (threeSale == null) {
|
| | | return;
|
| | | }
|
| | | |
| | | Long uid = threeSale.getBoss().getId();
|
| | | UserInfo userInfo = userInfoService.selectByPKey(uid);
|
| | | if (userInfo == null || userInfo.getState() != UserInfo.STATE_NORMAL) {
|
| | | return;
|
| | | }
|
| | | |
| | | int countTeam1 = 0;
|
| | | List<ThreeSale> listFirstTeam = threeSaleSerivce.listFirstTeam(0, Integer.MAX_VALUE, uid);
|
| | | if (listFirstTeam != null && listFirstTeam.size() > 0) {
|
| | | for (ThreeSale firstTeam: listFirstTeam) {
|
| | | if (firstTeam.getWorker() == null || firstTeam.getWorker().getId() == null) {
|
| | | continue;
|
| | | }
|
| | | Long wid = firstTeam.getWorker().getId();
|
| | | String uniqueKey = StringUtil.Md5(wid + "#" + UserInviteValidRecord.TYPE_ONE);
|
| | | UserInviteValidRecord record = userInviteValidRecordMapper.selectByUniqueKey(uniqueKey);
|
| | | if (record != null) {
|
| | | countTeam1 ++;
|
| | | } else {
|
| | | long countValid = commonOrderService.countOrderByUidAndSettled(wid, Constant.VIP_ORDER_PAY);
|
| | | if (countValid > 0) {
|
| | | countTeam1 ++;
|
| | | |
| | | record = new UserInviteValidRecord();
|
| | | record.setUid(uid);
|
| | | record.setWorkerId(wid);
|
| | | record.setType(UserInviteValidRecord.TYPE_ONE);
|
| | | record.setUniqueKey(uniqueKey);
|
| | | record.setCreateTime(new Date());
|
| | | userInviteValidRecordMapper.insertSelective(record);
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | |
| | | UserInviteValidNum inviteValid = userInviteValidNumMapper.selectForUpdate(uid);
|
| | | if (inviteValid != null) {
|
| | | UserInviteValidNum updateObj = new UserInviteValidNum();
|
| | | updateObj.setId(uid);
|
| | | updateObj.setNumFirst(countTeam1);;
|
| | | userInviteValidNumMapper.updateByPrimaryKeySelective(updateObj);
|
| | | } else {
|
| | | inviteValid = new UserInviteValidNum();
|
| | | inviteValid.setId(uid);
|
| | | inviteValid.setNumFirst(countTeam1);
|
| | | inviteValid.setNumSecond(0);
|
| | | inviteValid.setUpdateTime(new Date());
|
| | | userInviteValidNumMapper.insertSelective(inviteValid);
|
| | | }
|
| | | |
| | | // 更新上上级信息
|
| | | ThreeSale superThreeSale = threeSaleSerivce.getByWorkerId(uid);
|
| | | if (superThreeSale == null) {
|
| | | return;
|
| | | }
|
| | | |
| | | Long superUid = superThreeSale.getBoss().getId();
|
| | | UserInfo superUserInfo = userInfoService.selectByPKey(superUid);
|
| | | if (superUserInfo == null || superUserInfo.getState() != UserInfo.STATE_NORMAL) {
|
| | | return;
|
| | | }
|
| | | |
| | | int countTeam2 = 0;
|
| | | List<ThreeSale> listSecondTeam = threeSaleSerivce.listSecondTeam(0, Integer.MAX_VALUE, superUid);
|
| | | if (listSecondTeam != null && listSecondTeam.size() > 0) {
|
| | | for (ThreeSale team: listSecondTeam) {
|
| | | if (team.getWorker() == null || team.getWorker().getId() == null) {
|
| | | continue;
|
| | | }
|
| | | Long wid = team.getWorker().getId();
|
| | | String uniqueKeySuper = StringUtil.Md5(wid + "#" + UserInviteValidRecord.TYPE_TWO);
|
| | | UserInviteValidRecord recordSuper = userInviteValidRecordMapper.selectByUniqueKey(uniqueKeySuper);
|
| | | if (recordSuper != null) {
|
| | | countTeam2 ++;
|
| | | } else {
|
| | | long countValid = commonOrderService.countOrderByUidAndSettled(wid, Constant.VIP_ORDER_PAY);
|
| | | if (countValid > 0) {
|
| | | countTeam2 ++;
|
| | | |
| | | recordSuper = new UserInviteValidRecord();
|
| | | recordSuper.setUid(superUid);
|
| | | recordSuper.setWorkerId(wid);
|
| | | recordSuper.setType(UserInviteValidRecord.TYPE_TWO);
|
| | | recordSuper.setUniqueKey(uniqueKeySuper);
|
| | | recordSuper.setCreateTime(new Date());
|
| | | userInviteValidRecordMapper.insertSelective(recordSuper);
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | |
| | | UserInviteValidNum inviteValid2 = userInviteValidNumMapper.selectForUpdate(superUid);
|
| | | if (inviteValid2 != null) {
|
| | | UserInviteValidNum updateObj = new UserInviteValidNum();
|
| | | updateObj.setId(superUid);
|
| | | updateObj.setNumSecond(countTeam2);
|
| | | userInviteValidNumMapper.updateByPrimaryKeySelective(updateObj);
|
| | | } else {
|
| | | inviteValid2 = new UserInviteValidNum();
|
| | | inviteValid2.setId(superUid);
|
| | | inviteValid2.setNumFirst(0);
|
| | | inviteValid2.setNumSecond(countTeam2);
|
| | | inviteValid2.setUpdateTime(new Date());
|
| | | userInviteValidNumMapper.insertSelective(inviteValid2);
|
| | | }
|
| | | }
|
| | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | }
|