From 38f9471ecf47b7c15b352113bc0f5a2ec1e64e7b Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期二, 16 七月 2024 09:24:13 +0800 Subject: [PATCH] 登录返回vo修改,个人中心接口,用户列表权限验证 --- src/main/java/com/ycl/jxkg/service/UserService.java | 7 + src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java | 20 ++++ src/main/java/com/ycl/jxkg/controller/wx/student/UserController.java | 3 src/main/java/com/ycl/jxkg/service/impl/ExamCheatServiceImpl.java | 3 src/main/java/com/ycl/jxkg/mapper/ClassesUserMapper.java | 8 + src/main/java/com/ycl/jxkg/service/impl/FileUploadImpl.java | 1 src/main/java/com/ycl/jxkg/controller/admin/UserController.java | 12 ++ src/main/java/com/ycl/jxkg/controller/student/UserController.java | 14 ++ src/main/resources/mapper/UserMapper.xml | 3 src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationSuccessHandler.java | 12 + src/main/java/com/ycl/jxkg/controller/student/UploadController.java | 55 +++++++--- src/main/java/com/ycl/jxkg/domain/form/StudentUpdatePwdForm.java | 27 +++++ src/main/java/com/ycl/jxkg/domain/vo/admin/education/EducationResourceVO.java | 4 src/main/java/com/ycl/jxkg/domain/vo/student/user/UserLoginVO.java | 71 ++++++++++++++ src/main/resources/mapper/ClassesUserMapper.xml | 7 + src/main/java/com/ycl/jxkg/domain/vo/student/user/UserUpdateVO.java | 12 +- 16 files changed, 222 insertions(+), 37 deletions(-) diff --git a/src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationSuccessHandler.java b/src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationSuccessHandler.java index 4d07825..7cae4c2 100644 --- a/src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationSuccessHandler.java +++ b/src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationSuccessHandler.java @@ -5,8 +5,10 @@ import com.ycl.jxkg.constants.CaffeineConstant; import com.ycl.jxkg.domain.entity.SysConfig; import com.ycl.jxkg.domain.entity.UserEventLog; +import com.ycl.jxkg.domain.vo.student.user.UserLoginVO; import com.ycl.jxkg.enums.general.YesOrNoEnum; import com.ycl.jxkg.event.UserEvent; +import com.ycl.jxkg.mapper.ClassesUserMapper; import com.ycl.jxkg.mapper.SysConfigMapper; import com.ycl.jxkg.service.UserService; import com.ycl.jxkg.utils.CaffeineUtil; @@ -42,6 +44,8 @@ private final UserService userService; private final CaffeineUtil caffeineUtil; private final SysConfigMapper sysConfigMapper; + @Autowired + private ClassesUserMapper classesUserMapper; /** * Instantiates a new Rest authentication success handler. @@ -83,9 +87,11 @@ UserEventLog userEventLog = new UserEventLog(user.getId(), user.getUserName(), user.getRealName(), new Date()); userEventLog.setContent(user.getUserName() + " 鐧诲綍浜嗘睙瑗胯闊宠棰戝煿璁郴缁�"); eventPublisher.publishEvent(new UserEvent(userEventLog)); - com.ycl.jxkg.domain.entity.User newUser = new com.ycl.jxkg.domain.entity.User(); - BeanUtils.copyProperties(user,newUser); - RestUtil.response(response, SystemCode.OK.getCode(), SystemCode.OK.getMessage(), newUser); + UserLoginVO userLoginVO = new UserLoginVO(); + BeanUtils.copyProperties(user,userLoginVO); + List<String> classesNames = classesUserMapper.getClassesNameByUserId(user.getId()); + userLoginVO.setClassName(classesNames); + RestUtil.response(response, SystemCode.OK.getCode(), SystemCode.OK.getMessage(), userLoginVO); } } else { RestUtil.response(response, SystemCode.UNAUTHORIZED.getCode(), SystemCode.UNAUTHORIZED.getMessage()); 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 41ba116..66a3447 100644 --- a/src/main/java/com/ycl/jxkg/controller/admin/UserController.java +++ b/src/main/java/com/ycl/jxkg/controller/admin/UserController.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.ycl.jxkg.base.BaseApiController; import com.ycl.jxkg.base.Result; +import com.ycl.jxkg.base.SystemCode; +import com.ycl.jxkg.context.WebContext; import com.ycl.jxkg.domain.form.UpdatePwdForm; import com.ycl.jxkg.enums.RoleEnum; import com.ycl.jxkg.domain.other.KeyValue; @@ -38,9 +40,17 @@ private final UserService userService; private final UserEventLogService userEventLogService; private final AuthenticationService authenticationService; - + private final WebContext webContext; + private final Integer teacher = 2; + private final Integer student = 1; @RequestMapping(value = "/page/list", method = RequestMethod.POST) public Result<PageInfo<UserResponseVO>> pageList(@RequestBody UserPageRequestVO model) { + if(!student.equals(model.getRole())) { + User currentUser = webContext.getCurrentUser(); + if (teacher.equals(currentUser.getRole())) { + return Result.fail(SystemCode.InnerError.getCode(), "鎮ㄦ病鏈夎闂潈闄�"); + } + } PageInfo<User> pageInfo = userService.userPage(model); PageInfo<UserResponseVO> page = PageInfoHelper.copyMap(pageInfo, d -> UserResponseVO.from(d)); return Result.ok(page); diff --git a/src/main/java/com/ycl/jxkg/controller/student/UploadController.java b/src/main/java/com/ycl/jxkg/controller/student/UploadController.java index b67e3a2..196740a 100644 --- a/src/main/java/com/ycl/jxkg/controller/student/UploadController.java +++ b/src/main/java/com/ycl/jxkg/controller/student/UploadController.java @@ -3,10 +3,13 @@ import com.ycl.jxkg.base.BaseApiController; import com.ycl.jxkg.base.Result; +import com.ycl.jxkg.config.RuoYiConfig; import com.ycl.jxkg.service.FileUpload; import com.ycl.jxkg.service.UserService; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; @@ -14,33 +17,51 @@ import org.springframework.web.multipart.MultipartHttpServletRequest; import javax.servlet.http.HttpServletRequest; +import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.util.HashMap; +import java.util.UUID; @RequiredArgsConstructor @RequestMapping("/api/student/upload") @RestController("StudentUploadController") public class UploadController extends BaseApiController { - private final FileUpload fileUpload; private final UserService userService; + private final RuoYiConfig ruoYiConfig; - - @RequestMapping("/image") - @ResponseBody - public Result questionUploadAndReadExcel(HttpServletRequest request) { - MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request; - MultipartFile multipartFile = multipartHttpServletRequest.getFile("file"); - long attachSize = multipartFile.getSize(); - String imgName = multipartFile.getOriginalFilename(); - try (InputStream inputStream = multipartFile.getInputStream()) { - String filePath = fileUpload.uploadFile(inputStream, attachSize, imgName); - userService.changePicture(getCurrentUser(), filePath); - return Result.ok(filePath); - } catch (IOException e) { - return Result.fail(2, e.getMessage()); + @PostMapping("/image") + public Result questionUploadAndReadExcel(MultipartFile file) { + // 妫�鏌ユ枃浠舵槸鍚︿负绌� + if (file == null || file.isEmpty()) { + return Result.fail(500, "涓婁紶鐨勬枃浠朵负绌�"); } + String randomName = null; + HashMap hashMap = new HashMap(2); + try { + // 鑾峰彇鏂囦欢鍚� + String originalFileName = StringUtils.cleanPath(file.getOriginalFilename()); + randomName = UUID.randomUUID().toString().replace("-", "") + originalFileName.substring(originalFileName.lastIndexOf(".")); + // 鎸囧畾鏂囦欢瀛樺偍璺緞 + String uploadDir = ruoYiConfig.getUrl(); // 淇敼涓烘偍甯屾湜瀛樺偍鐨勭洰褰� + // 濡傛灉鐩綍涓嶅瓨鍦紝鍒欏垱寤虹洰褰� + File dir = new File(uploadDir); + if (!dir.exists()) { + dir.mkdirs(); + } + // 鏋勫缓鐩爣鏂囦欢鐨勮矾寰� + String filePath = uploadDir + "/" + randomName; + // 灏嗘枃浠朵繚瀛樺埌鐩爣浣嶇疆 + file.transferTo(new File(filePath)); + hashMap.put("name", originalFileName); + hashMap.put("url", randomName); + } catch (IOException e) { + e.printStackTrace(); + // 杩斿洖澶辫触鍝嶅簲 + return Result.fail(500, "鏂囦欢涓婁紶澶辫触"); + } + userService.changePicture(getCurrentUser(), randomName); + return Result.ok(hashMap); } - - } 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 6896106..2025622 100644 --- a/src/main/java/com/ycl/jxkg/controller/student/UserController.java +++ b/src/main/java/com/ycl/jxkg/controller/student/UserController.java @@ -6,6 +6,8 @@ import com.ycl.jxkg.domain.entity.MessageUser; import com.ycl.jxkg.domain.entity.User; import com.ycl.jxkg.domain.entity.UserEventLog; +import com.ycl.jxkg.domain.form.StudentUpdatePwdForm; +import com.ycl.jxkg.domain.form.UpdatePwdForm; import com.ycl.jxkg.enums.RoleEnum; import com.ycl.jxkg.enums.UserStatusEnum; import com.ycl.jxkg.event.UserEvent; @@ -17,10 +19,12 @@ import com.ycl.jxkg.utils.PageInfoHelper; import com.ycl.jxkg.domain.vo.student.user.*; import com.github.pagehelper.PageInfo; +import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.context.ApplicationEventPublisher; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; @@ -69,12 +73,8 @@ return Result.ok(); } - @RequestMapping(value = "/update", method = RequestMethod.POST) public Result update(@RequestBody @Valid UserUpdateVO model) { - if (StringUtils.isBlank(model.getBirthDay())) { - model.setBirthDay(null); - } User user = userService.getById(getCurrentUser().getId()); BeanUtils.copyProperties(model, user); user.setModifyTime(new Date()); @@ -130,4 +130,10 @@ return Result.ok(); } + @ApiOperation(value = "淇敼瀵嗙爜", tags = {"淇敼瀵嗙爜"}) + @PostMapping("/update/password") + public Result<Object> updatePassword(@RequestBody @Validated StudentUpdatePwdForm form) { + userService.updateStudentPassword(form); + return Result.ok("淇敼鎴愬姛"); + } } 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 376026c..32ca191 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 @@ -74,9 +74,6 @@ @RequestMapping(value = "/update", method = RequestMethod.POST) public Result<UserResponseVO> update(@Valid UserUpdateVO model) { - if (StringUtils.isBlank(model.getBirthDay())) { - model.setBirthDay(null); - } User user = userService.getById(getCurrentUser().getId()); BeanUtils.copyProperties(model, user); user.setModifyTime(new Date()); diff --git a/src/main/java/com/ycl/jxkg/domain/form/StudentUpdatePwdForm.java b/src/main/java/com/ycl/jxkg/domain/form/StudentUpdatePwdForm.java new file mode 100644 index 0000000..0c21a42 --- /dev/null +++ b/src/main/java/com/ycl/jxkg/domain/form/StudentUpdatePwdForm.java @@ -0,0 +1,27 @@ +package com.ycl.jxkg.domain.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * 淇敼瀵嗙爜琛ㄥ崟鏁版嵁 + * + * @author锛歺p + * @date锛�2024/7/9 16:23 + */ +@Data +public class StudentUpdatePwdForm { + + @NotNull(message = "淇敼澶辫触") + private Integer userId; + + /** 鏂板瘑鐮� */ + @NotBlank(message = "璇疯緭鍏ユ柊瀵嗙爜") + private String newPassword; + + /** 鏃у瘑鐮� */ + @NotBlank(message = "璇疯緭鍏ユ棫瀵嗙爜") + private String oldPassword; +} diff --git a/src/main/java/com/ycl/jxkg/domain/vo/admin/education/EducationResourceVO.java b/src/main/java/com/ycl/jxkg/domain/vo/admin/education/EducationResourceVO.java index 2ed78dc..1a1f602 100644 --- a/src/main/java/com/ycl/jxkg/domain/vo/admin/education/EducationResourceVO.java +++ b/src/main/java/com/ycl/jxkg/domain/vo/admin/education/EducationResourceVO.java @@ -15,9 +15,9 @@ */ @Data public class EducationResourceVO { - + /** 褰撳墠椤靛ぇ灏� */ private Integer pageSize = 10; - + /** 褰撳墠椤� */ private Integer pageNum = 1; private Integer id; diff --git a/src/main/java/com/ycl/jxkg/domain/vo/student/user/UserLoginVO.java b/src/main/java/com/ycl/jxkg/domain/vo/student/user/UserLoginVO.java new file mode 100644 index 0000000..4a2957c --- /dev/null +++ b/src/main/java/com/ycl/jxkg/domain/vo/student/user/UserLoginVO.java @@ -0,0 +1,71 @@ +package com.ycl.jxkg.domain.vo.student.user; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +public class UserLoginVO { + + private Integer id; + + private String userUuid; + + private List<String> className; + /** + * 鐢ㄦ埛鍚� + */ + private String userName; + + /** + * 鐪熷疄濮撳悕 + */ + private String realName; + + private Integer age; + + /** + * 1.鐢� 2濂� + */ + private Integer sex; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private Date birthDay; + + + private String phone; + + /** + * 1.瀛︾敓 2.鑰佸笀 3.绠$悊鍛� + */ + private Integer role; + + /** + * 1.鍚敤 2绂佺敤 + */ + private Integer status; + + /** + * 澶村儚鍦板潃 + */ + private String imagePath; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private Date createTime; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private Date modifyTime; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private Date lastActiveTime; + + /** + * 寰俊openId + */ + private String wxOpenId; + + /** + * 涓婁竴娆′慨鏀瑰瘑鐮佺殑鏃堕棿 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private Date lastUpdatePasswordTime; + +} diff --git a/src/main/java/com/ycl/jxkg/domain/vo/student/user/UserUpdateVO.java b/src/main/java/com/ycl/jxkg/domain/vo/student/user/UserUpdateVO.java index 1ebba99..0a8e526 100644 --- a/src/main/java/com/ycl/jxkg/domain/vo/student/user/UserUpdateVO.java +++ b/src/main/java/com/ycl/jxkg/domain/vo/student/user/UserUpdateVO.java @@ -1,26 +1,26 @@ package com.ycl.jxkg.domain.vo.student.user; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import java.util.Date; @Data public class UserUpdateVO { - @NotBlank + @NotBlank(message = "鐪熷疄濮撳悕涓虹┖") private String realName; private String age; private Integer sex; + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private Date birthDay; - private String birthDay; - + @NotBlank(message = "鎵嬫満鍙蜂负绌�") private String phone; - - @NotNull - private Integer userLevel; } diff --git a/src/main/java/com/ycl/jxkg/mapper/ClassesUserMapper.java b/src/main/java/com/ycl/jxkg/mapper/ClassesUserMapper.java index ec6adfd..346eaab 100644 --- a/src/main/java/com/ycl/jxkg/mapper/ClassesUserMapper.java +++ b/src/main/java/com/ycl/jxkg/mapper/ClassesUserMapper.java @@ -49,4 +49,12 @@ * @return */ List<Integer> getClassesByUserId(@Param("userId") Integer userId); + + /** + * 鏍规嵁瀛︾敓鑾峰彇鐝骇鍚嶇О + * + * @param userId + * @return + */ + List<String> getClassesNameByUserId(@Param("userId") Integer userId); } diff --git a/src/main/java/com/ycl/jxkg/service/UserService.java b/src/main/java/com/ycl/jxkg/service/UserService.java index 54b602f..93778ad 100644 --- a/src/main/java/com/ycl/jxkg/service/UserService.java +++ b/src/main/java/com/ycl/jxkg/service/UserService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ycl.jxkg.domain.form.RegisterForm; +import com.ycl.jxkg.domain.form.StudentUpdatePwdForm; import com.ycl.jxkg.domain.form.UpdatePwdForm; import com.ycl.jxkg.domain.other.KeyValue; import com.ycl.jxkg.domain.entity.User; @@ -158,4 +159,10 @@ * @param form */ void updatePassword(UpdatePwdForm form); + + /** + * 瀛︾敓绔慨鏀瑰瘑鐮侊紝澧炲姞姣斿鍘熷瘑鐮佹搷浣� + * + */ + void updateStudentPassword(StudentUpdatePwdForm form); } diff --git a/src/main/java/com/ycl/jxkg/service/impl/ExamCheatServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ExamCheatServiceImpl.java index 660c932..8faaab2 100644 --- a/src/main/java/com/ycl/jxkg/service/impl/ExamCheatServiceImpl.java +++ b/src/main/java/com/ycl/jxkg/service/impl/ExamCheatServiceImpl.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.ycl.jxkg.domain.entity.ExamCheat; import com.ycl.jxkg.mapper.ExamCheatMapper; +import com.ycl.jxkg.mapper.ExamSubmitTempMapper; import com.ycl.jxkg.service.ExamCheatService; import com.ycl.jxkg.base.Result; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -29,7 +30,7 @@ public class ExamCheatServiceImpl extends ServiceImpl<ExamCheatMapper, ExamCheat> implements ExamCheatService { private final ExamCheatMapper examCheatMapper; - + private final ExamSubmitTempMapper examSubmitTempMapper; /** * 娣诲姞 * @param form diff --git a/src/main/java/com/ycl/jxkg/service/impl/FileUploadImpl.java b/src/main/java/com/ycl/jxkg/service/impl/FileUploadImpl.java index 5dcc0b4..69550b0 100644 --- a/src/main/java/com/ycl/jxkg/service/impl/FileUploadImpl.java +++ b/src/main/java/com/ycl/jxkg/service/impl/FileUploadImpl.java @@ -43,6 +43,7 @@ } catch (QiniuException ex) { logger.error(ex.getMessage(), ex); } + return null; } } 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 1d7b664..31cb107 100644 --- a/src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java +++ b/src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.qiniu.util.Md5; import com.ycl.jxkg.domain.entity.UserEventLog; +import com.ycl.jxkg.domain.form.StudentUpdatePwdForm; import com.ycl.jxkg.domain.form.UpdatePwdForm; import com.ycl.jxkg.enums.RoleEnum; import com.ycl.jxkg.enums.UserStatusEnum; @@ -196,4 +197,23 @@ .set(User::getLastUpdatePasswordTime, new Date()) .update(); } + + @Override + public void updateStudentPassword(StudentUpdatePwdForm form) { + User user = baseMapper.selectById(form.getUserId()); + if(user ==null){ + throw new RuntimeException("鐢ㄦ埛涓嶅瓨鍦�"); + } + if(authenticationService.authUser(user,user.getUserName(),form.getOldPassword())){ + //瀵嗙爜姝g‘ + new LambdaUpdateChainWrapper<>(baseMapper) + .eq(User::getId, form.getUserId()) + .set(User::getPassword, authenticationService.pwdEncode(form.getNewPassword())) + .set(User::getLastUpdatePasswordTime, new Date()) + .update(); + }else { + //瀵嗙爜閿欒 + throw new RuntimeException("鏃у瘑鐮侀敊璇紝璇风‘璁ゅ悗閲嶆柊杈撳叆"); + } + } } diff --git a/src/main/resources/mapper/ClassesUserMapper.xml b/src/main/resources/mapper/ClassesUserMapper.xml index 7306815..63de525 100644 --- a/src/main/resources/mapper/ClassesUserMapper.xml +++ b/src/main/resources/mapper/ClassesUserMapper.xml @@ -70,4 +70,11 @@ from t_classes_user where user_id = #{userId} and deleted = 0 </select> + + <select id="getClassesNameByUserId" resultType="java.lang.String"> + select tc.class_name + from t_classes_user tcu + left join t_classes tc on tcu.classes_id = tc.id + where user_id = #{userId} and tcu.deleted = 0 and tc.deleted =0 + </select> </mapper> diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml index 7ae6eba..8fc4b07 100644 --- a/src/main/resources/mapper/UserMapper.xml +++ b/src/main/resources/mapper/UserMapper.xml @@ -135,6 +135,9 @@ <set> <if test="realName != null">real_name = #{realName},</if> <if test="age != null">age = #{age},</if> + <if test="sex != null">sex = #{sex},</if> + <if test="phone != null and phone !='' ">phone = #{phone},</if> + <if test="birthDay != null ">birth_day = #{birthDay},</if> <if test="lastActiveTime != null">last_active_time = #{lastActiveTime},</if> </set> where id = #{id} -- Gitblit v1.8.0