Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
xyqb-user2
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
head_group
xyqb-user2
Commits
e06828ab
Commit
e06828ab
authored
Jul 17, 2023
by
王亮
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
sign contracts after login.
parent
6f33ba2a
Changes
6
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
142 additions
and
81 deletions
+142
-81
ContractTemplateConfiguration.java
...group/xyqb/config/data/ContractTemplateConfiguration.java
+42
-0
WechatConfiguration.java
...a/cn/quantgroup/xyqb/config/data/WechatConfiguration.java
+0
-2
AppController.java
...antgroup/xyqb/controller/internal/user/AppController.java
+44
-34
BlackHoleRegisteredEventListener.java
...antgroup/xyqb/event/BlackHoleRegisteredEventListener.java
+29
-24
UserTagLoginEventListener.java
...a/cn/quantgroup/xyqb/event/UserTagLoginEventListener.java
+11
-1
UserServiceImpl.java
...cn/quantgroup/xyqb/service/user/impl/UserServiceImpl.java
+16
-20
No files found.
src/main/java/cn/quantgroup/xyqb/config/data/ContractTemplateConfiguration.java
0 → 100644
View file @
e06828ab
package
cn
.
quantgroup
.
xyqb
.
config
.
data
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.TypeReference
;
import
com.ctrip.framework.apollo.ConfigService
;
import
org.springframework.stereotype.Component
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@Component
public
class
ContractTemplateConfiguration
{
private
final
Map
<
String
,
List
<
Long
>>
templateMap
;
public
ContractTemplateConfiguration
()
{
String
data
=
ConfigService
.
getAppConfig
().
getProperty
(
"template.data"
,
"[]"
);
templateMap
=
JSON
.
parseObject
(
data
,
new
TypeReference
<
HashMap
<
String
,
List
<
Long
>>>()
{
});
}
/**
* 获取指定租户下指定registeredFrom的合同模版,如果没有配置,那么取租户下默认模板
* @param tenantId 租户id
* @param registeredFrom 来源
* @return List<Long>
*/
public
List
<
Long
>
getByTenantIdAndRegisteredFrom
(
Integer
tenantId
,
Long
registeredFrom
)
{
String
key
=
tenantId
+
"_"
+
registeredFrom
;
List
<
Long
>
result
=
new
ArrayList
<>();
if
(
templateMap
.
containsKey
(
key
))
{
result
=
templateMap
.
get
(
key
);
}
else
{
if
(
templateMap
.
containsKey
(
tenantId
.
toString
()))
{
result
=
templateMap
.
get
(
tenantId
.
toString
());
}
}
return
result
;
}
}
src/main/java/cn/quantgroup/xyqb/config/data/WechatConfiguration.java
View file @
e06828ab
...
...
@@ -3,13 +3,11 @@ package cn.quantgroup.xyqb.config.data;
import
cn.quantgroup.xyqb.exception.BizException
;
import
cn.quantgroup.xyqb.exception.BizExceptionEnum
;
import
cn.quantgroup.xyqb.model.WechatConfigBean
;
import
cn.quantgroup.xyqb.util.StringUtils
;
import
com.alibaba.fastjson.JSONArray
;
import
com.ctrip.framework.apollo.ConfigService
;
import
lombok.Getter
;
import
org.springframework.stereotype.Component
;
import
javax.persistence.criteria.CriteriaBuilder
;
import
java.util.List
;
import
java.util.Optional
;
...
...
src/main/java/cn/quantgroup/xyqb/controller/internal/user/AppController.java
View file @
e06828ab
This diff is collapsed.
Click to expand it.
src/main/java/cn/quantgroup/xyqb/event/BlackHoleRegisteredEventListener.java
View file @
e06828ab
package
cn
.
quantgroup
.
xyqb
.
event
;
import
cn.quantgroup.xyqb.config.data.ContractTemplateConfiguration
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.service.user.IUserService
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.springframework.amqp.rabbit.core.RabbitTemplate
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.ApplicationListener
;
import
org.springframework.stereotype.Component
;
...
...
@@ -29,12 +31,8 @@ public class BlackHoleRegisteredEventListener implements ApplicationListener<Reg
@Resource
private
RabbitTemplate
registeredNotifyBlackHoleRabbitTemplate
;
// 用户注册合同中心模版id
@Value
(
"#{'${register.templateids}'.split(',')}"
)
private
List
<
Long
>
templateIds
;
@Resource
private
IUserService
userService
;
@Autowired
private
ContractTemplateConfiguration
contractTemplateConfiguration
;
@Override
...
...
@@ -44,8 +42,11 @@ public class BlackHoleRegisteredEventListener implements ApplicationListener<Reg
LocalDate
signDate
=
LocalDate
.
now
();
String
dateStr
=
signDate
.
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy年MM月dd日"
));
int
day
=
signDate
.
getDayOfMonth
();
// 信用钱包服务与隐私协议
templateIds
.
forEach
(
id
->
{
List
<
Long
>
templates
=
contractTemplateConfiguration
.
getByTenantIdAndRegisteredFrom
(
user
.
getTenantId
(),
user
.
getRegisteredFrom
());
if
(
CollectionUtils
.
isNotEmpty
(
templates
))
{
JSONArray
array
=
new
JSONArray
();
templates
.
forEach
(
templateId
->
{
if
(
templateId
==
8
||
templateId
==
280
)
{
JSONObject
fields
=
new
JSONObject
();
fields
.
put
(
"phoneNo"
,
user
.
getPhoneNo
());
fields
.
put
(
"genarateDateStr"
,
dateStr
);
...
...
@@ -53,14 +54,18 @@ public class BlackHoleRegisteredEventListener implements ApplicationListener<Reg
JSONObject
json
=
new
JSONObject
();
json
.
put
(
"userId"
,
user
.
getId
());
json
.
put
(
"mustReal"
,
false
);
json
.
put
(
"templateId"
,
i
d
);
json
.
put
(
"templateId"
,
templateI
d
);
json
.
put
(
"fields"
,
fields
);
JSONArray
array
=
new
JSONArray
();
array
.
add
(
json
);
}
else
{
JSONObject
json
=
new
JSONObject
();
json
.
put
(
"userId"
,
user
.
getId
());
json
.
put
(
"templateId"
,
templateId
);
array
.
add
(
json
);
}
registeredNotifyBlackHoleRabbitTemplate
.
convertAndSend
(
exchange
,
routingKey
,
array
.
toString
());
});
// 不同渠道签署不同的合同模板
userService
.
channelUserSignContract
(
user
,
null
,
user
.
getTenantId
());
}
}
}
src/main/java/cn/quantgroup/xyqb/event/UserTagLoginEventListener.java
View file @
e06828ab
package
cn
.
quantgroup
.
xyqb
.
event
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.entity.UserTag
;
import
cn.quantgroup.xyqb.repository.IUserTagRepository
;
import
cn.quantgroup.xyqb.service.user.IUserService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.ApplicationListener
;
import
org.springframework.stereotype.Component
;
...
...
@@ -17,9 +19,13 @@ public class UserTagLoginEventListener implements ApplicationListener<UserLoginE
@Autowired
private
IUserTagRepository
userTagRepository
;
@Autowired
private
IUserService
userService
;
/**
* 逻辑 每次登录发送UserLoginEvent,落user_tag表
* 如果没有就新增,如果有就更新
* 如果没有就新增,如果有就更新;
* 新增一个逻辑:合同补签,登录的时候跟注册渠道不同,判断是否需要补签合同,如果需要,则补签
*
* @param userLoginEvent UserLoginEvent
*/
...
...
@@ -41,6 +47,10 @@ public class UserTagLoginEventListener implements ApplicationListener<UserLoginE
preTag
.
setUpdatedAt
(
userTag
.
getUpdatedAt
()
==
null
?
LocalDateTime
.
now
()
:
userTag
.
getUpdatedAt
());
userTagRepository
.
save
(
preTag
);
User
user
=
userService
.
findById
(
preTag
.
getUserId
(),
preTag
.
getTenantId
());
//补签合同,如果需要补签
userService
.
channelUserSignContract
(
user
,
userTag
.
getRegisteredFrom
(),
userTag
.
getTenantId
());
}
}
}
src/main/java/cn/quantgroup/xyqb/service/user/impl/UserServiceImpl.java
View file @
e06828ab
...
...
@@ -2,6 +2,7 @@ package cn.quantgroup.xyqb.service.user.impl;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.aspect.lock.RedisLock
;
import
cn.quantgroup.xyqb.config.data.ContractTemplateConfiguration
;
import
cn.quantgroup.xyqb.constant.enums.LoginType
;
import
cn.quantgroup.xyqb.controller.IBaseController
;
import
cn.quantgroup.xyqb.controller.internal.user.resp.UserFullResp
;
...
...
@@ -109,8 +110,8 @@ public class UserServiceImpl implements IUserService, IBaseController {
@Value
(
"${sc.is.open:false}"
)
private
Boolean
scIsOpen
;
@
Value
(
"${channel.register.template:null}"
)
private
String
channelTemplate
;
@
Autowired
private
ContractTemplateConfiguration
contractTemplateConfiguration
;
@Resource
private
RabbitTemplate
registeredNotifyBlackHoleRabbitTemplate
;
...
...
@@ -549,26 +550,21 @@ public class UserServiceImpl implements IUserService, IBaseController {
* @param loginFrom
*/
public
void
channelUserSignContract
(
User
user
,
Long
loginFrom
,
Integer
tenantId
)
{
if
(
Objects
.
isNull
(
user
)
||
StringUtils
.
isBlank
(
channelTemplate
)
)
{
if
(
Objects
.
isNull
(
user
))
{
return
;
}
// 如果登录来源和注册来源相同,不用补签合同
if
(
Objects
.
nonNull
(
loginFrom
)
&&
Objects
.
equals
(
user
.
getRegisteredFrom
(),
loginFrom
))
{
return
;
}
Map
<
String
,
Long
>
channelMap
=
JSON
.
parseObject
(
channelTemplate
,
new
TypeReference
<
HashMap
<
String
,
Long
>>()
{
});
Long
templateId
=
channelMap
.
get
(
String
.
valueOf
(
user
.
getRegisteredFrom
()));
boolean
needCheck
=
false
;
if
(
Objects
.
nonNull
(
loginFrom
)
&&
!
Objects
.
equals
(
user
.
getRegisteredFrom
(),
loginFrom
))
{
templateId
=
channelMap
.
get
(
String
.
valueOf
(
loginFrom
));
needCheck
=
true
;
}
List
<
Long
>
templates
=
contractTemplateConfiguration
.
getByTenantIdAndRegisteredFrom
(
tenantId
,
loginFrom
);
if
(
Objects
.
isNull
(
templateId
))
{
if
(
CollectionUtils
.
isEmpty
(
templates
))
{
return
;
}
if
(
needCheck
)
{
templates
.
forEach
(
templateId
->{
ContractRecordReq
contractRecordReq
=
new
ContractRecordReq
();
contractRecordReq
.
setTemplateId
(
templateId
);
contractRecordReq
.
setUserId
(
user
.
getId
());
...
...
@@ -577,12 +573,12 @@ public class UserServiceImpl implements IUserService, IBaseController {
if
(
Objects
.
nonNull
(
data
))
{
return
;
}
}
JSONObject
json
=
new
JSONObject
();
json
.
put
(
"userId"
,
user
.
getId
());
json
.
put
(
"templateId"
,
templateId
);
JSONArray
array
=
new
JSONArray
();
array
.
add
(
json
);
registeredNotifyBlackHoleRabbitTemplate
.
convertAndSend
(
exchange
,
routingKey
,
array
.
toString
());
});
}
}
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