Compare commits

...

2 Commits

Author SHA1 Message Date
55376c06aa 会员实时查账功能 2024-11-08 14:54:04 +08:00
4c3577ffcc 会员实时查账功能 2024-11-08 14:52:58 +08:00
5 changed files with 88 additions and 94 deletions

View File

@@ -503,7 +503,7 @@
real_name = #{realName,jdbcType=VARCHAR}, real_name = #{realName,jdbcType=VARCHAR},
</if> </if>
<if test="orderStatus != null"> <if test="orderStatus != null">
order_status = #{realName,jdbcType=INTEGER}, order_status = #{orderStatus,jdbcType=INTEGER},
</if> </if>
</set> </set>
where id = #{id,jdbcType=BIGINT} where id = #{id,jdbcType=BIGINT}

View File

@@ -50,6 +50,9 @@ public class MemberSplitProfitService{
@Value("${becomeVipAmount}") @Value("${becomeVipAmount}")
private String becomeVipAmount; private String becomeVipAmount;
@Value("${sameLevelProfit}")
private String sameLevelProfit;
@Async @Async
@Transactional @Transactional
public void updateOderAndMemberInfo(OmsOrder order) { public void updateOderAndMemberInfo(OmsOrder order) {
@@ -277,16 +280,13 @@ public class MemberSplitProfitService{
threeLevelSplitProfit(higherMember, next, order, tenPercent); threeLevelSplitProfit(higherMember, next, order, tenPercent);
fourLevelSplitProfit(higherMember, next, order, tenPercent); fourLevelSplitProfit(higherMember, next, order, tenPercent);
} }
} }
//平级关系 //平级关系
}else if(lowerMember.getMemberLevel().equals(lowerMember.getMemberLevel())){ }else if(lowerMember.getMemberLevel().equals(lowerMember.getMemberLevel())){
BigDecimal tenPercent = revenueAmount.multiply(new BigDecimal("0.10")).setScale(2, RoundingMode.HALF_UP); BigDecimal tenPercent = revenueAmount.multiply(new BigDecimal("0."+sameLevelProfit)).setScale(2, RoundingMode.HALF_UP);
UmsMemberAccountTransaction accountTransaction = new UmsMemberAccountTransaction(); UmsMemberAccountTransaction accountTransaction = new UmsMemberAccountTransaction();
accountTransaction.setCommissionRatio(10); accountTransaction.setCommissionRatio(Integer.valueOf(sameLevelProfit));
accountTransaction.setMemberId(higherMember.getId()); accountTransaction.setMemberId(higherMember.getId());
accountTransaction.setOrderId(order.getId()); accountTransaction.setOrderId(order.getId());
accountTransaction.setRemarks("二级店长平级分润"); accountTransaction.setRemarks("二级店长平级分润");
@@ -327,10 +327,8 @@ public class MemberSplitProfitService{
} }
String ratioStr = profitRatio < 10 ? "0.0" + profitRatio : "0."+profitRatio; String ratioStr = profitRatio < 10 ? "0.0" + profitRatio : "0."+profitRatio;
//查看上级的分润比例 //查看上级的分润比例
BigDecimal tenPercent = order.getPayAmount().multiply(new BigDecimal(ratioStr)).setScale(2, RoundingMode.HALF_UP); BigDecimal tenPercent = order.getPayAmount().multiply(new BigDecimal(ratioStr)).setScale(2, RoundingMode.HALF_UP);
UmsMemberAccountTransaction accountTransaction = new UmsMemberAccountTransaction(); UmsMemberAccountTransaction accountTransaction = new UmsMemberAccountTransaction();
accountTransaction.setCommissionRatio(profitRatio); accountTransaction.setCommissionRatio(profitRatio);
accountTransaction.setMemberId(higherMember.getId()); accountTransaction.setMemberId(higherMember.getId());
@@ -353,10 +351,9 @@ public class MemberSplitProfitService{
} }
//平级关系 //平级关系
}else if(lowerMember.getMemberLevel().equals(lowerMember.getMemberLevel())){ }else if(lowerMember.getMemberLevel().equals(lowerMember.getMemberLevel())){
BigDecimal tenPercent = revenueAmount.multiply(new BigDecimal("0.10")).setScale(2, RoundingMode.HALF_UP); BigDecimal tenPercent = revenueAmount.multiply(new BigDecimal("0."+sameLevelProfit)).setScale(2, RoundingMode.HALF_UP);
UmsMemberAccountTransaction accountTransaction = new UmsMemberAccountTransaction(); UmsMemberAccountTransaction accountTransaction = new UmsMemberAccountTransaction();
accountTransaction.setCommissionRatio(10); accountTransaction.setCommissionRatio(Integer.valueOf(sameLevelProfit));
accountTransaction.setMemberId(higherMember.getId()); accountTransaction.setMemberId(higherMember.getId());
accountTransaction.setOrderId(order.getId()); accountTransaction.setOrderId(order.getId());
accountTransaction.setRemarks("三级代理平级分润"); accountTransaction.setRemarks("三级代理平级分润");
@@ -392,9 +389,7 @@ public class MemberSplitProfitService{
if(higherLevel.getCommissionRatio() != null && lowerLevel.getCommissionRatio() != null){ if(higherLevel.getCommissionRatio() != null && lowerLevel.getCommissionRatio() != null){
profitRatio = higherLevel.getCommissionRatio() - lowerLevel.getCommissionRatio(); profitRatio = higherLevel.getCommissionRatio() - lowerLevel.getCommissionRatio();
} }
String ratioStr = profitRatio < 10 ? "0.0" + profitRatio : "0."+profitRatio; String ratioStr = profitRatio < 10 ? "0.0" + profitRatio : "0."+profitRatio;
//查看上级的分润比例 //查看上级的分润比例
BigDecimal tenPercent = order.getPayAmount().multiply(new BigDecimal(ratioStr)).setScale(2, RoundingMode.HALF_UP); BigDecimal tenPercent = order.getPayAmount().multiply(new BigDecimal(ratioStr)).setScale(2, RoundingMode.HALF_UP);
@@ -416,10 +411,10 @@ public class MemberSplitProfitService{
} }
//平级关系 //平级关系
}else if(lowerMember.getMemberLevel().equals(lowerMember.getMemberLevel())){ }else if(lowerMember.getMemberLevel().equals(lowerMember.getMemberLevel())){
BigDecimal tenPercent = revenueAmount.multiply(new BigDecimal("0.10")).setScale(2, RoundingMode.HALF_UP); BigDecimal tenPercent = revenueAmount.multiply(new BigDecimal("0."+sameLevelProfit)).setScale(2, RoundingMode.HALF_UP);
UmsMemberAccountTransaction accountTransaction = new UmsMemberAccountTransaction(); UmsMemberAccountTransaction accountTransaction = new UmsMemberAccountTransaction();
accountTransaction.setCommissionRatio(10); accountTransaction.setCommissionRatio(Integer.valueOf(sameLevelProfit));
accountTransaction.setMemberId(higherMember.getId()); accountTransaction.setMemberId(higherMember.getId());
accountTransaction.setOrderId(order.getId()); accountTransaction.setOrderId(order.getId());
accountTransaction.setRemarks("四级市代平级分润"); accountTransaction.setRemarks("四级市代平级分润");

View File

@@ -1703,9 +1703,6 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
@Value("${alipay.signType}") @Value("${alipay.signType}")
private String signType; private String signType;
@Value("${becomeVipAmount}")
private String becomeVipAmount;
@Override @Override
public void alipayCallback(Map<String, String> params) { public void alipayCallback(Map<String, String> params) {
LOGGER.info("============开始处理支付宝的支付异步通知 接收到参数 {}", JSONUtil.toJsonStr(params)); LOGGER.info("============开始处理支付宝的支付异步通知 接收到参数 {}", JSONUtil.toJsonStr(params));

View File

@@ -1,13 +1,29 @@
package com.buy507.mall.portal.service.impl; package com.buy507.mall.portal.service.impl;
import java.math.BigDecimal; import cn.hutool.core.date.DateTime;
import java.util.ArrayList; import com.aliyuncs.CommonRequest;
import java.util.Date; import com.aliyuncs.CommonResponse;
import java.util.HashMap; import com.aliyuncs.DefaultAcsClient;
import java.util.List; import com.aliyuncs.IAcsClient;
import java.util.Map; import com.aliyuncs.http.MethodType;
import java.util.Random; import com.aliyuncs.profile.DefaultProfile;
import com.buy507.mall.common.api.CommonResult;
import com.buy507.mall.common.util.Constants;
import com.buy507.mall.mapper.*;
import com.buy507.mall.model.*;
import com.buy507.mall.portal.component.RedisLock;
import com.buy507.mall.portal.component.TeamMemberNumberHanderQueue;
import com.buy507.mall.portal.dao.PortalMemberDao;
import com.buy507.mall.portal.domain.*;
import com.buy507.mall.portal.service.InitDistributionService;
import com.buy507.mall.portal.service.PortalCommonService;
import com.buy507.mall.portal.service.RedisService;
import com.buy507.mall.portal.service.UmsMemberService;
import com.buy507.mall.portal.util.JwtTokenUtil;
import com.buy507.mall.portal.util.WeChatDecryptDataUtil;
import com.github.pagehelper.PageHelper;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
@@ -28,60 +44,9 @@ import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import com.aliyuncs.CommonRequest; import javax.annotation.Resource;
import com.aliyuncs.CommonResponse; import java.math.BigDecimal;
import com.aliyuncs.DefaultAcsClient; import java.util.*;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.buy507.mall.common.api.CommonResult;
import com.buy507.mall.common.util.Constants;
import com.buy507.mall.mapper.DmsMemberBankAccountMapper;
import com.buy507.mall.mapper.DmsMemberTradeRecordMapper;
import com.buy507.mall.mapper.DmsMemberTransferRecordMapper;
import com.buy507.mall.mapper.DmsMemberWithdrawApplyMapper;
import com.buy507.mall.mapper.DmsTeamLevelMapper;
import com.buy507.mall.mapper.DmsTeamTotalConsumeMapper;
import com.buy507.mall.mapper.OmsOrderMapper;
import com.buy507.mall.mapper.UmsMemberLevelMapper;
import com.buy507.mall.mapper.UmsMemberMapper;
import com.buy507.mall.model.DmsMemberBankAccount;
import com.buy507.mall.model.DmsMemberTradeRecord;
import com.buy507.mall.model.DmsMemberTransferRecord;
import com.buy507.mall.model.DmsMemberWithdrawApply;
import com.buy507.mall.model.DmsTeamLevel;
import com.buy507.mall.model.DmsTeamTotalConsume;
import com.buy507.mall.model.ItemType;
import com.buy507.mall.model.MemberLevel;
import com.buy507.mall.model.OmsOrder;
import com.buy507.mall.model.OmsOrderExample;
import com.buy507.mall.model.StoreStatus;
import com.buy507.mall.model.UmsMember;
import com.buy507.mall.model.UmsMemberExample;
import com.buy507.mall.model.UmsMemberLevel;
import com.buy507.mall.model.UmsMemberLevelExample;
import com.buy507.mall.portal.component.RedisLock;
import com.buy507.mall.portal.component.TeamMemberNumberHanderQueue;
import com.buy507.mall.portal.dao.PortalMemberDao;
import com.buy507.mall.portal.domain.AccountDetailResult;
import com.buy507.mall.portal.domain.FirstMemberInfoParam;
import com.buy507.mall.portal.domain.MemberDetails;
import com.buy507.mall.portal.domain.MemberInfoResult;
import com.buy507.mall.portal.domain.MemberTransferParam;
import com.buy507.mall.portal.domain.MemberTransferResult;
import com.buy507.mall.portal.domain.MemberWithdrawApplyResult;
import com.buy507.mall.portal.domain.TeamMemberResult;
import com.buy507.mall.portal.domain.WeChatLogin;
import com.buy507.mall.portal.domain.WithdrawApplyParam;
import com.buy507.mall.portal.service.InitDistributionService;
import com.buy507.mall.portal.service.PortalCommonService;
import com.buy507.mall.portal.service.RedisService;
import com.buy507.mall.portal.service.UmsMemberService;
import com.buy507.mall.portal.util.JwtTokenUtil;
import com.buy507.mall.portal.util.WeChatDecryptDataUtil;
import com.github.pagehelper.PageHelper;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
/** /**
* 会员管理Service实现类 * 会员管理Service实现类
@@ -147,6 +112,11 @@ public class UmsMemberServiceImpl implements UmsMemberService {
@Autowired @Autowired
private DmsMemberTransferRecordMapper memberTransferRecordMapper; private DmsMemberTransferRecordMapper memberTransferRecordMapper;
/**
* 会员分成流水
*/
@Resource
private UmsMemberAccountTransactionMapper umsMemberAccountTransactionMapper;
@Autowired @Autowired
private RedisLock redisLock; private RedisLock redisLock;
@@ -482,7 +452,7 @@ public class UmsMemberServiceImpl implements UmsMemberService {
@Override @Override
public MemberInfoResult getMemberInfo() { public MemberInfoResult getMemberInfo() {
UmsMember loginMember = getCurrentMember(); UmsMember loginMember = getCurrentMember();
UmsMember member = memberMapper.selectByPrimaryKey(loginMember.getId()); UmsMember member = memberMapper.selectByPrimaryKey(loginMember.getId());
DmsTeamTotalConsume teamTotalConsume = teamTotalConsumeMapper.selectOneByMemberId(loginMember.getId()); DmsTeamTotalConsume teamTotalConsume = teamTotalConsumeMapper.selectOneByMemberId(loginMember.getId());
@@ -490,6 +460,34 @@ public class UmsMemberServiceImpl implements UmsMemberService {
example.createCriteria().andMemberIdEqualTo(loginMember.getId()); example.createCriteria().andMemberIdEqualTo(loginMember.getId());
List<OmsOrder> orders = orderMapper.selectByExample(example); List<OmsOrder> orders = orderMapper.selectByExample(example);
//查询流水冻结信息
UmsMemberAccountTransactionExample accountTransactionExample = new UmsMemberAccountTransactionExample();
accountTransactionExample.createCriteria()
.andMemberIdEqualTo(member.getId())
.andTransactionStateEqualTo(UmsMemberAccountTransaction.TRANSACTION_STATE_NO);
List<UmsMemberAccountTransaction> umatList = umsMemberAccountTransactionMapper.selectByExample(accountTransactionExample);
DateTime nowTime = DateTime.now();
BigDecimal freezeTransactionAccount = BigDecimal.ZERO;
if(!umatList.isEmpty()){
BigDecimal balanceTransaction = BigDecimal.ZERO;
for (UmsMemberAccountTransaction accountTransaction : umatList) {
//冻结金额超过24后到账用户账号
if(nowTime.isAfter(accountTransaction.getTransferPaymentTime())){
balanceTransaction = balanceTransaction.add(accountTransaction.getRevenueAmount());
accountTransaction.setTransactionState(UmsMemberAccountTransaction.TRANSACTION_STATE_YES);
umsMemberAccountTransactionMapper.updateByPrimaryKeySelective(accountTransaction);
}else {
freezeTransactionAccount = freezeTransactionAccount.add(accountTransaction.getRevenueAmount());
}
}
if(!balanceTransaction.equals(BigDecimal.ZERO)){
member.setBalance(member.getBalance().add(balanceTransaction));
memberMapper.updateByPrimaryKeySelective(member);
}
}
member.setFreeze(member.getFreeze().add(freezeTransactionAccount));
MemberInfoResult result = new MemberInfoResult(); MemberInfoResult result = new MemberInfoResult();
result.setBalance(member.getBalance()); //余额 result.setBalance(member.getBalance()); //余额
result.setFreeze(member.getFreeze()); //冻结余额 result.setFreeze(member.getFreeze()); //冻结余额
@@ -503,22 +501,18 @@ public class UmsMemberServiceImpl implements UmsMemberService {
result.setDetailAddress(member.getDetailAddress()); result.setDetailAddress(member.getDetailAddress());
if(MemberLevel.Member.equals(member.getMemberLevel())) { if(MemberLevel.Member.equals(member.getMemberLevel())) {
result.setMemberLevelName("普通会员"); result.setMemberLevelName("普通用户");
} else if(MemberLevel.Consumer.equals(member.getMemberLevel())) { } else if(MemberLevel.Consumer.equals(member.getMemberLevel())) {
result.setMemberLevelName("消费商"); result.setMemberLevelName("vip会员");
} else if(MemberLevel.Partner.equals(member.getMemberLevel())) { } else if(MemberLevel.Partner.equals(member.getMemberLevel())) {
result.setMemberLevelName("经销商"); result.setMemberLevelName("店长");
} else if(MemberLevel.Diamond.equals(member.getMemberLevel())) { } else if(MemberLevel.Diamond.equals(member.getMemberLevel())) {
result.setMemberLevelName("合作商"); result.setMemberLevelName("代理");
} else if(MemberLevel.OneDiamond.equals(member.getMemberLevel())) { } else if(MemberLevel.OneDiamond.equals(member.getMemberLevel())) {
result.setMemberLevelName("初级合作商"); result.setMemberLevelName("市代");
} else if(MemberLevel.TwoDiamond.equals(member.getMemberLevel())) {
result.setMemberLevelName("中级合作商");
} else if(MemberLevel.ThreeDiamond.equals(member.getMemberLevel())) {
result.setMemberLevelName("高级合作商");
} else { } else {
result.setMemberLevelName("特级合作商"); result.setMemberLevelName("市代");
} }
BigDecimal memberTotal = new BigDecimal(0); BigDecimal memberTotal = new BigDecimal(0);

View File

@@ -1,6 +1,7 @@
package com.buy507.mall.portal; package com.buy507.mall.portal;
import com.buy507.mall.portal.service.OmsPortalOrderService; import com.buy507.mall.portal.service.OmsPortalOrderService;
import com.buy507.mall.portal.service.UmsMemberService;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -32,6 +33,13 @@ public class OmsPortalOrderServiceTest {
@Autowired
private UmsMemberService memberService;
@Test
public void getMemberInfoTest() {
memberService.getMemberInfo();
}
} }