Merge remote-tracking branch 'origin/main-zhb'

# Conflicts:
#	mall-portal/src/main/java/com/buy507/mall/portal/service/impl/OmsPortalOrderServiceImpl.java
This commit is contained in:
2025-02-20 11:23:07 +08:00
13 changed files with 514 additions and 188 deletions

View File

@@ -13,4 +13,6 @@ public interface UmsMemberLevelService {
* @param defaultStatus 是否为默认会员
*/
List<UmsMemberLevel> list(Integer defaultStatus);
}

View File

@@ -4,6 +4,7 @@ import com.buy507.mall.model.UmsMemberRelationTree;
import com.buy507.mall.model.UmsMemberRelationTreeExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
public interface UmsMemberRelationTreeMapper {
long countByExample(UmsMemberRelationTreeExample example);
@@ -27,4 +28,7 @@ public interface UmsMemberRelationTreeMapper {
int updateByPrimaryKeySelective(UmsMemberRelationTree record);
int updateByPrimaryKey(UmsMemberRelationTree record);
@Select("select * from ums_member_relation_tree where member_id = #{currentUserId}")
UmsMemberRelationTree findByMemberId(Long currentUserId);
}

View File

@@ -7,15 +7,16 @@ package com.buy507.mall.model;
*/
public enum MemberLevel {
/**普通用户**/
Member(0),
Member(1),
/**vip会员**/
Consumer(1),
Consumer(2),
/**店长**/
Partner(2),
Partner(3),
/**代理**/
Diamond(3),
Diamond(4),
/** 市代 **/
OneDiamond(4),
OneDiamond(5),
TwoDiamond(6), //中级合作商
ThreeDiamond(7), //高级合作商
FourDiamond(8); //特级合作商

View File

@@ -68,29 +68,18 @@ public class UmsMember implements Serializable {
@ApiModelProperty(value = "分销实体店状态0->未开店1->已开店)")
private StoreStatus storeStatus;
/**
* 余额
*/
@ApiModelProperty(value = "余额")
private BigDecimal balance;
/**
* 冻结余额
*/
@ApiModelProperty(value = "冻结余额")
private BigDecimal freeze;
/**
* 详细地址
*/
@ApiModelProperty(value = "详细地址")
private String detailAddress;
/**
* 真实姓名
*/
@ApiModelProperty(value = "真实姓名")
private String realName;
/**
* 排队状态
*/
@ApiModelProperty(value = "排队状态:0->未排队1->排队中")
private Integer orderStatus;

View File

@@ -41,6 +41,9 @@ public class UmsMemberAccountTransaction implements Serializable {
@ApiModelProperty(value = "转账时间")
private Date transferPaymentTime;
@ApiModelProperty(value = "进账积分")
private Integer revenuePoints;
private static final long serialVersionUID = 1L;
public Long getId() {
@@ -83,6 +86,14 @@ public class UmsMemberAccountTransaction implements Serializable {
this.transactionState = transactionState;
}
public Integer getRevenuePoints() {
return revenuePoints;
}
public void setRevenuePoints(Integer revenuePoints) {
this.revenuePoints = revenuePoints;
}
public String getRemarks() {
return remarks;
}
@@ -117,21 +128,17 @@ public class UmsMemberAccountTransaction implements Serializable {
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", memberId=").append(memberId);
sb.append(", orderId=").append(orderId);
sb.append(", revenueAmount=").append(revenueAmount);
sb.append(", transactionState=").append(transactionState);
sb.append(", remarks=").append(remarks);
sb.append(", commissionRatio=").append(commissionRatio);
sb.append(", createTime=").append(createTime);
sb.append(", transferPaymentTime=").append(transferPaymentTime);
sb.append(", serialVersionUID=").append(serialVersionUID);
sb.append("]");
return sb.toString();
return "UmsMemberAccountTransaction{" +
"id=" + id +
", memberId=" + memberId +
", orderId=" + orderId +
", revenueAmount=" + revenueAmount +
", transactionState=" + transactionState +
", remarks='" + remarks + '\'' +
", commissionRatio=" + commissionRatio +
", createTime=" + createTime +
", transferPaymentTime=" + transferPaymentTime +
", revenuePoints=" + revenuePoints +
'}';
}
}

View File

@@ -1,6 +1,7 @@
package com.buy507.mall.model;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.math.BigDecimal;
@@ -44,9 +45,12 @@ public class UmsMemberLevel implements Serializable {
@ApiModelProperty(value = "注释")
private String note;
@ApiModelProperty(value = "提成比例")
@ApiModelProperty(value = "现金提成比例")
private Integer commissionRatio;
@ApiModelProperty(value = "积分提成比例")
private Integer pointsRatio;
private static final long serialVersionUID = 1L;
public Long getId() {
@@ -161,28 +165,32 @@ public class UmsMemberLevel implements Serializable {
this.commissionRatio = commissionRatio;
}
public Integer getPointsRatio() {
return pointsRatio;
}
public void setPointsRatio(Integer pointsRatio) {
this.pointsRatio = pointsRatio;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", name=").append(name);
sb.append(", growthPoint=").append(growthPoint);
sb.append(", defaultStatus=").append(defaultStatus);
sb.append(", freeFreightPoint=").append(freeFreightPoint);
sb.append(", commentGrowthPoint=").append(commentGrowthPoint);
sb.append(", priviledgeFreeFreight=").append(priviledgeFreeFreight);
sb.append(", priviledgeSignIn=").append(priviledgeSignIn);
sb.append(", priviledgeComment=").append(priviledgeComment);
sb.append(", priviledgePromotion=").append(priviledgePromotion);
sb.append(", priviledgeMemberPrice=").append(priviledgeMemberPrice);
sb.append(", priviledgeBirthday=").append(priviledgeBirthday);
sb.append(", note=").append(note);
sb.append(", commissionRatio=").append(commissionRatio);
sb.append(", serialVersionUID=").append(serialVersionUID);
sb.append("]");
return sb.toString();
return "UmsMemberLevel{" +
"id=" + id +
", name='" + name + '\'' +
", growthPoint=" + growthPoint +
", defaultStatus=" + defaultStatus +
", freeFreightPoint=" + freeFreightPoint +
", commentGrowthPoint=" + commentGrowthPoint +
", priviledgeFreeFreight=" + priviledgeFreeFreight +
", priviledgeSignIn=" + priviledgeSignIn +
", priviledgeComment=" + priviledgeComment +
", priviledgePromotion=" + priviledgePromotion +
", priviledgeMemberPrice=" + priviledgeMemberPrice +
", priviledgeBirthday=" + priviledgeBirthday +
", note='" + note + '\'' +
", commissionRatio=" + commissionRatio +
", pointsRatio=" + pointsRatio +
'}';
}
}

View File

@@ -109,10 +109,10 @@
SELECT LAST_INSERT_ID()
</selectKey>
insert into ums_member_account_transaction (member_id, order_id, revenue_amount,
transaction_state, remarks, commission_ratio, transfer_payment_time)
transaction_state, remarks, commission_ratio, transfer_payment_time, revenue_points)
values (#{memberId,jdbcType=BIGINT}, #{orderId,jdbcType=BIGINT}, #{revenueAmount,jdbcType=DECIMAL},
#{transactionState,jdbcType=INTEGER}, #{remarks,jdbcType=VARCHAR}, #{commissionRatio,jdbcType=INTEGER},
#{transferPaymentTime,jdbcType=TIMESTAMP})
#{transferPaymentTime,jdbcType=TIMESTAMP}, #{revenuePoints,jdbcType=INTEGER})
</insert>
<insert id="insertSelective" parameterType="com.buy507.mall.model.UmsMemberAccountTransaction">
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">

View File

@@ -41,7 +41,7 @@ public class OrderResult {
@ApiModelProperty(value = "支付时间")
private Date paymentTime;
@ApiModelProperty(value = "支付类型: 1->支付宝2->微信3->线下支付4->积分支付")
@ApiModelProperty(value = "支付类型: 1->支付宝2->微信3->线下支付4->积分支付 5->余额支付")
private Integer payType;
@ApiModelProperty(value = "支付类型名称")

View File

@@ -9,7 +9,6 @@ import com.buy507.mall.model.UmsMember;
public interface MemberCommissionService {
/**
* 开始冻结金额到账,等级升级
* @param order
* @param currentMember
*/
void computeCommission(UmsMember currentMember);

View File

@@ -0,0 +1,403 @@
package com.buy507.mall.portal.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONUtil;
import com.buy507.mall.mapper.*;
import com.buy507.mall.model.*;
import com.buy507.mall.portal.service.MemberCommissionService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
@Slf4j
@Service
public class MemberPointsSplitProfitService{
@Resource
private UmsMemberMapper memberMapper;
/**
* 会员分成流水
*/
@Resource
private UmsMemberAccountTransactionMapper umsMemberAccountTransactionMapper;
/**
* 会员上下关系
*/
@Resource
private UmsMemberRelationTreeMapper umsMemberRelationTreeMapper;
/**
* 会员等级
*/
@Resource
private UmsMemberLevelMapper umsMemberLevelMapper;
@Autowired
private OmsOrderMapper orderMapper;
@Value("${becomeVipAmount}")
private String becomeVipAmount;
@Value("${sameLevelProfit}")
private String sameLevelProfit;
/**
* 积分分润入口
* @param order
*/
public void pointsSplit(OmsOrder order) {
UmsMember member = memberMapper.selectByPrimaryKey(order.getMemberId());
//找到上级会员
UmsMember higherLevelMember = this.findInOrderQueueMember(member.getId());;
if(higherLevelMember != null){
//进行订单分润
this.splitProfitFroMember(member, higherLevelMember, order);
}
//计算会员等级
UmsMemberRelationTree relationTree = this.getUpLevelRelationTreeById(member.getId());
if(relationTree == null){
return;
}
//上级为空或者为普通用户
UmsMember higherMember = memberMapper.selectByPrimaryKey(relationTree.getHigherLevelId());
if(higherMember == null && higherMember.getMemberLevel().equals(MemberLevel.Member)){
return;
}
}
/**
* 为订单上级进行分润
* @param member
* @param higherLevelMember
* @param order
*/
private void splitProfitFroMember(UmsMember member, UmsMember higherLevelMember, OmsOrder order) {
//新订单及直属上级分润,返回的分润金额
Integer revenuePoints = this.newMemberSplitProfit(member, higherLevelMember, order);
UmsMember moreHigherMember = new UmsMember();
//如果上级是vip会员
if(higherLevelMember.getMemberLevel().equals(MemberLevel.Consumer)) {
moreHigherMember = this.findNextHigherLevelMemberByType(higherLevelMember.getId(), MemberLevel.Consumer);
}
//没有更高的上级退出分润
if(moreHigherMember == null){
return;
}
//给三个级别代理分润
this.twoLevelSplitProfit(higherLevelMember, moreHigherMember, order, revenuePoints);
this.threeLevelSplitProfit(higherLevelMember, moreHigherMember, order, revenuePoints);
this.fourLevelSplitProfit(higherLevelMember, moreHigherMember, order, revenuePoints);
}
/**
* 查询到下一个级别的上级会员
* @param id
* @param consumer
* @return
*/
private UmsMember findNextHigherLevelMemberByType(Long id, MemberLevel consumer) {
//找到上级
UmsMember moreHigherMember = this.findInOrderQueueMember(id);
if(moreHigherMember == null){
return null;
}
while (moreHigherMember != null){
if(moreHigherMember.getMemberLevel().getValue() > consumer.getValue()){
return moreHigherMember;
}
moreHigherMember = this.findInOrderQueueMember(moreHigherMember.getId());
if(moreHigherMember == null){
return null;
}
}
return moreHigherMember;
}
/**
* 寻找上级
*/
private UmsMember findInOrderQueueMember(Long id) {
UmsMemberRelationTree relationTree = this.getUpLevelRelationTreeById(id);
if(relationTree == null){
return null;
}
UmsMember higherMember = memberMapper.selectByPrimaryKey(relationTree.getHigherLevelId());
if(higherMember == null){
return null;
}
return higherMember;
}
/**
* 会员分润
* @param currentMember
* @param higherLevelMember
* @param order
*/
private Integer newMemberSplitProfit(UmsMember currentMember, UmsMember higherLevelMember, OmsOrder order){
//直推会员分润比例
String ratio = "0."+ 3;
Integer revenuePoints = order.getPayAmount().multiply(new BigDecimal(ratio)).intValue();
UmsMemberAccountTransaction accountTransaction = new UmsMemberAccountTransaction();
accountTransaction.setMemberId(higherLevelMember.getId());
accountTransaction.setOrderId(order.getId());
accountTransaction.setRemarks("直推VIP积分分润");
accountTransaction.setTransactionState(UmsMemberAccountTransaction.TRANSACTION_STATE_YES);
accountTransaction.setRevenuePoints(revenuePoints);
accountTransaction.setTransferPaymentTime(DateUtil.date());
umsMemberAccountTransactionMapper.insert(accountTransaction);
log.info("new Account Transaction {}" , JSONUtil.toJsonStr(accountTransaction));
//会员积分到账
higherLevelMember.setIntegration(revenuePoints + (higherLevelMember.getIntegration() == null ? 0 : higherLevelMember.getIntegration()));
memberMapper.updateByPrimaryKey(higherLevelMember);
return revenuePoints;
}
/**
* 二级店长分润
* @param lowerMember
* @param higherMember
* @param order
*/
private void twoLevelSplitProfit(UmsMember lowerMember, UmsMember higherMember, OmsOrder order,
Integer revenuePoints){
//先判断是否为店长
if(higherMember.getMemberLevel().equals(MemberLevel.Partner)){
//上下级关系
if(higherMember.getMemberLevel().getValue() > lowerMember.getMemberLevel().getValue()){
UmsMemberLevel lowerLevel = umsMemberLevelMapper.selectByPrimaryKey(lowerMember.getMemberLevelId());
UmsMemberLevel higherLevel = umsMemberLevelMapper.selectByPrimaryKey(higherMember.getMemberLevelId());
Integer profitRatio = 0;
if(higherLevel.getPointsRatio() != null && lowerLevel.getPointsRatio() != null){
profitRatio = higherLevel.getPointsRatio() - lowerLevel.getPointsRatio();
}
String ratioStr = profitRatio < 10 ? "0.0" + profitRatio : "0."+profitRatio;
//计算上级的分积分分润
Integer pointsCommission = order.getPayAmount().multiply(new BigDecimal(ratioStr)).intValue();
UmsMemberAccountTransaction accountTransaction = new UmsMemberAccountTransaction();
accountTransaction.setCommissionRatio(profitRatio);
accountTransaction.setMemberId(higherMember.getId());
accountTransaction.setOrderId(order.getId());
accountTransaction.setRemarks("二级店长上级积分分润");
accountTransaction.setRevenuePoints(pointsCommission);
//即时到账
accountTransaction.setTransferPaymentTime(DateUtil.date());
umsMemberAccountTransactionMapper.insert(accountTransaction);
//会员金额到账
higherMember.setIntegration(pointsCommission + (higherMember.getIntegration() == null ? 0 : higherMember.getIntegration()));
memberMapper.updateByPrimaryKeySelective(higherMember);
//查询上级
UmsMember next = this.findInOrderQueueMember(higherMember.getId());
if(next != null){
if (next.getMemberLevel().equals(higherMember.getMemberLevel())){
twoLevelSplitProfit(higherMember, next, order, pointsCommission);
}else {
threeLevelSplitProfit(higherMember, next, order, pointsCommission);
fourLevelSplitProfit(higherMember, next, order, pointsCommission);
}
}
//平级关系
}else if(lowerMember.getMemberLevel().equals(lowerMember.getMemberLevel())){
Integer pointsCommission = revenuePoints * (new BigDecimal("0."+sameLevelProfit)).intValue();
UmsMemberAccountTransaction accountTransaction = new UmsMemberAccountTransaction();
accountTransaction.setCommissionRatio(Integer.valueOf(sameLevelProfit));
accountTransaction.setMemberId(higherMember.getId());
accountTransaction.setOrderId(order.getId());
accountTransaction.setRemarks("二级店长平级积分分润");
accountTransaction.setRevenuePoints(pointsCommission);
//即时到账
accountTransaction.setTransferPaymentTime(DateUtil.date());
umsMemberAccountTransactionMapper.insert(accountTransaction);
//会员金额到账
higherMember.setIntegration(pointsCommission + (higherMember.getIntegration() == null ? 0 : higherMember.getIntegration()));
memberMapper.updateByPrimaryKeySelective(higherMember);
//查询比当前级别大的会员
UmsMember next = this.findNextHigherLevelMemberByType(higherMember.getId(), MemberLevel.Partner);
if(next != null){
threeLevelSplitProfit(higherMember, next, order, pointsCommission);
fourLevelSplitProfit(higherMember, next, order, pointsCommission);
}
}
}
}
/**
* 三级代理分润
* @param lowerMember
* @param higherMember
* @param order
*/
private void threeLevelSplitProfit(UmsMember lowerMember, UmsMember higherMember, OmsOrder order, Integer revenuePoints){
if(higherMember.getMemberLevel().equals(MemberLevel.Diamond)){
//上下级关系
if(higherMember.getMemberLevel().getValue() > lowerMember.getMemberLevel().getValue()){
UmsMemberLevel lowerLevel = umsMemberLevelMapper.selectByPrimaryKey(lowerMember.getMemberLevelId());
UmsMemberLevel higherLevel = umsMemberLevelMapper.selectByPrimaryKey(higherMember.getMemberLevelId());
Integer profitRatio = 0;
if(higherLevel.getPointsRatio() != null && lowerLevel.getPointsRatio() != null){
profitRatio = higherLevel.getPointsRatio() - lowerLevel.getPointsRatio();
}
String ratioStr = profitRatio < 10 ? "0.0" + profitRatio : "0."+profitRatio;
//计算上级的分积分分润
Integer pointsCommission = order.getPayAmount().multiply(new BigDecimal(ratioStr)).intValue();
UmsMemberAccountTransaction accountTransaction = new UmsMemberAccountTransaction();
accountTransaction.setCommissionRatio(profitRatio);
accountTransaction.setMemberId(higherMember.getId());
accountTransaction.setOrderId(order.getId());
accountTransaction.setRemarks("三级代理上级积分分润");
accountTransaction.setRevenuePoints(pointsCommission);
accountTransaction.setTransferPaymentTime(DateUtil.date());
umsMemberAccountTransactionMapper.insert(accountTransaction);
//会员金额到账
higherMember.setIntegration(pointsCommission + (higherMember.getIntegration() == null ? 0 : higherMember.getIntegration()));
memberMapper.updateByPrimaryKeySelective(higherMember);
//查询上级
UmsMember next = this.findInOrderQueueMember(higherMember.getId());
if(next != null){
if (next.getMemberLevel().equals(higherMember.getMemberLevel())){
threeLevelSplitProfit(higherMember, next, order, pointsCommission);
}else {
fourLevelSplitProfit(higherMember, next, order, pointsCommission);
}
}
//平级关系
}else if(lowerMember.getMemberLevel().equals(lowerMember.getMemberLevel())){
Integer pointsCommission = revenuePoints * (new BigDecimal("0."+sameLevelProfit)).intValue();
UmsMemberAccountTransaction accountTransaction = new UmsMemberAccountTransaction();
accountTransaction.setCommissionRatio(Integer.valueOf(sameLevelProfit));
accountTransaction.setMemberId(higherMember.getId());
accountTransaction.setOrderId(order.getId());
accountTransaction.setRemarks("三级代理平级积分分润");
accountTransaction.setRevenuePoints(pointsCommission);
//24小时后到账
accountTransaction.setTransferPaymentTime(DateUtil.tomorrow());
umsMemberAccountTransactionMapper.insert(accountTransaction);
//会员金额到账
higherMember.setIntegration(pointsCommission + (higherMember.getIntegration() == null ? 0 : higherMember.getIntegration()));
memberMapper.updateByPrimaryKeySelective(higherMember);
UmsMember next = this.findNextHigherLevelMemberByType(higherMember.getId(), MemberLevel.Diamond);
if(next != null){
fourLevelSplitProfit(higherMember, next, order, pointsCommission);
}
}
}
}
/**
* 四级市代分润
* @param lowerMember
* @param higherMember
* @param order
*/
private void fourLevelSplitProfit(UmsMember lowerMember, UmsMember higherMember, OmsOrder order, Integer revenuePoints){
if(higherMember.getMemberLevel().equals(MemberLevel.OneDiamond)){
//上下级关系
if(higherMember.getMemberLevel().getValue() > lowerMember.getMemberLevel().getValue()){
UmsMemberLevel lowerLevel = umsMemberLevelMapper.selectByPrimaryKey(lowerMember.getMemberLevelId());
UmsMemberLevel higherLevel = umsMemberLevelMapper.selectByPrimaryKey(higherMember.getMemberLevelId());
Integer profitRatio = 0;
if(higherLevel.getPointsRatio() != null && lowerLevel.getPointsRatio() != null){
profitRatio = higherLevel.getPointsRatio() - lowerLevel.getPointsRatio();
}
String ratioStr = profitRatio < 10 ? "0.0" + profitRatio : "0."+profitRatio;
//计算上级的分积分分润
Integer pointsCommission = order.getPayAmount().multiply(new BigDecimal(ratioStr)).intValue();
UmsMemberAccountTransaction accountTransaction = new UmsMemberAccountTransaction();
accountTransaction.setCommissionRatio(profitRatio);
accountTransaction.setMemberId(higherMember.getId());
accountTransaction.setOrderId(order.getId());
accountTransaction.setRemarks("四级市代理上级积分分润");
accountTransaction.setRevenuePoints(pointsCommission);
//24小时后到账
accountTransaction.setTransferPaymentTime(DateUtil.date());
umsMemberAccountTransactionMapper.insert(accountTransaction);
//会员金额到账
higherMember.setIntegration(pointsCommission + (higherMember.getIntegration() == null ? 0 : higherMember.getIntegration()));
memberMapper.updateByPrimaryKeySelective(higherMember);
//查询上级
UmsMember next = this.findInOrderQueueMember(higherMember.getId());
if(next != null && next.getMemberLevel().equals(higherMember.getMemberLevel())){
fourLevelSplitProfit(higherMember, next, order, pointsCommission);
}
//平级关系
}else if(lowerMember.getMemberLevel().equals(lowerMember.getMemberLevel())){
Integer pointsCommission = revenuePoints * (new BigDecimal("0."+sameLevelProfit)).intValue();
UmsMemberAccountTransaction accountTransaction = new UmsMemberAccountTransaction();
accountTransaction.setCommissionRatio(Integer.valueOf(sameLevelProfit));
accountTransaction.setMemberId(higherMember.getId());
accountTransaction.setOrderId(order.getId());
accountTransaction.setRemarks("四级市代理平级积分分润");
accountTransaction.setRevenuePoints(pointsCommission);
//会员金额到账
higherMember.setIntegration(pointsCommission + (higherMember.getIntegration() == null ? 0 : higherMember.getIntegration()));
memberMapper.updateByPrimaryKeySelective(higherMember);
//24小时后到账
accountTransaction.setTransferPaymentTime(DateUtil.tomorrow());
umsMemberAccountTransactionMapper.insert(accountTransaction);
}
}
}
/**
* 获取会员的上级关系
* @param id
* @return
*/
private UmsMemberRelationTree getUpLevelRelationTreeById(Long id) {
UmsMemberRelationTree relationTree = null;
UmsMemberRelationTreeExample relationTreeExample = new UmsMemberRelationTreeExample();
relationTreeExample.createCriteria().andMemberIdEqualTo(id);
List<UmsMemberRelationTree> relationTreeList = umsMemberRelationTreeMapper.selectByExample(relationTreeExample);
if(!relationTreeList.isEmpty()) {
//找到上级关系
relationTree = relationTreeList.get(0);
}
return relationTree;
}
}

View File

@@ -63,42 +63,6 @@ public class MemberSplitProfitService{
public void updateOderAndMemberInfo(OmsOrder order) {
/*UmsMember member = memberMapper.selectByPrimaryKey(order.getMemberId());
//找到上级会员
UmsMember higherLevelMember = this.findInOrderQueueMember(member.getId());;
*
* 先验证该订单是否是五联单加速,如果不是则普通计算上级提成
* 如果是提成,则全额给上级
boolean splitForFiveQueue = false; //是否加速完成
//在此判断是否是首单新用户
UmsMemberOrderQueueExample orderQueueExample1 = new UmsMemberOrderQueueExample();
orderQueueExample1.createCriteria().andMemberIdEqualTo(order.getMemberId());
long memberOrderCount = umsMemberOrderQueueMapper.countByExample(orderQueueExample1);
if(memberOrderCount == 1){
splitForFiveQueue = fiveQuickQueueBusiness(order, member, higherLevelMember);
}
//未进行满5联单分润开始进行普通分润流程
if(!splitForFiveQueue && higherLevelMember != null){
//进行订单分润
this.splitProfitFroMember(member, higherLevelMember, order);
}
//计算会员等级
UmsMemberRelationTree relationTree = this.getUpLevelRelationTreeById(member.getId());
if(relationTree == null){
return;
}
//上级为空或者为普通用户
UmsMember higherMember = memberMapper.selectByPrimaryKey(relationTree.getHigherLevelId());
if(higherMember == null && higherMember.getMemberLevel().equals(MemberLevel.Member)){
return;
}
memberCommissionService.computeCommission(higherMember);*/
UmsMember member = memberMapper.selectByPrimaryKey(order.getMemberId());
//找到上级会员
UmsMember higherLevelMember = this.findInOrderQueueMember(member.getId());;
@@ -280,10 +244,6 @@ public class MemberSplitProfitService{
if(higherQueue != null){
return splitMark;
}
//添加帮助加速的订单号
/*UmsMemberOrderQueue orderQ = umsMemberOrderQueueMapper.selectByExample(orderQueueExample);
orderQ.setAccelerateOrderId(higherQueue.getOrderId());
umsMemberOrderQueueMapper.updateByPrimaryKeySelective(orderQ);*/
//查找上级还有多少下级(查看同级别的用户)
UmsMemberRelationTreeExample umrtExample = new UmsMemberRelationTreeExample();
@@ -431,16 +391,6 @@ public class MemberSplitProfitService{
umsMemberOrderQueueMapper.insert(record);
log.info("new Order Queue {}" , JSONUtil.toJsonStr(record));
/*UmsMemberLevel higherLevel = umsMemberLevelMapper.selectByPrimaryKey(higherLevelMember.getMemberLevelId());
//直推会员分润
String ratio = "0."+higherLevel.getCommissionRatio();
BigDecimal revenueAmount = order.getPayAmount().multiply(new BigDecimal(ratio)).setScale(2, RoundingMode.HALF_UP);
UmsMemberAccountTransaction accountTransaction = new UmsMemberAccountTransaction();
accountTransaction.setCommissionRatio(higherLevel.getCommissionRatio());*/
//UmsMemberLevel higherLevel = umsMemberLevelMapper.selectByPrimaryKey(higherLevelMember.getMemberLevelId());
//直推会员分润
//String ratio = "0."+higherLevel.getCommissionRatio(); mcoo Integer()
String ratio = "0."+ 2;
BigDecimal revenueAmount = order.getPayAmount().multiply(new BigDecimal(ratio)).setScale(2, RoundingMode.HALF_UP);
UmsMemberAccountTransaction accountTransaction = new UmsMemberAccountTransaction();
@@ -688,14 +638,6 @@ public class MemberSplitProfitService{
if(higherMember == null){
return null;
}
/* if(higherMember.getOrderStatus() == 0){
UmsMember nextMember = this.findInOrderQueueMember(higherMember.getId());
if(nextMember != null){
return nextMember;
}
}else if(higherMember.getOrderStatus() == 1){
return higherMember;
}*/
if( higherMember.getOrderStatus() == 1){
return higherMember;
}
@@ -715,7 +657,4 @@ public class MemberSplitProfitService{
}
return relationTree;
}
}

View File

@@ -3,8 +3,6 @@ package com.buy507.mall.portal.service.impl;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONUtil;
import com.alipay.api.AlipayApiException;
import com.alipay.api.internal.util.AlipaySignature;
import com.buy507.mall.common.api.CommonResult;
import com.buy507.mall.common.util.MD5Util;
import com.buy507.mall.mapper.*;
@@ -45,6 +43,9 @@ import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.ExecutorService;
import com.alipay.api.internal.util.AlipaySignature;
import com.alipay.api.AlipayApiException;
/**
* 前台订单管理Service
*/
@@ -747,7 +748,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
return CommonResult.validateFailed("未查询到商品信息");
}
PmsProduct product = productMapper.selectByPrimaryKey(skuStock.getProductId());
PmsProduct product = new PmsProduct();
// 判断商品是否属于积分兑换区
boolean isPointsExchangeStatus = product.getPointsExchangeStatus() == 1;
@@ -1803,18 +1804,6 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
@Value("${alipay.signType}")
private String signType;
//店长升级金额
@Value("${storeManagerAmount}")
private BigDecimal storeManagerAmount;
//代理升级金额
@Value("${agentAmount}")
private BigDecimal agentAmount;
//市代理升级金额
@Value("${cityAgentAmount}")
private BigDecimal cityAgentAmount;
/**
* 支付宝支付回调
*
@@ -1835,27 +1824,12 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
String outTradeNo = params.get("out_trade_no");
//if ("TRADE_SUCCESS".equals(tradeStatus) || "TRADE_FINISHED".equals(tradeStatus)) {
// 处理支付成功的业务逻辑
OmsOrderExample example = new OmsOrderExample();
example.createCriteria().andOrderSnEqualTo(outTradeNo);
List<OmsOrder> list = orderMapper.selectByExample(example);
if (list != null && !list.isEmpty()) {
OmsOrder order = list.get(0);
if (order.getOrderType() == 3) {
// 根据支付金额判断会员等级,并更新
if (order.getPayAmount().compareTo(storeManagerAmount) >= 0) {
// 升级为店长
memberMapper.upgradeMember(order.getMemberId(), 3L);
} else if (order.getPayAmount().compareTo(agentAmount) >= 0) {
// 升级为代理
memberMapper.upgradeMember(order.getMemberId(), 4L);
} else if (order.getPayAmount().compareTo(cityAgentAmount) >= 0) {
// 升级为市代理
memberMapper.upgradeMember(order.getMemberId(), 5L);
}
}
//获取订单实付金额
BigDecimal payAmount = order.getPayAmount();
//获取商品信息