Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
H
haoban-manage3.0
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
haoban3.0
haoban-manage3.0
Commits
82873826
Commit
82873826
authored
Aug 18, 2022
by
徐高华
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
删除代码
parent
e1fd9114
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
0 additions
and
373 deletions
+0
-373
MemberUnionRelateConsumer.java
...oban/manage/api/service/mq/MemberUnionRelateConsumer.java
+0
-21
MemberUnionRelateConsumerImpl.java
...oban/manage/service/mq/MemberUnionRelateConsumerImpl.java
+0
-24
AbstractConsumerProcessor.java
...anage/service/mq/processor/AbstractConsumerProcessor.java
+0
-43
AddMemberUnionRelateConsumerProcessor.java
...e/mq/processor/AddMemberUnionRelateConsumerProcessor.java
+0
-280
MessageApiServiceImpl.java
...anage/service/service/out/impl/MessageApiServiceImpl.java
+0
-5
No files found.
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/service/mq/MemberUnionRelateConsumer.java
deleted
100644 → 0
View file @
e1fd9114
package
com
.
gic
.
haoban
.
manage
.
api
.
service
.
mq
;
/**
* desc:微信会员消费服务
*
* @author: YongEn
* @date: 2022/2/16
**/
public
interface
MemberUnionRelateConsumer
{
/**
* desc: 添加好友关系-存量会员新增
* "routerName": "addMemberUnionRelateMq"
*
* @param messageParam 消息参数
* @author : YongEn
* @date : 2022/2/16
*/
void
addMemberUnionRelate
(
String
messageParam
);
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/mq/MemberUnionRelateConsumerImpl.java
deleted
100644 → 0
View file @
e1fd9114
package
com
.
gic
.
haoban
.
manage
.
service
.
mq
;
import
com.gic.haoban.manage.api.service.mq.MemberUnionRelateConsumer
;
import
com.gic.haoban.manage.service.mq.processor.AddMemberUnionRelateConsumerProcessor
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
/**
* desc:微信会员消费服务实现
*
* @author: YongEn
* @date: 2022/2/16
**/
@Service
public
class
MemberUnionRelateConsumerImpl
implements
MemberUnionRelateConsumer
{
@Autowired
private
AddMemberUnionRelateConsumerProcessor
addMemberUnionRelateConsumerProcessor
;
@Override
public
void
addMemberUnionRelate
(
String
messageParam
)
{
addMemberUnionRelateConsumerProcessor
.
process
(
messageParam
);
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/mq/processor/AbstractConsumerProcessor.java
deleted
100644 → 0
View file @
e1fd9114
package
com
.
gic
.
haoban
.
manage
.
service
.
mq
.
processor
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
/**
* desc:处理器
*
* @author: YongEn
* @date: 2022/2/16
**/
public
abstract
class
AbstractConsumerProcessor
<
S
,
R
>
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
AbstractConsumerProcessor
.
class
);
public
void
process
(
S
messageParam
)
{
logger
.
info
(
"接收到消费处理, 参数{}"
,
messageParam
);
// 参数解析
R
r
=
paramParse
(
messageParam
);
// 执行处理
doProcess
(
r
);
}
/**
* desc: 参数解析
*
* @param s 原数据
* @return : {@link R}
* @author : YongEn
* @date : 2022/2/16
*/
abstract
R
paramParse
(
S
s
);
/**
* desc: 执行处理
*
* @param r 解析参数
* @return :
* @author : YongEn
* @date : 2022/2/16
*/
abstract
void
doProcess
(
R
r
);
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/mq/processor/AddMemberUnionRelateConsumerProcessor.java
deleted
100644 → 0
View file @
e1fd9114
package
com
.
gic
.
haoban
.
manage
.
service
.
mq
.
processor
;
import
cn.hutool.crypto.SecureUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.gic.commons.util.EntityUtil
;
import
com.gic.haoban.manage.api.dto.ExternalUserDTO
;
import
com.gic.haoban.manage.api.dto.MemberUnionidRelatedDTO
;
import
com.gic.haoban.manage.api.dto.StaffClerkRelationDTO
;
import
com.gic.haoban.manage.api.service.MemberUnionidRelatedApiService
;
import
com.gic.haoban.manage.service.entity.TabHaobanClerkMainStoreRelated
;
import
com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated
;
import
com.gic.haoban.manage.service.entity.TabHaobanStaff
;
import
com.gic.haoban.manage.service.entity.TabHaobanWxEnterpriseRelated
;
import
com.gic.haoban.manage.service.exception.WxApiLimitException
;
import
com.gic.haoban.manage.service.pojo.ExternalUserPojo
;
import
com.gic.haoban.manage.service.pojo.bo.MemberUnionRelatedBO
;
import
com.gic.haoban.manage.service.service.*
;
import
com.gic.haoban.manage.service.util.EmojiFilterUtil
;
import
com.gic.member.api.dto.MemberDTO
;
import
com.gic.member.api.service.MemberService
;
import
com.gic.redis.data.util.RedisUtil
;
import
com.gic.wechat.api.service.qywx.QywxUserApiService
;
import
org.apache.commons.lang3.StringUtils
;
import
org.redisson.api.RRateLimiter
;
import
org.redisson.api.RateIntervalUnit
;
import
org.redisson.api.RateType
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.Objects
;
/**
* desc:添加微信好友关系消息消费处理器
* 逻辑来源:
*
* @author: YongEn
* @date: 2022/2/16
* @see MemberUnionidRelatedApiService#addMemberUnionidRelatedNew(com.gic.haoban.manage.api.dto.MemberUnionidRelatedDTO)
**/
@Component
public
class
AddMemberUnionRelateConsumerProcessor
extends
AbstractConsumerProcessor
<
String
,
MemberUnionRelatedBO
>
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
AddMemberUnionRelateConsumerProcessor
.
class
);
@Autowired
private
QywxUserApiService
qywxUserApiService
;
@Autowired
private
MemberUnionRelatedService
memberUnionRelatedService
;
@Autowired
private
StaffClerkRelationService
staffClerkRelationService
;
@Autowired
private
ClerkMainStoreRelatedService
clerkMainStoreRelatedService
;
@Autowired
private
WxEnterpriseRelatedService
wxEnterpriseRelatedService
;
@Autowired
private
ExternalClerkRelatedService
externalClerkRelatedService
;
@Autowired
private
MemberService
memberService
;
@Autowired
private
StaffService
staffService
;
@Override
MemberUnionRelatedBO
paramParse
(
String
s
)
{
return
JSON
.
parseObject
(
s
,
MemberUnionRelatedBO
.
class
);
}
@Override
void
doProcess
(
MemberUnionRelatedBO
bo
)
{
logger
.
info
(
"企业刷新历史好友start:{}"
,
JSON
.
toJSONString
(
bo
));
RRateLimiter
rateLimiter
=
RedisUtil
.
getRedisClient
().
getRateLimiter
(
"add:mbr:rel:list:limit"
);
rateLimiter
.
trySetRate
(
RateType
.
OVERALL
,
5
,
1
,
RateIntervalUnit
.
SECONDS
);
rateLimiter
.
acquire
();
String
staffId
=
bo
.
getStaffId
();
String
wxEnterpriseId
=
bo
.
getWxEnterpriseId
();
String
selfExternalUserid
=
bo
.
getExternalUserid
();
MemberUnionidRelatedDTO
dto
=
getAndMergeMemberUnion
(
bo
);
if
(
Objects
.
isNull
(
dto
))
{
logger
.
info
(
"新增外部联系人, 自建与第三方均为空"
);
return
;
}
String
unionid
=
dto
.
getUnionid
();
String
addCreateTime
=
dto
.
getAddCreateTime
();
if
(
StringUtils
.
isEmpty
(
unionid
))
{
logger
.
info
(
"unionId为空, 会员无法查询"
);
return
;
}
// 设置主门店
TabHaobanClerkMainStoreRelated
mainStoreRelated
=
clerkMainStoreRelatedService
.
getMainStoreByStaffId
(
staffId
,
wxEnterpriseId
);
if
(
mainStoreRelated
==
null
)
{
logger
.
info
(
"【新增外部联系人】主门店为空:{}"
,
staffId
);
return
;
}
StaffClerkRelationDTO
staffClerkRelationDTO
=
staffClerkRelationService
.
getOneBindByStoreId
(
staffId
,
mainStoreRelated
.
getStoreId
());
if
(
staffClerkRelationDTO
==
null
)
{
logger
.
info
(
"【新增外部联系人】导购和clerk关联为空"
);
return
;
}
TabHaobanStaff
staff
=
staffService
.
selectById
(
staffId
);
if
(
staff
==
null
)
{
logger
.
info
(
"【新增外部联系人】导购为空,staffId:{}"
,
staffId
);
return
;
}
String
wxUserId
=
staff
.
getWxUserId
();
String
enterpriseId
=
staffClerkRelationDTO
.
getEnterpriseId
();
TabHaobanWxEnterpriseRelated
wxEnterpriseRelated
=
wxEnterpriseRelatedService
.
getByEnterpriseId
(
wxEnterpriseId
,
enterpriseId
);
if
(
wxEnterpriseRelated
==
null
)
{
logger
.
info
(
"没有存在企业关联:{},{}"
,
staffClerkRelationDTO
.
getWxEnterpriseId
(),
enterpriseId
);
return
;
}
MemberDTO
member
=
memberService
.
getMemberByUnionid
(
unionid
,
enterpriseId
);
if
(
member
==
null
)
{
logger
.
info
(
"会员信息不存在unionId:{}"
,
unionid
);
return
;
}
String
memberId
=
member
.
getMemberId
();
// 转换外部联系人id
String
externalUserid
=
qywxUserApiService
.
toServiceExternalUserid
(
bo
.
getCorpid
(),
bo
.
getSecret
(),
selfExternalUserid
);
logger
.
info
(
"自建转换第三方返回:{}"
,
externalUserid
);
// 幂等
MemberUnionidRelatedDTO
exsitDTO
=
memberUnionRelatedService
.
getByWxUserIdAndUnionId
(
wxEnterpriseId
,
staffId
,
dto
.
getUnionid
());
String
memberUnionIdRelatedId
;
if
(
Objects
.
isNull
(
exsitDTO
))
{
dto
.
setMemberId
(
memberId
);
dto
.
setEnterpriseId
(
enterpriseId
);
dto
.
setExternalUserid
(
externalUserid
);
dto
.
setStaffId
(
staffId
);
// 创建memberUnion 临时表关联
memberUnionIdRelatedId
=
memberUnionRelatedService
.
addMemberUnionidRelated
(
dto
);
}
else
{
exsitDTO
.
setAvatar
(
dto
.
getAvatar
());
exsitDTO
.
setMemberId
(
memberId
);
exsitDTO
.
setUnionid
(
unionid
);
exsitDTO
.
setAddCreateTime
(
addCreateTime
);
exsitDTO
.
setEnterpriseId
(
enterpriseId
);
exsitDTO
.
setExternalUserid
(
externalUserid
);
exsitDTO
.
setSelfExternalUserid
(
selfExternalUserid
);
exsitDTO
.
setStaffId
(
staffId
);
memberUnionRelatedService
.
update
(
exsitDTO
);
memberUnionIdRelatedId
=
exsitDTO
.
getMemberUnionidRelatedId
();
}
if
(
StringUtils
.
isEmpty
(
memberUnionIdRelatedId
))
{
logger
.
info
(
"添加临时关联表memberUnionIdRelate失败"
);
return
;
}
// 幂等
TabHaobanExternalClerkRelated
external
=
externalClerkRelatedService
.
getByParams
(
staffId
,
wxEnterpriseId
,
dto
.
getExternalName
(),
addCreateTime
);
String
relationKey
=
SecureUtil
.
md5
(
staffId
+
selfExternalUserid
);
if
(
external
!=
null
)
{
logger
.
info
(
"已经存在好友关系"
);
external
.
setMemberId
(
memberId
);
external
.
setMemberUnionidRelatedId
(
memberUnionIdRelatedId
);
external
.
setExternalUserId
(
externalUserid
);
external
.
setExternalName
(
dto
.
getExternalName
());
external
.
setRelationKey
(
relationKey
);
external
.
setUnionid
(
unionid
);
external
.
setStoreId
(
staffClerkRelationDTO
.
getStoreId
());
external
.
setEnterpriseId
(
enterpriseId
);
external
.
setClerkId
(
staffClerkRelationDTO
.
getClerkId
());
external
.
setStaffId
(
staffId
);
external
.
setMemberId
(
memberId
);
external
.
setHeadUrl
(
dto
.
getAvatar
());
external
.
setStatusFlag
(
1
);
externalClerkRelatedService
.
update
(
external
);
}
else
{
logger
.
info
(
"新增TabHaobanExternalClerkRelated"
);
TabHaobanExternalClerkRelated
related
=
new
TabHaobanExternalClerkRelated
();
related
.
setAddCreateTime
(
addCreateTime
);
related
.
setClerkId
(
staffClerkRelationDTO
.
getClerkId
());
related
.
setEnterpriseId
(
enterpriseId
);
related
.
setExternalName
(
dto
.
getExternalName
());
related
.
setExternalUserId
(
externalUserid
);
related
.
setStaffId
(
staffId
);
related
.
setHeadUrl
(
dto
.
getAvatar
());
related
.
setMemberUnionidRelatedId
(
memberUnionIdRelatedId
);
related
.
setStoreId
(
staffClerkRelationDTO
.
getStoreId
());
related
.
setRelationKey
(
relationKey
);
related
.
setUnionid
(
unionid
);
related
.
setWxEnterpriseId
(
wxEnterpriseId
);
related
.
setMemberId
(
memberId
);
related
.
setStatusFlag
(
1
);
externalClerkRelatedService
.
insert
(
related
);
}
logger
.
info
(
"企业刷新历史好友end"
);
}
private
MemberUnionidRelatedDTO
getAndMergeMemberUnion
(
MemberUnionRelatedBO
bo
)
{
// 查询自建
ExternalUserDTO
selfExternalUserDTO
=
getCorpSelfExternalUseridInfo
(
bo
.
getWxEnterpriseId
(),
bo
.
getWxUserId
(),
bo
.
getExternalUserid
(),
bo
.
getSecret
(),
bo
.
getCorpid
()
);
if
(
Objects
.
isNull
(
selfExternalUserDTO
))
{
logger
.
info
(
"新增外部联系人, 自建为空"
);
return
null
;
}
MemberUnionidRelatedDTO
dto
=
EntityUtil
.
changeEntityNew
(
MemberUnionidRelatedDTO
.
class
,
bo
);
// 合并数据
dto
.
setExternalName
(
EmojiFilterUtil
.
removeAllEmoji
(
selfExternalUserDTO
.
getName
()
));
dto
.
setAddCreateTime
(
selfExternalUserDTO
.
getAddCreateTime
()
);
dto
.
setAvatar
(
selfExternalUserDTO
.
getAvatar
()
);
dto
.
setUnionid
(
selfExternalUserDTO
.
getUnionId
()
);
dto
.
setSelfExternalUserid
(
selfExternalUserDTO
.
getExternalUserId
()
);
return
dto
;
}
public
ExternalUserDTO
getCorpSelfExternalUseridInfo
(
String
wxEnterpriseId
,
String
wxUserId
,
String
externalUserId
,
String
secret
,
String
corpId
)
{
String
unionIdJson
=
qywxUserApiService
.
getCorpSelfExternalUseridInfo
(
corpId
,
secret
,
externalUserId
);
if
(
StringUtils
.
isBlank
(
unionIdJson
))
{
logger
.
info
(
"好友不存在"
);
return
null
;
}
else
if
(
"1"
.
equals
(
unionIdJson
))
{
logger
.
info
(
"接口调用被限制"
);
throw
new
WxApiLimitException
(
"getCorpSelfExternalUseridInfo接口调用被限制"
);
}
ExternalUserPojo
pojo
=
getExternalUserPojo
(
unionIdJson
,
wxUserId
,
wxEnterpriseId
);
return
EntityUtil
.
changeEntityByJSON
(
ExternalUserDTO
.
class
,
pojo
);
}
private
ExternalUserPojo
getExternalUserPojo
(
String
unionIdJson
,
String
userId1
,
String
wxEnterpriseId
)
{
ExternalUserPojo
pojo
=
new
ExternalUserPojo
();
String
unionId
=
""
;
String
follow_user
=
""
;
String
createTime
=
""
;
String
userId
=
""
;
String
avatar
=
""
;
String
relaName
=
""
;
String
externalUserId
=
""
;
if
(
StringUtils
.
isNotBlank
(
unionIdJson
))
{
JSONObject
jo
=
JSON
.
parseObject
(
unionIdJson
);
String
external_contact
=
jo
.
getString
(
"external_contact"
);
if
(
StringUtils
.
isNotBlank
(
external_contact
))
{
JSONObject
jt
=
JSON
.
parseObject
(
external_contact
);
unionId
=
jt
.
getString
(
"unionid"
);
relaName
=
EmojiFilterUtil
.
filterEmojiLast
(
jt
.
getString
(
"name"
),
true
);
if
(
StringUtils
.
isBlank
(
relaName
))
{
relaName
=
"--"
;
}
avatar
=
jt
.
getString
(
"avatar"
);
externalUserId
=
jt
.
getString
(
"external_userid"
);
}
follow_user
=
jo
.
getString
(
"follow_user"
);
if
(
StringUtils
.
isNotBlank
(
follow_user
))
{
JSONArray
j
=
JSON
.
parseArray
(
follow_user
);
for
(
Object
object
:
j
)
{
String
followJson
=
JSON
.
toJSONString
(
object
);
JSONObject
follow
=
JSON
.
parseObject
(
followJson
);
userId
=
follow
.
getString
(
"userid"
);
if
(
userId
.
equals
(
userId1
))
{
createTime
=
follow
.
getString
(
"createtime"
);
}
}
}
}
pojo
.
setAddCreateTime
(
createTime
);
pojo
.
setAvatar
(
avatar
);
pojo
.
setName
(
relaName
);
pojo
.
setUnionId
(
unionId
);
pojo
.
setExternalUserId
(
externalUserId
);
pojo
.
setWxEnterpriseId
(
wxEnterpriseId
);
return
pojo
;
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/MessageApiServiceImpl.java
View file @
82873826
...
...
@@ -55,11 +55,6 @@ public class MessageApiServiceImpl implements MessageApiService {
* 自建
*/
private
static
final
String
SELF_APP
=
"selfSuiteId"
;
/**
* 客户联系
*/
private
static
final
String
CONTACT_APP
=
"contactSuiteId"
;
@Autowired
private
DepartmentService
departmentService
;
@Autowired
...
...
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