推荐人特权

This commit is contained in:
2026-05-16 18:32:14 +08:00
parent 74ac62b1e0
commit 1b811aa8af
5 changed files with 172 additions and 1 deletions

View File

@@ -625,4 +625,127 @@ public class LbPurchaseApplyServiceImpl
return result;
}
}
@Override
public Map<String, Object> syncHxrAdminColleagueVipByApplyDateRange(
LocalDate applyDateStart, LocalDate applyDateEnd, String tenantId) {
Map<String, Object> result = new HashMap<>();
try {
if (applyDateStart == null || applyDateEnd == null) {
result.put("success", false);
result.put("message", "申请开始日期与结束日期不能为空");
return result;
}
if (applyDateEnd.isBefore(applyDateStart)) {
result.put("success", false);
result.put("message", "结束日期不能早于开始日期");
return result;
}
if (tenantId == null || tenantId.trim().isEmpty()) {
result.put("success", false);
result.put("message", "租户id不能为空");
return result;
}
LambdaQueryWrapper<LbPurchaseApply> q = new LambdaQueryWrapper<>();
q.eq(LbPurchaseApply::getTenantId, tenantId.trim())
.ge(LbPurchaseApply::getApplyDate, applyDateStart)
.le(LbPurchaseApply::getApplyDate, applyDateEnd);
List<LbPurchaseApply> rows = this.list(q);
if (rows == null || rows.isEmpty()) {
result.put("success", true);
result.put("message", "该条件下无申请记录,未调用第三方");
result.put("totalRecords", 0);
result.put("details", List.of());
result.put("applyDateStart", applyDateStart);
result.put("applyDateEnd", applyDateEnd);
result.put("tenantId", tenantId.trim());
return result;
}
List<Map<String, Object>> details = new ArrayList<>();
int ok = 0;
int fail = 0;
for (LbPurchaseApply row : rows) {
Map<String, Object> one = new HashMap<>();
one.put("applyId", row.getId());
one.put("applyDate", row.getApplyDate());
one.put("colleagueName", row.getColleagueName());
String phone = row.getColleaguePhone() != null ? row.getColleaguePhone().trim() : "";
one.put("colleaguePhone", phone);
if (phone.isEmpty()) {
one.put("success", false);
one.put("message", "colleague_phone 为空,跳过");
fail++;
details.add(one);
continue;
}
if (row.getApplyDate() == null) {
one.put("success", false);
one.put("message", "applyDate 为空,跳过");
fail++;
details.add(one);
continue;
}
try {
LocalDateTime vipTime =
HxrAdminUserService.computeVipExpireTimePlusCalendarDays(row.getApplyDate(), 2);
String vipTimeStr = HxrAdminUserService.formatVipTime(vipTime);
one.put("viptime", vipTimeStr);
Optional<HxrUserRow> userOpt = hxrAdminUserService.fetchFirstUserByMobile(phone);
if (userOpt.isEmpty()) {
one.put("success", false);
one.put("message", "user/select 无用户或接口失败");
fail++;
details.add(one);
continue;
}
HxrUserRow hxrUser = userOpt.get();
long hxrUserId = hxrUser.id();
one.put("hxrUserId", hxrUserId);
Integer maxOrder = hxrUser.maxOrder();
if (maxOrder == null) {
one.put("success", false);
one.put("message", "user/select 未返回 max_order跳过");
fail++;
details.add(one);
continue;
}
one.put("maxOrder", maxOrder);
boolean updated =
hxrAdminUserService.updateUserVipFields(hxrUserId, maxOrder, vipTimeStr);
if (updated) {
one.put("success", true);
one.put("message", "user/update 成功");
ok++;
} else {
one.put("success", false);
one.put("message", "user/update 失败");
fail++;
}
} catch (Exception ex) {
one.put("success", false);
one.put("message", "调用异常:" + ex.getMessage());
fail++;
}
details.add(one);
}
result.put("success", fail == 0);
result.put("message", fail == 0 ? "全部处理成功" : "部分或全部失败,见 details");
result.put("totalRecords", rows.size());
result.put("successCount", ok);
result.put("failCount", fail);
result.put("details", details);
result.put("applyDateStart", applyDateStart);
result.put("applyDateEnd", applyDateEnd);
result.put("tenantId", tenantId.trim());
return result;
} catch (Exception e) {
result.put("success", false);
result.put("message", "处理异常:" + e.getMessage());
return result;
}
}
}