Compare commits

...

10 Commits

31 changed files with 241 additions and 37 deletions

View File

@ -65,6 +65,17 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
@DubboReference @DubboReference
ICuMemberServiceLogServiceApi iCuMemberServiceLogServiceApi; ICuMemberServiceLogServiceApi iCuMemberServiceLogServiceApi;
/**
* 特殊体系PK_ID: 150
* V4 500 100
* V5 2000 400
*/
public static final Long VERTEX_PK_ID = 150L;
public static final BigDecimal VERTEX_V4_TOTAL_BOX = new BigDecimal("500");
public static final BigDecimal VERTEX_V4_SMALL_BOX = new BigDecimal("100");
public static final BigDecimal VERTEX_V5_TOTAL_BOX = new BigDecimal("2000");
public static final BigDecimal VERTEX_V5_SMALL_BOX = new BigDecimal("400");
/** /**
* 秒结 * 秒结
* 实时计算秒结数据业绩盒数等级奖衔日奖 * 实时计算秒结数据业绩盒数等级奖衔日奖
@ -723,10 +734,27 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 遍历团队等级mapV4,V5 // 遍历团队等级mapV4,V5
for (Integer gradeValue : retailTeamGradeMap.keySet()) { for (Integer gradeValue : retailTeamGradeMap.keySet()) {
BdGrade bdGrade = retailTeamGradeMap.get(gradeValue); BdGrade bdGrade = retailTeamGradeMap.get(gradeValue);
// 等级总盒数
BigDecimal boxTotal = bdGrade.getBoxTotal();
// 等级小市场盒数
BigDecimal boxSmallTotal = bdGrade.getBoxSmallTotal();
if (VERTEX_PK_ID.equals(targetMemberRangeExt.getPkVertex())) {
// TODO 需要根据配置写死的体系进行单独处理
// V4 500 100
// V5 2000 400
if (EGrade.VIP.getValue() == bdGrade.getGradeValue()) {
boxTotal = VERTEX_V4_TOTAL_BOX;
boxSmallTotal = VERTEX_V4_SMALL_BOX;
} else if (EGrade.S_VIP.getValue() == bdGrade.getGradeValue()) {
boxTotal = VERTEX_V5_TOTAL_BOX;
boxSmallTotal = VERTEX_V5_SMALL_BOX;
}
}
// 如果等级值 大于 当前会员等级值 并且 等级要求累计盒数 小于等于 团队累计盒数 + 累计消费盒数 + 大区注水 + 小区注水则可以进行升级 // 如果等级值 大于 当前会员等级值 并且 等级要求累计盒数 小于等于 团队累计盒数 + 累计消费盒数 + 大区注水 + 小区注水则可以进行升级
if (bdGrade.getGradeValue() > targetMemberRangeExt.getGradeValue() if (bdGrade.getGradeValue() > targetMemberRangeExt.getGradeValue()
&& bdGrade.getBoxTotal().compareTo( && boxTotal.compareTo(
targetMemberRangeExt.getTeamBoxNum().add(targetMemberRangeExt.getConsumeBoxNum()).add(targetMemberRangeExt.getBigBoxNum()).add(targetMemberRangeExt.getSmallBoxNum()) targetMemberRangeExt.getTeamBoxNum().add(targetMemberRangeExt.getConsumeBoxNum()).add(targetMemberRangeExt.getBigBoxNum()).add(targetMemberRangeExt.getSmallBoxNum())
) <= 0 ) <= 0
) { ) {
@ -766,7 +794,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 小区盒数团队累计盒数 + 自消费累计盒数 + 两个注水虚拟盒数 - 大市场盒数 // 小区盒数团队累计盒数 + 自消费累计盒数 + 两个注水虚拟盒数 - 大市场盒数
BigDecimal smallBoxNum = targetMemberRangeExt.getAllTeamBoxNum().add(targetMemberRangeExt.getConsumeBoxNum()).add(targetMemberRangeExt.getBigBoxNum()).add(targetMemberRangeExt.getSmallBoxNum()).subtract(bigBoxNum); BigDecimal smallBoxNum = targetMemberRangeExt.getAllTeamBoxNum().add(targetMemberRangeExt.getConsumeBoxNum()).add(targetMemberRangeExt.getBigBoxNum()).add(targetMemberRangeExt.getSmallBoxNum()).subtract(bigBoxNum);
if (smallBoxNum.compareTo(bdGrade.getBoxSmallTotal()) >= 0) { if (smallBoxNum.compareTo(boxSmallTotal) >= 0) {
// 小区盒数 大于等于 升级小区盒数 // 小区盒数 大于等于 升级小区盒数
CuMemberGrade cuMemberGrade = getCuMemberGrade(period, targetMemberRangeExt, bdGrade); CuMemberGrade cuMemberGrade = getCuMemberGrade(period, targetMemberRangeExt, bdGrade);
cuMemberGradeList.add(cuMemberGrade); cuMemberGradeList.add(cuMemberGrade);
@ -955,8 +983,25 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 遍历团队等级mapV4,V5 // 遍历团队等级mapV4,V5
for (Integer gradeValue : retailTeamGradeMap.keySet()) { for (Integer gradeValue : retailTeamGradeMap.keySet()) {
BdGrade bdGrade = retailTeamGradeMap.get(gradeValue); BdGrade bdGrade = retailTeamGradeMap.get(gradeValue);
// 等级总盒数
BigDecimal boxTotal = bdGrade.getBoxTotal();
// 等级小市场盒数
BigDecimal boxSmallTotal = bdGrade.getBoxSmallTotal();
if (bdGrade.getBoxTotal().compareTo(targetMemberRangeExt.getTeamBoxNum().add(targetMemberRangeExt.getConsumeBoxNum()).add(targetMemberRangeExt.getBigBoxNum()).add(targetMemberRangeExt.getSmallBoxNum())) <= 0) { if (VERTEX_PK_ID.equals(targetMemberRangeExt.getPkVertex())) {
// TODO 需要根据配置写死的体系进行单独处理
// V4 500 100
// V5 2000 400
if (EGrade.VIP.getValue() == bdGrade.getGradeValue()) {
boxTotal = VERTEX_V4_TOTAL_BOX;
boxSmallTotal = VERTEX_V4_SMALL_BOX;
} else if (EGrade.S_VIP.getValue() == bdGrade.getGradeValue()) {
boxTotal = VERTEX_V5_TOTAL_BOX;
boxSmallTotal = VERTEX_V5_SMALL_BOX;
}
}
if (boxTotal.compareTo(targetMemberRangeExt.getTeamBoxNum().add(targetMemberRangeExt.getConsumeBoxNum()).add(targetMemberRangeExt.getBigBoxNum()).add(targetMemberRangeExt.getSmallBoxNum())) <= 0) {
// 验证小区计算小区累计盒数 查询伞下会员 // 验证小区计算小区累计盒数 查询伞下会员
List<CuMemberRetailRangeExt> cuMemberRangeExtList; List<CuMemberRetailRangeExt> cuMemberRangeExtList;
if (secondRangeTableName != null) { if (secondRangeTableName != null) {
@ -993,7 +1038,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 小区盒数团队累计盒数 + 自消费累计盒数 + 两个注水虚拟盒数 - 大市场盒数 // 小区盒数团队累计盒数 + 自消费累计盒数 + 两个注水虚拟盒数 - 大市场盒数
BigDecimal smallBoxNum = targetMemberRangeExt.getAllTeamBoxNum().add(targetMemberRangeExt.getConsumeBoxNum()).add(targetMemberRangeExt.getBigBoxNum()).add(targetMemberRangeExt.getSmallBoxNum()).subtract(bigBoxNum); BigDecimal smallBoxNum = targetMemberRangeExt.getAllTeamBoxNum().add(targetMemberRangeExt.getConsumeBoxNum()).add(targetMemberRangeExt.getBigBoxNum()).add(targetMemberRangeExt.getSmallBoxNum()).subtract(bigBoxNum);
if (smallBoxNum.compareTo(bdGrade.getBoxSmallTotal()) >= 0) { if (smallBoxNum.compareTo(boxSmallTotal) >= 0) {
// 小区盒数 大于等于 升级小区盒数 // 小区盒数 大于等于 升级小区盒数
CuMemberGrade cuMemberGrade = getCuMemberGrade(period, targetMemberRangeExt, bdGrade); CuMemberGrade cuMemberGrade = getCuMemberGrade(period, targetMemberRangeExt, bdGrade);
cuMemberGradeMap.put(cuMemberGrade.getPkMember() + "_" + cuMemberGrade.getNewLevel(), cuMemberGrade); cuMemberGradeMap.put(cuMemberGrade.getPkMember() + "_" + cuMemberGrade.getNewLevel(), cuMemberGrade);
@ -1124,7 +1169,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// // 直推级差收益 // // 直推级差收益
// BigDecimal calBonusIncome = BigDecimal.ZERO; // BigDecimal calBonusIncome = BigDecimal.ZERO;
// 商品最终价格 // 商品最终价格总价带数量的价格
BigDecimal waresPrice = saOrderItems.getWaresPrice(); BigDecimal waresPrice = saOrderItems.getWaresPrice();
// 商品数量 // 商品数量
BigDecimal waresQuantityBig = saOrderItems.getWaresQuantity(); BigDecimal waresQuantityBig = saOrderItems.getWaresQuantity();
@ -1168,20 +1213,20 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
if (beforeGradeValue == 0) { if (beforeGradeValue == 0) {
// 前一个会员等级为0肯定为第一次处理直接处理直推级差收益 // 前一个会员等级为0肯定为第一次处理直接处理直推级差收益
if (EGrade.HAI_FAN.getValue() == calGradeValue) { if (EGrade.HAI_FAN.getValue() == calGradeValue) {
// VIP1份40 // VIP 1 10%
rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresQuantityBig); rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresPrice);
} else if (EGrade.YOU_KE.getValue() == calGradeValue) { } else if (EGrade.YOU_KE.getValue() == calGradeValue) {
// SVIP2份40 // SVIP 2 10%
rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresQuantityBig).multiply(new BigDecimal("2")); rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresPrice).multiply(new BigDecimal("2"));
} else if (EGrade.MAKER.getValue() == calGradeValue) { } else if (EGrade.MAKER.getValue() == calGradeValue) {
// 卓越3份40 // 卓越 3 10%
rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresQuantityBig).multiply(new BigDecimal("3")); rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresPrice).multiply(new BigDecimal("3"));
} else if (EGrade.VIP.getValue() == calGradeValue) { } else if (EGrade.VIP.getValue() == calGradeValue) {
// 首席4份40 // 首席 4 10%
rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresQuantityBig).multiply(new BigDecimal("4")); rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresPrice).multiply(new BigDecimal("4"));
} else if (EGrade.S_VIP.getValue() == calGradeValue) { } else if (EGrade.S_VIP.getValue() == calGradeValue) {
// 合伙人5份40 // 合伙人 5 10%
rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresQuantityBig).multiply(new BigDecimal("5")); rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresPrice).multiply(new BigDecimal("5"));
} }
// 赋值前一个会员等级 // 赋值前一个会员等级
beforeGradeValue = calGradeValue; beforeGradeValue = calGradeValue;
@ -1210,7 +1255,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
int tmpGradeVal = (calGradeValue - beforeGradeValue) / 10; int tmpGradeVal = (calGradeValue - beforeGradeValue) / 10;
// 新等级的直推级差收益 // 新等级的直推级差收益
rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresQuantityBig).multiply(new BigDecimal(tmpGradeVal)); rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresPrice).multiply(new BigDecimal(tmpGradeVal));
// 直推级差收益 = 新等级的直推级差收益 - 上一等级的平级收益 // 直推级差收益 = 新等级的直推级差收益 - 上一等级的平级收益
rangeBonusIncome = rangeBonusIncome.subtract(beforeSameBonus); rangeBonusIncome = rangeBonusIncome.subtract(beforeSameBonus);

View File

@ -38,7 +38,7 @@ public class MemberBonusFirstPurchaseVO extends PubMemberBonusVO {
/** /**
* 商城重消 * 商城重消
*/ */
@BigDecimalFormat("#0.0000") @BigDecimalFormat("#0.00")
private BigDecimal backPoints; private BigDecimal backPoints;
// //
// /** // /**
@ -59,7 +59,7 @@ public class MemberBonusFirstPurchaseVO extends PubMemberBonusVO {
/** /**
* 复购级差收益 * 复购级差收益
*/ */
@BigDecimalFormat("#0.0000") @BigDecimalFormat("#0.00")
private BigDecimal repurRangeIncome; private BigDecimal repurRangeIncome;
// /** // /**
@ -76,55 +76,55 @@ public class MemberBonusFirstPurchaseVO extends PubMemberBonusVO {
/** /**
* 新零售直推收益 * 新零售直推收益
*/ */
@BigDecimalFormat("#0.0000") @BigDecimalFormat("#0.00")
private BigDecimal retailRangeIncome; private BigDecimal retailRangeIncome;
/** /**
* 新零售平级收益 * 新零售平级收益
*/ */
@BigDecimalFormat("#0.0000") @BigDecimalFormat("#0.00")
private BigDecimal retailSameLevelIncome; private BigDecimal retailSameLevelIncome;
/** /**
* 新零售区域分红 * 新零售区域分红
*/ */
@BigDecimalFormat("#0.0000") @BigDecimalFormat("#0.00")
private BigDecimal retailAreaIncome; private BigDecimal retailAreaIncome;
/** /**
* 福利级差收益 * 福利级差收益
*/ */
@BigDecimalFormat("#0.0000") @BigDecimalFormat("#0.00")
private BigDecimal retailBenefitRangeIncome; private BigDecimal retailBenefitRangeIncome;
/** /**
* 复购级差收益 * 复购级差收益
*/ */
@BigDecimalFormat("#0.0000") @BigDecimalFormat("#0.00")
private BigDecimal retailMonthRepurchaseIncome; private BigDecimal retailMonthRepurchaseIncome;
/** /**
* 培育津贴 * 培育津贴
*/ */
@BigDecimalFormat("#0.0000") @BigDecimalFormat("#0.00")
private BigDecimal coachIncome; private BigDecimal coachIncome;
/** /**
* 福利分红收益总计 * 福利分红收益总计
*/ */
@BigDecimalFormat("#0.0000") @BigDecimalFormat("#0.00")
private BigDecimal retailBenefitIncomeTotal; private BigDecimal retailBenefitIncomeTotal;
/** /**
* 新零售收益小计 * 新零售收益小计
*/ */
@BigDecimalFormat("#0.0000") @BigDecimalFormat("#0.00")
private BigDecimal retailRealSubtotal; private BigDecimal retailRealSubtotal;
/** /**
* 实发收益总计 * 实发收益总计
*/ */
@BigDecimalFormat("#0.0000") @BigDecimalFormat("#0.00")
private BigDecimal realIncomeTotal; private BigDecimal realIncomeTotal;
} }

View File

@ -626,4 +626,6 @@ public interface CuMemberMapper extends BaseMapper<CuMember> {
*/ */
BdTradeWhiteConfig selectMemberByUnderBlood(@Param("pkMember") Long pkMember, @Param("memberType") Integer memberType); BdTradeWhiteConfig selectMemberByUnderBlood(@Param("pkMember") Long pkMember, @Param("memberType") Integer memberType);
String getSharePosterImage(@Param("userId") Long userId);
} }

View File

@ -895,4 +895,9 @@ public interface ICuMemberService extends IService<CuMember> {
*/ */
BdTradeWhiteConfig selectMemberByUnderBlood(Long pkMember, Integer memberType); BdTradeWhiteConfig selectMemberByUnderBlood(Long pkMember, Integer memberType);
/**
* 获取用户体系分享图片
* @return
*/
String getSharePosterImage();
} }

View File

@ -3232,4 +3232,9 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
return baseMapper.selectMemberByUnderBlood(pkMember, memberType); return baseMapper.selectMemberByUnderBlood(pkMember, memberType);
} }
@Override
public String getSharePosterImage() {
return baseMapper.getSharePosterImage(SecurityUtils.getUserId());
}
} }

View File

@ -6,6 +6,7 @@ import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.lang.tree.TreeNodeConfig; import cn.hutool.core.lang.tree.TreeNodeConfig;
import cn.hutool.core.lang.tree.TreeUtil; import cn.hutool.core.lang.tree.TreeUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hzs.common.core.annotation.RepeatSubmitSimple; import com.hzs.common.core.annotation.RepeatSubmitSimple;
@ -15,6 +16,7 @@ import com.hzs.common.core.enums.EGrade;
import com.hzs.common.core.enums.ENoticeWebsiteType; import com.hzs.common.core.enums.ENoticeWebsiteType;
import com.hzs.common.core.enums.EYesNo; import com.hzs.common.core.enums.EYesNo;
import com.hzs.common.core.utils.PageUtils; import com.hzs.common.core.utils.PageUtils;
import com.hzs.common.core.utils.sign.Base64Util;
import com.hzs.common.core.web.controller.BaseController; import com.hzs.common.core.web.controller.BaseController;
import com.hzs.common.core.web.domain.AjaxResult; import com.hzs.common.core.web.domain.AjaxResult;
import com.hzs.common.core.web.page.TableDataInfo; import com.hzs.common.core.web.page.TableDataInfo;
@ -75,6 +77,14 @@ public class RetailMemberController extends BaseController {
} }
return AjaxResult.success(retailMemberInfoVO); return AjaxResult.success(retailMemberInfoVO);
} }
@GetMapping("/get-shared-image")
public AjaxResult getSharedImage() {
JSONObject result = new JSONObject();
String url = iCuMemberService.getSharePosterImage();
result.set("url", url);
result.set("base64", Base64Util.toUrlBase64(url));
return AjaxResult.success(result);
}
/** /**
* 获取会员收益区域 * 获取会员收益区域

View File

@ -15,4 +15,5 @@ public interface IMemberRetailService {
*/ */
RetailMemberInfoVO getMemberInfo(Long pkMember); RetailMemberInfoVO getMemberInfo(Long pkMember);
String getSharePosterImage();
} }

View File

@ -91,9 +91,15 @@ public class MemberRetailServiceImpl implements IMemberRetailService {
.pkCountry(cuMember.getPkCountry()) .pkCountry(cuMember.getPkCountry())
.pkSettleCountry(cuMember.getPkSettleCountry()) .pkSettleCountry(cuMember.getPkSettleCountry())
.isActivate(cuMember.getIsActivate()) .isActivate(cuMember.getIsActivate())
.sharePosterImage(cuMember.getSharePosterImage())
.build(); .build();
} }
return null; return null;
} }
@Override
public String getSharePosterImage() {
return iCuMemberService.getSharePosterImage();
}
} }

View File

@ -141,4 +141,10 @@ public class RetailMemberInfoVO implements Serializable {
*/ */
private Integer isActivate; private Integer isActivate;
/**
* 分享海报图片
*/
private String sharePosterImage;
} }

View File

@ -1887,6 +1887,7 @@
<!-- 查询菜单用户 --> <!-- 查询菜单用户 -->
<select id="getMenuMember" resultType="com.hzs.common.domain.member.ext.CuMemberExt"> <select id="getMenuMember" resultType="com.hzs.common.domain.member.ext.CuMemberExt">
select cm.*, select cm.*,
bv.SHARE_POSTER_IMAGE as sharePosterImage,
case case
when tmp1.pk_member is null then when tmp1.pk_member is null then
1 1
@ -1932,6 +1933,7 @@
and cms.APPROVE_STATUS = 5 and cms.APPROVE_STATUS = 5
and cms.APPLY_STATUS = 5) tmp10 and cms.APPLY_STATUS = 5) tmp10
on tmp10.pk_member = cm.pk_id on tmp10.pk_member = cm.pk_id
left join BD_VERTEX bv on bv.PK_ID = cm.PK_VERTEX
where cm.pk_id = #{pkMember} where cm.pk_id = #{pkMember}
and cm.del_flag = 0 and cm.del_flag = 0
</select> </select>
@ -2475,5 +2477,13 @@
and t0.category = 0) and t0.category = 0)
where rownum = 1 where rownum = 1
</select> </select>
<select id="getSharePosterImage" resultType="java.lang.String" parameterType="java.lang.Long">
select
bv.SHARE_POSTER_IMAGE AS sharePosterImage
FROM
cu_member cm
LEFT JOIN BD_VERTEX bv ON bv.PK_ID = cm.PK_VERTEX
where cm.PK_ID = ${userId}
</select>
</mapper> </mapper>

View File

@ -100,6 +100,7 @@ public class BdVertexController extends BaseController {
bdVertex.setPkMember(mb.getPkId()); bdVertex.setPkMember(mb.getPkId());
bdVertex.setSystemType(systemType); bdVertex.setSystemType(systemType);
bdVertex.setRegionVertexPkId(vertexParam.getRegionVertexPkId()); bdVertex.setRegionVertexPkId(vertexParam.getRegionVertexPkId());
bdVertex.setSharePosterImage(vertexParam.getSharePosterImage());
iBdVertexService.save(bdVertex); iBdVertexService.save(bdVertex);
return AjaxResult.success(); return AjaxResult.success();
} }
@ -139,6 +140,7 @@ public class BdVertexController extends BaseController {
bdVertex.setModifiedTime(new Date()); bdVertex.setModifiedTime(new Date());
bdVertex.setPkModified(SecurityUtils.getUserId()); bdVertex.setPkModified(SecurityUtils.getUserId());
bdVertex.setRegionVertexPkId(vertexParam.getRegionVertexPkId()); bdVertex.setRegionVertexPkId(vertexParam.getRegionVertexPkId());
bdVertex.setSharePosterImage(vertexParam.getSharePosterImage());
if (null == bdVertex.getPkParent()) { if (null == bdVertex.getPkParent()) {
bdVertex.setPkParent(0); bdVertex.setPkParent(0);
} }

View File

@ -59,4 +59,9 @@ public class VertexParam {
private Integer sort; private Integer sort;
private Long regionVertexPkId; private Long regionVertexPkId;
/**
* 分享海报图片
*/
private String sharePosterImage;
} }

View File

@ -52,4 +52,9 @@ public class VertexVo extends BaseEntity {
@TableField("REGION_VERTEX_PK_ID") @TableField("REGION_VERTEX_PK_ID")
private Long regionVertexPkId; private Long regionVertexPkId;
/**
* 分享海报图片
*/
private String sharePosterImage;
} }

View File

@ -10,9 +10,9 @@ import java.util.List;
public class RetailConstants { public class RetailConstants {
/** /**
* 直推级差等级收益每个等级为40元 * 直推级差等级收益每个等级差为百分之十
*/ */
public static final BigDecimal RANGE_BONUS = new BigDecimal("40"); public static final BigDecimal RANGE_BONUS = new BigDecimal("0.1");
/** /**
* 直推平级收益比例每代拿商品价格的千分之五 * 直推平级收益比例每代拿商品价格的千分之五
*/ */

View File

@ -142,6 +142,17 @@ public enum EOrderType {
resultList.add(EOrderType.REPURCHASE_ORDER); resultList.add(EOrderType.REPURCHASE_ORDER);
return resultList; return resultList;
} }
public static String getLabelByValue(Integer value) {
if (null == value) {
return "";
}
for (EOrderType enums : EOrderType.values()) {
if (enums.getValue() == value) {
return enums.getLabel();
}
}
return "";
}
} }

View File

@ -211,4 +211,10 @@ public class CuMemberExt extends CuMember {
*/ */
private String lastMemberCode; private String lastMemberCode;
/**
* 分享海报图片
*/
private String sharePosterImage;
} }

View File

@ -120,6 +120,18 @@ public class TOnlinePayment extends BaseEntity {
@TableField("PAY_SOURCE") @TableField("PAY_SOURCE")
private Integer paySource; private Integer paySource;
/**
* 主账户金额
*/
@TableField("MAIN_ACCOUNT_MONEY")
private BigDecimal mainAccountMoney;
/**
* 子账户金额
*/
@TableField("SUB_ACCOUNT_MONEY")
private BigDecimal subAccountMoney;
/** /**
* 支付-前端回调页面的扩展参数 * 支付-前端回调页面的扩展参数
*/ */

View File

@ -1,5 +1,7 @@
package com.hzs.common.domain.third.pay.ext; package com.hzs.common.domain.third.pay.ext;
import com.hzs.common.core.annotation.Transaction;
import com.hzs.common.core.constant.EnumsPrefixConstants;
import com.hzs.common.domain.third.pay.TOnlinePayment; import com.hzs.common.domain.third.pay.TOnlinePayment;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -32,4 +34,8 @@ public class TOnlinePaymentExt extends TOnlinePayment {
*/ */
private String phone; private String phone;
private Integer orderType;
private String orderTypeVal;
} }

View File

@ -57,4 +57,7 @@ public class BdVertex extends BaseEntity {
@TableField("REGION_VERTEX_PK_ID") @TableField("REGION_VERTEX_PK_ID")
private Long regionVertexPkId; private Long regionVertexPkId;
@TableField("SHARE_POSTER_IMAGE")
private String sharePosterImage;
} }

View File

@ -131,13 +131,14 @@ public class JdPayNotifyController extends JdBaseController {
String thirdOrderCode = successNotify.getOutTradeNo(); String thirdOrderCode = successNotify.getOutTradeNo();
// 订单编号 // 订单编号
String orderCode = thirdOrderCode; String orderCode = thirdOrderCode;
String acqOrderId = successNotify.getAcqOrderId();
// 订单金额 // 订单金额
int tradeAmount = Integer.parseInt(successNotify.getTradeAmount()); int tradeAmount = Integer.parseInt(successNotify.getTradeAmount());
BigDecimal payMoney = new BigDecimal(tradeAmount).divide(new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_UP); BigDecimal payMoney = new BigDecimal(tradeAmount).divide(new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_UP);
Integer payType = convertPayType(successNotify.getPayTool()); Integer payType = convertPayType(successNotify.getPayTool());
// 支付后续业务处理 // 支付后续业务处理
if (iPayService.notifyHandle(type, orderCode, thirdOrderCode, payNumber, payTime, payMoney, EPayChannel.JD, channelNumber, payType)) { if (iPayService.notifyHandle(type, orderCode, thirdOrderCode, payNumber, payTime, payMoney, EPayChannel.JD, channelNumber, payType, acqOrderId)) {
return SUCCESS; return SUCCESS;
} }
} else { } else {

View File

@ -95,4 +95,5 @@ public class JdPayTradeSuccessNotify implements Serializable {
*/ */
private String installmentNum; private String installmentNum;
private String acqOrderId;
} }

View File

@ -75,4 +75,10 @@ public class OnlinePaymentParam {
private Integer systemType; private Integer systemType;
/**
* 订单类型 EOrderType
* -1为充值
*/
private Integer orderType;
} }

View File

@ -29,7 +29,7 @@ public interface IPayService {
EPayChannel ePayChannel, String channelNumber); EPayChannel ePayChannel, String channelNumber);
boolean notifyHandle(String businessType, String businessCode, String originalOrder, boolean notifyHandle(String businessType, String businessCode, String originalOrder,
String payNumber, Date payTime, BigDecimal payMoney, String payNumber, Date payTime, BigDecimal payMoney,
EPayChannel ePayChannel, String channelNumber, Integer payType); EPayChannel ePayChannel, String channelNumber, Integer payType, String acqOrderId);
/** /**

View File

@ -131,9 +131,13 @@ public class JdPayServiceImpl implements IJdPayService {
BigDecimal subTradeAmount; BigDecimal subTradeAmount;
if(i == separateAccounts.size() - 1){ if(i == separateAccounts.size() - 1){
subTradeAmount = remaining; subTradeAmount = remaining;
log.info("分账 最后一个账户( 总 - 已分账 ) : {}, {}", subTradeAmount, remaining);
onlinePayment.setSubAccountMoney(subTradeAmount);
}else{ }else{
subTradeAmount = tradeAmount.subtract(tradeAmount.multiply(separateAccount.getProportion().setScale(2, BigDecimal.ROUND_DOWN)).setScale(2, BigDecimal.ROUND_DOWN)); subTradeAmount = tradeAmount.multiply(separateAccount.getProportion().setScale(2, BigDecimal.ROUND_DOWN)).setScale(2, BigDecimal.ROUND_DOWN);
remaining = remaining.subtract(subTradeAmount).setScale(2, BigDecimal.ROUND_DOWN); remaining = remaining.subtract(subTradeAmount).setScale(2, BigDecimal.ROUND_DOWN);
onlinePayment.setMainAccountMoney(subTradeAmount);
log.info("分账 过程 : {}, {}, {}", subTradeAmount, remaining, separateAccount.getProportion().setScale(2, BigDecimal.ROUND_DOWN));
} }
JdPayDivisionAccountTradeInfo divisionAccountTradeInfo = new JdPayDivisionAccountTradeInfo(); JdPayDivisionAccountTradeInfo divisionAccountTradeInfo = new JdPayDivisionAccountTradeInfo();
divisionAccountTradeInfo.setMerchantNo(separateAccount.getAccount()); divisionAccountTradeInfo.setMerchantNo(separateAccount.getAccount());

View File

@ -107,7 +107,9 @@ public class PayServiceImpl implements IPayService {
} }
@Override @Override
public boolean notifyHandle(String businessType, String businessCode, String originalOrder, String payNumber, Date payTime, BigDecimal payMoney, EPayChannel ePayChannel, String channelNumber, Integer payType) { public boolean notifyHandle(String businessType, String businessCode, String originalOrder, String payNumber,
Date payTime, BigDecimal payMoney, EPayChannel ePayChannel, String channelNumber,
Integer payType, String acqOrderId) {
// 校验支付信息状态业务与支付金额是否一致等 // 校验支付信息状态业务与支付金额是否一致等
TOnlinePayment onlinePayment = itOnlinePaymentService.queryByBusiness( TOnlinePayment onlinePayment = itOnlinePaymentService.queryByBusiness(
ObjectUtil.isNotEmpty(businessType) ? Integer.valueOf(businessType) : null ObjectUtil.isNotEmpty(businessType) ? Integer.valueOf(businessType) : null
@ -132,6 +134,7 @@ public class PayServiceImpl implements IPayService {
onlinePayment.setPkModified(MagicNumberConstants.PK_ADMIN); onlinePayment.setPkModified(MagicNumberConstants.PK_ADMIN);
onlinePayment.setModifiedTime(new Date()); onlinePayment.setModifiedTime(new Date());
onlinePayment.setPayType(payType); onlinePayment.setPayType(payType);
onlinePayment.setChannelNumber(acqOrderId);
if (null != ePayChannel) { if (null != ePayChannel) {
onlinePayment.setPayChannel(ePayChannel.getValue()); onlinePayment.setPayChannel(ePayChannel.getValue());
} }

View File

@ -3,6 +3,7 @@ package com.hzs.third.pay.service.impl;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.common.core.enums.EOrderType;
import com.hzs.common.domain.third.pay.TOnlinePayment; import com.hzs.common.domain.third.pay.TOnlinePayment;
import com.hzs.common.domain.third.pay.ext.TOnlinePaymentExt; import com.hzs.common.domain.third.pay.ext.TOnlinePaymentExt;
import com.hzs.third.pay.mapper.TOnlinePaymentMapper; import com.hzs.third.pay.mapper.TOnlinePaymentMapper;
@ -54,7 +55,15 @@ public class TOnlinePaymentServiceImpl extends ServiceImpl<TOnlinePaymentMapper,
@Override @Override
public List<TOnlinePaymentExt> queryList(OnlinePaymentParam param, Integer pkCountry) { public List<TOnlinePaymentExt> queryList(OnlinePaymentParam param, Integer pkCountry) {
return baseMapper.queryList(param, pkCountry); List<TOnlinePaymentExt> result = baseMapper.queryList(param, pkCountry);
for (TOnlinePaymentExt tOnlinePaymentExt : result) {
if(ObjectUtil.isNotEmpty(tOnlinePaymentExt.getOrderType())){
tOnlinePaymentExt.setOrderTypeVal(EOrderType.getLabelByValue(tOnlinePaymentExt.getOrderType()));
}else{
tOnlinePaymentExt.setOrderTypeVal("充值订单");
}
}
return result;
} }
} }

View File

@ -1,7 +1,9 @@
package com.hzs.third.pay.vo; package com.hzs.third.pay.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.hzs.common.core.annotation.BigDecimalFormat;
import com.hzs.common.core.annotation.Excel; import com.hzs.common.core.annotation.Excel;
import com.hzs.common.core.annotation.Transaction; import com.hzs.common.core.annotation.Transaction;
import com.hzs.common.core.constant.EnumsPrefixConstants; import com.hzs.common.core.constant.EnumsPrefixConstants;
@ -144,4 +146,25 @@ public class OnlinePaymentVO {
*/ */
private String callbackInfo; private String callbackInfo;
/**
* 主账户金额
*/
@TableField("MAIN_ACCOUNT_MONEY")
@Excel(name = "主账户金额")
@BigDecimalFormat
private BigDecimal mainAccountMoney;
/**
* 子账户金额
*/
@TableField("SUB_ACCOUNT_MONEY")
@Excel(name = "子账户金额")
@BigDecimalFormat
private BigDecimal subAccountMoney;
private Integer orderType;
@Excel(name = "订单类型")
private String orderTypeVal;
} }

View File

@ -30,10 +30,12 @@
<!-- 查询列表 --> <!-- 查询列表 -->
<select id="queryList" resultType="com.hzs.common.domain.third.pay.ext.TOnlinePaymentExt"> <select id="queryList" resultType="com.hzs.common.domain.third.pay.ext.TOnlinePaymentExt">
select top.*, cm.member_code, cm.member_name select top.*, cm.member_code, cm.member_name,
so.order_type orderType
from T_ONLINE_PAYMENT top from T_ONLINE_PAYMENT top
left join cu_member cm left join cu_member cm
on cm.pk_id = top.pk_creator on cm.pk_id = top.pk_creator
left join sa_order so on so.ORDER_CODE = top.business_code
where top.del_flag = 0 where top.del_flag = 0
and top.pk_country = #{pkCountry} and top.pk_country = #{pkCountry}
<if test="param.memberCode != null and param.memberCode != ''"> <if test="param.memberCode != null and param.memberCode != ''">
@ -71,6 +73,12 @@
<if test="param.payNumber != null"> <if test="param.payNumber != null">
and top.pay_number like #{param.payNumber} || '%' and top.pay_number like #{param.payNumber} || '%'
</if> </if>
<if test="param.orderType != null and param.orderType > 0">
and so.order_type = #{param.orderType}
</if>
<if test="param.orderType != null and param.orderType == -1">
and so.order_type is null
</if>
order by top.creation_time desc order by top.creation_time desc
</select> </select>

View File

@ -1,7 +1,5 @@
CREATE TABLE "RETAIL"."BD_REGION_VERTEX" ( CREATE TABLE "RETAIL"."BD_REGION_VERTEX" (
"PK_ID" NUMBER(6,0), "PK_ID" NUMBER(6,0),
"CREATION_TIME" DATE NOT NULL,
"MODIFIED_TIME" DATE,
"NAME" VARCHAR2(200) NOT NULL, "NAME" VARCHAR2(200) NOT NULL,
"DEL_FLAG" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, "DEL_FLAG" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
"PK_COUNTRY" NUMBER(4,0) DEFAULT 1 NOT NULL ENABLE, "PK_COUNTRY" NUMBER(4,0) DEFAULT 1 NOT NULL ENABLE,

View File

@ -0,0 +1,7 @@
ALTER TABLE "T_ONLINE_PAYMENT"
ADD ("MAIN_ACCOUNT_MONEY" NUMBER(16,2))
ADD ("SUB_ACCOUNT_MONEY" NUMBER(16,2));
COMMENT ON COLUMN "CLOUD_2"."T_ONLINE_PAYMENT"."MAIN_ACCOUNT_MONEY" IS '分账-主账户金额';
COMMENT ON COLUMN "CLOUD_2"."T_ONLINE_PAYMENT"."SUB_ACCOUNT_MONEY" IS '分账-子账户金额'

View File

@ -0,0 +1,4 @@
ALTER TABLE "BD_VERTEX"
ADD ("SHARE_POSTER_IMAGE" VARCHAR(200));
COMMENT ON COLUMN "BD_VERTEX"."SHARE_POSTER_IMAGE" IS '分享海报图'