| | |
| | | private EntityManager em; |
| | | |
| | | /** |
| | | * 读取报名申请,按报名时间倒序 |
| | | * 注意:实际库表为 t_avtivity_player(拼写以库为准) |
| | | * 查询活动报名信息 |
| | | * 当传入activityId时,查询该比赛下第一个阶段(sort_order=1)的报名项目 |
| | | */ |
| | | @SuppressWarnings("unchecked") |
| | | public List<ActivityPlayerApplicationResponse> listApplications(String name, Integer page, Integer size) { |
| | | public List<ActivityPlayerApplicationResponse> listApplications(String name, Long activityId, Integer state, Integer page, Integer size) { |
| | | String baseSql = |
| | | "SELECT ap.id, p.name AS player_name, a.name AS activity_name, p.phone AS phone, ap.create_time AS apply_time, p.audit_state AS state " + |
| | | "FROM t_avtivity_player ap " + |
| | | "SELECT ap.id, p.name AS player_name, stage.name AS activity_name, ap.project_name AS project_name, p.phone AS phone, ap.create_time AS apply_time, ap.state AS state " + |
| | | "FROM t_activity_player ap " + |
| | | "JOIN t_player p ON p.id = ap.player_id " + |
| | | "JOIN t_activity a ON a.id = ap.activity_id "; |
| | | String where = ""; |
| | | "JOIN t_activity stage ON stage.id = ap.stage_id "; |
| | | |
| | | StringBuilder whereClause = new StringBuilder(); |
| | | boolean hasCondition = false; |
| | | |
| | | if (name != null && !name.isEmpty()) { |
| | | where = "WHERE p.name LIKE CONCAT('%', :name, '%') "; |
| | | whereClause.append("p.name LIKE CONCAT('%', :name, '%')"); |
| | | hasCondition = true; |
| | | } |
| | | |
| | | if (activityId != null) { |
| | | if (hasCondition) { |
| | | whereClause.append(" AND "); |
| | | } |
| | | // 查询指定主比赛的第一阶段报名项目:activity_id=主比赛ID, stage_id=第一阶段ID |
| | | whereClause.append("ap.activity_id = :activityId AND stage.pid = :activityId AND stage.sort_order = 1"); |
| | | hasCondition = true; |
| | | } |
| | | |
| | | if (state != null) { |
| | | if (hasCondition) { |
| | | whereClause.append(" AND "); |
| | | } |
| | | whereClause.append("ap.state = :state"); |
| | | hasCondition = true; |
| | | } |
| | | |
| | | String where = hasCondition ? "WHERE " + whereClause.toString() + " " : ""; |
| | | String order = "ORDER BY ap.create_time DESC "; |
| | | String limit = ""; |
| | | if (page != null && size != null && page > 0 && size > 0) { |
| | |
| | | } |
| | | |
| | | var q = em.createNativeQuery(baseSql + where + order + limit); |
| | | if (!where.isEmpty()) { |
| | | if (name != null && !name.isEmpty()) { |
| | | q.setParameter("name", name); |
| | | } |
| | | if (activityId != null) { |
| | | q.setParameter("activityId", activityId); |
| | | } |
| | | if (state != null) { |
| | | q.setParameter("state", state); |
| | | } |
| | | List<Object[]> rows = q.getResultList(); |
| | | List<ActivityPlayerApplicationResponse> list = new ArrayList<>(); |
| | |
| | | dto.setId(r[0] != null ? Long.valueOf(r[0].toString()) : null); // activity_player_id |
| | | dto.setPlayerName(r[1] != null ? r[1].toString() : ""); |
| | | dto.setActivityName(r[2] != null ? r[2].toString() : ""); |
| | | dto.setPhone(r[3] != null ? r[3].toString() : ""); |
| | | dto.setApplyTime(r[4] != null ? r[4].toString() : ""); |
| | | // 映射状态:使用 t_player.audit_state(0=未审核,1=进行中,2=已驳回,3=结束) |
| | | dto.setState(r[5] != null ? Integer.valueOf(r[5].toString()) : 0); |
| | | dto.setProjectName(r[3] != null ? r[3].toString() : ""); // project_name |
| | | dto.setPhone(r[4] != null ? r[4].toString() : ""); |
| | | dto.setApplyTime(r[5] != null ? r[5].toString() : ""); |
| | | // 映射状态:使用 t_activity_player.state(0=未审核,1=审核通过,2=审核驳回) |
| | | dto.setState(r[6] != null ? Integer.valueOf(r[6].toString()) : 0); |
| | | list.add(dto); |
| | | } |
| | | return list; |