## 阶段架构前台结构修改

This commit is contained in:
zhangheng 2025-10-27 10:12:58 +08:00
parent d80de779f3
commit dab8ac9f1a
4 changed files with 153 additions and 70 deletions

View File

@ -6,6 +6,7 @@ import com.hzs.member.base.param.CuMemberPointPairParam;
import com.hzs.member.structure.controller.dto.CuMemberPointDTO;
import com.hzs.member.structure.controller.vo.ChildCodeVO;
import com.hzs.member.structure.controller.vo.CuMemberPointDetailVO;
import com.hzs.member.structure.controller.vo.CuMemberPointListVO;
import com.hzs.member.structure.controller.vo.CuMemberThreeFrameworkVO;
import java.util.List;
@ -28,4 +29,6 @@ public interface ICumemberRetailDetailService {
CuMemberPointDetailVO getPointDetailByUserId(Long userId, Long pointMember,Integer stage, Integer point, String settleTableName);
List<CuMemberPointDTO> getPointDetailListByPoints(List<CuMemberPointPairParam> pairList, Integer stage, String settleTableName);
List<CuMemberPointListVO> convertToList(CuMemberRetailDetail cuMemberRetailDetail, String settleTableName);
}

View File

@ -17,6 +17,7 @@ import com.hzs.member.structure.controller.dto.CuMemberDetailDTO;
import com.hzs.member.structure.controller.dto.CuMemberPointDTO;
import com.hzs.member.structure.controller.vo.ChildCodeVO;
import com.hzs.member.structure.controller.vo.CuMemberPointDetailVO;
import com.hzs.member.structure.controller.vo.CuMemberPointListVO;
import com.hzs.member.structure.controller.vo.CuMemberThreeFrameworkVO;
import lombok.var;
import org.springframework.beans.factory.annotation.Autowired;
@ -47,55 +48,8 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetail
@Override
public List<Tree<String>> convertToNodeList(CuMemberRetailDetail cuMemberRetailDetail,String settleTableName) {
// 所有会员id
List<Long> ids = new ArrayList<>();
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()
).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));
// 所有点位信息
List<Integer> points = new ArrayList<>();
// 过滤所有空的点位信息
Stream.of(
cuMemberRetailDetail.getPoint11(), cuMemberRetailDetail.getPoint12(),
cuMemberRetailDetail.getPoint21(), cuMemberRetailDetail.getPoint22(), cuMemberRetailDetail.getPoint23(), cuMemberRetailDetail.getPoint24(),
cuMemberRetailDetail.getPoint31(), cuMemberRetailDetail.getPoint32(), cuMemberRetailDetail.getPoint33(), cuMemberRetailDetail.getPoint34(),
cuMemberRetailDetail.getPoint35(), cuMemberRetailDetail.getPoint36(), cuMemberRetailDetail.getPoint37(), cuMemberRetailDetail.getPoint38()
).filter(Objects::nonNull).forEach(points::add);
// 查询所有点位信息创建时间
List<CuMemberPointDTO> cuMemberPointDTOList;
if (points.isEmpty() || ids.isEmpty()) {
cuMemberPointDTOList = Collections.emptyList();
}else {
List<CuMemberPointPairParam> pairList = new ArrayList<>();
ids.remove(0);
Iterator<Long> idIter = ids.iterator();
Iterator<Integer> pointIter = points.iterator();
while (idIter.hasNext() && pointIter.hasNext()) {
pairList.add(new CuMemberPointPairParam(idIter.next(), pointIter.next()));
}
cuMemberPointDTOList = iCumemberRetailDetailService.getPointDetailListByPoints(pairList,cuMemberRetailDetail.getStage(),settleTableName);
}
Map<String, CuMemberPointDTO> collect = cuMemberPointDTOList.stream()
.collect(Collectors.toMap(
dto -> dto.getPkMember() + "-" + dto.getChildNode(),
Function.identity(),
(a, b) -> a
));
Map<Long, CuMember> memberMap = createMemberMap(cuMemberRetailDetail);
Map<String, CuMemberPointDTO> collect = createPointMap(cuMemberRetailDetail,settleTableName);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 构建node
List<Map<String, Object>> nodeList = new ArrayList<>();
@ -130,25 +84,6 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetail
memberMap
));
}
// nodeList.add(makeNode(EMemberChildNodeType.ROOT.getId(), EMemberChildNodeType.ROOT.getParentId(), EMemberChildNodeType.ROOT.getLabel(), sdf.format(cuMemberRetailDetail.getCreationTime()),cuMemberRetailDetail.getChildNode(),cuMemberRetailDetail.getPkMember(), memberMap));
//
// nodeList.add(makeNode(EMemberChildNodeType.NODE1.getId(), EMemberChildNodeType.NODE1.getParentId(), EMemberChildNodeType.NODE1.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint11(),sdf),cuMemberRetailDetail.getPoint11(), cuMemberRetailDetail.getPointMember11(), memberMap));
// nodeList.add(makeNode(EMemberChildNodeType.NODE2.getId(), EMemberChildNodeType.NODE2.getParentId(), EMemberChildNodeType.NODE2.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint12(),sdf),cuMemberRetailDetail.getPoint12(),cuMemberRetailDetail.getPointMember12(), memberMap));
//
// nodeList.add(makeNode(EMemberChildNodeType.NODE3.getId(), EMemberChildNodeType.NODE3.getParentId(), EMemberChildNodeType.NODE3.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint21(),sdf),cuMemberRetailDetail.getPoint21(),cuMemberRetailDetail.getPointMember21(), memberMap));
// nodeList.add(makeNode(EMemberChildNodeType.NODE4.getId(), EMemberChildNodeType.NODE4.getParentId(), EMemberChildNodeType.NODE4.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint22(),sdf),cuMemberRetailDetail.getPoint22(),cuMemberRetailDetail.getPointMember22(), memberMap));
// nodeList.add(makeNode(EMemberChildNodeType.NODE5.getId(), EMemberChildNodeType.NODE5.getParentId(), EMemberChildNodeType.NODE5.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint23(),sdf),cuMemberRetailDetail.getPoint23(),cuMemberRetailDetail.getPointMember23(), memberMap));
// nodeList.add(makeNode(EMemberChildNodeType.NODE6.getId(), EMemberChildNodeType.NODE6.getParentId(), EMemberChildNodeType.NODE6.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint24(),sdf),cuMemberRetailDetail.getPoint24(),cuMemberRetailDetail.getPointMember24(), memberMap));
//
// nodeList.add(makeNode(EMemberChildNodeType.NODE7.getId(), EMemberChildNodeType.NODE7.getParentId(), EMemberChildNodeType.NODE7.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint31(),sdf),cuMemberRetailDetail.getPoint31(),cuMemberRetailDetail.getPointMember31(), memberMap));
// nodeList.add(makeNode(EMemberChildNodeType.NODE8.getId(), EMemberChildNodeType.NODE8.getParentId(), EMemberChildNodeType.NODE8.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint32(),sdf),cuMemberRetailDetail.getPoint32(),cuMemberRetailDetail.getPointMember32(), memberMap));
// nodeList.add(makeNode(EMemberChildNodeType.NODE9.getId(), EMemberChildNodeType.NODE9.getParentId(), EMemberChildNodeType.NODE9.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint33(),sdf),cuMemberRetailDetail.getPoint33(),cuMemberRetailDetail.getPointMember33(), memberMap));
// nodeList.add(makeNode(EMemberChildNodeType.NODE10.getId(), EMemberChildNodeType.NODE10.getParentId(), EMemberChildNodeType.NODE10.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint34(),sdf),cuMemberRetailDetail.getPoint34(),cuMemberRetailDetail.getPointMember34(), memberMap));
// nodeList.add(makeNode(EMemberChildNodeType.NODE11.getId(), EMemberChildNodeType.NODE11.getParentId(), EMemberChildNodeType.NODE11.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint35(),sdf),cuMemberRetailDetail.getPoint35(),cuMemberRetailDetail.getPointMember35(), memberMap));
// nodeList.add(makeNode(EMemberChildNodeType.NODE12.getId(), EMemberChildNodeType.NODE12.getParentId(), EMemberChildNodeType.NODE12.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint36(),sdf),cuMemberRetailDetail.getPoint36(),cuMemberRetailDetail.getPointMember36(), memberMap));
// nodeList.add(makeNode(EMemberChildNodeType.NODE13.getId(), EMemberChildNodeType.NODE13.getParentId(), EMemberChildNodeType.NODE13.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint37(),sdf),cuMemberRetailDetail.getPoint37(),cuMemberRetailDetail.getPointMember37(), memberMap));
// nodeList.add(makeNode(EMemberChildNodeType.NODE14.getId(), EMemberChildNodeType.NODE14.getParentId(), EMemberChildNodeType.NODE14.getLabel(), safeFormatTime(collect,cuMemberRetailDetail.getPoint38(),sdf),cuMemberRetailDetail.getPoint38(),cuMemberRetailDetail.getPointMember38(), memberMap));
// 构造树结构
return TreeUtil.build(nodeList, EMemberChildNodeType.ROOT.getParentId(), (node, tree) -> {
tree.setId((String) node.get("id"));
@ -184,7 +119,7 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetail
private String safeFormatTime(Map<String, CuMemberPointDTO> collect,Long pkMember, Integer pointKey, SimpleDateFormat sdf) {
var detail = collect.get(pkMember + "-" + pointKey);
if (detail == null || detail.getCreationTime() == null) {
return "";
return null;
}
return sdf.format(detail.getCreationTime());
}
@ -225,6 +160,98 @@ public class ICumemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetail
return baseMapper.getPointDetailListByPoints(pairList,stage,settleTableName);
}
@Override
public List<CuMemberPointListVO> convertToList(CuMemberRetailDetail cuMemberRetailDetail, String settleTableName) {
ArrayList<CuMemberPointListVO> list = new ArrayList<>();
Map<Long, CuMember> memberMap = createMemberMap(cuMemberRetailDetail);
Map<String, CuMemberPointDTO> collect = createPointMap(cuMemberRetailDetail,settleTableName);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
for (EMemberChildNodeType type : EMemberChildNodeType.values()) {
if (type == EMemberChildNodeType.ROOT) {
continue;
}
Integer point = (Integer) type.getPointValue(cuMemberRetailDetail);
Long pointMember = (Long) type.getPointMemberValue(cuMemberRetailDetail);
CuMemberPointListVO build = CuMemberPointListVO.builder()
.point(type.getId())
.pkMember(pointMember)
.childNode(point)
.build();
if (pointMember != null && memberMap.containsKey(pointMember)) {
build.setMemberCode(memberMap.get(pointMember).getMemberCode());
build.setMemberName(memberMap.get(pointMember).getMemberName());
}
build.setStage(safeStage(collect,pointMember,point));
build.setStageSort(safeStageSort(collect,pointMember,point));
build.setCreationTime(safeFormatTime(collect,pointMember,point,sdf));
list.add(build);
}
return list;
}
private Map<String, CuMemberPointDTO> createPointMap(CuMemberRetailDetail cuMemberRetailDetail,String settleTableName){
// 所有会员id
List<Long> ids = new ArrayList<>();
// 过滤空的会员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()
).filter(Objects::nonNull).forEach(ids::add);
// 所有点位信息
List<Integer> points = new ArrayList<>();
// 过滤所有空的点位信息
Stream.of(
cuMemberRetailDetail.getPoint11(), cuMemberRetailDetail.getPoint12(),
cuMemberRetailDetail.getPoint21(), cuMemberRetailDetail.getPoint22(), cuMemberRetailDetail.getPoint23(), cuMemberRetailDetail.getPoint24(),
cuMemberRetailDetail.getPoint31(), cuMemberRetailDetail.getPoint32(), cuMemberRetailDetail.getPoint33(), cuMemberRetailDetail.getPoint34(),
cuMemberRetailDetail.getPoint35(), cuMemberRetailDetail.getPoint36(), cuMemberRetailDetail.getPoint37(), cuMemberRetailDetail.getPoint38()
).filter(Objects::nonNull).forEach(points::add);
// 查询所有点位信息创建时间
List<CuMemberPointDTO> cuMemberPointDTOList;
if (points.isEmpty() || ids.isEmpty()) {
cuMemberPointDTOList = Collections.emptyList();
}else {
List<CuMemberPointPairParam> pairList = new ArrayList<>();
Iterator<Long> idIter = ids.iterator();
Iterator<Integer> pointIter = points.iterator();
while (idIter.hasNext() && pointIter.hasNext()) {
pairList.add(new CuMemberPointPairParam(idIter.next(), pointIter.next()));
}
cuMemberPointDTOList = iCumemberRetailDetailService.getPointDetailListByPoints(pairList,cuMemberRetailDetail.getStage(),settleTableName);
}
return cuMemberPointDTOList.stream()
.collect(Collectors.toMap(
dto -> dto.getPkMember() + "-" + dto.getChildNode(),
Function.identity(),
(a, b) -> a
));
}
private Map<Long, CuMember> createMemberMap(CuMemberRetailDetail cuMemberRetailDetail){
// 所有会员id
List<Long> ids = new ArrayList<>();
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()
).filter(Objects::nonNull).forEach(ids::add);
// 查找对应会员信息
List<CuMember> members;
if (ids.isEmpty()) {
members = Collections.emptyList();
} else {
members = iCuMemberService.listByIds(new ArrayList<>(ids));
}
return members.stream()
.collect(Collectors.toMap(CuMember::getPkId, Function.identity(), (a, b) -> a));
}
private CuMemberPointDetailVO makeCuMemberPointDetailVO(CuMemberDetailDTO cuMemberDetailDTO, CuMemberPointDTO cuMemberPointDTO,Integer point) {
return CuMemberPointDetailVO.builder()
.memberCode(cuMemberDetailDTO.getMemberCode())

View File

@ -16,8 +16,10 @@ import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.member.achieve.service.ICuMemberSettlePeriodService;
import com.hzs.member.base.service.ICuMemberService;
import com.hzs.member.base.service.ICumemberRetailDetailService;
import com.hzs.member.structure.controller.dto.CuMemberPointDTO;
import com.hzs.member.structure.controller.vo.ChildCodeVO;
import com.hzs.member.structure.controller.vo.CuMemberPointDetailVO;
import com.hzs.member.structure.controller.vo.CuMemberPointListVO;
import com.hzs.member.structure.controller.vo.CuMemberThreeFrameworkVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -82,7 +84,7 @@ public class ApiMemberStructureController extends BaseController {
return AjaxResult.error("数据查询错误,请联系客服处理");
}
// 拼接树形结构
List<Tree<String>> cuMemberRetailTree = iCumemberRetailDetailService.convertToNodeList(cuMemberRetailDetail,settleTableName);
List<CuMemberPointListVO> cuMemberRetailTree = iCumemberRetailDetailService.convertToList(cuMemberRetailDetail,settleTableName);
return AjaxResult.success(cuMemberRetailTree);
}
/**

View File

@ -0,0 +1,51 @@
package com.hzs.member.structure.controller.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class CuMemberPointListVO {
/**
* 会员编号
*/
private String memberCode;
/**
* 会员姓名
*/
private String memberName;
/**
* 点位位置
*/
private String point;
/**
* 会员主键信息
*/
private Long pkMember;
/**
* 点位信息
*/
private Integer stageSort;
/**
* 点位信息
*/
private Integer childNode;
/**
* 阶段信息
*/
private Integer stage;
/**
* 点位创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private String creationTime;
}