Parcourir la source

根据code获取用户token

pans il y a 5 mois
Parent
commit
112f2a066a
12 fichiers modifiés avec 462 ajouts et 6 suppressions
  1. 2 1
      snowy-modules/snowy-web-app/src/main/java/vip/xiaonuo/web/core/config/GlobalConfigure.java
  2. 4 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/pom.xml
  3. 10 1
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/CollegeOrgController.java
  4. 10 1
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/CollegePositionController.java
  5. 38 1
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/CollegeUserController.java
  6. 3 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/CollegeUserService.java
  7. 1 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/CollegeOrgServiceImpl.java
  8. 124 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/CollegeUserServiceImpl.java
  9. 266 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/util/HttpRequest.java
  10. 2 0
      snowy-plugin/snowy-plugin-sys/snowy-plugin-sys-func/src/main/java/vip/xiaonuo/sys/modular/position/entity/SysPosition.java
  11. 0 1
      snowy-plugin/snowy-plugin-sys/snowy-plugin-sys-func/src/main/java/vip/xiaonuo/sys/modular/user/entity/SysUser.java
  12. 2 1
      snowy-server/snowy-gateway-app/src/main/java/vip/xiaonuo/gateway/config/GatewayConfigure.java

+ 2 - 1
snowy-modules/snowy-web-app/src/main/java/vip/xiaonuo/web/core/config/GlobalConfigure.java

@@ -193,7 +193,8 @@ public class GlobalConfigure implements WebMvcConfigurer {
             "/auth/b/doBLogin",
             "/disk/CollegeUser/add",
             "/disk/CollegeOrg/add",
-            "/disk/CollegePosition/add"
+            "/disk/CollegePosition/add",
+            "/disk/CollegeUser/getUser"
     };
 
     /**

+ 4 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/pom.xml

@@ -107,6 +107,10 @@
             <groupId>vip.xiaonuo</groupId>
             <artifactId>snowy-plugin-dev-func</artifactId>
         </dependency>
+        <dependency>
+            <groupId>vip.xiaonuo</groupId>
+            <artifactId>snowy-plugin-auth-func</artifactId>
+        </dependency>
 
         <!-- 引入开发工具接口,用于配置信息 -->
         <dependency>

+ 10 - 1
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/CollegeOrgController.java

@@ -13,6 +13,7 @@
 package vip.xiaonuo.disk.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.github.xiaoymin.knife4j.annotations.ApiSupport;
@@ -33,6 +34,7 @@ import vip.xiaonuo.disk.param.collegeOrg.CollegeOrgAddParam;
 import vip.xiaonuo.disk.param.collegeOrg.CollegeOrgEditParam;
 import vip.xiaonuo.disk.param.collegeOrg.CollegeOrgIdParam;
 import vip.xiaonuo.disk.param.collegeOrg.CollegeOrgPageParam;
+import vip.xiaonuo.disk.param.collegeUser.CollegeUserAddParam;
 import vip.xiaonuo.disk.service.CollegeOrgService;
 
 
@@ -40,6 +42,7 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.validation.Valid;
 import javax.validation.constraints.NotEmpty;
+import java.util.List;
 
 /**
  * 下发组织日志表控制器
@@ -84,10 +87,16 @@ public class CollegeOrgController {
     @ApiOperation("添加下发组织日志表")
     @CommonLog("添加下发组织日志表")
     @PostMapping("/disk/CollegeOrg/add")
-    public CommonResult<String> add(@RequestBody @Valid CollegeOrgAddParam collegeOrgAddParam, HttpServletRequest httpServletRequest) {
+    public CommonResult<String> add(@RequestBody @Valid List<CollegeOrgAddParam> collegeOrgAddParamList, HttpServletRequest httpServletRequest) {
         CommonResult<String> rs=authUtil.valid(httpServletRequest);
         try {
             if(rs.getCode().equals(200)){
+                if(CollectionUtil.isEmpty(collegeOrgAddParamList)){
+                    log.info("=================下发组织数据为空===================");
+                    return CommonResult.ok("下发组织数据为空");
+                }
+                CollegeOrgAddParam collegeOrgAddParam=collegeOrgAddParamList.get(0);
+
                 collegeOrgService.add(collegeOrgAddParam);
                 return CommonResult.ok("下发组织数据成功");
             }

+ 10 - 1
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/CollegePositionController.java

@@ -13,6 +13,7 @@
 package vip.xiaonuo.disk.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.github.xiaoymin.knife4j.annotations.ApiSupport;
@@ -29,6 +30,7 @@ import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.common.pojo.CommonValidList;
 import vip.xiaonuo.common.util.AuthUtil;
 import vip.xiaonuo.disk.domain.CollegePosition;
+import vip.xiaonuo.disk.param.collegeOrg.CollegeOrgAddParam;
 import vip.xiaonuo.disk.param.collegePosition.CollegePositionAddParam;
 import vip.xiaonuo.disk.param.collegePosition.CollegePositionEditParam;
 import vip.xiaonuo.disk.param.collegePosition.CollegePositionIdParam;
@@ -40,6 +42,7 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.validation.Valid;
 import javax.validation.constraints.NotEmpty;
+import java.util.List;
 
 /**
  * 下发岗位日志表控制器
@@ -82,10 +85,16 @@ public class CollegePositionController {
     @ApiOperation("添加下发岗位日志表")
     @CommonLog("添加下发岗位日志表")
     @PostMapping("/disk/CollegePosition/add")
-    public CommonResult<String> add(@RequestBody @Valid CollegePositionAddParam collegePositionAddParam, HttpServletRequest httpServletRequest) {
+    public CommonResult<String> add(@RequestBody @Valid List<CollegePositionAddParam> collegePositionAddParamList, HttpServletRequest httpServletRequest) {
         CommonResult<String> rs=authUtil.valid(httpServletRequest);
         try {
             if(rs.getCode().equals(200)){
+                if(CollectionUtil.isEmpty(collegePositionAddParamList)){
+                    log.info("=================下发岗位数据为空===================");
+                    return CommonResult.ok("下发岗位数据为空");
+                }
+                CollegePositionAddParam collegePositionAddParam=collegePositionAddParamList.get(0);
+
                 collegePositionService.add(collegePositionAddParam);
                 return CommonResult.ok("下发岗位数据成功");
             }

+ 38 - 1
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/CollegeUserController.java

@@ -13,17 +13,23 @@
 package vip.xiaonuo.disk.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.collection.CollectionUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.github.xiaoymin.knife4j.annotations.ApiSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.servlet.ModelAndView;
 import vip.xiaonuo.common.annotation.CommonLog;
 import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.common.pojo.CommonValidList;
@@ -34,12 +40,16 @@ import vip.xiaonuo.disk.param.collegeUser.CollegeUserEditParam;
 import vip.xiaonuo.disk.param.collegeUser.CollegeUserIdParam;
 import vip.xiaonuo.disk.param.collegeUser.CollegeUserPageParam;
 import vip.xiaonuo.disk.service.CollegeUserService;
+import vip.xiaonuo.disk.util.HttpRequest;
 
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.validation.Valid;
 import javax.validation.constraints.NotEmpty;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * 下发用户日志表控制器
@@ -54,6 +64,8 @@ import javax.validation.constraints.NotEmpty;
 @Validated
 public class CollegeUserController {
 
+
+
     @Resource
     private CollegeUserService collegeUserService;
     @Resource
@@ -82,10 +94,16 @@ public class CollegeUserController {
     @ApiOperation("添加下发用户日志表")
     @CommonLog("添加下发用户日志表")
     @PostMapping("/disk/CollegeUser/add")
-    public CommonResult<String> add(@RequestBody @Valid CollegeUserAddParam collegeUserAddParam, HttpServletRequest httpServletRequest) {
+    public CommonResult<String> add(@RequestBody @Valid List<CollegeUserAddParam> collegeUserAddParamList, HttpServletRequest httpServletRequest) {
         CommonResult<String> rs=authUtil.valid(httpServletRequest);
         try {
             if(rs.getCode().equals(200)){
+                if(CollectionUtil.isEmpty(collegeUserAddParamList)){
+                    log.info("=================下发用户数据为空===================");
+                    return CommonResult.ok("下发用户数据为空");
+                }
+                CollegeUserAddParam collegeUserAddParam=collegeUserAddParamList.get(0);
+
                 collegeUserService.add(collegeUserAddParam);
                 return CommonResult.ok("下发用户数据成功");
             }
@@ -143,4 +161,23 @@ public class CollegeUserController {
         return CommonResult.data(collegeUserService.detail(collegeUserIdParam));
     }
 
+
+    /**
+     * 根据code获取用户信息
+     * @param httpServletRequest
+     * @return
+     */
+    @ApiOperationSupport(order = 5)
+    @ApiOperation("根据code获取用户信息")
+    @GetMapping("/disk/CollegeUser/getUser")
+    public CommonResult<String> getUser(HttpServletRequest httpServletRequest) {
+        //根据用户信息生成自己系统的token
+        try {
+            CommonResult<String> rs=collegeUserService.getUser(httpServletRequest);
+            return CommonResult.ok(rs.getMsg());
+        } catch (Exception e) {
+            return CommonResult.error("根据code获取用户信息失败========================》"+e.getMessage());
+        }
+    }
+
 }

+ 3 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/CollegeUserService.java

@@ -14,6 +14,7 @@ package vip.xiaonuo.disk.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.disk.domain.CollegeUser;
 import vip.xiaonuo.disk.param.collegeUser.CollegeUserAddParam;
 import vip.xiaonuo.disk.param.collegeUser.CollegeUserEditParam;
@@ -21,6 +22,7 @@ import vip.xiaonuo.disk.param.collegeUser.CollegeUserIdParam;
 import vip.xiaonuo.disk.param.collegeUser.CollegeUserPageParam;
 
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.List;
 
 /**
@@ -79,4 +81,5 @@ public interface CollegeUserService extends IService<CollegeUser> {
      **/
     CollegeUser queryEntity(String id);
 
+    CommonResult<String> getUser(HttpServletRequest httpServletRequest);
 }

+ 1 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/CollegeOrgServiceImpl.java

@@ -14,6 +14,7 @@ package vip.xiaonuo.disk.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;

+ 124 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/CollegeUserServiceImpl.java

@@ -12,22 +12,34 @@
  */
 package vip.xiaonuo.disk.service.impl;
 
+import cn.dev33.satoken.stp.SaLoginModel;
+import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.auth.api.SaBaseLoginUserApi;
+import vip.xiaonuo.auth.core.pojo.SaBaseLoginUser;
+import vip.xiaonuo.auth.modular.login.enums.AuthDeviceTypeEnum;
+import vip.xiaonuo.auth.modular.login.enums.AuthExceptionEnum;
+import vip.xiaonuo.common.cache.CommonCacheOperator;
 import vip.xiaonuo.common.enums.CommonSortOrderEnum;
 import vip.xiaonuo.common.exception.CommonException;
 import vip.xiaonuo.common.page.CommonPageRequest;
+import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.disk.domain.CollegeUser;
 import vip.xiaonuo.disk.mapper.CollegeUserMapper;
 import vip.xiaonuo.disk.param.collegeUser.CollegeUserAddParam;
@@ -35,14 +47,18 @@ import vip.xiaonuo.disk.param.collegeUser.CollegeUserEditParam;
 import vip.xiaonuo.disk.param.collegeUser.CollegeUserIdParam;
 import vip.xiaonuo.disk.param.collegeUser.CollegeUserPageParam;
 import vip.xiaonuo.disk.service.CollegeUserService;
+import vip.xiaonuo.disk.util.HttpRequest;
 import vip.xiaonuo.sys.modular.user.entity.SysUser;
 import vip.xiaonuo.sys.modular.user.mapper.SysUserMapper;
 
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
 
 /**
  * 下发用户日志表Service接口实现类
@@ -54,10 +70,27 @@ import java.util.concurrent.atomic.AtomicInteger;
 @Service
 public class CollegeUserServiceImpl extends ServiceImpl<CollegeUserMapper, CollegeUser> implements CollegeUserService {
 
+
+    private static final String LOGIN_ERROR_TIMES_KEY_PREFIX = "login-error-times:";
+    @Value("${sso.url}")
+    private  String ssoUrl;
+
+    @Value("${sso.APP_ID_TT}")
+    private  String APP_ID_TT;
+
+    @Value("${sso.PRIVATE_KEY_TT}")
+    private  String PRIVATE_KEY_TT;
+
+    @Resource
+    private CommonCacheOperator commonCacheOperator;
+
     private AtomicInteger userAddCounter = new AtomicInteger(0);
 
     @Resource
     private  SysUserMapper sysUserMapper;
+
+    @Resource(name = "loginUserApi")
+    private SaBaseLoginUserApi loginUserApi;
     @Override
     public Page<CollegeUser> page(CollegeUserPageParam collegeUserPageParam) {
         QueryWrapper<CollegeUser> queryWrapper = new QueryWrapper<>();
@@ -179,4 +212,95 @@ public class CollegeUserServiceImpl extends ServiceImpl<CollegeUserMapper, Colle
         return collegeUser;
     }
 
+    @Override
+    public CommonResult<String> getUser(HttpServletRequest httpServletRequest) {
+        //根据code获取token
+        String code = httpServletRequest.getParameter("code");
+        String url = ssoUrl+ "/oauth2/oauth/token";
+        String key = APP_ID_TT;
+
+        String grant_type ="authorization_code";
+        String secret = PRIVATE_KEY_TT;
+        HashMap<String,String> param = new HashMap<String,String>(2);
+
+        //资源认证服务器地址
+        param.put("code",code);
+        param.put("grant_type",grant_type);
+
+
+        log.info("根据code获取token请求参数============"+param.toString());
+
+        String mapflag= HttpRequest.sendForm(url,param,key,secret);
+        JSONObject jsonmsg = JSONObject.parseObject(mapflag);
+        String token =  jsonmsg.getString("access_token");
+
+
+        //根据token获取用户信息请求参数
+        JSONObject paramUser = new JSONObject();
+        paramUser.put("token",token);
+        paramUser.put("key",key);
+        paramUser.put("secret",secret);
+        String userUrl = ssoUrl+"/resourcesb/resources/index";
+
+        log.info("根据token获取用户信息请求参数============"+paramUser.toString());
+
+
+        String rs = HttpRequest.sendPost(userUrl, paramUser.toString());
+        JSONObject userRs = JSONObject.parseObject(rs);
+
+        JSONObject user=userRs.getJSONObject("data");
+        String account=user.getString("iamUserCode");
+
+        SaBaseLoginUser saBaseLoginUser = loginUserApi.getUserByAccount(account);
+
+        if(ObjectUtil.isEmpty(saBaseLoginUser)){
+            return CommonResult.error("用户不存在");
+        }
+        // 删除redis 中的key
+        clearLoginErrorTimes(account);
+
+        String selftoken=execLoginB(saBaseLoginUser, AuthDeviceTypeEnum.PC.getValue());
+
+        return  CommonResult.ok(selftoken);
+    }
+
+    private String execLoginB(SaBaseLoginUser saBaseLoginUser, String device) {
+        // 校验状态
+        if(!saBaseLoginUser.getEnabled()) {
+            throw new CommonException(AuthExceptionEnum.ACCOUNT_DISABLED.getValue());
+        }
+        // 执行登录
+        StpUtil.login(saBaseLoginUser.getId(), new SaLoginModel().setDevice(device).setExtra("name", saBaseLoginUser.getName()));
+        // 角色集合
+        List<cn.hutool.json.JSONObject> roleList = loginUserApi.getRoleListByUserId(saBaseLoginUser.getId());
+        // 角色id集合
+        List<String> roleIdList = roleList.stream().map(jsonObject -> jsonObject.getStr("id")).collect(Collectors.toList());
+        // 角色码集合
+        List<String> roleCodeList = roleList.stream().map(jsonObject -> jsonObject.getStr("code")).collect(Collectors.toList());
+        // 角色id和用户id集合
+        List<String> userAndRoleIdList = CollectionUtil.unionAll(roleIdList, CollectionUtil.newArrayList(saBaseLoginUser.getId()));
+        // 获取按钮码
+        saBaseLoginUser.setButtonCodeList(loginUserApi.getButtonCodeListListByUserAndRoleIdList(userAndRoleIdList));
+        // 获取移动端按钮码
+        saBaseLoginUser.setMobileButtonCodeList(loginUserApi.getMobileButtonCodeListListByUserIdAndRoleIdList(userAndRoleIdList));
+        // 获取数据范围
+        saBaseLoginUser.setDataScopeList(Convert.toList(SaBaseLoginUser.DataScope.class,
+                loginUserApi.getPermissionListByUserIdAndRoleIdList(userAndRoleIdList, saBaseLoginUser.getOrgId())));
+        // 获取权限码
+        saBaseLoginUser.setPermissionCodeList(saBaseLoginUser.getDataScopeList().stream()
+                .map(SaBaseLoginUser.DataScope::getApiUrl).collect(Collectors.toList()));
+        // 获取角色码
+        saBaseLoginUser.setRoleCodeList(roleCodeList);
+        // 缓存用户信息,此处使用TokenSession为了指定时间内无操作则自动下线
+        StpUtil.getTokenSession().set("loginUser", saBaseLoginUser);
+        // 返回token
+        return StpUtil.getTokenInfo().tokenValue;
+    }
+
+    private void clearLoginErrorTimes(String userAccount) {
+        String loginErrorKey = LOGIN_ERROR_TIMES_KEY_PREFIX + userAccount;
+        // 删除redis中的key
+        commonCacheOperator.remove(loginErrorKey);
+    }
+
 }

+ 266 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/util/HttpRequest.java

@@ -0,0 +1,266 @@
+package vip.xiaonuo.disk.util;
+import com.alibaba.fastjson.JSONObject;
+import org.apache.http.HttpResponse;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.util.EntityUtils;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.*;
+
+public class HttpRequest {
+
+    /**
+     * 向指定URL发送GET方法的请求
+     *
+     * @param url
+     *            发送请求的URL
+     * @param param
+     *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
+     * @return URL 所代表远程资源的响应结果
+     */
+    public static String sendGet(String url, String param) {
+        String result = "";
+        BufferedReader in = null;
+        try {
+            String urlNameString = url + "?" + param;
+            URL realUrl = new URL(urlNameString);
+            // 打开和URL之间的连接
+            URLConnection connection = realUrl.openConnection();
+            // 设置通用的请求属性
+            connection.setRequestProperty("accept", "*/*");
+            connection.setRequestProperty("connection", "Keep-Alive");
+            connection.setRequestProperty("user-agent",
+                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+            // 建立实际的连接
+            connection.connect();
+//            // 获取所有响应头字段
+//            Map<String, List<String>> map = connection.getHeaderFields();
+//            // 遍历所有的响应头字段
+//            for (String key : map.keySet()) {
+//                System.out.println(key + "--->" + map.get(key));
+//            }
+            // 定义 BufferedReader输入流来读取URL的响应
+            in = new BufferedReader(new InputStreamReader(
+                    connection.getInputStream()));
+            String line;
+            while ((line = in.readLine()) != null) {
+                result += line;
+            }
+        } catch (Exception e) {
+            System.out.println("发送GET请求出现异常!" + e);
+            e.printStackTrace();
+        }
+        // 使用finally块来关闭输入流
+        finally {
+            try {
+                if (in != null) {
+                    in.close();
+                }
+            } catch (Exception e2) {
+                e2.printStackTrace();
+            }
+        }
+        return result;
+    }
+
+    /**
+     * 向指定 URL 发送POST方法的请求
+     *
+     * @param url
+     *            发送请求的 URL
+     * @param param
+     *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
+     * @return 所代表远程资源的响应结果
+     */
+    public static String sendPost(String url, String param) {
+        PrintWriter out = null;
+        BufferedReader in = null;
+        String result = "";
+        try {
+            URL realUrl = new URL(url);
+            // 打开和URL之间的连接
+            URLConnection conn = realUrl.openConnection();
+            // 设置通用的请求属性
+            conn.setRequestProperty("accept", "*/*");
+            conn.setRequestProperty("connection", "Keep-Alive");
+            conn.setRequestProperty("Content-Type", "application/json");
+
+            conn.setRequestProperty("user-agent",
+                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+            // 发送POST请求必须设置如下两行
+            conn.setDoOutput(true);
+            conn.setDoInput(true);
+            // 获取URLConnection对象对应的输出流
+            out = new PrintWriter(conn.getOutputStream());
+            // 发送请求参数
+            out.print(param);
+            // flush输出流的缓冲
+            out.flush();
+            // 定义BufferedReader输入流来读取URL的响应
+            in = new BufferedReader(
+                    new InputStreamReader(conn.getInputStream()));
+            String line;
+            while ((line = in.readLine()) != null) {
+                result += line;
+            }
+        } catch (Exception e) {
+            System.out.println("发送 POST 请求出现异常!" + e);
+            e.printStackTrace();
+        }
+        //使用finally块来关闭输出流、输入流
+        finally {
+            try {
+                if (out != null) {
+                    out.close();
+                }
+                if (in != null) {
+                    in.close();
+                }
+            } catch (IOException ex) {
+                ex.printStackTrace();
+            }
+        }
+        return result;
+    }
+
+    public static String send(String uri,JSONObject obj) {
+        try {
+            HttpClient httpclient = new DefaultHttpClient();
+            HttpPost httppost = new HttpPost(uri);
+            //添加http头信息
+            httppost.addHeader("Authorization", "Basic Auth"); //认证token
+            httppost.addHeader("Content-Type", "application/json");
+            httppost.addHeader("User-Agent", "imgfornote");
+            httppost.setEntity(new StringEntity(obj.toString()));
+            HttpResponse response;
+            response = httpclient.execute(httppost);
+
+            String rev = EntityUtils.toString(response.getEntity());//返回json格式: {"id": "","name": ""}
+            //System.out.println("返回数据==="+rev);
+            return rev;
+
+        } catch (ClientProtocolException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    public static String sendForm(String uri, HashMap<String, String> map, String key, String secret) {
+        try {
+            HttpClient httpclient = new DefaultHttpClient();
+            HttpPost httppost = new HttpPost(uri);
+            //添加http头信息
+            httppost.addHeader("Authorization", getHeader(key,secret)); //认证token
+            httppost.setHeader("Connection", "Keep-Alive");
+            httppost.setHeader("Charset", "UTF-8");
+            httppost.setHeader("Content-Type", "application/x-www-form-urlencoded");
+            Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
+            List<NameValuePair> params = new ArrayList<NameValuePair>();
+            while (it.hasNext()) {
+                Map.Entry<String, String> entry = it.next();
+                NameValuePair pair = new BasicNameValuePair(entry.getKey(), entry.getValue());
+                params.add(pair);
+            }
+            httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
+            HttpResponse response;
+            response = httpclient.execute(httppost);
+            String rev = EntityUtils.toString(response.getEntity());//返回json格式: {"id": "","name": ""}
+            System.out.println("返回数据==="+rev);
+            return rev;
+        } catch (ClientProtocolException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    public static String sendBash(String uri,String obj,String key,String secret) {
+        try {
+            HttpClient httpclient = new DefaultHttpClient();
+            HttpPost httppost = new HttpPost(uri);
+            //添加http头信息
+            httppost.addHeader("Authorization", getHeader(key,secret)); //认证token
+            httppost.addHeader("Content-Type", "application/json");
+            httppost.setEntity(new StringEntity(obj));
+
+            HttpResponse response;
+            response = httpclient.execute(httppost);
+
+            String rev = EntityUtils.toString(response.getEntity());//返回json格式: {"id": "","name": ""}
+           System.out.println("返回数据==="+rev);
+            return rev;
+
+        } catch (ClientProtocolException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+    /**
+     * 构造Basic Auth认证头信息
+     *
+     * @return
+     */
+    public static String getHeader(String username, String password) {
+       /* String auth = key + ":" + secret;
+        byte[] encodedAuth = Base64.encodeBase64(auth.getBytes(Charset.forName("US-ASCII")));
+        String authHeader = "Basic " + new String(encodedAuth);*/
+        String authHeader = "Basic " + Base64.getUrlEncoder().encodeToString((username + ":" + password).getBytes());
+
+        return authHeader;
+    }
+
+    public static String sendA(String uri,JSONObject obj) {
+        try {
+            HttpClient httpclient = new DefaultHttpClient();
+            HttpPost httppost = new HttpPost(uri);
+            //添加http头信息
+            httppost.addHeader("Authorization", "Basic Auth"); //认证token
+            httppost.addHeader("Content-Type", "application/json");
+            httppost.addHeader("User-Agent", "imgfornote");
+            httppost.setEntity(new StringEntity(obj.toString()));
+            HttpResponse response;
+            response = httpclient.execute(httppost);
+
+            String rev = EntityUtils.toString(response.getEntity());//返回json格式: {"id": "","name": ""}
+            //System.out.println("返回数据==="+rev);
+            return rev;
+
+        } catch (ClientProtocolException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+
+    public static void main(String[] args) {
+        System.out.println(getHeader("APIb23c423da2fe4b0285a5b23f8003fed0","iamrErzAdrnOExSvWbpUSIM"));
+    }
+
+}

+ 2 - 0
snowy-plugin/snowy-plugin-sys/snowy-plugin-sys-func/src/main/java/vip/xiaonuo/sys/modular/position/entity/SysPosition.java

@@ -68,8 +68,10 @@ public class SysPosition extends CommonEntity {
     @ApiModelProperty(value = "是否是资源库特殊账号,0否1是")
     @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
     private String isResourceaccount;
+
     /**  状态(0正常;1停用)*/
     private String status;
+
     /** 备注 */
     private String remark;
 

+ 0 - 1
snowy-plugin/snowy-plugin-sys/snowy-plugin-sys-func/src/main/java/vip/xiaonuo/sys/modular/user/entity/SysUser.java

@@ -354,5 +354,4 @@ public class SysUser extends CommonEntity {
     private String userType;
     /** 岗位编码 */
     private String postCode;
-
 }

+ 2 - 1
snowy-server/snowy-gateway-app/src/main/java/vip/xiaonuo/gateway/config/GatewayConfigure.java

@@ -160,7 +160,8 @@ public class GatewayConfigure {
             "/api/webapp/auth/b/doBLogin",
             "/api/webapp/disk/CollegeUser/add",
             "/api/webapp/disk/CollegeOrg/add",
-            "/api/webapp/disk/CollegePosition/add"
+            "/api/webapp/disk/CollegePosition/add",
+            "/api/webapp/disk/CollegeUser/getUser"
     };
 
     /**