Commit 2fe24821 authored by unset's avatar unset

Merge branch 'dev-tiande-member' into dev-tiande

parents 9f64d13f cce34fc6
......@@ -25,7 +25,7 @@ public class RabbitConstant {
public static final String KEY_APPUSER_REGISTER = "appUser.register";
public static final String KEY_APPUSER_AUTH = "appUser.auth";
public static final String KEY_MEMBER_SHARE = "member.share";
public static final String KEY_MEMBER_CHANGE = "member.change";
//积分
public static final String INTEGRAL_ROUTING_KEY = "integral_routing_key";
......
......@@ -2,8 +2,10 @@ package com.github.wxiaoqi.security.admin.biz;
import com.ace.cache.annotation.Cache;
import com.ace.cache.annotation.CacheClear;
import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.admin.dto.BaseUserMemberVO;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO;
import com.github.wxiaoqi.security.admin.entity.AppUserRelation;
import com.github.wxiaoqi.security.admin.entity.BaseUserMember;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberExport;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
......@@ -15,7 +17,11 @@ import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.auth.client.jwt.UserAuthUtil;
import com.github.wxiaoqi.security.auth.common.util.jwt.IJWTInfo;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.config.rabbit.RabbitConstant;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.universal.feign.MQSenderFeign;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.collections.CollectionUtils;
......@@ -58,12 +64,18 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem
@Autowired
private UserAuthConfig userAuthConfig;
@Autowired
AppUserRelationBiz appUserRelationBiz;
@Autowired
private BaseUserMemberExportBiz baseUserMemberExportBiz;
@Autowired
private HttpServletRequest request;
@Autowired
MQSenderFeign mqSenderFeign;
// @Autowired
// private TaskExecutor taskExecutor;
//
......@@ -144,12 +156,6 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem
}
private void generateData(Integer level, Long userId) {
List<BaseUserMember> baseUserMemberList = getMyBiz().selectList(new BaseUserMember(){{setIsBind(1); setIsDel(0);setMemberLevel(level);}});
if (baseUserMemberList != null && baseUserMemberList.size() > 0) {
}
}
/**
* //
......@@ -306,6 +312,105 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem
}
/**
* 修改用户会员等级
* @param baseUserMember
* @return
*/
public ObjectRestResponse updateUserLevel(BaseUserMember baseUserMember) {
if (baseUserMember.getId() == null || baseUserMember.getMemberLevel() == null) {
return ObjectRestResponse.paramIsEmpty();
}
BaseUserMember old = selectById(baseUserMember.getId());
if (old == null) {
return ObjectRestResponse.createFailedResult(ResultCode.NOTEXIST_CODE, ResultCode.getMsg(ResultCode.NOTEXIST_CODE));
}
baseUserMember.setMemberLevel(baseUserMember.getMemberLevel());
updateSelectiveByIdRe(baseUserMember);
// todo 执行上级会员等级初始化操作
mqSenderFeign.sendMessage(RabbitConstant.ADMIN_TOPIC, RabbitConstant.KEY_MEMBER_CHANGE, JSONObject.toJSONString(baseUserMember));
return ObjectRestResponse.succ();
}
//处理上级会员等级初始化
public void executeParentMemberLevel(BaseUserMember baseUserMember) {
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);
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);
......
......@@ -35,6 +35,8 @@ public class RabbitAdminConfig extends RabbitCommonConfig {
public static final String MEMBER_SHARE_QUEUE = "admin.member.share";
public static final String MEMBER_CHANGE_QUEUE = "admin.member.change";
static {
myQueue = new ArrayList<BindDTO>() {{
//支付完成后永久绑定关系
......@@ -53,6 +55,8 @@ public class RabbitAdminConfig extends RabbitCommonConfig {
add(new BindDTO(COMPANY_UPD_QUEUE, VEHICLE_TOPIC, KEY_COMPANY_UPD));
add(new BindDTO(MEMBER_SHARE_QUEUE, ADMIN_TOPIC, KEY_MEMBER_SHARE));
add(new BindDTO(MEMBER_CHANGE_QUEUE, ADMIN_TOPIC, KEY_MEMBER_CHANGE));
}};
}
}
......
package com.github.wxiaoqi.security.admin.handler;
import cn.hutool.json.JSONUtil;
import com.github.wxiaoqi.security.admin.biz.BaseUserMemberBiz;
import com.github.wxiaoqi.security.admin.entity.BaseUserMember;
import com.rabbitmq.client.Channel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.handler.annotation.Headers;
import org.springframework.stereotype.Component;
import java.util.Map;
import static com.github.wxiaoqi.security.admin.config.RabbitAdminConfig.MEMBER_CHANGE_QUEUE;
/**
* @ClassName : MemberChangeMQHandler
* @Description : 修改会员等级
* @Author : jiaoruizhen
* @Date: 2020-11-07 11:10
*/
@Component
@Slf4j
public class MemberChangeMQHandler {
@Autowired
BaseUserMemberBiz baseUserMemberBiz;
@RabbitListener(queues = MEMBER_CHANGE_QUEUE)
public void integralHandler(Message message, @Headers Map<String, Object> headers, Channel channel) {
try {
Thread.sleep(2000);
String msg = new String(message.getBody(), "UTF-8");
log.info("接收到的消息-----msg===="+msg);
BaseUserMember baseUserMember = JSONUtil.toBean(msg, BaseUserMember.class);
baseUserMemberBiz.executeParentMemberLevel(baseUserMember);
} catch (Exception e) {
log.error("接收消息失败:{}", e);
}
}
}
......@@ -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);
}
......@@ -133,4 +133,18 @@ public class BaseUserMemberController extends BaseController<BaseUserMemberBiz,
baseBiz.UpdateUserMember(userMemberDTO);
return ObjectRestResponse.succ();
}
@PutMapping(value = "updateLevel")
@ApiOperation(value = "修改会员等级")
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