Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yanxuan-wx-store-sharer
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
wx
yanxuan-wx-store-sharer
Commits
7b535c89
Commit
7b535c89
authored
Mar 12, 2025
by
fanjiaxin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
代码初始化
parent
51c8d319
Pipeline
#71429
passed with stages
in 1 minute 7 seconds
Changes
6
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
394 additions
and
166 deletions
+394
-166
DrmSharerConfig.java
...e/yanxuan/wx/store/sharer/biz/config/DrmSharerConfig.java
+370
-2
ProductCommissionConfig.java
...n/wx/store/sharer/biz/config/ProductCommissionConfig.java
+0
-152
CommissionSharerBO.java
...wx/store/sharer/biz/meta/model/bo/CommissionSharerBO.java
+5
-1
CommissionSharerProductBO.java
...e/sharer/biz/meta/model/bo/CommissionSharerProductBO.java
+5
-1
UserServiceImpl.java
...uan/wx/store/sharer/biz/service/impl/UserServiceImpl.java
+10
-9
WeChatRestTemplateHandler.java
...sharer/integration/handler/WeChatRestTemplateHandler.java
+4
-1
No files found.
yanxuan-wx-store-sharer-biz/src/main/java/com/netease/yanxuan/wx/store/sharer/biz/config/DrmSharerConfig.java
View file @
7b535c89
...
...
@@ -6,14 +6,381 @@
*/
package
com
.
netease
.
yanxuan
.
wx
.
store
.
sharer
.
biz
.
config
;
import
com.alibaba.fastjson.JSON
;
import
com.ctrip.framework.apollo.model.ConfigChange
;
import
com.ctrip.framework.apollo.model.ConfigChangeEvent
;
import
com.ctrip.framework.apollo.spring.annotation.ApolloConfigChangeListener
;
import
com.ctrip.framework.apollo.spring.annotation.EnableAutoUpdateApolloConfig
;
import
com.ctrip.framework.apollo.spring.annotation.ValueMapping
;
import
com.netease.yanxuan.wx.store.sharer.biz.core.LoginUserContextHolder
;
import
com.netease.yanxuan.wx.store.sharer.biz.core.LoginUserInfo
;
import
com.netease.yanxuan.wx.store.sharer.biz.meta.enums.CommissionChangeOptTypeEnum
;
import
com.netease.yanxuan.wx.store.sharer.biz.meta.model.bo.CommissionSharerBO
;
import
com.netease.yanxuan.wx.store.sharer.biz.meta.model.bo.CommissionSharerProductBO
;
import
com.netease.yanxuan.wx.store.sharer.dal.mapper.SharerProductCommissionRecordMapper
;
import
com.netease.yanxuan.wx.store.sharer.dal.meta.model.po.SharerProductCommissionRecord
;
import
com.netease.yanxuan.wx.store.sharer.integration.handler.impl.WeChatSetSharerCommissionRequest
;
import
com.netease.yanxuan.wx.store.sharer.integration.handler.impl.WeChatSetSharerProductCommissionRequest
;
import
com.netease.yanxuan.wx.store.sharer.integration.handler.impl.WeChatSharerListRequest
;
import
com.netease.yanxuan.wx.store.sharer.integration.meta.model.vo.WeChatSharerInfoVO
;
import
com.netease.yanxuan.wx.store.sharer.integration.meta.model.vo.WeChatSharerListVO
;
import
lombok.Data
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
java.math.BigDecimal
;
import
java.util.*
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
/**
* 推客配置apo
*
* @author 刘运星 (liuyunxing01@corp.netease.com)
*/
@Slf4j
@Data
@Component
@RequiredArgsConstructor
@EnableAutoUpdateApolloConfig
(
"sharer-config"
)
public
class
DrmSharerConfig
{
private
final
SharerProductCommissionRecordMapper
sharerProdutcCommissionRecordMapper
;
private
final
WeChatSharerListRequest
weChatSharerListRequest
;
private
final
WeChatSetSharerCommissionRequest
weChatSetSharerCommissionRequest
;
private
final
WeChatSetSharerProductCommissionRequest
weChatSetSharerProductCommissionRequest
;
/**
* 默认分佣比例
*/
@Value
(
"${commissionratio.default:10}"
)
private
BigDecimal
defaultCommissionRatio
;
/**
* 用户分佣比例
*/
@ValueMapping
(
"${commissionratio.sharer:}"
)
private
List
<
CommissionSharerBO
>
commissionSharerList
;
/**
* 用户商品分佣比例
*/
@ValueMapping
(
"${commissionratio.sharerproduct:}"
)
private
List
<
CommissionSharerProductBO
>
commissionSharerProductList
;
/**
* 监听
*/
@ApolloConfigChangeListener
(
"sharer-config"
)
public
void
onChange
(
ConfigChangeEvent
changeEvent
)
{
log
.
info
(
"ProductCommissionConfig:onChange, changeEvent = {}"
,
JSON
.
toJSONString
(
changeEvent
));
// 默认分佣比例
String
defaultCommissionratio
=
"application.commissionratio.default"
;
if
(
changeEvent
.
isChanged
(
defaultCommissionratio
))
{
ConfigChange
change
=
changeEvent
.
getChange
(
defaultCommissionratio
);
defaultCommissionratioChange
(
change
);
}
// 用户分佣比例
String
sharerCommissionratio
=
"application.commissionratio.sharer"
;
if
(
changeEvent
.
isChanged
(
sharerCommissionratio
))
{
ConfigChange
change
=
changeEvent
.
getChange
(
sharerCommissionratio
);
sharerCommissionRatioChange
(
change
);
}
// 用户商品分佣比例
String
sharerproductCommissionratio
=
"application.commissionratio.sharerproduct"
;
if
(
changeEvent
.
isChanged
(
sharerproductCommissionratio
))
{
ConfigChange
change
=
changeEvent
.
getChange
(
sharerproductCommissionratio
);
sharerProductCommissionRatioChange
(
change
);
}
}
/**
* 默认分佣比例变更
*/
private
void
defaultCommissionratioChange
(
ConfigChange
change
)
{
if
(
StringUtils
.
isBlank
(
change
.
getNewValue
())
||
change
.
getNewValue
().
equals
(
change
.
getOldValue
()))
{
return
;
}
// 获取推客绑定的所有用户
String
nextKey
=
null
;
int
pageSize
=
10
;
while
(
true
)
{
WeChatSharerListVO
sharerListVO
=
weChatSharerListRequest
.
handle
(
null
,
nextKey
,
pageSize
);
if
(
sharerListVO
==
null
)
{
break
;
// 如果返回值为空,直接终止循环
}
nextKey
=
sharerListVO
.
getNext_key
();
if
(!
CollectionUtils
.
isEmpty
(
sharerListVO
.
getSharer_info_list
()))
{
for
(
WeChatSharerInfoVO
sharerInfoVO
:
sharerListVO
.
getSharer_info_list
())
{
// 处理每个 sharerInfoVO
setSharerDefaultCommissionInfo
(
change
,
sharerInfoVO
);
}
}
if
(
CollectionUtils
.
isEmpty
(
sharerListVO
.
getSharer_info_list
())
||
sharerListVO
.
getSharer_info_list
().
size
()
<
pageSize
)
{
break
;
// 如果列表为空或小于 pageSize,终止循环
}
}
}
/**
* 设置推客的的分佣类型和比例信息
*/
private
void
setSharerDefaultCommissionInfo
(
ConfigChange
change
,
WeChatSharerInfoVO
sharerInfoVO
)
{
// 分佣比例为小数, 微信接口参数应当分佣比例*1000 为整数
BigDecimal
commissionRatio
=
new
BigDecimal
(
change
.
getNewValue
()).
divide
(
BigDecimal
.
valueOf
(
1000
));
// 设置推客分佣比例
boolean
isSuccess
=
false
;
try
{
// 设置推客分佣比例
weChatSetSharerCommissionRequest
.
handle
(
sharerInfoVO
.
getSharer_appid
(),
commissionRatio
.
toPlainString
());
isSuccess
=
true
;
}
catch
(
Exception
e
)
{
log
.
error
(
"设置推客的的分佣类型和比例信息失败"
,
e
);
}
finally
{
LoginUserInfo
loginUserInfo
=
LoginUserContextHolder
.
get
();
if
(
null
!=
loginUserInfo
)
{
Date
now
=
new
Date
();
SharerProductCommissionRecord
record
=
new
SharerProductCommissionRecord
();
record
.
setOpenId
(
loginUserInfo
.
getOpenId
());
record
.
setSharerAppid
(
sharerInfoVO
.
getSharer_appid
());
record
.
setProductId
(
""
);
record
.
setOptType
(
CommissionChangeOptTypeEnum
.
DEFAULT_CHANGE
.
getCode
());
record
.
setOptInfo
(
change
.
getOldValue
()
+
"&"
+
change
.
getNewValue
());
record
.
setOptTime
(
now
);
record
.
setOptStatus
(
isSuccess
?
"1"
:
"2"
);
record
.
setExtInfo
(
""
);
record
.
setCreateTime
(
now
);
record
.
setUpdateTime
(
now
);
sharerProdutcCommissionRecordMapper
.
insert
(
record
);
}
else
{
log
.
error
(
"用户登录状态过期,保存记录失败"
);
}
}
}
/**
* 用户分佣比例变更
*/
private
void
sharerCommissionRatioChange
(
ConfigChange
change
)
{
List
<
CommissionSharerBO
>
oldCommissionSharerList
=
JSON
.
parseArray
(
change
.
getOldValue
(),
CommissionSharerBO
.
class
);
if
(
null
==
oldCommissionSharerList
)
{
oldCommissionSharerList
=
new
ArrayList
<>();
}
List
<
CommissionSharerBO
>
newCommissionSharerList
=
JSON
.
parseArray
(
change
.
getNewValue
(),
CommissionSharerBO
.
class
);
if
(
null
==
newCommissionSharerList
)
{
newCommissionSharerList
=
Collections
.
emptyList
();
}
// 将 newCommissionSharerList 转换为 Map,以减少流操作的开销
Map
<
String
,
CommissionSharerBO
>
newCommissionSharerMap
=
newCommissionSharerList
.
stream
()
.
collect
(
Collectors
.
toMap
(
CommissionSharerBO:
:
getOpenId
,
Function
.
identity
()));
for
(
CommissionSharerBO
oldInfo
:
oldCommissionSharerList
)
{
CommissionSharerBO
newInfo
=
newCommissionSharerMap
.
get
(
oldInfo
.
getOpenId
());
if
(
newInfo
!=
null
)
{
// 修改
if
(
newInfo
.
getCommissionRatio
().
compareTo
(
oldInfo
.
getCommissionRatio
())
!=
0
)
{
setSharerCommissionInfo
(
newInfo
,
oldInfo
);
}
}
else
{
// 删除
deleteSharerCommissionInfo
(
oldInfo
);
}
}
for
(
CommissionSharerBO
newInfo
:
newCommissionSharerList
)
{
// 新增
if
(
oldCommissionSharerList
.
stream
().
noneMatch
(
item
->
item
.
getOpenId
().
equals
(
newInfo
.
getOpenId
())))
{
setSharerCommissionInfo
(
newInfo
,
null
);
}
}
}
/**
* 设置推客的的分佣类型和比例信息
*/
private
void
setSharerCommissionInfo
(
CommissionSharerBO
newCommissionSharer
,
CommissionSharerBO
oldCommissionSharer
)
{
// 分佣比例为小数, 微信接口参数应当分佣比例*1000 为整数
BigDecimal
commissionRatio
=
newCommissionSharer
.
getCommissionRatio
().
divide
(
BigDecimal
.
valueOf
(
1000
));
// 设置推客分佣比例
boolean
isSuccess
=
false
;
try
{
// 设置推客分佣比例
weChatSetSharerCommissionRequest
.
handle
(
newCommissionSharer
.
getSharerId
(),
commissionRatio
.
toPlainString
());
isSuccess
=
true
;
}
catch
(
Exception
e
)
{
log
.
error
(
"设置推客的的分佣类型和比例信息失败"
,
e
);
}
finally
{
LoginUserInfo
loginUserInfo
=
LoginUserContextHolder
.
get
();
if
(
null
!=
loginUserInfo
)
{
Date
now
=
new
Date
();
SharerProductCommissionRecord
record
=
new
SharerProductCommissionRecord
();
record
.
setOpenId
(
loginUserInfo
.
getOpenId
());
record
.
setSharerAppid
(
newCommissionSharer
.
getSharerId
());
record
.
setProductId
(
""
);
record
.
setOptType
(
CommissionChangeOptTypeEnum
.
SET
.
getCode
());
record
.
setOptInfo
(
oldCommissionSharer
.
getCommissionRatio
().
toPlainString
()
+
"&"
+
newCommissionSharer
.
getCommissionRatio
().
toPlainString
());
record
.
setOptTime
(
now
);
record
.
setOptStatus
(
isSuccess
?
"1"
:
"2"
);
record
.
setExtInfo
(
""
);
record
.
setCreateTime
(
now
);
record
.
setUpdateTime
(
now
);
sharerProdutcCommissionRecordMapper
.
insert
(
record
);
}
else
{
log
.
error
(
"用户登录状态过期,保存记录失败"
);
}
}
}
/**
* 删除推客的的分佣类型和比例信息
*/
private
void
deleteSharerCommissionInfo
(
CommissionSharerBO
oldCommissionSharer
)
{
// 分佣比例为小数, 微信接口参数应当分佣比例*1000 为整数
BigDecimal
commissionRatio
=
defaultCommissionRatio
.
divide
(
BigDecimal
.
valueOf
(
1000
));
// 设置推客分佣比例
boolean
isSuccess
=
false
;
try
{
// 设置推客分佣比例
weChatSetSharerCommissionRequest
.
handle
(
oldCommissionSharer
.
getSharerId
(),
commissionRatio
.
toPlainString
());
isSuccess
=
true
;
}
catch
(
Exception
e
)
{
log
.
error
(
"设置推客的的分佣类型和比例信息失败"
,
e
);
}
finally
{
LoginUserInfo
loginUserInfo
=
LoginUserContextHolder
.
get
();
if
(
null
!=
loginUserInfo
)
{
Date
now
=
new
Date
();
SharerProductCommissionRecord
record
=
new
SharerProductCommissionRecord
();
record
.
setOpenId
(
loginUserInfo
.
getOpenId
());
record
.
setSharerAppid
(
oldCommissionSharer
.
getSharerId
());
record
.
setProductId
(
""
);
record
.
setOptType
(
CommissionChangeOptTypeEnum
.
UNSET
.
getCode
());
record
.
setOptInfo
(
oldCommissionSharer
.
getCommissionRatio
().
toPlainString
()
+
"&"
+
defaultCommissionRatio
.
toPlainString
());
record
.
setOptTime
(
now
);
record
.
setOptStatus
(
isSuccess
?
"1"
:
"2"
);
record
.
setExtInfo
(
""
);
record
.
setCreateTime
(
now
);
record
.
setUpdateTime
(
now
);
sharerProdutcCommissionRecordMapper
.
insert
(
record
);
}
else
{
log
.
error
(
"用户登录状态过期,保存记录失败"
);
}
}
}
/**
* 用户商品分佣比例变更
*/
private
void
sharerProductCommissionRatioChange
(
ConfigChange
change
)
{
List
<
CommissionSharerProductBO
>
oldCommissionSharerList
=
JSON
.
parseArray
(
change
.
getOldValue
(),
CommissionSharerProductBO
.
class
);
if
(
null
==
oldCommissionSharerList
)
{
oldCommissionSharerList
=
new
ArrayList
<>();
}
List
<
CommissionSharerProductBO
>
newCommissionSharerList
=
JSON
.
parseArray
(
change
.
getNewValue
(),
CommissionSharerProductBO
.
class
);
if
(
null
==
newCommissionSharerList
)
{
newCommissionSharerList
=
Collections
.
emptyList
();
}
// 将 newCommissionSharerList 转换为 Map,以减少流操作的开销
Map
<
String
,
CommissionSharerProductBO
>
newCommissionSharerMap
=
newCommissionSharerList
.
stream
()
.
collect
(
Collectors
.
toMap
(
this
::
getSharerProductCommissionMapKey
,
Function
.
identity
()));
for
(
CommissionSharerProductBO
oldInfo
:
oldCommissionSharerList
)
{
CommissionSharerProductBO
newInfo
=
newCommissionSharerMap
.
get
(
getSharerProductCommissionMapKey
(
oldInfo
));
if
(
newInfo
!=
null
)
{
// 修改
if
(
newInfo
.
getCommissionRatio
().
compareTo
(
oldInfo
.
getCommissionRatio
())
!=
0
)
{
setSharerProductCommissionInfo
(
newInfo
,
oldInfo
);
}
}
else
{
// 删除
deleteSharerProductCommissionInfo
(
oldInfo
);
}
}
for
(
CommissionSharerProductBO
newInfo
:
newCommissionSharerList
)
{
// 新增
if
(
oldCommissionSharerList
.
stream
().
noneMatch
(
item
->
item
.
getOpenId
().
equals
(
newInfo
.
getOpenId
())
&&
item
.
getProductId
().
equals
(
newInfo
.
getProductId
())))
{
setSharerProductCommissionInfo
(
newInfo
,
null
);
}
}
}
private
String
getSharerProductCommissionMapKey
(
CommissionSharerProductBO
bo
)
{
return
bo
.
getOpenId
()
+
"&"
+
bo
.
getProductId
();
}
/**
* 设置推客的的分佣类型和比例信息
*/
private
void
setSharerProductCommissionInfo
(
CommissionSharerProductBO
newBo
,
CommissionSharerProductBO
oldBo
)
{
// 分佣比例为小数, 微信接口参数应当分佣比例*1000 为整数
BigDecimal
commissionRatio
=
newBo
.
getCommissionRatio
().
divide
(
BigDecimal
.
valueOf
(
1000
));
// 设置推客分佣比例
boolean
isSuccess
=
false
;
try
{
// 设置推客分佣比例
weChatSetSharerProductCommissionRequest
.
handle
(
newBo
.
getSharerId
(),
newBo
.
getProductId
(),
commissionRatio
.
toPlainString
());
isSuccess
=
true
;
}
catch
(
Exception
e
)
{
log
.
error
(
"设置推客的的分佣类型和比例信息失败"
,
e
);
}
finally
{
LoginUserInfo
loginUserInfo
=
LoginUserContextHolder
.
get
();
if
(
null
!=
loginUserInfo
)
{
Date
now
=
new
Date
();
SharerProductCommissionRecord
record
=
new
SharerProductCommissionRecord
();
record
.
setOpenId
(
loginUserInfo
.
getOpenId
());
record
.
setSharerAppid
(
newBo
.
getSharerId
());
record
.
setProductId
(
newBo
.
getProductId
().
toString
());
record
.
setOptType
(
CommissionChangeOptTypeEnum
.
SET
.
getCode
());
record
.
setOptInfo
(
oldBo
.
getCommissionRatio
().
toPlainString
()
+
"&"
+
newBo
.
getCommissionRatio
().
toPlainString
());
record
.
setOptTime
(
now
);
record
.
setOptStatus
(
isSuccess
?
"1"
:
"2"
);
record
.
setExtInfo
(
""
);
record
.
setCreateTime
(
now
);
record
.
setUpdateTime
(
now
);
sharerProdutcCommissionRecordMapper
.
insert
(
record
);
}
else
{
log
.
error
(
"用户登录状态过期,保存记录失败"
);
}
}
}
/**
* 删除推客的的分佣类型和比例信息
*/
private
void
deleteSharerProductCommissionInfo
(
CommissionSharerProductBO
oldBo
)
{
// 设置推客分佣比例
boolean
isSuccess
=
false
;
try
{
// 设置推客分佣比例
weChatSetSharerProductCommissionRequest
.
handle
(
oldBo
.
getSharerId
(),
oldBo
.
getProductId
(),
null
);
isSuccess
=
true
;
}
catch
(
Exception
e
)
{
log
.
error
(
"设置推客的的分佣类型和比例信息失败"
,
e
);
}
finally
{
LoginUserInfo
loginUserInfo
=
LoginUserContextHolder
.
get
();
if
(
null
!=
loginUserInfo
)
{
Date
now
=
new
Date
();
SharerProductCommissionRecord
record
=
new
SharerProductCommissionRecord
();
record
.
setOpenId
(
loginUserInfo
.
getOpenId
());
record
.
setSharerAppid
(
oldBo
.
getSharerId
());
record
.
setProductId
(
oldBo
.
getProductId
().
toString
());
record
.
setOptType
(
CommissionChangeOptTypeEnum
.
UNSET
.
getCode
());
record
.
setOptInfo
(
oldBo
.
getCommissionRatio
().
toPlainString
()
+
"&"
);
record
.
setOptTime
(
now
);
record
.
setOptStatus
(
isSuccess
?
"1"
:
"2"
);
record
.
setExtInfo
(
""
);
record
.
setCreateTime
(
now
);
record
.
setUpdateTime
(
now
);
sharerProdutcCommissionRecordMapper
.
insert
(
record
);
}
else
{
log
.
error
(
"用户登录状态过期,保存记录失败"
);
}
}
}
}
\ No newline at end of file
yanxuan-wx-store-sharer-biz/src/main/java/com/netease/yanxuan/wx/store/sharer/biz/config/ProductCommissionConfig.java
deleted
100644 → 0
View file @
51c8d319
package
com
.
netease
.
yanxuan
.
wx
.
store
.
sharer
.
biz
.
config
;
import
com.alibaba.fastjson.JSON
;
import
com.ctrip.framework.apollo.model.ConfigChange
;
import
com.ctrip.framework.apollo.model.ConfigChangeEvent
;
import
com.ctrip.framework.apollo.spring.annotation.ApolloConfigChangeListener
;
import
com.ctrip.framework.apollo.spring.annotation.EnableAutoUpdateApolloConfig
;
import
com.ctrip.framework.apollo.spring.annotation.ValueMapping
;
import
com.netease.yanxuan.wx.store.sharer.biz.core.LoginUserContextHolder
;
import
com.netease.yanxuan.wx.store.sharer.biz.core.LoginUserInfo
;
import
com.netease.yanxuan.wx.store.sharer.biz.meta.enums.CommissionChangeOptTypeEnum
;
import
com.netease.yanxuan.wx.store.sharer.biz.meta.model.bo.ProductCommissionSharerBO
;
import
com.netease.yanxuan.wx.store.sharer.biz.meta.model.bo.ProductCommissionSharerProductBO
;
import
com.netease.yanxuan.wx.store.sharer.dal.mapper.SharerProductCommissionRecordMapper
;
import
com.netease.yanxuan.wx.store.sharer.dal.meta.model.po.SharerProductCommissionRecord
;
import
lombok.Data
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* @Description 商品分佣金配置
* @Author fanjiaxin
* @Date 2025/3/10 17:26
*/
@Slf4j
@Data
@Component
@RequiredArgsConstructor
@EnableAutoUpdateApolloConfig
public
class
ProductCommissionConfig
{
private
final
SharerProductCommissionRecordMapper
sharerProdutcCommissionRecordMapper
;
/**
* 默认分佣比例
*/
@Value
(
"${application.commissionratio.default:10}"
)
private
BigDecimal
defaultCommissionRatio
;
/**
* 用户分佣比例
*/
@ValueMapping
(
"${application.commissionratio.sharer:}"
)
private
ProductCommissionSharerBO
productCommissionSharerBO
;
/**
* 用户商品分佣比例
*/
@ValueMapping
(
"${application.commissionratio.sharerproduct:}"
)
private
ProductCommissionSharerProductBO
productCommissionSharerProductBO
;
/**
* 监听
*/
@ApolloConfigChangeListener
(
"sv-channel.config"
)
public
void
onChange
(
ConfigChangeEvent
changeEvent
)
{
log
.
info
(
"ProductCommissionConfig:onChange, changeEvent = {}"
,
JSON
.
toJSONString
(
changeEvent
));
// 默认分佣比例
String
defaultCommissionratio
=
"application.commissionratio.default"
;
if
(
changeEvent
.
isChanged
(
defaultCommissionratio
))
{
ConfigChange
change
=
changeEvent
.
getChange
(
defaultCommissionratio
);
defaultCommissionratioChange
(
change
);
}
// 用户分佣比例
String
sharerCommissionratio
=
"application.commissionratio.sharer"
;
if
(
changeEvent
.
isChanged
(
sharerCommissionratio
))
{
ConfigChange
change
=
changeEvent
.
getChange
(
sharerCommissionratio
);
sharerCommissionratioChange
(
change
);
}
// 用户商品分佣比例
String
sharerproductCommissionratio
=
"application.commissionratio.sharerproduct"
;
if
(
changeEvent
.
isChanged
(
sharerproductCommissionratio
))
{
ConfigChange
change
=
changeEvent
.
getChange
(
sharerproductCommissionratio
);
sharerproductCommissionratioChange
(
change
);
}
}
/**
* 默认分佣比例变更
*/
private
void
defaultCommissionratioChange
(
ConfigChange
change
){
LoginUserInfo
loginUserInfo
=
LoginUserContextHolder
.
get
();
if
(
null
==
loginUserInfo
)
{
log
.
error
(
"用户登录状态过期"
);
return
;
}
SharerProductCommissionRecord
record
=
new
SharerProductCommissionRecord
();
record
.
setOpenId
(
loginUserInfo
.
getOpenId
());
record
.
setSharerAppid
(
loginUserInfo
.
getSharerAppId
());
record
.
setProductId
(
""
);
record
.
setOptType
(
CommissionChangeOptTypeEnum
.
DEFAULT_CHANGE
.
getCode
());
record
.
setOptInfo
(
change
.
getOldValue
()
+
"&"
+
change
.
getNewValue
());
record
.
setOptTime
(
new
Date
());
record
.
setOptStatus
(
"1"
);
record
.
setExtInfo
(
""
);
record
.
setCreateTime
(
new
Date
());
record
.
setUpdateTime
(
new
Date
());
sharerProdutcCommissionRecordMapper
.
insert
(
record
);
}
/**
* 用户分佣比例变更
*/
private
void
sharerCommissionratioChange
(
ConfigChange
change
){
LoginUserInfo
loginUserInfo
=
LoginUserContextHolder
.
get
();
if
(
null
==
loginUserInfo
)
{
log
.
error
(
"用户登录状态过期"
);
return
;
}
SharerProductCommissionRecord
record
=
new
SharerProductCommissionRecord
();
record
.
setOpenId
(
loginUserInfo
.
getOpenId
());
record
.
setSharerAppid
(
loginUserInfo
.
getSharerAppId
());
record
.
setProductId
(
""
);
record
.
setOptType
(
CommissionChangeOptTypeEnum
.
SET
.
getCode
());
record
.
setOptInfo
(
change
.
getOldValue
()
+
"&"
+
change
.
getNewValue
());
record
.
setOptTime
(
new
Date
());
record
.
setOptStatus
(
"1"
);
record
.
setExtInfo
(
""
);
record
.
setCreateTime
(
new
Date
());
record
.
setUpdateTime
(
new
Date
());
sharerProdutcCommissionRecordMapper
.
insert
(
record
);
}
/**
* 用户商品分佣比例变更
*/
private
void
sharerproductCommissionratioChange
(
ConfigChange
change
){
LoginUserInfo
loginUserInfo
=
LoginUserContextHolder
.
get
();
if
(
null
==
loginUserInfo
)
{
log
.
error
(
"用户登录状态过期"
);
return
;
}
SharerProductCommissionRecord
record
=
new
SharerProductCommissionRecord
();
record
.
setOpenId
(
loginUserInfo
.
getOpenId
());
record
.
setSharerAppid
(
loginUserInfo
.
getSharerAppId
());
record
.
setProductId
(
""
);
record
.
setOptType
(
CommissionChangeOptTypeEnum
.
SET
.
getCode
());
record
.
setOptInfo
(
change
.
getOldValue
()
+
"&"
+
change
.
getNewValue
());
record
.
setOptTime
(
new
Date
());
record
.
setOptStatus
(
"1"
);
record
.
setExtInfo
(
""
);
record
.
setCreateTime
(
new
Date
());
record
.
setUpdateTime
(
new
Date
());
sharerProdutcCommissionRecordMapper
.
insert
(
record
);
}
}
\ No newline at end of file
yanxuan-wx-store-sharer-biz/src/main/java/com/netease/yanxuan/wx/store/sharer/biz/meta/model/bo/
Product
CommissionSharerBO.java
→
yanxuan-wx-store-sharer-biz/src/main/java/com/netease/yanxuan/wx/store/sharer/biz/meta/model/bo/CommissionSharerBO.java
View file @
7b535c89
...
...
@@ -11,10 +11,14 @@ import java.math.BigDecimal;
* @Date 2025/3/9 13:44
*/
@Data
public
class
Product
CommissionSharerBO
implements
Serializable
{
public
class
CommissionSharerBO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
1482990976577986435L
;
/**
* 用户ID
*/
private
String
openId
;
/**
* 推客ID
*/
private
String
sharerId
;
...
...
yanxuan-wx-store-sharer-biz/src/main/java/com/netease/yanxuan/wx/store/sharer/biz/meta/model/bo/
Product
CommissionSharerProductBO.java
→
yanxuan-wx-store-sharer-biz/src/main/java/com/netease/yanxuan/wx/store/sharer/biz/meta/model/bo/CommissionSharerProductBO.java
View file @
7b535c89
...
...
@@ -11,10 +11,14 @@ import java.math.BigDecimal;
* @Date 2025/3/9 13:44
*/
@Data
public
class
Product
CommissionSharerProductBO
implements
Serializable
{
public
class
CommissionSharerProductBO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
1482990976577986435L
;
/**
* 用户ID
*/
private
String
openId
;
/**
* 推客ID
*/
private
String
sharerId
;
...
...
yanxuan-wx-store-sharer-biz/src/main/java/com/netease/yanxuan/wx/store/sharer/biz/service/impl/UserServiceImpl.java
View file @
7b535c89
...
...
@@ -3,7 +3,7 @@ package com.netease.yanxuan.wx.store.sharer.biz.service.impl;
import
cn.dev33.satoken.stp.StpUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.netease.yanxuan.wx.store.sharer.biz.config.
ProductCommission
Config
;
import
com.netease.yanxuan.wx.store.sharer.biz.config.
DrmSharer
Config
;
import
com.netease.yanxuan.wx.store.sharer.biz.core.LoginUserContextHolder
;
import
com.netease.yanxuan.wx.store.sharer.biz.core.LoginUserHelper
;
import
com.netease.yanxuan.wx.store.sharer.biz.core.LoginUserInfo
;
...
...
@@ -18,6 +18,7 @@ import com.netease.yanxuan.wx.store.sharer.dal.meta.model.po.SharerInfo;
import
com.netease.yanxuan.wx.store.sharer.integration.handler.impl.WeChatSharerListRequest
;
import
com.netease.yanxuan.wx.store.sharer.integration.handler.impl.WeChatSharerRegisterBindRequest
;
import
com.netease.yanxuan.wx.store.sharer.integration.handler.impl.WeChatUserInfoRequest
;
import
com.netease.yanxuan.wx.store.sharer.integration.meta.enums.CommissionTypeEnum
;
import
com.netease.yanxuan.wx.store.sharer.integration.meta.model.vo.WeChatSharerInfoVO
;
import
com.netease.yanxuan.wx.store.sharer.integration.meta.model.vo.WeChatSharerListVO
;
import
com.netease.yanxuan.wx.store.sharer.integration.meta.model.vo.WeChatSharerRegisterBindVO
;
...
...
@@ -42,7 +43,7 @@ import java.util.Date;
public
class
UserServiceImpl
implements
IUserService
{
private
final
SharerInfoMapper
sharerInfoMapper
;
private
final
ProductCommissionConfig
productCommission
Config
;
private
final
DrmSharerConfig
drmSharer
Config
;
private
final
LoginUserHelper
jwtHelper
;
private
final
WeChatUserInfoRequest
weChatUserRequest
;
private
final
WeChatSharerRegisterBindRequest
weChatSharerRegisterBindRequest
;
...
...
@@ -63,8 +64,8 @@ public class UserServiceImpl implements IUserService {
sharerInfo
=
new
SharerInfo
();
sharerInfo
.
setOpenId
(
userInfoVO
.
getOpenid
());
// 默认佣金比例
sharerInfo
.
setCommissionRatio
(
new
BigDecimal
(
10
));
sharerInfo
.
setCommissionType
(
"1"
);
sharerInfo
.
setCommissionRatio
(
drmSharerConfig
.
getDefaultCommissionRatio
(
));
sharerInfo
.
setCommissionType
(
CommissionTypeEnum
.
PLATFORM
.
getCode
()
);
sharerInfo
.
setCreateTime
(
now
);
sharerInfo
.
setUpdateTime
(
now
);
sharerInfoMapper
.
insert
(
sharerInfo
);
...
...
@@ -97,8 +98,8 @@ public class UserServiceImpl implements IUserService {
sharerInfo
=
new
SharerInfo
();
sharerInfo
.
setOpenId
(
loginUserInfo
.
getOpenId
());
// 默认佣金比例
sharerInfo
.
setCommissionRatio
(
new
BigDecimal
(
10
));
sharerInfo
.
setCommissionType
(
"1"
);
sharerInfo
.
setCommissionRatio
(
drmSharerConfig
.
getDefaultCommissionRatio
(
));
sharerInfo
.
setCommissionType
(
CommissionTypeEnum
.
PLATFORM
.
getCode
()
);
sharerInfo
.
setCreateTime
(
now
);
sharerInfo
.
setUpdateTime
(
now
);
sharerInfoMapper
.
insert
(
sharerInfo
);
...
...
@@ -114,8 +115,8 @@ public class UserServiceImpl implements IUserService {
result
.
setSharerAppId
(
sharerInfoVO
.
getSharer_appid
());
sharerInfo
.
setSharerAppid
(
sharerInfoVO
.
getSharer_appid
());
sharerInfo
.
setBindTime
(
new
Date
(
sharerInfoVO
.
getBind_time
()));
sharerInfo
.
setCommissionRatio
(
new
BigDecimal
(
10
));
sharerInfo
.
setCommissionType
(
"1"
);
sharerInfo
.
setCommissionRatio
(
sharerInfoVO
.
getCommission_ratio
(
));
sharerInfo
.
setCommissionType
(
sharerInfoVO
.
getCommission_type
().
toString
()
);
sharerInfo
.
setUpdateTime
(
now
);
sharerInfoMapper
.
updateById
(
sharerInfo
);
}
...
...
@@ -144,7 +145,7 @@ public class UserServiceImpl implements IUserService {
@Override
public
UserCommissionRatioVO
getCommissionRatioDefault
()
{
BigDecimal
defaultCommissionRatio
=
productCommission
Config
.
getDefaultCommissionRatio
();
BigDecimal
defaultCommissionRatio
=
drmSharer
Config
.
getDefaultCommissionRatio
();
return
UserCommissionRatioVO
.
builder
().
commissionRatio
(
defaultCommissionRatio
).
build
();
}
...
...
yanxuan-wx-store-sharer-integration/src/main/java/com/netease/yanxuan/wx/store/sharer/integration/handler/WeChatRestTemplateHandler.java
View file @
7b535c89
...
...
@@ -2,6 +2,7 @@ package com.netease.yanxuan.wx.store.sharer.integration.handler;
import
com.netease.yanxuan.wx.store.sharer.common.exception.BizException
;
import
com.netease.yanxuan.wx.store.sharer.common.handler.RestTemplateClient
;
import
com.netease.yanxuan.wx.store.sharer.integration.core.WeChatContextHolder
;
import
com.netease.yanxuan.wx.store.sharer.integration.meta.model.vo.WeChatCoreVO
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -18,9 +19,11 @@ import org.springframework.stereotype.Service;
@RequiredArgsConstructor
public
class
WeChatRestTemplateHandler
{
private
final
RestTemplateClient
restTemplateClient
;
private
final
WeChatContextHolder
weChatContextHolder
;
public
<
T
,
R
extends
WeChatCoreVO
>
R
execute
(
String
url
,
HttpMethod
method
,
T
params
,
Class
<
R
>
resType
)
{
R
result
=
restTemplateClient
.
execute
(
url
,
method
,
params
,
resType
);
String
accessToken
=
weChatContextHolder
.
getAccessToken
();
R
result
=
restTemplateClient
.
execute
(
url
+
"?access_token="
+
accessToken
,
method
,
params
,
resType
);
if
(!
"0"
.
equals
(
result
.
getErrcode
()))
{
throw
new
BizException
(
"调用微信接口失败,"
+
result
.
getErrmsg
());
}
...
...
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