From 1c5ebbc20c9588a2a86d34a597e242ea6e9951c5 Mon Sep 17 00:00:00 2001 From: yz <3614508250@qq.com> Date: Fri, 25 Apr 2025 16:54:04 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../security/AuthenticationService.java | 27 ++++-- .../controller/stu/CgcpdwController.java | 28 +++--- .../controller/stu/CgxqycController.java | 6 +- .../controller/stu/LoginController.java | 91 +++++++++++++++++++ src/main/resources/application.yml | 2 +- .../resources/mappers/SchoolMajorMapper.xml | 14 +++ 6 files changed, 140 insertions(+), 28 deletions(-) create mode 100644 src/main/java/com/sztzjy/linkCommerce/controller/stu/LoginController.java diff --git a/src/main/java/com/sztzjy/linkCommerce/config/security/AuthenticationService.java b/src/main/java/com/sztzjy/linkCommerce/config/security/AuthenticationService.java index 9a29d1f..292835b 100644 --- a/src/main/java/com/sztzjy/linkCommerce/config/security/AuthenticationService.java +++ b/src/main/java/com/sztzjy/linkCommerce/config/security/AuthenticationService.java @@ -3,8 +3,12 @@ package com.sztzjy.linkCommerce.config.security; import com.sztzjy.linkCommerce.entity.StuUser; import com.sztzjy.linkCommerce.entity.StuUserExample; +import com.sztzjy.linkCommerce.entity.Userinfo; +import com.sztzjy.linkCommerce.entity.UserinfoExample; import com.sztzjy.linkCommerce.mapper.StuUserMapper; +import com.sztzjy.linkCommerce.mapper.UserinfoMapper; import io.jsonwebtoken.lang.Assert; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; @@ -19,6 +23,8 @@ import java.util.List; public class AuthenticationService implements UserDetailsService { @Resource private StuUserMapper stuUserMapper; + @Autowired + UserinfoMapper userinfoMapper; // @Override @@ -40,18 +46,19 @@ public class AuthenticationService implements UserDetailsService { @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { - StuUserExample stuUserExample = new StuUserExample(); - stuUserExample.createCriteria().andStudentIdEqualTo(username); - List list = stuUserMapper.selectByExample(stuUserExample); + UserinfoExample stuUserExample=new UserinfoExample(); +// StuUserExample stuUserExample = new StuUserExample(); + stuUserExample.createCriteria().andUsernameEqualTo(username); + List list = userinfoMapper.selectByExample(stuUserExample); Assert.notNull(list, "用户不存在"); - StuUser user = list.get(0); + Userinfo userinfo = list.get(0); JwtUser jwtUser = new JwtUser(); - jwtUser.setUsername(user.getStudentId()); - jwtUser.setPassword(new BCryptPasswordEncoder().encode(user.getPassword())); //不加密会报错Encoded password does not look like BCrypt - jwtUser.setUserId(user.getUserId()); - jwtUser.setName(user.getName()); - jwtUser.setRoleId(user.getRoleId()); - jwtUser.setStudentId(user.getStudentId()); + jwtUser.setUsername(userinfo.getUsername()); + jwtUser.setPassword(new BCryptPasswordEncoder().encode(userinfo.getPassword())); //不加密会报错Encoded password does not look like BCrypt + jwtUser.setUserId(userinfo.getUserId()); + jwtUser.setName(userinfo.getName()); + jwtUser.setRoleId(userinfo.getRole()); + jwtUser.setStudentId(userinfo.getUsername()); return jwtUser; } diff --git a/src/main/java/com/sztzjy/linkCommerce/controller/stu/CgcpdwController.java b/src/main/java/com/sztzjy/linkCommerce/controller/stu/CgcpdwController.java index 9e771a5..58d1ac2 100644 --- a/src/main/java/com/sztzjy/linkCommerce/controller/stu/CgcpdwController.java +++ b/src/main/java/com/sztzjy/linkCommerce/controller/stu/CgcpdwController.java @@ -86,18 +86,18 @@ public class CgcpdwController { } } -// @PostMapping("/restartTraining") -// @ApiOperation("采购需求预测-重新实训") -// @AnonymousAccess -// public ResultEntity restartTraining(@RequestParam String userId) { -// Boolean b=scoreService.deleteScore(userId,Constant.PRO_GYQDGL,Constant.MODULE_CGXQYC); -// if(b){ -// CgxqycStuAnswerExample cgxqycStuAnswerExample = new CgxqycStuAnswerExample(); -// cgxqycStuAnswerExample.createCriteria().andUserIdEqualTo(userId); -// cgxqycStuAnswerMapper.deleteByExample(cgxqycStuAnswerExample); -// return new ResultEntity<>(HttpStatus.OK, "重新实训成功"); -// }else { -// return new ResultEntity<>(HttpStatus.BAD_REQUEST, "重新实训失败"); -// } -// } + @PostMapping("/restartTraining") + @ApiOperation("采购产品定位-重新实训") + @AnonymousAccess + public ResultEntity restartTraining(@RequestParam String userId) { + Boolean b=scoreService.deleteScore(userId,Constant.PRO_GYQDGL,Constant.MODULE_CGCPDW); + if(b){ + CgcpdwStuAnswerExample example = new CgcpdwStuAnswerExample(); + example.createCriteria().andUserIdEqualTo(userId); + cgcpdwStuAnswerMapper.deleteByExample(example); + return new ResultEntity<>(HttpStatus.OK, "重新实训成功"); + }else { + return new ResultEntity<>(HttpStatus.BAD_REQUEST, "重新实训失败"); + } + } } diff --git a/src/main/java/com/sztzjy/linkCommerce/controller/stu/CgxqycController.java b/src/main/java/com/sztzjy/linkCommerce/controller/stu/CgxqycController.java index a382bd6..5e751da 100644 --- a/src/main/java/com/sztzjy/linkCommerce/controller/stu/CgxqycController.java +++ b/src/main/java/com/sztzjy/linkCommerce/controller/stu/CgxqycController.java @@ -84,9 +84,9 @@ public class CgxqycController { public ResultEntity restartTraining(@RequestParam String userId) { Boolean b=scoreService.deleteScore(userId,Constant.PRO_GYQDGL,Constant.MODULE_CGXQYC); if(b){ - CgxqycStuAnswerExample cgxqycStuAnswerExample = new CgxqycStuAnswerExample(); - cgxqycStuAnswerExample.createCriteria().andUserIdEqualTo(userId); - cgxqycStuAnswerMapper.deleteByExample(cgxqycStuAnswerExample); + CgxqycStuAnswerExample example = new CgxqycStuAnswerExample(); + example.createCriteria().andUserIdEqualTo(userId); + cgxqycStuAnswerMapper.deleteByExample(example); return new ResultEntity<>(HttpStatus.OK, "重新实训成功"); }else { return new ResultEntity<>(HttpStatus.BAD_REQUEST, "重新实训失败"); diff --git a/src/main/java/com/sztzjy/linkCommerce/controller/stu/LoginController.java b/src/main/java/com/sztzjy/linkCommerce/controller/stu/LoginController.java new file mode 100644 index 0000000..50f3351 --- /dev/null +++ b/src/main/java/com/sztzjy/linkCommerce/controller/stu/LoginController.java @@ -0,0 +1,91 @@ +package com.sztzjy.linkCommerce.controller.stu; + + +import cn.hutool.system.UserInfo; +import com.sztzjy.linkCommerce.annotation.AnonymousAccess; +import com.sztzjy.linkCommerce.config.security.JwtUser; +import com.sztzjy.linkCommerce.config.security.TokenProvider; +import com.sztzjy.linkCommerce.entity.Userinfo; +import com.sztzjy.linkCommerce.entity.UserinfoExample; +import com.sztzjy.linkCommerce.mapper.UserinfoMapper; +import com.sztzjy.linkCommerce.util.ResultEntity; + +import com.sztzjy.linkCommerce.util.RsaUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/api/user") +@Api(tags = "yz-登录相关") +public class LoginController { + @Resource + private AuthenticationManagerBuilder authenticationManagerBuilder; + @Autowired + UserinfoMapper userinfoMapper; + + @PostMapping("/login") + @ApiOperation("登录接口") + @AnonymousAccess + public ResultEntity login(@RequestParam(required = false) String passwordEncode, + @RequestParam(required = false) String userName, + HttpServletRequest request, + @RequestParam(required = false) String TOKEN) { + JwtUser jwtUser; + String passWord; + if (StringUtils.isBlank(TOKEN)) { + try { + passWord = RsaUtil.decryptByPrivateKey(passwordEncode); + } catch (Exception e) { + return new ResultEntity(HttpStatus.BAD_REQUEST, "密码错误"); + } + try{ + UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(userName, passWord); + Authentication authentication = authenticationManagerBuilder.getObject().authenticate(authenticationToken); + SecurityContextHolder.getContext().setAuthentication(authentication); + jwtUser = (JwtUser) authentication.getPrincipal(); + String token = TokenProvider.createToken(jwtUser); + // 1、子系统直接登录 + UserinfoExample stuUserExample = new UserinfoExample(); + stuUserExample.createCriteria().andUsernameEqualTo(userName).andPasswordEqualTo(passWord); + List userinfos = userinfoMapper.selectByExample(stuUserExample); + //不存在返回错误,正确放行 + if (userinfos.isEmpty()) { + return new ResultEntity(HttpStatus.BAD_REQUEST, "密码错误"); + } +// 保存用户的登录信息 + Map map = new HashMap<>(); + Userinfo user = userinfos.get(0); + map.put("name", user.getName()); + map.put("username", user.getUsername()); + map.put("roleId", String.valueOf(user.getRole())); + map.put("schoolId", user.getSchoolId()); + map.put("classId", user.getSchoolClassId()); + map.put("userId", user.getUserId()); + map.put("token", token); + return new ResultEntity(HttpStatus.OK, map); + }catch (Exception e){ + return new ResultEntity(HttpStatus.BAD_REQUEST, "账号不存在"); + } + }else { + return new ResultEntity(HttpStatus.BAD_REQUEST, "暂不支持智云跳转"); + } + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index e53a881..2e5dc9f 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,5 +1,5 @@ server: - port: 9869 + port: 7548 servlet: context-path: / tomcat: diff --git a/src/main/resources/mappers/SchoolMajorMapper.xml b/src/main/resources/mappers/SchoolMajorMapper.xml index 69ae1bd..70c3ec9 100644 --- a/src/main/resources/mappers/SchoolMajorMapper.xml +++ b/src/main/resources/mappers/SchoolMajorMapper.xml @@ -242,6 +242,20 @@ where school_major_id = #{schoolMajorId,jdbcType=VARCHAR} + + + + + + + + + + + + + +