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

This commit is contained in:
sangelxiu1 2025-09-18 17:25:42 +08:00
parent c37e19f473
commit f45a4f3e23
1 changed files with 43 additions and 4 deletions

View File

@ -1,6 +1,10 @@
package com.hzs.bonus.bonus.service.impl; package com.hzs.bonus.bonus.service.impl;
import cn.hutool.core.collection.CollectionUtil; 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.ICuMemberRetailDetailService;
import com.hzs.bonus.achieve.service.ICuMemberRetailRangeService; import com.hzs.bonus.achieve.service.ICuMemberRetailRangeService;
import com.hzs.bonus.base.service.ICuMemberService; 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
@ -968,7 +974,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
for (CuMemberRetailDetail cuMemberRetailDetail : parentDetailList) { for (CuMemberRetailDetail cuMemberRetailDetail : parentDetailList) {
if (EBonusStageStatus.NO.getValue() == cuMemberRetailDetail.getStageStatus()) { 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) { private static final List<String> fieldList = Arrays.asList("11", "12", "21", "22", "23", "24", "31", "32", "33", "34", "35", "36", "37", "38");
cuMemberRetailDetail.getPointMember11(); 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));
// }
// }
} }