分账提现接口
This commit is contained in:
parent
3c2af59c4c
commit
1560e5a36f
|
|
@ -1,10 +1,17 @@
|
|||
package com.czg.controller.user;
|
||||
|
||||
import com.czg.market.dto.MkDistributionWithdrawFlowDTO;
|
||||
import com.czg.market.entity.MkDistributionFlow;
|
||||
import com.czg.market.entity.MkDistributionWithdrawFlow;
|
||||
import com.czg.market.service.MkDistributionFlowService;
|
||||
import com.czg.market.service.MkDistributionUserService;
|
||||
import com.czg.market.service.MkDistributionWithdrawFlowService;
|
||||
import com.czg.market.vo.DistributionCenterShopVO;
|
||||
import com.czg.order.dto.MkDistributionPayDTO;
|
||||
import com.czg.resp.CzgResult;
|
||||
import com.czg.sa.StpKit;
|
||||
import com.czg.service.Impl.AppWxServiceImpl;
|
||||
import com.czg.utils.AssertUtil;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
|
@ -22,6 +29,10 @@ import java.util.Map;
|
|||
public class UDistributionController {
|
||||
@Resource
|
||||
private MkDistributionUserService distributionUserService;
|
||||
@Resource
|
||||
private AppWxServiceImpl appWxService;
|
||||
@Resource
|
||||
private MkDistributionWithdrawFlowService withdrawFlowService;
|
||||
|
||||
/**
|
||||
* 分销员购买
|
||||
|
|
@ -63,4 +74,14 @@ public class UDistributionController {
|
|||
return CzgResult.success(distributionUserService.centerConfig(StpKit.USER.getLoginIdAsLong(), shopId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户提现
|
||||
* @param withdrawFlowDTO 提现信息
|
||||
* @return 是否成功
|
||||
*/
|
||||
@PostMapping("/withdraw")
|
||||
public CzgResult<Boolean> withdraw(@Validated @RequestBody MkDistributionWithdrawFlowDTO withdrawFlowDTO) {
|
||||
return CzgResult.success(distributionUserService.withdraw(StpKit.USER.getLoginIdAsLong(), withdrawFlowDTO));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,32 @@
|
|||
|
||||
package com.czg.market.dto;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import com.alibaba.fastjson2.annotation.JSONField;
|
||||
import jakarta.validation.constraints.DecimalMin;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.experimental.Accessors;
|
||||
import java.io.Serial;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 提现记录表 实体类。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-27
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
public class MkDistributionWithdrawFlowDTO implements Serializable {
|
||||
@NotNull
|
||||
private Long shopId;
|
||||
@NotNull(message = "提现金额不为空")
|
||||
@DecimalMin(value = "30", message = "提现金额不能小于30")
|
||||
private BigDecimal amount;
|
||||
}
|
||||
|
|
@ -110,6 +110,4 @@ public class MkDistributionFlow implements Serializable {
|
|||
|
||||
private String nickName;
|
||||
|
||||
private String resp;
|
||||
private String packageInfo;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,84 @@
|
|||
package com.czg.market.entity;
|
||||
|
||||
import com.mybatisflex.annotation.Column;
|
||||
import com.mybatisflex.annotation.Id;
|
||||
import com.mybatisflex.annotation.KeyType;
|
||||
import com.mybatisflex.annotation.Table;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 提现记录表 实体类。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-27
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Table("mk_distribution_withdraw_flow")
|
||||
public class MkDistributionWithdrawFlow implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Id(keyType = KeyType.Auto)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 店铺id
|
||||
*/
|
||||
private Long shopId;
|
||||
|
||||
/**
|
||||
* 店铺用户id
|
||||
*/
|
||||
private Long shopUserId;
|
||||
|
||||
/**
|
||||
* 提现金额
|
||||
*/
|
||||
private BigDecimal amount;
|
||||
|
||||
/**
|
||||
* 手续费
|
||||
*/
|
||||
private BigDecimal serviceFee;
|
||||
|
||||
/**
|
||||
* 微信转账单号
|
||||
*/
|
||||
private String billNo;
|
||||
|
||||
/**
|
||||
* 提现必须参数
|
||||
*/
|
||||
private String packageInfo;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@Column(onInsertValue = "now()")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 修改时间
|
||||
*/
|
||||
@Column(onInsertValue = "now()", onUpdateValue = "now()")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* pending提现中 success可提现 finish已完成
|
||||
*/
|
||||
private String status;
|
||||
|
||||
}
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
package com.czg.market.service;
|
||||
|
||||
import com.czg.market.dto.MkDistributionUserDTO;
|
||||
import com.czg.market.dto.MkDistributionWithdrawFlowDTO;
|
||||
import com.czg.market.entity.MkDistributionUser;
|
||||
import com.czg.market.vo.DistributionCenterShopVO;
|
||||
import com.czg.order.dto.MkDistributionPayDTO;
|
||||
|
|
@ -93,4 +94,9 @@ public interface MkDistributionUserService extends IService<MkDistributionUser>
|
|||
*/
|
||||
void distribute(Long sourceId, String orderNo, BigDecimal amount, Long userId, Long shopId, String type);
|
||||
|
||||
void updateIncome(BigDecimal pendingIncome, BigDecimal receivedIncome, BigDecimal withdrawIncome, Long id);
|
||||
|
||||
|
||||
Boolean withdraw(long userId, MkDistributionWithdrawFlowDTO withdrawFlowDTO);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
package com.czg.market.service;
|
||||
|
||||
import com.czg.market.dto.MkDistributionWithdrawFlowDTO;
|
||||
import com.mybatisflex.core.service.IService;
|
||||
import com.czg.market.entity.MkDistributionWithdrawFlow;
|
||||
|
||||
/**
|
||||
* 提现记录表 服务层。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-27
|
||||
*/
|
||||
public interface MkDistributionWithdrawFlowService extends IService<MkDistributionWithdrawFlow> {
|
||||
|
||||
}
|
||||
|
|
@ -4,6 +4,7 @@ import com.czg.market.vo.DistributionCenterShopVO;
|
|||
import com.mybatisflex.core.BaseMapper;
|
||||
import com.czg.market.entity.MkDistributionUser;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
|
@ -22,4 +23,6 @@ public interface MkDistributionUserMapper extends BaseMapper<MkDistributionUser>
|
|||
* 查询我的分销店铺列表 未开通
|
||||
*/
|
||||
List<DistributionCenterShopVO> selectUnDistributionShops(Long shopUserId);
|
||||
|
||||
boolean updateIncome(BigDecimal pendingIncome, BigDecimal receivedIncome, BigDecimal withdrawIncome, Long id);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
package com.czg.service.market.mapper;
|
||||
|
||||
import com.mybatisflex.core.BaseMapper;
|
||||
import com.czg.market.entity.MkDistributionWithdrawFlow;
|
||||
|
||||
/**
|
||||
* 提现记录表 映射层。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-27
|
||||
*/
|
||||
public interface MkDistributionWithdrawFlowMapper extends BaseMapper<MkDistributionWithdrawFlow> {
|
||||
|
||||
}
|
||||
|
|
@ -13,6 +13,7 @@ import com.czg.account.service.UserInfoService;
|
|||
import com.czg.constant.TableValueConstant;
|
||||
import com.czg.exception.CzgException;
|
||||
import com.czg.market.dto.MkDistributionUserDTO;
|
||||
import com.czg.market.dto.MkDistributionWithdrawFlowDTO;
|
||||
import com.czg.market.entity.MkDistributionAmountFlow;
|
||||
import com.czg.market.entity.MkDistributionConfig;
|
||||
import com.czg.market.entity.MkDistributionLevelConfig;
|
||||
|
|
@ -73,10 +74,12 @@ public class MkDistributionUserServiceImpl extends ServiceImpl<MkDistributionUse
|
|||
private MkDistributionAmountFlowService distributionAmountFlowService;
|
||||
@Resource
|
||||
private MkDistributionFlowService distributionFlowService;
|
||||
@Resource
|
||||
private MkDistributionUserService distributionUserService;
|
||||
|
||||
@DubboReference
|
||||
private AppWxServiceImpl appWxService;
|
||||
|
||||
|
||||
@DubboReference
|
||||
private ShopUserService shopUserService;
|
||||
@DubboReference
|
||||
|
|
@ -372,25 +375,17 @@ public class MkDistributionUserServiceImpl extends ServiceImpl<MkDistributionUse
|
|||
.setSourceId(sourceId).setAmount(amount).setType(type).setStatus(flag ? TableValueConstant.DistributionFlow.Status.SUCCESS.getCode() :
|
||||
TableValueConstant.DistributionFlow.Status.PENDING.getCode())
|
||||
.setRewardAmount(rewardAmount).setBillNo(IdUtil.simpleUUID());
|
||||
distributionFlowService.save(mkDistributionFlow);
|
||||
|
||||
distributionUserService.updateIncome(!flag ? rewardAmount : BigDecimal.ZERO,
|
||||
flag ? rewardAmount : BigDecimal.ZERO, BigDecimal.ZERO, distributionUser.getId());
|
||||
|
||||
if (flag) {
|
||||
ShopUser shopUser = shopUserService.getById(distributionUser.getShopUserId());
|
||||
UserInfo userInfo = userInfoService.getById(shopUser.getUserId());
|
||||
distributionAmountFlowService.save(new MkDistributionAmountFlow()
|
||||
.setType(TableValueConstant.DistributionAmountFlow.Type.SELF_RECHARGE.getCode())
|
||||
.setShopId(config.getShopId()).setAmount(finalAmount).setChangeAmount(amount).setSourceId(mkDistributionFlow.getId())
|
||||
.setRemark("自助充值").setOpAccount(StpKit.USER.getAccount()));
|
||||
try {
|
||||
JSONObject jsonObject = appWxService.transferBalance(userInfo.getWechatOpenId(), userInfo.getRealName(), rewardAmount, "分销奖励", mkDistributionFlow.getBillNo());
|
||||
mkDistributionFlow.setPackageInfo(jsonObject.getString("package_info"));
|
||||
mkDistributionFlow.setResp(jsonObject.toJSONString());
|
||||
}catch (Exception e) {
|
||||
mkDistributionFlow.setResp(e.getMessage());
|
||||
mkDistributionFlow.setStatus(TableValueConstant.DistributionFlow.Status.FAIL.getCode());
|
||||
}
|
||||
}
|
||||
distributionFlowService.save(mkDistributionFlow);
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -410,4 +405,14 @@ public class MkDistributionUserServiceImpl extends ServiceImpl<MkDistributionUse
|
|||
deepReward(config, sourceShopUserInfo, amount, sourceId, type, orderNo, 1);
|
||||
}, "分销方法执行失败");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateIncome(BigDecimal pendingIncome, BigDecimal receivedIncome, BigDecimal withdrawIncome, Long id) {
|
||||
boolean flag = mapper.updateIncome(pendingIncome, receivedIncome, withdrawIncome, id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean withdraw(long userId, MkDistributionWithdrawFlowDTO withdrawFlowDTO) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
package com.czg.service.market.service.impl;
|
||||
|
||||
import com.czg.market.dto.MkDistributionWithdrawFlowDTO;
|
||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||
import com.czg.market.entity.MkDistributionWithdrawFlow;
|
||||
import com.czg.market.service.MkDistributionWithdrawFlowService;
|
||||
import com.czg.service.market.mapper.MkDistributionWithdrawFlowMapper;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 提现记录表 服务层实现。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-27
|
||||
*/
|
||||
@Service
|
||||
public class MkDistributionWithdrawFlowServiceImpl extends ServiceImpl<MkDistributionWithdrawFlowMapper, MkDistributionWithdrawFlow> implements MkDistributionWithdrawFlowService{
|
||||
|
||||
}
|
||||
|
|
@ -3,6 +3,14 @@
|
|||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.czg.service.market.mapper.MkDistributionUserMapper">
|
||||
<update id="updateIncome">
|
||||
update mk_distribution_user
|
||||
set total_income = total_income + #{pendingIncome},
|
||||
pending_income = pending_income + #{pendingIncome},
|
||||
received_income = received_income + #{receivedIncome},
|
||||
withdrawn_income = withdrawn_income + #{withdrawIncome}
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<select id="selectMyDistributionShops" resultType="com.czg.market.vo.DistributionCenterShopVO">
|
||||
select shop.id as shopId,
|
||||
|
|
|
|||
|
|
@ -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.MkDistributionWithdrawFlowMapper">
|
||||
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue