Commit 2c1e30af authored by codezwjava's avatar codezwjava

用户升级后团队数据维护逻辑变更 添加了accountInfo和TeamPerformance表的用户等级同步逻辑

parent a170c801
package cn.wisenergy.mapper; package cn.wisenergy.mapper;
import cn.wisenergy.model.app.TeamPerformance; import cn.wisenergy.model.app.TeamPerformance;
import cn.wisenergy.model.app.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -100,4 +101,10 @@ public interface TeamPerformanceMapper extends BaseMapper<TeamPerformance> { ...@@ -100,4 +101,10 @@ public interface TeamPerformanceMapper extends BaseMapper<TeamPerformance> {
*/ */
List<TeamPerformance> getList(Map<String, Object> map); List<TeamPerformance> getList(Map<String, Object> map);
/**
*
* @param userId
* @return
*/
TeamPerformance getByUserId(String userId);
} }
...@@ -228,4 +228,12 @@ public interface UsersMapper extends BaseMapper<User> { ...@@ -228,4 +228,12 @@ public interface UsersMapper extends BaseMapper<User> {
* @return * @return
*/ */
User getUserByInviteCode(String inviteCode); User getUserByInviteCode(String inviteCode);
/**
* 根据用户的userid查询用户对象
* @param userId
* @return
*/
User getUserByUserId(String userId);
} }
...@@ -204,4 +204,13 @@ ...@@ -204,4 +204,13 @@
order by create_time desc order by create_time desc
limit #{startNum},#{endNum} limit #{startNum},#{endNum}
</select> </select>
<select id="getByUserId" resultType="cn.wisenergy.model.app.TeamPerformance">
select
<include refid="cols_all"/>
from
<include refid="table"/>
where
user_id = #{userId}
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -429,4 +429,13 @@ ...@@ -429,4 +429,13 @@
invite_code = #{inviteCode} invite_code = #{inviteCode}
</select> </select>
<select id="getUserByUserId" resultType="cn.wisenergy.model.app.User">
select
<include refid="cols_all"/>
from
<include refid="table"/>
where
user_id = #{userId}
</select>
</mapper> </mapper>
package cn.wisenergy.service.app; package cn.wisenergy.service.app;
import cn.wisenergy.model.app.User;
import java.util.Map;
/** /**
* @author 86187 * @author 86187
*/ */
...@@ -11,9 +15,40 @@ public interface AerialDeliveryUserService { ...@@ -11,9 +15,40 @@ public interface AerialDeliveryUserService {
void aerialDeliveryUserRand(); void aerialDeliveryUserRand();
/** /**
* 设置邀请码接口 * 设置邀请码接口 维护直推和团队数据
* @param userId 当前用户id * @param userId 当前用户id
* @param userInvitedId 推荐人用户id * @param userInvitedId 推荐人用户id
*/ */
void userSetBeinviteCode(String userId, String userInvitedId); void userSetBeinviteCode(String userId, String userInvitedId);
/**
* 团队整体数据的计算
* @param beInvitedUserId 推荐人的用户id
* @param userId 当前用户的id
* @return map 团队中各等级的用户数量
*/
Map teamUserInfoByAerialDelivery(String beInvitedUserId, String userId);
/**
* 整体团队数据维护
* @param teamDataMap teamUserInfoByAerialDelivery 返回的map
* @param userId 当前用户的userid
*/
void teamData(Map<String, Integer> teamDataMap, String userId);
/**
* 查询当前用户所在团队的最上级用户
* @param userId 当前用户的userID
* @return user 当前用户所在的最上级用户
*/
User highUser(String userId);
/**
* 团队数据维护 只维护团队数据 不包含直推数据的维护
* @param userId 当期用户的userId
* @param userInvitedId 推荐人的userId
*/
void teamDataNotRecommend(String userId, String userInvitedId);
} }
...@@ -3,6 +3,7 @@ package cn.wisenergy.service.app.impl; ...@@ -3,6 +3,7 @@ package cn.wisenergy.service.app.impl;
import cn.wisenergy.mapper.*; import cn.wisenergy.mapper.*;
import cn.wisenergy.model.app.*; import cn.wisenergy.model.app.*;
import cn.wisenergy.model.enums.TradeRecordEnum; import cn.wisenergy.model.enums.TradeRecordEnum;
import cn.wisenergy.service.app.AerialDeliveryUserService;
import cn.wisenergy.service.app.UserLevelService; import cn.wisenergy.service.app.UserLevelService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xxl.job.core.handler.annotation.XxlJob; import com.xxl.job.core.handler.annotation.XxlJob;
...@@ -39,12 +40,18 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme ...@@ -39,12 +40,18 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme
@Autowired @Autowired
private AccountMapper accountMapper; private AccountMapper accountMapper;
@Autowired
private TeamPerformanceMapper teamPerformanceMapper;
@Autowired @Autowired
private CultivatingPrizeMapper cultivatingPrizeMapper; private CultivatingPrizeMapper cultivatingPrizeMapper;
@Autowired @Autowired
private CultivatingPrizeInfoMapper cultivatingPrizeInfoMapper; private CultivatingPrizeInfoMapper cultivatingPrizeInfoMapper;
@Autowired
private AerialDeliveryUserService aerialDeliveryUserService;
@Autowired @Autowired
private OrderMapper orderMapper; private OrderMapper orderMapper;
...@@ -78,20 +85,24 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme ...@@ -78,20 +85,24 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme
RecommendUser recommendUser = recommendUserMapper.getByUserId(userId); RecommendUser recommendUser = recommendUserMapper.getByUserId(userId);
//当前用户团队信息表对象 //当前用户团队信息表对象
TeamUserInfo teamUserInfoMapperByUserId = teamUserInfoMapper.getByUserId(userId); TeamUserInfo teamUserInfoMapperByUserId = teamUserInfoMapper.getByUserId(userId);
//计算当前用户业绩
BigDecimal performanceByUserid = orderMapper.getPerformanceByUserid(userId);
if (null == performanceByUserid) {
performanceByUserid = new BigDecimal(0);
}
//当前用户等级 //当前用户等级
Integer userLevel = user.getUserLevel(); Integer userLevel = user.getUserLevel();
//当前用户的邀请码 //当前用户的累计消费
BigDecimal performanceByUserid = new BigDecimal(0);
if (userLevel == 0){
//计算当前用户业绩
performanceByUserid = orderMapper.getPerformanceByUserid(userId);
if (null == performanceByUserid) {
performanceByUserid = new BigDecimal(0);
}
}
//当前用户的推荐人邀请码
String beInvitedCode = user.getBeInvitedCode(); String beInvitedCode = user.getBeInvitedCode();
// //
String inviteUserId = ""; String inviteUserId = "";
RecommendUser inviteRecommendUser = new RecommendUser(); RecommendUser inviteRecommendUser = new RecommendUser();
//若当前用户的推荐人邀请码是 “1” 时 则当前用户没有邀请人 //若当前用户的推荐人邀请码是 “1” 时 则当前用户没有邀请人
if (!sysInviteCode1.equals(beInvitedCode) || !sysInviteCode2.equals(beInvitedCode)) { if (!sysInviteCode1.equals(beInvitedCode) && !sysInviteCode2.equals(beInvitedCode)) {
//通过当前用户推荐人邀请码获取邀请人的userId //通过当前用户推荐人邀请码获取邀请人的userId
User byBeInvitedCode = usersMapper.getByBeInvitedCode(beInvitedCode); User byBeInvitedCode = usersMapper.getByBeInvitedCode(beInvitedCode);
if (null != byBeInvitedCode) { if (null != byBeInvitedCode) {
...@@ -106,8 +117,10 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme ...@@ -106,8 +117,10 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme
if (userLevel == 0 && performanceByUserid.intValue() >= 3980) { if (userLevel == 0 && performanceByUserid.intValue() >= 3980) {
user.setUserLevel(1); user.setUserLevel(1);
usersMapper.updateById(user); usersMapper.updateById(user);
//同步accountInfo 和TeamPerformance 的用户等级
accountAndTeamPerformanceUserLevelUpdate(userId);
//用户推荐人邀请码为 1 时 该用户没有邀请人 //用户推荐人邀请码为 1 时 该用户没有邀请人
if (!sysInviteCode1.equals(beInvitedCode) || !sysInviteCode2.equals(beInvitedCode)) { if (sysInviteCode1.equals(beInvitedCode) || sysInviteCode2.equals(beInvitedCode)) {
return; return;
} else { } else {
//推荐人直推信息表数据维护 //推荐人直推信息表数据维护
...@@ -122,7 +135,8 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme ...@@ -122,7 +135,8 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme
inviteRecommendUser.setSeedlingNum(inviteRecommendUser.getSeedlingNum() + 1); inviteRecommendUser.setSeedlingNum(inviteRecommendUser.getSeedlingNum() + 1);
recommendUserMapper.updateById(inviteRecommendUser); recommendUserMapper.updateById(inviteRecommendUser);
//团队用户表数据维护 //团队用户表数据维护
teamUserInfoNormalToSeed(inviteUserId); // teamUserInfoNormalToSeed(inviteUserId);
aerialDeliveryUserService.teamDataNotRecommend(userId,inviteUserId);
//上级用户获得幼苗等级的培育奖 //上级用户获得幼苗等级的培育奖
int level = 1; int level = 1;
cultivatingPrizeToInvitedUser(userId, inviteUserId, level); cultivatingPrizeToInvitedUser(userId, inviteUserId, level);
...@@ -138,8 +152,10 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme ...@@ -138,8 +152,10 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme
//用户升级成功 //用户升级成功
user.setUserLevel(2); user.setUserLevel(2);
usersMapper.updateById(user); usersMapper.updateById(user);
//同步accountInfo 和TeamPerformance 的用户等级
accountAndTeamPerformanceUserLevelUpdate(userId);
//用户被邀请码为 1 时 该用户没有邀请人 //用户被邀请码为 1 时 该用户没有邀请人
if (!sysInviteCode1.equals(beInvitedCode) || !sysInviteCode2.equals(beInvitedCode)) { if (sysInviteCode1.equals(beInvitedCode) || sysInviteCode2.equals(beInvitedCode)) {
return; return;
} else { } else {
//若邀请人直推用户信息中的幼苗用户数量为0是则不用变化,否则幼苗用户数量-1 //若邀请人直推用户信息中的幼苗用户数量为0是则不用变化,否则幼苗用户数量-1
...@@ -153,7 +169,8 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme ...@@ -153,7 +169,8 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme
inviteRecommendUser.setBronzeTreeNum(inviteRecommendUser.getBronzeTreeNum() + 1); inviteRecommendUser.setBronzeTreeNum(inviteRecommendUser.getBronzeTreeNum() + 1);
recommendUserMapper.updateById(inviteRecommendUser); recommendUserMapper.updateById(inviteRecommendUser);
//团队用户表数据维护 //团队用户表数据维护
teamUserInfoSeedToBronze(inviteUserId); // teamUserInfoSeedToBronze(inviteUserId);
aerialDeliveryUserService.teamDataNotRecommend(userId,inviteUserId);
//上级用户获得幼苗等级的培育奖 //上级用户获得幼苗等级的培育奖
int level = 2; int level = 2;
cultivatingPrizeToInvitedUser(userId, inviteUserId, level); cultivatingPrizeToInvitedUser(userId, inviteUserId, level);
...@@ -166,8 +183,10 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme ...@@ -166,8 +183,10 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme
&& recommendUser.getSeedlingNum() < 20) { && recommendUser.getSeedlingNum() < 20) {
user.setUserLevel(3); user.setUserLevel(3);
usersMapper.updateById(user); usersMapper.updateById(user);
//同步accountInfo 和TeamPerformance 的用户等级
accountAndTeamPerformanceUserLevelUpdate(userId);
//用户被邀请码为 1 时 该用户没有邀请人 //用户被邀请码为 1 时 该用户没有邀请人
if (!sysInviteCode1.equals(beInvitedCode) || !sysInviteCode2.equals(beInvitedCode)) { if (sysInviteCode1.equals(beInvitedCode) || sysInviteCode2.equals(beInvitedCode)) {
return; return;
} else { } else {
//推荐人直推信息表数据维护 //推荐人直推信息表数据维护
...@@ -182,7 +201,8 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme ...@@ -182,7 +201,8 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme
inviteRecommendUser.setSilverTreeNum(inviteRecommendUser.getSilverTreeNum() + 1); inviteRecommendUser.setSilverTreeNum(inviteRecommendUser.getSilverTreeNum() + 1);
recommendUserMapper.updateById(inviteRecommendUser); recommendUserMapper.updateById(inviteRecommendUser);
//团队用户表数据维护 //团队用户表数据维护
teamUserInfoBronzeToSilver(inviteUserId); // teamUserInfoBronzeToSilver(inviteUserId);
aerialDeliveryUserService.teamDataNotRecommend(userId,inviteUserId);
//上级用户获得幼苗等级的培育奖 //上级用户获得幼苗等级的培育奖
int level = 3; int level = 3;
cultivatingPrizeToInvitedUser(userId, inviteUserId, level); cultivatingPrizeToInvitedUser(userId, inviteUserId, level);
...@@ -199,8 +219,10 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme ...@@ -199,8 +219,10 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme
&& teamUserInfoMapperByUserId.getBronzeTreeNum() >= 20) { && teamUserInfoMapperByUserId.getBronzeTreeNum() >= 20) {
user.setUserLevel(4); user.setUserLevel(4);
usersMapper.updateById(user); usersMapper.updateById(user);
//同步accountInfo 和TeamPerformance 的用户等级
accountAndTeamPerformanceUserLevelUpdate(userId);
//用户被邀请码为 1 时 该用户没有邀请人 //用户被邀请码为 1 时 该用户没有邀请人
if (!sysInviteCode1.equals(beInvitedCode) || !sysInviteCode2.equals(beInvitedCode)) { if (sysInviteCode1.equals(beInvitedCode) || sysInviteCode2.equals(beInvitedCode)) {
return; return;
} else { } else {
//推荐人直推信息表数据维护 //推荐人直推信息表数据维护
...@@ -215,7 +237,8 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme ...@@ -215,7 +237,8 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme
inviteRecommendUser.setGoldTreeNum(inviteRecommendUser.getGoldTreeNum() + 1); inviteRecommendUser.setGoldTreeNum(inviteRecommendUser.getGoldTreeNum() + 1);
recommendUserMapper.updateById(inviteRecommendUser); recommendUserMapper.updateById(inviteRecommendUser);
//团队用户表数据维护 //团队用户表数据维护
teamUserInfoSilverToGoldTree(inviteUserId); // teamUserInfoSilverToGoldTree(inviteUserId);
aerialDeliveryUserService.teamDataNotRecommend(userId,inviteUserId);
//上级用户获得幼苗等级的培育奖 //上级用户获得幼苗等级的培育奖
int level = 4; int level = 4;
cultivatingPrizeToInvitedUser(userId, inviteUserId, level); cultivatingPrizeToInvitedUser(userId, inviteUserId, level);
...@@ -231,8 +254,10 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme ...@@ -231,8 +254,10 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme
&& teamUserInfoMapperByUserId.getSilverTreeNum() >= 40) { && teamUserInfoMapperByUserId.getSilverTreeNum() >= 40) {
user.setUserLevel(5); user.setUserLevel(5);
usersMapper.updateById(user); usersMapper.updateById(user);
//同步accountInfo 和TeamPerformance 的用户等级
accountAndTeamPerformanceUserLevelUpdate(userId);
//用户被邀请码为 1 时 该用户没有邀请人 //用户被邀请码为 1 时 该用户没有邀请人
if (!sysInviteCode1.equals(beInvitedCode) || !sysInviteCode2.equals(beInvitedCode)) { if (sysInviteCode1.equals(beInvitedCode) || sysInviteCode2.equals(beInvitedCode)) {
return; return;
} else { } else {
//推荐人直推信息表数据维护 //推荐人直推信息表数据维护
...@@ -247,7 +272,8 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme ...@@ -247,7 +272,8 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme
inviteRecommendUser.setGoldTreeNum(inviteRecommendUser.getFarmerNum() + 1); inviteRecommendUser.setGoldTreeNum(inviteRecommendUser.getFarmerNum() + 1);
recommendUserMapper.updateById(inviteRecommendUser); recommendUserMapper.updateById(inviteRecommendUser);
//团队用户表数据维护 //团队用户表数据维护
teamUserInfoGoldTreeToFarmer(inviteUserId); // teamUserInfoGoldTreeToFarmer(inviteUserId);
aerialDeliveryUserService.teamDataNotRecommend(userId,inviteUserId);
//上级用户获得幼苗等级的培育奖 //上级用户获得幼苗等级的培育奖
int level = 5; int level = 5;
cultivatingPrizeToInvitedUser(userId, inviteUserId, level); cultivatingPrizeToInvitedUser(userId, inviteUserId, level);
...@@ -264,8 +290,10 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme ...@@ -264,8 +290,10 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme
&& teamUserInfoMapperByUserId.getGoldTreeNum() >= 30) { && teamUserInfoMapperByUserId.getGoldTreeNum() >= 30) {
user.setUserLevel(6); user.setUserLevel(6);
usersMapper.updateById(user); usersMapper.updateById(user);
//同步accountInfo 和TeamPerformance 的用户等级
accountAndTeamPerformanceUserLevelUpdate(userId);
//用户被邀请码为 1 时 该用户没有邀请人 //用户被邀请码为 1 时 该用户没有邀请人
if (!sysInviteCode1.equals(beInvitedCode) || !sysInviteCode2.equals(beInvitedCode)) { if (sysInviteCode1.equals(beInvitedCode) || sysInviteCode2.equals(beInvitedCode)) {
return; return;
} else { } else {
//推荐人直推信息表数据维护 //推荐人直推信息表数据维护
...@@ -280,7 +308,8 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme ...@@ -280,7 +308,8 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme
inviteRecommendUser.setForestStartNum(inviteRecommendUser.getForestStartNum() + 1); inviteRecommendUser.setForestStartNum(inviteRecommendUser.getForestStartNum() + 1);
recommendUserMapper.updateById(inviteRecommendUser); recommendUserMapper.updateById(inviteRecommendUser);
//团队用户表数据维护 //团队用户表数据维护
teamUserInfoFarmerToForestStart(inviteUserId); // teamUserInfoFarmerToForestStart(inviteUserId);
aerialDeliveryUserService.teamDataNotRecommend(userId,inviteUserId);
//上级用户获得幼苗等级的培育奖 //上级用户获得幼苗等级的培育奖
int level = 6; int level = 6;
cultivatingPrizeToInvitedUser(userId, inviteUserId, level); cultivatingPrizeToInvitedUser(userId, inviteUserId, level);
...@@ -298,8 +327,10 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme ...@@ -298,8 +327,10 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme
&& teamUserInfoMapperByUserId.getFarmerNum() >= 30) { && teamUserInfoMapperByUserId.getFarmerNum() >= 30) {
user.setUserLevel(7); user.setUserLevel(7);
usersMapper.updateById(user); usersMapper.updateById(user);
//同步accountInfo 和TeamPerformance 的用户等级
accountAndTeamPerformanceUserLevelUpdate(userId);
//用户被邀请码为 1 时 该用户没有邀请人 //用户被邀请码为 1 时 该用户没有邀请人
if (!sysInviteCode1.equals(beInvitedCode) || !sysInviteCode2.equals(beInvitedCode)) { if (sysInviteCode1.equals(beInvitedCode) || sysInviteCode2.equals(beInvitedCode)) {
return; return;
} else { } else {
//推荐人直推信息表数据维护 //推荐人直推信息表数据维护
...@@ -314,7 +345,8 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme ...@@ -314,7 +345,8 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme
inviteRecommendUser.setPartnerNum(inviteRecommendUser.getPartnerNum() + 1); inviteRecommendUser.setPartnerNum(inviteRecommendUser.getPartnerNum() + 1);
recommendUserMapper.updateById(inviteRecommendUser); recommendUserMapper.updateById(inviteRecommendUser);
//团队用户表数据维护 //团队用户表数据维护
teamUserInfoForestStartToPartner(inviteUserId); // teamUserInfoForestStartToPartner(inviteUserId);
aerialDeliveryUserService.teamDataNotRecommend(userId,inviteUserId);
//上级用户获得幼苗等级的培育奖 //上级用户获得幼苗等级的培育奖
int level = 7; int level = 7;
cultivatingPrizeToInvitedUser(userId, inviteUserId, level); cultivatingPrizeToInvitedUser(userId, inviteUserId, level);
...@@ -808,5 +840,22 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme ...@@ -808,5 +840,22 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper, User> impleme
} }
} }
} }
//同步accountInfo 和TeamPerformance 的用户等级
public void accountAndTeamPerformanceUserLevelUpdate(String userId){
User userByUserId = usersMapper.getUserByUserId(userId);
if (null != userByUserId){
int userLevel = userByUserId.getUserLevel();
AccountInfo accountInfoByUserId = accountMapper.getByUserId(userId);
accountInfoByUserId.setUserLevel(userLevel);
TeamPerformance teamPerformanceByUserId = teamPerformanceMapper.getByUserId(userId);
teamPerformanceByUserId.setUserLevel(userLevel);
accountMapper.edit(accountInfoByUserId);
teamPerformanceMapper.edit(teamPerformanceByUserId);
}
}
} }
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