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
aa35f24e
...
aa35f24ea4033a6bc4293a0af5c36268a17a949d
authored
2022-05-22 00:01:11 +0800
by
xianghan
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
1.优化
1 parent
7c111ab7
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
279 additions
and
14 deletions
member-service-impl/src/main/java/com/topdraw/business/process/rest/UserOperationController.java
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/UserOperationServiceImpl.java
member-service-impl/src/main/java/com/topdraw/util/IdWorker.java
member-service-impl/src/main/java/com/topdraw/weixin/subscribe/domain/WechatSubscribeRecord.java
member-service-impl/src/main/java/com/topdraw/weixin/subscribe/repository/WechatSubscribeRecordRepository.java
member-service-impl/src/main/java/com/topdraw/weixin/subscribe/service/WechatSubscribeRecordService.java
member-service-impl/src/main/java/com/topdraw/weixin/subscribe/service/dto/WechatSubscribeRecordDTO.java
member-service-impl/src/main/java/com/topdraw/weixin/subscribe/service/impl/WechatSubscribeRecordServiceImpl.java
member-service-impl/src/main/java/com/topdraw/weixin/subscribe/service/mapper/WechatSubscribeRecordMapper.java
member-service-impl/src/main/resources/config/application-dev.yml
member-service-impl/src/test/java/com/topdraw/code/GeneratorCode.java
member-service-impl/src/main/java/com/topdraw/business/process/rest/UserOperationController.java
View file @
aa35f24
...
...
@@ -243,6 +243,13 @@ public class UserOperationController {
return
ResultInfo
.
success
();
}
/**
* 1.未关注、未绑定
* 2.已绑定、未关注
* 3.已关注、未绑定
* @param data
* @return
*/
@PostMapping
(
value
=
"/memberPreprocess"
)
@ApiOperation
(
"暂存大小屏信息并检查关注与绑定状态"
)
@AnonymousAccess
...
...
@@ -293,6 +300,8 @@ public class UserOperationController {
platformAccount1
=
userTvDTO
.
getPlatformAccount
();
}
}
else
{
// 数据异常,没有会员
...
...
@@ -301,7 +310,7 @@ public class UserOperationController {
}
// 关注
//
已
关注
if
(
result
.
equalsIgnoreCase
(
SUBSCRIBE
))
{
// 未绑定
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/UserOperationServiceImpl.java
View file @
aa35f24
...
...
@@ -36,10 +36,14 @@ import com.topdraw.config.RedisKeyUtil;
import
com.topdraw.exception.BadRequestException
;
import
com.topdraw.exception.EntityNotFoundException
;
import
com.topdraw.exception.GlobeExceptionMsg
;
import
com.topdraw.resttemplate.RestTemplateClient
;
import
com.topdraw.util.Base64Util
;
import
com.topdraw.util.IdWorker
;
import
com.topdraw.util.TimestampUtil
;
import
com.topdraw.utils.QueryHelp
;
import
com.topdraw.utils.RedisUtils
;
import
com.topdraw.weixin.subscribe.domain.WechatSubscribeRecord
;
import
com.topdraw.weixin.subscribe.service.WechatSubscribeRecordService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.aop.framework.AopContext
;
...
...
@@ -55,6 +59,7 @@ import org.springframework.util.Assert;
import
org.springframework.util.Base64Utils
;
import
org.springframework.util.CollectionUtils
;
import
java.net.URLDecoder
;
import
java.util.*
;
import
java.util.stream.Collectors
;
...
...
@@ -64,23 +69,25 @@ import java.util.stream.Collectors;
public
class
UserOperationServiceImpl
implements
UserOperationService
{
@Autowired
private
MemberService
memberService
;
@Autowired
private
UserTvService
userTvService
;
@Autowired
private
MemberService
memberService
;
@Autowired
private
UserWeixinService
userWeixinService
;
@Autowired
private
UserWeixinRepository
userWeixinRepository
;
@Autowired
private
UserCollectionService
userCollectionService
;
@Autowired
private
CollectionMq2DetailMapper
collectionMq2DetailMapper
;
@Autowired
private
UserCollectionDetailService
userCollectionDetailService
;
@Autowired
private
CollectionMq2DetailMapper
collectionMq2DetailMapper
;
private
WechatSubscribeRecordService
wechatSubscribeRecordService
;
@Autowired
private
UserCollectionDetailRepository
userCollectionDetailRepository
;
@Autowired
private
RedisUtils
redisUtils
;
...
...
@@ -112,6 +119,8 @@ public class UserOperationServiceImpl implements UserOperationService {
public
void
asyncUnbind
(
MemberAndUserTvDTO
memberAndUserTvDTO
)
{}
@AsyncMqSend
public
void
asyncUnsubscribe
(
MemberAndWeixinUserDTO
memberAndWeixinUserDTO
)
{}
@AsyncMqSend
public
void
asyncSubscribe
(
MemberAndWeixinUserDTO
memberAndWeixinUserDTO
)
{}
/**
* 创建大屏账户同时创建会员
...
...
@@ -413,8 +422,7 @@ public class UserOperationServiceImpl implements UserOperationService {
UserWeixinDTO
_userWeixinDTO
=
this
.
doUpdateUserWeiXinStatus
(
userWeixinDTO
,
SUBSCRIBE_STATUS
);
// 同步至iptv
((
UserOperationServiceImpl
)
AopContext
.
currentProxy
()).
asyncWeixin
(
_userWeixinDTO
);
}
// ((UserOperationServiceImpl)AopContext.currentProxy()).asyncWeixin(_userWeixinDTO);
// 大屏信息
JSONObject
iptvUserInfo
=
resources
.
getIptvUserInfo
();
...
...
@@ -437,17 +445,42 @@ public class UserOperationServiceImpl implements UserOperationService {
}
}
// 修改会员信息
MemberDTO
_memberDTO1
=
this
.
doUpdateMemberByMemberDTO
(
memberDTO
);
// 同步至iptv
((
UserOperationServiceImpl
)
AopContext
.
currentProxy
()).
asyncSubscribe
(
new
MemberAndWeixinUserDTO
(
_memberDTO1
,
_userWeixinDTO
));
// 大屏账户
String
platformAccount
=
iptvUserInfo
.
getString
(
"platformAccount"
);
// 绑定
this
.
bind
(
memberDTO
,
platformAccount
);
this
.
bind
(
memberDTO
,
platformAccount
);
// 保存关注记录
this
.
saveWechatSubscribeRecord
(
memberDTO
,
1
);
}
}
return
true
;
}
/**
*
* @param memberDTO
* @param subscribe
*/
private
void
saveWechatSubscribeRecord
(
MemberDTO
memberDTO
,
int
subscribe
)
{
WechatSubscribeRecord
wechatSubscribeRecord
=
new
WechatSubscribeRecord
();
wechatSubscribeRecord
.
setCode
(
IdWorker
.
generatorString
());
wechatSubscribeRecord
.
setMemberId
(
memberDTO
.
getId
());
wechatSubscribeRecord
.
setOperationFlag
(
subscribe
);
this
.
wechatSubscribeRecordService
.
create
(
wechatSubscribeRecord
);
}
/**
* 微信公众号取消关注
* @param resources
...
...
@@ -471,6 +504,9 @@ public class UserOperationServiceImpl implements UserOperationService {
// 同步至iptv
((
UserOperationServiceImpl
)
AopContext
.
currentProxy
()).
asyncUnsubscribe
(
new
MemberAndWeixinUserDTO
(
_memberDTO
,
userWeixinDTO
));
// 关注记录
this
.
saveWechatSubscribeRecord
(
_memberDTO
,
2
);
return
true
;
}
...
...
@@ -494,6 +530,20 @@ public class UserOperationServiceImpl implements UserOperationService {
try
{
try
{
String
headimgurl
=
json
.
get
(
"headimgurl"
).
toString
();
if
(
StringUtils
.
isNotBlank
(
headimgurl
))
{
String
headimgurlDecode
=
URLDecoder
.
decode
(
headimgurl
,
"UTF-8"
);
String
image
=
RestTemplateClient
.
netImage
(
headimgurlDecode
);
if
(
StringUtils
.
isNotBlank
(
image
))
json
.
put
(
"headimgurl"
,
image
);
}
data
=
json
.
toJSONString
();
}
catch
(
Exception
e
)
{
log
.
info
(
"头像解析失败!!!"
);
e
.
printStackTrace
();
}
// 过期时间300S
this
.
redisUtils
.
set
(
RedisKeyUtil
.
genSeSuSubscribeKey
(
unionId
),
data
,
300
);
Object
o
=
this
.
redisUtils
.
get
(
RedisKeyUtil
.
genSeSuSubscribeKey
(
unionId
));
...
...
member-service-impl/src/main/java/com/topdraw/util/IdWorker.java
View file @
aa35f24
...
...
@@ -150,6 +150,12 @@ public class IdWorker {
return
idWorker
.
nextId
();
}
public
static
String
generatorString
(){
IdWorker
idWorker
=
new
IdWorker
();
return
String
.
valueOf
(
idWorker
.
nextId
());
}
public
static
String
generatorCode
(
String
prefix
){
IdWorker
idWorker
=
new
IdWorker
();
if
(
StringUtils
.
isNotBlank
(
prefix
))
{
...
...
member-service-impl/src/main/java/com/topdraw/weixin/subscribe/domain/WechatSubscribeRecord.java
0 → 100644
View file @
aa35f24
package
com
.
topdraw
.
weixin
.
subscribe
.
domain
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.bean.copier.CopyOptions
;
import
javax.persistence.*
;
import
org.springframework.data.annotation.CreatedDate
;
import
org.springframework.data.annotation.LastModifiedDate
;
import
org.springframework.data.jpa.domain.support.AuditingEntityListener
;
import
java.sql.Timestamp
;
import
java.util.UUID
;
import
java.io.Serializable
;
/**
* @author XiangHan
* @date 2022-05-21
*/
@Entity
@Data
@EntityListeners
(
AuditingEntityListener
.
class
)
@Accessors
(
chain
=
true
)
@Table
(
name
=
"uc_wechat_subscribe_record"
)
public
class
WechatSubscribeRecord
implements
Serializable
{
// ID
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
@Column
(
name
=
"id"
)
private
Long
id
;
// 标识
@Column
(
name
=
"code"
,
nullable
=
false
)
private
String
code
;
// 会员id
@Column
(
name
=
"member_id"
,
nullable
=
false
)
private
Long
memberId
;
// 操作类型 1:关注;2:取关
@Column
(
name
=
"operation_flag"
)
private
Integer
operationFlag
;
// 实例id
@Column
(
name
=
"entity_id"
)
private
Long
entityId
;
// 实例code
@Column
(
name
=
"entity_code"
)
private
Long
entityCode
;
// 实例类型 1:大屏扫码;2:营销活动;
@Column
(
name
=
"entity_type"
)
private
Long
entityType
;
// 来源类型 1:大屏;2:营销活动;3:其他;
@Column
(
name
=
"source_type"
)
private
Integer
sourceType
;
// 来源描述
@Column
(
name
=
"source_info"
)
private
String
sourceInfo
;
// 创建时间
@CreatedDate
@Column
(
name
=
"create_time"
)
private
Timestamp
createTime
;
// 更新时间
@LastModifiedDate
@Column
(
name
=
"update_time"
)
private
Timestamp
updateTime
;
public
void
copy
(
WechatSubscribeRecord
source
){
BeanUtil
.
copyProperties
(
source
,
this
,
CopyOptions
.
create
().
setIgnoreNullValue
(
true
));
}
}
member-service-impl/src/main/java/com/topdraw/weixin/subscribe/repository/WechatSubscribeRecordRepository.java
0 → 100644
View file @
aa35f24
package
com
.
topdraw
.
weixin
.
subscribe
.
repository
;
import
com.topdraw.weixin.subscribe.domain.WechatSubscribeRecord
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
java.util.Optional
;
/**
* @author XiangHan
* @date 2022-05-21
*/
public
interface
WechatSubscribeRecordRepository
extends
JpaRepository
<
WechatSubscribeRecord
,
Long
>,
JpaSpecificationExecutor
<
WechatSubscribeRecord
>
{
Optional
<
WechatSubscribeRecord
>
findFirstByCode
(
String
code
);
}
member-service-impl/src/main/java/com/topdraw/weixin/subscribe/service/WechatSubscribeRecordService.java
0 → 100644
View file @
aa35f24
package
com
.
topdraw
.
weixin
.
subscribe
.
service
;
import
com.topdraw.weixin.subscribe.domain.WechatSubscribeRecord
;
/**
* @author XiangHan
* @date 2022-05-21
*/
public
interface
WechatSubscribeRecordService
{
void
create
(
WechatSubscribeRecord
resources
);
}
member-service-impl/src/main/java/com/topdraw/weixin/subscribe/service/dto/WechatSubscribeRecordDTO.java
0 → 100644
View file @
aa35f24
package
com
.
topdraw
.
weixin
.
subscribe
.
service
.
dto
;
import
lombok.Data
;
import
java.sql.Timestamp
;
import
java.io.Serializable
;
/**
* @author XiangHan
* @date 2022-05-21
*/
@Data
public
class
WechatSubscribeRecordDTO
implements
Serializable
{
// ID
private
Long
id
;
// 标识
private
String
code
;
// 会员id
private
Long
memberId
;
// 操作类型 1:关注;2:取关
private
Integer
operationFlag
;
// 实例id
private
Long
entityId
;
// 实例code
private
Long
entityCode
;
// 实例类型 1:大屏扫码;2:营销活动;
private
Long
entityType
;
// 来源类型 1:大屏;2:营销活动;3:其他;
private
Integer
sourceType
;
// 来源描述
private
String
sourceInfo
;
// 创建时间
private
Timestamp
createTime
;
// 更新时间
private
Timestamp
updateTime
;
}
member-service-impl/src/main/java/com/topdraw/weixin/subscribe/service/impl/WechatSubscribeRecordServiceImpl.java
0 → 100644
View file @
aa35f24
package
com
.
topdraw
.
weixin
.
subscribe
.
service
.
impl
;
import
com.topdraw.weixin.subscribe.domain.WechatSubscribeRecord
;
import
com.topdraw.weixin.subscribe.repository.WechatSubscribeRecordRepository
;
import
com.topdraw.weixin.subscribe.service.WechatSubscribeRecordService
;
import
com.topdraw.weixin.subscribe.service.mapper.WechatSubscribeRecordMapper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
/**
* @author XiangHan
* @date 2022-05-21
*/
@Service
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
,
readOnly
=
true
,
rollbackFor
=
Exception
.
class
)
public
class
WechatSubscribeRecordServiceImpl
implements
WechatSubscribeRecordService
{
@Autowired
private
WechatSubscribeRecordRepository
wechatSubscribeRecordRepository
;
@Autowired
private
WechatSubscribeRecordMapper
wechatSubscribeRecordMapper
;
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
create
(
WechatSubscribeRecord
resources
)
{
this
.
wechatSubscribeRecordRepository
.
save
(
resources
);
}
}
member-service-impl/src/main/java/com/topdraw/weixin/subscribe/service/mapper/WechatSubscribeRecordMapper.java
0 → 100644
View file @
aa35f24
package
com
.
topdraw
.
weixin
.
subscribe
.
service
.
mapper
;
import
com.topdraw.base.BaseMapper
;
import
com.topdraw.weixin.subscribe.domain.WechatSubscribeRecord
;
import
com.topdraw.weixin.subscribe.service.dto.WechatSubscribeRecordDTO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.ReportingPolicy
;
/**
* @author XiangHan
* @date 2022-05-21
*/
@Mapper
(
componentModel
=
"spring"
,
unmappedTargetPolicy
=
ReportingPolicy
.
IGNORE
)
public
interface
WechatSubscribeRecordMapper
extends
BaseMapper
<
WechatSubscribeRecordDTO
,
WechatSubscribeRecord
>
{
}
member-service-impl/src/main/resources/config/application-dev.yml
View file @
aa35f24
...
...
@@ -107,8 +107,8 @@ file:
service
:
mq
:
exchange
:
uce.exchange
# 管理侧
queue
:
uce.queue
# 管理侧
exchange
:
uce.exchange
queue
:
uce.queue
weixin
:
list
:
...
...
@@ -141,4 +141,4 @@ weixin:
env
:
dev
api
:
uc-service
:
http://127.0.0.1:8210
\ No newline at end of file
uc-service
:
http://127.0.0.1:8446
\ No newline at end of file
...
...
member-service-impl/src/test/java/com/topdraw/code/GeneratorCode.java
View file @
aa35f24
...
...
@@ -39,16 +39,16 @@ public class GeneratorCode extends BaseTest {
@Rollback
(
value
=
false
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
generator
()
{
var
dbName
=
"
x_activity_address
"
;
var
dbName
=
"
uc_wechat_subscribe_record
"
;
// 表名称,支持多表
var
tableNames
=
Arrays
.
asList
(
dbName
);
String
[]
s
=
dbName
.
split
(
"_"
);
var
pre
=
s
[
0
];
var
target1
=
s
[
s
.
length
-
1
];
var
preRoute
=
"com.topdraw.
business.module.contact
."
;
var
preRoute
=
"com.topdraw.
weixin
."
;
StringBuilder
builder
=
new
StringBuilder
(
preRoute
);
builder
.
append
(
"
vis
"
);
builder
.
append
(
"
subscribe
"
);
// builder.append(target);
tableNames
.
forEach
(
tableName
->
{
...
...
Please
register
or
sign in
to post a comment