|
@@ -2,11 +2,14 @@ package com.etotem.cfc.controller.tianpan;
|
|
|
|
|
|
|
|
import com.etotem.cfc.common.Result;
|
|
import com.etotem.cfc.common.Result;
|
|
|
import com.etotem.cfc.dto.*;
|
|
import com.etotem.cfc.dto.*;
|
|
|
-import com.etotem.cfc.service.TianpanService;
|
|
|
|
|
|
|
+import com.etotem.cfc.entity.FamilyMemberAttributes;
|
|
|
|
|
+import com.etotem.cfc.service.*;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
|
+import java.util.Calendar;
|
|
|
|
|
+import java.util.LinkedHashMap;
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -21,6 +24,15 @@ public class TianpanController {
|
|
|
@Resource
|
|
@Resource
|
|
|
private TianpanService tianpanService;
|
|
private TianpanService tianpanService;
|
|
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private FamilyMemberAttributeService familyMemberAttributeService;
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private ZodiacAnnualEnergyService zodiacAnnualEnergyService;
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private FamilyMemberDimensionBaseScoreService familyMemberDimensionBaseScoreService;
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 获取家庭天盘仪表盘
|
|
* 获取家庭天盘仪表盘
|
|
|
*
|
|
*
|
|
@@ -207,6 +219,60 @@ public class TianpanController {
|
|
|
return Result.success(data);
|
|
return Result.success(data);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 重算单个成员的五维基础分
|
|
|
|
|
+ */
|
|
|
|
|
+ @PostMapping("/recalibrate")
|
|
|
|
|
+ public Result<Map<String, Integer>> recalibrate(
|
|
|
|
|
+ HttpServletRequest request,
|
|
|
|
|
+ @RequestBody Map<String, Object> params) {
|
|
|
|
|
+ Long memberId = Long.valueOf(params.get("memberId").toString());
|
|
|
|
|
+ String memberType = params.get("memberType") != null ? params.get("memberType").toString() : "child";
|
|
|
|
|
+ String operator = params.get("operator") != null ? params.get("operator").toString() : "system";
|
|
|
|
|
+
|
|
|
|
|
+ FamilyMemberAttributes attrs = familyMemberAttributeService.getByMember(memberId, memberType);
|
|
|
|
|
+ if (attrs == null) {
|
|
|
|
|
+ return Result.error("成员属性不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ Map<String, Integer> wuxingElements = parseWuxingElements(attrs.getWuxingElements());
|
|
|
|
|
+ String westernSign = null;
|
|
|
|
|
+ if (attrs.getBirthDatetime() != null) {
|
|
|
|
|
+ Calendar cal = Calendar.getInstance();
|
|
|
|
|
+ cal.setTime(attrs.getBirthDatetime());
|
|
|
|
|
+ westernSign = zodiacAnnualEnergyService.getWesternSign(cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH));
|
|
|
|
|
+ }
|
|
|
|
|
+ Integer lifeNumber = extractLifeNumber(attrs.getBehaviorModifier());
|
|
|
|
|
+
|
|
|
|
|
+ familyMemberDimensionBaseScoreService.calcAndSave(memberId, memberType, wuxingElements, westernSign, lifeNumber, operator);
|
|
|
|
|
+ Map<String, Integer> scores = familyMemberDimensionBaseScoreService.getScores(memberId);
|
|
|
|
|
+ return Result.success(scores);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private Map<String, Integer> parseWuxingElements(String json) {
|
|
|
|
|
+ Map<String, Integer> result = new LinkedHashMap<>();
|
|
|
|
|
+ if (json == null || json.isEmpty()) return result;
|
|
|
|
|
+ try {
|
|
|
|
|
+ Map<String, Object> raw = familyMemberAttributeService.fromJson(json);
|
|
|
|
|
+ for (Map.Entry<String, Object> e : raw.entrySet()) {
|
|
|
|
|
+ if (e.getValue() instanceof Number) {
|
|
|
|
|
+ result.put(e.getKey(), ((Number) e.getValue()).intValue());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (Exception ignored) {}
|
|
|
|
|
+ return result;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private Integer extractLifeNumber(String behaviorModifier) {
|
|
|
|
|
+ if (behaviorModifier == null || behaviorModifier.isEmpty()) return null;
|
|
|
|
|
+ try {
|
|
|
|
|
+ Map<String, Object> map = familyMemberAttributeService.fromJson(behaviorModifier);
|
|
|
|
|
+ Object ln = map.get("lifeNumber");
|
|
|
|
|
+ if (ln instanceof Number) return ((Number) ln).intValue();
|
|
|
|
|
+ } catch (Exception ignored) {}
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
// ========== 权限检查 ==========
|
|
// ========== 权限检查 ==========
|
|
|
|
|
|
|
|
private boolean checkAccess(String role, Long familyId, Long currentUserId, HttpServletRequest request) {
|
|
private boolean checkAccess(String role, Long familyId, Long currentUserId, HttpServletRequest request) {
|