1. 程式人生 > 其它 >企業微信的單點登入適配

企業微信的單點登入適配

個人薪酬企業微信的單點適配前後端總結

1、前端Vue的操作步驟:

(1)router.js裡面新增動態路由引數進行入口路由的區分:

{

//path:'/salary', // emobil的傳參方式

path:'/salary/:origin', // 加一個動態傳參進行區別,即可實現訪問系統url的不同

name:'salaryHome',

component:()=>import('./views/salary/SalaryHome.vue'),

redirect:'/salary/list',

…}

EMobil:http://10.98.30.114:8083/salary/list?ticket=8e9eecda89a50abc01ac1de03f93590fafe77744

WX:

http://10.98.30.114:8083/salary/wx/list?ticket=8e9eecda89a50abc01ac1de03f93590fafe77744

(2)在前端的getdata.js檔案裡寫好前後端介面的呼叫關係

exportconstswitchWxToLoginid=ticket=>fetch(`${baseUrl}/api/salary/switchWxToLoginid/${ticket}`) // 完成前後端介面的呼叫關係匹配

(3)在common.js裡面定義根據ticket得到username的轉換函式getUsernameFromWX()

// 根據前端路由裡面獲得的ticket得到username的方法實現

import { switchWxToLoginid } from '../api/getData' // 從getdata檔案裡面呼叫後端的switchWxToLoginid函式

exportfunctiongetUsernameFromWX(){

letticket=getUrlParam('ticket') // 從前端路由中獲得ticket

console.log(ticket)

let loginid=switchWxToLoginid(ticket) //在後端定義由ticket得到username的函式switchWxToLoginid函式

returnloginid

}

(4)Salaryhome.vue元件增加語句:

①data 裡面新增路由的動態引數

data () {

return {

tabselected: 'salary-list',

origin: this.$route.params.origin,

visible: false

}

}

②在create裡面新增兩個訪問系統的進入區別語句(wx只需得到uesername即可)

created () {

console.log(this.origin)

if (this.origin === 'wx') {

let obj = getUsernameFromWX()

console.log(obj)

this.$userName = getUsernameFromWX()

console.log(this.$userName)

this.$nextTick(() => {

})

}else {

this.$nextTick(() => {

if (this.$userName !== undefined || isValidateRequest()) {

console.log('validate url success!')

}

})

}

}

③methods裡面定新增具體方法的實現

methods: {

initWX(){

getUsernameFromWX()

}

}

④import匯入common中之前寫好的getUsernameFromWX方法

import { isValidateRequest, getUsernameFromWX } from '../../common/common' // 從common中呼叫之前寫好的函式username獲取函式。

2、後端Springboot框架的操作步驟:

(1)在Controller-Salarycontroller新增一個企業微信的個人薪酬訪問介面(不寫具體實現邏輯,只需要書寫介面輸入引數,輸出引數)

//個人薪酬企業微信適配介面定義

@RequestMapping("/switchWxToLoginid/{ticket}")

public Result switchWxToLoginid(@PathVariable("ticket") String ticket) {

try {

String loginid = salaryService.switchWxToLoginid(ticket);

return Result.ok().putData(loginid);

} catch (ApiServiceException e) {

log.error("個人薪酬微信訪問有誤,錯誤資訊是:" + e.getMessage());

return Result.error(e.getMessage());

}

}

(2)在Service-salaryservice裡新增具體的覆蓋方法switchWxToLoginid(String loginID)名稱

public interface SalaryService {

SalaryList getSalaryList(String loginID, String year);

SalaryDetail getSalaryDetailByEmpID(String empID, String year, String month, String type);

List<String> getSalaryYearList(String loginID);

SalaryHistory getSalaryHistory(String loginID);

SalaryTotalDetail getSalaryTotalDetail(String loginID, String type, String condition);

List<PayProgress> getPayProgressList(String loginID);

boolean pushPayNotice(String payProgressID);

String switchWxToLoginid(String ticket); //個人薪酬服務中新增企業微信介面方法

}

(3)在Service-impl-salaryserviceimp裡面實現具體service裡面新增介面方法的轉換邏輯

//匯入企業微信介面後端邏輯實現時所需要用到的類

import cn.com.bii.oa.pushCenter.config.WxConfig;

import cn.com.bii.oa.pushCenter.util.WxUtils;

import com.alibaba.fastjson.JSONObject;

/** 個人薪酬企業微信適配介面方法的具體邏輯實現*/

@Override

public String switchWxToLoginid(String ticket){

String loginid = "";

WxConfig wxConfig = new WxConfig();

JSONObject wxUserKeyResult = WxUtils.getWxUserKey(wxConfig, ticket);

String wxUserKey = wxUserKeyResult.getString("wxuserkey");

JSONObject wxLoginidResult = WxUtils.getLoginIDByID(wxConfig,wxUserKey);

loginid = wxLoginidResult.getString("");

return loginid;

}