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