From 333065f8d9b599b048668a0686ba2ee58944b0e4 Mon Sep 17 00:00:00 2001 From: kaiyu <404897439@qq.com> Date: Thu, 18 Mar 2021 11:26:33 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- screen-api/src/main/resources/mapper/GroupMapper.xml | 1 screen-api/src/main/resources/mapper/UserMapper.xml | 30 +++++ /dev/null | 82 ------------- screen-common/src/main/java/com/moral/constant/ResponseCodeEnum.java | 3 screen-api/src/main/java/com/moral/api/service/UserService.java | 5 screen-api/src/main/java/com/moral/api/controller/LoginController.java | 113 ++++++++++++++++++ screen-api/src/main/java/com/moral/api/mapper/UserMapper.java | 2 screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java | 94 ++++++--------- screen-api/src/main/java/com/moral/api/controller/UserController.java | 5 screen-api/src/main/java/com/moral/api/entity/User.java | 8 + screen-api/src/main/java/com/moral/api/mapper/GroupMapper.java | 2 screen-api/src/main/java/com/moral/api/interceptor/AuthenticationInterceptor.java | 6 12 files changed, 203 insertions(+), 148 deletions(-) diff --git a/screen-api/src/main/java/com/moral/api/controller/LoginController.java b/screen-api/src/main/java/com/moral/api/controller/LoginController.java new file mode 100644 index 0000000..0628f31 --- /dev/null +++ b/screen-api/src/main/java/com/moral/api/controller/LoginController.java @@ -0,0 +1,113 @@ +package com.moral.api.controller; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; + +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import com.moral.api.entity.Group; +import com.moral.api.entity.User; +import com.moral.api.service.GroupService; +import com.moral.api.service.UserService; +import com.moral.constant.ResponseCodeEnum; +import com.moral.constant.ResultMessage; +import com.moral.util.AESUtils; +import com.moral.util.MD5Utils; +import com.moral.util.TokenUtils; +import com.moral.util.WebUtils; + +@Slf4j +@Api(tags = {"������"}) +@RestController +public class LoginController { + + @Autowired + private UserService userService; + + @Autowired + private GroupService groupService; + + @Value("${AES.KEY}") + private String AESKey; + + @ApiOperation(value = "������", notes = "������") + @ApiImplicitParams({ + @ApiImplicitParam(name = "account", value = "������", required = false, paramType = "query", dataType = "String"), + @ApiImplicitParam(name = "password", value = "������", required = false, paramType = "query", dataType = "String") + }) + @RequestMapping(value = "login", method = RequestMethod.POST) + public ResultMessage login(HttpServletRequest request) { + Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null); + if (!(parameters.containsKey("account") && parameters.containsKey("password"))) { + return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); + } + //������������ + String password = parameters.get("password").toString(); + //������������ + password = AESUtils.decrypt(password, AESKey); + + User user = userService.selectUserInfo(parameters); + //������������ + if (user == null) { + return ResultMessage.fail(ResponseCodeEnum.ACCOUNT_NOT_EXIST.getCode(), ResponseCodeEnum.ACCOUNT_NOT_EXIST.getMsg()); + } + //������������ + if (!MD5Utils.saltMD5Verify(password, user.getPassword())) { + return ResultMessage.fail(ResponseCodeEnum.PASSWORD_INVALID.getCode(), ResponseCodeEnum.PASSWORD_INVALID.getMsg()); + } + //������������������ + if ("1".equals(user.getIsDelete())) { + return ResultMessage.fail(ResponseCodeEnum.ACCOUNT_IS_DELETE.getCode(), ResponseCodeEnum.ACCOUNT_IS_DELETE.getMsg()); + } + //������������������ + if (user.getExpireTime() != null && user.getExpireTime().getTime() < System.currentTimeMillis()) { + return ResultMessage.fail(ResponseCodeEnum.ACCOUNT_IS_EXPIRE.getCode(), ResponseCodeEnum.ACCOUNT_IS_EXPIRE.getMsg()); + } + Map<String, Object> result = userService.login(user); + if (!result.containsKey("token")) { + return ResultMessage.fail(ResponseCodeEnum.TOKEN_CREATE_ERROR.getCode(), ResponseCodeEnum.TOKEN_CREATE_ERROR.getMsg()); + } + return ResultMessage.ok(); + } + + @ApiOperation(value = "������", notes = "������") + @RequestMapping(value = "logout", method = RequestMethod.POST) + public ResultMessage logout(HttpServletRequest request) { + Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null); + if (!parameters.containsKey("uid")) { + return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); + } + String userId = request.getParameter("uid"); + String token = request.getHeader("token"); + TokenUtils.destoryToken(userId, token); + return ResultMessage.ok(); + } + + @ApiOperation(value = "���������", notes = "���������") + @ApiImplicitParams({ + @ApiImplicitParam(name = "groupName", value = "������", required = true, paramType = "query", dataType = "String") + }) + @RequestMapping(value = "addGroup", method = RequestMethod.POST) + private ResultMessage addGroup(Group group, HttpServletRequest request) { + String currentUserId = request.getHeader("uid"); + Map<String, Object> map = groupService.addGroup(group, currentUserId); + String msg = map.get("msg").toString(); + boolean flag = Boolean.parseBoolean(map.get("flag").toString()); + if (flag) { + return ResultMessage.ok(msg); + } + return ResultMessage.fail(msg); + } + +} diff --git a/screen-api/src/main/java/com/moral/api/controller/UserController.java b/screen-api/src/main/java/com/moral/api/controller/UserController.java index 1f3f6a8..12b071a 100644 --- a/screen-api/src/main/java/com/moral/api/controller/UserController.java +++ b/screen-api/src/main/java/com/moral/api/controller/UserController.java @@ -17,6 +17,7 @@ import com.moral.api.entity.User; import com.moral.api.service.UserService; +import com.moral.constant.ResponseCodeEnum; import com.moral.constant.ResultMessage; import com.moral.util.WebUtils; @@ -43,10 +44,12 @@ public ResultMessage addUser(User user, HttpServletRequest request) { Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null); if (!(parameters.containsKey("account") && parameters.containsKey("password"))) { - return ResultMessage.fail("���������������������������������"); + return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); } String token = request.getHeader("token"); Map<String, Object> map = userService.addUser(user, token); + + if (map.containsKey("msg")) { return ResultMessage.fail(map.get("msg").toString()); } diff --git a/screen-api/src/main/java/com/moral/api/controller/WebController.java b/screen-api/src/main/java/com/moral/api/controller/WebController.java deleted file mode 100644 index 73a11d1..0000000 --- a/screen-api/src/main/java/com/moral/api/controller/WebController.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.moral.api.controller; - -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiImplicitParams; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; - -import java.util.List; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RestController; - -import com.moral.api.entity.Group; -import com.moral.api.service.GroupService; -import com.moral.api.service.UserService; -import com.moral.constant.ResultMessage; -import com.moral.util.TokenUtils; -import com.moral.util.WebUtils; - -@Slf4j -@Api(tags = {"������"}) -@RestController -@RequestMapping("/api") -public class WebController { - - @Autowired - private UserService userService; - - @Autowired - private GroupService groupService; - - @ApiOperation(value = "������", notes = "������") - @ApiImplicitParams({ - @ApiImplicitParam(name = "account", value = "������", required = false, paramType = "query", dataType = "String"), - @ApiImplicitParam(name = "password", value = "������", required = false, paramType = "query", dataType = "String") - }) - @RequestMapping(value = "login", method = RequestMethod.POST) - public ResultMessage login(HttpServletRequest request) { - Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null); - if (!(parameters.containsKey("account") && parameters.containsKey("password"))) { - return ResultMessage.fail("���������������������������������"); - } - Map<String, Object> map = userService.login(parameters); - if (map.get("token") == null) { - return ResultMessage.fail(map.get("msg").toString()); - } - return ResultMessage.ok(map); - } - - @ApiOperation(value = "������", notes = "������") - @RequestMapping(value = "logout", method = RequestMethod.POST) - public ResultMessage logout(HttpServletRequest request) { - String userId = request.getHeader("uid"); - String token = request.getHeader("token"); - TokenUtils.destoryToken(userId, token); - return ResultMessage.ok(); - } - - @ApiOperation(value = "���������", notes = "���������") - @ApiImplicitParams({ - @ApiImplicitParam(name = "groupName", value = "������", required = true, paramType = "query", dataType = "String") - }) - @RequestMapping(value = "addGroup", method = RequestMethod.POST) - private ResultMessage addGroup(Group group, HttpServletRequest request) { - String currentUserId = request.getHeader("uid"); - Map<String, Object> map = groupService.addGroup(group, currentUserId); - String msg = map.get("msg").toString(); - boolean flag = Boolean.parseBoolean(map.get("flag").toString()); - if (flag) { - return ResultMessage.ok(msg); - } - return ResultMessage.fail(msg); - } - -} diff --git a/screen-api/src/main/java/com/moral/api/entity/User.java b/screen-api/src/main/java/com/moral/api/entity/User.java index e0d33e1..4d31a77 100644 --- a/screen-api/src/main/java/com/moral/api/entity/User.java +++ b/screen-api/src/main/java/com/moral/api/entity/User.java @@ -7,11 +7,13 @@ import java.io.Serializable; import java.util.Date; +import java.util.List; import java.util.Set; import lombok.Data; import lombok.EqualsAndHashCode; +import javax.persistence.Transient; /** @@ -94,6 +96,12 @@ */ private String isDelete; + @Transient + private Organization organization; + + @Transient + private List<Group> groups; + @Override protected Serializable pkVal() { diff --git a/screen-api/src/main/java/com/moral/api/interceptor/AuthenticationInterceptor.java b/screen-api/src/main/java/com/moral/api/interceptor/AuthenticationInterceptor.java index 38ed4bc..74e3059 100644 --- a/screen-api/src/main/java/com/moral/api/interceptor/AuthenticationInterceptor.java +++ b/screen-api/src/main/java/com/moral/api/interceptor/AuthenticationInterceptor.java @@ -15,10 +15,10 @@ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { - /*if (!(handler instanceof HandlerMethod)) { + if (!(handler instanceof HandlerMethod)) { return true; } - String token = form.getHeader("token"); + String token = request.getHeader("token"); if (token == null) { return false; } @@ -29,7 +29,7 @@ TokenUtils.extendTokenTime(token); } catch (Exception e) { return false; - }*/ + } return true; } } diff --git a/screen-api/src/main/java/com/moral/api/mapper/GroupMapper.java b/screen-api/src/main/java/com/moral/api/mapper/GroupMapper.java index 12dc29d..f5c628d 100644 --- a/screen-api/src/main/java/com/moral/api/mapper/GroupMapper.java +++ b/screen-api/src/main/java/com/moral/api/mapper/GroupMapper.java @@ -16,6 +16,6 @@ */ public interface GroupMapper extends BaseMapper<Group> { - List<Map<String, Object>> selectUserGroup(int userId); + List<Map<String, Object>> selectUserGroup(Map<String, Object> parameters); } diff --git a/screen-api/src/main/java/com/moral/api/mapper/UserMapper.java b/screen-api/src/main/java/com/moral/api/mapper/UserMapper.java index d92b69a..87be9a9 100644 --- a/screen-api/src/main/java/com/moral/api/mapper/UserMapper.java +++ b/screen-api/src/main/java/com/moral/api/mapper/UserMapper.java @@ -17,4 +17,6 @@ public interface UserMapper extends BaseMapper<User> { List<Map<String, Object>> selectUsers(Map<String, Object> parameters); + + User selectUserInfo(Map<String, Object> parameters); } diff --git a/screen-api/src/main/java/com/moral/api/service/UserService.java b/screen-api/src/main/java/com/moral/api/service/UserService.java index 1e55aeb..8821b4c 100644 --- a/screen-api/src/main/java/com/moral/api/service/UserService.java +++ b/screen-api/src/main/java/com/moral/api/service/UserService.java @@ -17,7 +17,7 @@ */ public interface UserService extends IService<User> { - Map<String, Object> login(Map<String, Object> parameters); + Map<String, Object> login(User user); Map<String, Object> addUser(User user, String token); @@ -27,4 +27,7 @@ Map<String, Object> getUsers(Map<String, Object> parameters); + User selectUserInfo(Map<String, Object> parameters); + + } diff --git a/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java index 8950238..4a1b6f2 100644 --- a/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java +++ b/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java @@ -10,7 +10,9 @@ import java.util.stream.Collectors; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.moral.api.entity.Group; import com.moral.api.entity.Menu; +import com.moral.api.entity.Organization; import com.moral.api.entity.User; import com.moral.api.mapper.GroupMapper; @@ -43,65 +45,44 @@ private UserMapper userMapper; @Autowired - private GroupMapper groupMapper; - - @Autowired private MenuMapper menuMapper; - @Autowired - private OrganizationMapper organizationMapper; - - @Value("${AES.KEY}") - private String AESKey; + @Override + public User selectUserInfo(Map<String, Object> parameters) { + return userMapper.selectUserInfo(parameters); + } @Override - public Map<String, Object> login(Map<String, Object> parameters) { + public Map<String, Object> login(User user) { Map<String, Object> resultMap = new LinkedHashMap<>(); - //������������ - String account = parameters.get("account").toString(); - String password = parameters.get("password").toString(); - //������ - /*account = AESUtils.decrypt(account, AESKey); - password = AESUtils.decrypt(password, AESKey);*/ - QueryWrapper<User> queryWrapper = new QueryWrapper<>(); - //������������ - queryWrapper.eq("account", account); - User user = userMapper.selectOne(queryWrapper); - String msg; - if (user == null) { - msg = "������������������"; - } else { - if (!MD5Utils.saltMD5Verify(password, user.getPassword())) {//������������ - msg = "������������"; - } else if ("1".equals(user.getIsDelete())) { - msg = "������������������"; - } else if (user.getExpireTime() != null && user.getExpireTime().getTime() < System.currentTimeMillis()) { - msg = "���������������������"; - } else { - int userId = user.getId(); - //������������������ - Map<String, Object> orgMap = organizationMapper.selectOrganizationById(user.getOrganizationId()); - String locationCode = orgMap.get(orgMap.get("location_level").toString()).toString(); - //������������������ - Map<String, Object> userInfo = new LinkedHashMap<>(); - userInfo.put("userId", userId); - userInfo.put("account", user.getAccount()); - userInfo.put("userName", user.getUserName()); - userInfo.put("organizationId", user.getOrganizationId()); - userInfo.put("locationCode", locationCode); - userInfo.put("expireTime", user.getExpireTime()); - userInfo.put("isAdmin", user.getIsAdmin()); - List<Map<String, Object>> groups = groupMapper.selectUserGroup(userId); - userInfo.put("groups", groups); - userInfo.putAll(getMenus(userId)); - //������token������������redis - String token = TokenUtils.getToken(user.getId().toString(), userInfo); - resultMap.put("token", token); - resultMap.putAll(userInfo); - return resultMap; - } + //������������������ + Map<String, Object> userInfo = new LinkedHashMap<>(); + List<Map<String, Object>> groups = new ArrayList<>(); + for (Group group : user.getGroups()) { + HashMap<String, Object> groupMap = new HashMap<>(); + groupMap.put("groupId", group.getId()); + groupMap.put("groupName", group.getGroupName()); + groups.add(groupMap); } - resultMap.put("msg", msg); + Organization organization = user.getOrganization(); + userInfo.put("userId", user.getId()); + userInfo.put("account", user.getAccount()); + userInfo.put("userName", user.getUserName()); + userInfo.put("expireTime", user.getExpireTime()); + userInfo.put("isAdmin", user.getIsAdmin()); + userInfo.put("organizationId", user.getOrganizationId()); + userInfo.put("organizationName", organization.getName()); + userInfo.put("locationLevel", organization.getLocationLevel()); + userInfo.put("groups", groups); + userInfo.putAll(getMenus(user.getId())); + try { + //������token������������redis + String token = TokenUtils.getToken(user.getId().toString(), userInfo); + resultMap.put("token", token); + } catch (Exception e) { + log.error("token���������������"+e.getMessage()); + } + resultMap.putAll(userInfo); return resultMap; } @@ -163,13 +144,8 @@ Map<String, Object> resultMap = new HashMap<>(); Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token); - if (!(boolean) currentUserInfo.get("isAdmin")) { - resultMap.put("msg", "������������"); - return resultMap; - } QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("account", user.getAccount()); - userMapper.selectOne(queryWrapper); if (userMapper.selectOne(queryWrapper) != null) { resultMap.put("msg", "������������������"); return resultMap; @@ -277,4 +253,6 @@ } return msgs; } + + } diff --git a/screen-api/src/main/resources/mapper/GroupMapper.xml b/screen-api/src/main/resources/mapper/GroupMapper.xml index 356729c..1123a96 100644 --- a/screen-api/src/main/resources/mapper/GroupMapper.xml +++ b/screen-api/src/main/resources/mapper/GroupMapper.xml @@ -15,7 +15,6 @@ <resultMap id="GroupResultMap" type="java.util.LinkedHashMap"> <id column="id" property="id"/> <result column="group_name" property="groupName"/> - <result column="organization_id" property="organizationId"/> </resultMap> <select id="selectUserGroup" resultMap="GroupResultMap"> diff --git a/screen-api/src/main/resources/mapper/UserMapper.xml b/screen-api/src/main/resources/mapper/UserMapper.xml index bcbc3fb..b062eb3 100644 --- a/screen-api/src/main/resources/mapper/UserMapper.xml +++ b/screen-api/src/main/resources/mapper/UserMapper.xml @@ -17,8 +17,38 @@ <result column="update_time" property="updateTime"/> <result column="expire_time" property="expireTime"/> <result column="is_delete" property="isDelete"/> + <!--������������--> + <association property="organization" javaType="com.moral.api.entity.Organization"> + <result column="id" property="id" jdbcType="INTEGER"/> + <result column="name" property="name" jdbcType="VARCHAR"/> + <result column="location_level" property="locationLevel"/> + </association> + <!--���������--> + <collection property="groups" ofType="com.moral.api.entity.Group" javaType = "java.util.ArrayList"> + <id column="groupId" property="id" jdbcType="INTEGER"/> + <result column="group_name" property="groupName" jdbcType="VARCHAR"/> + </collection> + </resultMap> + + <select id="selectUserInfo" resultMap="BaseResultMap"> + SELECT u.id,u.account,u.password,u.user_name,u.organization_id,u.expire_time,u.is_delete, + o.name,u.is_admin,o.location_level, + g.id groupId,g.group_name + FROM `user` u, + `organization` o, + `user_group` ug, + `group` g + WHERE u.account = #{account} + AND u.organization_id=o.id + AND u.id = ug.user_id + AND ug.group_id = g.id + AND g.is_delete = 0 + AND ug.is_delete = 0 + </select> + + <select id="selectUsers" resultType="java.util.Map"> SELECT id,account,user_name userName,email,mobile,wechat FROM `user` WHERE <if test="orgId!=null"> diff --git a/screen-common/src/main/java/com/moral/constant/ResponseCodeEnum.java b/screen-common/src/main/java/com/moral/constant/ResponseCodeEnum.java index dd45e9e..eba463b 100644 --- a/screen-common/src/main/java/com/moral/constant/ResponseCodeEnum.java +++ b/screen-common/src/main/java/com/moral/constant/ResponseCodeEnum.java @@ -21,7 +21,8 @@ MOBILE_INVALID(-9,"���������������"), EMAIL_INVALID(-10,"������������"), ACCOUNT_INVALID(-11,"���������������"), - PASSWORD_INVALID(-12,"������������") + PASSWORD_INVALID(-12,"������������"), + ACCOUNT_IS_EXPIRE(-13,"���������������") ; private final Integer code; private final String msg; -- Gitblit v1.8.0