## 三阶段架构,子会员节点查询
This commit is contained in:
parent
e3fae413a6
commit
619e6f1006
|
@ -0,0 +1,23 @@
|
|||
package com.hzs.member.base.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
|
||||
import com.hzs.member.structure.controller.vo.ChildCodeVO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface CuMemberRetailDetailMapper extends BaseMapper<CuMemberRetailDetail> {
|
||||
List<ChildCodeVO> getChildList(@Param("memberCode") String memberCode,
|
||||
@Param("stage")Integer stage,
|
||||
@Param("stageStatus")Integer stageStatus,
|
||||
@Param("settleTableName")String settleTableName);
|
||||
|
||||
CuMemberRetailDetail getCuMemberRetailDetailExt(@Param("memberCode")String memberCode,
|
||||
@Param("stage")Integer stage,
|
||||
@Param("stageStatus")Integer stageStatus,
|
||||
@Param("childNode")String childNode,
|
||||
@Param("settleTableName")String settleTableName);
|
||||
|
||||
Integer getFindCumemberRetailDetail(@Param("settleTableName") String settleTableName);
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
package com.hzs.member.base.service;
|
||||
|
||||
import cn.hutool.core.lang.tree.Tree;
|
||||
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
|
||||
import com.hzs.member.structure.controller.vo.ChildCodeVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ICumemberRetailDetail {
|
||||
List<ChildCodeVO> getChildList(String memberCode, Integer stage, Integer stageStatus, String settleTableName);
|
||||
|
||||
CuMemberRetailDetail getCuMemberRetailDetail(String memberCode, Integer stage, Integer stageStatus, String childNode, String settleTableName);
|
||||
|
||||
Integer getFindCumemberRetailDetail(String settleTableName);
|
||||
|
||||
List<Tree<String>> convertToNodeList(CuMemberRetailDetail cuMemberRetailDetail);
|
||||
}
|
|
@ -0,0 +1,115 @@
|
|||
package com.hzs.member.base.service.impl;
|
||||
|
||||
import cn.hutool.core.lang.tree.Tree;
|
||||
import cn.hutool.core.lang.tree.TreeUtil;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
|
||||
import com.hzs.common.domain.member.base.CuMember;
|
||||
import com.hzs.member.base.mapper.CuMemberRetailDetailMapper;
|
||||
import com.hzs.member.base.service.ICuMemberService;
|
||||
import com.hzs.member.base.service.ICumemberRetailDetail;
|
||||
import com.hzs.member.structure.controller.vo.ChildCodeVO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@Service
|
||||
public class ICumemberRetailDetailImpl extends ServiceImpl<CuMemberRetailDetailMapper, CuMemberRetailDetail> implements ICumemberRetailDetail {
|
||||
@Autowired
|
||||
private ICuMemberService iCuMemberService;
|
||||
@Override
|
||||
public List<ChildCodeVO> getChildList(String memberCode, Integer stage, Integer stageStatus, String settleTableName) {
|
||||
return baseMapper.getChildList(memberCode,stage,stageStatus,settleTableName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CuMemberRetailDetail getCuMemberRetailDetail(String memberCode, Integer stage, Integer stageStatus,String childNode,String settleTableName) {
|
||||
return baseMapper.getCuMemberRetailDetailExt(memberCode,stage,stageStatus,childNode,settleTableName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer getFindCumemberRetailDetail(String settleTableName) {
|
||||
return baseMapper.getFindCumemberRetailDetail(settleTableName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Tree<String>> convertToNodeList(CuMemberRetailDetail cuMemberRetailDetail) {
|
||||
// 所有会员id
|
||||
Set<Long> ids = new LinkedHashSet<>();
|
||||
ids.add(cuMemberRetailDetail.getPkMember());
|
||||
// 过滤空的会员id
|
||||
Stream.of(
|
||||
cuMemberRetailDetail.getPointMember11(), cuMemberRetailDetail.getPointMember12(),
|
||||
cuMemberRetailDetail.getPointMember21(), cuMemberRetailDetail.getPointMember22(), cuMemberRetailDetail.getPointMember23(), cuMemberRetailDetail.getPointMember24(),
|
||||
cuMemberRetailDetail.getPointMember31(), cuMemberRetailDetail.getPointMember32(), cuMemberRetailDetail.getPointMember33(), cuMemberRetailDetail.getPointMember34(),
|
||||
cuMemberRetailDetail.getPointMember35(), cuMemberRetailDetail.getPointMember36(), cuMemberRetailDetail.getPointMember37(), cuMemberRetailDetail.getPointMember38(),
|
||||
cuMemberRetailDetail.getPointMemberFirst(), cuMemberRetailDetail.getPointMemberSecond(), cuMemberRetailDetail.getPointMemberThird()
|
||||
).filter(Objects::nonNull).forEach(ids::add);
|
||||
|
||||
// 查找对应会员信息
|
||||
List<CuMember> members;
|
||||
if (ids.isEmpty()) {
|
||||
members = Collections.emptyList();
|
||||
} else {
|
||||
members = iCuMemberService.listByIds(new ArrayList<>(ids));
|
||||
}
|
||||
|
||||
Map<Long, CuMember> memberMap = members.stream()
|
||||
.collect(Collectors.toMap(CuMember::getPkId, Function.identity(), (a, b) -> a));
|
||||
|
||||
// 构建node
|
||||
List<Map<String, Object>> nodeList = new ArrayList<>();
|
||||
nodeList.add(makeNode("root", "0", "root", cuMemberRetailDetail.getPkMember(), memberMap));
|
||||
|
||||
nodeList.add(makeNode("1", "root", "1", cuMemberRetailDetail.getPointMember11(), memberMap));
|
||||
nodeList.add(makeNode("2", "root", "2", cuMemberRetailDetail.getPointMember12(), memberMap));
|
||||
|
||||
nodeList.add(makeNode("3", "1", "3", cuMemberRetailDetail.getPointMember21(), memberMap));
|
||||
nodeList.add(makeNode("4", "1", "4", cuMemberRetailDetail.getPointMember22(), memberMap));
|
||||
nodeList.add(makeNode("5", "2", "5", cuMemberRetailDetail.getPointMember23(), memberMap));
|
||||
nodeList.add(makeNode("6", "2", "6", cuMemberRetailDetail.getPointMember24(), memberMap));
|
||||
|
||||
nodeList.add(makeNode("7", "3", "7", cuMemberRetailDetail.getPointMember31(), memberMap));
|
||||
nodeList.add(makeNode("8", "3", "8", cuMemberRetailDetail.getPointMember32(), memberMap));
|
||||
nodeList.add(makeNode("9", "4", "9", cuMemberRetailDetail.getPointMember33(), memberMap));
|
||||
nodeList.add(makeNode("10", "4", "10", cuMemberRetailDetail.getPointMember34(), memberMap));
|
||||
nodeList.add(makeNode("11", "5", "11", cuMemberRetailDetail.getPointMember35(), memberMap));
|
||||
nodeList.add(makeNode("12", "5", "12", cuMemberRetailDetail.getPointMember36(), memberMap));
|
||||
nodeList.add(makeNode("13", "6", "13", cuMemberRetailDetail.getPointMember37(), memberMap));
|
||||
nodeList.add(makeNode("14", "6", "14", cuMemberRetailDetail.getPointMember38(), memberMap));
|
||||
|
||||
// 构造树结构
|
||||
return TreeUtil.build(nodeList, "0", (node, tree) -> {
|
||||
tree.setId((String) node.get("id"));
|
||||
tree.setParentId((String) node.get("parentId"));
|
||||
tree.setName((String) node.get("label"));
|
||||
tree.putExtra("memberCode", node.get("memberCode"));
|
||||
tree.putExtra("memberName", node.get("memberName"));
|
||||
tree.putExtra("nodeCode", node.get("nodeCode"));
|
||||
});
|
||||
}
|
||||
private Map<String, Object> makeNode(String id, String parentId, String label,
|
||||
Long memberId, Map<Long, CuMember> memberMap) {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("id", id);
|
||||
map.put("parentId", parentId);
|
||||
map.put("label", label);
|
||||
map.put("nodeCode", label);
|
||||
|
||||
if (memberId != null && memberMap.containsKey(memberId)) {
|
||||
CuMember member = memberMap.get(memberId);
|
||||
map.put("memberCode", member.getMemberCode());
|
||||
map.put("memberName", member.getMemberName());
|
||||
} else {
|
||||
// 没有信息置空
|
||||
map.put("memberCode", "");
|
||||
map.put("memberName", "");
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
}
|
|
@ -3,19 +3,26 @@ package com.hzs.member.structure.controller.manage;
|
|||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.tree.Tree;
|
||||
import com.alibaba.fastjson2.JSONArray;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.hzs.common.core.annotation.AccessPermissions;
|
||||
import com.hzs.common.core.annotation.Log;
|
||||
import com.hzs.common.core.constant.*;
|
||||
import com.hzs.common.core.constant.msg.CommonMsgConstants;
|
||||
import com.hzs.common.core.constant.msg.MemberMsgConstants;
|
||||
import com.hzs.common.core.domain.R;
|
||||
import com.hzs.common.core.enums.EOperationBusiness;
|
||||
import com.hzs.common.core.enums.EOperationMethod;
|
||||
import com.hzs.common.core.enums.EOperationModule;
|
||||
import com.hzs.common.core.enums.EYesNo;
|
||||
import com.hzs.common.core.utils.DateUtils;
|
||||
import com.hzs.common.core.utils.StringUtils;
|
||||
import com.hzs.common.core.utils.sign.Base64Util;
|
||||
import com.hzs.common.core.web.controller.BaseController;
|
||||
import com.hzs.common.core.web.domain.AjaxResult;
|
||||
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
|
||||
import com.hzs.common.domain.member.achieve.CuMemberSettlePeriod;
|
||||
import com.hzs.common.domain.member.achieve.ext.CuMemberRetailSExt;
|
||||
import com.hzs.common.domain.member.base.CuMember;
|
||||
|
@ -24,11 +31,14 @@ import com.hzs.common.util.TransactionUtils;
|
|||
import com.hzs.member.achieve.service.ICuMemberSettlePeriodService;
|
||||
import com.hzs.member.achieve.service.ICuMemberTreeService;
|
||||
import com.hzs.member.base.service.ICuMemberService;
|
||||
import com.hzs.member.base.service.ICumemberRetailDetail;
|
||||
import com.hzs.member.structure.controller.vo.ChildCodeVO;
|
||||
import com.hzs.member.structure.controller.vo.CuMemberSettlePeriodVo;
|
||||
import com.hzs.system.config.IGradeServiceApi;
|
||||
import com.hzs.system.config.dto.GradeDTO;
|
||||
import com.hzs.system.sys.IUserServiceApi;
|
||||
import com.hzs.system.sys.dto.UserAuthorityDTO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
@ -38,6 +48,7 @@ import java.util.*;
|
|||
/**
|
||||
* 架构管理
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/manage/member-structure")
|
||||
public class MemberStructureController extends BaseController {
|
||||
|
@ -49,6 +60,8 @@ public class MemberStructureController extends BaseController {
|
|||
@Autowired
|
||||
private ICuMemberService iCuMemberService;
|
||||
|
||||
@Autowired
|
||||
private ICumemberRetailDetail iCumemberRetailDetail;
|
||||
@DubboReference
|
||||
IUserServiceApi iUserServiceApi;
|
||||
@DubboReference
|
||||
|
@ -193,6 +206,68 @@ public class MemberStructureController extends BaseController {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 三阶段架构
|
||||
* @param memberSettlePeriodId
|
||||
* @param memberCode
|
||||
* @param stage
|
||||
* @param childNode
|
||||
* @param stageStatus
|
||||
* @return
|
||||
*/
|
||||
@Log(module = EOperationModule.MEMBER_RETAIL_TREE, business = EOperationBusiness.MEMBER_RETAIL_TREE, method = EOperationMethod.SELECT)
|
||||
@GetMapping("/three-framework")
|
||||
public AjaxResult Framework(Long memberSettlePeriodId, String memberCode,Integer stage,String childNode,Integer stageStatus) {
|
||||
if (memberSettlePeriodId == null || memberCode == null || stage == null || stageStatus == null || childNode == null) {
|
||||
log.error("参数错误");
|
||||
return AjaxResult.error(CommonMsgConstants.MISSING_PARAM);
|
||||
}
|
||||
CuMemberSettlePeriod csPeriod = iCuMemberSettlePeriodService.getById(memberSettlePeriodId);
|
||||
log.info("日结信息{}",csPeriod);
|
||||
String settleTableName = TableNameConstants.CU_MEMBER_RETAIL_RANGE_DETAIL + csPeriod.getPkId();
|
||||
log.info("日结表名称{}",settleTableName);
|
||||
// 校验当前日结表是否存在
|
||||
Integer isFind = iCumemberRetailDetail.getFindCumemberRetailDetail(settleTableName);
|
||||
if (isFind != 1) {
|
||||
log.error("当前表名不存在{}",settleTableName);
|
||||
return AjaxResult.error("当前日结信息表不存在",settleTableName);
|
||||
}
|
||||
CuMemberRetailDetail cuMemberRetailDetail = iCumemberRetailDetail.getCuMemberRetailDetail(memberCode,stage,stageStatus,childNode,settleTableName);
|
||||
log.info("日结表会员信息{}",cuMemberRetailDetail);
|
||||
// 拼接树形结构
|
||||
List<Tree<String>> cuMemberRetailTree = iCumemberRetailDetail.convertToNodeList(cuMemberRetailDetail);
|
||||
return AjaxResult.success(cuMemberRetailTree);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询子节点
|
||||
* @param memberSettlePeriodId
|
||||
* @param memberCode
|
||||
* @param stage
|
||||
* @param stageStatus
|
||||
* @return
|
||||
*/
|
||||
@Log(module = EOperationModule.MEMBER_RETAIL_CHILDNODE, business = EOperationBusiness.MEMBER_RETAIL_CHILDNODE, method = EOperationMethod.SELECT)
|
||||
@GetMapping("/childList")
|
||||
public AjaxResult Framework(Long memberSettlePeriodId, String memberCode,Integer stage,Integer stageStatus) {
|
||||
if (memberSettlePeriodId == null || memberCode == null || stage == null || stageStatus == null) {
|
||||
log.error("参数错误");
|
||||
return AjaxResult.error(CommonMsgConstants.MISSING_PARAM);
|
||||
}
|
||||
CuMemberSettlePeriod csPeriod = iCuMemberSettlePeriodService.getById(memberSettlePeriodId);
|
||||
log.info("日结信息{}",csPeriod);
|
||||
String settleTableName = TableNameConstants.CU_MEMBER_RETAIL_RANGE_DETAIL + csPeriod.getPkId();
|
||||
log.info("日结表名称{}",settleTableName);
|
||||
// 校验当前日结表是否存在
|
||||
Integer isFind = iCumemberRetailDetail.getFindCumemberRetailDetail(settleTableName);
|
||||
if (isFind != 1) {
|
||||
log.error("当前表名不存在{}",settleTableName);
|
||||
return AjaxResult.error("当前日结信息表不存在",settleTableName);
|
||||
}
|
||||
List<ChildCodeVO> childCodeList = iCumemberRetailDetail.getChildList(memberCode,stage,stageStatus,settleTableName);
|
||||
return AjaxResult.success(childCodeList);
|
||||
}
|
||||
/**
|
||||
* 查询最近一月所有期数
|
||||
*
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
package com.hzs.member.structure.controller.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
|
||||
public class ChildCodeVO {
|
||||
/**
|
||||
* 子会员节点
|
||||
*/
|
||||
Integer childNode;
|
||||
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.hzs.member.base.mapper.CuMemberRetailDetailMapper">
|
||||
|
||||
<select id="getChildList" resultType="com.hzs.member.structure.controller.vo.ChildCodeVO">
|
||||
SELECT
|
||||
cud.CHILD_NODE
|
||||
FROM
|
||||
CU_MEMBER cu LEFT JOIN
|
||||
${ settleTableName } cud ON cu.PK_ID = cud.PK_MEMBER
|
||||
WHERE
|
||||
cu.MEMBER_CODE = #{ memberCode }
|
||||
AND cud.STAGE = #{ stage }
|
||||
AND cud.STAGE_STATUS = #{ stageStatus }
|
||||
</select>
|
||||
|
||||
<select id="getFindCumemberRetailDetail" resultType="java.lang.Integer">
|
||||
select 1
|
||||
from user_tables
|
||||
where table_name = upper(#{settleTableName})
|
||||
</select>
|
||||
<select id="getCuMemberRetailDetailExt"
|
||||
resultType="com.hzs.common.domain.member.achieve.CuMemberRetailDetail">
|
||||
SELECT
|
||||
cud.*
|
||||
FROM
|
||||
CU_MEMBER cu
|
||||
LEFT JOIN ${ settleTableName } cud ON cu.PK_ID = cud.PK_MEMBER
|
||||
WHERE
|
||||
cu.MEMBER_CODE = #{ memberCode }
|
||||
AND STAGE = #{stage}
|
||||
AND STAGE_STATUS = #{stageStatus}
|
||||
AND CHILD_NODE = #{childNode}
|
||||
</select>
|
||||
</mapper>
|
|
@ -402,6 +402,8 @@ public enum EOperationBusiness {
|
|||
MONTHLY_JOB_LEVEL("月度职级名单查询"),
|
||||
MEMBER_RISK_CONTROL("K值风控设置"),
|
||||
MEMBER_RETAIL_STAT("收益区域数据"),
|
||||
MEMBER_RETAIL_CHILDNODE("会员子节点查询"),
|
||||
MEMBER_RETAIL_TREE("三阶段结构")
|
||||
;
|
||||
|
||||
|
||||
|
|
|
@ -401,6 +401,8 @@ public enum EOperationModule {
|
|||
|
||||
MEMBER_RISK_CONTROL("K值风控设置"),
|
||||
ORDER_SYNC("同步失败订单"),
|
||||
MEMBER_RETAIL_CHILDNODE("会员子节点查询"),
|
||||
MEMBER_RETAIL_TREE("三阶段结构")
|
||||
;
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue