Commit c16860a4 authored by liming's avatar liming

俱乐部创建与修改

parent a2aec4a6
......@@ -3,6 +3,8 @@ package com.antai.sport.http.server.repository.club.entity;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
......@@ -76,7 +78,7 @@ public class Club implements Serializable {
/**
* 俱乐部创建时间
*/
private LocalDateTime clubCreateTime;
private LocalDate clubCreateTime;
/**
* 创建人id
......
package com.antai.sport.http.server.server.api.business.club.controller;
import com.antai.sport.http.server.common.base.Result;
import com.antai.sport.http.server.server.api.business.club.dto.CreateClubReqDTO;
import com.antai.sport.http.server.server.api.business.club.dto.UpdateClubReqDTO;
import com.antai.sport.http.server.server.api.business.club.service.ClubService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import static com.antai.sport.http.server.common.util.ResultUtil.success;
@RequestMapping("/club")
@RestController
@Api(tags = {"俱乐部"})
public class ClubController {
@Resource
private ClubService clubService;
@ApiOperation("创建俱乐部")
@PostMapping
public ResponseEntity<Result<Long>> create(@RequestBody CreateClubReqDTO dto) {
return success(clubService.create(dto));
}
@ApiOperation("修改俱乐部信息")
@PutMapping
public ResponseEntity<Result> update(@RequestBody UpdateClubReqDTO dto) {
clubService.update(dto);
return success();
}
}
package com.antai.sport.http.server.server.api.business.club.converter;
import com.antai.sport.http.server.repository.club.entity.Club;
import com.antai.sport.http.server.server.api.business.club.dto.CreateClubReqDTO;
import com.antai.sport.http.server.server.api.business.club.dto.UpdateClubReqDTO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import java.time.LocalDateTime;
@Mapper(componentModel = "spring")
public interface ClubConverter {
@Mapping(target = "chairmanId", source = "source.createUser")
@Mapping(target = "createTime", source = "now")
@Mapping(target = "updateTime", source = "now")
@Mapping(target = "totalClimbDistance", constant = "0")
@Mapping(target = "totalDistance", constant = "0")
@Mapping(target = "totalDuration", constant = "0")
@Mapping(target = "totalCalorie", constant = "0")
Club createDTOtoClub(CreateClubReqDTO source, LocalDateTime now);
@Mapping(target = "updateTime", source = "now")
Club updateDTOtoClub(UpdateClubReqDTO source, LocalDateTime now);
}
package com.antai.sport.http.server.server.api.business.club.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDate;
@ApiModel("俱乐部新建对象")
@Data
public class CreateClubReqDTO {
@ApiModelProperty("俱乐部名称")
private String name;
@ApiModelProperty("logo")
private String logo;
@ApiModelProperty("省id")
private Long province;
@ApiModelProperty("市id")
private Long city;
@ApiModelProperty("创建时间 yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private LocalDate clubCreateTime;
@ApiModelProperty("创建人")
private Long createUser;
}
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 UpdateClubReqDTO {
@ApiModelProperty("Id")
private Long Id;
@ApiModelProperty("俱乐部名称")
private String name;
@ApiModelProperty("logo")
private String logo;
@ApiModelProperty("省id")
private Long province;
@ApiModelProperty("市id")
private Long city;
}
package com.antai.sport.http.server.server.api.business.club.mapper;
import org.apache.ibatis.annotations.Param;
public interface ClubBusinessMapper {
/**
* 检测俱乐部名称是否重复
* @param id
* @param name
* @return
*/
Boolean checkClubNameRepeat(@Param("id") Long id, @Param("name") String name);
/**
* 验证当前玩家是否已经是俱乐部会长
* @param playerId
* @return
*/
Boolean checkChairman(@Param("playerId")Long playerId);
}
package com.antai.sport.http.server.server.api.business.club.service;
import com.antai.sport.http.server.common.exception.BusinessException;
import com.antai.sport.http.server.repository.club.entity.Club;
import com.antai.sport.http.server.repository.club.mapper.ClubMapper;
import com.antai.sport.http.server.server.api.business.club.converter.ClubConverter;
import com.antai.sport.http.server.server.api.business.club.dto.CreateClubReqDTO;
import com.antai.sport.http.server.server.api.business.club.dto.UpdateClubReqDTO;
import com.antai.sport.http.server.server.api.business.club.mapper.ClubBusinessMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDateTime;
@Service
public class ClubService {
@Resource
private ClubMapper clubMapper;
@Resource
private ClubBusinessMapper clubBusinessMapper;
@Resource
private ClubConverter clubConverter;
/**
* 创建俱乐部
*
* @param dto
* @return
*/
public Long create(CreateClubReqDTO dto) {
if (clubBusinessMapper.checkChairman(dto.getCreateUser())) {
throw new BusinessException("您已经是俱乐部会长,不能创建多个俱乐部");
}
checkClubNameRepeat(null, dto.getName());
Club club = clubConverter.createDTOtoClub(dto, LocalDateTime.now());
clubMapper.insert(club);
return club.getId();
}
/**
* 修改俱乐部信息
*
* @param dto
*/
public void update(UpdateClubReqDTO dto) {
checkClubNameRepeat(dto.getId(), dto.getName());
Club club = clubConverter.updateDTOtoClub(dto, LocalDateTime.now());
clubMapper.updateById(club);
}
/**
* 校验俱乐部名称是否重复
*
* @param id
* @param name
*/
private void checkClubNameRepeat(Long id, String name) {
if (clubBusinessMapper.checkClubNameRepeat(id, name)) {
throw new BusinessException("俱乐部名称重复,请换一个名称试试");
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.antai.sport.http.server.server.api.business.club.mapper.ClubBusinessMapper">
<select id="checkClubNameRepeat" resultType="java.lang.Boolean">
select count(1)>0
from club
where name = #{name}
<if test="id != null">
and id != #{id}
</if>
</select>
<select id="checkChairman" resultType="java.lang.Boolean">
select count(1) > 0
from club
where chairman_id = #{playerId}
</select>
</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