Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
crm_uc
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
ikcrm_server
crm_uc
Commits
8bea813e
Commit
8bea813e
authored
6 years ago
by
houdelin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add user center service
parent
e11ca6a1
Show whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
1513 additions
and
0 deletions
+1513
-0
app/microservices/user_center/retry.rb
+48
-0
app/microservices/user_center/services/client_service.rb
+69
-0
app/microservices/user_center/services/hash_wx_pusher.rb
+110
-0
app/microservices/user_center/services/login_services.rb
+68
-0
app/microservices/user_center/services/message_service.rb
+187
-0
app/microservices/user_center/services/package_services.rb
+51
-0
app/microservices/user_center/services/user_register_service.rb
+59
-0
app/microservices/user_center/services/user_service.rb
+131
-0
app/microservices/user_center/services/wx/account_service.rb
+83
-0
app/microservices/user_center/services/wx/external_contact_service.rb
+24
-0
app/microservices/user_center/services/wx/login_service.rb
+71
-0
app/microservices/user_center/services/wx/media_service.rb
+68
-0
app/microservices/user_center/services/wx/register_callback_service.rb
+24
-0
app/microservices/user_center/services/wx/transfer_id_services.rb
+106
-0
app/microservices/user_center/services/wx_pusher.rb
+111
-0
app/microservices/user_center/trans/http_handler.rb
+98
-0
app/microservices/user_center/trans/router.rb
+171
-0
app/microservices/user_center/uc_logger.rb
+34
-0
No files found.
app/microservices/user_center/retry.rb
0 → 100644
View file @
8bea813e
module
UserCenter
class
Retry
def
self
.
query
(
&
_proc
)
value
=
nil
if
block_given?
begin
4
.
times
do
Rails
.
logger
.
info
"user_center_retry_query:
#{
Time
.
now
.
strftime
(
"%Y-%m-%d %H:%M:%S-%L"
)
}
"
value
=
_proc
.
call
break
if
value
.
present?
sleep
0.8
end
rescue
=>
e
Rails
.
logger
.
info
"retry_query_error is
#{
e
.
inspect
}
数据库连接数已超!"
end
end
value
end
def
self
.
uncached_query
(
&
_proc
)
value
=
nil
if
block_given?
begin
4
.
times
do
Rails
.
logger
.
info
"user_center_retry_query:
#{
Time
.
now
.
strftime
(
"%Y-%m-%d %H:%M:%S-%L"
)
}
"
value
=
ActiveRecord
::
Base
.
uncached
{
_proc
.
call
}
break
if
value
.
present?
sleep
0.8
end
rescue
=>
e
Rails
.
logger
.
info
"retry_query_error is
#{
e
.
inspect
}
数据库连接数已超!"
end
end
value
end
end
end
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app/microservices/user_center/services/client_service.rb
0 → 100644
View file @
8bea813e
module
UserCenter
module
Services
class
ClientService
def
self
.
create
(
org
,
opts
)
opts
=
opts
.
with_indifferent_access
client
=
Client
.
find_by
(
organization_id:
org
.
id
)
return
client
if
client
.
present?
if
AppSettings
.
ikcrm?
client
=
ikcrm_create
(
org
,
opts
)
elsif
AppSettings
.
wxwork?
client
=
lxcrm_create
(
org
,
opts
)
elsif
AppSettings
.
dingtalk?
client
=
dingcrm_create
(
org
,
opts
)
end
client
end
def
self
.
ikcrm_create
(
org
,
opts
)
ad_source
=
opts
[
:ad_source
]
source
=
opts
[
:source
]
client
=
Client
.
create
(
name:
org
.
name
,
organization_id:
org
.
id
,
account_type: :trial_account
,
source:
Client
.
sources
[
source
],
ad_source:
ad_source
,
users_count:
Organization
.
trial_account_default_users_count
,
expires_at:
Organization
.
trial_account_default_expires_at
,
version:
0
)
client
.
create_client_profile!
client
end
def
self
.
lxcrm_create
(
org
,
opts
)
source
=
opts
[
:source
]
wx_permission_type
=
:wx_free_permission
users_count
=
8
expires_at
=
100
.
years
.
from_now
client
=
Client
.
create
(
name:
org
.
name
,
organization_id:
org
.
id
,
account_type: :trial_account
,
wx_status: :wx_status_normal
,
wx_permission_type:
wx_permission_type
,
wx_account_type: :wx_trial_account
,
source:
Client
.
sources
[
source
],
users_count:
users_count
,
expires_at:
expires_at
,
version:
0
)
client
.
create_client_profile!
client
end
def
self
.
dingcrm_create
(
org
,
opts
)
end
end
end
end
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app/microservices/user_center/services/hash_wx_pusher.rb
0 → 100644
View file @
8bea813e
module
UserCenter
module
Services
class
HashWxPusher
class
<<
self
def
send_corp_oa_message
(
user
,
params
=
{})
return
unless
user
opts
=
{
uid_list:
[
user
.
uid
]
}.
merge!
(
params
).
with_indifferent_access
if
opts
[
:msg_type
].
eql?
(
'textcard'
)
&&
opts
[
:url
].
blank?
opts
[
:url
]
=
wx_message_url
(
user
.
organization
.
oid
,
nil
)
end
service
=
UserCenter
::
Services
::
MessageService
.
new
(
user
.
organization
)
service
.
send_wx_message
(
opts
)
rescue
=>
e
::
UserCenter
::
UcLogger
.
log_error
"Wx send_corp_oa_message error:
#{
e
.
message
}
"
e
.
backtrace
.
each
{
|
msg
|
::
UserCenter
::
UcLogger
.
log_error
msg
}
end
def
send_notification_text_card_message
(
notify_hash
)
user
=
User
.
find_by
(
notify_hash
[
:user_id
])
return
unless
user
opts
=
{
msg_type:
'textcard'
,
title:
notify_hash
[
:title
],
description:
wx_message_description
(
notify_hash
),
url:
wx_message_url
(
user
.
organization
.
oid
,
notify_hash
)
}
send_corp_oa_message
(
user
,
opts
)
end
def
wx_message_description
(
notify_hash
)
content
=
notify_hash
[
:body
]
if
notify_hash
[
:subject_type
]
==
"Event"
related
=
[
notify_hash
[
:extras
][
:related_item_model_name_human
].
presence
,
notify_hash
[
:extras
][
:related_item_title
].
presence
].
compact
if
related
.
size
==
2
content
=
"
#{
content
}
#{
related
.
join
(
':'
)
}
"
end
end
content
end
def
wx_message_url
(
oid
,
notify_hash
)
url
=
URI
(
CrossSites
.
crm_base_host
)
url
.
path
=
'/wx/home'
opts
=
{
oid:
oid
,
mobile_redirect_uri:
wx_mobile_message_path
(
notify_hash
),
pc_redirect_uri:
wx_pc_message_path
(
notify_hash
)
}
url
.
query
=
opts
.
to_query
url
.
to_s
end
def
wx_mobile_message_path
(
notify_hash
)
return
if
notify_hash
.
blank?
entity_name
=
notify_hash
[
:subject_type
].
to_s
subject
=
notify_hash
[
:subject_type
].
classify
.
constantize
.
find_by
(
id:
notify_hash
[
:subject_id
])
path
=
if
entity_name
==
'Event'
_event_url
=
notify_hash
[
:notify_type
]
==
'notify_dealed_remind'
?
"/calendar?date=
#{
Date
.
today
.
to_s
}
"
:
"/
#{
entity_name
.
tableize
}
/
#{
notify_hash
[
:subject_id
]
}
/event"
_event_url
.
chomp
(
'/'
)
elsif
entity_name
==
'ImportHistory'
URI
(
URI
.
encode
(
subject
.
try
(
:file_path
)))
elsif
notify_hash
[
:notify_type
]
==
'notify_approve_received_payment'
"/contracts/
#{
notify_hash
[
:extras
][
:contract_id
]
}
/show_received_payment/
#{
notify_hash
[
:extras
][
:contract_received_payment_id
]
}
"
elsif
notify_hash
[
:notify_type
]
==
'notify_birthday_remind'
&&
notify_hash
[
:subject_type
]
==
"Contact"
&&
subject
.
present?
"/customers/
#{
subject
.
customer
.
id
}
/list-contact"
elsif
notify_hash
[
:extras
].
present?
and
notify_hash
[
:extras
][
:wxwork_msg_url
].
present?
notify_hash
[
:extras
][
:wxwork_msg_url
]
else
URI
(
URI
.
encode
(
notify_hash
[
:path
])).
path
.
chomp
(
'/'
)
end
URI
.
decode_www_form_component
(
path
.
to_s
)
rescue
nil
end
def
wx_pc_message_path
(
notify_hash
)
return
if
notify_hash
.
blank?
entity_name
=
notify_hash
[
:subject_type
].
to_s
subject
=
notify_hash
[
:subject_type
].
classify
.
constantize
.
find_by
(
id:
notify_hash
[
:subject_id
])
path
=
if
entity_name
==
'ImportHistory'
&&
subject
.
present?
&&
subject
.
has_error_data
URI
(
URI
.
encode
(
subject
.
try
(
:file_path
)))
else
URI
(
URI
.
encode
(
notify_hash
[
:path
])).
path
end
URI
.
decode_www_form_component
(
path
.
to_s
)
end
end
end
end
end
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app/microservices/user_center/services/login_services.rb
0 → 100644
View file @
8bea813e
module
UserCenter
module
Services
class
LoginServices
def
initialize
(
opts
)
end
def
login
Trans
::
Router
.
login_url
end
def
vertify
(
ticket
)
opts
=
{
ticket:
ticket
}
res
=
Trans
::
HttpHandler
.
post
(
Trans
::
Router
.
verify_ticket_url
,
opts
)
end
def
app_users_login
(
phone:
,
email:
,
password:
,
corp_id:
''
)
opts
=
{
phone:
phone
,
email:
email
,
password:
password
,
corpId:
corp_id
}
res
=
Trans
::
HttpHandler
.
post
(
Trans
::
Router
.
app_users_login_url
,
opts
)
end
def
open_api_login
(
phone:
,
email:
,
password:
,
corp_id:
''
)
opts
=
{
phone:
phone
,
email:
email
,
password:
password
,
corpId:
corp_id
}
res
=
Trans
::
HttpHandler
.
post
(
Trans
::
Router
.
sso_open_api_login_url
,
opts
)
end
def
app_org_list
(
phone
)
opts
=
{
phone:
phone
}
res
=
Trans
::
HttpHandler
.
get
(
Trans
::
Router
.
app_phone_list
,
opts
)
if
res
[
:code
].
to_s
==
'0'
org_oids
=
res
[
:data
].
map
{
|
org
|
org
[
:oid
]
}
Organization
.
where
(
oid:
org_oids
).
select
(
:name
,
:corp_id
).
map
{
|
o
|
{
name:
o
.
name
,
corp_id:
o
.
corp_id
}
}
else
[]
end
end
def
user_info
(
user_token
)
opts
=
{
curUserToken:
user_token
}
res
=
Trans
::
HttpHandler
.
get
(
Trans
::
Router
.
user_info_url
,
opts
)
end
end
end
end
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app/microservices/user_center/services/message_service.rb
0 → 100644
View file @
8bea813e
module
UserCenter
module
Services
class
MessageService
attr_accessor
:org
,
:send_data
def
initialize
(
org
)
@org
=
org
end
def
send_wx_message
(
opts
=
{})
opts
=
opts
.
merge
(
channel:
'wx'
)
opts
[
:mq_queue
]
||=
'usual'
send_data
=
generate_message
(
opts
)
send_message
(
send_data
,
opts
[
:mq_queue
])
end
def
send_ding_message
(
opts
=
{})
opts
=
opts
.
merge
(
channel:
'ding'
)
opts
[
:mq_queue
]
||=
'usual'
send_data
=
generate_message
(
opts
)
send_message
(
send_data
,
opts
[
:mq_queue
])
end
# mq_queue = usual 或者 mq_queue = frequent, usual 代表业务使用的队列,frequent代表 频繁消息通知
def
send_message
(
send_data
,
mq_queue
)
RabbitmqPublisher
.
publish
(
send_data
.
to_json
,
mq_queue
==
'usual'
)
end
def
generate_message
(
opts
)
head_params
=
generate_message_head
(
opts
)
body_params
=
generate_message_body
(
opts
)
head_params
.
merge
(
body_params
)
end
def
generate_message_head
(
opts
=
{})
opts
[
:to_all
]
||=
false
opts
[
:uid_list
]
||=
[]
opts
[
:did_list
]
||=
[]
toAll
=
opts
[
:to_all
]
uidList
=
opts
[
:uid_list
]
didList
=
opts
[
:did_list
]
channel
=
opts
[
:channel
]
{
appToken:
CrossSites
[
'user_center'
][
'app_token'
],
channel:
channel
,
oid:
org
.
oid
,
toAll:
toAll
,
uidList:
uidList
,
didList:
didList
}
end
def
generate_message_body
(
opts
=
{})
msg_type
=
opts
[
:msg_type
]
body_params
=
HashWithIndifferentAccess
.
new
case
msg_type
when
'text'
body_params
.
merge!
(
msgtype:
msg_type
,
text:
{
content:
opts
[
:content
]
})
when
'image'
body_params
.
merge!
(
msgtype:
msg_type
,
image:
{
media_id:
opts
[
:media_id
]
})
when
'voice'
body_params
.
merge!
(
msgtype:
msg_type
,
voice:
{
media_id:
opts
[
:media_id
]
})
when
'video'
body_params
.
merge!
(
msgtype:
msg_type
,
video:
{
media_id:
opts
[
:media_id
],
title:
opts
[
:title
],
description:
opts
[
:description
]
})
when
'file'
body_params
.
merge!
(
msgtype:
msg_type
,
file:
{
media_id:
opts
[
:media_id
]
})
when
'textcard'
body_params
.
merge!
(
msgtype:
msg_type
,
textcard:
{
title:
opts
[
:title
],
description:
opts
[
:description
],
url:
opts
[
:url
],
btntxt:
opts
[
:btntxt
]
})
when
'news'
body_params
.
merge!
(
msgtype:
msg_type
,
news:
{
articles:
opts
[
:articles
]
})
when
'mpnews'
body_params
.
merge!
(
msgtype:
msg_type
,
news:
{
articles:
opts
[
:articles
]
})
else
::
UserCenter
::
UcLogger
.
log_info
"Wx generate_message_body opts:
#{
opts
}
"
body_params
=
HashWithIndifferentAccess
.
new
end
{
msg:
body_params
}
end
end
end
end
=begin
opts = {
to_all: false,
uid_list: [1,2],
did_list: [1,2],
msg_type: 'text',
content: 'xxx'
}
opts = {
to_all: false,
uid_list: [1,2],
did_list: [1,2],
msg_type: 'image',
media_id: '1aLwXBx2Me0WH0lePENd5zgNBA1pQzTVvfA4N78UGeN-71EvQpwQaEgVoPD0A5vVO',
}
opts = {
to_all: false,
uid_list: [1,2],
did_list: [1,2],
msg_type: 'voice',
media_id: '1aLwXBx2Me0WH0lePENd5zgNBA1pQzTVvfA4N78UGeN-71EvQpwQaEgVoPD0A5vVO',
}
opts = {
to_all: false,
uid_list: [1,2],
did_list: [1,2],
msg_type: 'video',
media_id: '1aLwXBx2Me0WH0lePENd5zgNBA1pQzTVvfA4N78UGeN-71EvQpwQaEgVoPD0A5vVO',
title: 'xxx',
description: 'xxx'
}
opts = {
to_all: false,
uid_list: [1,2],
did_list: [1,2],
msg_type: 'file',
media_id: '1aLwXBx2Me0WH0lePENd5zgNBA1pQzTVvfA4N78UGeN-71EvQpwQaEgVoPD0A5vVO',
}
opts = {
to_all: false,
uid_list: [1,2],
did_list: [1,2],
msg_type: 'textcard',
title: 'xxx',
description: 'xxx',
url: 'http://test.e1.ikcrm.com/wx/1/1/home?corp_id=wx62011238322ec3ea&agent_id=1000013&pc_redirect_uri=%2Fcustomers&mobile_redirect_uri=%2Fcustomers'
}
opts = {
to_all: false,
uid_list: [1,2],
did_list: [1,2],
msg_type: 'news',
articles: [
{
title: "中秋节礼品领取",
description: "今年中秋节公司有豪礼相送",
url: "http://www.ikcrm.com",
picurl: "http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png"
}
]
}
opts = {
to_all: false,
uid_list: [1,2],
did_list: [1,2],
msg_type: 'mpnews',
articles: [
{
title: "Title",
thumb_media_id: "1aLwXBx2Me0WH0lePENd5zgNBA1pQzTVvfA4N78UGeN-71EvQpwQaEgVoPD0A5vVO",
autho: "Author",
content_source_url: "http://www.baidu.com",
content: "Content",
digest: "Digest description"
}
]
}
mq_queue = usual 或者 mq_queue = frequent, usual 代表业务使用的队列,frequent代表 频繁消息通知
service = UserCenter::Services::MessageService.new(org)
service.send_wx_message(opts)
=end
This diff is collapsed.
Click to expand it.
app/microservices/user_center/services/package_services.rb
0 → 100644
View file @
8bea813e
module
UserCenter
module
Services
class
PackageServices
def
self
.
cache_info
(
oid
)
UcPackageCache
.
new
(
oid
).
fetch
{
info
=
self
.
info
(
oid
)
if
info
[
'code'
]
==
0
{
oid:
info
[
'data'
][
'organizationOid'
],
license_type:
info
[
'data'
][
'licenseType'
],
license_count:
info
[
'data'
][
'licenseCount'
],
expired_at:
time_parse_from_milliseconds
(
info
[
'data'
][
'expiredAt'
]),
registered_at:
time_parse_from_milliseconds
(
info
[
'data'
][
'registeredAt'
]),
started_at:
time_parse_from_milliseconds
(
info
[
'data'
][
'startedAt'
]),
version:
info
[
'data'
][
'version'
]
}.
with_indifferent_access
else
{}
end
}
end
def
self
.
info
(
oid
)
opts
=
{
oid:
oid
}
res
=
Trans
::
HttpHandler
.
get
(
Trans
::
Router
.
get_package_url
,
opts
)
end
def
self
.
time_parse_from_milliseconds
(
time
)
if
time
.
present?
Time
.
strptime
(
time
.
to_s
,
'%Q'
)
else
nil
end
end
end
end
end
# expiredAt 过期时间
# licenseCount 开通工号数量
# licenseType 版本类别: 1:免费版/2:付费版/3:试用版/4:已关闭
# organizationOid 主键
# registeredAt 注册时间
# startedAt 开始时间
# version 产品版本:1:专业版/2:基础版/3:旗舰版
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app/microservices/user_center/services/user_register_service.rb
0 → 100644
View file @
8bea813e
module
UserCenter
module
Services
class
UserRegisterService
APP_HEADER
=
{
"appToken"
=>
CrossSites
[
:user_center
][
'app_token'
],
"accessToken"
=>
CrossSites
[
:user_center
][
'access_token'
]
}
def
initialize
(
opts
)
end
def
allow_register?
(
phone:
)
res
=
check_user
(
phone:
phone
)
logger_info
(
"allow_register? phone:
#{
phone
}
res:
#{
res
}
"
)
return
(
res
&&
res
[
:code
].
to_i
==
0
)
?
res
[:
data
][
:register
]
:
false
end
def
register
(
params
)
res
=
organization_register
(
params
)
logger_info
(
"register params:
#{
params
}
res:
#{
res
}
"
)
return
(
res
&&
res
[
:code
].
to_i
==
0
)
?
res
[:
data
][
:uid
]
:
nil
end
def
check_user
(
phone:
)
opts
=
{
phone:
phone
}
res
=
Trans
::
HttpHandler
.
get
(
Trans
::
Router
.
check_user_url
,
opts
)
end
def
organization_register
(
params
)
_url
=
Trans
::
Router
.
organization_register_url
_params
=
{
phone:
params
[
:phone
],
organizationName:
params
[
:company_name
],
userName:
params
[
:name
],
passwordOne:
params
[
:password
],
passwordTwo:
params
[
:password
],
registeredWay:
params
[
:register_way
],
job:
params
[
:job
],
email:
params
[
:email
]
}
res
=
Trans
::
HttpHandler
.
post
(
_url
,
_params
,
APP_HEADER
)
end
private
def
logger_error
(
msg
,
uuid
=
nil
)
::
UserCenter
::
UcLogger
.
log_error
(
"UserRegisterService
#{
msg
}
"
,
uuid:
uuid
)
end
def
logger_info
(
msg
,
uuid
=
nil
)
::
UserCenter
::
UcLogger
.
log_info
(
"UserRegisterService
#{
msg
}
"
,
uuid:
uuid
)
end
end
end
end
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app/microservices/user_center/services/user_service.rb
0 → 100644
View file @
8bea813e
module
UserCenter
module
Services
class
UserService
attr_accessor
:user
,
:user_token_key
,
:user_valid_password_key
APP_HEADER
=
{
"accessToken"
=>
CrossSites
[
:user_center
][
'access_token'
]
}
def
initialize
(
user
=
nil
)
@user
=
user
@user_valid_password_key
=
"user_
#{
@user
.
uid
}
_valid_password_key"
if
@user
@user_token_key
=
"user_
#{
@user
.
uid
}
_token"
if
@user
end
def
get_credence
_url
=
Trans
::
Router
.
credence_url
_params
=
{
uid:
@user
.
uid
}
_headers
=
APP_HEADER
res
=
Trans
::
HttpHandler
.
get
(
_url
,
_params
,
_headers
)
res
[
:data
][
:credence
]
end
def
get_user_token
if
$redis
.
get
(
@user_token_key
).
blank?
_url
=
Trans
::
Router
.
user_token_url
_params
=
{
credence:
get_credence
}
_headers
=
APP_HEADER
res
=
Trans
::
HttpHandler
.
get
(
_url
,
_params
,
_headers
)
$redis
.
set
(
@user_token_key
,
res
[
:data
][
:userToken
],
ex:
res
[
:data
][
:expiration
].
gsub
(
'HOURS'
,
''
).
to_i
.
hours
-
30
.
minutes
)
end
$redis
.
get
(
@user_token_key
)
end
# 忘记密码时先使用手机号获取随机码
def
random
_url
=
Trans
::
Router
.
random_url
_params
=
{
phone:
@user
.
phone
}
_headers
=
APP_HEADER
res
=
Trans
::
HttpHandler
.
get
(
_url
,
_params
,
_headers
)
res
[
:data
]
end
# 忘记密码使用获取到的随机码和新密码重置
def
forget_password
(
password
,
confirm_password
)
_url
=
Trans
::
Router
.
forget_password_url
_params
=
{
random:
random
,
phone:
@user
.
phone
,
passwordOne:
password
,
passwordTwo:
confirm_password
}
_headers
=
APP_HEADER
res
=
Trans
::
HttpHandler
.
post
(
_url
,
_params
,
_headers
)
res
[
:code
].
to_i
==
0
end
# 用户重置自己密码先验证原密码正确,获取随机码
def
valid_password
(
password
)
_url
=
Trans
::
Router
.
valid_password_url
_params
=
{
uid:
@user
.
uid
,
oldPassword:
password
}
_headers
=
APP_HEADER
res
=
Trans
::
HttpHandler
.
post
(
_url
,
_params
,
_headers
)
$redis
.
set
(
@user_valid_password_key
,
res
[
:randomCode
],
ex:
1
.
hours
)
if
res
[
:code
].
to_i
==
0
res
[
:code
].
to_i
==
0
end
# 使用验证原密码获取的随机码设置新密码
def
reset_password
(
password
,
confirm_password
)
_url
=
Trans
::
Router
.
reset_password_url
_params
=
{
randomCode:
$redis
.
get
(
@user_valid_password_key
),
uid:
@user
.
uid
,
newPasswordOne:
password
,
newPasswordTwo:
confirm_password
}
_headers
=
APP_HEADER
res
=
Trans
::
HttpHandler
.
post
(
_url
,
_params
,
_headers
)
$redis
.
del
(
@user_valid_password_key
)
res
[
:code
].
to_i
==
0
end
# 用户编辑个人基本信息
def
update_personal_info
(
user_params
)
_url
=
Trans
::
Router
.
update_personal_info_url
_params
=
to_uc_user_params
(
user_params
)
_headers
=
APP_HEADER
res
=
Trans
::
HttpHandler
.
post
(
_url
,
_params
,
_headers
)
res
[
:code
].
to_i
==
0
end
# 用户更换绑定手机号
def
update_binding_phone
(
phone
)
_url
=
Trans
::
Router
.
update_binding_phone_url
_params
=
{
uid:
@user
.
uid
,
phone:
phone
}
_headers
=
APP_HEADER
res
=
Trans
::
HttpHandler
.
post
(
_url
,
_params
,
_headers
)
res
[
:code
].
to_i
==
0
end
private
def
to_uc_user_params
(
opts
=
{})
to_uc_params
=
opts
.
with_indifferent_access
.
slice
(
:name
,
:email
,
:gender
,
:job
,
:avatarUrl
)
.
merge
({
uid:
@user
.
uid
})
end
end
end
end
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app/microservices/user_center/services/wx/account_service.rb
0 → 100644
View file @
8bea813e
module
UserCenter
module
Services
module
Wx
AccountType
=
{
free:
0
,
# 免费帐号
payment:
1
,
# 付费帐号
invalid:
2
,
# 无效帐号
fail:
3
# 参数或者状态引起无法判断正确的帐号
}.
with_indifferent_access
.
freeze
AccountStatus
=
{
ok:
0
,
exceed_user_limitation:
1
,
fail:
3
# 获取权限失败, 公司未激活该套件
}.
with_indifferent_access
.
freeze
FREE_USERS_COUNT
=
8
class
AccountService
attr_reader
:org
,
:package
def
initialize
(
org
)
@org
=
org
@package
=
UserCenter
::
Services
::
PackageServices
.
cache_info
(
@org
.
oid
)
end
def
account_type
if
@package
.
blank?
return
AccountType
.
fetch
(
:invalid
)
end
@package
[
:license_type
].
in?
([
2
,
3
])
?
AccountType
.
fetch
(:
payment
)
:
AccountType
.
fetch
(
:free
)
end
def
account_type_text
AccountType
.
invert
.
fetch
(
account_type
)
end
def
subscriber_status
return
'active'
if
@package
.
present?
end
def
expired?
DateTime
.
now
>
@package
[
:expired_at
]
if
@package
.
present?
end
def
expired_at
@package
[
:expired_at
].
to_s
rescue
nil
end
def
started_at
@package
[
:started_at
].
to_s
rescue
nil
end
def
status
if
@package
.
blank?
return
AccountStatus
.
fetch
(
:fail
)
end
if
@package
[
:license_type
]
==
3
&&
org
.
users_count
.
to_i
>
FREE_USERS_COUNT
return
AccountStatus
.
fetch
(
:exceed_user_limitation
)
end
AccountStatus
.
fetch
(
:ok
)
end
def
status_text
AccountStatus
.
invert
.
fetch
(
status
)
end
def
trial_payment_lt_15d?
@org
.
can_trial?
end
def
in_trial_lt_15d?
@org
.
on_trial?
end
end
end
end
end
This diff is collapsed.
Click to expand it.
app/microservices/user_center/services/wx/external_contact_service.rb
0 → 100644
View file @
8bea813e
module
UserCenter
module
Services
module
Wx
class
ExternalContactService
attr_accessor
:org
def
initialize
(
org
)
@org
=
org
end
def
get_external_contact
(
external_userid
)
opts
=
{
oid:
org
.
oid
,
externalUserid:
external_userid
}
Trans
::
HttpHandler
.
get
(
Trans
::
Router
.
get_external_contact_url
,
opts
)
end
end
end
end
end
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app/microservices/user_center/services/wx/login_service.rb
0 → 100644
View file @
8bea813e
module
UserCenter
module
Services
module
Wx
class
LoginService
LOGIN_CALLBACK_URL
=
CrossSites
[
'user_center'
][
'login_callback_url'
]
def
initialize
(
opts
)
end
def
get_corp_id
(
oid
)
opts
=
{
oid:
oid
}
Trans
::
HttpHandler
.
get
(
Trans
::
Router
.
get_corp_id_url
,
opts
)
end
def
qr_code_login
opts
=
{
successUrl:
LOGIN_CALLBACK_URL
}
Trans
::
HttpHandler
.
get
(
Trans
::
Router
.
qrcode_login_url
,
opts
)
end
def
login
(
corpId
,
code
)
opts
=
{
corpId:
corpId
,
code:
code
}
Trans
::
HttpHandler
.
get
(
Trans
::
Router
.
get_user_info_by_code_url
,
opts
)
end
# 企业微信服务商后台点击进入
def
sso_login
(
authcode
)
opts
=
{
authCode:
authcode
}
Trans
::
HttpHandler
.
get
(
Trans
::
Router
.
get_login_info_by_auth_code_url
,
opts
)
end
def
get_jsapi_signature
(
oid
,
noncestr
,
timestamp
,
url
,
get_provider:
false
)
opts
=
{
oid:
oid
,
noncestr:
noncestr
,
timestamp:
timestamp
,
url:
url
,
getProvider:
get_provider
}
Trans
::
HttpHandler
.
get
(
Trans
::
Router
.
get_jsapi_signature_url
,
opts
)
end
def
get_jsagent_signature_url
(
oid
,
noncestr
,
timestamp
,
url
)
opts
=
{
oid:
oid
,
noncestr:
noncestr
,
timestamp:
timestamp
,
url:
url
}
Trans
::
HttpHandler
.
get
(
Trans
::
Router
.
get_jsagent_signature_url
,
opts
)
end
end
end
end
end
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app/microservices/user_center/services/wx/media_service.rb
0 → 100644
View file @
8bea813e
module
UserCenter
module
Services
module
Wx
class
MediaService
attr_accessor
:oid
,
:user
,
:access_token
def
initialize
(
user
)
@user
=
user
@oid
=
user
.
organization
.
oid
end
def
create_attachments
(
medias
)
create_attachments_for
(
medias
)
do
|
attach
,
url
|
AttachmentUrlCreateWorker
.
perform_async
(
attach
.
id
,
url
)
end
end
def
sync_create_attachments
(
medias
)
create_attachments_for
(
medias
)
do
|
attach
,
url
|
AttachmentUrlCreateWorker
.
new
.
perform
(
attach
.
id
,
url
)
end
end
def
create_audios
(
medias
)
medias
.
map
do
|
media
|
audio
=
Audio
.
create
(
wx_media_id:
media
[
:id
],
duration:
media
[
:duration
])
media_url
=
get_media_url
(
oid:
oid
,
media_id:
media
[
:id
])
AudioUrlCreateWorker
.
perform_async
(
audio
.
id
,
media_url
,
file_type:
'audio/amr'
)
audio
end
end
def
create_attachments_for
(
medias
)
medias
.
map
do
|
media
|
attachment
=
Attachment
.
create
(
wx_media_id:
media
[
:id
],
user:
user
,
organization_id:
user
.
organization
.
id
)
media_url
=
get_media_url
(
oid:
oid
,
media_id:
media
[
:id
])
yield
attachment
,
media_url
attachment
end
end
def
get_media_url
(
oid:
,
media_id:
)
params
=
{
access_token:
get_access_token
(
oid
),
media_id:
media_id
}
_url
=
"
#{
WxSetting
.
qyapi_host
}
/cgi-bin/media/get"
_url
<<
"?
#{
params
.
to_query
}
"
_url
end
def
get_access_token
(
oid
)
return
@access_token
if
@access_token
.
present?
opts
=
{
oid:
oid
}
res
=
Trans
::
HttpHandler
.
get
(
Trans
::
Router
.
get_wx_corp_access_token_url
,
opts
)
if
res
[
'code'
]
==
0
@access_token
=
res
[
'data'
][
'accessToken'
]
end
@access_token
end
end
end
end
end
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app/microservices/user_center/services/wx/register_callback_service.rb
0 → 100644
View file @
8bea813e
module
UserCenter
module
Services
module
Wx
class
RegisterCallbackService
def
initialize
end
def
push_to_uc_register_callback
(
data
,
channel
)
opts
=
{
xml:
{
RegisterCode
:
data
[
:RegisterCode
],
AuthCorpId
:
data
[
:AuthCorpId
]
}
}
res
=
Trans
::
HttpHandler
.
post
(
Trans
::
Router
.
get_register_callback_url
(
channel
),
opts
)
end
end
end
end
end
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app/microservices/user_center/services/wx/transfer_id_services.rb
0 → 100644
View file @
8bea813e
module
UserCenter
module
Services
module
Wx
class
TransferIdServices
class
<<
self
def
get_uids_by_wx_userids
(
oid
,
*
userids
)
userids
.
flatten!
_url
=
UserCenter
::
Trans
::
Router
.
get_uid_by_wx_userid_url
_params
=
{
oid:
oid
,
wxUseridList:
userids
}
res
=
UserCenter
::
Trans
::
HttpHandler
.
post
(
_url
,
_params
)
if
res
[
:code
].
to_s
.
eql?
(
'0'
)
userids
.
length
==
1
?
res
[:
data
][
userids
[
0
]]
:
res
[
:data
]
else
nil
end
end
alias_method
:get_uid_by_wx_userid
,
:get_uids_by_wx_userids
def
get_wx_userids_by_uids
(
oid
,
*
uids
)
uids
.
flatten!
_url
=
UserCenter
::
Trans
::
Router
.
get_wx_userid_by_uid_url
_params
=
{
oid:
oid
,
uids:
uids
}
res
=
UserCenter
::
Trans
::
HttpHandler
.
post
(
_url
,
_params
)
if
res
[
:code
].
to_s
.
eql?
(
'0'
)
uids
.
length
==
1
?
res
[:
data
][
uids
[
0
].
to_s
]
:
res
[
:data
]
else
nil
end
end
alias_method
:get_wx_userid_by_uid
,
:get_wx_userids_by_uids
def
get_oid_by_wx_corp_id
(
corp_id
)
get_oid_key
=
"
#{
corp_id
}
_to_oid"
if
$redis
.
get
(
get_oid_key
).
blank?
_url
=
UserCenter
::
Trans
::
Router
.
get_oid_by_wx_corp_id_url
_params
=
{
corpId:
corp_id
}
res
=
UserCenter
::
Trans
::
HttpHandler
.
get
(
_url
,
_params
)
if
res
[
:code
].
to_s
.
eql?
(
'0'
)
$redis
.
set
(
get_oid_key
,
res
[
:data
][
:oid
],
ex:
7
.
days
)
else
return
nil
end
end
$redis
.
get
(
get_oid_key
).
to_i
end
def
get_wx_corp_id_and_agent_id_by_oid
(
oid
)
get_corp_id_key
=
"
#{
oid
}
_to_wx_corp_id"
get_agent_id_key
=
"
#{
oid
}
_to_agent_id"
if
$redis
.
get
(
get_corp_id_key
).
blank?
||
$redis
.
get
(
get_agent_id_key
).
blank?
_url
=
UserCenter
::
Trans
::
Router
.
get_wx_corp_id_by_oid_url
_params
=
{
oid:
oid
}
res
=
UserCenter
::
Trans
::
HttpHandler
.
get
(
_url
,
_params
)
if
res
[
:code
].
to_s
.
eql?
(
'0'
)
$redis
.
set
(
get_corp_id_key
,
res
[
:data
][
:corpId
],
ex:
7
.
days
)
$redis
.
set
(
get_agent_id_key
,
res
[
:data
][
:agentId
],
ex:
7
.
days
)
else
return
[
''
,
''
]
end
end
[
$redis
.
get
(
get_corp_id_key
),
$redis
.
get
(
get_agent_id_key
)]
end
def
get_wx_corp_id_by_oid
(
oid
)
get_wx_corp_id_and_agent_id_by_oid
(
oid
)[
0
]
end
def
get_agent_id_by_oid
(
oid
)
get_wx_corp_id_and_agent_id_by_oid
(
oid
)[
1
]
end
def
get_suite_token_by_suite_id
(
suite_id
)
_url
=
UserCenter
::
Trans
::
Router
.
get_suite_token_url
_params
=
{
suiteId:
suite_id
}
res
=
UserCenter
::
Trans
::
HttpHandler
.
get
(
_url
,
_params
)
res
[
:data
][
:token
]
end
def
clear_agent_id_cache
(
oid
)
get_agent_id_key
=
"
#{
oid
}
_to_agent_id"
$redis
.
del
(
get_agent_id_key
)
end
end
end
end
end
end
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app/microservices/user_center/services/wx_pusher.rb
0 → 100644
View file @
8bea813e
module
UserCenter
module
Services
class
WxPusher
class
<<
self
def
send_corp_oa_message
(
user
,
params
=
{})
return
unless
user
opts
=
{
uid_list:
[
user
.
uid
]
}.
merge!
(
params
).
with_indifferent_access
if
opts
[
:msg_type
].
eql?
(
'textcard'
)
&&
opts
[
:url
].
blank?
opts
[
:url
]
=
wx_message_url
(
user
.
organization
.
oid
,
nil
)
end
service
=
UserCenter
::
Services
::
MessageService
.
new
(
user
.
organization
)
service
.
send_wx_message
(
opts
)
rescue
=>
e
::
UserCenter
::
UcLogger
.
log_error
"Wx send_corp_oa_message error:
#{
e
.
message
}
"
e
.
backtrace
.
each
{
|
msg
|
::
UserCenter
::
UcLogger
.
log_error
msg
}
end
def
send_notification_text_card_message
(
notification
)
user
=
notification
.
user
return
unless
user
opts
=
{
msg_type:
'textcard'
,
title:
notification
.
title
,
description:
wx_message_description
(
notification
),
url:
wx_message_url
(
user
.
organization
.
oid
,
notification
)
}
send_corp_oa_message
(
user
,
opts
)
end
def
wx_message_description
(
notification
)
content
=
notification
.
body
if
notification
.
subject_type
==
"Event"
related
=
[
notification
.
extras
[
:related_item_model_name_human
].
presence
,
notification
.
extras
[
:related_item_title
].
presence
].
compact
if
related
.
size
==
2
content
=
"
#{
content
}
#{
related
.
join
(
':'
)
}
"
end
end
content
end
def
wx_message_url
(
oid
,
notification
)
url
=
URI
(
CrossSites
.
crm_base_host
)
url
.
path
=
'/wx/home'
opts
=
{
oid:
oid
,
mobile_redirect_uri:
wx_mobile_message_path
(
notification
),
pc_redirect_uri:
wx_pc_message_path
(
notification
)
}
url
.
query
=
opts
.
to_query
url
.
to_s
end
def
wx_mobile_message_path
(
notification
)
return
if
notification
.
blank?
entity_name
=
notification
.
subject_type
.
to_s
path
=
if
entity_name
==
'Event'
_event_url
=
notification
.
notify_type
==
'notify_dealed_remind'
?
"/calendar?date=
#{
Date
.
today
.
to_s
}
"
:
"/
#{
entity_name
.
tableize
}
/
#{
notification
.
subject_id
}
/event"
_event_url
.
chomp
(
'/'
)
elsif
entity_name
==
'ImportHistory'
URI
(
URI
.
encode
(
notification
.
subject
.
try
(
:file_path
)))
elsif
notification
.
notify_type
==
'notify_approve_received_payment'
"/contracts/
#{
notification
.
extras
[
:contract_id
]
}
/show_received_payment/
#{
notification
.
extras
[
:contract_received_payment_id
]
}
"
elsif
notification
.
notify_type
==
'notify_birthday_remind'
&&
notification
.
subject_type
==
"Contact"
&&
notification
.
subject
.
present?
"/customers/
#{
notification
.
subject
.
customer
.
id
}
/list-contact"
elsif
notification
.
extras
.
present?
and
notification
.
extras
[
:wxwork_msg_url
].
present?
notification
.
extras
[
:wxwork_msg_url
]
elsif
entity_name
==
'Lead'
&&
notification
.
notify_type
.
in?
(
%w(notify_flow_into_common_pool notify_transfer_common_pool)
)
"/"
else
URI
(
URI
.
encode
(
notification
.
content_path
)).
path
.
chomp
(
'/'
)
end
URI
.
decode_www_form_component
(
path
.
to_s
)
rescue
nil
end
def
wx_pc_message_path
(
notification
)
return
if
notification
.
blank?
entity_name
=
notification
.
subject_type
.
to_s
subject
=
notification
.
subject
path
=
if
entity_name
==
'ImportHistory'
&&
subject
.
present?
&&
subject
.
has_error_data
URI
(
URI
.
encode
(
notification
.
subject
.
try
(
:file_path
)))
else
URI
(
URI
.
encode
(
notification
.
content_path
)).
path
end
URI
.
decode_www_form_component
(
path
.
to_s
)
end
end
end
end
end
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app/microservices/user_center/trans/http_handler.rb
0 → 100644
View file @
8bea813e
### TODO 处理网络超时异常
module
UserCenter
module
Trans
class
HttpHandler
HTTParty
::
Basement
.
default_options
.
update
(
verify:
false
)
APP_TOKEN
=
CrossSites
[
'user_center'
][
'app_token'
]
TIMEOUT
=
10
UC_SUCCESS_CODE
=
0
ACCEPT_HEADER
=
{
"Accept"
=>
"application/json;"
}
JSON_HEADER
=
{
'Content-Type'
=>
'application/json'
,
'appToken'
=>
APP_TOKEN
}
def
self
.
get
(
url
,
params
=
{},
header
=
{})
headers
=
HashWithIndifferentAccess
.
new
headers
.
merge!
ACCEPT_HEADER
headers
.
merge!
JSON_HEADER
headers
.
merge!
header
start_time
=
Time
.
now
body
=
{}
begin
response
=
HTTParty
.
get
(
url
,
query:
params
,
headers:
headers
,
timeout:
TIMEOUT
)
exec_time
=
Time
.
now
-
start_time
::
UserCenter
::
UcLogger
.
logger
.
info
"get_json: url = '
#{
url
}
', query =
#{
params
}
, headers = '
#{
headers
}
',exec_time =
#{
exec_time
}
, response =
#{
response
.
inspect
}
"
body
=
response
.
body
rescue
body
[
:msg
]
=
"网络超时"
body
[
:code
]
=
-
1
end
body
=
JSON
.
parse
(
body
).
with_indifferent_access
if
body
.
is_a?
String
unless
body
[
:code
].
to_i
.
eql?
(
UC_SUCCESS_CODE
)
@errmethod
=
"GET"
@errurl
=
url
@errcode
=
body
[
:code
]
body
.
merge!
(
code:
@errcode
)
end
@errmethod
=
"GET"
@errurl
=
url
@errcode
=
UC_SUCCESS_CODE
HashWithIndifferentAccess
.
new
body
end
def
self
.
post
(
url
,
params
=
{},
header
=
{})
rescue_result
=
{
code:
-
1
,
msg:
"服务异常,请稍后重试"
}
headers
=
HashWithIndifferentAccess
.
new
headers
.
merge!
ACCEPT_HEADER
headers
.
merge!
JSON_HEADER
headers
.
merge!
header
start_time
=
Time
.
now
body
=
{}
begin
response
=
HTTParty
.
post
(
url
.
to_str
,
:body
=>
params
.
to_json
,
:headers
=>
headers
,
timeout:
TIMEOUT
)
exec_time
=
Time
.
now
-
start_time
::
UserCenter
::
UcLogger
.
logger
.
info
"Success: post_json: url =
#{
url
}
, url = '
#{
url
}
', headers = '
#{
headers
}
',"
\
" data =
#{
params
.
inspect
}
, exec_time =
#{
exec_time
}
, response =
#{
response
.
inspect
}
"
body
=
response
.
body
rescue
body
[
:msg
]
=
"网络超时"
body
[
:code
]
=
-
1
::
UserCenter
::
UcLogger
.
logger
.
info
"Network Timeout Error: post_json: url =
#{
url
}
, url = '
#{
url
}
', headers = '
#{
headers
}
',"
\
" data =
#{
params
.
inspect
}
"
end
if
body
.
is_a?
String
body
=
JSON
.
parse
(
body
).
with_indifferent_access
rescue
rescue_result
end
unless
body
[
:code
].
to_i
.
eql?
(
UC_SUCCESS_CODE
)
@errmethod
=
"POST"
@errurl
=
url
@errcode
=
body
[
:code
]
body
.
merge!
(
code:
@errcode
)
end
@errmethod
=
"POST"
@errurl
=
url
@errcode
=
UC_SUCCESS_CODE
HashWithIndifferentAccess
.
new
body
end
end
end
end
This diff is collapsed.
Click to expand it.
app/microservices/user_center/trans/router.rb
0 → 100644
View file @
8bea813e
module
UserCenter
module
Trans
module
Router
BASE_URL
=
CrossSites
[
'user_center'
][
'host'
]
APP_TOKEN
=
CrossSites
[
'user_center'
][
'app_token'
]
LOGIN_CALLBACK_URL
=
CrossSites
[
'user_center'
][
'login_callback_url'
]
def
login_url
BASE_URL
+
"/web/index.html?registered_way=normal_source&redirectUri="
+
LOGIN_CALLBACK_URL
+
"&appToken="
+
APP_TOKEN
+
"#/login"
end
def
logout_url
(
current_uid
)
BASE_URL
+
"/web/index.html?"
+
"appToken="
+
APP_TOKEN
+
"&redirectUri="
+
LOGIN_CALLBACK_URL
+
"&type=logout&uid=
#{
current_uid
}
"
+
"#/login"
end
def
verify_ticket_url
BASE_URL
+
"/api/sso/verifyTicket"
end
def
app_users_login_url
BASE_URL
+
"/api/sso/app/users/login"
end
def
sso_open_api_login_url
BASE_URL
+
"/api/sso/openApi/login"
end
def
app_phone_list
BASE_URL
+
"/api/organization/app/phone/list"
end
def
user_info_url
BASE_URL
+
"/api/sso/getUserInfo"
end
# 请求忘记密码接口重置密码之前要先请求random接口,并把获取到的随机码作为忘记密码接口的参数
def
random_url
BASE_URL
+
"/api/auth/random"
end
# 忘记密码接口
def
forget_password_url
BASE_URL
+
"/api/user/management/forgetPassword"
end
# 验证用户密码是否正确,验证正确获取一个随机码,作为重置密码接口的参数
def
valid_password_url
BASE_URL
+
"/api/app/user/checkLoginUserOldPassword"
end
# 重置密码接口,用于用户自己重置密码
def
reset_password_url
BASE_URL
+
"/api/app/user/resetLoginUserPassword"
end
# 用户编辑自己基本信息
def
update_personal_info_url
BASE_URL
+
"/api/app/user/updatePersonalInformation"
end
# 用户绑定手机号
def
update_binding_phone_url
BASE_URL
+
"/api/app/user/updateBindingPhone"
end
def
get_package_url
BASE_URL
+
"/api/organization/getPackage"
end
# 用户中心部门和用户设置页面
def
department_url
BASE_URL
+
"/web/index.html?appToken="
+
APP_TOKEN
+
"#/department"
end
# 用户中心公司信息页面
def
organization_url
BASE_URL
+
"/web/index.html?appToken="
+
APP_TOKEN
+
"#/company"
end
# 用户中心账户信息页面
def
account_url
BASE_URL
+
"/web/index.html?appToken="
+
APP_TOKEN
+
"#/account"
end
# 根据手机号查应用和企业
def
check_user_url
BASE_URL
+
"/api/user/management/getOrganizationAndApp"
end
# 注册企业
def
organization_register_url
BASE_URL
+
"/api/organization/register"
end
# 通过uid获取credence
def
credence_url
BASE_URL
+
"/api/auth/getCredenceByUid"
end
# 通过uid和credence获取userToken
def
user_token_url
BASE_URL
+
"/api/auth/getTokensByUid"
end
# 获取jsapi签名
def
get_jsapi_signature_url
BASE_URL
+
"/api/wx/getJsApiSignature"
end
# 获取jsagentConfig
def
get_jsagent_signature_url
BASE_URL
+
"/api/wx/getJsAgentSignature"
end
# 根据企业微信应用免登获取的code换取用户信息
def
get_user_info_by_code_url
BASE_URL
+
"/api/wx/getUserInfoByCode"
end
# 企业微信网页登录获取的authcode换取用户信息
def
get_login_info_by_auth_code_url
BASE_URL
+
"/api/wx/getLoginInfoByAuthCode"
end
# 使用企业微信userid换取uid
def
get_wx_userid_by_uid_url
BASE_URL
+
"/api/wx/getWxUseridByUid"
end
# 使用uid换取企业微信userid
def
get_uid_by_wx_userid_url
BASE_URL
+
"/api/wx/getUidByWxUserid"
end
# 使用企业微信corp_id换取oid
def
get_oid_by_wx_corp_id_url
BASE_URL
+
"/api/wx/getOidByCorpId"
end
# 使用oid换取企业微信corp_id
def
get_wx_corp_id_by_oid_url
BASE_URL
+
"/api/wx/getCorpIdByOid"
end
# qrcode login
def
qrcode_login_url
BASE_URL
+
"/api/wx/
#{
APP_TOKEN
}
/qrLogin"
end
def
get_wx_corp_access_token_url
BASE_URL
+
"/api/wx/getWxCorpAccessToken"
end
def
get_external_contact_url
BASE_URL
+
"/api/wx/getExternalContact"
end
# 根据suiteid获取token
def
get_suite_token_url
BASE_URL
+
"/api/wx/getEncodingToken"
end
def
get_register_callback_url
(
channel
)
BASE_URL
+
"/api/wx/
#{
channel
}
/register_callback"
end
extend
self
end
end
end
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app/microservices/user_center/uc_logger.rb
0 → 100644
View file @
8bea813e
module
UserCenter
class
UcLogger
attr_accessor
:errors
LOG_FILE
=
"
#{
Rails
.
root
}
/log/uc_gateway.log"
ERROR_LOG_FILE
=
"
#{
Rails
.
root
}
/log/uc_gateway_errors.log"
def
self
.
logger
@logger
||=
ActiveSupport
::
TaggedLogging
.
new
(
ActiveSupport
::
Logger
.
new
(
LOG_FILE
))
end
def
self
.
error_logger
@logger
||=
ActiveSupport
::
TaggedLogging
.
new
(
ActiveSupport
::
Logger
.
new
(
ERROR_LOG_FILE
))
end
def
self
.
log_info
(
msg
,
uuid:
nil
)
uuid
||=
RequestStore
.
store
[
:request_uuid
]
logger
.
tagged
(
Time
.
now
.
strftime
(
'%Y-%m-%d %H:%M:%S.%L'
),
uuid
)
{
logger
.
info
msg
}
end
def
self
.
log_error
(
msg
,
uuid:
nil
)
uuid
||=
RequestStore
.
store
[
:request_uuid
]
error_logger
.
tagged
(
Time
.
now
.
strftime
(
'%Y-%m-%d %H:%M:%S.%L'
),
uuid
)
{
error_logger
.
error
msg
}
end
def
self
.
exception_log
(
e
)
::
UserCenter
::
UcLogger
.
error_logger
.
error
"exception:
#{
e
.
message
}
"
e
.
backtrace
.
each
{
|
message
|
::
UserCenter
::
UcLogger
.
error_logger
.
error
"exception:
#{
message
}
"
}
end
end
end
This diff is collapsed.
Click to expand it.
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