分销后台相关接口 现金充值 记录明细
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
package com.czg.service.market.mapper;
|
||||
|
||||
import com.mybatisflex.core.BaseMapper;
|
||||
import com.czg.market.entity.MkDistributionAmountFlow;
|
||||
|
||||
/**
|
||||
* 分销运营余额扣减记录 映射层。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-27
|
||||
*/
|
||||
public interface MkDistributionAmountFlowMapper extends BaseMapper<MkDistributionAmountFlow> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
package com.czg.service.market.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.czg.account.entity.ShopUser;
|
||||
import com.czg.account.entity.UserInfo;
|
||||
import com.czg.constant.TableValueConstant;
|
||||
import com.czg.market.vo.MkDistributionAmountFlowVO;
|
||||
import com.czg.order.entity.OrderInfo;
|
||||
import com.czg.utils.MyQueryWrapper;
|
||||
import com.czg.utils.PageUtil;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||
import com.czg.market.entity.MkDistributionAmountFlow;
|
||||
import com.czg.market.service.MkDistributionAmountFlowService;
|
||||
import com.czg.service.market.mapper.MkDistributionAmountFlowMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 分销运营余额扣减记录 服务层实现。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-27
|
||||
*/
|
||||
@Service
|
||||
public class MkDistributionAmountFlowServiceImpl extends ServiceImpl<MkDistributionAmountFlowMapper, MkDistributionAmountFlow> implements MkDistributionAmountFlowService{
|
||||
|
||||
@Override
|
||||
public Map<String, Object> pageInfo(Long shopId, String type, String key) {
|
||||
QueryWrapper queryWrapper = new MyQueryWrapper()
|
||||
.selectAll(MkDistributionAmountFlow.class)
|
||||
.leftJoin(OrderInfo.class).on(OrderInfo::getId, MkDistributionAmountFlow::getSourceId)
|
||||
.leftJoin(ShopUser.class).on(ShopUser::getId, OrderInfo::getUserId)
|
||||
.eq(MkDistributionAmountFlow::getShopId, shopId)
|
||||
.select(OrderInfo::getOrderNo);
|
||||
if (StrUtil.isNotBlank(type)) {
|
||||
queryWrapper.eq(MkDistributionAmountFlow::getType, type);
|
||||
}
|
||||
if (StrUtil.isNotBlank(key)) {
|
||||
queryWrapper.and(and -> {
|
||||
and.or(or -> {
|
||||
or.like(OrderInfo::getOrderNo, key);
|
||||
});
|
||||
and.or(or -> {
|
||||
or.like(ShopUser::getNickName, key);
|
||||
});
|
||||
and.or(or -> {
|
||||
or.like(ShopUser::getPhone, key);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Page<MkDistributionAmountFlowVO> pageInfo = pageAs(PageUtil.buildPage(), queryWrapper, MkDistributionAmountFlowVO.class);
|
||||
Map<String, Object> map = BeanUtil.beanToMap(pageInfo);
|
||||
map.put("totalRecharge", getOne(new QueryWrapper().eq(MkDistributionAmountFlow::getShopId, shopId)
|
||||
.in(MkDistributionAmountFlow::getType, TableValueConstant.DistributionAmountFlow.Type.MANUAL_RECHARGE.getCode(), TableValueConstant.DistributionAmountFlow.Type.SELF_RECHARGE.getCode())
|
||||
.select("sum(change_amount)")));
|
||||
map.put("totalSub", getOne(new QueryWrapper().eq(MkDistributionAmountFlow::getShopId, shopId)
|
||||
.in(MkDistributionAmountFlow::getType, TableValueConstant.DistributionAmountFlow.Type.SUB.getCode(), TableValueConstant.DistributionAmountFlow.Type.MANUAL_SUB.getCode())
|
||||
.select("sum(change_amount)")));
|
||||
return map;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
QueryWrapper queryWrapper = new MyQueryWrapper()
|
||||
.selectAll(MkDistributionAmountFlow.class)
|
||||
.leftJoin(OrderInfo.class).on(OrderInfo::getId, MkDistributionAmountFlow::getSourceId)
|
||||
.leftJoin(ShopUser.class).on(ShopUser::getId, OrderInfo::getUserId)
|
||||
.select(OrderInfo::getOrderNo);
|
||||
queryWrapper.and(and -> {
|
||||
|
||||
});
|
||||
System.out.println(queryWrapper.toSQL());
|
||||
}
|
||||
}
|
||||
@@ -1,18 +1,38 @@
|
||||
package com.czg.service.market.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import com.czg.account.entity.ShopInfo;
|
||||
import com.czg.account.service.ShopInfoService;
|
||||
import com.czg.constant.TableValueConstant;
|
||||
import com.czg.exception.CzgException;
|
||||
import com.czg.market.dto.MkDistributionConfigDTO;
|
||||
import com.czg.market.entity.MkDistributionAmountFlow;
|
||||
import com.czg.market.service.MkDistributionAmountFlowService;
|
||||
import com.czg.order.dto.MkDistributionPayDTO;
|
||||
import com.czg.market.entity.MkDistributionLevelConfig;
|
||||
import com.czg.market.service.MkDistributionLevelConfigService;
|
||||
import com.czg.market.vo.MkDistributionConfigVO;
|
||||
import com.czg.order.entity.OrderPayment;
|
||||
import com.czg.order.service.OrderPaymentService;
|
||||
import com.czg.sa.StpKit;
|
||||
import com.czg.system.service.WxService;
|
||||
import com.czg.utils.AssertUtil;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||
import com.czg.market.entity.MkDistributionConfig;
|
||||
import com.czg.market.service.MkDistributionConfigService;
|
||||
import com.czg.service.market.mapper.MkDistributionConfigMapper;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.springframework.cache.annotation.CacheConfig;
|
||||
import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 分销配置 服务层实现。
|
||||
*
|
||||
@@ -20,18 +40,30 @@ import org.springframework.stereotype.Service;
|
||||
* @since 2025-10-25
|
||||
*/
|
||||
@Service
|
||||
@CacheConfig(cacheNames = "distributionConfig")
|
||||
public class MkDistributionConfigServiceImpl extends ServiceImpl<MkDistributionConfigMapper, MkDistributionConfig> implements MkDistributionConfigService{
|
||||
|
||||
@Resource
|
||||
private MkDistributionLevelConfigService levelConfigService;
|
||||
@Resource
|
||||
private MkDistributionAmountFlowService distributionAmountFlowService;
|
||||
|
||||
@DubboReference
|
||||
private OrderPaymentService orderPaymentService;
|
||||
@DubboReference
|
||||
private ShopInfoService shopInfoService;
|
||||
@DubboReference
|
||||
private WxService wxService;
|
||||
|
||||
@Override
|
||||
public MkDistributionConfigVO detail(Long mainShopId) {
|
||||
MkDistributionConfig config = getOne(new QueryWrapper().eq(MkDistributionConfig::getMainShopId, mainShopId));
|
||||
@Cacheable(key = "#shopId")
|
||||
public MkDistributionConfigVO detail(Long shopId) {
|
||||
Long mainIdByShopId = shopInfoService.getMainIdByShopId(shopId);
|
||||
MkDistributionConfig config = getOne(new QueryWrapper().eq(MkDistributionConfig::getShopId, shopId));
|
||||
if (config == null) {
|
||||
config = new MkDistributionConfig().setMainShopId(mainShopId);
|
||||
config = new MkDistributionConfig().setMainShopId(shopId).setMainShopId(mainIdByShopId);
|
||||
save(config);
|
||||
config = getOne(new QueryWrapper().eq(MkDistributionConfig::getMainShopId, mainShopId));
|
||||
config = getOne(new QueryWrapper().eq(MkDistributionConfig::getShopId, shopId));
|
||||
}
|
||||
|
||||
MkDistributionConfigVO configVO = BeanUtil.copyProperties(config, MkDistributionConfigVO.class);
|
||||
@@ -40,14 +72,46 @@ public class MkDistributionConfigServiceImpl extends ServiceImpl<MkDistributionC
|
||||
}
|
||||
|
||||
@Override
|
||||
@CacheEvict(key = "#shopId")
|
||||
public Boolean edit(Long shopId, MkDistributionConfigDTO dto) {
|
||||
MkDistributionConfig config = getOne(new QueryWrapper().eq(MkDistributionConfig::getMainShopId, shopId));
|
||||
MkDistributionConfig config = getOne(new QueryWrapper().eq(MkDistributionConfig::getShopId, shopId));
|
||||
BeanUtil.copyProperties(dto, config);
|
||||
|
||||
if (dto.getLevelConfigList() != null) {
|
||||
levelConfigService.updateByShopId(dto.getLevelConfigList(), config.getMainShopId(), config.getId());
|
||||
levelConfigService.updateByShopId(dto.getLevelConfigList(), config.getShopId(), config.getId());
|
||||
}
|
||||
|
||||
return updateById(config);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> pay(long userId, MkDistributionPayDTO payDTO) {
|
||||
MkDistributionConfigVO detail = detail(payDTO.getShopId());
|
||||
AssertUtil.isTrue(detail.getIsEnable() != 1, "分销未开启");
|
||||
if (!TableValueConstant.DistributionConfig.OpenType.PAY.getCode().equals(detail.getOpenType())) {
|
||||
throw new CzgException("当前未开启购买分销配置");
|
||||
}
|
||||
|
||||
OrderPayment orderPayment = new OrderPayment().setShopId(payDTO.getShopId()).setSourceId(userId)
|
||||
.setPayType("distribution").setOrderNo(payDTO.getPlatformType() + IdUtil.getSnowflakeNextId()).setAmount(detail.getPayAmount());
|
||||
orderPaymentService.save(orderPayment);
|
||||
|
||||
return Map.of();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean cashPayOrder(long adminId, MkDistributionPayDTO payParam) {
|
||||
ShopInfo shopInfo = shopInfoService.getById(payParam.getShopId());
|
||||
AssertUtil.isNull(shopInfo, "店铺不存在");
|
||||
BigDecimal amount = shopInfoService.updateAmount(shopInfo.getId(), payParam.getAmount());
|
||||
Long mainShopId = shopInfoService.getMainIdByShopId(shopInfo.getId());
|
||||
shopInfoService.updateAmount(shopInfo.getId(), payParam.getAmount());
|
||||
|
||||
distributionAmountFlowService.save(new MkDistributionAmountFlow()
|
||||
.setType(payParam.getAmount().compareTo(BigDecimal.ZERO) < 0 ? TableValueConstant.DistributionAmountFlow.Type.MANUAL_SUB.getCode() :
|
||||
TableValueConstant.DistributionAmountFlow.Type.MANUAL_RECHARGE.getCode())
|
||||
.setMainShopId(mainShopId).setShopId(shopInfo.getId()).setAmount(amount).setChangeAmount(payParam.getAmount())
|
||||
.setRemark(payParam.getRemark()).setOpAccount(StpKit.USER.getAccount()));
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ import java.util.List;
|
||||
public class MkDistributionLevelConfigServiceImpl extends ServiceImpl<MkDistributionLevelConfigMapper, MkDistributionLevelConfig> implements MkDistributionLevelConfigService{
|
||||
|
||||
@Override
|
||||
public void updateByShopId(List<MkDistributionLevelConfigDTO> levelConfigList, Long mainShopId, Long id) {
|
||||
public void updateByShopId(List<MkDistributionLevelConfigDTO> levelConfigList, Long shopId, Long id) {
|
||||
if (levelConfigList.isEmpty()) {
|
||||
remove(new QueryWrapper().eq(MkDistributionLevelConfig::getDistributionConfigId, id));
|
||||
return;
|
||||
@@ -30,7 +30,7 @@ public class MkDistributionLevelConfigServiceImpl extends ServiceImpl<MkDistribu
|
||||
levelConfigList.forEach(item -> {
|
||||
MkDistributionLevelConfig config = BeanUtil.copyProperties(item, MkDistributionLevelConfig.class);
|
||||
config.setDistributionConfigId(id);
|
||||
config.setMainShopId(mainShopId);
|
||||
config.setShopId(shopId);
|
||||
saveOrUpdate(config);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.czg.service.market.mapper.MkDistributionAmountFlowMapper">
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user