Commit e93881c8 by 赵庆

初始

parent dcafa940
# Default ignored files
/workspace.xml
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ No newline at end of file
<component name="ProjectDictionaryState">
<dictionary name="root" />
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptSettings">
<option name="languageLevel" value="ES6" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/bpo-stat.iml" filepath="$PROJECT_DIR$/.idea/bpo-stat.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
</component>
</project>
\ No newline at end of file
var system = require("../../../system")
const CtlBase = require("../../ctl.base");
class CompanysCtl extends CtlBase {
constructor() {
super("all", CtlBase.getServiceName(CompanysCtl));
}
async allList(qobj){
var params = qobj.search || {};
this.doTimeCondition(params, ["signBegin", "signEnd"]);
try {
var page = await this.service.signPage(params);
return system.getResult2(page);
} catch (e) {
console.log(e);
return system.getErrResult2("您的网络不稳, 请稍后重试");
}
}
}
module.exports = CompanysCtl;
\ No newline at end of file
var system = require("../../../system") var system = require("../../../system")
const http = require("http")
const querystring = require('querystring');
var settings = require("../../../../config/settings");
const CtlBase = require("../../ctl.base"); const CtlBase = require("../../ctl.base");
const logCtl = system.getObject("web.common.oplogCtl");
const md5 = require("MD5");
const uuidv4 = require('uuid/v4');
var cacheBaseComp = null;
class UserCtl extends CtlBase { class UserCtl extends CtlBase {
constructor() { constructor() {
super("auth", CtlBase.getServiceName(UserCtl)); super("auth", CtlBase.getServiceName(UserCtl));
this.redisClient = system.getObject("util.redisClient");
}
async login(pobj, qobj, req) {
var loginName = this.trim(pobj.loginname);
var password = this.trim(pobj.password);
try {
var user = await this.service.findOne({"loginname": loginName});
if (!user) {
return system.getResultFail(-1, "用户不存在");
}
user = user.dataValues;
if (user.password !== super.encryptPasswd(password)) {
return system.getResultFail(-1, "密码错误");
}
return system.getResultSuccess(user, "");
} catch (error) {
console.log(error);
return system.getResultFail(500, "接口异常:" + error.message);
}
}
this.redisClient = system.getObject("util.redisClient"); async register(pobj, qobj, req) {
} if (!pobj.loginname) {
return system.getResultFail(-1, "用户为空");
}
if (!pobj.password) {
return system.getResultFail(-1, "密码为空");
}
var user = await this.service.findOne({
loginname: pobj.loginname
});
if (user) {
return system.getResultFail(-1, "用户已存在, 请修改并重试");
}
let inse = {
loginname: pobj.loginname,
password: super.encryptPasswd(pobj.password)
};
var u = await this.service.register(inse);
async login(pobj, pobj2, req, res) { return system.getResultSuccess(u, "注册成功");
var loginName = this.trim(pobj.loginName);
var password = this.trim(pobj.password);
try {
return system.getResultSuccess(1);
} catch (error) {
console.log(error);
return system.getResultFail(500, "接口异常:" + error.message);
} }
}
async userList(queryobj, obj, req){
var pageInfo = obj.pageInfo || {};
var search = obj.search || {};
var apps = await this.service.userPage(pageInfo, search);
return system.getResultSuccess(apps, null);
}
} }
module.exports = UserCtl; module.exports = UserCtl;
\ No newline at end of file
const system = require("../../../system");
const Dao = require("../../dao.base");
class CompanysDao extends Dao {
constructor() {
super(Dao.getModelName(CompanysDao));
}
}
module.exports = CompanysDao;
\ No newline at end of file
const system=require("../../../system"); const system = require("../../../system");
const Dao=require("../../dao.base"); const Dao = require("../../dao.base");
class UserDao extends Dao{
constructor(){
super(Dao.getModelName(UserDao));
}
async getAuths(userid){
var self=this;
return this.model.findOne({
where:{id:userid},
include:[{model:self.db.models.account,attributes:["id","isSuper","referrerOnlyCode"]},
{model:self.db.models.role,as:"Roles",attributes:["id","code"],include:[
{model:self.db.models.product,as:"Products",attributes:["id","code"]}
]},
],
});
}
extraModelFilter(){
//return {"key":"include","value":[{model:this.db.models.app,},{model:this.db.models.role,as:"Roles",attributes:["id","name"],joinTableAttributes:['created_at']}]};
return {"key":"include","value":[{model:this.db.models.app,},{model:this.db.models.role,as:"Roles",attributes:["id","name"]}]};
}
extraWhere(obj,w,qc,linkAttrs){
if(obj.codepath && obj.codepath!=""){
// if(obj.codepath.indexOf("userarch")>0){//说明是应用管理员的查询
// console.log(obj);
// w["app_id"]=obj.appid;
// }
}
if(linkAttrs.length>0){
var search=obj.search;
var lnkKey=linkAttrs[0];
var strq="$"+lnkKey.replace("~",".")+"$";
w[strq]= {[this.db.Op.like]:"%"+search[lnkKey]+"%"};
} class UserDao extends Dao {
return w; constructor() {
} super(Dao.getModelName(UserDao));
async preUpdate(u){
if(u.roles && u.roles.length>0){
var roles=await this.db.models.role.findAll({where:{id:{[this.db.Op.in]:u.roles}}});
console.log("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
console.log(roles);
u.roles=roles
} }
return u;
} async register(user) {
async update(obj){ console.log(user)
var obj2=await this.preUpdate(obj);
console.log("update...................."); var sql = "SELECT id FROM tbl_users WHERE loginname LIKE :loginname ";
console.log(obj2); var list = await this.customQuery(sql, {loginname: "%" + user.loginname + "%"});
await this.model.update(obj2,{where:{id:obj2.id}}); console.log(list)
var user=await this.model.findOne({where:{id:obj2.id}});
user.setRoles(obj2.roles); }
return user;
} async getAuths(userid) {
async findAndCountAll(qobj,t){ var self = this;
var users=await super.findAndCountAll(qobj,t); return this.model.findOne({
return users; where: {id: userid},
} include: [{model: self.db.models.account, attributes: ["id", "isSuper", "referrerOnlyCode"]},
async preCreate(u){ {
// var roles=await this.db.models.role.findAll({where:{id:{[this.db.Op.like]:u.roles}}}); model: self.db.models.role, as: "Roles", attributes: ["id", "code"], include: [
// console.log("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); {model: self.db.models.product, as: "Products", attributes: ["id", "code"]}
// console.log(roles); ]
// console.log("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); },
// u.roles=roles ],
return u;
}
async create(u,t){
var self=this;
var u2=await this.preCreate(u);
if(t){
return this.model.create(u2,{transaction: t}).then(user=>{
return user;
});
}else{
return this.model.create(u2).then(user=>{
return user;
}); });
} }
}
//修改用户(user表)公司的唯一码 extraModelFilter() {
async putUserCompanyOnlyCode(userId,company_only_code,result){ //return {"key":"include","value":[{model:this.db.models.app,},{model:this.db.models.role,as:"Roles",attributes:["id","name"],joinTableAttributes:['created_at']}]};
var customerObj={companyOnlyCode:company_only_code}; return {
var putSqlWhere={where:{id:userId}}; "key": "include",
this.updateByWhere(customerObj,putSqlWhere); "value": [{model: this.db.models.app,}, {
return result; model: this.db.models.role,
} as: "Roles",
attributes: ["id", "name"]
}]
};
}
extraWhere(obj, w, qc, linkAttrs) {
if (obj.codepath && obj.codepath != "") {
// if(obj.codepath.indexOf("userarch")>0){//说明是应用管理员的查询
// console.log(obj);
// w["app_id"]=obj.appid;
// }
}
if (linkAttrs.length > 0) {
var search = obj.search;
var lnkKey = linkAttrs[0];
var strq = "$" + lnkKey.replace("~", ".") + "$";
w[strq] = {[this.db.Op.like]: "%" + search[lnkKey] + "%"};
}
return w;
}
//修改用户(user表)公司的唯一码
async putUserCompanyOnlyCode(userId, company_only_code, result) {
var customerObj = {companyOnlyCode: company_only_code};
var putSqlWhere = {where: {id: userId}};
this.updateByWhere(customerObj, putSqlWhere);
return result;
}
} }
module.exports=UserDao;
// var u=new UserDao(); module.exports = UserDao;
// var roledao=system.getObject("db.roleDao"); \ No newline at end of file
// (async ()=>{
// var users=await u.model.findAll({where:{app_id:1}});
// var role=await roledao.model.findOne({where:{code:"guest"}});
// console.log(role);
// for(var i=0;i<users.length;i++){
// await users[i].setRoles([role]);
// console.log(i);
// }
//
// })();
module.exports = function(sequelize, DataTypes) {
return sequelize.define('companys', {
id: {
type: DataTypes.INTEGER(11),
allowNull: false,
primaryKey: true,
autoIncrement: true
},
company_name: {
type: DataTypes.STRING(255),
allowNull: true
},
type: {
type: DataTypes.INTEGER(1),
allowNull: true
},
linkman: {
type: DataTypes.STRING(255),
allowNull: true
},
link_no: {
type: DataTypes.STRING(255),
allowNull: true
},
link_email: {
type: DataTypes.STRING(255),
allowNull: true
},
bank_account_name: {
type: DataTypes.STRING(255),
allowNull: true
},
open_bank: {
type: DataTypes.STRING(255),
allowNull: true
},
bank_account: {
type: DataTypes.STRING(255),
allowNull: true
},
company_nameA: {
type: DataTypes.STRING(255),
allowNull: true
},
begin_time: {
type: DataTypes.DATE,
allowNull: true
},
invalid_time: {
type: DataTypes.DATE,
allowNull: true
},
created_at: {
type: DataTypes.DATE,
allowNull: true
},
updated_at: {
type: DataTypes.DATE,
allowNull: true
},
deleted_at: {
type: DataTypes.DATE,
allowNull: true
},
version: {
type: DataTypes.INTEGER(11),
allowNull: true
}
}, {
tableName: 'tb_companys',
});
};
const system=require("../../../system"); const system = require("../../../system");
const settings=require("../../../../config/settings"); const settings = require("../../../../config/settings");
const uiconfig=system.getUiConfig2(settings.appKey); const uiconfig = system.getUiConfig2(settings.appKey);
module.exports = (db, DataTypes) => { module.exports = (db, DataTypes) => {
return db.define("user", { return db.define("user", {
ucid: { id: {
type:DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, primaryKey: true,
}, autoIncrement: true
ucname: { },
type:DataTypes.STRING, loginname: {
allowNull: false, type: DataTypes.STRING,
}, allowNull: false,
lastLoginTime: { },
type:DataTypes.DATE, password: DataTypes.STRING,
allowNull: true, status : DataTypes.INTEGER,
}, }, {
passwd: DataTypes.STRING, paranoid: true,//假的删除
},{ underscored: true,
paranoid: true,//假的删除 version: true,
underscored: true, freezeTableName: true,
version: true, // freezeTableName: true,
freezeTableName: true, // define the table's name
// freezeTableName: true, tableName: 'tbl_users',
// define the table's name validate: {},
tableName: 'xgg_admin_user', indexes: [
validate: { // Create a unique index on email
}, // {
indexes:[ // unique: true,
// Create a unique index on email // fields: ['email']
// { // },
// unique: true, //
// fields: ['email'] // // Creates a gin index on data with the jsonb_path_ops operator
// }, // {
// // fields: ['data'],
// // Creates a gin index on data with the jsonb_path_ops operator // using: 'gin',
// { // operator: 'jsonb_path_ops'
// fields: ['data'], // },
// using: 'gin', //
// operator: 'jsonb_path_ops' // // By default index name will be [table]_[fields]
// }, // // Creates a multi column partial index
// // {
// // By default index name will be [table]_[fields] // name: 'public_by_author',
// // Creates a multi column partial index // fields: ['author', 'status'],
// { // where: {
// name: 'public_by_author', // status: 'public'
// fields: ['author', 'status'], // }
// where: { // },
// status: 'public' //
// } // // A BTREE index with a ordered field
// }, // {
// // name: 'title_index',
// // A BTREE index with a ordered field // method: 'BTREE',
// { // fields: ['author', {attribute: 'title', collate: 'en_US', order: 'DESC', length: 5}]
// name: 'title_index', // }
// method: 'BTREE', ]
// fields: ['author', {attribute: 'title', collate: 'en_US', order: 'DESC', length: 5}] });
// }
]
});
} }
const system = require("../../../system");
const ServiceBase = require("../../sve.base");
const settings = require("../../../../config/settings");
class CompanysService extends ServiceBase {
constructor() {
super("all", ServiceBase.getDaoName(CompanysService));
}
async signPage(params) {
var currentPage = Number(params.currentPage || 0);
var pageSize = Number(params.pageSize || 10);
var where = {};
if (params.company_name) {
where.company_name = {
[this.db.Op.like]: "%" + params.company_name + "%"
};
}
this.addWhereTime(where, 'begin_time', params.signBegin, params.signEnd, true);
var orderby = [
["id", 'desc']
];
var attributes = [`id`, `company_name`, `type`, `linkman`, `link_no`, `link_email`, `bank_account_name`, `open_bank`, `bank_account`, `company_nameA`, `begin_time`, `invalid_time`];
var page = await this.getPageList(currentPage, pageSize, where, orderby, attributes);
if (page && page.rows) {
for (var row of page.rows) {
this.handleDate(row, ["begin_time", "invalid_time"]);
}
}
return page;
}
}
module.exports = CompanysService;
\ No newline at end of file
const system = require("../../../system"); const system = require("../../../system");
const ServiceBase = require("../../sve.base") const ServiceBase = require("../../sve.base");
const settings = require("../../../../config/settings") const settings = require("../../../../config/settings");
class UserService extends ServiceBase { class UserService extends ServiceBase {
constructor() { constructor() {
super("auth", ServiceBase.getDaoName(UserService)); super("auth", ServiceBase.getDaoName(UserService));
this.platformUtils = system.getObject("util.businessManager.opPlatformUtils"); }
}
async saveUser(user) {
var u = await this.dao.findOne({
ucid: user.ucid,
}) || {};
u.ucid = user.ucid; async register(user) {
u.ucname = user.ucname; let ss = await this.dao.register(user);
u.passwd = user.passwd;
u.lastLoginTime = user.lastLoginTime;
if(u.id) {
u = await this.dao.create(ucid);
} else {
await u.save();
} }
return u;
}
async authByCode(opencode) { async userPage(pageInfo, search) {
var existedUser = null; var currentPage = Number(pageInfo.pageNo || 1);
var rawUser = null; var pageSize = Number(pageInfo.pageSize || 10);
var openuser = await this.apiCallWithAk(settings.paasUrl() + "api/auth/accessAuth/authByCode", { opencode: opencode });
if (openuser) { var where = {};
//先查看自己系统中是否已经存在当前用户
existedUser = await this.dao.model.findOne({ where: { ucname: openuser.userName, ucid: openuser.account_id }, raw: true }); if (search.nickName) {
if (!existedUser) { where.nickName = {
existedUser = await this.register(openuser); [this.db.Op.like]: "%" + search.nickName + "%"
};
} }
rawUser = existedUser;
rawUser.Roles = openuser.Roles; if (search.userName) {
} where.userName = search.userName;
return rawUser;
}
async getUserLoginInfo(token) {
var acckapp = await this.cacheManager["ApiUserCache"].cache(token, null, settings.usertimeout);
}
async register(openuser) {
var param = {
ucname: openuser.userName, ucid: openuser.account_id,
lastLoginTime: new Date()
}
var cruser = await this.dao.create(param);
return cruser;
}
//在平台进行登录,返回目标认证地址
async navSysSetting(user) {
var sysLoginUrl = settings.paasUrl() + "web/auth/userCtl/login?appKey=" + settings.appKey + "\&toKey=" + settings.paasKey;
var x = { userName: user.userName, password: user.password, mobile: user.mobile };
var restResult = await this.restS.execPost({ u: x }, sysLoginUrl);
if (restResult) {
var rtnres = JSON.parse(restResult.stdout);
if (rtnres.status == 0) {
return rtnres.data;
} }
if (search.mobile) {
where.mobile = search.mobile;
}
if(search.isBack) {
where.utype = Number(search.isBack) - 1;
}
var orderby = [
["id", 'desc']
];
return await this.getPageList(currentPage, pageSize, where, orderby);
} }
return null;
}
async getUserByUserNamePwd(u) {
var user = await this.dao.model.findOne({
where: { userName: u.userName, password: u.password, app_id: u.app_id },
include: [
{ model: this.db.models.role, as: "Roles", attributes: ["id", "code"] },
]
});
return user;
}
async checkSameName(uname, appid) {
var ac = await this.dao.model.findOne({ where: { userName: uname, app_id: appid } });
var rtn = { isExist: false };
if (ac) {
rtn.isExist = true;
}
return rtn;
}
} }
module.exports = UserService;
// var task=new UserService(); module.exports = UserService;
// task.getUserStatisticGroupByApp().then(function(result){ \ No newline at end of file
// console.log((result));
// }).catch(function(e){
// console.log(e);
// });
...@@ -33,6 +33,28 @@ class System { ...@@ -33,6 +33,28 @@ class System {
bizmsg: req && req.session && req.session.bizmsg ? req.session.bizmsg : "empty" bizmsg: req && req.session && req.session.bizmsg ? req.session.bizmsg : "empty"
}; };
} }
static getResult2(data,req,okmsg="操作成功",errmsg="操作失败"){
var result={
status:0,
msg:okmsg,
data:data,
};
if(req && req.session && req.session.bizmsg){
result.bizmsg=req.session.bizmsg;
req.session.bizmsg=null;
}else{
result.bizmsg="empty";
}
if(!data){
result.status=-1;
result.msg=errmsg;
}
return result;
}
static getErrResult2(errmsg) {
return this.getResult2(null, null, null, errmsg);
}
/** /**
* 请求返回成功 * 请求返回成功
* @param {*} data 操作成功返回的数据 * @param {*} data 操作成功返回的数据
......
...@@ -6,14 +6,14 @@ var settings={ ...@@ -6,14 +6,14 @@ var settings={
db:10, db:10,
}, },
database:{ database:{
dbname : "xgg", dbname : "bpo_stat",
user: "write", user: "write",
password: "write", password: "write",
config: { config: {
host: '192.168.18.237', host: '192.168.18.237',
port: 3306, port: 3306,
// host: '43.247.184.35', // host: '43.247.184.35',
// port: 8899, // port: 8899,s
dialect: 'mysql', dialect: 'mysql',
operatorsAliases: false, operatorsAliases: false,
pool: { pool: {
......
...@@ -5,50 +5,50 @@ var userCtl = system.getObject("web.auth.userCtl"); ...@@ -5,50 +5,50 @@ var userCtl = system.getObject("web.auth.userCtl");
const redisClient = system.getObject("util.redisClient"); const redisClient = system.getObject("util.redisClient");
module.exports = function (app) { module.exports = function (app) {
app.all("/web/*", async function (req, res, next) { // app.all("/web/*", async function (req, res, next) {
var xggadminsid; // var xggadminsid;
var jsonUser = req.session.user; // var jsonUser = req.session.user;
// var jsonUser = null; // // var jsonUser = null;
if(!jsonUser) { // if(!jsonUser) {
xggadminsid = req.headers["xggadminsid"] || ""; // xggadminsid = req.headers["xggadminsid"] || "";
jsonUser = await redisClient.get(xggadminsid); // jsonUser = await redisClient.get(xggadminsid);
if(jsonUser) { // if(jsonUser) {
jsonUser = JSON.parse(jsonUser); // jsonUser = JSON.parse(jsonUser);
} // }
} // }
//
if (req.url.indexOf("auth/userCtl/login") > 0 || // if (req.url.indexOf("auth/userCtl/login") > 0 ||
req.url.indexOf("uc/userCtl/login") > 0 || // req.url.indexOf("uc/userCtl/login") > 0 ||
req.url.indexOf("auth/userCtl/smsCode") > 0 || // req.url.indexOf("auth/userCtl/smsCode") > 0 ||
req.url.indexOf("common/metaCtl/getApiDoc") > 0 || // req.url.indexOf("common/metaCtl/getApiDoc") > 0 ||
req.url.indexOf("common/captchaCtl/captcha") > 0 || // req.url.indexOf("common/captchaCtl/captcha") > 0 ||
//
req.url.indexOf("getRsConfig") > 0) { // req.url.indexOf("getRsConfig") > 0) {
if (jsonUser) { // if (jsonUser) {
req.loginUser = jsonUser; // req.loginUser = jsonUser;
} else { // } else {
req.loginUser = null; // req.loginUser = null;
} // }
return next(); // return next();
} // }
//
if (!jsonUser) { // if (!jsonUser) {
res.end(JSON.stringify({ status: -99, msg: "no login" })); // res.end(JSON.stringify({ status: -99, msg: "no login" }));
return; // return;
} // }
//
if(xggadminsid) { // if(xggadminsid) {
redisClient.setWithEx(xggadminsid, JSON.stringify(jsonUser), 60 * 60 * 60); // redisClient.setWithEx(xggadminsid, JSON.stringify(jsonUser), 60 * 60 * 60);
} // }
//
req.loginUser = jsonUser; // req.loginUser = jsonUser;
// if(req.loginUser.uctype != 3) { // // if(req.loginUser.uctype != 3) {
// res.end(JSON.stringify({ status: -99, msg: "no deliver user, kick off" })); // // res.end(JSON.stringify({ status: -99, msg: "no deliver user, kick off" }));
// return; // // return;
// } // // }
req.loginUser = jsonUser; // req.loginUser = jsonUser;
next(); // next();
}); // });
app.get("/", async function (req, res) { app.get("/", async function (req, res) {
res.render("index", { appinfo: null, app: null }); res.render("index", { appinfo: null, app: null });
......
...@@ -26,7 +26,7 @@ var settings = { ...@@ -26,7 +26,7 @@ var settings = {
salt: "%iatpD1gcxz7iF#B", salt: "%iatpD1gcxz7iF#B",
defaultpwd: "987456", defaultpwd: "987456",
basepath: path.normalize(path.join(__dirname, '../..')), basepath: path.normalize(path.join(__dirname, '../..')),
port: process.env.NODE_PORT || 3012, port: process.env.NODE_PORT || 3013,
reqEsAddr: function () { reqEsAddr: function () {
if (this.env == "dev") { if (this.env == "dev") {
var localsettings = require("./localsettings"); var localsettings = require("./localsettings");
......
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