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
b6b0161f
...
b6b0161f43d63f59505ca8cdf4b2216dbd8c2154
authored
2022-07-04 21:01:01 +0800
by
xianghan
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
1.添加批量修改会员分组功能
1 parent
6fa8615f
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
113 additions
and
35 deletions
member-service-impl/src/main/java/com/topdraw/business/module/member/repository/MemberRepository.java
member-service-impl/src/main/java/com/topdraw/business/module/member/rest/MemberController.java
member-service-impl/src/main/java/com/topdraw/business/module/member/service/MemberService.java
member-service-impl/src/main/java/com/topdraw/business/module/member/service/impl/MemberServiceImpl.java
member-service-impl/src/main/java/com/topdraw/business/process/domian/weixin/SubscribeBean.java
member-service-impl/src/main/java/com/topdraw/business/process/domian/weixin/SubscribeSourceTypeConstant.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/impl/UserOperationServiceImpl.java
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/member/MemberOperationServiceImpl.java
member-service-impl/src/main/java/com/topdraw/business/process/service/member/MemberOperationService.java
member-service-impl/src/main/resources/logback.xml
member-service-impl/src/main/java/com/topdraw/business/module/member/repository/MemberRepository.java
View file @
b6b0161
...
...
@@ -11,6 +11,7 @@ import org.springframework.data.repository.query.Param;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.Optional
;
import
java.util.Set
;
/**
* @author XiangHan
...
...
@@ -64,4 +65,8 @@ public interface MemberRepository extends JpaRepository<Member, Long>, JpaSpecif
@Query
(
value
=
"SELECT IFNULL(`exp`,0) AS exp FROM uc_member WHERE `id` = ?1 "
,
nativeQuery
=
true
)
Long
findExpByMemberId
(
Long
memberId
);
@Modifying
@Query
(
value
=
"UPDATE `uc_member` SET `groups` = ?1, `update_time` = now() WHERE `code` IN ?2 "
,
nativeQuery
=
true
)
Integer
doUpdateGroupsBatch
(
String
groups
,
Set
<
String
>
codes
);
}
...
...
member-service-impl/src/main/java/com/topdraw/business/module/member/rest/MemberController.java
View file @
b6b0161
...
...
@@ -18,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
import
java.util.Objects
;
/**
...
...
@@ -57,6 +58,17 @@ public class MemberController {
return
ResultInfo
.
success
();
}
@RequestMapping
(
value
=
"/doUpdateGroupsBatch"
)
@AnonymousAccess
@ApiOperation
(
"批量手动修改会员分组"
)
public
ResultInfo
doUpdateGroupsBatch
(
@Validated
(
value
=
{
UpdateGroup
.
class
})
@RequestBody
List
<
Member
>
resources
)
{
log
.
info
(
"doUpdateGroupsBatch ==>> param ==>> {}"
,
resources
);
Integer
count
=
this
.
memberOperationService
.
doUpdateGroupsBatch
(
resources
);
return
ResultInfo
.
success
(
count
);
}
@PutMapping
(
value
=
"/update"
)
@ApiOperation
(
"修改会员信息"
)
@AnonymousAccess
...
...
member-service-impl/src/main/java/com/topdraw/business/module/member/service/MemberService.java
View file @
b6b0161
...
...
@@ -135,4 +135,10 @@ public interface MemberService {
*/
Long
findExpByMemberId
(
Long
memberId
);
/**
*
* @param resources
* @return
*/
Integer
doUpdateGroupsBatch
(
List
<
Member
>
resources
);
}
...
...
member-service-impl/src/main/java/com/topdraw/business/module/member/service/impl/MemberServiceImpl.java
View file @
b6b0161
...
...
@@ -28,7 +28,9 @@ import org.springframework.stereotype.Service;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.validation.constraints.NotNull
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* @author XiangHan
...
...
@@ -214,6 +216,13 @@ public class MemberServiceImpl implements MemberService {
return
this
.
memberRepository
.
findExpByMemberId
(
memberId
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Integer
doUpdateGroupsBatch
(
List
<
Member
>
resources
)
{
Set
<
String
>
codes
=
resources
.
stream
().
map
(
t
->
t
.
getCode
()).
collect
(
Collectors
.
toSet
());
return
this
.
memberRepository
.
doUpdateGroupsBatch
(
resources
.
get
(
0
).
getGroups
(),
codes
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
...
...
member-service-impl/src/main/java/com/topdraw/business/process/domian/weixin/SubscribeBean.java
View file @
b6b0161
...
...
@@ -28,5 +28,5 @@ public class SubscribeBean extends WeiXinUserBean {
private
String
nickname
;
private
String
headimgurl
;
private
String
sourceInfo
;
private
JSONObject
sourceInfo
;
}
...
...
member-service-impl/src/main/java/com/topdraw/business/process/domian/weixin/SubscribeSourceTypeConstant.java
0 → 100644
View file @
b6b0161
package
com
.
topdraw
.
business
.
process
.
domian
.
weixin
;
/**
* @author :
* @description:
* @function :
* @date :Created in 2022/7/4 16:36
* @version: :
* @modified By:
* @since : modified in 2022/7/4 16:36
*/
public
interface
SubscribeSourceTypeConstant
{
int
type1
=
1
;
int
type2
=
2
;
}
member-service-impl/src/main/java/com/topdraw/business/process/rest/UserOperationController.java
View file @
b6b0161
...
...
@@ -345,33 +345,34 @@ public class UserOperationController {
}
// 大屏账户信息
JSONObject
iptvUser
Info
=
null
;
JSONObject
redis
Info
=
null
;
// 缓存的大屏信息,使用unionid即可
String
content
=
(
String
)
this
.
redisUtils
.
get
(
RedisKeyUtil
.
genSeSuSubscribeKey
(
unionId
));
log
.
info
(
"获取redis中存储的数据,[subscribe#{}]"
,
content
);
if
(
StringUtils
.
isNotBlank
(
content
))
{
// 大屏信息
iptvUser
Info
=
JSONObject
.
parseObject
(
content
);
redis
Info
=
JSONObject
.
parseObject
(
content
);
}
// 用户自己搜索关注就没有大屏信息,否则表示扫码关注
if
(
Objects
.
nonNull
(
iptvUser
Info
))
{
subscribeBean
.
setIptvUserInfo
(
iptvUser
Info
);
Object
sourceInfo1
=
iptvUserInfo
.
get
(
"sourceInfo"
);
if
(
Objects
.
nonNull
(
sourceInfo1
))
{
String
sourceInfo
=
sourceInfo1
.
toString
(
);
if
(
StringUtils
.
isNotBlank
(
sourceInfo
))
subscribeBean
.
setSourceInfo
(
sourceInfo
);
if
(
Objects
.
nonNull
(
redis
Info
))
{
subscribeBean
.
setIptvUserInfo
(
redis
Info
);
// 关注来源信息
JSONObject
sourceInfo
=
JSONObject
.
parseObject
(
redisInfo
.
get
(
"sourceInfo"
).
toString
(),
JSONObject
.
class
);
log
.
info
(
"关注来源信息,[subscribe#{}]"
,
sourceInfo
);
if
(
Objects
.
nonNull
(
sourceInfo
))
{
subscribeBean
.
setSourceInfo
(
sourceInfo
);
}
String
nickname
=
iptvUser
Info
.
get
(
"nickname"
).
toString
();
String
nickname
=
redis
Info
.
get
(
"nickname"
).
toString
();
if
(
StringUtils
.
isNotBlank
(
nickname
))
{
String
nicknameDecode
=
URLDecoder
.
decode
(
nickname
,
"UTF-8"
);
String
nicknameEncode
=
Base64Util
.
encode
(
nicknameDecode
);
subscribeBean
.
setNickname
(
nicknameEncode
);
}
String
headimgurl
=
iptvUser
Info
.
get
(
"headimgurl"
).
toString
();
String
headimgurl
=
redis
Info
.
get
(
"headimgurl"
).
toString
();
log
.
info
(
"parseSubscribe ==>> headimgurl ==>> {}"
,
headimgurl
);
if
(
StringUtils
.
isNotBlank
(
headimgurl
))
{
String
headimgurlDecode
=
URLDecoder
.
decode
(
headimgurl
,
"UTF-8"
);
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/UserOperationServiceImpl.java
View file @
b6b0161
...
...
@@ -554,7 +554,7 @@ public class UserOperationServiceImpl implements UserOperationService {
}
// 保存关注记录
String
sourceInfo
=
resources
.
getSourceInfo
();
JSONObject
sourceInfo
=
resources
.
getSourceInfo
();
this
.
saveWechatSubscribeRecord
(
memberDTO
,
sourceInfo
,
1
);
return
true
;
...
...
@@ -567,33 +567,38 @@ public class UserOperationServiceImpl implements UserOperationService {
* @param subscribe 关注状态
* @param sourceInfo 来源描述
*/
private
void
saveWechatSubscribeRecord
(
MemberDTO
memberDTO
,
String
sourceInfo
,
int
subscribe
)
{
private
void
saveWechatSubscribeRecord
(
MemberDTO
memberDTO
,
JSONObject
sourceInfo
,
int
subscribe
)
{
WechatSubscribeRecord
wechatSubscribeRecord
=
new
WechatSubscribeRecord
();
wechatSubscribeRecord
.
setCode
(
IdWorker
.
generatorString
());
wechatSubscribeRecord
.
setMemberId
(
memberDTO
.
getId
());
wechatSubscribeRecord
.
setOperationFlag
(
subscribe
);
if
(
StringUtils
.
isBlank
(
sourceInfo
))
{
if
(
Objects
.
isNull
(
sourceInfo
))
{
wechatSubscribeRecord
.
setEntityType
(
3
);
}
else
{
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
sourceInfo
,
JSONObject
.
class
);
Object
activityId
=
jsonObject
.
get
(
"activity
Id"
);
Object
activityCode
=
jsonObject
.
get
(
"activity
Code"
);
Object
entityType
=
jsonObject
.
get
(
"entity
Type"
);
Object
activityId
=
sourceInfo
.
get
(
"source
Id"
);
Object
activityCode
=
sourceInfo
.
get
(
"source
Code"
);
Object
entityType
=
sourceInfo
.
get
(
"source
Type"
);
if
(
Objects
.
nonNull
(
entityType
))
{
String
s
=
entityType
.
toString
(
);
Integer
s
=
Integer
.
parseInt
(
entityType
.
toString
()
);
switch
(
s
)
{
case
"1"
:
wechatSubscribeRecord
.
setSourceType
(
1
);
wechatSubscribeRecord
.
setEntityType
(
1
);
case
SubscribeSourceTypeConstant
.
type1
:
wechatSubscribeRecord
.
setSourceType
(
SubscribeSourceTypeConstant
.
type
1
);
wechatSubscribeRecord
.
setEntityType
(
SubscribeSourceTypeConstant
.
type
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
);
case
SubscribeSourceTypeConstant
.
type2
:
if
(
Objects
.
nonNull
(
activityId
))
{
wechatSubscribeRecord
.
setEntityId
(
Long
.
valueOf
(
activityId
.
toString
()));
}
if
(
Objects
.
nonNull
(
activityCode
))
{
wechatSubscribeRecord
.
setEntityCode
(
activityCode
.
toString
());
}
wechatSubscribeRecord
.
setSourceType
(
SubscribeSourceTypeConstant
.
type2
);
wechatSubscribeRecord
.
setEntityType
(
SubscribeSourceTypeConstant
.
type2
);
break
;
default
:
wechatSubscribeRecord
.
setSourceType
(
3
);
...
...
@@ -602,10 +607,12 @@ public class UserOperationServiceImpl implements UserOperationService {
}
}
wechatSubscribeRecord
.
setSourceInfo
(
sourceInfo
);
wechatSubscribeRecord
.
setSourceInfo
(
JSONObject
.
toJSONString
(
sourceInfo
));
}
this
.
wechatSubscribeRecordService
.
create
(
wechatSubscribeRecord
);
}
...
...
@@ -655,7 +662,7 @@ public class UserOperationServiceImpl implements UserOperationService {
}
// 关注记录
this
.
saveWechatSubscribeRecord
(
memberDTO
,
""
,
2
);
this
.
saveWechatSubscribeRecord
(
memberDTO
,
null
,
2
);
// 同步至iptv
((
UserOperationServiceImpl
)
AopContext
.
currentProxy
()).
asyncUnsubscribe
(
new
MemberAndWeixinUserDTO
(
memberDTO
,
userWeixinDTO
));
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/member/MemberOperationServiceImpl.java
View file @
b6b0161
...
...
@@ -25,7 +25,9 @@ import org.springframework.cache.annotation.CachePut;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.Assert
;
import
javax.validation.constraints.NotNull
;
import
java.sql.Timestamp
;
import
java.util.List
;
import
java.util.Objects
;
@Service
...
...
@@ -45,9 +47,10 @@ public class MemberOperationServiceImpl implements MemberOperationService {
@AsyncMqSend
public
void
asyncUpdateMemberVipAndVipExpireTime
(
MemberDTO
memberDTO
)
{}
@AsyncMqSend
public
void
asyncCreateMemberVipHistory
(
MemberVipHistoryDTO
memberVipHistoryDTO
)
{}
@AsyncMqSend
public
void
asyncDoUpdateGroupsBatch
(
List
<
Member
>
resources
)
{}
@AsyncMqSend
...
...
@@ -138,6 +141,18 @@ public class MemberOperationServiceImpl implements MemberOperationService {
return
memberDTO_
;
}
@Override
public
Integer
doUpdateGroupsBatch
(
List
<
Member
>
resources
)
{
Integer
count
=
this
.
memberService
.
doUpdateGroupsBatch
(
resources
);
if
(
count
>
0
)
{
((
MemberOperationServiceImpl
)
AopContext
.
currentProxy
()).
asyncDoUpdateGroupsBatch
(
resources
);
}
return
count
;
}
@Override
public
MemberProfileDTO
getMemberProfileAndCheckVip
(
Long
memberId
,
String
appId
)
{
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/member/MemberOperationService.java
View file @
b6b0161
...
...
@@ -7,6 +7,8 @@ import com.topdraw.business.module.member.viphistory.domain.MemberVipHistory;
import
com.topdraw.business.process.domian.member.MemberOperationBean
;
import
com.topdraw.business.process.domian.weixin.BuyVipBean
;
import
java.util.List
;
public
interface
MemberOperationService
{
/**
...
...
@@ -72,4 +74,8 @@ public interface MemberOperationService {
* @param resources
*/
MemberDTO
doUpdateVipByMemberCode
(
MemberOperationBean
resources
);
Integer
doUpdateGroupsBatch
(
List
<
Member
>
resources
);
}
...
...
member-service-impl/src/main/resources/logback.xml
View file @
b6b0161
...
...
@@ -64,7 +64,7 @@
<!--监控sql日志输出 -->
<logger
name=
"jdbc.sqlonly"
level=
"
OFF
"
additivity=
"false"
>
<logger
name=
"jdbc.sqlonly"
level=
"
INFO
"
additivity=
"false"
>
<appender-ref
ref=
"console"
/>
<appender-ref
ref=
"info"
/>
</logger>
...
...
Please
register
or
sign in
to post a comment