Appearance
场景接入
本部分规定了服务驿站、任务驿站、管理视图等几个主要场景的接入规范,通过场景的接入,应用系统可以更加深入接入整体平台,实现一站式服务。
原理: 用户点击应用时平台服务目录时自动追加stoken/sroute/sobject
参数,对接应用通过接口解析用户信息,路由信息、对象信息,自行设置本应用登录状态并跳转相应的视图页面。
登录用户stoken
参数通过 “2.3.1用户信息接口” 进行解析并设置登录状态;
视图路由sroute
参数通过约定标识自行处理页面路由,如:fwez/rwez
等;
数据对象sobject
参数通过将必要的参数转码后传递,转码规则如下:
对象转密文方法:btoa(encodeURIComponent(JSON.stringify(sobject)))
密文转对象方法:JSON.parse(decodeURIComponent(atob(sobject)))
服务驿站
服务驿站是自下而上开展服务申请、审核、实施统一化平台,平台通过整合各个节点展示视图实现统一化的操作。接入时需要提供申请、审核、实施等功能,并遵守相应的流程规范。
- 通过应用配置获取应用地址并追加相应参数:
http
https://www.app.com?stoken=xxxx&sroute=fwez&sobject=xxxx
- 前端接收参数设置登录状态并跳转对应页面:
vue
<template>
<v-app>
<v-overlay opacity="0">加载中......</v-overlay>
</v-app>
</template>
<script>
import Request from "@/commons/request";
import Storage from "@/commons/storage";
export default {
name: "App",
data: () => ({ valid: null, note: "授权登录中..." }),
async mounted() {
// 1.授权用户登录
let stoken = this.GetQueryString("stoken");
await this.UserLoginByData(stoken);
// 2.解析服务对象
let sobject = this.GetQueryString("sobject");
let jobject = JSON.parse(decodeURIComponent(atob(sobject)));
Storage.set("sobject", jobject);
// 3.跳转对应页面
let sroute = this.GetQueryString("sroute");
switch (sroute) {
case "fwez": this.$router.push("/service/fwez"); break;
case "fwsh": this.$router.push("/service/fwsh"); break;
case "fwss": this.$router.push("/service/fwss"); break;
default: this.$router.push("/service/index");
}
},
methods: {
async UserLoginByData(stoken) {
if (!stoken) {
this.valid = false;
this.note = "授权登录错误,用户令牌不能为空,请关闭页面后重试!";
return;
}
Request.postJson('/admin/login', { stoken: stoken }).then((res) => {
if (res.meta.success && res.data) {
//1.获取用户信息成功
Storage.set("token", res.data.token);
this.valid = true;
this.note = "授权登录成功,正在跳转请稍后...";
} else {
//2.获取用户信息失败
this.valid = false;
this.note = "授权登录失败,请关闭页面后重试!";
}
});
},
GetQueryString(name) {
var reg = new RegExp("[?&]" + name + "=([^&^#^/]*)", "i");
var res = window.location.href.match(reg);
return res != null ? unescape(res[1]) : "";
},
},
};
</script>
<style>
body { background-size: cover; }
</style>
- 后端接收参数并提供登录等相关服务的接口:
java
package cn.liangthink.xxx.service.impl;
import java.util.Date;
import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import cn.liangthink.xxx.service.AcisService;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Service
public class AcisServiceImpl implements AcisService {
private RestTemplate rest = new RestTemplate();
private String mp = "https://xxxxxx/";
private String ak = "xxxxxx";
private String sk = "xxxxxx";
@Override
public String token() {
String uri = mp + "/sure/oauth/access_token";
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
long ts = (new Date()).getTime();
String si = String.format("AK:%s/TS:%s/SK:%s", ak, ts, sk);
params.add("client_id", ak);
params.add("timestamp", ts);
params.add("signature", DigestUtils.md5DigestAsHex(si.getBytes()));
JSONObject json = rest.postForObject(uri, params, JSONObject.class);
return json.getJSONObject("data").getString("access_token");
}
@Override
public Object userinfo(String userinfo) {
JSONObject result = new JSONObject();
String uri = mp + "/open/api/acis/udsa/userbytoken";
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
params.add("stoken", JSON.parseObject(userinfo).getString("stoken"));
params.add("access_token", this.token());
JSONObject json = rest.postForObject(uri, params, JSONObject.class);
log.debug(json.toJSONString());
JSONObject user = json.getJSONObject("data");
if (user == null) {
return result.fluentPut("meta", false).fluentPut("data", "获取失败!");
}
return result.fluentPut("meta", true).fluentPut("data", user);
}
}
1.申请接入
申请(代办)是助残驿站在治理端为基层提供的统一业务发起入口平台,支持电脑版和手机版,申请操作时平台将stoken/sroute/sobject
参数在地址栏带入应用中,应用处理后跳转申请页面,完成服务目录申请。视图代码:fwez
http
https://www.app.com?stoken=xxxx&sroute=fwez&sobject=xxxx
2.审核接入
审核(待审)是服务超市在治理端为基层提供的统一业务审核入口平台,支持电脑版和手机版,待审列表通过用户角色来过滤服务中心数据,用户具体审核时平台将stoken/sroute/sobject
参数在地址栏带入应用中,应用处理后跳转审核页面,完成服务目录审核。视图代码:fwsh
http
https://www.app.com?stoken=xxxx&sroute=fwsh&sobject=xxxx
3.实施接入
实施(服务)是服务超市在协同端为机构提供统一的业务实施入口平台,支持电脑版和手机版,实施数据是根据服务机构资质进行过滤,用户具体实施时平台将stoken/sroute/sobject
参数在地址栏带入应用中,应用处理后跳转实施页面,完成服务目录实施。视图代码:fwss
http
https://www.app.com?stoken=xxxx&sroute=fwss&sobject=xxxx
4.数据汇集
服务驿站场景接入是为各级各部门提供统一的业务处理入口,规范各个应用操作节点,简化业务操作过程;与此同时,服务中心提供统一的数据汇集接口,实现数据规范化的汇集。服务数据汇集主要包括:服务创建统一赋码、服务实施流程处理、服务评价流程处理三个接口,详见 “5.2 服务数据汇集”部分。