Commit caaaa7ee by 蒋勇

d

parent be3270ca
......@@ -6,32 +6,34 @@ class AppService extends ServiceBase {
constructor() {
super("common", ServiceBase.getDaoName(AppService));
this.userS = system.getObject("service.auth.userSve");
this.routeDao=system.getObject("db.common.routeDao");
this.routeDao = system.getObject("db.common.routeDao");
}
async getApp(p) {
let app= this.cacheManager["AppCache"].cache(p.appkey, null);
let app = this.cacheManager["AppCache"].cache(p.appkey, null);
return app;
}
async findAllApps(uid) {
var apps=null;
var apps = null;
var dicRtn = {};
var wheresql= {};
if(uid){
wheresql[this.db.Op.and]={
var wheresql = {};
if (uid) {
wheresql[this.db.Op.and] = {
[this.db.Op.or]:
[
{isPublish:false, creator_id: uid},
{isEnabled: true,isPublish:true}
{ isPublish: false, creator_id: uid },
{ isEnabled: true, isPublish: true }
],
};
apps = await this.dao.model.findAll({
where: wheresql,
attributes: ['id', 'name', 'appkey', 'showimgUrl', 'appType', 'docUrl','homePage'] });
}else{
wheresql= {isEnabled: true,isPublish:true};
apps = await this.dao.model.findAll({
where: wheresql,
attributes: ['id', 'name', 'appkey', 'showimgUrl', 'appType', 'docUrl','homePage'] });
apps = await this.dao.model.findAll({
where: wheresql,
attributes: ['id', 'name', 'appkey', 'showimgUrl', 'appType', 'docUrl', 'homePage']
});
} else {
wheresql = { isEnabled: true, isPublish: true };
apps = await this.dao.model.findAll({
where: wheresql,
attributes: ['id', 'name', 'appkey', 'showimgUrl', 'appType', 'docUrl', 'homePage']
});
}
for (var app of apps) {
var tmk = uiconfig.config.pdict.app_type[app.appType];
......@@ -48,67 +50,90 @@ class AppService extends ServiceBase {
//创建应用
//每个应用建立两个路由,一个api路由
//对api路由启用jwt插件
//创建应用
//每个应用建立两个路由,一个api路由
//对api路由启用jwt插件
async create(pobj, qobj, req) {
var self = this;
return this.db.transaction(async function (t) {
var app = await self.dao.create(pobj, t);
//创建后台应用服务
let svobj=await self.cjsonregister(AppService.newServiceUrl(),{name:app.name,url:"http://"+app.backend})
let svobj = await self.cjsonregister(AppService.newServiceUrl(), { name: app.name, url: "http://" + app.backend })
//添加路由
let ps=["/web/auth/userCtl/pmlogin","/web/auth/userCtl/pmregister","/web/auth/userCtl/pmSendVCode","/web/auth/userCtl/pmloginByVCode"]
let routeobj=await self.cjsonregister(AppService.newRouteUrl(app.name),
{name:app.name,paths:ps,hosts:[app.domainName],strip_path:false})
let ps2=["/api","/web"]
let routeapi=await self.cjsonregister(AppService.newRouteUrl(app.name),{name:app.name+"_api",hosts:[app.domainName],paths:ps2,strip_path:false})
let r1=await self.routeDao.create({name:app.name,center_id:routeobj.id,app_id:app.id,shosts:app.domainName,spaths:ps.join(",")},t);
let r2=await self.routeDao.create({name:app.name+"_api",center_id:routeapi.id,app_id:app.id,shosts:app.domainName,spaths:ps2.join(",")},t);
let ps = ["/web/auth/userCtl/pmlogin", "/web/auth/userCtl/pmregister", "/web/auth/userCtl/pmSendVCode", "/web/auth/userCtl/pmloginByVCode"]
let routeobj = await self.cjsonregister(AppService.newRouteUrl(app.name),
{ name: app.name, paths: ps, hosts: [app.domainName], strip_path: false })
let ps2 = ["/api", "/web"]
let routeapi = await self.cjsonregister(AppService.newRouteUrl(app.name), { name: app.name + "_api", hosts: [app.domainName], paths: ps2, strip_path: false })
let r1 = await self.routeDao.create({ name: app.name, center_id: routeobj.id, app_id: app.id, shosts: app.domainName, spaths: ps.join(",") }, t);
let r2 = await self.routeDao.create({ name: app.name + "_api", center_id: routeapi.id, app_id: app.id, shosts: app.domainName, spaths: ps2.join(",") }, t);
//给api路由启动插件
await self.cjsonregister(AppService.bindPluginUrl(app.name+"_api"),{name:"jwt"})
if(svobj && routeobj && r1 && r2){
try{
app.appkey=svobj.id;
await app.save({transaction:t});
}catch(e){
await self.cjsonregister(AppService.bindPluginUrl(app.name + "_api"), { name: "jwt" })
if (svobj && routeobj && r1 && r2) {
try {
app.appkey = svobj.id;
await app.save({ transaction: t });
} catch (e) {
await self.cdel(AppService.routeUrl(app.name))
await self.cdel(AppService.routeUrl(app.name+"_api"))
await self.cdel(AppService.routeUrl(app.name + "_api"))
await self.cdel(AppService.serviceUrl(app.name))
}
}else{
throw new Error("创建应用服务失败");
} else {
throw new Error("创建应用服务失败");
}
return app;
});
}
//删除应用
async update(pobj, qobj){
var self=this;
return this.db.transaction(async function (t) {
await self.dao.update(pobj,t)
let upobj=await self.dao.findById(pobj.id)
//令缓存失效
await self.cacheManager["AppCache"].invalidate(upobj.appkey);
return upobj
})
}
async translateWithBizCode(funcobjs,parentfunc) {
funcobjs.forEach((item) => {
if (item.children) {
if(parentfunc){
item.bizCode=parentfunc.bizCode+"/"+item.name
}else{
item.bizCode=item.name
}
this.translateWithBizCode(item.children,item)
} else {
if(parentfunc){
item.bizCode=parentfunc.bizCode+"/"+item.name
}else{
item.bizCode=item.name
}
}
})
}
//删除应用
async update(pobj, qobj) {
var self = this;
return this.db.transaction(async function (t) {
//如果存在functionJSON,那么就需要转换,构建编码路径
if (pobj.functionJSON != "") {
let funcobjs = JSON.parse(pobj.functionJSON)
await self.translateWithBizCode(funcobjs,null)
pobj.functionJSON= JSON.stringify(funcobjs)
}
await self.dao.update(pobj, t)
let upobj = await self.dao.findById(pobj.id)
//令缓存失效
await self.cacheManager["AppCache"].invalidate(upobj.appkey);
return upobj
})
}
//删除应用
async delete(pobj, qobj){
var self=this;
async delete(pobj, qobj) {
var self = this;
return this.db.transaction(async function (t) {
let delobj= await self.dao.delete(pobj,t)
//令缓存失效
await self.cacheManager["AppCache"].invalidate(delobj.appkey);
//删除路由
await self.cdel(AppService.routeUrl(pobj.name));
//删除api路由
await self.cdel(AppService.routeUrl(pobj.name+"_api"));
//删除服务
await self.cdel(AppService.serviceUrl(pobj.name));
return {}
let delobj = await self.dao.delete(pobj, t)
//令缓存失效
await self.cacheManager["AppCache"].invalidate(delobj.appkey);
//删除路由
await self.cdel(AppService.routeUrl(pobj.name));
//删除api路由
await self.cdel(AppService.routeUrl(pobj.name + "_api"));
//删除服务
await self.cdel(AppService.serviceUrl(pobj.name));
return {}
})
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment