diff --git a/src/main/java/com/sztzjy/fund_investment/controller/UserController.java b/src/main/java/com/sztzjy/fund_investment/controller/UserController.java index 9c59257..6f17c0a 100644 --- a/src/main/java/com/sztzjy/fund_investment/controller/UserController.java +++ b/src/main/java/com/sztzjy/fund_investment/controller/UserController.java @@ -11,11 +11,14 @@ import com.sztzjy.fund_investment.entity.PerformanceScoreExample; import com.sztzjy.fund_investment.entity.User; import com.sztzjy.fund_investment.mapper.FlowMapper; import com.sztzjy.fund_investment.mapper.PerformanceScoreMapper; +import com.sztzjy.fund_investment.mapper.UserMapper; +import com.sztzjy.fund_investment.service.IIlabService; import com.sztzjy.fund_investment.service.IUserService; import com.sztzjy.fund_investment.util.ResultEntity; import com.sztzjy.fund_investment.util.RsaUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; @@ -29,77 +32,142 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; +import java.util.*; @Api(tags = "用户管理") @RestController @RequestMapping("api/user") public class UserController { - @Autowired private IUserService userService; + @Autowired + private UserMapper userMapper; @Resource private AuthenticationManagerBuilder authenticationManagerBuilder; @Autowired private FlowMapper flowMapper; @Autowired private PerformanceScoreMapper performanceScoreMapper; - + @Autowired + private IIlabService iIlabService; @ApiOperation(value = "用户登录", httpMethod = "POST") @OperateLog(recordParameters = false) @PostMapping("login") @AnonymousAccess - public ResultEntity login(@RequestParam String username, @RequestParam String passwordEncode) { - String password; - try { - password = RsaUtil.decryptByPrivateKey(passwordEncode); - } catch (Exception e) { - return new ResultEntity(HttpStatus.BAD_REQUEST, "密码错误"); + public ResultEntity login(@RequestParam(required = false) String username, + @RequestParam(required = false) String passwordEncode, + @RequestParam(required = false) String ticket) { + + if (ticket==null) { + String password; + try { + password = RsaUtil.decryptByPrivateKey(passwordEncode); + } catch (Exception e) { + return new ResultEntity(HttpStatus.BAD_REQUEST, "密码错误"); + } + UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password); + Authentication authentication = authenticationManagerBuilder.getObject().authenticate(authenticationToken); + SecurityContextHolder.getContext().setAuthentication(authentication); + JwtUser jwtUser = (JwtUser) authentication.getPrincipal(); + String token = TokenProvider.createToken(jwtUser); + Map map = new HashMap<>(); + map.put("token", token); + map.put("name", jwtUser.getName()); + User user = userService.findById(jwtUser.getUserId()); + map.put("username", user.getUsername()); + map.put("roleId", user.getRoleId()); + map.put("phone", user.getPhone()); + map.put("schoolId", "999999999"); + map.put("userId", user.getUserid()); + + Flow flow = flowMapper.selectByPrimaryKey(jwtUser.getUserId()); + if (flow == null) { + String uuid = String.valueOf(UUID.randomUUID()); + Flow flow1 = new Flow(); + flow1.setUserid(jwtUser.getUserId()); + flow1.setFlowId(uuid); + flowMapper.insert(flow1); + map.put("flowId", uuid); + } else { + map.put("flowId", flow.getFlowId()); + } + return new ResultEntity(HttpStatus.OK, map); + } else { //平台跳转登录 + //判断用户是否存在 + Map accessToken = iIlabService.getAccessToken(ticket); + String access_token = accessToken.get("access_token"); + if (access_token==null){ + return new ResultEntity(HttpStatus.BAD_REQUEST,"登录过期,请重试!"); + } + String un = accessToken.get("un"); + String dis = accessToken.get("dis"); + User user = userMapper.selectByUn(un); + String newUUID = IdUtil.simpleUUID(); + String flowId = IdUtil.simpleUUID(); + if (user != null) { + Map map = getStringObjectMap(access_token, un, dis, newUUID, flowId); + user.setAccessToken(access_token); + userMapper.updateByPrimaryKey(user); + return new ResultEntity(HttpStatus.OK, map); + } + User newUser = new User(); + newUser.setUserid(IdUtil.simpleUUID()); + newUser.setRoleId(4); + newUser.setLoginType(0); + newUser.setAccessToken(access_token); + newUser.setDis(dis); + newUser.setName(dis); + newUser.setUn(un); + newUser.setUsername(un); + newUser.setCreateTime(new Date()); + newUser.setSchoolId("999999999"); + newUser.setClassId("999999999"); + newUser.setClassName("国家虚拟仿真训练班"); + Map map = getStringObjectMap(access_token, un, dis, newUUID, flowId); + userMapper.insert(newUser); + return new ResultEntity(HttpStatus.OK, map); } - UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password); + } + + /* 封装MAP并生成flow表数据 + * @author xcj + * @Date 2024/1/3 + */ + private Map getStringObjectMap(String access_token, String un, String dis, String newUUID, String flowId) { + Map map = new HashMap<>(); + UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken("tzs001", "123qwe"); Authentication authentication = authenticationManagerBuilder.getObject().authenticate(authenticationToken); SecurityContextHolder.getContext().setAuthentication(authentication); JwtUser jwtUser = (JwtUser) authentication.getPrincipal(); String token = TokenProvider.createToken(jwtUser); - Map map = new HashMap<>(); map.put("token", token); - map.put("name", jwtUser.getName()); - User user = userService.findById(jwtUser.getUserId()); - map.put("username", user.getUsername()); - map.put("roleId", user.getRoleId()); - map.put("phone", user.getPhone()); - map.put("schoolId", user.getSchoolId()); - map.put("userId", user.getUserid()); - - Flow flow = flowMapper.selectByPrimaryKey(jwtUser.getUserId()); - if (flow == null) { - String uuid = String.valueOf(UUID.randomUUID()); - Flow flow1 = new Flow(); - flow1.setUserid(jwtUser.getUserId()); - flow1.setFlowId(uuid); - flowMapper.insert(flow1); - map.put("flowId", uuid); - } else { - map.put("flowId", flow.getFlowId()); - } - return new ResultEntity(HttpStatus.OK, map); - + map.put("access_token", access_token); + map.put("un", un); + map.put("username", un); + map.put("dis", dis); + map.put("name", dis); + map.put("roleId", 4); + map.put("schoolId", "999999999"); + map.put("classId", "999999999"); + Flow flow = new Flow(); + flow.setUserid(newUUID); + flow.setFlowId(flowId); + flowMapper.insert(flow); + map.put("flowId", flowId); + return map; } - public static void main(String[] args) throws Exception { - String password = "123qwe"; - password = RsaUtil.encryptByPublicKey(password); - try { - password = RsaUtil.decryptByPrivateKey(password); - } catch (Exception e) { - throw new IllegalArgumentException("密文不正确,请检查"); - } - System.out.println(new BCryptPasswordEncoder().encode(password)); - } +// public static void main(String[] args) throws Exception { +// String password = "123qwe"; +// password = RsaUtil.encryptByPublicKey(password); +// try { +// password = RsaUtil.decryptByPrivateKey(password); +// } catch (Exception e) { +// throw new IllegalArgumentException("密文不正确,请检查"); +// } +// System.out.println(new BCryptPasswordEncoder().encode(password)); +// } @ApiOperation(value = "重新实训", httpMethod = "POST") @PostMapping("reTraining") @@ -118,4 +186,6 @@ public class UserController { return new ResultEntity(HttpStatus.OK, "已重新实训!"); } + + } diff --git a/src/main/java/com/sztzjy/fund_investment/entity/User.java b/src/main/java/com/sztzjy/fund_investment/entity/User.java index 55b127c..9a87797 100644 --- a/src/main/java/com/sztzjy/fund_investment/entity/User.java +++ b/src/main/java/com/sztzjy/fund_investment/entity/User.java @@ -45,6 +45,18 @@ public class User { @ApiModelProperty("学校名称") private String schoolName; + @ApiModelProperty("平台跳转用户名") + private String un; + + @ApiModelProperty("平台跳转姓名") + private String dis; + + @ApiModelProperty("平台跳转token") + private String accessToken; + + @ApiModelProperty("0平台跳转,1网站直接访问") + private Integer loginType; + public String getUserid() { return userid; } @@ -140,4 +152,36 @@ public class User { public void setSchoolName(String schoolName) { this.schoolName = schoolName == null ? null : schoolName.trim(); } + + public String getUn() { + return un; + } + + public void setUn(String un) { + this.un = un == null ? null : un.trim(); + } + + public String getDis() { + return dis; + } + + public void setDis(String dis) { + this.dis = dis == null ? null : dis.trim(); + } + + public String getAccessToken() { + return accessToken; + } + + public void setAccessToken(String accessToken) { + this.accessToken = accessToken == null ? null : accessToken.trim(); + } + + public Integer getLoginType() { + return loginType; + } + + public void setLoginType(Integer loginType) { + this.loginType = loginType; + } } \ No newline at end of file diff --git a/src/main/java/com/sztzjy/fund_investment/entity/UserExample.java b/src/main/java/com/sztzjy/fund_investment/entity/UserExample.java index f7738d0..dd8490a 100644 --- a/src/main/java/com/sztzjy/fund_investment/entity/UserExample.java +++ b/src/main/java/com/sztzjy/fund_investment/entity/UserExample.java @@ -924,6 +924,276 @@ public class UserExample { addCriterion("school_name not between", value1, value2, "schoolName"); return (Criteria) this; } + + public Criteria andUnIsNull() { + addCriterion("un is null"); + return (Criteria) this; + } + + public Criteria andUnIsNotNull() { + addCriterion("un is not null"); + return (Criteria) this; + } + + public Criteria andUnEqualTo(String value) { + addCriterion("un =", value, "un"); + return (Criteria) this; + } + + public Criteria andUnNotEqualTo(String value) { + addCriterion("un <>", value, "un"); + return (Criteria) this; + } + + public Criteria andUnGreaterThan(String value) { + addCriterion("un >", value, "un"); + return (Criteria) this; + } + + public Criteria andUnGreaterThanOrEqualTo(String value) { + addCriterion("un >=", value, "un"); + return (Criteria) this; + } + + public Criteria andUnLessThan(String value) { + addCriterion("un <", value, "un"); + return (Criteria) this; + } + + public Criteria andUnLessThanOrEqualTo(String value) { + addCriterion("un <=", value, "un"); + return (Criteria) this; + } + + public Criteria andUnLike(String value) { + addCriterion("un like", value, "un"); + return (Criteria) this; + } + + public Criteria andUnNotLike(String value) { + addCriterion("un not like", value, "un"); + return (Criteria) this; + } + + public Criteria andUnIn(List values) { + addCriterion("un in", values, "un"); + return (Criteria) this; + } + + public Criteria andUnNotIn(List values) { + addCriterion("un not in", values, "un"); + return (Criteria) this; + } + + public Criteria andUnBetween(String value1, String value2) { + addCriterion("un between", value1, value2, "un"); + return (Criteria) this; + } + + public Criteria andUnNotBetween(String value1, String value2) { + addCriterion("un not between", value1, value2, "un"); + return (Criteria) this; + } + + public Criteria andDisIsNull() { + addCriterion("dis is null"); + return (Criteria) this; + } + + public Criteria andDisIsNotNull() { + addCriterion("dis is not null"); + return (Criteria) this; + } + + public Criteria andDisEqualTo(String value) { + addCriterion("dis =", value, "dis"); + return (Criteria) this; + } + + public Criteria andDisNotEqualTo(String value) { + addCriterion("dis <>", value, "dis"); + return (Criteria) this; + } + + public Criteria andDisGreaterThan(String value) { + addCriterion("dis >", value, "dis"); + return (Criteria) this; + } + + public Criteria andDisGreaterThanOrEqualTo(String value) { + addCriterion("dis >=", value, "dis"); + return (Criteria) this; + } + + public Criteria andDisLessThan(String value) { + addCriterion("dis <", value, "dis"); + return (Criteria) this; + } + + public Criteria andDisLessThanOrEqualTo(String value) { + addCriterion("dis <=", value, "dis"); + return (Criteria) this; + } + + public Criteria andDisLike(String value) { + addCriterion("dis like", value, "dis"); + return (Criteria) this; + } + + public Criteria andDisNotLike(String value) { + addCriterion("dis not like", value, "dis"); + return (Criteria) this; + } + + public Criteria andDisIn(List values) { + addCriterion("dis in", values, "dis"); + return (Criteria) this; + } + + public Criteria andDisNotIn(List values) { + addCriterion("dis not in", values, "dis"); + return (Criteria) this; + } + + public Criteria andDisBetween(String value1, String value2) { + addCriterion("dis between", value1, value2, "dis"); + return (Criteria) this; + } + + public Criteria andDisNotBetween(String value1, String value2) { + addCriterion("dis not between", value1, value2, "dis"); + return (Criteria) this; + } + + public Criteria andAccessTokenIsNull() { + addCriterion("access_token is null"); + return (Criteria) this; + } + + public Criteria andAccessTokenIsNotNull() { + addCriterion("access_token is not null"); + return (Criteria) this; + } + + public Criteria andAccessTokenEqualTo(String value) { + addCriterion("access_token =", value, "accessToken"); + return (Criteria) this; + } + + public Criteria andAccessTokenNotEqualTo(String value) { + addCriterion("access_token <>", value, "accessToken"); + return (Criteria) this; + } + + public Criteria andAccessTokenGreaterThan(String value) { + addCriterion("access_token >", value, "accessToken"); + return (Criteria) this; + } + + public Criteria andAccessTokenGreaterThanOrEqualTo(String value) { + addCriterion("access_token >=", value, "accessToken"); + return (Criteria) this; + } + + public Criteria andAccessTokenLessThan(String value) { + addCriterion("access_token <", value, "accessToken"); + return (Criteria) this; + } + + public Criteria andAccessTokenLessThanOrEqualTo(String value) { + addCriterion("access_token <=", value, "accessToken"); + return (Criteria) this; + } + + public Criteria andAccessTokenLike(String value) { + addCriterion("access_token like", value, "accessToken"); + return (Criteria) this; + } + + public Criteria andAccessTokenNotLike(String value) { + addCriterion("access_token not like", value, "accessToken"); + return (Criteria) this; + } + + public Criteria andAccessTokenIn(List values) { + addCriterion("access_token in", values, "accessToken"); + return (Criteria) this; + } + + public Criteria andAccessTokenNotIn(List values) { + addCriterion("access_token not in", values, "accessToken"); + return (Criteria) this; + } + + public Criteria andAccessTokenBetween(String value1, String value2) { + addCriterion("access_token between", value1, value2, "accessToken"); + return (Criteria) this; + } + + public Criteria andAccessTokenNotBetween(String value1, String value2) { + addCriterion("access_token not between", value1, value2, "accessToken"); + return (Criteria) this; + } + + public Criteria andLoginTypeIsNull() { + addCriterion("login_type is null"); + return (Criteria) this; + } + + public Criteria andLoginTypeIsNotNull() { + addCriterion("login_type is not null"); + return (Criteria) this; + } + + public Criteria andLoginTypeEqualTo(Integer value) { + addCriterion("login_type =", value, "loginType"); + return (Criteria) this; + } + + public Criteria andLoginTypeNotEqualTo(Integer value) { + addCriterion("login_type <>", value, "loginType"); + return (Criteria) this; + } + + public Criteria andLoginTypeGreaterThan(Integer value) { + addCriterion("login_type >", value, "loginType"); + return (Criteria) this; + } + + public Criteria andLoginTypeGreaterThanOrEqualTo(Integer value) { + addCriterion("login_type >=", value, "loginType"); + return (Criteria) this; + } + + public Criteria andLoginTypeLessThan(Integer value) { + addCriterion("login_type <", value, "loginType"); + return (Criteria) this; + } + + public Criteria andLoginTypeLessThanOrEqualTo(Integer value) { + addCriterion("login_type <=", value, "loginType"); + return (Criteria) this; + } + + public Criteria andLoginTypeIn(List values) { + addCriterion("login_type in", values, "loginType"); + return (Criteria) this; + } + + public Criteria andLoginTypeNotIn(List values) { + addCriterion("login_type not in", values, "loginType"); + return (Criteria) this; + } + + public Criteria andLoginTypeBetween(Integer value1, Integer value2) { + addCriterion("login_type between", value1, value2, "loginType"); + return (Criteria) this; + } + + public Criteria andLoginTypeNotBetween(Integer value1, Integer value2) { + addCriterion("login_type not between", value1, value2, "loginType"); + return (Criteria) this; + } } public static class Criteria extends GeneratedCriteria { diff --git a/src/main/java/com/sztzjy/fund_investment/mapper/UserMapper.java b/src/main/java/com/sztzjy/fund_investment/mapper/UserMapper.java index 6715793..bcf943b 100644 --- a/src/main/java/com/sztzjy/fund_investment/mapper/UserMapper.java +++ b/src/main/java/com/sztzjy/fund_investment/mapper/UserMapper.java @@ -8,7 +8,6 @@ import java.util.Map; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; - @Mapper public interface UserMapper { long countByExample(UserExample example); @@ -33,6 +32,8 @@ public interface UserMapper { int updateByPrimaryKey(User record); + User selectByUn(@Param("un") String un); + @Select("select distinct(class_id),class_name from wx_user where school_id = #{schoolId}") List> selectClassNameBySchoolId(@Param("schoolId") String schoolId); } \ No newline at end of file diff --git a/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/UserServiceImpl.java b/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/UserServiceImpl.java index 7b91dfd..a913265 100644 --- a/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/UserServiceImpl.java +++ b/src/main/java/com/sztzjy/fund_investment/service/serviceImpl/UserServiceImpl.java @@ -32,4 +32,6 @@ public class UserServiceImpl implements IUserService { public User findById(String id) { return userMapper.selectByPrimaryKey(id); } + + }