Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Z
zhichan
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
蒋勇
zhichan
Commits
a28201d4
Commit
a28201d4
authored
Mar 03, 2020
by
王昆
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gsb
parent
ac9e63f0
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
349 additions
and
8 deletions
+349
-8
xgg-deliver/app/base/controller/impl/uc/userCtl.js
+16
-5
xgg-deliver/app/base/system.js
+1
-1
xgg-deliver/app/base/utils/redisClientTax.js
+306
-0
xgg-deliver/app/config/routes/web.js
+4
-1
xgg-deliver/app/config/settings.js
+22
-1
No files found.
xgg-deliver/app/base/controller/impl/uc/userCtl.js
View file @
a28201d4
var
system
=
require
(
"../../../system"
)
const
settings
=
require
(
"../../../../config/settings"
)
const
CtlBase
=
require
(
"../../ctlms.base"
);
const
md5
=
require
(
"MD5"
);
const
uuidv4
=
require
(
'uuid/v4'
);
...
...
@@ -12,6 +13,8 @@ class UserCtl extends CtlBase {
this
.
redisClient
=
system
.
getObject
(
"util.redisClient"
);
this
.
captchaSve
=
system
.
getObject
(
"service.common.captchaSve"
);
this
.
deliverSve
=
system
.
getObject
(
"service.common.deliverSve"
);
this
.
redisClientTax
=
system
.
getObject
(
"util.redisClientTax"
);
}
async
login
(
pobj
,
pobj2
,
req
,
res
)
{
...
...
@@ -38,9 +41,12 @@ class UserCtl extends CtlBase {
}
loginUser
=
loginUser
.
data
;
var
xggadminsid
=
await
this
.
setLogin
(
loginUser
);
var
loginKey
=
await
this
.
setLogin
(
loginUser
);
let
ntapi
=
settings
.
ntapi
();
let
rs
=
{
key
:
xggadminsid
,
key
:
loginKey
.
xggadminsid
,
taxLoginUrl
:
ntapi
.
taxLoginUrl
+
`?username=
${
loginUser
.
ucname
}
&cookieId=
${
loginKey
.
subsid
}
&target=tax`
,
loginname
:
loginUser
.
ucname
,
auth
:
loginUser
.
auth
,
isManager
:
loginUser
.
isManager
,
menus
:
{
gtArr
:
this
.
getOrderMenu
(
loginUser
),
pjArr
:
this
.
getInvoiceMenu
(
loginUser
)}
...
...
@@ -54,10 +60,15 @@ class UserCtl extends CtlBase {
}
async
setLogin
(
user
)
{
var
xggadminsid
=
"jfs_"
+
uuidv4
();
user
.
loginsid
=
"jfs_"
+
uuidv4
();
user
.
subsid
=
"sub_"
+
uuidv4
();
// xggadminsid = "jfs_" + "3cb49932-fa02-44f0-90db-9f06fe02e5c7";
await
this
.
redisClient
.
setWithEx
(
xggadminsid
,
JSON
.
stringify
(
user
),
60
*
60
*
5
);
return
xggadminsid
;
await
this
.
redisClient
.
setWithEx
(
user
.
loginsid
,
JSON
.
stringify
(
user
),
60
*
60
*
5
);
await
this
.
redisClientTax
.
setWithEx
(
user
.
subsid
,
(
user
.
nt_user_id
||
""
).
toString
(),
60
*
60
*
5
);
return
{
xggadminsid
:
user
.
loginsid
,
subsid
:
user
.
subsid
,
};
}
async
getMenu
(
qobj
,
pobj
,
req
)
{
...
...
xgg-deliver/app/base/system.js
View file @
a28201d4
...
...
@@ -174,7 +174,7 @@ class System {
var
domain2
=
"http://39.107.234.14"
;
return
{
// 公共服务
common
:
domain
+
":3102"
+
path
,
common
:
domain
2
+
":3102"
+
path
,
// common: "http://127.0.0.1:3102" + path,
// 商户服务
...
...
xgg-deliver/app/base/utils/redisClientTax.js
0 → 100644
View file @
a28201d4
const
system
=
require
(
"../system"
);
const
redis
=
require
(
"redis"
);
const
settings
=
require
(
"../../config/settings"
);
const
bluebird
=
require
(
"bluebird"
);
bluebird
.
promisifyAll
(
redis
);
// const logCtl=system.getObject("web.oplogCtl");
class
redisClientTax
{
constructor
()
{
const
redisConfig
=
settings
.
redisTax
();
this
.
client
=
redis
.
createClient
({
host
:
redisConfig
.
host
,
port
:
redisConfig
.
port
,
password
:
redisConfig
.
password
,
db
:
redisConfig
.
db
,
retry_strategy
:
function
(
options
)
{
// if (options.error && options.error.code === 'ECONNREFUSED') {
// // End reconnecting on a specific error and flush all commands with
// // a individual error
// return new Error('The server refused the connection');
// }
if
(
options
.
total_retry_time
>
1000
*
60
*
60
)
{
// End reconnecting after a specific timeout and flush all commands
// with a individual error
return
new
Error
(
'Retry time exhausted'
);
}
if
(
options
.
attempt
>
10
)
{
// End reconnecting with built in error
return
10000
;
}
// reconnect after
return
Math
.
min
(
options
.
attempt
*
100
,
3000
);
}
});
// return client.multi().get('foo').execAsync().then(function(res) {
// console.log(res); // => 'bar'
// });
this
.
client
.
on
(
"error"
,
function
(
err
)
{
console
.
log
(
"Error "
+
err
);
// //日志记录
// logCtl.error({
// optitle:"redis this.client.on异常:",
// op:"base/utils/redisClient/this.client.on",
// content:err,
// clientIp:""
// });
});
this
.
subclient
=
this
.
client
.
duplicate
();
this
.
subclient
.
on
(
"error"
,
function
(
err
)
{
console
.
log
(
"Error "
+
err
);
// //日志记录
// logCtl.error({
// optitle:"redis this.subclient.on异常:",
// op:"base/utils/redisClient/this.subclient.on",
// content:err,
// clientIp:""
// });
});
var
self
=
this
;
this
.
subclient
.
on
(
"message"
,
async
function
(
channel
,
message
)
{
console
.
log
(
channel
,
'------------- redis message ------------------- '
);
if
(
self
.
taskmanager
)
{
if
(
channel
==
"task"
)
{
if
(
message
==
"newtask"
)
{
(
async
(
that
)
=>
{
var
msg2
=
await
that
.
rpop
(
"tasklist"
);
if
(
msg2
)
{
console
.
log
(
"taskName+++++"
+
msg2
);
var
msgs2
=
msg2
.
split
(
"_"
);
var
action
=
msgs2
[
0
];
var
taskName
=
msgs2
[
1
];
var
exp
=
msgs2
[
2
];
await
that
.
taskmanager
.
addTask
(
taskName
,
exp
);
}
})(
self
)
}
else
{
(
async
(
msg
,
that
)
=>
{
var
msgs
=
msg
.
split
(
"_"
);
var
action
=
msgs
[
0
];
if
(
action
==
"delete"
)
{
var
taskName
=
msgs
[
1
];
await
that
.
taskmanager
.
deleteTask
(
taskName
);
}
})(
message
,
self
);
}
}
}
if
(
self
.
chatserver
)
{
if
(
channel
!=
"task"
)
{
var
message
=
JSON
.
parse
(
message
);
console
.
log
(
message
,
"------------------------------------------ publish message"
);
if
(
channel
==
"brc"
)
{
//如果是广播频道,则发送广播到客户端
self
.
chatserver
.
server
.
emit
(
"brc"
,
message
);
}
else
if
(
self
.
chatserver
.
users
[
channel
])
{
if
(
message
.
type
)
{
self
.
chatserver
.
users
[
channel
].
client
.
emit
(
message
.
type
,
message
.
data
);
}
else
{
//持久化
self
.
chatserver
.
users
[
channel
].
client
.
emit
(
"chatmsg"
,
message
);
}
}
}
}
});
}
async
subscribe
(
channel
,
chatserver
)
{
if
(
!
this
.
chatserver
)
{
this
.
chatserver
=
chatserver
;
}
return
this
.
subclient
.
subscribeAsync
(
channel
);
}
async
unsubscribe
(
channel
)
{
//this.chatserver=null;
return
this
.
subclient
.
unsubscribeAsync
(
channel
);
}
async
subscribeTask
(
channel
,
taskmanager
)
{
if
(
!
this
.
taskmanager
)
{
this
.
taskmanager
=
taskmanager
;
}
return
this
.
subclient
.
subscribeAsync
(
channel
);
}
async
publish
(
channel
,
msg
)
{
console
.
log
(
channel
+
":"
+
msg
);
return
this
.
client
.
publishAsync
(
channel
,
msg
);
}
async
rpush
(
key
,
val
)
{
return
this
.
client
.
rpushAsync
(
key
,
val
);
}
async
llen
(
key
)
{
return
this
.
client
.
llenAsync
(
key
);
}
async
rpushWithEx
(
key
,
val
,
t
)
{
var
p
=
this
.
rpush
(
key
,
val
);
this
.
client
.
expire
(
key
,
t
);
return
p
;
}
async
rpop
(
key
)
{
return
this
.
client
.
rpopAsync
(
key
);
}
async
lpop
(
key
)
{
return
this
.
client
.
lpopAsync
(
key
);
}
async
lrem
(
key
,
val
)
{
return
this
.
client
.
lremAsync
(
key
,
1
,
val
);
}
async
ltrim
(
key
,
s
,
e
)
{
return
this
.
client
.
ltrimAsync
(
key
,
s
,
e
);
}
async
clearlist
(
key
)
{
await
this
.
client
.
ltrim
(
key
,
-
1
,
-
1
);
await
this
.
client
.
ltrim
(
key
,
1
,
-
1
);
return
0
;
}
async
flushall
()
{
console
.
log
(
"sss"
);
return
this
.
client
.
flushallAsync
();
}
async
keys
(
p
)
{
return
this
.
client
.
keysAsync
(
p
);
}
async
set
(
key
,
val
)
{
if
(
typeof
val
==
"undefined"
||
typeof
key
==
"undefined"
)
{
console
.
log
(
"......................cache val undefined"
);
console
.
log
(
key
);
return
null
;
}
return
this
.
client
.
setAsync
(
key
,
val
);
}
async
setWithEx
(
key
,
val
,
t
)
{
var
p
=
this
.
client
.
setAsync
(
key
,
val
);
this
.
client
.
expire
(
key
,
t
);
return
p
;
}
async
get
(
key
)
{
return
this
.
client
.
getAsync
(
key
);
}
async
delete
(
key
)
{
return
this
.
client
.
delAsync
(
key
);
}
async
hmset
(
key
,
jsonObj
)
{
return
this
.
client
.
hmsetAsync
(
key
,
jsonObj
);
}
async
hmsetWithEx
(
key
,
jsonObj
,
t
)
{
var
p
=
this
.
client
.
hmsetAsync
(
key
,
jsonObj
);
this
.
client
.
expire
(
key
,
t
);
return
p
;
}
async
hgetall
(
key
)
{
return
this
.
client
.
hgetallAsync
(
key
);
}
async
hincrby
(
key
,
f
,
n
)
{
return
this
.
client
.
hincrbyAsync
(
key
,
f
,
n
);
}
async
sadd
(
key
,
vals
)
{
await
this
.
client
.
saddAsync
(
key
,
...
vals
);
return
this
.
scard
(
key
);
}
async
scard
(
key
)
{
return
this
.
client
.
scardAsync
(
key
);
}
async
srem
(
key
,
val
)
{
return
this
.
client
.
sremAsync
(
key
,
val
);
}
async
sismember
(
key
,
val
)
{
return
this
.
client
.
sismemberAsync
(
key
,
val
);
}
async
smembers
(
key
)
{
return
this
.
client
.
smembersAsync
(
key
);
}
async
exists
(
key
)
{
return
this
.
client
.
existsAsync
(
key
);
}
async
incr
(
key
)
{
return
this
.
client
.
incrAsync
(
key
);
}
async
genrateId
(
tableName
)
{
// "时间戳 - tableName的hashCode + (1000 - 9999) + 随机8位数"
var
time
=
parseInt
(
new
Date
().
getTime
()
/
1000
);
var
tabcode
=
this
.
hashCode
(
tableName
);
var
id
=
await
this
.
client
.
incrAsync
(
tableName
)
%
9999
;
if
(
id
<
10
)
{
id
=
"000"
+
id
;
}
else
if
(
id
<
100
)
{
id
=
"00"
+
id
;
}
else
if
(
id
<
1000
)
{
id
=
"0"
+
id
;
}
return
"1"
+
Math
.
abs
(
time
+
tabcode
)
+
id
+
this
.
getRandomNumber
(
2
);
}
hashCode
(
str
)
{
var
hash
=
0
;
if
(
str
.
length
==
0
)
return
hash
;
for
(
var
i
=
0
;
i
<
str
.
length
;
i
++
)
{
var
char
=
str
.
charCodeAt
(
i
);
hash
=
((
hash
<<
5
)
-
hash
)
+
char
;
hash
=
hash
&
hash
;
}
return
hash
;
}
getRandomNumber
(
len
)
{
len
=
len
||
32
;
var
chars
=
'0123456789'
;
var
maxPos
=
chars
.
length
;
var
pwd
=
''
;
for
(
var
i
=
0
;
i
<
len
;
i
++
)
{
pwd
+=
chars
.
charAt
(
Math
.
floor
(
Math
.
random
()
*
maxPos
));
}
return
pwd
;
}
}
module
.
exports
=
redisClientTax
;
// var client=new RedisClient();
// (async ()=>{
// await client.rpush("tasklist","xxx");
// await client.rpush("tasklist","xxx");
// var len=await client.llen("tasklist");
// //await client.clearlist("tasklist");
// len=await client.llen("tasklist");
// console.log(len);
// })()
// client.keys('*').then(s=>{
// console.log(s);
// });
// let clients = {};
// clients.watcher = redis.createClient({ ... } );
// clients.alterer = clients.watcher.duplicate();
// client.sadd("h",["ok","jy","ok"]).then(function(r){
// console.log(r);
// });
// client.smembers("h").then(function(r){
// console.log(r);
// });
// client.sismember("h","ok").then(function(r){
// console.log(r);
// });
// console.dir(client);ti.exec( callback )回调函数参数err:返回null或者Array,出错则返回对应命令序列链中发生错误的错误信息,这个数组中最后一个元素是源自exec本身的一个EXECABORT类型的错误
// r.set("hello","oooo").then(function(result){
// console.log(result);
// });
// r.get("hello").then(function(result){
// console.log(result);
// });
// client.hmset("user_1",{name:"jy",age:13}).then(function(r){
// console.log(r);
//
// });
// client.hincrby("user_1","age",2).then(function(r){
// console.log(r);
// setTimeout(function(){
// client.hgetall("user_1").then(function(u){
// console.log(u);
// });
// },3000);
// });
\ No newline at end of file
xgg-deliver/app/config/routes/web.js
View file @
a28201d4
...
...
@@ -38,7 +38,10 @@ module.exports = function (app) {
}
if
(
xggadminsid
)
{
redisClient
.
setWithEx
(
xggadminsid
,
JSON
.
stringify
(
jsonUser
),
60
*
60
*
60
);
redisClient
.
setWithEx
(
xggadminsid
,
JSON
.
stringify
(
jsonUser
),
60
*
60
*
5
);
if
(
jsonUser
.
subSid
)
{
redisClient
.
setWithEx
(
jsonUser
.
subSid
,
JSON
.
stringify
(
jsonUser
),
60
*
60
*
5
);
}
}
req
.
loginUser
=
jsonUser
;
...
...
xgg-deliver/app/config/settings.js
View file @
a28201d4
...
...
@@ -88,10 +88,14 @@ var settings = {
if
(
this
.
env
==
"dev"
)
{
domain
=
"https://nt-api.gongsibao.com"
;
}
else
{
domain
=
"https://n
t
-api.gongsibao.com"
;
domain
=
"https://n
ga
-api.gongsibao.com"
;
}
return
{
// 税务登录地址
taxLoginUrl
:
domain
+
"/web/auth"
,
// 财务地址
finLoginUrl
:
domain
+
"/web/auth"
,
// 创建交付商&管理员
synUserDetails
:
domain
+
"/nga-api/synUserDetails"
,
// 交付商启用/禁用
...
...
@@ -117,6 +121,23 @@ var settings = {
};
}
},
redisTax
:
function
()
{
if
(
this
.
env
==
"dev"
)
{
return
{
host
:
"47.94.0.45"
,
port
:
"6379"
,
password
:
"nga2020"
,
db
:
"0"
,
};
}
else
{
return
{
host
:
"47.94.0.45"
,
port
:
"6379"
,
password
:
"nga2020"
,
db
:
"0"
,
};
}
},
database
:
function
()
{
if
(
this
.
env
==
"dev"
)
{
var
localsettings
=
require
(
"./localsettings"
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment