提现列表,创客相关

This commit is contained in:
liuyingfang
2023-08-28 15:44:25 +08:00
parent 4d686b347a
commit fc0236dd9b
10 changed files with 149 additions and 76 deletions

View File

@@ -18,5 +18,6 @@ public interface UserMakerQuotaService extends IService<UserMakerQuota> {
void quotaInfo(MerchantOrder order);
List<UserMakerQuotaVO> quotaList(Integer page, Integer size,Integer type);
}

View File

@@ -14,6 +14,7 @@ import cn.pluss.platform.util.N;
import cn.pluss.platform.vo.UserMakerQuotaVO;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
@@ -28,6 +29,7 @@ import java.util.*;
* @author lyf
*/
@Service
@Slf4j
public class UserMakerQuotaServiceImpl extends ServiceImpl<UserMakerQuotaMapper, UserMakerQuota> implements UserMakerQuotaService {
@Resource
private UserMakerQuotaMapper userMakerQuotaMapper;
@@ -59,32 +61,8 @@ public class UserMakerQuotaServiceImpl extends ServiceImpl<UserMakerQuotaMapper,
}
@Override
@Transactional(rollbackFor = Exception.class)
public void quotaInfo(MerchantOrder order) {
BigDecimal consumeFee = new BigDecimal(String.valueOf(order.getConsumeFee()));
//商户码转userId
if (consumeFee.compareTo(new BigDecimal("0.01"))>0) {
MerchantBaseInfo merchantBaseInfoByMerchantCode = merchantBaseInfoService.getMerchantBaseInfoByMerchantCode(order.getMerchantCode());
if(merchantBaseInfoByMerchantCode == null)
return;
//找到上级增加额度
UserPromotion userInfo = userPromotionMapper.selectByPrimaryKey(Long.valueOf(merchantBaseInfoByMerchantCode.getUserId()));
if (userInfo != null) {
UserPromotion userParent = userPromotionMapper.selectByUserIdMC(Long.valueOf(userInfo.getParentUserId()));
if (userParent != null && "1".equals(userParent.getIsExtend())){
BigDecimal profit = consumeFee.multiply(new BigDecimal("0.5")).setScale(2,BigDecimal.ROUND_DOWN);
String s = String.valueOf(userParent.getUserId());
Integer integer = Integer.valueOf(s);
this.modMakerFunds(integer,"SD","免费额度",profit,"",order.getOrderNumber());
}
}
//给自己计算
assert userInfo != null;
if ("1".equals(userInfo.getIsExtend())){
profit(userInfo,consumeFee,order);
}
}
this.makerQuota(order);
}
@Override
@@ -106,29 +84,74 @@ public class UserMakerQuotaServiceImpl extends ServiceImpl<UserMakerQuotaMapper,
}
//增加额度
private void makerQuota(MerchantOrder order){
BigDecimal consumeFee = new BigDecimal(String.valueOf(order.getConsumeFee()));
//商户码转userId
if (consumeFee.compareTo(new BigDecimal("0.01"))>0) {
MerchantBaseInfo merchantBaseInfoByMerchantCode = merchantBaseInfoService.getMerchantBaseInfoByMerchantCode(order.getMerchantCode());
UserPromotion userInfo = userPromotionMapper.selectByPrimaryKey(Long.valueOf(merchantBaseInfoByMerchantCode.getUserId()));
if (userInfo != null && "1".equals(userInfo.getIsExtend())){
BigDecimal profit = consumeFee.multiply(new BigDecimal("0.0038")).setScale(2, RoundingMode.DOWN);
String s = String.valueOf(userInfo.getUserId());
Integer integer = Integer.valueOf(s);
this.modMakerFunds(integer,"SD","免费额度",profit,"",order.getOrderNumber());
}
if (userInfo != null) {
UserPromotion userParent = userPromotionMapper.selectByUserIdMC(Long.valueOf(userInfo.getParentUserId()));
if (userParent != null) {
UserMakerQuota userMakerQuota = new UserMakerQuota();
userMakerQuota.setUserId(userParent.getUserId());
userMakerQuota.setAmount(consumeFee.divide(new BigDecimal("2"),2,BigDecimal.ROUND_DOWN));
userMakerQuota.setCreateTime(new Date());
userMakerQuotaMapper.insert(userMakerQuota);
}
}
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
public void makerQuota(MerchantOrder order){
//查询自己是否为创客
MerchantBaseInfo merchantBaseInfoByMerchantCode = merchantBaseInfoService.getMerchantBaseInfoByMerchantCode(order.getMerchantCode());
if(ObjectUtil.isEmpty(merchantBaseInfoByMerchantCode)){
log.error("商户信息异常:{}",order.getOrderNumber());
return;
}
if(!"1".equals(merchantBaseInfoByMerchantCode.getMerchantType())){
log.error("商户并非小微商户:{},{}",merchantBaseInfoByMerchantCode.getMerchantCode(),merchantBaseInfoByMerchantCode.getMerchantType());
return;
}
UserPromotion userInfo = userPromotionMapper.selectByPrimaryKey(Long.valueOf(merchantBaseInfoByMerchantCode.getUserId()));
if(ObjectUtil.isEmpty(userInfo)){
log.error("用户所属关系不存在");
return;
}
if("1".equals(userInfo.getIsExtend())){
UserMakerQuota userMakerQuota = userMakerQuotaMapper.selectByUserId(userInfo.getUserId().intValue());
if(ObjectUtil.isEmpty(userMakerQuota)){
log.error("当前额度为0,{},{},{}",order.getOrderNumber(),order.getConsumeFee(),userInfo.getUserId());
return;
}
BigDecimal havingBalance=userMakerQuota.getAmount().subtract(new BigDecimal(order.getConsumeFee())).setScale(2,BigDecimal.ROUND_DOWN);
if(havingBalance.compareTo(BigDecimal.ZERO)>=0){
BigDecimal profit=new BigDecimal(order.getConsumeFee()).multiply(new BigDecimal("0.0038")).setScale(2, BigDecimal.ROUND_DOWN);
BigDecimal bigDecimal = new BigDecimal(order.getConsumeFee().toString());
//提现金额
userAccountService.modFunds(userInfo.getUserId().intValue(), "LD", "增加收益", profit, "");
//额度改变
modMakerFunds(userInfo.getUserId().intValue(), "LD", "收款消耗", bigDecimal, "",order.getOrderNumber());
return;
}
if(havingBalance.compareTo(BigDecimal.ZERO)<0){
BigDecimal profit=userMakerQuota.getAmount().multiply(new BigDecimal("0.0038")).setScale(2, BigDecimal.ROUND_DOWN);
//提现金额
userAccountService.modFunds(userInfo.getUserId().intValue(), "LD", "增加收益", profit.abs().negate(), "");
modMakerFunds(userInfo.getUserId().intValue(), "LD", "收款消耗", userMakerQuota.getAmount().abs().negate(), "",order.getOrderNumber());
return;
}
}else {
UserPromotion userParent = userPromotionMapper.selectByUserIdMC(Long.valueOf(userInfo.getParentUserId()));
if (userParent == null){
log.error("不存在的用户关系:{}",userInfo.getParentUserId());
return;
}
if (!"1".equals(userParent.getIsExtend())){
log.error("商户用户类型异常:{},{}",userParent.getUserId(),userParent.getIsExtend());
return;
}
BigDecimal profit = new BigDecimal(order.getConsumeFee()).multiply(new BigDecimal("0.5")).setScale(2, BigDecimal.ROUND_DOWN);
String s = String.valueOf(userParent.getUserId());
Integer integer = Integer.valueOf(s);
this.modMakerFunds(integer, "SD", "免费额度", profit, "", order.getOrderNumber());
return;
}
}
//增加提现金额
@Transactional(rollbackFor = Exception.class)
@@ -181,10 +204,6 @@ public class UserMakerQuotaServiceImpl extends ServiceImpl<UserMakerQuotaMapper,
if(N.gt(difference,BigDecimal.ZERO)){
difference=difference.abs();
}
if ("LD".equals(bizCode)){
difference = difference.negate();
}
userMakerQuotaMapper.updateMakerFreeze(userId,difference);
UserMakerFlow flow=new UserMakerFlow();

View File

@@ -97,7 +97,7 @@ public class PromoterMainPageServiceImpl implements MainPageService {
//今日收款笔数
queryMap.put("recordDate", DateUtils.getDayBegin());
queryMap.put("retype", "1");
totalOrderCount = merchantProfitMapper.queryMerchantProfitPageCountV2(userId);
totalOrderCount = merchantProfitMapper.queryMerchantProfitPageCountV2(userId,DateUtils.getDayBegin(),DateUtils.getDayEnd());
todayProfit = merchantProfitService.queryMerchantProfitSumPrice(queryMap);
//今日收益

View File

@@ -93,6 +93,7 @@ public interface MerchantProfitService extends IService<MerchantProfit> {
void sendProfitMessage(UserApp userApp, BigDecimal profitMoney, String orderNumber);
Map<String, Object> teamList(String typeCode, Long userId, Integer page,Integer size,String name);
Map<String, Object> teamQuotaList(String typeCode, Long userId, Integer page,Integer size,String name);
Map<String, Object> merchantListData(Long userId);
}

View File

@@ -135,21 +135,22 @@ public class MerchantProfitServiceImpl extends ServiceImpl<MerchantProfitMapper,
}
// PageInfo<MerchantProfitVO> teamList= merchantProfitMapper.getTeamList(typeCode, userId, page,size,name);
Integer countChild = merchantProfitMapper.getCountChild(userId, typeCode);
UserPromotion userPromotion = userPromotionMapper.selectByPrimaryKey(userId);
if (Objects.equals(userPromotion.getIsExtend(), "1")){
List<MerchantProfitVO> teamList = merchantProfitMapper.getTeamList(typeCode, userId, name, pagerSize, offset);
for (MerchantProfitVO values : teamList) {
values.setCurrentMonth(mapperOrderMapper.getPlatformAmtYestday(values.getMerchantCode(),
DateUtils.getBeginDayOfMonth(), DateUtils.getEndDayOfMonth()));
values.setConsumeFee(mapperOrderMapper.getAmountData(values.getMerchantCode()));
}
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("total", countChild);
hashMap.put("teamList", teamList);
return hashMap;
}
// UserPromotion userPromotion = userPromotionMapper.selectByPrimaryKey(userId);
// if (Objects.equals(userPromotion.getIsExtend(), "1")){
// List<MerchantProfitVO> teamList = merchantProfitMapper.getTeamList(typeCode, userId, name, pagerSize, offset);
//
// teamList.stream().parallel().forEach(values->{
// values.setCurrentMonth(mapperOrderMapper.getPlatformAmtYestday(values.getMerchantCode(),
// DateUtils.getBeginDayOfMonth(), DateUtils.getEndDayOfMonth()));
// values.setConsumeFee(mapperOrderMapper.getAmountData(values.getMerchantCode()));
// });
//
// HashMap<String, Object> hashMap = new HashMap<>();
// hashMap.put("total", countChild);
// hashMap.put("teamList", teamList);
// return hashMap;
// }
//商户列表
if ("MC".equals(typeCode)) {
List<MerchantProfitVO> teamList = merchantProfitMapper.getMerchantTeamList(typeCode, userId, name, pagerSize, offset);
@@ -249,6 +250,29 @@ public class MerchantProfitServiceImpl extends ServiceImpl<MerchantProfitMapper,
return hashMap;
}
@Override
public Map<String, Object> teamQuotaList(String typeCode, Long userId, Integer page, Integer size, String name) {
Integer pagerSize = size;
Integer offset = (page - 1) * size;
Integer countChild = merchantProfitMapper.getCountQuotaChild(userId, typeCode);
UserPromotion userPromotion = userPromotionMapper.selectByPrimaryKey(userId);
if (Objects.equals(userPromotion.getIsExtend(), "1")){
List<MerchantProfitVO> teamList = merchantProfitMapper.getTeamList(typeCode, userId, name, pagerSize, offset);
teamList.stream().parallel().forEach(values->{
values.setCurrentMonth(mapperOrderMapper.getPlatformAmtYestday(values.getMerchantCode(),
DateUtils.getBeginDayOfMonth(), DateUtils.getEndDayOfMonth()));
values.setConsumeFee(mapperOrderMapper.getAmountData(values.getMerchantCode()));
});
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("total", countChild);
hashMap.put("teamList", teamList);
return hashMap;
}
return new HashMap<>();
}
@Override
public Map<String, Object> merchantListData(Long userId) {