## Opt - 反射按顺序规则填充CuMemberRetailDetail

This commit is contained in:
sangelxiu1 2025-09-18 17:25:42 +08:00 committed by cabbage
parent f88ccb7cb8
commit d34b279ce0
1 changed files with 43 additions and 4 deletions

View File

@ -1,6 +1,10 @@
package com.hzs.bonus.bonus.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.hzs.bonus.achieve.service.ICuMemberRetailDetailService;
import com.hzs.bonus.achieve.service.ICuMemberRetailRangeService;
import com.hzs.bonus.base.service.ICuMemberService;
@ -31,6 +35,8 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.temporal.ChronoUnit;
@ -968,7 +974,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
for (CuMemberRetailDetail cuMemberRetailDetail : parentDetailList) {
if (EBonusStageStatus.NO.getValue() == cuMemberRetailDetail.getStageStatus()) {
// 推荐人子点位未完成则进行填充
this.fillChildNode(cuMemberRetailDetail);
// this.fillChildNode(cuMemberRetailDetail);
}
}
@ -979,9 +985,42 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
/**
* 填充子点位
*/
private void fillChildNode(CuMemberRetailDetail cuMemberRetailDetail) {
cuMemberRetailDetail.getPointMember11();
private static final List<String> fieldList = Arrays.asList("11", "12", "21", "22", "23", "24", "31", "32", "33", "34", "35", "36", "37", "38");
private static Map<String, Field> fieldMap = null;
private static final String pointFieldName = "point";
private static final String pointMemberFieldName = "pointMember";
private String fillChildNode(CuMemberRetailDetail cuMemberRetailDetail, Long pointValue, Long pointMemberValue) {
if(ObjectUtil.isEmpty(fieldMap)){
initFieldMap();
}
for (String suffix : fieldList) {
Field pointField = fieldMap.get(pointFieldName + suffix);
Field pointMemberField = fieldMap.get(pointMemberFieldName + suffix);
Object pointFieldValue = ReflectUtil.getFieldValue(cuMemberRetailDetail, pointField);
if(ObjectUtil.isEmpty(pointFieldValue)){
ReflectUtil.setFieldValue(cuMemberRetailDetail, pointField, pointValue);
ReflectUtil.setFieldValue(cuMemberRetailDetail, pointMemberField, pointMemberValue);
return suffix;
}
}
return null;
}
private void initFieldMap(){
fieldMap = new HashMap<>();
for (String suffix : fieldList) {
fieldMap.put(pointFieldName + suffix, ReflectUtil.getField(CuMemberRetailDetail.class, pointFieldName + suffix));
fieldMap.put(pointMemberFieldName + suffix, ReflectUtil.getField(CuMemberRetailDetail.class, pointMemberFieldName + suffix));
}
}
// public static void main(String[] args) {
// BonusSettleRangeHandle test = new BonusSettleRangeHandle();
// CuMemberRetailDetail cuMemberRetailDetail = new CuMemberRetailDetail();
// for (int i = 0; i < 14; i++) {
// String suffix = test.fillChildNode(cuMemberRetailDetail, (long) i, (long) (i + 1));
// System.out.println(suffix);
// System.out.println(JSONUtil.toJsonPrettyStr(cuMemberRetailDetail));
// }
// }
}