Pārlūkot izejas kodu

修改登录接口

Redeem 2 gadi atpakaļ
vecāks
revīzija
c7ad1fb135

+ 14 - 1
src/main/java/com/steerinfo/dil/config/RequestFilter.java

@@ -25,12 +25,14 @@ public class RequestFilter implements Filter {
     public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {
        try{
            HttpServletRequest httpRequest = (HttpServletRequest) request;
+           String url = httpRequest.getRequestURL().toString();
            //获取参数,并校验
            Cookie[] cookies = httpRequest.getCookies();
            String userId = httpRequest.getHeader("userid");
            String userName = httpRequest.getHeader("username");
            String orgCode = httpRequest.getHeader("orgcode");
            String roleCodes = httpRequest.getHeader("rolecodes");
+           String dilCompanyList = httpRequest.getHeader("dilCompanyList");
            //获取cookie用户数据
            if (cookies != null && cookies.length > 0) {
                for (Cookie cookie : cookies) {
@@ -42,7 +44,10 @@ public class RequestFilter implements Filter {
                        orgCode = URLDecoder.decode(cookie.getValue(), "utf-8");
                    } else if (cookie.getName().equals("roleCodes") && roleCodes == null) {
                        roleCodes = URLDecoder.decode(cookie.getValue(), "utf-8");
-                   }else if (userId != null && userName != null && orgCode != null && roleCodes != null) {
+                   } else if (cookie.getName().equals("dilCompanyList") && dilCompanyList == null) {
+                       dilCompanyList = URLDecoder.decode(cookie.getValue(),"utf-8");
+                   }
+                   else if (userId != null && userName != null && orgCode != null && roleCodes != null && dilCompanyList != null) {
                        //都查到了,退出
                        break;
                    }
@@ -52,11 +57,17 @@ public class RequestFilter implements Filter {
                userName = URLDecoder.decode(userName, "utf-8");
                orgCode = URLDecoder.decode(orgCode, "utf-8");
                roleCodes = URLDecoder.decode(roleCodes, "utf-8");
+               dilCompanyList = URLDecoder.decode(dilCompanyList,"UTF-8");
+
+
+               //System.out.println(dilCompanyList.getClass().toString());
            }catch (Exception e){}
            httpRequest.setAttribute("userId", userId);
            httpRequest.setAttribute("userName", userName);
            httpRequest.setAttribute("orgCode", orgCode);
            httpRequest.setAttribute("roleCodes", roleCodes);
+           Object dilCompanyListObject = JSONObject.parse(dilCompanyList);
+           httpRequest.setAttribute("dilCompanyList",dilCompanyListObject);;
            //获取RequestBody数据
            BufferedReader streamReader = new BufferedReader(new InputStreamReader(request.getInputStream(), "UTF-8"));
            StringBuilder strBuilder = new StringBuilder();
@@ -71,10 +82,12 @@ public class RequestFilter implements Filter {
                params.put("userName", userName);
                params.put("orgCode", orgCode);
                params.put("roleCodes",roleCodes);
+               params.put("dilCompanyList",dilCompanyListObject);
                //将新的RequestBody写入新的请求对象保存
                ServletRequest requestWrapper = new RequestWrapper(httpRequest, params.toJSONString());
                chain.doFilter(requestWrapper, response);
            } else {
+
                chain.doFilter(request, response);
            }
        } catch (Exception e) {

+ 2 - 1
src/main/java/com/steerinfo/dil/config/SessionInterceptor.java

@@ -34,7 +34,8 @@ public class SessionInterceptor extends HandlerInterceptorAdapter {
     @Override
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
         HandlerMethod hm = (HandlerMethod) handler;
-        if(request.getAttribute("userId")==null || request.getAttribute("userName")==null){
+        String requestUrl = "" + request.getRequestURL();
+        if(!requestUrl.contains("/api/v1/bp/bpLogin") && (request.getAttribute("userId")==null || request.getAttribute("userName")==null)){
             //无权访问
             response.setCharacterEncoding("UTF-8");
             response.setContentType("application/json; charset=utf-8");

+ 28 - 8
src/main/java/com/steerinfo/dil/controller/BackgroundProcessingController.java

@@ -12,13 +12,12 @@ import com.steerinfo.framework.controller.RESTfulResult;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+import com.steerinfo.dil.util.SSOUtil;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -42,13 +41,34 @@ public class BackgroundProcessingController extends BaseRESTfulController {
     @Autowired
     private UniversalMapper universalMapper;
 
+    @Resource
+    SSOUtil ssoUtil;
 
     @ApiOperation("登录接口")
     @PostMapping("bpLogin")
-    public RESTfulResult bpLogin(String userName,String password,String app_code) {
-
-        //backgroundProcessingService.bpLogin();
-        return success();
+    public Map<String,Object> bpLogin(@RequestParam String loginName, @RequestParam String password,  @RequestParam String app_code) {
+        Map<String,Object> resMap = ssoUtil.individualLogin(loginName,password,app_code);
+        if("succeed".equals(resMap.get("status"))) {
+            Map<String, Object> dataMap = (Map<String, Object>) resMap.get("data");
+            Map<String, Object> userInfo = (Map<String, Object>) dataMap.get("user");
+            // 根据用户名去查询该用户绑定的公司及下属公司
+            List<Map<String, Object>> companyList = backgroundProcessingMapper.getCompanyList(loginName);
+            userInfo.put("dilCompanyList", companyList);
+            // 根据查询到的公司ID
+            //System.out.println(userInfo);
+            //// 获取机构
+            //List<Map<String,Object>> sysOrgs = (List<Map<String,Object>>) userInfo.get("sysOrgs");
+            //String orgName = sysOrgs.get(0).get("orgName").toString();
+            //// 获取角色
+            //List<Map<String,Object>> sysRoles = (List<Map<String,Object>>) userInfo.get("sysOrgs");
+            //for(Map<String,Object> sysMap : sysRoles) {
+            //    String roleName = sysMap.get("roleName").toString();
+            //    //根据orgName和roleName去查询companyId
+            //    Map<String,Object> map = backgroundProcessingMapper.selectCompanyId(orgName,roleName);
+            //}
+            System.out.println(dataMap);
+        }
+        return resMap;
     }
 
 

+ 1 - 0
src/main/java/com/steerinfo/dil/controller/UniversalController.java

@@ -135,6 +135,7 @@ public class UniversalController extends BaseRESTfulController {
         List<Map<String, Object>> list = universalMapper.getLineByLike(map);
         return success(list);
     }
+
     @ApiOperation("上传文件通用方法,返回成功后的url")
     @PostMapping("/uploadFile")
     public RESTfulResult uploadFile(MultipartRequest request) throws Exception {

+ 2 - 1
src/main/java/com/steerinfo/dil/feign/SSOFeign.java

@@ -19,7 +19,8 @@ public interface SSOFeign {
      */
     @PostMapping("/auth/login")
     JSONObject login(@RequestParam String loginName,
-                     @RequestParam String password);
+                     @RequestParam String password,
+                     @RequestParam String app_code);
 
     /**
      * 新增用户

+ 4 - 0
src/main/java/com/steerinfo/dil/mapper/BackgroundProcessingMapper.java

@@ -84,4 +84,8 @@ public interface BackgroundProcessingMapper {
 
     List<Map<String, Object>> getCapacityList(BigDecimal personnelId);
 
+    Map<String, Object> selectCompanyId(String orgName, String roleName);
+
+    List<Map<String,Object>> getCompanyList(String userName);
+
 }

+ 6 - 1
src/main/java/com/steerinfo/dil/util/BaseRESTfulController.java

@@ -39,8 +39,8 @@ public class BaseRESTfulController extends BaseController {
 
     protected RESTfulResult success(Object obj, String code, String msg) {
         RESTfulResult result = this.success(obj, msg);
-        result.setCode(code);
         result.setCode("200");
+        result.setCode(code);
         return result;
     }
 
@@ -67,4 +67,9 @@ public class BaseRESTfulController extends BaseController {
         result.setCode(code);
         return result;
     }
+
+    protected RESTfulResult loginFailed(String msg) {
+        RESTfulResult result = new RESTfulResult("500",msg);
+        return result;
+    }
 }

+ 145 - 130
src/main/java/com/steerinfo/dil/util/SSOUtil.java

@@ -1,130 +1,145 @@
-//package com.steerinfo.dil.util;
-//
-//import com.alibaba.fastjson.JSONObject;
-//import com.steerinfo.dil.feign.SSOFeign;
-//import org.apache.log4j.Logger;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.beans.factory.annotation.Value;
-//import org.springframework.stereotype.Component;
-//
-//@Component
-//public class SSOUtil {
-//
-//    @Autowired
-//    private SSOFeign ssoFeign;
-//
-//    static final Logger log = Logger.getLogger(SSOUtil.class);
-//
-//
-//    @Value(value = "${sso.userName}" )
-//    private String userName;
-//
-//    @Value(value = "${sso.password}" )
-//    private String password;
-//
-//    @Value(value = "${sso.orgId}" )
-//    private String orgId;
-//
-//    @Value(value = "${sso.groupId}" )
-//    private String groupId;
-//
-//    @Value(value = "${sso.companyId}" )
-//    private String companyId;
-//
-//    /**
-//     * 登录并返回token
-//     * @return
-//     */
-//    public  String login(){
-//        try{
-//            JSONObject result = ssoFeign.login(userName,password);
-//            String token = result.getJSONObject("data").getString("accessToken");
-//            log.debug(token);
-//            return  token;
-//        }catch (Exception e){
-//            e.printStackTrace();
-//            log.error("登录SSO失败!"+e.getMessage());
-//        }
-//        return null;
-//    }
-//
-//    /**
-//     * 新增SSO用户
-//     * @return
-//     */
-//    public  JSONObject addUser(String userName,String userCode ,String orgName,String orgCode){
-//        try{
-//            String token = login();
-//            if(token == null){
-//                throw new Exception("登录SSO失败,无法新增角色!");
-//            }
-//            JSONObject result =  ssoFeign.addUser(token,userName,userCode,orgName,orgCode,groupId,companyId,orgId);
-//            log.debug(result);
-//            return result;
-//        }catch (Exception e){
-//            e.printStackTrace();
-//            log.error("登录SSO失败!"+e.getMessage());
-//        }
-//        return null;
-//    }
-//
-//    /**
-//     * 删除SSO用户
-//     * @return
-//     */
-//    public  JSONObject deleteUser(String userId){
-//        try{
-//            String token = login();
-//            if(token == null){
-//                throw new Exception("登录SSO失败,无法新增角色!");
-//            }
-//            JSONObject result =  ssoFeign.deleteUser(token,userId);
-//            log.debug(result);
-//            return result;
-//        }catch (Exception e){
-//            e.printStackTrace();
-//            log.error("登录SSO失败!"+e.getMessage());
-//        }
-//        return null;
-//    }
-//
-//    /**
-//     * 查询SSO角色
-//     * @return
-//     */
-//    public  JSONObject getRolesUser(){
-//        try{
-//            String token = login();
-//            if(token == null){
-//                throw new Exception("登录SSO失败!");
-//            }
-//            JSONObject result =  ssoFeign.getRolesUser(token,companyId);
-//            log.debug(result);
-//            return result;
-//        }catch (Exception e){
-//            e.printStackTrace();
-//            log.error("登录SSO失败!"+e.getMessage());
-//        }
-//        return null;
-//    }
-//
-//    /**
-//     * 授权SSO用户
-//     * @return
-//     */
-//    public  JSONObject addUserroles(String userId ,String userCode,String roleId){
-//        try{
-//            String token = login();
-//            if(token == null){
-//                throw new Exception("登录SSO失败,无法新增角色!");
-//            }
-//            JSONObject result =  ssoFeign.addUserroles(token,userId,userCode,roleId);
-//            log.debug(result);
-//            return result;
-//        }catch (Exception e){
-//            e.printStackTrace();
-//            log.error("登录SSO失败!"+e.getMessage());
-//        }
-//        return null;
-//    }
-//}
+package com.steerinfo.dil.util;
+
+import com.alibaba.fastjson.JSONObject;
+import com.steerinfo.dil.feign.SSOFeign;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Component
+public class SSOUtil {
+
+    @Autowired
+    private SSOFeign ssoFeign;
+
+    static final Logger log = Logger.getLogger(SSOUtil.class);
+
+
+    @Value(value = "${sso.userName}" )
+    private String userName;
+
+    @Value(value = "${sso.password}" )
+    private String password;
+
+    @Value(value = "${sso.orgId}" )
+    private String orgId;
+
+    @Value(value = "${sso.groupId}" )
+    private String groupId;
+
+    @Value(value = "${sso.companyId}" )
+    private String companyId;
+
+    /**
+     * 登录并返回token
+     * @return
+     */
+    public  String login(){
+        try{
+            JSONObject result = ssoFeign.login(userName,password,"web");
+            String token = result.getJSONObject("data").getString("accessToken");
+            log.debug(token);
+            return  token;
+        }catch (Exception e){
+            e.printStackTrace();
+            log.error("登录SSO失败!"+e.getMessage());
+        }
+        return null;
+    }
+
+    /**
+     * 新增SSO用户
+     * @return
+     */
+    public  JSONObject addUser(String userName,String userCode ,String orgName,String orgCode){
+        try{
+            String token = login();
+            if(token == null){
+                throw new Exception("登录SSO失败,无法新增角色!");
+            }
+            JSONObject result =  ssoFeign.addUser(token,userName,userCode,orgName,orgCode,groupId,companyId,orgId);
+            log.debug(result);
+            return result;
+        }catch (Exception e){
+            e.printStackTrace();
+            log.error("登录SSO失败!"+e.getMessage());
+        }
+        return null;
+    }
+
+    /**
+     * 删除SSO用户
+     * @return
+     */
+    public  JSONObject deleteUser(String userId){
+        try{
+            String token = login();
+            if(token == null){
+                throw new Exception("登录SSO失败,无法新增角色!");
+            }
+            JSONObject result =  ssoFeign.deleteUser(token,userId);
+            log.debug(result);
+            return result;
+        }catch (Exception e){
+            e.printStackTrace();
+            log.error("登录SSO失败!"+e.getMessage());
+        }
+        return null;
+    }
+
+    /**
+     * 查询SSO角色
+     * @return
+     */
+    public  JSONObject getRolesUser(){
+        try{
+            String token = login();
+            if(token == null){
+                throw new Exception("登录SSO失败!");
+            }
+            JSONObject result =  ssoFeign.getRolesUser(token,companyId);
+            log.debug(result);
+            return result;
+        }catch (Exception e){
+            e.printStackTrace();
+            log.error("登录SSO失败!"+e.getMessage());
+        }
+        return null;
+    }
+
+    /**
+     * 授权SSO用户
+     * @return
+     */
+    public  JSONObject addUserroles(String userId ,String userCode,String roleId){
+        try{
+            String token = login();
+            if(token == null){
+                throw new Exception("登录SSO失败,无法新增角色!");
+            }
+            JSONObject result =  ssoFeign.addUserroles(token,userId,userCode,roleId);
+            log.debug(result);
+            return result;
+        }catch (Exception e){
+            e.printStackTrace();
+            log.error("登录SSO失败!"+e.getMessage());
+        }
+        return null;
+    }
+
+
+    public Map<String,Object> individualLogin(String userName, String password,String app_code){
+        try{
+            JSONObject result = ssoFeign.login(userName,password,app_code);
+            return result;
+        }catch (Exception e){
+            e.printStackTrace();
+            log.error("登录SSO失败!"+e.getMessage());
+        }
+        return new HashMap<>();
+    }
+}

+ 8 - 0
src/main/resources/bootstrap.yml

@@ -31,6 +31,14 @@ redis:
     time: 864000000
   database: 0
 
+sso:
+  userName: lyg
+  password: abfe6d992067ed061748e9b226300d6488be48a4
+  orgId: 713710108567277568
+  groupId: 506514577756917769
+  companyId: 713710108567277568
+
+
 mybatis:
   type-aliases-package: com.steerinfo.dil.model
   mapper-locations: classpath:com/steerinfo/dil/mapper/*.xml

+ 18 - 0
src/main/resources/com/steerinfo/dil/mapper/BackgroundProcessingMapper.xml

@@ -14,5 +14,23 @@
         LEFT JOIN RMS_CAPACITY RC on RCD.CAPACITY_ID = RC.CAPACITY_ID
         WHERE RCD.PERSONNEL_ID = #{personnelId}
     </select>
+    <select id="selectCompanyId" resultType="java.util.Map">
+        SELECT RC.COMPANY_ID "companyId" FROM RMS_COMPANY RC
+        WHERE RC.COMPANY_NAME = #{orgName}
+        AND RC.COMPANY_TYPE = #{roleName}
+    </select>
+    <select id="getCompanyList" resultType="java.util.Map">
+        SELECT distinct rc.company_id "companyId",
+               rc.COMPANY_TYPE "companyType",
+               rc.DELETED "deleted" FROM RMS_COMPANY RC
+        START WITH RC.COMPANY_ID IN (
+        SELECT RPC.COMPANY_ID FROM RMS_PERSONNEL RP
+        LEFT JOIN RMS_PERSONNEL_COMPANY RPC on RP.PERSONNEL_ID = RPC.PERSONNEL_ID
+        WHERE
+        RPC.DELETED = 0
+        AND
+        RP.PERSONNEL_JOB_NUMBER = #{userName}
+        ) connect BY PRIOR RC.COMPANY_ID = rc.PARENT_COMPANY_ID
+    </select>
 
 </mapper>