Commit 063ae478 authored by liming's avatar liming

俱乐部加入和退出

parent 30056279
...@@ -55,6 +55,11 @@ public class Club implements Serializable { ...@@ -55,6 +55,11 @@ public class Club implements Serializable {
*/ */
private Long chairmanId; private Long chairmanId;
/**
* 会员数量
*/
private Integer memberNumber;
/** /**
* 总爬坡高度 * 总爬坡高度
*/ */
......
...@@ -52,5 +52,19 @@ public class ClubController { ...@@ -52,5 +52,19 @@ public class ClubController {
return success(); return success();
} }
@ApiOperation("俱乐部-加入")
@PostMapping("/join")
public ResponseEntity<Result> join(@RequestBody JoinOrLeaveClubDTO dto) {
clubService.join(dto);
return success();
}
@ApiOperation("俱乐部-退出")
@PostMapping("/leave")
public ResponseEntity<Result> leave(@RequestBody JoinOrLeaveClubDTO dto) {
clubService.leave(dto);
return success();
}
} }
...@@ -21,6 +21,7 @@ public interface ClubConverter { ...@@ -21,6 +21,7 @@ public interface ClubConverter {
@Mapping(target = "totalDistance", constant = "0") @Mapping(target = "totalDistance", constant = "0")
@Mapping(target = "totalDuration", constant = "0") @Mapping(target = "totalDuration", constant = "0")
@Mapping(target = "totalCalorie", constant = "0") @Mapping(target = "totalCalorie", constant = "0")
@Mapping(target = "memberNumber", constant = "1")
Club createDTOtoClub(CreateClubReqDTO source, LocalDateTime now); Club createDTOtoClub(CreateClubReqDTO source, LocalDateTime now);
@Mapping(target = "updateTime", source = "now") @Mapping(target = "updateTime", source = "now")
......
package com.antai.sport.http.server.server.api.business.club.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel("加入俱乐部")
@Data
public class JoinOrLeaveClubDTO {
@ApiModelProperty("俱乐部id")
private Long clubId;
@ApiModelProperty("用户id")
private Long sportUserId;
}
...@@ -14,6 +14,7 @@ import com.antai.sport.http.server.server.api.business.club.dto.*; ...@@ -14,6 +14,7 @@ import com.antai.sport.http.server.server.api.business.club.dto.*;
import com.antai.sport.http.server.server.api.business.club.mapper.ClubBusinessMapper; import com.antai.sport.http.server.server.api.business.club.mapper.ClubBusinessMapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalDateTime; import java.time.LocalDateTime;
...@@ -40,6 +41,7 @@ public class ClubService { ...@@ -40,6 +41,7 @@ public class ClubService {
* @param dto * @param dto
* @return * @return
*/ */
@Transactional
public Long create(CreateClubReqDTO dto) { public Long create(CreateClubReqDTO dto) {
if (clubBusinessMapper.checkChairman(dto.getCreateUser())) { if (clubBusinessMapper.checkChairman(dto.getCreateUser())) {
throw new BusinessException("您已经是俱乐部会长,不能创建多个俱乐部"); throw new BusinessException("您已经是俱乐部会长,不能创建多个俱乐部");
...@@ -47,6 +49,12 @@ public class ClubService { ...@@ -47,6 +49,12 @@ public class ClubService {
checkClubNameRepeat(null, dto.getName()); checkClubNameRepeat(null, dto.getName());
Club club = clubConverter.createDTOtoClub(dto, LocalDateTime.now()); Club club = clubConverter.createDTOtoClub(dto, LocalDateTime.now());
clubMapper.insert(club); clubMapper.insert(club);
ClubMember clubMember = new ClubMember();
clubMember.setClubId(club.getId());
clubMember.setType(ClubMemberType.CHAIRMAN);
clubMember.setSportUserId(dto.getCreateUser());
clubMember.setDeleted(0);
clubMemberMapper.insert(clubMember);
return club.getId(); return club.getId();
} }
...@@ -81,7 +89,7 @@ public class ClubService { ...@@ -81,7 +89,7 @@ public class ClubService {
*/ */
public Long createClubNotice(CreateClubNoticeDTO dto) { public Long createClubNotice(CreateClubNoticeDTO dto) {
this.checkClubChairman(dto.getClubId(), dto.getCreateUser()); this.checkClubChairman(dto.getClubId(), dto.getCreateUser());
ClubNotice notice = clubConverter.createClubNoticeDTOToClubNotice(dto,LocalDateTime.now()); ClubNotice notice = clubConverter.createClubNoticeDTOToClubNotice(dto, LocalDateTime.now());
clubNoticeMapper.insert(notice); clubNoticeMapper.insert(notice);
return notice.getId(); return notice.getId();
} }
...@@ -94,15 +102,16 @@ public class ClubService { ...@@ -94,15 +102,16 @@ public class ClubService {
*/ */
public void updateClubNotice(UpdateClubNoticeDTO dto) { public void updateClubNotice(UpdateClubNoticeDTO dto) {
this.checkClubChairman(dto.getClubId(), dto.getSportUserId()); this.checkClubChairman(dto.getClubId(), dto.getSportUserId());
ClubNotice notice = clubConverter.updateClubNoticeDTOToClubNotice(dto,LocalDateTime.now()); ClubNotice notice = clubConverter.updateClubNoticeDTOToClubNotice(dto, LocalDateTime.now());
clubNoticeMapper.updateById(notice); clubNoticeMapper.updateById(notice);
} }
/** /**
* 删除比赛通知 * 删除比赛通知
*
* @param dto * @param dto
*/ */
public void deleteClubNotice(DeleteClubNoticeDTO dto){ public void deleteClubNotice(DeleteClubNoticeDTO dto) {
this.checkClubChairman(dto.getClubId(), dto.getSportUserId()); this.checkClubChairman(dto.getClubId(), dto.getSportUserId());
ClubNotice notice = new ClubNotice(); ClubNotice notice = new ClubNotice();
notice.setId(dto.getId()); notice.setId(dto.getId());
...@@ -128,4 +137,74 @@ public class ClubService { ...@@ -128,4 +137,74 @@ public class ClubService {
throw new BusinessException("您不是当前俱乐部会长,不能进行当前操作"); throw new BusinessException("您不是当前俱乐部会长,不能进行当前操作");
} }
} }
/**
* 加入俱乐部
*
* @param dto
*/
@Transactional
public void join(JoinOrLeaveClubDTO dto) {
Club club = clubMapper.selectById(dto.getClubId());
if (club == null) {
throw new BusinessException("您要加入的俱乐部不存在");
}
this.checkJoin(dto.getSportUserId());
ClubMember clubMember = new ClubMember();
clubMember.setClubId(dto.getClubId());
clubMember.setType(ClubMemberType.CHAIRMAN);
clubMember.setSportUserId(dto.getSportUserId());
clubMember.setDeleted(0);
clubMemberMapper.insert(clubMember);
this.updateClubMemberNum(dto.getClubId());
}
/**
* 离开俱乐部
*
* @param dto
*/
@Transactional
public void leave(JoinOrLeaveClubDTO dto) {
ClubMember clubMember = new ClubMember();
clubMember.setDeleted(1);
QueryWrapper<ClubMember> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("deleted", 0);
queryWrapper.eq("club_id", dto.getClubId());
queryWrapper.eq("sport_user_id", dto.getSportUserId());
clubMemberMapper.update(clubMember, queryWrapper);
this.updateClubMemberNum(dto.getClubId());
}
/**
* 验证用户是否已经加入俱乐部
*/
private void checkJoin(Long sportUserId) {
QueryWrapper<ClubMember> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("deleted", 0);
queryWrapper.eq("sport_user_id", sportUserId);
ClubMember clubMember = clubMemberMapper.selectOne(queryWrapper);
if (clubMember != null) {
throw new BusinessException("您已经加入过俱乐部,不能同时加入多个俱乐部");
}
}
/**
* 查询俱乐部当前会员总数
*
* @param clubId
* @return
*/
private void updateClubMemberNum(Long clubId) {
QueryWrapper<ClubMember> countQuery = new QueryWrapper<>();
countQuery.eq("club_id", clubId);
countQuery.eq("deleted", 0);
Club club = new Club();
club.setId(clubId);
club.setMemberNumber(clubMemberMapper.selectCount(countQuery));
clubMapper.updateById(club);
}
} }
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