From 81b6f1cc38a941b65f989ecdd40529f2648bdd8c Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期二, 04 六月 2024 11:42:47 +0800 Subject: [PATCH] 班级成员管理代码生成,成员管理查询数据接口 --- src/main/java/com/ycl/jxkg/domain/query/ClassesUserQuery.java | 22 ++ src/main/java/com/ycl/jxkg/mapper/UserMapper.java | 9 src/main/java/com/ycl/jxkg/service/ClassesService.java | 16 + src/main/java/com/ycl/jxkg/service/ClassesUserService.java | 65 +++++ src/main/java/com/ycl/jxkg/service/UserService.java | 9 src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java | 6 src/main/java/com/ycl/jxkg/domain/form/ClassesUserForm.java | 47 ++++ src/main/java/com/ycl/jxkg/mapper/ClassesUserMapper.java | 34 +++ src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java | 11 + src/main/java/com/ycl/jxkg/domain/enums/general/ClassesStatusEnum.java | 28 ++ src/main/java/com/ycl/jxkg/controller/admin/UserController.java | 23 ++ src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java | 119 ++++++++++ src/main/java/com/ycl/jxkg/domain/vo/ClassesUserVO.java | 40 +++ src/main/java/com/ycl/jxkg/controller/student/UserController.java | 2 src/main/java/com/ycl/jxkg/domain/vo/ClassesVO.java | 4 src/main/java/com/ycl/jxkg/domain/vo/StudentVO.java | 18 + src/main/resources/mapper/UserMapper.xml | 9 src/main/java/com/ycl/jxkg/controller/admin/ClassesUserController.java | 83 +++++++ src/main/resources/mapper/ClassesMapper.xml | 2 src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java | 7 src/main/java/com/ycl/jxkg/domain/entity/ClassesUser.java | 31 ++ src/main/java/com/ycl/jxkg/domain/entity/Classes.java | 3 src/main/resources/mapper/ClassesUserMapper.xml | 43 +++ 23 files changed, 627 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java b/src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java index bf98774..6af2f91 100644 --- a/src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java +++ b/src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java @@ -65,6 +65,13 @@ return classesService.page(query); } + @GetMapping("/dissolution/{id}") + @ApiOperation(value = "瑙f暎", notes = "瑙f暎") + @PreAuthorize("hasAuthority('classes:dissolution')") + public Result dissolution(@PathVariable("id") Integer id) { + return classesService.dissolution(id); + } + @GetMapping("/{id}") @ApiOperation(value = "璇︽儏", notes = "璇︽儏") @PreAuthorize("hasAuthority('classes:detail')") diff --git a/src/main/java/com/ycl/jxkg/controller/admin/ClassesUserController.java b/src/main/java/com/ycl/jxkg/controller/admin/ClassesUserController.java new file mode 100644 index 0000000..faf1fee --- /dev/null +++ b/src/main/java/com/ycl/jxkg/controller/admin/ClassesUserController.java @@ -0,0 +1,83 @@ +package com.ycl.jxkg.controller.admin; + +import com.ycl.jxkg.group.Update; +import com.ycl.jxkg.group.Add; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import lombok.RequiredArgsConstructor; +import java.util.List; +import org.springframework.validation.annotation.Validated; +import javax.validation.constraints.NotEmpty; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import com.ycl.jxkg.service.ClassesUserService; +import com.ycl.jxkg.base.Result; +import com.ycl.jxkg.domain.form.ClassesUserForm; +import com.ycl.jxkg.domain.query.ClassesUserQuery; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + * 鐝骇瀛﹀憳 + * + * @author xp + * @since 2024-06-04 + */ +@Validated +@RequiredArgsConstructor +@Api(value = "鐝骇瀛﹀憳", tags = "鐝骇瀛﹀憳") +@RestController +@RequestMapping("/api/classes-user") +public class ClassesUserController { + + private final ClassesUserService classesUserService; + + @PostMapping + @ApiOperation(value = "娣诲姞", notes = "娣诲姞") + @PreAuthorize("hasAuthority('classesUser:add')") + public Result add(@RequestBody @Validated(Add.class) ClassesUserForm form) { + return classesUserService.add(form); + } + + @PutMapping + @ApiOperation(value = "淇敼", notes = "淇敼") + @PreAuthorize("hasAuthority('classesUser:edit')") + public Result update(@RequestBody @Validated(Update.class) ClassesUserForm form) { + return classesUserService.update(form); + } + + @DeleteMapping("/{id}") + @ApiOperation(value = "ID鍒犻櫎", notes = "ID鍒犻櫎") + @PreAuthorize("hasAuthority('classesUser:del')") + public Result removeById(@PathVariable("id") String id) { + return classesUserService.removeById(id); + } + + @DeleteMapping("/batch") + @ApiOperation(value = "鎵归噺鍒犻櫎", notes = "鎵归噺鍒犻櫎") + @PreAuthorize("hasAuthority('classesUser:del:batch')") + public Result remove(@RequestBody @NotEmpty(message = "璇烽�夋嫨鏁版嵁") List<String> ids) { + return classesUserService.remove(ids); + } + + @GetMapping("/page") + @ApiOperation(value = "鍒嗛〉", notes = "鍒嗛〉") + @PreAuthorize("hasAuthority('classesUser:page')") + public Result page(ClassesUserQuery query) { + return classesUserService.page(query); + } + + @GetMapping("/{id}") + @ApiOperation(value = "璇︽儏", notes = "璇︽儏") + @PreAuthorize("hasAuthority('classesUser:detail')") + public Result detail(@PathVariable("id") Integer id) { + return classesUserService.detail(id); + } + + @GetMapping("/list") + @PreAuthorize("hasAuthority('classesUser:list')") + @ApiOperation(value = "鍒楄〃", notes = "鍒楄〃") + public Result list() { + return classesUserService.all(); + } +} diff --git a/src/main/java/com/ycl/jxkg/controller/admin/UserController.java b/src/main/java/com/ycl/jxkg/controller/admin/UserController.java index cb2c5c0..d9aa558 100644 --- a/src/main/java/com/ycl/jxkg/controller/admin/UserController.java +++ b/src/main/java/com/ycl/jxkg/controller/admin/UserController.java @@ -1,11 +1,14 @@ package com.ycl.jxkg.controller.admin; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.ycl.jxkg.base.BaseApiController; import com.ycl.jxkg.base.Result; +import com.ycl.jxkg.domain.enums.RoleEnum; import com.ycl.jxkg.domain.other.KeyValue; import com.ycl.jxkg.domain.entity.User; import com.ycl.jxkg.domain.entity.UserEventLog; import com.ycl.jxkg.domain.enums.UserStatusEnum; +import com.ycl.jxkg.domain.vo.StudentVO; import com.ycl.jxkg.service.AuthenticationService; import com.ycl.jxkg.service.UserEventLogService; import com.ycl.jxkg.service.UserService; @@ -23,6 +26,7 @@ import java.util.Date; import java.util.List; import java.util.UUID; +import java.util.stream.Collectors; @RequiredArgsConstructor @RestController("AdminUserController") @@ -40,6 +44,25 @@ return Result.ok(page); } + @RequestMapping(value = "/student/list", method = RequestMethod.GET) + public Result<com.ycl.jxkg.domain.vo.student.user.UserResponseVO> studentList() { + List<User> studentList = new LambdaQueryChainWrapper<>(userService.getBaseMapper()) + .eq(User::getRole, RoleEnum.STUDENT.getCode()) + .orderByDesc(User::getCreateTime) + .list(); + List<StudentVO> studentVOS = studentList.stream().map(item -> { + StudentVO student = new StudentVO(); + BeanUtils.copyProperties(item, student); + return student; + }).collect(Collectors.toList()); + return Result.ok().data(studentVOS); + } + + @RequestMapping(value = "/classes/students", method = RequestMethod.GET) + public Result<com.ycl.jxkg.domain.vo.student.user.UserResponseVO> classesStudent(@RequestParam Integer classesId) { + List<StudentVO> studentList = userService.classesStudent(classesId); + return Result.ok().data(studentList); + } @RequestMapping(value = "/event/page/list", method = RequestMethod.POST) public Result<PageInfo<UserEventLogVO>> eventPageList(@RequestBody UserEventPageRequestVO model) { diff --git a/src/main/java/com/ycl/jxkg/controller/student/UserController.java b/src/main/java/com/ycl/jxkg/controller/student/UserController.java index 6e76966..0ceabd8 100644 --- a/src/main/java/com/ycl/jxkg/controller/student/UserController.java +++ b/src/main/java/com/ycl/jxkg/controller/student/UserController.java @@ -1,5 +1,6 @@ package com.ycl.jxkg.controller.student; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.ycl.jxkg.base.BaseApiController; import com.ycl.jxkg.base.Result; import com.ycl.jxkg.domain.entity.Message; @@ -46,7 +47,6 @@ UserResponseVO userVm = UserResponseVO.from(user); return Result.ok(userVm); } - @RequestMapping(value = "/register", method = RequestMethod.POST) public Result register(@RequestBody @Valid UserRegisterVO model) { diff --git a/src/main/java/com/ycl/jxkg/domain/entity/Classes.java b/src/main/java/com/ycl/jxkg/domain/entity/Classes.java index d35218c..1c3619f 100644 --- a/src/main/java/com/ycl/jxkg/domain/entity/Classes.java +++ b/src/main/java/com/ycl/jxkg/domain/entity/Classes.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.ycl.jxkg.domain.base.AbsEntity; +import com.ycl.jxkg.domain.enums.general.ClassesStatusEnum; import lombok.Data; import java.util.Date; @@ -34,7 +35,7 @@ @TableField("status") /** 鐝骇鐘舵�� */ - private String status; + private ClassesStatusEnum status; @TableField("verify_status") /** 楠岃瘉鐘舵�� */ diff --git a/src/main/java/com/ycl/jxkg/domain/entity/ClassesUser.java b/src/main/java/com/ycl/jxkg/domain/entity/ClassesUser.java new file mode 100644 index 0000000..d4782f7 --- /dev/null +++ b/src/main/java/com/ycl/jxkg/domain/entity/ClassesUser.java @@ -0,0 +1,31 @@ +package com.ycl.jxkg.domain.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; + +import com.ycl.jxkg.domain.base.AbsEntity; +import lombok.Data; + +/** + * 鐝骇涓庣敤鎴峰叧鑱旇〃 + * + * @author xp + * @since 2024-06-04 + */ +@Data +@TableName("t_classes_user") +public class ClassesUser extends AbsEntity { + + private static final long serialVersionUID = 1L; + + @TableField("classes_id") + /** */ + private Integer classesId; + + @TableField("user_id") + /** */ + private Integer userId; + + +} diff --git a/src/main/java/com/ycl/jxkg/domain/enums/general/ClassesStatusEnum.java b/src/main/java/com/ycl/jxkg/domain/enums/general/ClassesStatusEnum.java new file mode 100644 index 0000000..b135615 --- /dev/null +++ b/src/main/java/com/ycl/jxkg/domain/enums/general/ClassesStatusEnum.java @@ -0,0 +1,28 @@ +package com.ycl.jxkg.domain.enums.general; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.Getter; + +/** + * @author锛歺p + * @date锛�2024/6/4 9:35 + */ +@Getter +public enum ClassesStatusEnum { + + NORMAL("normal", "姝e父"), + DISSOLUTION("dissolution", "瑙f暎"), + ; + + @EnumValue + private final String value; + + @JsonValue + private final String desc; + + ClassesStatusEnum(String value, String desc) { + this.value = value; + this.desc = desc; + } +} diff --git a/src/main/java/com/ycl/jxkg/domain/form/ClassesUserForm.java b/src/main/java/com/ycl/jxkg/domain/form/ClassesUserForm.java new file mode 100644 index 0000000..d59163d --- /dev/null +++ b/src/main/java/com/ycl/jxkg/domain/form/ClassesUserForm.java @@ -0,0 +1,47 @@ +package com.ycl.jxkg.domain.form; + +import com.ycl.jxkg.group.Update; +import com.ycl.jxkg.group.Add; +import com.ycl.jxkg.domain.base.AbsForm; +import com.ycl.jxkg.domain.entity.ClassesUser; +import org.springframework.beans.BeanUtils; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import org.springframework.lang.NonNull; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * 鐝骇涓庣敤鎴峰叧鑱旇〃琛ㄥ崟 + * + * @author xp + * @since 2024-06-04 + */ +@Data +@ApiModel(value = "ClassesUser琛ㄥ崟", description = "鐝骇涓庣敤鎴峰叧鑱旇〃琛ㄥ崟") +public class ClassesUserForm extends AbsForm { + + @NotNull(message = "涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("") + private Integer classesId; + + @NotNull(message = "涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("") + private Integer userId; + + @NotNull(message = "鍔犲叆鏃堕棿涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鍔犲叆鏃堕棿") + private Date createTime; + + public static ClassesUser getEntityByForm(@NonNull ClassesUserForm form, ClassesUser entity) { + if(entity == null) { + entity = new ClassesUser(); + } + BeanUtils.copyProperties(form, entity); + return entity; + } + +} diff --git a/src/main/java/com/ycl/jxkg/domain/query/ClassesUserQuery.java b/src/main/java/com/ycl/jxkg/domain/query/ClassesUserQuery.java new file mode 100644 index 0000000..8e7a398 --- /dev/null +++ b/src/main/java/com/ycl/jxkg/domain/query/ClassesUserQuery.java @@ -0,0 +1,22 @@ +package com.ycl.jxkg.domain.query; + +import com.ycl.jxkg.domain.base.AbsQuery; +import java.util.List; +import org.springframework.lang.NonNull; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 鐝骇涓庣敤鎴峰叧鑱旇〃鏌ヨ + * + * @author xp + * @since 2024-06-04 + */ +@Data +@ApiModel(value = "ClassesUser鏌ヨ", description = "鐝骇涓庣敤鎴峰叧鑱旇〃鏌ヨ") +public class ClassesUserQuery extends AbsQuery { +} + diff --git a/src/main/java/com/ycl/jxkg/domain/vo/ClassesUserVO.java b/src/main/java/com/ycl/jxkg/domain/vo/ClassesUserVO.java new file mode 100644 index 0000000..a9a63f0 --- /dev/null +++ b/src/main/java/com/ycl/jxkg/domain/vo/ClassesUserVO.java @@ -0,0 +1,40 @@ +package com.ycl.jxkg.domain.vo; + +import com.ycl.jxkg.domain.base.AbsVo; +import com.ycl.jxkg.domain.entity.ClassesUser; + +import java.util.Date; +import java.util.List; +import org.springframework.lang.NonNull; +import org.springframework.beans.BeanUtils; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 鐝骇涓庣敤鎴峰叧鑱旇〃灞曠ず + * + * @author xp + * @since 2024-06-04 + */ +@Data +public class ClassesUserVO extends AbsVo { + + /** */ + private Integer classesId; + + /** */ + private Integer userId; + + /** 鍔犲叆鏃堕棿 */ + private Date createTime; + + public static ClassesUserVO getVoByEntity(@NonNull ClassesUser entity, ClassesUserVO vo) { + if(vo == null) { + vo = new ClassesUserVO(); + } + BeanUtils.copyProperties(entity, vo); + return vo; + } + +} diff --git a/src/main/java/com/ycl/jxkg/domain/vo/ClassesVO.java b/src/main/java/com/ycl/jxkg/domain/vo/ClassesVO.java index ea5b6c6..963d76d 100644 --- a/src/main/java/com/ycl/jxkg/domain/vo/ClassesVO.java +++ b/src/main/java/com/ycl/jxkg/domain/vo/ClassesVO.java @@ -7,6 +7,8 @@ import java.time.LocalDateTime; import java.util.Date; import java.util.List; + +import com.ycl.jxkg.domain.enums.general.ClassesStatusEnum; import org.springframework.lang.NonNull; import org.springframework.beans.BeanUtils; import io.swagger.annotations.ApiModel; @@ -38,7 +40,7 @@ private Integer classesNumber; /** 鐝骇鐘舵�� */ - private String status; + private ClassesStatusEnum status; /** 楠岃瘉鐘舵�� */ private String verifyStatus; diff --git a/src/main/java/com/ycl/jxkg/domain/vo/StudentVO.java b/src/main/java/com/ycl/jxkg/domain/vo/StudentVO.java new file mode 100644 index 0000000..bce8164 --- /dev/null +++ b/src/main/java/com/ycl/jxkg/domain/vo/StudentVO.java @@ -0,0 +1,18 @@ +package com.ycl.jxkg.domain.vo; + +import lombok.Data; + +/** + * @author锛歺p + * @date锛�2024/6/4 11:29 + */ +@Data +public class StudentVO { + + private Integer id; + + private String realName; + + private String phone; + +} diff --git a/src/main/java/com/ycl/jxkg/mapper/ClassesUserMapper.java b/src/main/java/com/ycl/jxkg/mapper/ClassesUserMapper.java new file mode 100644 index 0000000..8442500 --- /dev/null +++ b/src/main/java/com/ycl/jxkg/mapper/ClassesUserMapper.java @@ -0,0 +1,34 @@ +package com.ycl.jxkg.mapper; + +import com.ycl.jxkg.domain.entity.ClassesUser; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ycl.jxkg.domain.query.ClassesUserQuery; +import com.ycl.jxkg.domain.vo.ClassesUserVO; +import com.ycl.jxkg.domain.form.ClassesUserForm; +import java.util.List; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * 鐝骇涓庣敤鎴峰叧鑱旇〃 Mapper 鎺ュ彛 + * + * @author xp + * @since 2024-06-04 + */ +@Mapper +public interface ClassesUserMapper extends BaseMapper<ClassesUser> { + + /** + * id鏌ユ壘鐝骇涓庣敤鎴峰叧鑱旇〃 + * @param id + * @return + */ + ClassesUserVO getById(Integer id); + + /** + * 鍒嗛〉 + */ + IPage getPage(IPage page, @Param("query") ClassesUserQuery query); + +} diff --git a/src/main/java/com/ycl/jxkg/mapper/UserMapper.java b/src/main/java/com/ycl/jxkg/mapper/UserMapper.java index 53d7872..2b93691 100644 --- a/src/main/java/com/ycl/jxkg/mapper/UserMapper.java +++ b/src/main/java/com/ycl/jxkg/mapper/UserMapper.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ycl.jxkg.domain.other.KeyValue; import com.ycl.jxkg.domain.entity.User; +import com.ycl.jxkg.domain.vo.StudentVO; import com.ycl.jxkg.domain.vo.admin.user.UserPageRequestVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -129,4 +130,12 @@ User selectByWxOpenId(@Param("wxOpenId") String wxOpenId); + + /** + * 鏌ヨ鐝骇涓嬬殑瀛︾敓 + * + * @param classesId + * @return + */ + List<StudentVO> classesStudent(@Param("classesId") Integer classesId); } diff --git a/src/main/java/com/ycl/jxkg/service/ClassesService.java b/src/main/java/com/ycl/jxkg/service/ClassesService.java index 1873b69..b517a84 100644 --- a/src/main/java/com/ycl/jxkg/service/ClassesService.java +++ b/src/main/java/com/ycl/jxkg/service/ClassesService.java @@ -5,6 +5,7 @@ import com.ycl.jxkg.base.Result; import com.ycl.jxkg.domain.form.ClassesForm; import com.ycl.jxkg.domain.query.ClassesQuery; + import java.util.List; /** @@ -17,6 +18,7 @@ /** * 娣诲姞 + * * @param form * @return */ @@ -24,6 +26,7 @@ /** * 淇敼 + * * @param form * @return */ @@ -31,6 +34,7 @@ /** * 鎵归噺鍒犻櫎 + * * @param ids * @return */ @@ -38,6 +42,7 @@ /** * id鍒犻櫎 + * * @param id * @return */ @@ -45,6 +50,7 @@ /** * 鍒嗛〉鏌ヨ + * * @param query * @return */ @@ -52,6 +58,7 @@ /** * 鏍规嵁id鏌ユ壘 + * * @param id * @return */ @@ -59,7 +66,16 @@ /** * 鍒楄〃 + * * @return */ Result all(); + + /** + * 瑙f暎 + * + * @param id + * @return + */ + Result dissolution(Integer id); } diff --git a/src/main/java/com/ycl/jxkg/service/ClassesUserService.java b/src/main/java/com/ycl/jxkg/service/ClassesUserService.java new file mode 100644 index 0000000..754ac19 --- /dev/null +++ b/src/main/java/com/ycl/jxkg/service/ClassesUserService.java @@ -0,0 +1,65 @@ +package com.ycl.jxkg.service; + +import com.ycl.jxkg.domain.entity.ClassesUser; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ycl.jxkg.base.Result; +import com.ycl.jxkg.domain.form.ClassesUserForm; +import com.ycl.jxkg.domain.query.ClassesUserQuery; +import java.util.List; + +/** + * 鐝骇涓庣敤鎴峰叧鑱旇〃 鏈嶅姟绫� + * + * @author xp + * @since 2024-06-04 + */ +public interface ClassesUserService extends IService<ClassesUser> { + + /** + * 娣诲姞 + * @param form + * @return + */ + Result add(ClassesUserForm form); + + /** + * 淇敼 + * @param form + * @return + */ + Result update(ClassesUserForm form); + + /** + * 鎵归噺鍒犻櫎 + * @param ids + * @return + */ + Result remove(List<String> ids); + + /** + * id鍒犻櫎 + * @param id + * @return + */ + Result removeById(String id); + + /** + * 鍒嗛〉鏌ヨ + * @param query + * @return + */ + Result page(ClassesUserQuery query); + + /** + * 鏍规嵁id鏌ユ壘 + * @param id + * @return + */ + Result detail(Integer id); + + /** + * 鍒楄〃 + * @return + */ + Result all(); +} diff --git a/src/main/java/com/ycl/jxkg/service/UserService.java b/src/main/java/com/ycl/jxkg/service/UserService.java index ea65137..9644f52 100644 --- a/src/main/java/com/ycl/jxkg/service/UserService.java +++ b/src/main/java/com/ycl/jxkg/service/UserService.java @@ -4,6 +4,7 @@ import com.ycl.jxkg.domain.form.RegisterForm; import com.ycl.jxkg.domain.other.KeyValue; import com.ycl.jxkg.domain.entity.User; +import com.ycl.jxkg.domain.vo.StudentVO; import com.ycl.jxkg.domain.vo.admin.user.UserPageRequestVO; import com.github.pagehelper.PageInfo; @@ -141,4 +142,12 @@ * @param form */ void studentRegister(RegisterForm form); + + /** + * 鏌ヨ鐝骇涓嬬幇鏈夌殑瀛︾敓 + * + * @param classesId + * @return + */ + List<StudentVO> classesStudent(Integer classesId); } diff --git a/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java index 14082e3..f7caea6 100644 --- a/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java +++ b/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java @@ -1,7 +1,9 @@ package com.ycl.jxkg.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; import com.ycl.jxkg.domain.entity.Classes; +import com.ycl.jxkg.domain.enums.general.ClassesStatusEnum; import com.ycl.jxkg.mapper.ClassesMapper; import com.ycl.jxkg.service.ClassesService; import com.ycl.jxkg.base.Result; @@ -116,4 +118,13 @@ .collect(Collectors.toList()); return Result.ok().data(vos); } + + @Override + public Result dissolution(Integer id) { + new LambdaUpdateChainWrapper<>(baseMapper) + .eq(Classes::getId, id) + .set(Classes::getStatus, ClassesStatusEnum.DISSOLUTION) + .update(); + return Result.ok("瑙f暎鎴愬姛"); + } } diff --git a/src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java new file mode 100644 index 0000000..639af0f --- /dev/null +++ b/src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java @@ -0,0 +1,119 @@ +package com.ycl.jxkg.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.ycl.jxkg.domain.entity.ClassesUser; +import com.ycl.jxkg.mapper.ClassesUserMapper; +import com.ycl.jxkg.service.ClassesUserService; +import com.ycl.jxkg.base.Result; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ycl.jxkg.domain.form.ClassesUserForm; +import com.ycl.jxkg.domain.vo.ClassesUserVO; +import com.ycl.jxkg.domain.query.ClassesUserQuery; +import org.springframework.stereotype.Service; +import lombok.RequiredArgsConstructor; +import com.ycl.jxkg.utils.PageUtil; +import org.springframework.beans.BeanUtils; +import org.springframework.util.Assert; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 鐝骇涓庣敤鎴峰叧鑱旇〃 鏈嶅姟瀹炵幇绫� + * + * @author xp + * @since 2024-06-04 + */ +@Service +@RequiredArgsConstructor +public class ClassesUserServiceImpl extends ServiceImpl<ClassesUserMapper, ClassesUser> implements ClassesUserService { + + private final ClassesUserMapper classesUserMapper; + + /** + * 娣诲姞 + * @param form + * @return + */ + @Override + public Result add(ClassesUserForm form) { + ClassesUser entity = ClassesUserForm.getEntityByForm(form, null); + baseMapper.insert(entity); + return Result.ok("娣诲姞鎴愬姛"); + } + + /** + * 淇敼 + * @param form + * @return + */ + @Override + public Result update(ClassesUserForm form) { + ClassesUser entity = baseMapper.selectById(form.getId()); + + // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊 + Assert.notNull(entity, "璁板綍涓嶅瓨鍦�"); + BeanUtils.copyProperties(form, entity); + baseMapper.updateById(entity); + return Result.ok("淇敼鎴愬姛"); + } + + /** + * 鎵归噺鍒犻櫎 + * @param ids + * @return + */ + @Override + public Result remove(List<String> ids) { + baseMapper.deleteBatchIds(ids); + return Result.ok("鍒犻櫎鎴愬姛"); + } + + /** + * id鍒犻櫎 + * @param id + * @return + */ + @Override + public Result removeById(String id) { + baseMapper.deleteById(id); + return Result.ok("鍒犻櫎鎴愬姛"); + } + + /** + * 鍒嗛〉鏌ヨ + * @param query + * @return + */ + @Override + public Result page(ClassesUserQuery query) { + IPage<ClassesUserVO> page = PageUtil.getPage(query, ClassesUserVO.class); + baseMapper.getPage(page, query); + return Result.ok().data(page.getRecords()).total(page.getTotal()); + } + + /** + * 鏍规嵁id鏌ユ壘 + * @param id + * @return + */ + @Override + public Result detail(Integer id) { + ClassesUserVO vo = baseMapper.getById(id); + Assert.notNull(vo, "璁板綍涓嶅瓨鍦�"); + return Result.ok().data(vo); + } + + /** + * 鍒楄〃 + * @return + */ + @Override + public Result all() { + List<ClassesUser> entities = baseMapper.selectList(null); + List<ClassesUserVO> vos = entities.stream() + .map(entity -> ClassesUserVO.getVoByEntity(entity, null)) + .collect(Collectors.toList()); + return Result.ok().data(vos); + } +} diff --git a/src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java index 65cc9c8..77ae849 100644 --- a/src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java +++ b/src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java @@ -6,6 +6,7 @@ import com.ycl.jxkg.domain.enums.UserStatusEnum; import com.ycl.jxkg.domain.form.RegisterForm; import com.ycl.jxkg.domain.other.KeyValue; +import com.ycl.jxkg.domain.vo.StudentVO; import com.ycl.jxkg.event.UserEvent; import com.ycl.jxkg.exception.BusinessException; import com.ycl.jxkg.domain.entity.User; @@ -171,4 +172,9 @@ userEventLog.setContent("娆㈣繋 " + student.getUserName() + " 娉ㄥ唽鏉ュ埌姹熻タ绌虹闊宠棰戝煿璁郴缁�"); eventPublisher.publishEvent(new UserEvent(userEventLog)); } + + @Override + public List<StudentVO> classesStudent(Integer classesId) { + return userMapper.classesStudent(classesId); + } } diff --git a/src/main/resources/mapper/ClassesMapper.xml b/src/main/resources/mapper/ClassesMapper.xml index 2b6455b..95bd72e 100644 --- a/src/main/resources/mapper/ClassesMapper.xml +++ b/src/main/resources/mapper/ClassesMapper.xml @@ -10,7 +10,7 @@ <result column="phone" property="teacherPhone" /> <result column="create_time" property="createTime" /> <result column="classes_number" property="classesNumber" /> - <result column="status" property="status" /> + <result column="status" property="status" typeHandler="com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler"/> <result column="verify_status" property="verifyStatus" /> <result column="start_time" property="startTime" /> <result column="end_time" property="endTime" /> diff --git a/src/main/resources/mapper/ClassesUserMapper.xml b/src/main/resources/mapper/ClassesUserMapper.xml new file mode 100644 index 0000000..87fc1f8 --- /dev/null +++ b/src/main/resources/mapper/ClassesUserMapper.xml @@ -0,0 +1,43 @@ +<?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.ycl.jxkg.mapper.ClassesUserMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.ycl.jxkg.domain.vo.ClassesUserVO"> + <result column="classes_id" property="classesId" /> + <result column="user_id" property="userId" /> + <result column="create_time" property="createTime" /> + </resultMap> + + + + + + + + <select id="getById" resultMap="BaseResultMap"> + SELECT + TCU.classes_id, + TCU.user_id, + TCU.create_time, + TCU.id + FROM + t_classes_user TCU + WHERE + TCU.id = #{id} AND TCU.deleted = 0 + </select> + + + <select id="getPage" resultMap="BaseResultMap"> + SELECT + TCU.classes_id, + TCU.user_id, + TCU.create_time, + TCU.id + FROM + t_classes_user TCU + WHERE + TCU.deleted = 0 + </select> + +</mapper> diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml index ca8edcc..b3fa2cd 100644 --- a/src/main/resources/mapper/UserMapper.xml +++ b/src/main/resources/mapper/UserMapper.xml @@ -194,5 +194,14 @@ limit 1 </select> + <select id="classesStudent" resultType="com.ycl.jxkg.domain.vo.StudentVO"> + SELECT tu.id, + tu.real_name, + tu.phone + FROM t_user tu + INNER JOIN t_classes_user tcu ON tu.id = tcu.user_id + WHERE tcu.classes_id = #{classesId} + ORDER BY tcu.create_time + </select> </mapper> -- Gitblit v1.8.0