Commit 77206465 authored by m1991's avatar m1991

Merge remote-tracking branch 'origin/master'

parents 1132c048 016f41b5
......@@ -214,4 +214,18 @@ public interface UsersMapper extends BaseMapper<User> {
* @return
*/
User getuserByBeInvitedCode(String beInvitedCode);
/**
* 获取在团队中处于同一位置的用户集合
* @param beInvitedCode
* @return
*/
List<User> getListUserByBeInvitedCode(String beInvitedCode);
/**
* 通过邀请码获取用户信息
* @param inviteCode
* @return
*/
User getUserByInviteCode(String inviteCode);
}
......@@ -411,4 +411,22 @@
invite_code = #{be_invited_code}
</select>
<select id="getListUserByBeInvitedCode" resultType="cn.wisenergy.model.app.User">
select
<include refid="cols_all"/>
from
<include refid="table"/>
where
be_invited_code = #{be_invited_code}
</select>
<select id="getUserByInviteCode" resultType="cn.wisenergy.model.app.User">
select
<include refid="cols_all"/>
from
<include refid="table"/>
where
invite_code = #{inviteCode}
</select>
</mapper>
......@@ -7,4 +7,11 @@ public interface AerialDeliveryUserService {
* 空投池用户随机分配推荐人邀请码
*/
void aerialDeliveryUserRand();
/**
* 设置邀请码接口
* @param userId 当前用户id
* @param userInvitedId 推荐人用户id
*/
void userSetBeinviteCode(String userId, String userInvitedId);
}
......@@ -8,7 +8,7 @@ import cn.wisenergy.model.app.TeamUserInfo;
import cn.wisenergy.model.app.User;
import cn.wisenergy.service.app.AerialDeliveryUserService;
import lombok.extern.slf4j.Slf4j;
import org.checkerframework.checker.index.qual.LengthOf;
import org.bouncycastle.pqc.crypto.newhope.NHOtherInfoGenerator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -61,10 +61,9 @@ public class AerialDeliveryUserServiceImpl implements AerialDeliveryUserService
List<User> aerialDeliveryUserList = usersMapper.getAerialDeliveryUserBeforOneMonth(before,now);
if (aerialDeliveryUserList.size()>0){
for (User user : aerialDeliveryUserList) {
int userLevel = user.getUserLevel();
Integer id = user.getId();
String userId = user.getUserId();
log.info("当前用户id--------------"+userId+"当前用户等级----------------"+userLevel);
log.info("当前用户id--------------"+userId);
//2、随机获取比当前用户早注册的用户
User randUser = usersMapper.randOneGetUserByUserId(id);
String randUserId = randUser.getUserId();
......@@ -73,8 +72,40 @@ public class AerialDeliveryUserServiceImpl implements AerialDeliveryUserService
//2.2、设置当前用户的推荐人邀请码为 随机用户的inviteCode
user.setBeInvitedCode(inviteCode);
usersMapper.edit(user);
//3、随机用户的直推表数据维护
RecommendUser recommendUserMapperByRandUser = recommendUserMapper.getByUserId(randUser.getUserId());
userSetBeinviteCode(userId,randUserId);
}
}
log.info("--------------------------空投池用户随机分派开始执行完成---------------------------------");
}
@Override
public void userSetBeinviteCode(String userId, String userInvitedId){
//3、上级用户的直推表数据维护
recommendInfoDataPreserve(userId,userInvitedId);
//4、用户的团队表数据维护
Map<String, Integer> teamDataMap = teamUserInfoByAerialDelivery(userInvitedId, userId);
//4.1获取当前团队中最上级的用户对象
User highUser = highUser(userId);
if (null != highUser){
//4.2 最上级用户id
String highUserId = highUser.getUserId();
//4.1整体团队数据维护
teamData(teamDataMap, highUserId);
}
//5、查看当前用户是否要进行升级
userLevelService.userLevelUpgrade(userInvitedId);
}
/**
* 直推数据维护
* @param userId 当前用户id
* @param beInvitedCodeUserId 推荐人id
*/
public void recommendInfoDataPreserve(String userId,String beInvitedCodeUserId){
User byUserId = usersMapper.getByUserId(userId);
int userLevel = byUserId.getUserLevel();
RecommendUser recommendUserMapperByRandUser = recommendUserMapper.getByUserId(beInvitedCodeUserId);
if (userLevel == 0){
//普通用户数量 + 1
Integer normalUserNum = recommendUserMapperByRandUser.getNormalUserNum();
......@@ -116,15 +147,6 @@ public class AerialDeliveryUserServiceImpl implements AerialDeliveryUserService
recommendUserMapperByRandUser.setFarmerNum(partnerNum + 1);
recommendUserMapper.updateById(recommendUserMapperByRandUser);
}
//4、用户的团队表数据维护
teamUserInfoByAerialDelivery(randUserId,userId);
//5、查看当前用户是否要进行升级
userLevelService.userLevelUpgrade(randUser.getUserId());
}
}
log.info("--------------------------空投池用户随机分派开始执行完成---------------------------------");
}
/**
......@@ -132,9 +154,12 @@ public class AerialDeliveryUserServiceImpl implements AerialDeliveryUserService
* @param beInvitedUserId 推荐人userId
* @param userId 当前用户的userId
*/
private void teamUserInfoByAerialDelivery(String beInvitedUserId, String userId) {
public Map<String, Integer> teamUserInfoByAerialDelivery(String beInvitedUserId, String userId) {
TeamUserInfo teamUserInfoByIntvitedUser = teamUserInfoMapper.getByUserId(beInvitedUserId);
TeamUserInfo teamUserInfoByUserId = teamUserInfoMapper.getByUserId(userId);
Map<String, Integer> teamDataMap = new ConcurrentHashMap<String, Integer>();
if (null != teamUserInfoByUserId){
//1、当前用户团队中各等级的用户数量
Integer normalUserNumUser = teamUserInfoByUserId.getNormalUserNum();
Integer seedlingNumUser = teamUserInfoByUserId.getSeedlingNum();
......@@ -155,7 +180,7 @@ public class AerialDeliveryUserServiceImpl implements AerialDeliveryUserService
Integer forestStartNumIntvitedUser = teamUserInfoByIntvitedUser.getForestStartNum();
Integer partnerNumIntvitedUser = teamUserInfoByIntvitedUser.getPartnerNum();
//3、最终团队各个等级的人数 推荐人用户本身的数量 + 当前用户的数量 + 当前用户自身(1)
//3、最终团队各个等级的人数 推荐人用户本身的数量 + 当前用户的数量
Integer resultTeamNormalNum = normalUserNumTeamIntvitedUser + normalUserNumUser;
Integer resultTeamSeedlingNum = seedlingNumIntvitedUser + seedlingNumUser;
Integer resultTeamBronzeTreeNum = bronzeTreeNumIntvitedUser + bronzeTreeNumUser;
......@@ -188,7 +213,6 @@ public class AerialDeliveryUserServiceImpl implements AerialDeliveryUserService
}
}
Map<String, Integer> teamDataMap = new ConcurrentHashMap<String, Integer>();
teamDataMap.put("resultTeamNormalNum",resultTeamNormalNum);
teamDataMap.put("resultTeamSeedlingNum",resultTeamSeedlingNum);
teamDataMap.put("resultTeamBronzeTreeNum",resultTeamBronzeTreeNum);
......@@ -197,23 +221,17 @@ public class AerialDeliveryUserServiceImpl implements AerialDeliveryUserService
teamDataMap.put("resultTeamFarmerNum",resultTeamFarmerNum);
teamDataMap.put("resultTeamForestStartNum",resultTeamForestStartNum);
teamDataMap.put("resultTeamPartnerNum",resultTeamPartnerNum);
//4.1 根据当前用户向上维护数据
upWardDataPreserve(teamDataMap,beInvitedUserId);
//4.2 根据当前用户向下维护数据(包括当前用户自身)
downWardDataPreserve(teamDataMap,userId);
}
return teamDataMap;
/**
* 根据推荐人的id向上进行团队数据维护
* @param teamDataMap 团队表数据
* @param beInvitedUserId 当前用户的推荐人id
*/
private void upWardDataPreserve(Map<String, Integer> teamDataMap, String beInvitedUserId) {
User userById = usersMapper.getByUserId(beInvitedUserId);
TeamUserInfo teamUserInfoMapperByUserId = teamUserInfoMapper.getByUserId(beInvitedUserId);
}
//整体团队数据维护
public void teamData(Map<String, Integer> teamDataMap, String userId){
//最上级用户对象
User user = usersMapper.getByUserId(userId);
TeamUserInfo teamUserInfoMapperByUserId = teamUserInfoMapper.getByUserId(userId);
teamUserInfoMapperByUserId.setNormalUserNum(teamDataMap.get("resultTeamNormalNum"));
teamUserInfoMapperByUserId.setSeedlingNum(teamDataMap.get("resultTeamSeedlingNum"));
teamUserInfoMapperByUserId.setBronzeTreeNum(teamDataMap.get("resultTeamBronzeTreeNum"));
......@@ -222,54 +240,38 @@ public class AerialDeliveryUserServiceImpl implements AerialDeliveryUserService
teamUserInfoMapperByUserId.setFarmerNum(teamDataMap.get("resultTeamFarmerNum"));
teamUserInfoMapperByUserId.setForestStartNum(teamDataMap.get("resultTeamForestStartNum"));
teamUserInfoMapperByUserId.setPartnerNum(teamDataMap.get("resultTeamPartnerNum"));
//修改团队用户数据
teamUserInfoMapper.updateById(teamUserInfoMapperByUserId);
//推荐人的用户表对象
User invitedUserId = usersMapper.getByUserId(beInvitedUserId);
//推荐人的推荐人用户对象
//todo: 推荐人用户id获取推荐人的上级用户
User user = usersMapper.getuserByBeInvitedCode(invitedUserId.getBeInvitedCode());
if (null != user){
String userId = user.getUserId();
upWardDataPreserve(teamDataMap,userId);
}else {
return;
String inviteCode = user.getInviteCode();
List<User> listUserByBeInvitedCode = usersMapper.getListUserByBeInvitedCode(inviteCode);
if (listUserByBeInvitedCode.size() >0){
for (User user1 : listUserByBeInvitedCode) {
TeamUserInfo teamUserInfoMapperByUserId1 = teamUserInfoMapper.getByUserId(user1.getUserId());
teamUserInfoMapperByUserId1.setNormalUserNum(teamDataMap.get("resultTeamNormalNum"));
teamUserInfoMapperByUserId1.setSeedlingNum(teamDataMap.get("resultTeamSeedlingNum"));
teamUserInfoMapperByUserId1.setBronzeTreeNum(teamDataMap.get("resultTeamBronzeTreeNum"));
teamUserInfoMapperByUserId1.setSilverTreeNum(teamDataMap.get("resultTeamSilverTreeNum"));
teamUserInfoMapperByUserId1.setGoldTreeNum(teamDataMap.get("resultTeamGoldTreeNum"));
teamUserInfoMapperByUserId1.setFarmerNum(teamDataMap.get("resultTeamFarmerNum"));
teamUserInfoMapperByUserId1.setForestStartNum(teamDataMap.get("resultTeamForestStartNum"));
teamUserInfoMapperByUserId1.setPartnerNum(teamDataMap.get("resultTeamPartnerNum"));
teamUserInfoMapper.updateById(teamUserInfoMapperByUserId1);
teamData(teamDataMap, user1.getUserId());
}
}
/**
* 根据推荐人的id向下进行团队数据维护
* @param teamDataMap 团队数据
* @param userId 当前用户的id
*/
private void downWardDataPreserve(Map<String, Integer> teamDataMap, String userId) {
TeamUserInfo teamUserInfoMapperByUserId = teamUserInfoMapper.getByUserId(userId);
teamUserInfoMapperByUserId.setNormalUserNum(teamDataMap.get("resultTeamNormalNum"));
teamUserInfoMapperByUserId.setSeedlingNum(teamDataMap.get("resultTeamSeedlingNum"));
teamUserInfoMapperByUserId.setBronzeTreeNum(teamDataMap.get("resultTeamBronzeTreeNum"));
teamUserInfoMapperByUserId.setSilverTreeNum(teamDataMap.get("resultTeamSilverTreeNum"));
teamUserInfoMapperByUserId.setGoldTreeNum(teamDataMap.get("resultTeamGoldTreeNum"));
teamUserInfoMapperByUserId.setFarmerNum(teamDataMap.get("resultTeamFarmerNum"));
teamUserInfoMapperByUserId.setForestStartNum(teamDataMap.get("resultTeamForestStartNum"));
teamUserInfoMapperByUserId.setPartnerNum(teamDataMap.get("resultTeamPartnerNum"));
//当前用户对象中获取当前用户的邀请码
User userByUserId = usersMapper.getByUserId(userId);
String inviteCode = userByUserId.getInviteCode();
//获取当前用户的所有下一级用户
List<User> listByIntvitedCode = usersMapper.getListByIntvitedCode(inviteCode);
//当前用户有下级用户
if (listByIntvitedCode.size() > 0){
for (User user : listByIntvitedCode) {
String downUserId = user.getUserId();
downWardDataPreserve(teamDataMap,downUserId);
}
}else {
//当前用户没有下级用户是退出
return;
}
//查询顶级用户
public User highUser(String userId) {
User byUserId = usersMapper.getByUserId(userId);
String beInvitedCode = byUserId.getBeInvitedCode();
User userByInviteCode = null;
while (!"1".equals(beInvitedCode) && !"88888888".equals(beInvitedCode)){
userByInviteCode = usersMapper.getUserByInviteCode(beInvitedCode);
beInvitedCode = userByInviteCode.getBeInvitedCode();
}
return userByInviteCode;
}
}
......@@ -68,7 +68,6 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme
orderMapper.updateById(orderInfo);
}
log.info("-------------------------用户升级结束--------------------------------------");
}
@Override
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment