Commit f81f2e0c authored by unset's avatar unset

会员分成记录信息

parent 3394c653
......@@ -327,19 +327,84 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem
//处理上级会员等级初始化
public void executeParentMemberLevel(BaseUserMember baseUserMember) {
log.info("【处理上级会员等级】: {}", baseUserMember);
AppUserRelation appUserRelation = appUserRelationBiz.getRelationByUserId(baseUserMember.getUserId());
log.info("【处理上级会员等级】: {}", baseUserMember);
Example example = new Example(BaseUserMemberLevel.class);
example.createCriteria().andEqualTo("isdel", 0);
example.orderBy("level");
List<BaseUserMemberLevel> userMemberLevelList = BaseUserMemberLevelMapper.selectByExample(example);
if (userMemberLevelList != null && userMemberLevelList.size() > 0) {
generateParentLevel(baseUserMember.getUserId(), userMemberLevelList);
}
}
private void generateParentLevel(Integer userId, List<BaseUserMemberLevel> userMemberLevelList) {
AppUserRelation appUserRelation = appUserRelationBiz.getRelationByUserId(userId);
if (appUserRelation != null && appUserRelation.getIsDel() != 1) {
//查询上级当前等级
Integer parentId = appUserRelation.getParentId();
BaseUserMemberVO parentUser = findOneByUserId(parentId);
if (parentUser != null) {
List<AppUserRelation> appUserRelationList = appUserRelationBiz.findMemberPageByLeaderId(parentId);
log.info("【上级会员信息】: {}", parentUser);
if (parentUser != null && parentId != 0) {
//查询当前会员需要变更到的级别
Integer parentNewLevel = generateUserLevel(parentId, parentUser.getMemberLevel(), userMemberLevelList);
//如果返回为空,或者当前级别和需要更新的级别相等,不做处理
log.info("【上级需要修改等级为: {}】", parentNewLevel);
if (parentNewLevel != null && !parentNewLevel.equals(parentUser.getMemberLevel())) {
Example example1 = new Example(BaseUserMember.class);
example1.createCriteria().andEqualTo("userId", parentId).andEqualTo("isDel", 0);
BaseUserMember parent = mapper.selectOneByExample(example1);
if (parent != null) {
parent.setMemberLevel(parentNewLevel);
updateSelectiveByIdRe(parent);
}
generateParentLevel(parentId, userMemberLevelList);
}
}
}
}
/**
* 获取用户需要修改的等级
* @param userId
* @param level
* @param userMemberLevelList
*/
private Integer generateUserLevel(Integer userId, Integer level, List<BaseUserMemberLevel> userMemberLevelList) {
BaseUserMemberLevel currentLevel = null;
BaseUserMemberLevel subLevel = null;
for (int i = 0; i < userMemberLevelList.size(); i ++ ) {
if (level.equals(userMemberLevelList.get(i).getLevel())) {
currentLevel = userMemberLevelList.get(i);
if ((i+1) < userMemberLevelList.size()) {
subLevel = userMemberLevelList.get(i + 1);
}
}
}
//当前会员不存在,直接返回
if (currentLevel == null) {
return null;
}
//当前会员不分成且下一级也是不分成,直接返回
if ( currentLevel.getIsShare() != null && currentLevel.getIsShare() == 0 ) {
//下一级不存在、或者下一级不分成,就直接返回
if (subLevel == null || (subLevel != null && subLevel.getIsShare() != null && subLevel.getIsShare() == 0)) {
return currentLevel.getLevel();
}
}
//需要分成,则查询当前用户的下级是否符合条件,符合条件level+1
List<BaseUserMember> baseUserMemberList = mapper.selectAllChildrenByLevel(userId, level-1);
if (baseUserMemberList != null && baseUserMemberList.size() > getLimitNumber()) {
return generateUserLevel(userId, level+1, userMemberLevelList);
} else {
return level;
}
}
private Integer getLimitNumber() {
return 3;
}
public void deleteByUserIds(Collection<Integer> userIds) {
Example example = new Example(BaseUserMember.class);
Example.Criteria criteria = example.createCriteria();
......
......@@ -6,6 +6,8 @@ import com.github.wxiaoqi.security.admin.vo.UserMemberVo;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
/**
* 用户会员表
*
......@@ -19,4 +21,6 @@ public interface BaseUserMemberMapper extends Mapper<BaseUserMember> {
public UserMemberVo getInfoByUserId(@Param("userId")Integer userId);
BaseUserMemberVO getBaseUserMemberVOByUserId(@Param("userId") Integer userId);
List<BaseUserMember> selectAllChildrenByLevel(@Param("userId") Integer userId, @Param("level") Integer level);
}
......@@ -140,4 +140,11 @@ public class BaseUserMemberController extends BaseController<BaseUserMemberBiz,
public ObjectRestResponse updateUserLevel(@RequestBody BaseUserMember baseUserMember) {
return baseBiz.updateUserLevel(baseUserMember);
}
@GetMapping(value = "/app/unauth/executeParentMemberLevel")
public void executeParentMemberLevel(BaseUserMember baseUserMember) {
baseBiz.executeParentMemberLevel(baseUserMember);
}
}
......@@ -27,6 +27,11 @@
select * from base_user_member where user_id=#{userId} and is_del=0 limit 1
</select>
<select id="selectAllChildrenByLevel" resultType="com.github.wxiaoqi.security.admin.entity.BaseUserMember">
select bum.* from app_user_relation aur
LEFT JOIN base_user_member bum on bum.user_id = aur.user_id
where aur.parent_id = #{userId} and bum.member_level &gt;= #{level}
</select>
<select id="getBaseUserMemberVOByUserId" parameterType="Integer"
resultType="com.github.wxiaoqi.security.admin.dto.BaseUserMemberVO">
......
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