jinpengyong
2021-03-17 511fbc6392d46828284bd72b47966ef217893275
登陆修改
1 files deleted
1 files added
10 files modified
356 ■■■■■ changed files
screen-api/src/main/java/com/moral/api/controller/LoginController.java 113 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/controller/UserController.java 5 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/controller/WebController.java 82 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/entity/User.java 8 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/interceptor/AuthenticationInterceptor.java 6 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/mapper/GroupMapper.java 2 ●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/mapper/UserMapper.java 2 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/UserService.java 5 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java 94 ●●●●● patch | view | raw | blame | history
screen-api/src/main/resources/mapper/GroupMapper.xml 1 ●●●● patch | view | raw | blame | history
screen-api/src/main/resources/mapper/UserMapper.xml 30 ●●●●● patch | view | raw | blame | history
screen-common/src/main/java/com/moral/constant/ResponseCodeEnum.java 8 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/controller/LoginController.java
New file
@@ -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);
    }
}
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());
        }
screen-api/src/main/java/com/moral/api/controller/WebController.java
File was deleted
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() {
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;
    }
}
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);
}
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);
}
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);
}
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;
    }
}
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">
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">
screen-common/src/main/java/com/moral/constant/ResponseCodeEnum.java
@@ -21,11 +21,13 @@
    MOBILE_INVALID(-9,"手机号无效"),
    EMAIL_INVALID(-10,"邮箱无效"),
    ACCOUNT_LENGTH_INVALID(-11,"账号长度无效"),
    PASSWORD_LENGTH_INVALID(-12,"账号长度无效"),
    PASSWORD_LENGTH_INVALID(-12,"密码长度无效"),
    ACCOUNT_EXIST_SPECIAL_CHAR(-13,"用户名包含特殊字符"),
    PASSWORD_EXIST_SPECIAL_CHAR(-14,"密码包含特殊字符")
    PASSWORD_EXIST_SPECIAL_CHAR(-14,"密码包含特殊字符"),
    ACCOUNT_IS_EXPIRE(-15,"用户已过期")
    ;
            ;
    private final Integer code;
    private final String  msg;