Commit bae1d6bb authored by unset's avatar unset

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

parents 1e0461cf 2b5e39e0
...@@ -5,10 +5,7 @@ import com.ace.cache.annotation.CacheClear; ...@@ -5,10 +5,7 @@ import com.ace.cache.annotation.CacheClear;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.admin.dto.BaseUserMemberVO; import com.github.wxiaoqi.security.admin.dto.BaseUserMemberVO;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO; import com.github.wxiaoqi.security.admin.dto.UserMemberDTO;
import com.github.wxiaoqi.security.admin.entity.AppUserRelation; import com.github.wxiaoqi.security.admin.entity.*;
import com.github.wxiaoqi.security.admin.entity.BaseUserMember;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberExport;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.admin.mapper.BaseUserMemberLevelMapper; import com.github.wxiaoqi.security.admin.mapper.BaseUserMemberLevelMapper;
import com.github.wxiaoqi.security.admin.mapper.BaseUserMemberMapper; import com.github.wxiaoqi.security.admin.mapper.BaseUserMemberMapper;
import com.github.wxiaoqi.security.admin.vo.AppUserVo; import com.github.wxiaoqi.security.admin.vo.AppUserVo;
...@@ -35,8 +32,10 @@ import tk.mybatis.mapper.entity.Example; ...@@ -35,8 +32,10 @@ import tk.mybatis.mapper.entity.Example;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.stream.Collectors;
/** /**
* 用户会员表 * 用户会员表
...@@ -311,6 +310,8 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem ...@@ -311,6 +310,8 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem
setModifyData(userMemberVo,baseUserMember); setModifyData(userMemberVo,baseUserMember);
log.info("保存成功"); log.info("保存成功");
// todo 执行上级会员等级初始化操作
mqSenderFeign.sendMessage(RabbitConstant.ADMIN_TOPIC, RabbitConstant.KEY_MEMBER_CHANGE, JSONObject.toJSONString(baseUserMember));
} }
/** /**
...@@ -351,7 +352,7 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem ...@@ -351,7 +352,7 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem
Integer parentId = appUserRelation.getParentId(); Integer parentId = appUserRelation.getParentId();
BaseUserMemberVO parentUser = findOneByUserId(parentId); BaseUserMemberVO parentUser = findOneByUserId(parentId);
log.info("【上级会员信息】: {}", parentUser); log.info("【上级会员信息】: {}", parentUser);
if (parentUser != null && parentId != 0) { if (parentUser != null) {
//查询当前会员需要变更到的级别 //查询当前会员需要变更到的级别
Integer parentNewLevel = generateUserLevel(parentId, parentUser.getMemberLevel(), userMemberLevelList); Integer parentNewLevel = generateUserLevel(parentId, parentUser.getMemberLevel(), userMemberLevelList);
//如果返回为空,或者当前级别和需要更新的级别相等,不做处理 //如果返回为空,或者当前级别和需要更新的级别相等,不做处理
...@@ -366,6 +367,33 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem ...@@ -366,6 +367,33 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem
} }
generateParentLevel(parentId, userMemberLevelList); generateParentLevel(parentId, userMemberLevelList);
} }
} else { //如果上级没有会员信息,查询上级是否符合条件,符合条件可以直接新增会员信息
List<BaseUserMemberLevel> newLevelList = userMemberLevelList.stream().filter(p -> p.getIsShare() == 1).collect(Collectors.toList());
BaseUserMemberLevel parentLevel = null;
for (int i = 0; i < newLevelList.size(); i ++) {
List<BaseUserMember> baseUserMemberList = mapper.selectAllChildrenByLevel(parentId, newLevelList.get(i).getLevel() - 1);
if (baseUserMemberList != null && baseUserMemberList.size() >= getLimitNumber()) {
continue;
} else {
if (i > 0) {
parentLevel = newLevelList.get(i-1);
}
break;
}
}
if (parentLevel != null) {
BaseUserMember baseUserMember = new BaseUserMember();
baseUserMember.setMemberLevel(parentLevel.getLevel());
baseUserMember.setMemberType(2);
baseUserMember.setRentFreeDays(parentLevel.getNumber());
baseUserMember.setTotalNumber(parentLevel.getNumber());
baseUserMember.setUserId(parentId);
baseUserMember.setIsBind(1);
baseUserMember.setBuyCount(1);
baseUserMember.setDiscount(parentLevel.getDiscount());
baseUserMember.setMemberName(parentLevel.getName());
insertSelectiveRe(baseUserMember);
}
} }
} }
} }
...@@ -379,41 +407,60 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem ...@@ -379,41 +407,60 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem
*/ */
private Integer generateUserLevel(Integer userId, Integer level, List<BaseUserMemberLevel> userMemberLevelList) { private Integer generateUserLevel(Integer userId, Integer level, List<BaseUserMemberLevel> userMemberLevelList) {
BaseUserMemberLevel currentLevel = null; BaseUserMemberLevel currentLevel = null;
BaseUserMemberLevel subLevel = null;
for (int i = 0; i < userMemberLevelList.size(); i ++ ) { for (int i = 0; i < userMemberLevelList.size(); i ++ ) {
if (level.equals(userMemberLevelList.get(i).getLevel())) { if (level.equals(userMemberLevelList.get(i).getLevel())) {
currentLevel = userMemberLevelList.get(i); currentLevel = userMemberLevelList.get(i);
if ((i+1) < userMemberLevelList.size()) {
subLevel = userMemberLevelList.get(i + 1);
}
} }
} }
//当前会员不存在,直接返回 //当前会员不存在,直接返回
if (currentLevel == null) { if (currentLevel == null) {
return null; return null;
} }
//当前会员不分成且下一级也是不分成,直接返回 //当前会员为最终等级直接返回
if ( currentLevel.getIsShare() != null && currentLevel.getIsShare() == 0 ) { if ( currentLevel.getLevel().equals(userMemberLevelList.get(userMemberLevelList.size() - 1).getLevel()) ) {
//下一级不存在、或者下一级不分成,就直接返回
if (subLevel == null || (subLevel != null && subLevel.getIsShare() != null && subLevel.getIsShare() == 0)) {
return currentLevel.getLevel(); return currentLevel.getLevel();
} }
} //如果当前等级小于等于第一个分成等级的低二等级, 则直接查询大于等于第一个分成等级的低一等级的下级用户数量, 否则直接取当前等级的低一级会员数量
Example example = new Example(BaseUserMemberLevel.class); List<BaseUserMemberLevel> newLevelList = userMemberLevelList.stream().filter(p -> p.getIsShare() == 1).collect(Collectors.toList());
example.createCriteria().andEqualTo("isdel", 0).andEqualTo("isShare", 1); Integer queryLevel = newLevelList.get(0).getLevel() - 2;
example.orderBy("level"); Integer result = level;
List<BaseUserMemberLevel> baseUserMemberLevelList = BaseUserMemberLevelMapper.selectByExample(example);
//如果当前等级小于等于第一个分成等级的低一等级, 则直接查询大于等于第一个分成等级的低一等级的下级用户数量, 否则直接取当前等级的低一级会员数量
Integer queryLevel = level - 1;
if (level <= (baseUserMemberLevelList.get(0).getLevel() - 1)) {
queryLevel = baseUserMemberLevelList.get(0).getLevel() - 1;
}
//需要分成,则查询当前用户的下级是否符合条件,符合条件level+1 //需要分成,则查询当前用户的下级是否符合条件,符合条件level+1
List<BaseUserMember> baseUserMemberList = mapper.selectAllChildrenByLevel(userId, queryLevel); List<BaseUserMember> baseUserMemberList = mapper.selectAllChildrenByLevel(userId, queryLevel);
if (baseUserMemberList != null && baseUserMemberList.size() > getLimitNumber()) { if (baseUserMemberList != null && baseUserMemberList.size() >= getLimitNumber()) {
return generateUserLevel(userId, level+1, userMemberLevelList); Map<Integer, List<BaseUserMember>> map = baseUserMemberList.stream().collect(Collectors.groupingBy(BaseUserMember::getMemberLevel));
if (map.get(3) != null && map.get(3).size() >= getLimitNumber()) {
if (level < 5) {
level = 5;
}
}
if (map.get(4) != null && map.get(4).size() >= getLimitNumber()) {
if (level < 5) {
level = 5;
}
}
if (map.get(5) != null && map.get(5).size() >= getLimitNumber()) {
if (level < 6) {
level = 6;
}
}
if (map.get(6) != null && map.get(6).size() >= getLimitNumber()) {
if (level < 7) {
level = 7;
}
}
if (map.get(7) != null && map.get(7).size() >= getLimitNumber()) {
if (level < 8) {
level = 8;
}
}
//等级没有改变
if (!level.equals(result)) {
return generateUserLevel(userId, level, userMemberLevelList);
} else {
return result;
}
} else { } else {
return level; return result;
} }
} }
......
...@@ -62,9 +62,9 @@ public class MemberShareRecordBiz extends BaseBiz<MemberShareRecordMapper, Membe ...@@ -62,9 +62,9 @@ public class MemberShareRecordBiz extends BaseBiz<MemberShareRecordMapper, Membe
* @param no * @param no
* @return * @return
*/ */
public MemberShareRecord getOneByOrderNo(String no) { public MemberShareRecord getOneByOrderNo(String no, Integer level) {
Example example = new Example(MemberShareRecord.class); Example example = new Example(MemberShareRecord.class);
example.createCriteria().andEqualTo("orderNo", no); example.createCriteria().andEqualTo("orderNo", no).andEqualTo("memberLevel", level);
return mapper.selectOneByExample(example); return mapper.selectOneByExample(example);
} }
...@@ -75,7 +75,7 @@ public class MemberShareRecordBiz extends BaseBiz<MemberShareRecordMapper, Membe ...@@ -75,7 +75,7 @@ public class MemberShareRecordBiz extends BaseBiz<MemberShareRecordMapper, Membe
*/ */
public void addUpdate(MemberShareRecord memberShareRecord) { public void addUpdate(MemberShareRecord memberShareRecord) {
if (memberShareRecord != null) { if (memberShareRecord != null) {
MemberShareRecord old = getOneByOrderNo(memberShareRecord.getOrderNo()); MemberShareRecord old = getOneByOrderNo(memberShareRecord.getOrderNo(), memberShareRecord.getMemberLevel());
if (old == null) { if (old == null) {
insertSelectiveRe(memberShareRecord); insertSelectiveRe(memberShareRecord);
updateAllLevelInfo(memberShareRecord); updateAllLevelInfo(memberShareRecord);
...@@ -161,7 +161,7 @@ public class MemberShareRecordBiz extends BaseBiz<MemberShareRecordMapper, Membe ...@@ -161,7 +161,7 @@ public class MemberShareRecordBiz extends BaseBiz<MemberShareRecordMapper, Membe
* 统计分成信息 * 统计分成信息
*/ */
public void generateData() { public void generateData() {
DateTime dateTime = DateTime.now().minusMonths(1); DateTime dateTime = DateTime.now();
Long startDate = DateUtils.getStartOfDay(dateTime.toDate()); Long startDate = DateUtils.getStartOfDay(dateTime.toDate());
Long endDate = DateUtils.getEndOfDay(dateTime.toDate()); Long endDate = DateUtils.getEndOfDay(dateTime.toDate());
List<MemberShareRecord> list = getAllByDate(startDate, endDate); List<MemberShareRecord> list = getAllByDate(startDate, endDate);
...@@ -188,7 +188,7 @@ public class MemberShareRecordBiz extends BaseBiz<MemberShareRecordMapper, Membe ...@@ -188,7 +188,7 @@ public class MemberShareRecordBiz extends BaseBiz<MemberShareRecordMapper, Membe
if (arr != null) { if (arr != null) {
for (String id : arr) { for (String id : arr) {
if (StringUtils.isNotBlank(id)) { if (StringUtils.isNotBlank(id)) {
Long userId = Long.parseLong(id); Long userId = Long.parseLong(id.trim());
if (amountMap.get(userId) != null) { if (amountMap.get(userId) != null) {
amountMap.put(userId, amountMap.get(userId).add(memberShareRecord.getAmount())); amountMap.put(userId, amountMap.get(userId).add(memberShareRecord.getAmount()));
} else { } else {
...@@ -237,8 +237,8 @@ public class MemberShareRecordBiz extends BaseBiz<MemberShareRecordMapper, Membe ...@@ -237,8 +237,8 @@ public class MemberShareRecordBiz extends BaseBiz<MemberShareRecordMapper, Membe
example.orderBy("level"); example.orderBy("level");
List<BaseUserMemberLevel> baseUserMemberLevelList = baseUserMemberLevelMapper.selectByExample(example); List<BaseUserMemberLevel> baseUserMemberLevelList = baseUserMemberLevelMapper.selectByExample(example);
if (baseUserMemberLevelList != null && baseUserMemberLevelList.size() > 0) { if (baseUserMemberLevelList != null && baseUserMemberLevelList.size() > 0) {
//如果购买会员是分成会员低级会员以及分成会员,才参与分成 //如果购买会员是分成会员低级会员以及分成会员,才参与分成
if (orderMemberDetail.getMemberLevel().compareTo(baseUserMemberLevelList.get(0).getLevel() - 1) >= 0) { if (orderMemberDetail.getMemberLevel().compareTo(baseUserMemberLevelList.get(0).getLevel() - 2) >= 0) {
//所有分成会员都需要新增一条记录 //所有分成会员都需要新增一条记录
for (BaseUserMemberLevel baseUserMemberLevel : baseUserMemberLevelList) { for (BaseUserMemberLevel baseUserMemberLevel : baseUserMemberLevelList) {
List<BaseUserMember> baseUserMemberList = baseUserMemberBiz.selectList(new BaseUserMember() {{ List<BaseUserMember> baseUserMemberList = baseUserMemberBiz.selectList(new BaseUserMember() {{
...@@ -256,14 +256,12 @@ public class MemberShareRecordBiz extends BaseBiz<MemberShareRecordMapper, Membe ...@@ -256,14 +256,12 @@ public class MemberShareRecordBiz extends BaseBiz<MemberShareRecordMapper, Membe
memberShareRecord.setMemberLevelId(baseUserMemberLevel.getId()); memberShareRecord.setMemberLevelId(baseUserMemberLevel.getId());
memberShareRecord.setUserId(orderMemberDetail.getBaseOrder().getUserId().longValue()); memberShareRecord.setUserId(orderMemberDetail.getBaseOrder().getUserId().longValue());
memberShareRecord.setOrderTime(orderMemberDetail.getCrtTime()); memberShareRecord.setOrderTime(orderMemberDetail.getCrtTime());
memberShareRecord.setTotalAmount(orderMemberDetail.getBaseOrder().getOrderAmount().multiply(baseUserMemberLevel.getShareAmount()).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP)); memberShareRecord.setTotalAmount(orderMemberDetail.getBaseOrder().getOrderAmount().multiply(baseUserMemberLevel.getShareAmount()).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP));
memberShareRecord.setMemberNum(userIds.size()); memberShareRecord.setMemberNum(userIds.size());
memberShareRecord.setAmount(baseUserMemberLevel.getShareAmount().divide(new BigDecimal(userIds.size()).setScale(2, BigDecimal.ROUND_HALF_UP))); memberShareRecord.setAmount(baseUserMemberLevel.getShareAmount().divide(new BigDecimal(userIds.size()),2, BigDecimal.ROUND_HALF_UP));
StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
userIds.parallelStream().forEach(id -> { userIds.parallelStream().forEach(id -> {
stringBuilder.append(","); stringBuilder.append("," + id + ",");
stringBuilder.append(id);
stringBuilder.append(",");
}); });
memberShareRecord.setMemberIds(stringBuilder.toString()); memberShareRecord.setMemberIds(stringBuilder.toString());
addUpdate(memberShareRecord); addUpdate(memberShareRecord);
...@@ -356,7 +354,7 @@ public class MemberShareRecordBiz extends BaseBiz<MemberShareRecordMapper, Membe ...@@ -356,7 +354,7 @@ public class MemberShareRecordBiz extends BaseBiz<MemberShareRecordMapper, Membe
} }
} }
public ObjectRestResponse selectCountList(MemberShareRecordDto memberShareRecordDto) { public ObjectRestResponse<PageDataVO<MemberShareRecordVo>> selectCountList(MemberShareRecordDto memberShareRecordDto) {
Query query = new Query(memberShareRecordDto); Query query = new Query(memberShareRecordDto);
PageDataVO<MemberShareRecordVo> pageDataVO = PageDataVO.pageInfo(query, () -> mapper.selectCountList(query.getSuper())); PageDataVO<MemberShareRecordVo> pageDataVO = PageDataVO.pageInfo(query, () -> mapper.selectCountList(query.getSuper()));
if (pageDataVO != null && pageDataVO.getData() != null) { if (pageDataVO != null && pageDataVO.getData() != null) {
...@@ -494,7 +492,8 @@ public class MemberShareRecordBiz extends BaseBiz<MemberShareRecordMapper, Membe ...@@ -494,7 +492,8 @@ public class MemberShareRecordBiz extends BaseBiz<MemberShareRecordMapper, Membe
* @throws Exception * @throws Exception
*/ */
public void exportCountRecordList(HttpServletResponse httpServletResponse, MemberShareRecordDto memberShareRecordDto) throws Exception { public void exportCountRecordList(HttpServletResponse httpServletResponse, MemberShareRecordDto memberShareRecordDto) throws Exception {
List<MemberShareRecordVo> memberShareRecordVoList = getAllCountRecord(memberShareRecordDto).getData(); memberShareRecordDto.setLimit(Integer.MAX_VALUE);
List<MemberShareRecordVo> memberShareRecordVoList = selectCountList(memberShareRecordDto).getData().getData();
if (memberShareRecordVoList != null) { if (memberShareRecordVoList != null) {
ExcelWriter writer = null; ExcelWriter writer = null;
try { try {
...@@ -507,12 +506,12 @@ public class MemberShareRecordBiz extends BaseBiz<MemberShareRecordMapper, Membe ...@@ -507,12 +506,12 @@ public class MemberShareRecordBiz extends BaseBiz<MemberShareRecordMapper, Membe
//处理数据 //处理数据
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
if (memberShareRecordVoList != null && memberShareRecordVoList.size() > 0) { if (memberShareRecordVoList != null && memberShareRecordVoList.size() > 0) {
for (MemberShareRecordVo memberShareRecord : memberShareRecordVoList) { for (MemberShareRecordVo memberShareRecordVo : memberShareRecordVoList) {
Map<String, Object> map = new HashMap(); Map<String, Object> map = new HashMap();
map.put("date", memberShareRecord.getDate()); map.put("date", memberShareRecordVo.getDate());
map.put("levelName", memberShareRecord.getLevelName()); map.put("levelName", memberShareRecordVo.getLevelName());
map.put("userNum", memberShareRecord.getUserNum()); map.put("userNum", memberShareRecordVo.getUserNum());
map.put("totalAmount", memberShareRecord.getTotalAmount()); map.put("totalAmount", memberShareRecordVo.getTotalAmount());
list.add(map); list.add(map);
} }
} }
......
...@@ -149,6 +149,7 @@ public class OrderMemberDetailBiz extends BaseBiz<OrderMemberDetailMapper,OrderM ...@@ -149,6 +149,7 @@ public class OrderMemberDetailBiz extends BaseBiz<OrderMemberDetailMapper,OrderM
ObjectRestResponse orr = userFeign.buyMember(userMemberDTO); ObjectRestResponse orr = userFeign.buyMember(userMemberDTO);
log.info("orr.getStatus() : " + orr.getStatus()); log.info("orr.getStatus() : " + orr.getStatus());
//发送消息队列到admin,进行分成计算 //发送消息队列到admin,进行分成计算
orderMemberDetail.setBaseOrder(baseOrder);
mqSenderFeign.sendMessage(RabbitConstant.ADMIN_TOPIC, RabbitConstant.KEY_MEMBER_SHARE, JSONUtil.toJsonStr(orderMemberDetail)); mqSenderFeign.sendMessage(RabbitConstant.ADMIN_TOPIC, RabbitConstant.KEY_MEMBER_SHARE, JSONUtil.toJsonStr(orderMemberDetail));
} }
......
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