Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
张云鹏
/
uc-engine
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
Commit
e81bd386
...
e81bd386ed2e5ad032471f9b7dc289d310485e54
authored
2022-05-22 22:28:49 +0800
by
xianghan
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
1.优化
1 parent
aa35f24e
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
133 additions
and
44 deletions
member-service-impl/src/main/java/com/topdraw/business/process/domian/weixin/SubscribeBean.java
member-service-impl/src/main/java/com/topdraw/business/process/rest/UserOperationController.java
member-service-impl/src/main/java/com/topdraw/business/process/service/UserOperationService.java
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/UserOperationServiceImpl.java
member-service-impl/src/main/java/com/topdraw/resttemplate/RestTemplateClient.java
member-service-impl/src/main/java/com/topdraw/weixin/subscribe/domain/WechatSubscribeRecord.java
member-service-impl/src/main/java/com/topdraw/weixin/subscribe/service/dto/WechatSubscribeRecordDTO.java
member-service-impl/src/main/java/com/topdraw/business/process/domian/weixin/SubscribeBean.java
View file @
e81bd38
...
...
@@ -28,4 +28,5 @@ public class SubscribeBean extends WeiXinUserBean {
private
String
nickname
;
private
String
headimgurl
;
private
String
sourceInfo
;
}
...
...
member-service-impl/src/main/java/com/topdraw/business/process/rest/UserOperationController.java
View file @
e81bd38
...
...
@@ -151,6 +151,7 @@ public class UserOperationController {
*/
private
void
parseSubscribe
(
SubscribeBean
subscribeBean
)
throws
IOException
{
// appId
String
appId
=
subscribeBean
.
getAppid
();
Assert
.
notNull
(
appId
,
GlobeExceptionMsg
.
APP_ID_IS_NULL
);
// openId
...
...
@@ -169,6 +170,7 @@ public class UserOperationController {
// 非订阅号,暂不处理。返回暂不支持
if
(
ObjectUtil
.
notEqual
(
appType
,
WeChatConstants
.
WX_SUBSCRIPTION
))
throw
new
BadRequestException
(
"非订阅号"
);
}
// 大屏账户信息
...
...
@@ -178,7 +180,6 @@ public class UserOperationController {
if
(
StringUtils
.
isNotBlank
(
content
))
{
// 大屏信息
iptvUserInfo
=
JSONObject
.
parseObject
(
content
);
}
// 用户自己搜索关注就没有大屏信息,否则表示扫码关注
...
...
@@ -186,6 +187,10 @@ public class UserOperationController {
subscribeBean
.
setIptvUserInfo
(
iptvUserInfo
);
String
sourceInfo
=
iptvUserInfo
.
get
(
"sourceInfo"
).
toString
();
if
(
StringUtils
.
isNotBlank
(
sourceInfo
))
subscribeBean
.
setSourceInfo
(
sourceInfo
);
String
headimgurl
=
iptvUserInfo
.
get
(
"headimgurl"
).
toString
();
String
nickname
=
iptvUserInfo
.
get
(
"nickname"
).
toString
();
if
(
StringUtils
.
isNotBlank
(
nickname
))
{
...
...
@@ -199,7 +204,19 @@ public class UserOperationController {
subscribeBean
.
setHeadimgurl
(
headimgurlDecode
);
}
}
else
{
// headimgurl
String
headimgurl
=
subscribeBean
.
getHeadimgurl
();
if
(
StringUtils
.
isNotBlank
(
headimgurl
))
{
String
headImgUrl
=
this
.
downloadWeixinImge
(
headimgurl
);
subscribeBean
.
setHeadimgurl
(
headImgUrl
);
}
}
}
@PostMapping
(
"/unsubscribe"
)
...
...
@@ -300,8 +317,6 @@ public class UserOperationController {
platformAccount1
=
userTvDTO
.
getPlatformAccount
();
}
}
else
{
// 数据异常,没有会员
...
...
@@ -333,12 +348,14 @@ public class UserOperationController {
String
nicknameEncode
=
Base64Util
.
encode
(
nicknameDecode
);
memberDTO
.
setNickname
(
nicknameEncode
);
}
if
(
StringUtils
.
isNotBlank
(
headimgurl
))
{
String
headimgurlDecode
=
URLDecoder
.
decode
(
headimgurl
,
"UTF-8"
);
String
imageEncode
=
Base64Util
.
encode
(
headimgurlDecode
);
String
image
=
RestTemplateClient
.
netImage
(
headimgurlDecode
);
memberDTO
.
setAvatarUrl
(
StringUtils
.
isNotBlank
(
image
)
==
true
?
image:
headimgurlDecode
);
}
}
catch
(
Exception
e
)
{
log
.
info
(
"头像解析失败!!!"
);
e
.
printStackTrace
();
...
...
@@ -366,6 +383,20 @@ public class UserOperationController {
return
success
;
}
private
String
downloadWeixinImge
(
String
headimgurl
){
try
{
if
(
StringUtils
.
isNotBlank
(
headimgurl
))
{
String
image
=
RestTemplateClient
.
netImage
(
headimgurl
);
return
image
;
}
}
catch
(
Exception
e
)
{
log
.
info
(
"头像解析失败!!!"
);
e
.
printStackTrace
();
}
return
null
;
}
/******************************************************* IPTV ************************************/
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/UserOperationService.java
View file @
e81bd38
...
...
@@ -28,6 +28,13 @@ public interface UserOperationService {
UserWeixinDTO
createWeixinUserAndMember
(
UserWeixin
resources
);
/**
* 保存小屏账户并创建会员
* @param resources
* @return
*/
UserWeixinDTO
createWeixinUserAndMember
(
UserWeixin
resources
,
Integer
vip
);
/**
* 服务号(H5)登录
* @param resources
* @return
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/UserOperationServiceImpl.java
View file @
e81bd38
...
...
@@ -58,6 +58,7 @@ import org.springframework.transaction.annotation.Transactional;
import
org.springframework.util.Assert
;
import
org.springframework.util.Base64Utils
;
import
org.springframework.util.CollectionUtils
;
import
springfox.documentation.spring.web.json.Json
;
import
java.net.URLDecoder
;
import
java.util.*
;
...
...
@@ -208,7 +209,11 @@ public class UserOperationServiceImpl implements UserOperationService {
@Override
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
,
readOnly
=
true
,
rollbackFor
=
Exception
.
class
)
public
UserWeixinDTO
createWeixinUserAndMember
(
UserWeixin
resources
)
{
return
this
.
createWeixinUserAndMember
(
resources
,
0
);
}
@Override
public
UserWeixinDTO
createWeixinUserAndMember
(
UserWeixin
resources
,
Integer
vip
)
{
String
appId
=
resources
.
getAppid
();
String
openId
=
resources
.
getOpenid
();
String
unionId
=
resources
.
getUnionid
();
...
...
@@ -249,7 +254,7 @@ public class UserOperationServiceImpl implements UserOperationService {
// 有其他账号但都无会员,新建会员并将此账号绑定新建的这个会员
Member
_member
=
MemberBuilder
.
build
(
LocalConstants
.
MEMBER_PLATFORM_TYPE_WEIXIN
,
headimgurl
,
nickname
,
0
,
sex
);
headimgurl
,
nickname
,
vip
,
sex
);
MemberDTO
memberDTO
=
this
.
createMember
(
_member
);
...
...
@@ -273,7 +278,7 @@ public class UserOperationServiceImpl implements UserOperationService {
// 该账号存在但无其他账号,新建会员
Member
_member
=
MemberBuilder
.
build
(
LocalConstants
.
MEMBER_PLATFORM_TYPE_WEIXIN
,
headimgurl
,
nickname
,
0
,
sex
);
headimgurl
,
nickname
,
vip
,
sex
);
MemberDTO
memberDTO
=
this
.
createMember
(
_member
);
...
...
@@ -326,7 +331,7 @@ public class UserOperationServiceImpl implements UserOperationService {
// 新建会员
Member
_member
=
MemberBuilder
.
build
(
LocalConstants
.
MEMBER_PLATFORM_TYPE_WEIXIN
,
headimgurl
,
nickname
,
0
,
sex
);
headimgurl
,
nickname
,
vip
,
sex
);
MemberDTO
memberDTO
=
this
.
createMember
(
_member
);
...
...
@@ -407,6 +412,7 @@ public class UserOperationServiceImpl implements UserOperationService {
// 小屏账户
UserWeixinDTO
userWeixinDTO
=
this
.
findFirstByUnionIdAndAppIdAndOpenId
(
unionId
,
appId
,
openId
);
MemberDTO
memberDTO
=
null
;
if
(
Objects
.
isNull
(
userWeixinDTO
.
getId
()))
{
UserWeixin
userWeixin
=
new
UserWeixin
();
...
...
@@ -414,68 +420,103 @@ public class UserOperationServiceImpl implements UserOperationService {
userWeixin
.
setStatus
(
SUBSCRIBE_STATUS
);
// 创建小屏账户同时创建会员
this
.
createWeixinUserAndMember
(
userWeixin
);
UserWeixinDTO
userWeixinDTO1
=
this
.
createWeixinUserAndMember
(
userWeixin
,
1
);
Long
memberId
=
userWeixinDTO1
.
getMemberId
();
memberDTO
=
this
.
memberService
.
findById
(
memberId
);
}
else
{
// 修改微信账户关注状态
UserWeixinDTO
_userWeixinDTO
=
this
.
doUpdateUserWeiXinStatus
(
userWeixinDTO
,
SUBSCRIBE_STATUS
);
//
同步至iptv
// ((UserOperationServiceImpl)AopContext.currentProxy()).asyncWeixin(_userWeixinDTO
);
//
小屏会员
memberDTO
=
this
.
findMemberByAppIdAndOpenId
(
appId
,
openId
);
// 大屏信息
JSONObject
iptvUserInfo
=
resources
.
getIptvUserInfo
();
if
(
Objects
.
nonNull
(
iptvUserInfo
))
{
if
(
memberDTO
!=
null
)
{
// 小屏会员
MemberDTO
memberDTO
=
this
.
findMemberByAppIdAndOpenId
(
appId
,
openId
);
if
(
StringUtils
.
isNotBlank
(
headImgUrl
)
&&
StringUtils
.
isNotBlank
(
nickname
))
{
memberDTO
.
setAvatarUrl
(
headImgUrl
);
memberDTO
.
setNickname
(
nickname
);
}
if
(
memberDTO
!=
null
)
{
Integer
vip
=
memberDTO
.
getVip
();
// 未购买付费会员
if
(
Objects
.
isNull
(
vip
)
||
vip
<
1
)
{
memberDTO
.
setVip
(
1
);
}
if
(
StringUtils
.
isNotBlank
(
headImgUrl
)
&&
StringUtils
.
isNotBlank
(
nickname
))
{
memberDTO
.
setAvatarUrl
(
headImgUrl
);
memberDTO
.
setNickname
(
nickname
);
}
}
Integer
vip
=
memberDTO
.
getVip
();
// 未购买付费会员
if
(
Objects
.
isNull
(
vip
)
||
vip
<
1
)
{
memberDTO
.
setVip
(
1
);
}
}
// 修改会员信息
MemberDTO
_memberDTO1
=
this
.
doUpdateMemberByMemberDTO
(
memberDTO
);
// 同步至iptv
((
UserOperationServiceImpl
)
AopContext
.
currentProxy
()).
asyncSubscribe
(
new
MemberAndWeixinUserDTO
(
_memberDTO1
,
_userWeixinDTO
));
// 修改会员信息
MemberDTO
_memberDTO1
=
this
.
doUpdateMemberByMemberDTO
(
memberDTO
);
// 同步至iptv
((
UserOperationServiceImpl
)
AopContext
.
currentProxy
()).
asyncSubscribe
(
new
MemberAndWeixinUserDTO
(
_memberDTO1
,
_userWeixinDTO
));
// 大屏信息
JSONObject
iptvUserInfo
=
resources
.
getIptvUserInfo
();
if
(
Objects
.
nonNull
(
iptvUserInfo
))
{
// 大屏账户
String
platformAccount
=
iptvUserInfo
.
getString
(
"platformAccount"
);
// 绑定
this
.
bind
(
memberDTO
,
platformAccount
);
// 保存关注记录
this
.
saveWechatSubscribeRecord
(
memberDTO
,
1
);
}
}
// 保存关注记录
String
sourceInfo
=
resources
.
getSourceInfo
();
this
.
saveWechatSubscribeRecord
(
memberDTO
,
sourceInfo
,
1
);
return
true
;
}
/**
*
* @param memberDTO
* @param subscribe
* @param sourceInfo
*/
private
void
saveWechatSubscribeRecord
(
MemberDTO
memberDTO
,
int
subscribe
)
{
private
void
saveWechatSubscribeRecord
(
MemberDTO
memberDTO
,
String
sourceInfo
,
int
subscribe
)
{
WechatSubscribeRecord
wechatSubscribeRecord
=
new
WechatSubscribeRecord
();
wechatSubscribeRecord
.
setCode
(
IdWorker
.
generatorString
());
wechatSubscribeRecord
.
setMemberId
(
memberDTO
.
getId
());
wechatSubscribeRecord
.
setOperationFlag
(
subscribe
);
if
(
StringUtils
.
isBlank
(
sourceInfo
))
{
wechatSubscribeRecord
.
setEntityType
(
3
);
}
else
{
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
sourceInfo
,
JSONObject
.
class
);
Object
activityId
=
jsonObject
.
get
(
"activityId"
);
Object
activityCode
=
jsonObject
.
get
(
"activityCode"
);
Object
entityType
=
jsonObject
.
get
(
"entityType"
);
if
(
Objects
.
nonNull
(
entityType
))
{
String
s
=
entityType
.
toString
();
switch
(
s
)
{
case
"1"
:
wechatSubscribeRecord
.
setSourceType
(
1
);
wechatSubscribeRecord
.
setEntityType
(
1
);
break
;
case
"2"
:
if
(
Objects
.
nonNull
(
activityId
))
wechatSubscribeRecord
.
setEntityId
(
Long
.
valueOf
(
activityId
.
toString
()));
if
(
Objects
.
nonNull
(
activityCode
))
wechatSubscribeRecord
.
setEntityCode
(
activityCode
.
toString
());
wechatSubscribeRecord
.
setSourceType
(
2
);
wechatSubscribeRecord
.
setEntityType
(
2
);
break
;
default
:
wechatSubscribeRecord
.
setSourceType
(
3
);
wechatSubscribeRecord
.
setEntityType
(
3
);
break
;
}
}
wechatSubscribeRecord
.
setSourceInfo
(
sourceInfo
);
}
this
.
wechatSubscribeRecordService
.
create
(
wechatSubscribeRecord
);
}
...
...
@@ -505,12 +546,26 @@ public class UserOperationServiceImpl implements UserOperationService {
((
UserOperationServiceImpl
)
AopContext
.
currentProxy
()).
asyncUnsubscribe
(
new
MemberAndWeixinUserDTO
(
_memberDTO
,
userWeixinDTO
));
// 关注记录
this
.
saveWechatSubscribeRecord
(
_memberDTO
,
2
);
this
.
saveWechatSubscribeRecord
(
_memberDTO
,
""
,
2
);
return
true
;
}
private
String
downloadWeixinImgeFromAppEngine
(
String
headimgurl
){
try
{
if
(
StringUtils
.
isNotBlank
(
headimgurl
))
{
String
headimgurlDecode
=
URLDecoder
.
decode
(
headimgurl
,
"UTF-8"
);
String
image
=
RestTemplateClient
.
netImage
(
headimgurlDecode
);
return
image
;
}
}
catch
(
Exception
e
)
{
log
.
info
(
"头像解析失败!!!"
);
e
.
printStackTrace
();
}
return
null
;
}
/**
* 更新大屏信息,同时判断是否已经关注,如果关注了则不跳转H5页面
...
...
@@ -534,7 +589,7 @@ public class UserOperationServiceImpl implements UserOperationService {
String
headimgurl
=
json
.
get
(
"headimgurl"
).
toString
();
if
(
StringUtils
.
isNotBlank
(
headimgurl
))
{
String
headimgurlDecode
=
URLDecoder
.
decode
(
headimgurl
,
"UTF-8"
);
String
image
=
RestTemplateClient
.
netImag
e
(
headimgurlDecode
);
String
image
=
this
.
downloadWeixinImgeFromAppEngin
e
(
headimgurlDecode
);
if
(
StringUtils
.
isNotBlank
(
image
))
json
.
put
(
"headimgurl"
,
image
);
}
...
...
member-service-impl/src/main/java/com/topdraw/resttemplate/RestTemplateClient.java
View file @
e81bd38
...
...
@@ -2,12 +2,8 @@ package com.topdraw.resttemplate;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.topdraw.business.module.member.address.domain.MemberAddress
;
import
com.topdraw.business.module.member.domain.Member
;
import
com.topdraw.business.module.member.relatedinfo.domain.MemberRelatedInfo
;
import
lombok.Data
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.core.env.Environment
;
import
org.springframework.http.ResponseEntity
;
...
...
@@ -17,7 +13,6 @@ import org.springframework.web.client.RestTemplate;
import
javax.annotation.PostConstruct
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
@Slf4j
...
...
member-service-impl/src/main/java/com/topdraw/weixin/subscribe/domain/WechatSubscribeRecord.java
View file @
e81bd38
...
...
@@ -48,11 +48,11 @@ public class WechatSubscribeRecord implements Serializable {
// 实例code
@Column
(
name
=
"entity_code"
)
private
Lo
ng
entityCode
;
private
Stri
ng
entityCode
;
// 实例类型 1:大屏扫码;2:营销活动;
@Column
(
name
=
"entity_type"
)
private
Long
entityType
;
private
Integer
entityType
;
// 来源类型 1:大屏;2:营销活动;3:其他;
@Column
(
name
=
"source_type"
)
...
...
member-service-impl/src/main/java/com/topdraw/weixin/subscribe/service/dto/WechatSubscribeRecordDTO.java
View file @
e81bd38
...
...
@@ -28,10 +28,10 @@ public class WechatSubscribeRecordDTO implements Serializable {
private
Long
entityId
;
// 实例code
private
Lo
ng
entityCode
;
private
Stri
ng
entityCode
;
// 实例类型 1:大屏扫码;2:营销活动;
private
Long
entityType
;
private
Integer
entityType
;
// 来源类型 1:大屏;2:营销活动;3:其他;
private
Integer
sourceType
;
...
...
Please
register
or
sign in
to post a comment