Commit a3afd5ce by 王勇飞

Merge branch 'center-manage' of gitlab.gongsibao.com:jiangyong/zhichan into center-manage

parents 1a3d9817 4cbf927b
......@@ -7,32 +7,36 @@ class UserCtl extends CtlBase {
constructor() {
super("auth", CtlBase.getServiceName(UserCtl));
}
async logout(pobj, qobj, req){
let rtn=await this.service.logout(pobj)
async logout(pobj, qobj, req) {
let rtn = await this.service.logout(pobj)
return system.getResult(rtn)
}
async pmgetUserByCode(pobj, qobj, req){
let code=pobj.code
let rtn=await this.service.pmgetUserByCode(code)
async pmgetUserByCode(pobj, qobj, req) {
let code = pobj.code
let rtn = await this.service.pmgetUserByCode(code)
return system.getResult(rtn)
}
async loginApp(pobj, qobj, req){
let appkey=pobj.fromAppKey
let uname=pobj.username
let rtn=await this.service.loginApp(appkey,uname)
async loginApp(pobj, qobj, req) {
let appkey = pobj.fromAppKey
let uname = pobj.username
let rtn = await this.service.loginApp(appkey, uname)
return system.getResult(rtn);
}
async resetPassword(pobj, qobj, req){
await this.service.resetPassword(req.xctx.username,pobj.onepassword)
async resetPassword(pobj, qobj, req) {
try {
await this.service.resetPassword(req.xctx.username, pobj.onepassword)
return system.getResult({});
} catch (err) {
return system.getResult(null, err.message)
}
async allowOrNot(pobj, qobj, req){
await this.service.updateByWhere({isEnabled:!pobj.isEnabled},{company_id:pobj.company_id})
}
async allowOrNot(pobj, qobj, req) {
await this.service.updateByWhere({ isEnabled: !pobj.isEnabled }, { company_id: pobj.company_id })
return system.getResult({});
}
async allowOrNotToOne(pobj, qobj, req){
await this.service.updateByWhere({isEnabled:!pobj.isEnabled},{id:pobj.curid})
async allowOrNotToOne(pobj, qobj, req) {
await this.service.updateByWhere({ isEnabled: !pobj.isEnabled }, { id: pobj.curid })
return system.getResult({});
}
async initNewInstance(queryobj, req) {
......@@ -64,7 +68,7 @@ class UserCtl extends CtlBase {
return rtn;
}
async create(p, q, req){
async create(p, q, req) {
//检查是否有用户名和密码
if (!p.userName) {
return system.getResult(null, "请检查用户名和密码是否存在")
......
......@@ -9,11 +9,11 @@ class UserService extends ServiceBase {
this.roleDao = system.getObject("db.auth.roleDao");
this.authS = system.getObject("service.auth.authSve");
}
async pmgetUserByCode (code) {
async pmgetUserByCode(code) {
let ux = await this.cacheManager["CodeCache"].getCache(code);
return ux;
}
async loginApp (appkey, uname) {
async loginApp(appkey, uname) {
let rtn = {}
let app = await this.cacheManager["AppCache"].cache(appkey);
let userLogined = await this.cacheManager["UserCache"].cache(uname);
......@@ -38,7 +38,7 @@ class UserService extends ServiceBase {
//和租户绑定同一家公司
//按照用户名和密码进行注册
//控制器端检查用户名和密码非空
async registerByTantent (p, q) {
async registerByTantent(p, q) {
// 需要默认添加访客角色,为了控制单点从平台登录时看到的菜单和功能
if (p.roles && p.roles.length > 0) {
if (p.roles.indexOf(settings.pmroleid["pr"]) < 0) {
......@@ -51,7 +51,7 @@ class UserService extends ServiceBase {
}
//应用的自由用户注册,无需验证,需要前端头设置公司KEY
async pmregisterByFreeUser (p, q) {
async pmregisterByFreeUser(p, q) {
p.rolecodes = [settings.pmroleid["pr"]];
let rtn = await this.pmregister(p, q)
return rtn;
......@@ -60,7 +60,7 @@ class UserService extends ServiceBase {
//平台租户注册接口方法
//控制器端检查用户名和密码非空
async pmregister (p, q) {
async pmregister(p, q) {
var self = this;
let tmppwd = p.password;
if (!tmppwd) {
......@@ -134,7 +134,7 @@ class UserService extends ServiceBase {
}
});
}
async logout (pobj) {
async logout(pobj) {
await this.cacheManager["UserCache"].invalidate(pobj.username);
return {}
}
......@@ -142,7 +142,7 @@ class UserService extends ServiceBase {
//登录接口封装kong-url
//登录路由放行
//p里面含有appkey,company_id,userName,password
async pmlogin (p, q, req) {
async pmlogin(p, q, req) {
var self = this;
//先要按照用户名,在统一账户中查找存在性
//如果不存在
......@@ -186,7 +186,7 @@ class UserService extends ServiceBase {
}
})
}
async getUserInfo (uname) {
async getUserInfo(uname) {
// let userfind = await this.dao.model.findOne({
// where: { userName: uname, app_id: settings.pmappid },
// attributes: ['userName', 'nickName',"headUrl",'isSuper','isAdmin'],
......@@ -207,7 +207,7 @@ class UserService extends ServiceBase {
//自由用户的电话登录和注册
//需要存在公司KEY
async pmloginByVCodeForFreeUser (p, q) {
async pmloginByVCodeForFreeUser(p, q) {
p.rolecodes = [settings.pmroleid["pr"]];
let rtn = await this.pmloginByVCode(p, q, req)
return system.getResult(rtn);
......@@ -216,7 +216,7 @@ class UserService extends ServiceBase {
//平台租户注册与登录
//用户验证码登录
//
async pmloginByVCode (p, q, req) {
async pmloginByVCode(p, q, req) {
var rtn = {}
//检查传递过来的手机验证码是否与缓存的一致
let mobile = p.mobile;
......@@ -261,19 +261,19 @@ class UserService extends ServiceBase {
//不一致那么就
}
//发送手机验证码并缓存
async sendVCode (p, q, req) {
async sendVCode(p, q, req) {
let mobile = p.mobile;
let vcodeobj = await this.cacheManager["VCodeCache"].cache(mobile, null, 60);
return vcodeobj.vcode;
}
async reSendVCode (p, q, req) {
async reSendVCode(p, q, req) {
let mobile = p.mobile;
await this.cacheManager["VCodeCache"].invalidate(mobile);
let vcodeobj = await this.cacheManager["VCodeCache"].cache(mobile, null, 60);
return vcodeobj.vcode;
}
//修改中心密码
async cmodifypwd (uname, newpwd, cmpid) {
async cmodifypwd(uname, newpwd, cmpid) {
try {
let rtn = await system.postJsonTypeReq(UserService.consumerUrl(uname), { tags: ["cmp_" + cmpid, "pass_" + newpwd] }, "PATCH")
console.log(rtn)
......@@ -287,7 +287,7 @@ class UserService extends ServiceBase {
}
}
//创建统一账号及jwt身份
async cregister (uname, cmpid, pass, uid) {
async cregister(uname, cmpid, pass, uid) {
try {
var rtn2 = null;
let rtn = await system.postJsonTypeReq(UserService.newConsumerUrl(), { username: uname, custom_id: uid, tags: ["cmp_" + cmpid, "pass_" + pass] })
......@@ -309,7 +309,7 @@ class UserService extends ServiceBase {
}
//plkey--对应消费者jwt身份的key,插件解码token后,获取iss-key,查询出身份,利用
//身份中的secret验证签名
async jwtsign (plkey, secretstr, opts) {
async jwtsign(plkey, secretstr, opts) {
let promise = new Promise(function (resv, rej) {
jwt.sign({ exp: Math.floor(Date.now() / 1000) + (60 * 60), iss: plkey }, secretstr, opts, function (err, rtn) {
if (err) {
......@@ -322,13 +322,13 @@ class UserService extends ServiceBase {
return promise;
}
//只要登录 生成新的访问jwttoken
async cmakejwt (key, secret, opts) {
async cmakejwt(key, secret, opts) {
var token = await this.jwtsign(key, secret, opts);
return token;
}
//删除统一账号
async cunregister (uname) {
async cunregister(uname) {
try {
let rtn = await system.delReq(UserService.consumerUrl(uname))
if (rtn.statusCode == 204) {
......@@ -342,16 +342,16 @@ class UserService extends ServiceBase {
//登录统一账号
async clogin (uname) {
async clogin(uname) {
//检查是否存在重名
}
//按用户名查询统一用户
async findCUser (uname) {
async findCUser(uname) {
}
async resetPassword (uname, pwd) {
let inpassword = this.getEncryptStr(pwd);
async resetPassword(uname, pwd) {
let inpassword = this.getEncryptStr(pwd, true);
var self = this;
return this.db.transaction(async function (t) {
let up = await self.dao.updateByWhere({ password: inpassword }, { userName: uname }, t);
......@@ -368,7 +368,7 @@ class UserService extends ServiceBase {
});
}
//修改
async update (qobj, tm = null) {
async update(qobj, tm = null) {
var self = this;
return this.db.transaction(async function (t) {
delete qobj['company_id']
......@@ -390,7 +390,7 @@ class UserService extends ServiceBase {
* @param {*} productCatName 产品类型名称
* @param {*} regionName 区域
*/
async getBizUserForBizChance (clientMobile, spName, productCatName, regionName) {
async getBizUserForBizChance(clientMobile, spName, productCatName, regionName) {
var self = this
clientMobile = clientMobile + "_" + spName + "_" + regionName + "_" + productCatName
//按照服务商名字查询到公司,按照公司查询出users,条件是可以接受派单任务,并且技能标签含有,产品类别名称
......@@ -470,7 +470,7 @@ class UserService extends ServiceBase {
* @param {*} skucode 最小销售货品编码,来自渠道上架的码
* @param {*} regionName 区域
*/
async getBizUserForDelivery (xclientMobile, spName, productCatName, skucode, regionName) {
async getBizUserForDelivery(xclientMobile, spName, productCatName, skucode, regionName) {
let clientMobile = 'fordeliver' + xclientMobile + "_" + spName + "_" + regionName + "_" + productCatName
var self = this
//按照服务商名字查询到公司,按照公司查询出users,条件是可以接受派单任务,并且技能标签含有,产品类别名称
......
......@@ -7,19 +7,58 @@ class ServiceBase {
//this.dbf=system.getObject("db.connection");
this.db = system.getObject("db.common.connection").getCon();
this.cacheManager = system.getObject("db.common.cacheManager");
console.log(">>>>>>>>>>>>>>..",daoName)
console.log(">>>>>>>>>>>>>>..", daoName)
this.daoName = daoName;
this.dao = system.getObject("db." + gname + "." + daoName);
this.restS = system.getObject("util.restClient");
this.md5 = require("MD5");
}
getEncryptStr(str) {
/**
*
* @param {*} str
* @param {*} isComplexVerification 是否复杂验证
*/
getEncryptStr(str, isComplexVerification) {
if (!str) {
throw new Error("字符串不能为空");
}
if (isComplexVerification) {
this.complexVerification(str)
}
var md5 = this.md5(str + "_" + settings.salt);
return md5.toString().toLowerCase();
}
complexVerification(str) {
let rC = {
lW: '[a-z]',//小写字母
uW: '[A-Z]',//大写字母
nW: '[0-9]',//汉字
sW: '[\\u0020-\\u002F\\u003A-\\u0040\\u005B-\\u0060\\u007B-\\u007E]'//特殊字符
};
let Reg = (str, rStr) => {
let reg = new RegExp(rStr);
if (reg.test(str)) return true;
else return false;
}
if (str.length < 8) {
throw new Error('密码不得小于8位')
} else {
var tR = {
l: Reg(str, rC.lW),
u: Reg(str, rC.uW),
n: Reg(str, rC.nW),
s: Reg(str, rC.sW)
};
if ((tR.l && tR.u && tR.n) || (tR.l && tR.u && tR.s) || (tR.s && tR.u && tR.n) || (tR.s && tR.l && tR.n)) {
//密码符合要求
return true;
} else {
throw new Error("您的密码必须含有“小写字母”、“大写字母”、“数字”、“特殊符号”中的任意三种");
}
}
}
getUUID() {
var uuid = uuidv4();
var u = uuid.replace(/\-/g, "");
......@@ -27,8 +66,8 @@ class ServiceBase {
}
static getDaoName(ClassObj) {
console.log(">>>>>>>>>>>>>>>>>>>>>>>>>>>..");
let rtnstr=ClassObj["name"].substring(0, ClassObj["name"].lastIndexOf("Service")).toLowerCase() + "Dao";
console.log(">>>>>>>>>>>>>>>>>>>>>>>>>>>..",rtnstr);
let rtnstr = ClassObj["name"].substring(0, ClassObj["name"].lastIndexOf("Service")).toLowerCase() + "Dao";
console.log(">>>>>>>>>>>>>>>>>>>>>>>>>>>..", rtnstr);
return rtnstr;
}
async findAndCountAll(obj) {
......@@ -79,7 +118,7 @@ class ServiceBase {
返回20位业务订单号
prefix:业务前缀
*/
async getBusUid(prefix) {
async getBusUid(prefix) {
prefix = (prefix || "");
if (prefix) {
prefix = prefix.toUpperCase();
......@@ -97,7 +136,7 @@ class ServiceBase {
len:返回长度
radix:参与计算的长度,最大为62
*/
async getUidInfo(len, radix) {
async getUidInfo(len, radix) {
var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');//长度62,到yz长度为长36
var uuid = [], i;
radix = radix || chars.length;
......@@ -118,102 +157,102 @@ class ServiceBase {
}
//kong统一处理
//统一注册组件
async cformregister(opurl,opts){
try{
let rtn=await system.post3wFormTypeReq(opurl,opts)
async cformregister(opurl, opts) {
try {
let rtn = await system.post3wFormTypeReq(opurl, opts)
console.log(rtn);
if(rtn.statusCode==409){
if (rtn.statusCode == 409) {
//return new Error("已经存在相同的统一账号名称!");
return null;
}
if(rtn.statusCode==201){
if (rtn.statusCode == 201) {
return rtn.data;
}else{
} else {
throw new Error(rtn.data);
}
}catch(e){
} catch (e) {
console.log(e);
return null;
}
}
async cget(opurl){
let rtn=await system.getReq(opurl)
async cget(opurl) {
let rtn = await system.getReq(opurl)
return rtn;
}
async cjsonregister(opurl,opts){
try{
let rtn=await system.postJsonTypeReq(opurl,opts)
console.log(",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",rtn);
if(rtn.statusCode==409){
async cjsonregister(opurl, opts) {
try {
let rtn = await system.postJsonTypeReq(opurl, opts)
console.log(",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", rtn);
if (rtn.statusCode == 409) {
//return new Error("已经存在相同的统一账号名称!");
return null;
}
if(rtn.statusCode==201){
if (rtn.statusCode == 201) {
return rtn.data;
}else{
} else {
throw new Error(rtn.data);
}
return null;
}catch(e){
} catch (e) {
console.log(e);
return null;
}
}
async cjsonupate(opurl,opts){
try{
let rtn=await system.postJsonTypeReq(opurl,opts,"PATCH")
console.log(",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,",rtn);
if(rtn.statusCode==409){
async cjsonupate(opurl, opts) {
try {
let rtn = await system.postJsonTypeReq(opurl, opts, "PATCH")
console.log(",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", rtn);
if (rtn.statusCode == 409) {
//return new Error("已经存在相同的统一账号名称!");
return null;
}
if(rtn.statusCode==201){
if (rtn.statusCode == 201) {
return rtn.data;
}else{
} else {
throw new Error(rtn.data);
}
return null;
}catch(e){
} catch (e) {
console.log(e);
return null;
}
}
async cdel(opurl){
try{
let rtn=await system.delReq(opurl)
if(rtn.statusCode==204){
async cdel(opurl) {
try {
let rtn = await system.delReq(opurl)
if (rtn.statusCode == 204) {
return {};
}else{
} else {
throw new Error(rtn.data);
}
}catch(e){
} catch (e) {
console.log(e);
return null;
}
}
static bindPluginUrl(rname){
return settings.kongurl()+"routes/"+rname+"/plugins";
static bindPluginUrl(rname) {
return settings.kongurl() + "routes/" + rname + "/plugins";
}
static newRouteUrl(sname){
return settings.kongurl()+"services/"+sname+"/routes";
static newRouteUrl(sname) {
return settings.kongurl() + "services/" + sname + "/routes";
}
static newServiceUrl(){
return settings.kongurl()+"services";
static newServiceUrl() {
return settings.kongurl() + "services";
}
static newConsumerUrl(){
return settings.kongurl()+"consumers";
static newConsumerUrl() {
return settings.kongurl() + "consumers";
}
static newJwtCredUrl(consumername){
return settings.kongurl()+"consumers/"+consumername+"/jwt";
static newJwtCredUrl(consumername) {
return settings.kongurl() + "consumers/" + consumername + "/jwt";
}
static serviceUrl(sname){
return settings.kongurl()+"services/"+sname;
static serviceUrl(sname) {
return settings.kongurl() + "services/" + sname;
}
static routeUrl(rname){
return settings.kongurl()+"routes/"+rname;
static routeUrl(rname) {
return settings.kongurl() + "routes/" + rname;
}
static consumerUrl(consumerName){
return settings.kongurl()+"consumers/"+consumerName;
static consumerUrl(consumerName) {
return settings.kongurl() + "consumers/" + consumerName;
}
}
module.exports = ServiceBase;
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