浏览代码

使用 用户中心登录

wuweihao 3 年之前
父节点
当前提交
62b4039ed3

+ 52 - 53
gis_admin/src/main/java/com/gis/admin/controller/LoginController.java

@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.gis.common.base.entity.po.LogEntity;
 import com.gis.common.base.exception.BaseRuntimeException;
 import com.gis.common.base.service.LogService;
+import com.gis.common.constant.ApiConstant;
 import com.gis.common.constant.ConfigConstant;
 import com.gis.common.util.*;
 import com.gis.admin.entity.po.SysUserEntity;
@@ -61,38 +62,37 @@ public class LoginController {
     // 超级管理员角色key
     private static String ROLE_SYS_ADMIN = "sys_admin";
 
-    final static String HOST = "http://127.0.0.1:8024/admin/authorize";
 
 
 
     // 目前是24h
     private static Integer TOKEN_EXPIRE = 1000 * 60 * 60 * 24;
 
-    @ApiOperation("登录")
-    @PostMapping(value = "/admin/login")
-    public Result login(@Valid @RequestBody LoginDto param, String pwdEncrypt)  {
-        // 1.获取用户
-        SysUserEntity entity = userService.findByUserName(param.getUserName());
-        BaseRuntimeException.isNull(entity, null, "用户不存在");
-
-        //校验密码
-        boolean decryptName;
-        if ("owen".equals(pwdEncrypt)){ // 测试使用
-            // 不加密
-            decryptName = PasswordUtils.decrypt(entity.getPassword(), param.getPassword(), PasswordUtils.getStaticSalt());
-        } else {
-            // 解密密码
-            String password = Base64Converter.decodePassword(param.getPassword());
-            // 验证密码,解密出来是明文密码,在跟输入密码比较
-            decryptName = PasswordUtils.decrypt(entity.getPassword(), password, PasswordUtils.getStaticSalt());
-        }
-        BaseRuntimeException.isTrue(!decryptName, null, "密码错误");
-        // 检查账号是否启用
-        BaseRuntimeException.isTrue(entity.getIsEnabled() != 1, null, "此账号已停用:" + entity.getUserName());
-
-        return createToken(entity, "loginCms");
-
-    }
+//    @ApiOperation("登录")
+//    @PostMapping(value = "/admin/login")
+//    public Result login(@Valid @RequestBody LoginDto param, String pwdEncrypt)  {
+//        // 1.获取用户
+//        SysUserEntity entity = userService.findByUserName(param.getUserName());
+//        BaseRuntimeException.isNull(entity, null, "用户不存在");
+//
+//        //校验密码
+//        boolean decryptName;
+//        if ("owen".equals(pwdEncrypt)){ // 测试使用
+//            // 不加密
+//            decryptName = PasswordUtils.decrypt(entity.getPassword(), param.getPassword(), PasswordUtils.getStaticSalt());
+//        } else {
+//            // 解密密码
+//            String password = Base64Converter.decodePassword(param.getPassword());
+//            // 验证密码,解密出来是明文密码,在跟输入密码比较
+//            decryptName = PasswordUtils.decrypt(entity.getPassword(), password, PasswordUtils.getStaticSalt());
+//        }
+//        BaseRuntimeException.isTrue(!decryptName, null, "密码错误");
+//        // 检查账号是否启用
+//        BaseRuntimeException.isTrue(entity.getIsEnabled() != 1, null, "此账号已停用:" + entity.getUserName());
+//
+//        return createToken(entity, "loginCms");
+//
+//    }
 
 
     /**
@@ -102,32 +102,31 @@ public class LoginController {
      * @param pwdEncrypt 非必传
      * @return
      */
-//    @ApiOperation("授权登录")
-//    @PostMapping(value = "/admin/login")
-//    public Result login(@Valid @RequestBody LoginDto param, String pwdEncrypt)  {
-//        String api = HOST + "?pwdEncrypt=" + pwdEncrypt;
-//        HashMap<Object, Object> querys = new HashMap<>();
-//        querys.put("pwdEncrypt", pwdEncrypt);
-//
-//        JSONObject json = new JSONObject();
-//        json.put("userName", param.getUserName());
-//        json.put("password", param.getPassword());
-//        String s = HttpUtil.createPost(api)
-//                .body(json.toJSONString(), "application/json;charset=UTF-8")
-//                .execute().body();
-//        log.info("授权返回值: {}", s);
-//
-//        Result result = JSON.parseObject(s, Result.class);
-//        if (result.getCode() != 0){
-//            return result;
-//        }
-//
-//        SysUserEntity entity = JSON.parseObject(result.getData().toString(), SysUserEntity.class);
-//
-//
-//        return createToken(entity, "loginCms");
-//
-//    }
+    @ApiOperation("授权登录")
+    @PostMapping(value = "/admin/login")
+    public Result login(@Valid @RequestBody LoginDto param, String pwdEncrypt)  {
+        String api = configConstant.ageUserHost + ApiConstant.AGE_USER_AUTHORIZE + "?pwdEncrypt=" + pwdEncrypt;
+        HashMap<Object, Object> querys = new HashMap<>();
+        querys.put("pwdEncrypt", pwdEncrypt);
+
+        JSONObject json = new JSONObject();
+        json.put("userName", param.getUserName());
+        json.put("password", param.getPassword());
+        String s = HttpUtil.createPost(api)
+                .body(json.toJSONString(), "application/json;charset=UTF-8")
+                .execute().body();
+        log.info("授权返回值: {}", s);
+
+        Result result = JSON.parseObject(s, Result.class);
+        if (result.getCode() != 0){
+            return result;
+        }
+
+        SysUserEntity entity = JSON.parseObject(result.getData().toString(), SysUserEntity.class);
+        userService.syncUserToLocal(entity);
+        return createToken(entity, "loginCms");
+
+    }
 
 
     private Result createToken(SysUserEntity entity, String loginType){
@@ -158,7 +157,7 @@ public class LoginController {
         // 保存操作日志
         saveLog(userId, loginType);
 
-        redisUtil.setEx(configConstant.redisPrefix + token, token, 23, TimeUnit.HOURS);
+        redisUtil.setEx(token, token, 23, TimeUnit.HOURS);
         return Result.success(result);
     }
 

+ 4 - 2
gis_admin/src/main/java/com/gis/admin/controller/SysUserController.java

@@ -46,7 +46,8 @@ public class SysUserController {
     @ApiOperation(value = "新增/修改用户信息", notes = "只能新增普通管理员")
     @PostMapping("save")
     public Result save(@Valid @RequestBody UserDto param) {
-        return userService.saveEntity(param);
+//        return userService.saveEntity(param);
+        return userService.syncSaveEntity(param);
     }
 
 //    @ApiIgnore
@@ -66,7 +67,8 @@ public class SysUserController {
     @ApiOperation(value = "修改密码", notes = "密文传输")
     @PostMapping("updatePwd")
     public Result updatePwd(@Valid @RequestBody PasswordDto param) {
-        return userService.updatePwd(param);
+//        return userService.updatePwd(param);
+        return userService.syncUpdatePwd(param);
     }
 
 //    @ApiIgnore

+ 4 - 2
gis_admin/src/main/java/com/gis/admin/service/SysUserService.java

@@ -52,8 +52,10 @@ public interface SysUserService extends IService<SysUserEntity> {
 
     Result getUserKey(Long id);
 
+    /**用户系统信息同步到本地*/
+    void syncUserToLocal(SysUserEntity entity);
 
+    Result syncSaveEntity(UserDto param);
 
-
-
+    Result syncUpdatePwd(PasswordDto param);
 }

+ 119 - 2
gis_admin/src/main/java/com/gis/admin/service/impl/SysUserServiceImpl.java

@@ -1,6 +1,9 @@
 package com.gis.admin.service.impl;
 
 import cn.hutool.core.util.RandomUtil;
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -13,6 +16,8 @@ import com.gis.common.base.exception.BaseRuntimeException;
 //import com.gis.common.base.service.LogService;
 //import com.gis.common.base.service.impl.MyBaseServiceImpl;
 import com.gis.common.base.service.IBaseService;
+import com.gis.common.constant.ApiConstant;
+import com.gis.common.constant.ConfigConstant;
 import com.gis.common.util.*;
 import com.gis.admin.entity.dto.PasswordDto;
 import com.gis.admin.entity.dto.UserDto;
@@ -30,6 +35,7 @@ import org.springframework.stereotype.Service;
 import javax.servlet.http.HttpServletRequest;
 import java.time.LocalDateTime;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
@@ -54,6 +60,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUserEntity
     @Autowired
     IBaseService baseService;
 
+    @Autowired
+    ConfigConstant configConstant;
+
     /**
      * redis 用户名
      */
@@ -112,6 +121,67 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUserEntity
         return Result.success(entity);
     }
 
+    /**
+     * by owen 2022-06-21
+     * 同步用户到本地, 不保存密码
+     * @param entity
+     */
+    @Override
+    public void syncUserToLocal(SysUserEntity entity) {
+        SysUserEntity dbUser = this.findByUserName(entity.getUserName());
+        if (dbUser == null){
+            entity.setIsAdmin(0);
+            entity.setUserKey(EncryptUtils.getEncrypt(USER_KEY, entity.getUserName()));
+            this.save(entity);
+        }
+    }
+
+    /**
+     * by owen 2022-06-21
+     * 同步用户四维用户系统
+     */
+    private Result syncUserToAgeUser(UserDto param) {
+        String api = configConstant.ageUserHost + ApiConstant.AGE_USER_Add;
+
+        param.setId(null);
+        String token = baseService.getToken();
+        log.info("token: {}", token);
+        log.info("请求地址: {}", api);
+        String s = HttpUtil.createPost(api)
+                .header("token", token)
+                .body(JSON.toJSONString(param), "application/json;charset=UTF-8")
+                .execute().body();
+        log.info("授权返回值: {}", s);
+
+        Result result = JSON.parseObject(s, Result.class);
+        // 2010 用户名重复, 不需要同步
+        if (result.getCode() != 0 || result.getCode() != 2010){
+            return result;
+        }
+        log.info("完成:同步用户到用户中心");
+        return null;
+    }
+
+
+    @Override
+    public Result syncUpdatePwd(PasswordDto param) {
+        String api = configConstant.ageUserHost + ApiConstant.AGE_USER_UPDATE_PWD;
+
+
+        String s = HttpUtil.createPost(api)
+                .body(JSON.toJSONString(param), "application/json;charset=UTF-8")
+                .header("token", baseService.getToken())
+                .execute().body();
+        log.info("授权返回值: {}", s);
+
+        Result result = JSON.parseObject(s, Result.class);
+        // 2010 用户名重复, 不需要同步
+        if (result.getCode() != 0 ){
+            return result;
+        }
+        log.info("完成:密码更新到用户中心");
+        return Result.success();
+    }
 
 
     @Override
@@ -123,6 +193,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUserEntity
     }
 
 
+    /**
+     * 新增会同步用户到用户中心
+     * @param param
+     * @return
+     */
     @Override
     public Result saveEntity(UserDto param) {
         SysUserEntity entity;
@@ -130,12 +205,13 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUserEntity
         if (id == null) {
             entity = this.findByUserName(param.getUserName());
             if (entity != null) {
-                return Result.failure("用户名已存在");
+                return Result.failure("用户名已存在, 请直接登录");
             }
             entity = new SysUserEntity();
             BeanUtils.copyProperties(param, entity);
+
             entity.setIsAdmin(0);
-            entity.setPassword(PasswordUtils.encrypt(param.getUserName(), "123456", PasswordUtils.getStaticSalt()));
+             entity.setPassword(PasswordUtils.encrypt(param.getUserName(), "123456", PasswordUtils.getStaticSalt()));
             entity.setCreatorId(baseService.getUserId());
             entity.setUserKey(EncryptUtils.getEncrypt(USER_KEY, entity.getUserName()));
             this.save(entity);
@@ -155,6 +231,47 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUserEntity
         return Result.success();
     }
 
+    @Override
+    public Result syncSaveEntity(UserDto param) {
+        SysUserEntity entity;
+        Long id = param.getId();
+        if (id == null) {
+            entity = this.findByUserName(param.getUserName());
+            if (entity != null) {
+                return Result.failure("用户名已存在, 请直接登录");
+            }
+            entity = new SysUserEntity();
+            BeanUtils.copyProperties(param, entity);
+
+            // 同步用户到用户中心
+            Result result = syncUserToAgeUser(param);
+            if (result != null){
+                return result;
+            }
+
+//            entity.setIsAdmin(0);
+//            entity.setCreatorId(baseService.getUserId());
+//            entity.setUserKey(EncryptUtils.getEncrypt(USER_KEY, entity.getUserName()));
+//            this.save(entity);
+
+        } else {
+            entity = this.getById(id);
+            if (entity == null) {
+                log.error("用户不存在: {}", id);
+                return Result.failure("用户不存在");
+            }
+
+            BeanUtils.copyProperties(param, entity);
+            this.updateById(entity);
+
+        }
+
+        return Result.success();
+    }
+
+
+
+
 
 
     @Override

+ 1 - 1
gis_admin/src/main/java/com/gis/admin/shiro/ShiroRealm.java

@@ -128,7 +128,7 @@ public class ShiroRealm extends AuthorizingRealm {
             throw new JwtAuthenticationException(5001, "token invalid");
         }
 
-        String redisToken = redisUtil.getCacheObject(configConstant.redisPrefix + token);
+        String redisToken = redisUtil.getCacheObject(token);
 
         if (!token.equals(redisToken)) {
             log.error("redis token is null");

+ 3 - 0
gis_application/src/main/resources/application-dev.properties

@@ -76,6 +76,9 @@ swagger.title=${project.sc}-dev
 swagger.description=${swagger.title}
 swagger.version=1.0
 
+#\u56DB\u7EF4\u7528\u6237\u7CFB\u7EDF\u57DF\u540D
+age.user.host=http://127.0.0.1:8024
+
 
 
 

+ 3 - 0
gis_application/src/main/resources/application-sit.properties

@@ -68,6 +68,9 @@ swagger.title=${project.sc}-sit
 swagger.description=${swagger.title}
 swagger.version=1.0
 
+#\u56DB\u7EF4\u7528\u6237\u7CFB\u7EDF\u57DF\u540D
+age.user.host=http://project.4dage.com:8024
+
 
 
 

+ 16 - 0
gis_common/src/main/java/com/gis/common/constant/ApiConstant.java

@@ -0,0 +1,16 @@
+package com.gis.common.constant;
+
+/**
+ * Created by owen on 2022/6/21 0021 10:39
+ */
+public class ApiConstant {
+
+    /**四维用户系统-用户授权*/
+    public final static String AGE_USER_AUTHORIZE = "/admin/authorize";
+
+    /**四维用户系统-添加用户*/
+    public final static String AGE_USER_Add = "/sys/user/save";
+
+    /**四维用户系统-用户密码修改*/
+    public final static String AGE_USER_UPDATE_PWD = "/sys/user/updatePwd";
+}

+ 4 - 0
gis_common/src/main/java/com/gis/common/constant/ConfigConstant.java

@@ -29,6 +29,10 @@ public class ConfigConstant {
     @Value("${spring.profiles.active}")
     public String active;
 
+    /**四维用户系统域名*/
+    @Value("${age.user.host}")
+    public String ageUserHost;
+
 
 //    /**允许上传的文件后缀*/
 //    @Value("${file.allow}")