## Feat - H5个人拓展结余接口

This commit is contained in:
sangelxiu1 2025-06-25 09:20:40 +08:00
parent df316c164f
commit d3d416d377
3 changed files with 156 additions and 2 deletions

View File

@ -1,6 +1,7 @@
package com.hzs.system.base;
import com.hzs.common.core.domain.R;
import com.hzs.common.domain.system.config.BdBonusExpand;
import com.hzs.system.base.dto.BdCubasdocDTO;
import java.util.Collection;
@ -50,4 +51,5 @@ public interface ISystemConfigServiceApi {
**/
R<BdCubasdocDTO> queryBdCubasdocByUser(Long pkUser);
R<BdBonusExpand> getBdBonusExpand();
}

View File

@ -7,13 +7,20 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.lang.tree.TreeUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.hzs.common.core.constant.*;
import com.hzs.common.core.constant.CountryConstants;
import com.hzs.common.core.constant.MemberConstants;
import com.hzs.common.core.constant.MemberFrameworkConstants;
import com.hzs.common.core.constant.TableNameConstants;
import com.hzs.common.core.constant.msg.MemberMsgConstants;
import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.*;
import com.hzs.common.core.enums.ECategory;
import com.hzs.common.core.enums.EGrade;
import com.hzs.common.core.enums.EPlaceDept;
import com.hzs.common.core.enums.EYesNo;
import com.hzs.common.core.utils.CommonUtil;
import com.hzs.common.core.utils.DateUtils;
import com.hzs.common.core.utils.StringUtils;
@ -24,6 +31,7 @@ import com.hzs.common.domain.member.base.CuMember;
import com.hzs.common.domain.member.ext.CuMemberExt;
import com.hzs.common.domain.member.ext.CuMemberSettleExt;
import com.hzs.common.domain.system.base.BdCountry;
import com.hzs.common.domain.system.config.BdBonusExpand;
import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.common.util.TransactionUtils;
import com.hzs.member.achieve.service.ICuMemberSettlePeriodService;
@ -31,16 +39,21 @@ import com.hzs.member.achieve.service.ICuMemberTreeService;
import com.hzs.member.base.service.ICuMemberService;
import com.hzs.member.structure.controller.vo.CuMemberSettlePeriodVo;
import com.hzs.system.base.ICountryServiceApi;
import com.hzs.system.base.ISystemConfigServiceApi;
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.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Date;
@ -50,6 +63,7 @@ import java.util.stream.Collectors;
@RestController
@RequestMapping("/api/member-structure")
@Slf4j
public class ApiMemberStructureController extends BaseController {
@Autowired
@ -65,6 +79,8 @@ public class ApiMemberStructureController extends BaseController {
IUserServiceApi iUserServiceApi;
@DubboReference
ICountryServiceApi iCountryServiceApi;
@DubboReference
ISystemConfigServiceApi systemConfigServiceApi;
/**
* 安置架构网体
@ -544,4 +560,126 @@ public class ApiMemberStructureController extends BaseController {
return AjaxResult.success(array);
}
@GetMapping("/az-framework")
public AjaxResult azFramework() {
Integer level = 1;
List<Tree<String>> result = null;
// 体系
UserAuthorityDTO userAuthorityDTO = iUserServiceApi.getUserAuthority(SecurityUtils.getUserId()).getData();
List<Integer> vertexIdList = userAuthorityDTO.getVertexIdList();
Date date = new Date();
String time = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, date);
LocalDate beforeLocalDate = DateUtils.getStringToLocalDate(time).minus(1, ChronoUnit.DAYS);
time = beforeLocalDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
Long pkMember = SecurityUtils.getUserId();
Integer period = null;
Date settleDate = null;
CuMemberSettlePeriod csPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(time);
if (csPeriod != null) {
period = csPeriod.getPkId();
settleDate = csPeriod.getSettleDate();
}
// 查询当天 (秒结)
// if (settleDate != null
// && DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, settleDate).equals(DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, new Date()))) {
if(1 == 2) {
// 会员结算秒结表
String settleTableName = TableNameConstants.CU_MEMBER_SECOND + period;
// 查询所有用户表数据 id
// 查询秒结 如果 秒结表 没有则去 历史表
Integer tableNumber = iCuMemberTreeService.queryExistOracleTable(settleTableName);
if (tableNumber != null && tableNumber == 1) {
List<CuMemberSettleExt> cuMemberSettleExts;
// 查询今日会员表是否有值
Long treeMemberCount = iCuMemberTreeService.selectByselectByTreeMemberCount(settleTableName, pkMember);
if (treeMemberCount > 0) {
//表格存在
cuMemberSettleExts = iCuMemberTreeService.selectByTreeMemberList(pkMember, settleTableName, level, vertexIdList);
} else {
DateTime dateTime = DateUtil.offsetDay(DateUtils.currentDate(), -1);
time = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, dateTime);
csPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(time);
if (csPeriod != null) {
period = csPeriod.getPkId();
}
settleTableName = TableNameConstants.CU_MEMBER_SETTLE + period;
cuMemberSettleExts = iCuMemberTreeService.selectByTreeMemberList(pkMember, settleTableName, level, vertexIdList);
}
// 查询顶点
CuMemberSettleExt memberSettleExt = iCuMemberTreeService.queryCuMemberTreeByPkMemberTable(settleTableName, pkMember);
if (MemberConstants.GJ30720200CODE.equals(memberSettleExt.getParentMemberCode())) {
memberSettleExt.setParentMemberCode(memberSettleExt.getMemberCode());
}
memberSettleExt.setLevel(0);
// 添加自身
cuMemberSettleExts.add(memberSettleExt);
List<Tree<String>> build = iCuMemberService.systemAzSetListTree(cuMemberSettleExts, memberSettleExt);
// 安置架构 无点位 追加空点位
R<Map<Integer, BdCountry>> allCountryMap = iCountryServiceApi.getAllCountryMap();
Map<Integer, BdCountry> allCountryData = allCountryMap.getData();
result = setTreeList(build, level, allCountryData);
} else {
// 查询表格是否存在
tableNumber = iCuMemberTreeService.queryExistOracleTable(settleTableName);
if (tableNumber == null) {
settleTableName = null;
}
// 查询顶点
CuMemberSettleExt memberSettleExt = iCuMemberTreeService.queryCuMemberTreeByPkMemberTable(settleTableName, pkMember);
if (MemberConstants.GJ30720200CODE.equals(memberSettleExt.getParentMemberCode())) {
memberSettleExt.setParentMemberCode(memberSettleExt.getMemberCode());
}
memberSettleExt.setLevel(0);
//查询下级
List<CuMemberSettleExt> list = iCuMemberTreeService.queryCuMemberTreePlaceParentHistoryTable(settleTableName, pkMember, new ArrayList<>(), level);
// 无法查询到自身 所有单独查询自身并且添加
list.add(memberSettleExt);
List<Tree<String>> build = iCuMemberService.systemAzSetListTree(list, memberSettleExt);
// 安置架构 无点位 追加空点位
R<Map<Integer, BdCountry>> allCountryMap = iCountryServiceApi.getAllCountryMap();
Map<Integer, BdCountry> allCountryData = allCountryMap.getData();
result = setTreeList(build, level, allCountryData);
}
} else {
// 查询 历史
String settleTableName = TableNameConstants.CU_MEMBER_SETTLE + period;
Integer tableNumber = iCuMemberTreeService.queryExistOracleTable(settleTableName);
if (tableNumber != null && tableNumber == 1) {
// 表示表格存在
// 查询顶点
CuMemberSettleExt memberSettleExt = iCuMemberTreeService.queryCuMemberTreeByPkMemberTable(settleTableName, pkMember);
if (MemberConstants.GJ30720200CODE.equals(memberSettleExt.getParentMemberCode())) {
memberSettleExt.setParentMemberCode(memberSettleExt.getMemberCode());
}
memberSettleExt.setLevel(0);
//查询下级
List<CuMemberSettleExt> list = iCuMemberTreeService.queryCuMemberTreePlaceParentHistoryFramework(settleTableName, pkMember, new ArrayList<>(), level);
// 无法查询到自身 所有单独查询自身并且添加
list.add(memberSettleExt);
List<Tree<String>> build = iCuMemberService.systemAzSetListTree(list, memberSettleExt);
// 安置架构 无点位 追加空点位
R<Map<Integer, BdCountry>> allCountryMap = iCountryServiceApi.getAllCountryMap();
Map<Integer, BdCountry> allCountryData = allCountryMap.getData();
result = setTreeList(build, level, allCountryData);
}
}
BdBonusExpand bdBonusExpand = systemConfigServiceApi.getBdBonusExpand().getData();
assert result != null;
String leftFirstSurplusStr = result.get(0).get("leftFirstSurplus").toString();
String rightFirstSurplusStr = result.get(0).get("rightFirstSurplus").toString();
BigDecimal leftFirstSurplus = new BigDecimal(leftFirstSurplusStr.replaceAll(",", ""));
BigDecimal rightFirstSurplus = new BigDecimal(rightFirstSurplusStr.replaceAll(",", ""));
log.info("result : {}", JSONUtil.toJsonStr(result));
if(leftFirstSurplus.compareTo(bdBonusExpand.getExpandSmall()) > 0){
result.get(0).putExtra("leftFirstSurplus", bdBonusExpand.getExpandSmall().toString());
}
if(rightFirstSurplus.compareTo(bdBonusExpand.getExpandBig()) > 0){
result.get(0).putExtra("rightFirstSurplus", bdBonusExpand.getExpandBig().toString());
}
JSONObject data = new JSONObject();
data.put("tree", result);
data.put("config", bdBonusExpand);
return AjaxResult.success(data);
}
}

View File

@ -2,17 +2,20 @@ package com.hzs.system.base.provider;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.ESystemConfig;
import com.hzs.common.core.utils.ComputeUtil;
import com.hzs.common.domain.system.base.BdCountry;
import com.hzs.common.domain.system.base.ext.BdCubasdocExt;
import com.hzs.common.domain.system.config.BdBonusExpand;
import com.hzs.system.base.ISystemConfigServiceApi;
import com.hzs.system.base.dto.BdCubasdocDTO;
import com.hzs.system.base.param.BdCubasdocParam;
import com.hzs.system.base.service.IBdCountryService;
import com.hzs.system.base.service.IBdCubasdocService;
import com.hzs.system.base.service.IBdSystemConfigService;
import com.hzs.system.config.service.IBdBonusExpandService;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Autowired;
@ -30,6 +33,8 @@ public class SystemConfigServiceProvider implements ISystemConfigServiceApi {
private IBdCountryService bdCountryService;
@Autowired
private IBdCubasdocService bdCubasdocService;
@Autowired
private IBdBonusExpandService iBdBonusExpandService;
@Override
public R<String> getBonusSystemConfig(Integer pkCountry, String key) {
@ -101,4 +106,13 @@ public class SystemConfigServiceProvider implements ISystemConfigServiceApi {
return R.fail();
}
@Override
public R<BdBonusExpand> getBdBonusExpand() {
LambdaQueryWrapper<BdBonusExpand> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(BdBonusExpand::getPkCountry, 1);
queryWrapper.orderByDesc(BdBonusExpand::getCreationTime);
BdBonusExpand bdBonusExpand = iBdBonusExpandService.getOne(queryWrapper, false);
return R.ok(bdBonusExpand);
}
}