diff --git a/src/main/java/com/rj/controller/LbDepartmentUserController.java b/src/main/java/com/rj/controller/LbDepartmentUserController.java index bceac21..fb21517 100644 --- a/src/main/java/com/rj/controller/LbDepartmentUserController.java +++ b/src/main/java/com/rj/controller/LbDepartmentUserController.java @@ -67,9 +67,10 @@ public class LbDepartmentUserController { @RequestParam(required = false) String parentId, @RequestParam(required = false) String name, @RequestParam(required = false) String phone, - @RequestParam(required = false) String industry) { + @RequestParam(required = false) String industry, + @Parameter(description = "是否有效:0否 1是") @RequestParam(required = false) Integer isActive) { Map result = lbDepartmentUserService.pageQuery( - current, size, tenantId, userId, parentId, name, phone, industry + current, size, tenantId, userId, parentId, name, phone, industry, isActive ); Boolean success = (Boolean) result.get("success"); if (success != null && success) { @@ -124,8 +125,12 @@ public class LbDepartmentUserController { @GetMapping("/tree") @Operation(summary = "部门用户树形结构") public ResponseEntity> tree( - @Parameter(description = "租户id", required = true) @RequestParam String tenantId) { - Map result = lbDepartmentUserService.getDepartmentUserTree(tenantId); + @Parameter(description = "租户id", required = true) @RequestParam String tenantId, + @Parameter(description = "是否活跃:1活跃 0不活跃") @RequestParam(name = "is_active", required = false) Integer isActive, + @Parameter(description = "加入日期,查询 join_date 大于该日期的数据") + @RequestParam(name = "join_date", required = false) + @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate joinDate) { + Map result = lbDepartmentUserService.getDepartmentUserTree(tenantId, isActive, joinDate); Boolean success = (Boolean) result.get("success"); if (success != null && success) { return ResponseEntity.ok(result); diff --git a/src/main/java/com/rj/entity/LbDepartmentUser.java b/src/main/java/com/rj/entity/LbDepartmentUser.java index a8d2936..a3012ce 100644 --- a/src/main/java/com/rj/entity/LbDepartmentUser.java +++ b/src/main/java/com/rj/entity/LbDepartmentUser.java @@ -8,6 +8,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serializable; +import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; @@ -59,10 +60,22 @@ public class LbDepartmentUser implements Serializable { @Schema(description = "上级链条(从直接上级到根上级,节点内 id,name,phone 逗号分隔,节点间 -> 连接)") private String orgChain; + @TableField("is_active") + @Schema(description = "是否有效:0否 1是") + private Integer isActive; + @TableField("join_date") @Schema(description = "加入日期(不含时分秒)") private LocalDate joinDate; + @TableField("last_trade_date") + @Schema(description = "最近交易日期(不含时分秒)") + private LocalDate lastTradeDate; + + @TableField("last_buy_amt") + @Schema(description = "最近交易日买入金额") + private BigDecimal lastBuyAmt; + @TableField("create_time") @Schema(description = "创建时间") private LocalDateTime createTime; diff --git a/src/main/java/com/rj/service/ILbDepartmentUserService.java b/src/main/java/com/rj/service/ILbDepartmentUserService.java index a049900..ea7ad96 100644 --- a/src/main/java/com/rj/service/ILbDepartmentUserService.java +++ b/src/main/java/com/rj/service/ILbDepartmentUserService.java @@ -21,7 +21,8 @@ public interface ILbDepartmentUserService extends IService { String parentId, String name, String phone, - String industry); + String industry, + Integer isActive); Map bindParentUser(String parentUserId, String parentUserName, @@ -39,5 +40,5 @@ public interface ILbDepartmentUserService extends IService { /** * 按租户查询部门用户并构建父子树(parent_id 对应 lb_user.pid)。 */ - Map getDepartmentUserTree(String tenantId); + Map getDepartmentUserTree(String tenantId, Integer isActive, LocalDate joinDate); } diff --git a/src/main/java/com/rj/service/impl/LbDepartmentUserServiceImpl.java b/src/main/java/com/rj/service/impl/LbDepartmentUserServiceImpl.java index 21a7725..ae012e6 100644 --- a/src/main/java/com/rj/service/impl/LbDepartmentUserServiceImpl.java +++ b/src/main/java/com/rj/service/impl/LbDepartmentUserServiceImpl.java @@ -16,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Comparator; import java.util.HashSet; @@ -67,6 +68,9 @@ public class LbDepartmentUserServiceImpl extends ServiceImpl result = new HashMap<>(); try { if (current == null || current < 1) { @@ -158,6 +163,9 @@ public class LbDepartmentUserServiceImpl extends ServiceImpl phoneMap = buildPurchaseApplyPhoneMap(candidateNicknameSet); @@ -317,6 +327,7 @@ public class LbDepartmentUserServiceImpl extends ServiceImpl tradeActiveUserIds = new HashSet<>(); + Map latestTradeByUserId = new HashMap<>(); + List tradeUserRows = lbDailyUserTradeMapper.selectList( + new LambdaQueryWrapper() + .eq(LbDailyUserTrade::getTenantId, tenantIdTrim) + .isNotNull(LbDailyUserTrade::getUserId) + .select(LbDailyUserTrade::getUserId, + LbDailyUserTrade::getReportDate, + LbDailyUserTrade::getDailyBuyAmt)); + if (tradeUserRows != null) { + for (LbDailyUserTrade row : tradeUserRows) { + String tradeUserId = trimToNull(row.getUserId()); + if (tradeUserId == null) { + continue; + } + tradeActiveUserIds.add(tradeUserId); + if (row.getReportDate() != null + && row.getDailyBuyAmt() != null + && row.getDailyBuyAmt().compareTo(BigDecimal.ONE) >= 0) { + LbDailyUserTrade prev = latestTradeByUserId.get(tradeUserId); + if (prev == null || isTradeReportDateNewer(row, prev)) { + latestTradeByUserId.put(tradeUserId, row); + } + } + } + } + List toInsert = new ArrayList<>(); List toUpdate = new ArrayList<>(); LocalDateTime now = LocalDateTime.now(); @@ -485,7 +524,16 @@ public class LbDepartmentUserServiceImpl extends ServiceImpl getDepartmentUserTree(String tenantId) { + public Map getDepartmentUserTree(String tenantId, Integer isActive, LocalDate joinDate) { Map result = new HashMap<>(); try { if (tenantId == null || tenantId.trim().isEmpty()) { @@ -596,9 +643,15 @@ public class LbDepartmentUserServiceImpl extends ServiceImpl deptUsers = this.list( - new LambdaQueryWrapper() - .eq(LbDepartmentUser::getTenantId, tenantIdTrim)); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(LbDepartmentUser::getTenantId, tenantIdTrim); + if (isActive != null) { + queryWrapper.eq(LbDepartmentUser::getIsActive, isActive); + } + if (joinDate != null) { + queryWrapper.gt(LbDepartmentUser::getJoinDate, joinDate); + } + List deptUsers = this.list(queryWrapper); if (deptUsers == null || deptUsers.isEmpty()) { result.put("success", true); result.put("message", "查询成功"); @@ -695,6 +748,9 @@ public class LbDepartmentUserServiceImpl extends ServiceImpl>()); return node; } @@ -733,4 +789,32 @@ public class LbDepartmentUserServiceImpl extends ServiceImpl