From 531a0c28dbabde3e9e2ee2598e0448cf323c9b94 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期一, 03 六月 2024 14:47:34 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/main/java/com/ycl/jxkg/domain/query/ClassesQuery.java | 23 + src/main/java/com/ycl/jxkg/mapper/ClassesMapper.java | 33 ++ src/main/java/com/ycl/jxkg/service/ClassesService.java | 65 +++++ src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java | 38 ++ src/main/java/com/ycl/jxkg/controller/wx/student/UserController.java | 2 src/main/java/com/ycl/jxkg/config/spring/security/RestUtil.java | 2 src/main/java/com/ycl/jxkg/domain/form/ClassesForm.java | 59 ++++ src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java | 119 +++++++++ src/main/java/com/ycl/jxkg/base/Result.java | 31 + src/main/java/com/ycl/jxkg/config/spring/exception/ExceptionHandle.java | 68 ++++ src/main/java/com/ycl/jxkg/domain/vo/ClassesVO.java | 50 +++ src/main/resources/mapper/ClassesMapper.xml | 52 ++++ src/main/java/com/ycl/jxkg/config/spring/security/SecurityConfigurer.java | 1 src/main/java/com/ycl/jxkg/controller/admin/SubjectController.java | 16 src/main/java/com/ycl/jxkg/domain/enums/UserStatusEnum.java | 15 src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java | 81 ++++++ src/main/java/com/ycl/jxkg/controller/RegisterController.java | 6 src/main/java/com/ycl/jxkg/domain/entity/Classes.java | 42 +++ src/main/java/com/ycl/jxkg/domain/enums/ExamPaperAnswerStatusEnum.java | 15 src/main/java/com/ycl/jxkg/domain/enums/ExamPaperTypeEnum.java | 15 src/main/java/com/ycl/jxkg/domain/enums/QuestionStatusEnum.java | 16 21 files changed, 661 insertions(+), 88 deletions(-) diff --git a/src/main/java/com/ycl/jxkg/base/Result.java b/src/main/java/com/ycl/jxkg/base/Result.java index b3642f3..acdfb06 100644 --- a/src/main/java/com/ycl/jxkg/base/Result.java +++ b/src/main/java/com/ycl/jxkg/base/Result.java @@ -11,7 +11,10 @@ public class Result<T> extends HashMap<String, Object> { private int code; private String message; - private T response; + private T data; + + public Result() { + } /** * Instantiates a new Rest response. @@ -31,10 +34,12 @@ * @param message the message * @param response the response */ - public Result(int code, String message, T response) { - this.code = code; - this.message = message; - this.response = response; + public static Result response(int code, String message, Object response) { + Result restResponse = new Result(); + restResponse.put("code", code); + restResponse.put("message", message); + restResponse.put("data", response); + return restResponse; } /** @@ -67,7 +72,7 @@ */ public static <F> Result<F> ok(F response) { SystemCode systemCode = SystemCode.OK; - return new Result<>(systemCode.getCode(), systemCode.getMessage(), response); + return Result.response(systemCode.getCode(), systemCode.getMessage(), response); } /** @@ -112,7 +117,7 @@ * @return the response */ public T getResponse() { - return response; + return data; } /** @@ -121,7 +126,7 @@ * @param response the response */ public void setResponse(T response) { - this.response = response; + this.data = response; } @Override @@ -129,4 +134,14 @@ super.put(key, value); return this; } + + public Result data(Object data) { + super.put("data", data); + return this; + } + + public Result total(Long total) { + super.put("total", total); + return this; + } } diff --git a/src/main/java/com/ycl/jxkg/config/spring/exception/ExceptionHandle.java b/src/main/java/com/ycl/jxkg/config/spring/exception/ExceptionHandle.java index 57792ee..3a96ded 100644 --- a/src/main/java/com/ycl/jxkg/config/spring/exception/ExceptionHandle.java +++ b/src/main/java/com/ycl/jxkg/config/spring/exception/ExceptionHandle.java @@ -1,17 +1,23 @@ package com.ycl.jxkg.config.spring.exception; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import com.ycl.jxkg.base.Result; import com.ycl.jxkg.base.SystemCode; import com.ycl.jxkg.utils.ErrorUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.http.HttpStatus; import org.springframework.validation.BindException; import org.springframework.validation.FieldError; +import org.springframework.web.HttpRequestMethodNotSupportedException; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; +import javax.servlet.http.HttpServletRequest; +import java.util.List; import java.util.stream.Collectors; /** @@ -22,7 +28,12 @@ */ @ControllerAdvice public class ExceptionHandle { + private final static Logger logger = LoggerFactory.getLogger(ExceptionHandle.class); + /** + * 鍏徃椤圭洰鐨勫寘缁撴瀯锛岀敤浜庣缉鐭敊璇棩蹇楃殑闀垮害 + */ + private final static String COMPANY_PACKAGE = "com.ycl.jxkg."; /** * Handler rest response. @@ -32,25 +43,28 @@ */ @ExceptionHandler(Exception.class) @ResponseBody - public Result handler(Exception e) { - logger.error(e.getMessage(), e); + public Result handler(Exception e, HttpServletRequest request) { + String errMsg = String.format("绯荤粺寮傚父-%s", e.getMessage()); + this.printExceptionLocation(e, request, errMsg); return new Result<>(SystemCode.InnerError.getCode(), SystemCode.InnerError.getMessage()); } /** - * Handler rest response. + * JSON浼犲弬鏁版嵁鏍¢獙寮傚父 * - * @param e the e - * @return the rest response + * @param e + * @param request + * @return + * @throws JsonProcessingException */ @ExceptionHandler(MethodArgumentNotValidException.class) - @ResponseBody - public Result handler(MethodArgumentNotValidException e) { - String errorMsg = e.getBindingResult().getAllErrors().stream().map(file -> { - FieldError fieldError = (FieldError) file; - return ErrorUtil.parameterErrorFormat(fieldError.getField(), fieldError.getDefaultMessage()); - }).collect(Collectors.joining()); - return new Result<>(SystemCode.ParameterValidError.getCode(), errorMsg); + public Result handleMethodArgumentNotValidException(MethodArgumentNotValidException e, + HttpServletRequest request) throws JsonProcessingException { + List<String> err = e.getBindingResult().getAllErrors().stream().map(error -> error.getDefaultMessage()).collect(Collectors.toList()); + String s = new ObjectMapper().writeValueAsString(err); + String errMsg = String.format("鍙傛暟鏍¢獙澶辫触-%s", s); + this.printExceptionLocation(e, request, errMsg); + return Result.fail(HttpStatus.INTERNAL_SERVER_ERROR.value(), s); } /** @@ -69,5 +83,35 @@ return new Result<>(SystemCode.ParameterValidError.getCode(), errorMsg); } + /** + * 璇锋眰鏂瑰紡涓嶆敮鎸佸紓甯� + * + * @param e + * @param request + * @return + */ + @ExceptionHandler(HttpRequestMethodNotSupportedException.class) + public Result handleHttpRequestMethodNotSupported(HttpRequestMethodNotSupportedException e, + HttpServletRequest request) { + String errMSg = String.format("涓嶆敮鎸�%s璇锋眰", e.getMethod()); + this.printExceptionLocation(e, request, errMSg); + return Result.fail(HttpStatus.INTERNAL_SERVER_ERROR.value(), e.getMessage()); + } + /** + * 鎵撳嵃寮傚父鍑虹幇浣嶇疆 + * + * @param e + */ + private void printExceptionLocation(Throwable e, HttpServletRequest request, String errMsg) { + StackTraceElement stackTraceElement = e.getStackTrace()[0]; + String className = stackTraceElement.getClassName().contains(COMPANY_PACKAGE) ? + stackTraceElement.getClassName().split(COMPANY_PACKAGE)[1] : stackTraceElement.getClassName(); + logger.error("鎺ュ彛锛氥�恵}銆�, 寮傚父绫伙細銆恵}銆戯紝鏂规硶锛氥�恵}銆戯紝鎵�鍦ㄨ锛氥�恵}銆�, 閿欒淇℃伅锛氥�恵}銆�", + request.getRequestURI(), + className, + stackTraceElement.getMethodName(), + stackTraceElement.getLineNumber(), + errMsg); + } } diff --git a/src/main/java/com/ycl/jxkg/config/spring/security/RestUtil.java b/src/main/java/com/ycl/jxkg/config/spring/security/RestUtil.java index 4f80f50..52c7d0d 100644 --- a/src/main/java/com/ycl/jxkg/config/spring/security/RestUtil.java +++ b/src/main/java/com/ycl/jxkg/config/spring/security/RestUtil.java @@ -52,7 +52,7 @@ */ public static void response(HttpServletResponse response, int systemCode, String msg, Object content) { try { - Result res = new Result<>(systemCode, msg, content); + Result res = Result.response(systemCode, msg, content); String resStr = JsonUtil.toJsonStr(res); response.setContentType("application/json;charset=utf-8"); response.getWriter().write(resStr); diff --git a/src/main/java/com/ycl/jxkg/config/spring/security/SecurityConfigurer.java b/src/main/java/com/ycl/jxkg/config/spring/security/SecurityConfigurer.java index 92e4c67..7312941 100644 --- a/src/main/java/com/ycl/jxkg/config/spring/security/SecurityConfigurer.java +++ b/src/main/java/com/ycl/jxkg/config/spring/security/SecurityConfigurer.java @@ -86,6 +86,7 @@ .antMatchers(securityIgnoreUrls.toArray(ignores)).permitAll() .antMatchers("/api/admin/**").hasRole(RoleEnum.ADMIN.getName()) .antMatchers("/api/student/**").hasRole(RoleEnum.STUDENT.getName()) + .antMatchers("/api/register/**").anonymous() .anyRequest().permitAll() .and().exceptionHandling().accessDeniedHandler(restAccessDeniedHandler) .and().formLogin().successHandler(restAuthenticationSuccessHandler).failureHandler(restAuthenticationFailureHandler) diff --git a/src/main/java/com/ycl/jxkg/controller/RegisterController.java b/src/main/java/com/ycl/jxkg/controller/RegisterController.java index 829ef47..5e32121 100644 --- a/src/main/java/com/ycl/jxkg/controller/RegisterController.java +++ b/src/main/java/com/ycl/jxkg/controller/RegisterController.java @@ -2,6 +2,7 @@ import com.ycl.jxkg.base.Result; import com.ycl.jxkg.domain.form.RegisterForm; +import com.ycl.jxkg.service.AuthenticationService; import com.ycl.jxkg.service.UserService; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; @@ -18,19 +19,22 @@ */ @RestController @RequiredArgsConstructor -@RequestMapping("/register") +@RequestMapping("/api/register") public class RegisterController { private final UserService userService; + private final AuthenticationService authenticationService; @PostMapping("/teacher") public Result teacherRegister(@RequestBody @Validated RegisterForm form) { + form.setPassword(authenticationService.pwdEncode(form.getPassword())); userService.teacherRegister(form); return Result.ok("娉ㄥ唽鎴愬姛"); } @PostMapping("/student") public Result studentRegister(@RequestBody @Validated RegisterForm form) { + form.setPassword(authenticationService.pwdEncode(form.getPassword())); userService.studentRegister(form); return Result.ok("娉ㄥ唽鎴愬姛"); } diff --git a/src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java b/src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java new file mode 100644 index 0000000..e039f5c --- /dev/null +++ b/src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java @@ -0,0 +1,81 @@ +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 javax.validation.constraints.NotEmpty; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import com.ycl.jxkg.service.ClassesService; +import com.ycl.jxkg.base.Result; +import com.ycl.jxkg.domain.form.ClassesForm; +import com.ycl.jxkg.domain.query.ClassesQuery; +import org.springframework.web.bind.annotation.*; + +/** + * 鐝骇 鍓嶇鎺у埗鍣� + * + * @author xp + * @since 2024-06-03 + */ +@Validated +@RequiredArgsConstructor +@Api(value = "鐝骇", tags = "鐝骇绠$悊") +@RestController +@RequestMapping("/classes") +public class ClassesController { + + private final ClassesService classesService; + + @PostMapping + @ApiOperation(value = "娣诲姞", notes = "娣诲姞") + @PreAuthorize("hasAuthority('classes:add')") + public Result add(@RequestBody @Validated(Add.class) ClassesForm form) { + return classesService.add(form); + } + + @PutMapping + @ApiOperation(value = "淇敼", notes = "淇敼") + @PreAuthorize("hasAuthority('classes:edit')") + public Result update(@RequestBody @Validated(Update.class) ClassesForm form) { + return classesService.update(form); + } + + @DeleteMapping("/{id}") + @ApiOperation(value = "ID鍒犻櫎", notes = "ID鍒犻櫎") + @PreAuthorize("hasAuthority('classes:del')") + public Result removeById(@PathVariable("id") String id) { + return classesService.removeById(id); + } + + @DeleteMapping("/batch") + @ApiOperation(value = "鎵归噺鍒犻櫎", notes = "鎵归噺鍒犻櫎") + @PreAuthorize("hasAuthority('classes:del:batch')") + public Result remove(@RequestBody @NotEmpty(message = "璇烽�夋嫨鏁版嵁") List<String> ids) { + return classesService.remove(ids); + } + + @GetMapping("/page") + @ApiOperation(value = "鍒嗛〉", notes = "鍒嗛〉") + @PreAuthorize("hasAuthority('classes:page')") + public Result page(ClassesQuery query) { + return classesService.page(query); + } + + @GetMapping("/{id}") + @ApiOperation(value = "璇︽儏", notes = "璇︽儏") + @PreAuthorize("hasAuthority('classes:detail')") + public Result detail(@PathVariable("id") Integer id) { + return classesService.detail(id); + } + + @GetMapping("/list") + @PreAuthorize("hasAuthority('classes:list')") + @ApiOperation(value = "鍒楄〃", notes = "鍒楄〃") + public Result list() { + return classesService.all(); + } +} diff --git a/src/main/java/com/ycl/jxkg/controller/admin/EducationController.java b/src/main/java/com/ycl/jxkg/controller/admin/SubjectController.java similarity index 79% rename from src/main/java/com/ycl/jxkg/controller/admin/EducationController.java rename to src/main/java/com/ycl/jxkg/controller/admin/SubjectController.java index b4beeab..345f1fe 100644 --- a/src/main/java/com/ycl/jxkg/controller/admin/EducationController.java +++ b/src/main/java/com/ycl/jxkg/controller/admin/SubjectController.java @@ -18,19 +18,19 @@ import java.util.List; @RequiredArgsConstructor -@RestController("AdminEducationController") -@RequestMapping(value = "/api/admin/education") -public class EducationController extends BaseApiController { +@RestController("AdminSubjectController") +@RequestMapping(value = "/api/admin/subject") +public class SubjectController extends BaseApiController { private final SubjectService subjectService; - @RequestMapping(value = "/subject/list", method = RequestMethod.POST) + @RequestMapping(value = "/list", method = RequestMethod.POST) public Result<List<Subject>> list() { List<Subject> subjects = subjectService.allSubject(); return Result.ok(subjects); } - @RequestMapping(value = "/subject/page", method = RequestMethod.POST) + @RequestMapping(value = "/page", method = RequestMethod.POST) public Result<PageInfo<SubjectResponseVO>> pageList(@RequestBody SubjectPageRequestVO model) { PageInfo<Subject> pageInfo = subjectService.page(model); PageInfo<SubjectResponseVO> page = PageInfoHelper.copyMap(pageInfo, e -> { @@ -41,7 +41,7 @@ return Result.ok(page); } - @RequestMapping(value = "/subject/edit", method = RequestMethod.POST) + @RequestMapping(value = "/edit", method = RequestMethod.POST) public Result edit(@RequestBody @Valid SubjectEditRequestVO model) { Subject subject = new Subject(); BeanUtils.copyProperties(model, subject); @@ -53,7 +53,7 @@ return Result.ok(); } - @RequestMapping(value = "/subject/select/{id}", method = RequestMethod.POST) + @RequestMapping(value = "/select/{id}", method = RequestMethod.POST) public Result<SubjectEditRequestVO> select(@PathVariable Integer id) { Subject subject = subjectService.getById(id); SubjectEditRequestVO vo = new SubjectEditRequestVO(); @@ -61,7 +61,7 @@ return Result.ok(vo); } - @RequestMapping(value = "/subject/delete/{id}", method = RequestMethod.POST) + @RequestMapping(value = "/delete/{id}", method = RequestMethod.POST) public Result delete(@PathVariable Integer id) { Subject subject = subjectService.getById(id); subjectService.updateById(subject); diff --git a/src/main/java/com/ycl/jxkg/controller/wx/student/UserController.java b/src/main/java/com/ycl/jxkg/controller/wx/student/UserController.java index 01eec64..1670667 100644 --- a/src/main/java/com/ycl/jxkg/controller/wx/student/UserController.java +++ b/src/main/java/com/ycl/jxkg/controller/wx/student/UserController.java @@ -67,7 +67,7 @@ user.setCreateTime(new Date()); userService.insertUser(user); UserEventLog userEventLog = new UserEventLog(user.getId(), user.getUserName(), user.getRealName(), new Date()); - userEventLog.setContent("娆㈣繋 " + user.getUserName() + " 娉ㄥ唽鏉ュ埌瀛︿箣鎬濆紑婧愯�冭瘯绯荤粺"); + userEventLog.setContent("娆㈣繋 " + user.getUserName() + " 娉ㄥ唽鏉ュ埌姹熻タ绌虹闊宠棰戝煿璁郴缁�"); eventPublisher.publishEvent(new UserEvent(userEventLog)); return Result.ok(); } diff --git a/src/main/java/com/ycl/jxkg/domain/entity/Classes.java b/src/main/java/com/ycl/jxkg/domain/entity/Classes.java new file mode 100644 index 0000000..45c39a2 --- /dev/null +++ b/src/main/java/com/ycl/jxkg/domain/entity/Classes.java @@ -0,0 +1,42 @@ +package com.ycl.jxkg.domain.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; + +import com.ycl.jxkg.domain.base.AbsEntity; +import lombok.Data; + +/** + * 鐝骇 + * + * @author xp + * @since 2024-06-03 + */ +@Data +@TableName("t_classes") +public class Classes extends AbsEntity { + + private static final long serialVersionUID = 1L; + + @TableField("class_name") + /** 鐝骇鍚嶇О */ + private String className; + + @TableField("create_user") + /** 鍒涘缓浜� */ + private Integer createUser; + + @TableField("classes_number") + /** 鐝骇浜烘暟 */ + private Integer classesNumber; + + @TableField("status") + /** 鐝骇鐘舵�� */ + private String status; + + @TableField("verify_status") + /** 楠岃瘉鐘舵�� */ + private String verifyStatus; + + +} diff --git a/src/main/java/com/ycl/jxkg/domain/enums/ExamPaperAnswerStatusEnum.java b/src/main/java/com/ycl/jxkg/domain/enums/ExamPaperAnswerStatusEnum.java index 7ce5652..965ae74 100644 --- a/src/main/java/com/ycl/jxkg/domain/enums/ExamPaperAnswerStatusEnum.java +++ b/src/main/java/com/ycl/jxkg/domain/enums/ExamPaperAnswerStatusEnum.java @@ -8,30 +8,23 @@ WaitJudge(1, "寰呮壒鏀�"), Complete(2, "瀹屾垚"); - int code; - String name; + private final Integer code; + private final String name; - ExamPaperAnswerStatusEnum(int code, String name) { + ExamPaperAnswerStatusEnum(Integer code, String name) { this.code = code; this.name = name; } - public int getCode() { + public Integer getCode() { return code; - } - - public void setCode(int code) { - this.code = code; } public String getName() { return name; } - public void setName(String name) { - this.name = name; - } private static final Map<Integer, ExamPaperAnswerStatusEnum> keyMap = new HashMap<>(); diff --git a/src/main/java/com/ycl/jxkg/domain/enums/ExamPaperTypeEnum.java b/src/main/java/com/ycl/jxkg/domain/enums/ExamPaperTypeEnum.java index 013206f..440d452 100644 --- a/src/main/java/com/ycl/jxkg/domain/enums/ExamPaperTypeEnum.java +++ b/src/main/java/com/ycl/jxkg/domain/enums/ExamPaperTypeEnum.java @@ -9,10 +9,10 @@ TimeLimit(4, "鏃舵璇曞嵎"), Task(6, "浠诲姟璇曞嵎"); - int code; - String name; + private final Integer code; + private final String name; - ExamPaperTypeEnum(int code, String name) { + ExamPaperTypeEnum(Integer code, String name) { this.code = code; this.name = name; } @@ -31,21 +31,14 @@ } - public int getCode() { + public Integer getCode() { return code; - } - - public void setCode(int code) { - this.code = code; } public String getName() { return name; } - public void setName(String name) { - this.name = name; - } } diff --git a/src/main/java/com/ycl/jxkg/domain/enums/QuestionStatusEnum.java b/src/main/java/com/ycl/jxkg/domain/enums/QuestionStatusEnum.java index 6f28d99..1ee7f25 100644 --- a/src/main/java/com/ycl/jxkg/domain/enums/QuestionStatusEnum.java +++ b/src/main/java/com/ycl/jxkg/domain/enums/QuestionStatusEnum.java @@ -5,29 +5,21 @@ OK(1, "姝e父"), Publish(2, "鍙戝竷"); - int code; - String name; + private final Integer code; + private final String name; - QuestionStatusEnum(int code, String name) { + QuestionStatusEnum(Integer code, String name) { this.code = code; this.name = name; } - public int getCode() { + public Integer getCode() { return code; - } - - public void setCode(int code) { - this.code = code; } public String getName() { return name; - } - - public void setName(String name) { - this.name = name; } diff --git a/src/main/java/com/ycl/jxkg/domain/enums/UserStatusEnum.java b/src/main/java/com/ycl/jxkg/domain/enums/UserStatusEnum.java index cba2b24..0766723 100644 --- a/src/main/java/com/ycl/jxkg/domain/enums/UserStatusEnum.java +++ b/src/main/java/com/ycl/jxkg/domain/enums/UserStatusEnum.java @@ -9,10 +9,10 @@ Enable(1, "鍚敤"), Disable(2, "绂佺敤"); - int code; - String name; + private final Integer code; + private final String name; - UserStatusEnum(int code, String name) { + UserStatusEnum(Integer code, String name) { this.code = code; this.name = name; } @@ -29,20 +29,13 @@ return keyMap.get(code); } - public int getCode() { + public Integer getCode() { return code; - } - - public void setCode(int code) { - this.code = code; } public String getName() { return name; } - public void setName(String name) { - this.name = name; - } } diff --git a/src/main/java/com/ycl/jxkg/domain/form/ClassesForm.java b/src/main/java/com/ycl/jxkg/domain/form/ClassesForm.java new file mode 100644 index 0000000..497b556 --- /dev/null +++ b/src/main/java/com/ycl/jxkg/domain/form/ClassesForm.java @@ -0,0 +1,59 @@ +package com.ycl.jxkg.domain.form; + +import com.ycl.jxkg.domain.base.AbsForm; +import com.ycl.jxkg.group.Update; +import com.ycl.jxkg.group.Add; +import com.ycl.jxkg.domain.entity.Classes; +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-03 + */ +@Data +@ApiModel(value = "Classes琛ㄥ崟", description = "鐝骇琛ㄥ崟") +public class ClassesForm extends AbsForm { + + @NotBlank(message = "鐝骇鍚嶇О涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鐝骇鍚嶇О") + private String className; + + @NotNull(message = "鍒涘缓浜轰笉鑳戒负绌�", groups = {Add.class, Update.class}) + @ApiModelProperty("鍒涘缓浜�") + private Integer createUser; + + @NotNull(message = "鍒涘缓鏃堕棿涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鍒涘缓鏃堕棿") + private Date createTime; + + @NotNull(message = "鐝骇浜烘暟涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鐝骇浜烘暟") + private Integer classesNumber; + + @NotBlank(message = "鐝骇鐘舵�佷笉鑳戒负绌�", groups = {Add.class, Update.class}) + @ApiModelProperty("鐝骇鐘舵��") + private String status; + + @NotBlank(message = "楠岃瘉鐘舵�佷笉鑳戒负绌�", groups = {Add.class, Update.class}) + @ApiModelProperty("楠岃瘉鐘舵��") + private String verifyStatus; + + public static Classes getEntityByForm(@NonNull ClassesForm form, Classes entity) { + if(entity == null) { + entity = new Classes(); + } + BeanUtils.copyProperties(form, entity); + return entity; + } + +} diff --git a/src/main/java/com/ycl/jxkg/domain/query/ClassesQuery.java b/src/main/java/com/ycl/jxkg/domain/query/ClassesQuery.java new file mode 100644 index 0000000..1aec3cf --- /dev/null +++ b/src/main/java/com/ycl/jxkg/domain/query/ClassesQuery.java @@ -0,0 +1,23 @@ +package com.ycl.jxkg.domain.query; + +import java.util.List; + +import com.ycl.jxkg.domain.base.AbsQuery; +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-03 + */ +@Data +@ApiModel(value = "Classes鏌ヨ", description = "鐝骇鏌ヨ") +public class ClassesQuery extends AbsQuery { +} + diff --git a/src/main/java/com/ycl/jxkg/domain/vo/ClassesVO.java b/src/main/java/com/ycl/jxkg/domain/vo/ClassesVO.java new file mode 100644 index 0000000..8d51133 --- /dev/null +++ b/src/main/java/com/ycl/jxkg/domain/vo/ClassesVO.java @@ -0,0 +1,50 @@ +package com.ycl.jxkg.domain.vo; + +import com.ycl.jxkg.domain.base.AbsVo; +import com.ycl.jxkg.domain.entity.Classes; + +import java.time.LocalDateTime; +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-03 + */ +@Data +public class ClassesVO extends AbsVo { + + /** 鐝骇鍚嶇О */ + private String className; + + /** 鍒涘缓浜� */ + private Integer createUser; + + /** 鍒涘缓鏃堕棿 */ + private Date createTime; + + /** 鐝骇浜烘暟 */ + private Integer classesNumber; + + /** 鐝骇鐘舵�� */ + private String status; + + /** 楠岃瘉鐘舵�� */ + private String verifyStatus; + + public static ClassesVO getVoByEntity(@NonNull Classes entity, ClassesVO vo) { + if(vo == null) { + vo = new ClassesVO(); + } + BeanUtils.copyProperties(entity, vo); + return vo; + } + +} diff --git a/src/main/java/com/ycl/jxkg/mapper/ClassesMapper.java b/src/main/java/com/ycl/jxkg/mapper/ClassesMapper.java new file mode 100644 index 0000000..7b5f3f9 --- /dev/null +++ b/src/main/java/com/ycl/jxkg/mapper/ClassesMapper.java @@ -0,0 +1,33 @@ +package com.ycl.jxkg.mapper; + +import com.ycl.jxkg.domain.entity.Classes; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ycl.jxkg.domain.query.ClassesQuery; +import com.ycl.jxkg.domain.vo.ClassesVO; +import java.util.List; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * 鐝骇 Mapper 鎺ュ彛 + * + * @author xp + * @since 2024-06-03 + */ +@Mapper +public interface ClassesMapper extends BaseMapper<Classes> { + + /** + * id鏌ユ壘鐝骇 + * @param id + * @return + */ + ClassesVO getById(Integer id); + + /** + * 鍒嗛〉 + */ + IPage getPage(IPage page, @Param("query") ClassesQuery query); + +} diff --git a/src/main/java/com/ycl/jxkg/service/ClassesService.java b/src/main/java/com/ycl/jxkg/service/ClassesService.java new file mode 100644 index 0000000..1873b69 --- /dev/null +++ b/src/main/java/com/ycl/jxkg/service/ClassesService.java @@ -0,0 +1,65 @@ +package com.ycl.jxkg.service; + +import com.ycl.jxkg.domain.entity.Classes; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ycl.jxkg.base.Result; +import com.ycl.jxkg.domain.form.ClassesForm; +import com.ycl.jxkg.domain.query.ClassesQuery; +import java.util.List; + +/** + * 鐝骇 鏈嶅姟绫� + * + * @author xp + * @since 2024-06-03 + */ +public interface ClassesService extends IService<Classes> { + + /** + * 娣诲姞 + * @param form + * @return + */ + Result add(ClassesForm form); + + /** + * 淇敼 + * @param form + * @return + */ + Result update(ClassesForm form); + + /** + * 鎵归噺鍒犻櫎 + * @param ids + * @return + */ + Result remove(List<String> ids); + + /** + * id鍒犻櫎 + * @param id + * @return + */ + Result removeById(String id); + + /** + * 鍒嗛〉鏌ヨ + * @param query + * @return + */ + Result page(ClassesQuery query); + + /** + * 鏍规嵁id鏌ユ壘 + * @param id + * @return + */ + Result detail(Integer id); + + /** + * 鍒楄〃 + * @return + */ + Result all(); +} diff --git a/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java new file mode 100644 index 0000000..14082e3 --- /dev/null +++ b/src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java @@ -0,0 +1,119 @@ +package com.ycl.jxkg.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.ycl.jxkg.domain.entity.Classes; +import com.ycl.jxkg.mapper.ClassesMapper; +import com.ycl.jxkg.service.ClassesService; +import com.ycl.jxkg.base.Result; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ycl.jxkg.domain.form.ClassesForm; +import com.ycl.jxkg.domain.vo.ClassesVO; +import com.ycl.jxkg.domain.query.ClassesQuery; +import com.ycl.jxkg.utils.PageUtil; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import lombok.RequiredArgsConstructor; +import org.springframework.util.Assert; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 鐝骇 鏈嶅姟瀹炵幇绫� + * + * @author xp + * @since 2024-06-03 + */ +@Service +@RequiredArgsConstructor +public class ClassesServiceImpl extends ServiceImpl<ClassesMapper, Classes> implements ClassesService { + + private final ClassesMapper classesMapper; + + /** + * 娣诲姞 + * @param form + * @return + */ + @Override + public Result add(ClassesForm form) { + Classes entity = ClassesForm.getEntityByForm(form, null); + baseMapper.insert(entity); + return Result.ok("娣诲姞鎴愬姛"); + } + + /** + * 淇敼 + * @param form + * @return + */ + @Override + public Result update(ClassesForm form) { + Classes 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(ClassesQuery query) { + IPage<ClassesVO> page = PageUtil.getPage(query, ClassesVO.class); + baseMapper.getPage(page, query); + return Result.ok().data(page.getRecords()).total(page.getTotal()); + } + + /** + * 鏍规嵁id鏌ユ壘 + * @param id + * @return + */ + @Override + public Result detail(Integer id) { + ClassesVO vo = baseMapper.getById(id); + Assert.notNull(vo, "璁板綍涓嶅瓨鍦�"); + return Result.ok().data(vo); + } + + /** + * 鍒楄〃 + * @return + */ + @Override + public Result all() { + List<Classes> entities = baseMapper.selectList(null); + List<ClassesVO> vos = entities.stream() + .map(entity -> ClassesVO.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 11b15e9..65cc9c8 100644 --- a/src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java +++ b/src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java @@ -1,13 +1,17 @@ package com.ycl.jxkg.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ycl.jxkg.domain.entity.UserEventLog; import com.ycl.jxkg.domain.enums.RoleEnum; +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.event.UserEvent; import com.ycl.jxkg.exception.BusinessException; import com.ycl.jxkg.domain.entity.User; import com.ycl.jxkg.event.OnRegistrationCompleteEvent; import com.ycl.jxkg.mapper.UserMapper; +import com.ycl.jxkg.service.AuthenticationService; import com.ycl.jxkg.service.UserService; import com.ycl.jxkg.domain.vo.admin.user.UserPageRequestVO; import com.github.pagehelper.PageHelper; @@ -18,9 +22,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; @Service @@ -41,14 +43,6 @@ public User getUserByUserName(String username) { return userMapper.getUserByUserName(username); - } - - public int insertByFilter(User record) { - return baseMapper.insert(record); - } - - public int updateByIdFilter(User record) { - return baseMapper.updateById(record); } @Override @@ -151,10 +145,30 @@ User teacher = new User(); BeanUtils.copyProperties(form, teacher); teacher.setRole(RoleEnum.ADMIN.getCode()); + teacher.setUserUuid(UUID.randomUUID().toString()); + teacher.setLastActiveTime(new Date()); + teacher.setStatus(UserStatusEnum.Enable.getCode()); + teacher.setDeleted(0); + this.insertUser(teacher); + // 鍙戝竷娉ㄥ唽浜嬩欢锛屼繚瀛樻敞鍐屾棩蹇� + UserEventLog userEventLog = new UserEventLog(teacher.getId(), teacher.getUserName(), teacher.getRealName(), new Date()); + userEventLog.setContent("娆㈣繋 " + teacher.getUserName() + " 娉ㄥ唽鏉ュ埌姹熻タ绌虹闊宠棰戝煿璁郴缁�"); + eventPublisher.publishEvent(new UserEvent(userEventLog)); } @Override public void studentRegister(RegisterForm form) { - + User student = new User(); + BeanUtils.copyProperties(form, student); + student.setRole(RoleEnum.ADMIN.getCode()); + student.setUserUuid(UUID.randomUUID().toString()); + student.setLastActiveTime(new Date()); + student.setStatus(UserStatusEnum.Enable.getCode()); + student.setDeleted(0); + this.insertUser(student); + // 鍙戝竷娉ㄥ唽浜嬩欢锛屼繚瀛樻敞鍐屾棩蹇� + UserEventLog userEventLog = new UserEventLog(student.getId(), student.getUserName(), student.getRealName(), new Date()); + userEventLog.setContent("娆㈣繋 " + student.getUserName() + " 娉ㄥ唽鏉ュ埌姹熻タ绌虹闊宠棰戝煿璁郴缁�"); + eventPublisher.publishEvent(new UserEvent(userEventLog)); } } diff --git a/src/main/resources/mapper/ClassesMapper.xml b/src/main/resources/mapper/ClassesMapper.xml new file mode 100644 index 0000000..9ab8cd1 --- /dev/null +++ b/src/main/resources/mapper/ClassesMapper.xml @@ -0,0 +1,52 @@ +<?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.ClassesMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.ycl.jxkg.domain.vo.ClassesVO"> + <result column="class_name" property="className" /> + <result column="create_user" property="createUser" /> + <result column="create_time" property="createTime" /> + <result column="classes_number" property="classesNumber" /> + <result column="status" property="status" /> + <result column="verify_status" property="verifyStatus" /> + </resultMap> + + + + + + + + <select id="getById" resultMap="BaseResultMap"> + SELECT + TC.class_name, + TC.create_user, + TC.create_time, + TC.classes_number, + TC.status, + TC.verify_status, + TC.id + FROM + t_classes TC + WHERE + TC.id = #{id} AND TC.deleted = 0 + </select> + + + <select id="getPage" resultMap="BaseResultMap"> + SELECT + TC.class_name, + TC.create_user, + TC.create_time, + TC.classes_number, + TC.status, + TC.verify_status, + TC.id + FROM + t_classes TC + WHERE + TC.deleted = 0 + </select> + +</mapper> -- Gitblit v1.8.0