Commit 2cd36a00 by fanjiaxin

分佣配置结构调整

parent 68c9bbea
Pipeline #71755 passed with stages
in 1 minute 7 seconds
...@@ -208,20 +208,11 @@ public class DrmSharerConfig { ...@@ -208,20 +208,11 @@ public class DrmSharerConfig {
if (null == sharerInfo) { if (null == sharerInfo) {
return; return;
} }
// 分佣比例为小数, 微信接口参数应当分佣比例*比例 为整数
BigDecimal commissionRatio = newCommissionSharer.getCommissionRatio()
.multiply(new BigDecimal(WeChatApi.WECHAT_COMMISSION_RATIO_MULTIPLIER))
.setScale(0, RoundingMode.DOWN);
// 设置推客分佣比例 // 设置推客分佣比例
boolean isSuccess = false; boolean isSuccess = false;
try { try {
if (StringUtils.isNotBlank(sharerInfo.getSharerAppid())) { // 更新分佣比例,同步微信
// 设置推客分佣比例 updateSharerOrProductCommissionRatio(sharerInfo, newCommissionSharer.getCommissionRatio());
weChatShopSetSharerCommissionRequest.handle(sharerInfo.getSharerAppid(), commissionRatio.longValue());
}
// 更新推客分佣比例
updateSharerInfo(sharerInfo, newCommissionSharer.getCommissionRatio()
.setScale(2, RoundingMode.HALF_UP).toPlainString());
isSuccess = true; isSuccess = true;
} catch (Exception e) { } catch (Exception e) {
log.error("设置推客的的分佣类型和比例信息失败", e); log.error("设置推客的的分佣类型和比例信息失败", e);
...@@ -246,19 +237,12 @@ public class DrmSharerConfig { ...@@ -246,19 +237,12 @@ public class DrmSharerConfig {
return; return;
} }
// 分佣比例为小数, 微信接口参数应当分佣比例*倍数 为整数 // 分佣比例为小数, 微信接口参数应当分佣比例*倍数 为整数
BigDecimal sharerCommissionRatio = getSharerOrDefaultCommissionRatio(oldCommissionSharer.getOpenId()); BigDecimal sharerCommissionRatio = new BigDecimal(sharerInfo.getCommissionRatio());
BigDecimal commissionRatio = sharerCommissionRatio
.multiply(new BigDecimal(WeChatApi.WECHAT_COMMISSION_RATIO_MULTIPLIER))
.setScale(0, RoundingMode.DOWN);
// 设置推客分佣比例 // 设置推客分佣比例
boolean isSuccess = false; boolean isSuccess = false;
try { try {
if (StringUtils.isNotBlank(sharerInfo.getSharerAppid())) { // 更新分佣比例,同步微信
// 设置推客分佣比例 updateSharerOrProductCommissionRatio(sharerInfo, sharerCommissionRatio);
weChatShopSetSharerCommissionRequest.handle(sharerInfo.getSharerAppid(), commissionRatio.longValue());
}
// 更新推客分佣比例
updateSharerInfo(sharerInfo, sharerCommissionRatio.setScale(2, RoundingMode.HALF_UP).toPlainString());
isSuccess = true; isSuccess = true;
} catch (Exception e) { } catch (Exception e) {
log.error("设置推客的的分佣类型和比例信息失败", e); log.error("设置推客的的分佣类型和比例信息失败", e);
...@@ -270,6 +254,30 @@ public class DrmSharerConfig { ...@@ -270,6 +254,30 @@ public class DrmSharerConfig {
} }
} }
private void updateSharerOrProductCommissionRatio(SharerInfo sharerInfo, BigDecimal commissionRatio) {
if (StringUtils.isNotBlank(sharerInfo.getSharerAppid())) {
// 分佣比例为小数, 微信接口参数应当分佣比例*比例 为整数
BigDecimal weChatCommissionRatio = commissionRatio
.multiply(new BigDecimal(WeChatApi.WECHAT_COMMISSION_RATIO_MULTIPLIER))
.setScale(0, RoundingMode.DOWN);
// 设置推客分佣比例
weChatShopSetSharerCommissionRequest.handle(sharerInfo.getSharerAppid(), weChatCommissionRatio.longValue());
// 拿到未配置的商品,设置推客商品分佣比例
List<SharerProductCommission> unsetList = getSharerProductCommissionUnsetList(sharerInfo.getOpenId());
if (!CollectionUtils.isEmpty(unsetList)) {
for (SharerProductCommission sharerProductCommission : unsetList) {
// 设置推客分佣比例
weChatShopSetSharerProductCommissionRequest.handle(sharerInfo.getSharerAppid(),
Long.valueOf(sharerProductCommission.getProductId()),
weChatCommissionRatio.longValue());
}
}
}
// 更新推客分佣比例
updateSharerInfo(sharerInfo, commissionRatio
.setScale(2, RoundingMode.HALF_UP).toPlainString());
}
/** /**
* 用户商品分佣比例变更 * 用户商品分佣比例变更
*/ */
...@@ -311,27 +319,21 @@ public class DrmSharerConfig { ...@@ -311,27 +319,21 @@ public class DrmSharerConfig {
* 获取推客分佣比例 * 获取推客分佣比例
*/ */
private BigDecimal getSharerCommissionRatio(String openId) { private BigDecimal getSharerCommissionRatio(String openId) {
Optional<CommissionSharerBO> sharerCommissionOpt = Optional.ofNullable(commissionSharerList) Map<String, CommissionSharerBO> sharerCommissionMap = convertCommissionSharerMap(commissionSharerList);
.orElseGet(ArrayList::new) CommissionSharerBO commissionSharerBO = sharerCommissionMap.get(openId);
.stream()
.filter(item -> StringUtils.isNotBlank(item.getOpenId()))
.filter(item -> item.getOpenId().equals(openId))
.findFirst();
// 返回推客分佣 // 返回推客分佣
return sharerCommissionOpt.map(CommissionSharerBO::getCommissionRatio).orElse(null); return null != commissionSharerBO ? commissionSharerBO.getCommissionRatio() : null;
} }
/** /**
* 获取推客分佣比例 * 获取推客商品未配置的分佣比例集合
*/ */
private BigDecimal getSharerOrDefaultCommissionRatio(String openId) { private List<SharerProductCommission> getSharerProductCommissionUnsetList(String openId) {
// 返回推客分佣 // 返回推客商品分佣
BigDecimal sharerCommissionRatio = getSharerCommissionRatio(openId); LambdaQueryWrapper<SharerProductCommission> lqw = Wrappers.lambdaQuery();
if (null != sharerCommissionRatio) { lqw.eq(SharerProductCommission::getOpenId, openId);
return sharerCommissionRatio; lqw.eq(SharerProductCommission::getUnset, SharerProductCommission.UnsetEnum.UNSET.getCode());
} return sharerProductCommissionMapper.selectList(lqw);
// 返回默认分佣金
return defaultCommissionRatio;
} }
/** /**
...@@ -538,17 +540,21 @@ public class DrmSharerConfig { ...@@ -538,17 +540,21 @@ public class DrmSharerConfig {
.collect(Collectors.toMap(this::getSharerProductCommissionMapKey, item -> item, (key1, key2) -> key2)); .collect(Collectors.toMap(this::getSharerProductCommissionMapKey, item -> item, (key1, key2) -> key2));
} }
private Map<String, CommissionSharerBO> convertCommissionSharerMap(String val) { private Map<String, CommissionSharerBO> convertCommissionSharerMap(String val) {
if (StringUtils.isNotBlank(val)) { if (StringUtils.isNotBlank(val)) {
List<CommissionSharerBO> list = JSON.parseArray(val, CommissionSharerBO.class); List<CommissionSharerBO> list = JSON.parseArray(val, CommissionSharerBO.class);
// 过滤禁用,转换成Map // 过滤禁用,转换成Map
return convertCommissionSharerMap(list);
}
return new HashMap<>(0);
}
private Map<String, CommissionSharerBO> convertCommissionSharerMap(List<CommissionSharerBO> list) {
// 过滤禁用,转换成Map
return Optional.ofNullable(list) return Optional.ofNullable(list)
.orElseGet(ArrayList::new).stream() .orElseGet(ArrayList::new).stream()
.filter(item -> StringUtils.isNotBlank(item.getOpenId())) .filter(item -> StringUtils.isNotBlank(item.getOpenId()))
.filter(item -> null != item.getCommissionRatio()) .filter(item -> null != item.getCommissionRatio())
.collect(Collectors.toMap(CommissionSharerBO::getOpenId, item -> item, (key1, key2) -> key2)); .collect(Collectors.toMap(CommissionSharerBO::getOpenId, item -> item, (key1, key2) -> key2));
} }
return new HashMap<>(0);
}
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment