Commit 081af430 authored by liming's avatar liming

俱乐部列表

parent 1b4ef4e7
...@@ -73,5 +73,11 @@ public class ClubController { ...@@ -73,5 +73,11 @@ public class ClubController {
return success(clubService.getList(dto)); return success(clubService.getList(dto));
} }
@ApiOperation("俱乐部-列表")
@PostMapping("/home/{playerId}")
public ResponseEntity<Result<PlayerClubHomeDTO>> getClubHome(@PathVariable("playerId") Long playerId) {
return success(clubService.getClubHome(playerId));
}
} }
package com.antai.sport.http.server.server.api.business.club.dto;
import com.antai.sport.http.server.server.api.business.club.dto.vo.ClubMemberVO;
import com.antai.sport.http.server.server.api.business.club.dto.vo.ClubNoticeVO;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.util.List;
@ApiModel("玩家俱乐部主页信息")
@Data
public class PlayerClubHomeDTO {
public ClubRespDTO club;
public List<ClubNoticeVO> noticeList;
public List<ClubMemberVO> memberList;
}
package com.antai.sport.http.server.server.api.business.club.dto.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@ApiModel("俱乐部会员列表")
@Data
public class ClubMemberVO {
@ApiModelProperty("玩家Id")
private Long sportUserId;
@ApiModelProperty("类型 1.会长 2.助理 3.会员")
private Integer type;
@ApiModelProperty("昵称")
private String nickname;
@ApiModelProperty("头像")
private String avatar;
@ApiModelProperty("加入时间")
private String joinTime;
@ApiModelProperty("得分")
private BigDecimal score;
}
package com.antai.sport.http.server.server.api.business.club.dto.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel("俱乐部通知VO")
@Data
public class ClubNoticeVO {
@ApiModelProperty("id")
private Long id;
@ApiModelProperty("标题")
private String title;
@ApiModelProperty("内容")
private String content;
@ApiModelProperty("时间")
private String time;
@ApiModelProperty("是否置顶")
private Boolean top;
}
...@@ -2,9 +2,13 @@ package com.antai.sport.http.server.server.api.business.club.mapper; ...@@ -2,9 +2,13 @@ package com.antai.sport.http.server.server.api.business.club.mapper;
import com.antai.sport.http.server.server.api.business.club.dto.ClubListReqDTO; import com.antai.sport.http.server.server.api.business.club.dto.ClubListReqDTO;
import com.antai.sport.http.server.server.api.business.club.dto.ClubRespDTO; import com.antai.sport.http.server.server.api.business.club.dto.ClubRespDTO;
import com.antai.sport.http.server.server.api.business.club.dto.vo.ClubMemberVO;
import com.antai.sport.http.server.server.api.business.club.dto.vo.ClubNoticeVO;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface ClubBusinessMapper { public interface ClubBusinessMapper {
/** /**
...@@ -26,10 +30,35 @@ public interface ClubBusinessMapper { ...@@ -26,10 +30,35 @@ public interface ClubBusinessMapper {
/** /**
* 查询俱乐部列表 * 查询俱乐部列表
*
* @param page * @param page
* @param param * @param param
* @return * @return
*/ */
IPage<ClubRespDTO> getClubList(IPage<ClubRespDTO> page, @Param("param") ClubListReqDTO param); IPage<ClubRespDTO> getClubList(IPage<ClubRespDTO> page, @Param("param") ClubListReqDTO param);
/**
* 查询俱乐部信息
*
* @param clubId
* @return
*/
ClubRespDTO getClubInfo(@Param("clubId") Long clubId);
/**
* 查询俱乐部通知
*
* @param clubId
* @return
*/
List<ClubNoticeVO> getClubNotice(@Param("clubId") Long clubId);
/**
* 获取俱乐部成员列表
*
* @param clubId
* @return
*/
List<ClubMemberVO> getClubMemberList(@Param("clubId") Long clubId);
} }
...@@ -212,6 +212,7 @@ public class ClubService { ...@@ -212,6 +212,7 @@ public class ClubService {
/** /**
* 获取俱乐部列表 * 获取俱乐部列表
*
* @param dto * @param dto
* @return * @return
*/ */
...@@ -220,4 +221,26 @@ public class ClubService { ...@@ -220,4 +221,26 @@ public class ClubService {
return clubBusinessMapper.getClubList(pageParam, dto).getRecords(); return clubBusinessMapper.getClubList(pageParam, dto).getRecords();
} }
/**
* 获取玩家俱乐部信息
*
* @param sportUserId
* @return
*/
public PlayerClubHomeDTO getClubHome(Long sportUserId) {
QueryWrapper<ClubMember> memberQuery = new QueryWrapper<>();
memberQuery.eq("deleted", 0);
memberQuery.eq("sport_user_id", sportUserId);
ClubMember clubMember = clubMemberMapper.selectOne(memberQuery);
if (clubMember == null) {
return null;
}
PlayerClubHomeDTO result = new PlayerClubHomeDTO();
result.setClub(clubBusinessMapper.getClubInfo(clubMember.getClubId()));
result.setMemberList(clubBusinessMapper.getClubMemberList(clubMember.getClubId()));
result.setNoticeList(clubBusinessMapper.getClubNotice(clubMember.getClubId()));
return result;
}
} }
...@@ -17,20 +17,49 @@ ...@@ -17,20 +17,49 @@
where chairman_id = #{playerId} where chairman_id = #{playerId}
</select> </select>
<sql id="clubQuerySql">
select t1.id,t1.name as club_name,logo as club_logo,
t2.name as province_name,t3.name as city_name,description,
member_number,total_distance,total_climb_distance,total_duration,
total_calorie,DATE_FORMAT(club_create_time,'%Y-%m-%d') as club_create_time,t1.create_time,
if(t1.city = #{param.cityId},0,1) as base_order
from club t1
left join base_area t2 on t1.province = t2.id
left join base_area t3 on t1.city = t3.id
</sql>
<select id="getClubList" resultType="com.antai.sport.http.server.server.api.business.club.dto.ClubRespDTO"> <select id="getClubList" resultType="com.antai.sport.http.server.server.api.business.club.dto.ClubRespDTO">
select * from ( select * from (
select t1.id,t1.name as club_name,logo as club_logo, <include refid="clubQuerySql"></include>
t2.name as province_name,t3.name as city_name,description,
member_number,total_distance,total_climb_distance,total_duration,
total_calorie,DATE_FORMAT(club_create_time,'%Y-%m-%d') as club_create_time,t1.create_time,
if(t1.city = #{param.cityId},0,1) as base_order
from club t1
left join base_area t2 on t1.province = t2.id
left join base_area t3 on t1.city = t3.id
<if test="param.searchKey != null"> <if test="param.searchKey != null">
where t1.name like concat('%',#{param.searchKey},'%') where t1.name like concat('%',#{param.searchKey},'%')
</if> </if>
) t1 ) t1
order by t1.base_order,t1.member_number desc,t1.create_time order by t1.base_order,t1.member_number desc,t1.create_time
</select> </select>
<select id="getClubInfo" resultType="com.antai.sport.http.server.server.api.business.club.dto.ClubRespDTO">
<include refid="clubQuerySql"></include>
where t1.id = #{clubId}
</select>
<select id="getClubNotice" resultType="com.antai.sport.http.server.server.api.business.club.dto.vo.ClubNoticeVO">
select id,title,content,DATE_FORMAT(create_time,'%Y-%m-%d') as time,top
from club_notice
where club_id = #{clubId} and deleted = 0
order by top desc,create_time desc
</select>
<select id="getClubMemberList" resultType="com.antai.sport.http.server.server.api.business.club.dto.vo.ClubMemberVO">
select * from (
select t1.sport_user_id,t1.type,t2.nickname,t2.avatar,DATE_FORMAT(t1.create_time,'%Y-%m-%d') as join_time,
ifnull(t3.score,0) as score,t1.create_time
from club_member t1
left join sport_user t2 on t1.sport_user_id = t2.id
left join sport_user_rank t3 on t1.sport_user_id = t3.player_id
where t1.deleted = 0 and t1.club_id = #{clubId}
) t1
order by t1.type,t1.score,t1.create_time
</select>
</mapper> </mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment