提交 b928b6d8 作者: xiaowang

提现申请

上级 a57022bc
...@@ -2,6 +2,7 @@ package com.mmc.iuav.user.dao.wallet; ...@@ -2,6 +2,7 @@ package com.mmc.iuav.user.dao.wallet;
import com.mmc.iuav.user.entity.wallet.PayLogDO; import com.mmc.iuav.user.entity.wallet.PayLogDO;
import com.mmc.iuav.user.entity.wallet.PayWalletDO; import com.mmc.iuav.user.entity.wallet.PayWalletDO;
import com.mmc.iuav.user.entity.wallet.WithdrawalLogDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List; import java.util.List;
...@@ -26,4 +27,6 @@ public interface PayWalletDao { ...@@ -26,4 +27,6 @@ public interface PayWalletDao {
int countPayLog(Integer userAccountId); int countPayLog(Integer userAccountId);
PayLogDO getPayLogById(Integer id); PayLogDO getPayLogById(Integer id);
void insertWithdrawalLog(WithdrawalLogDO withdrawalLogDO);
} }
package com.mmc.iuav.user.entity.wallet;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* (WithdrawalLogDO)实体类
*
* @author makejava
* @since 2023-08-25 16:57:13
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class WithdrawalLogDO implements Serializable {
private static final long serialVersionUID = 757884073681912750L;
private Integer id;
/**
* 用户id
*/
private Integer userAccountId;
/**
* 支付流水号(T202109031615XXXX)XXXX随机数
*/
private String payNo;
/**
* 150:提现冻结 200:提现成功 250:提现失败
*/
private Integer payMethod;
/**
* 流水时间
*/
private Date payTime;
/**
* 提现申请id
*/
private Integer xzWithdrawalApplyId;
/**
* 提现冻结
*/
private BigDecimal salaryFreeze;
private Date createTime;
private Date updateTime;
}
package com.mmc.iuav.user.enums;
/**
* @author 作者 LW
* @version 创建时间:2023.8.26 10:56
* @explain 类说明
*/
public enum WithdrawalMethod {
TXDJ(150, "提现冻结"), TXCG(200, "提现成功"), TXSB(250, "提现失败");
private Integer code;
private String name;
WithdrawalMethod(Integer code, String name) {
this.code = code;
this.name = name;
}
public void setCode(Integer code) {
this.code = code;
}
public Integer getCode() {
return this.code;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
...@@ -11,12 +11,16 @@ import com.mmc.iuav.user.entity.RealNameAuthDO; ...@@ -11,12 +11,16 @@ import com.mmc.iuav.user.entity.RealNameAuthDO;
import com.mmc.iuav.user.entity.XzAuthDO; import com.mmc.iuav.user.entity.XzAuthDO;
import com.mmc.iuav.user.entity.XzWithdrawalApplyDO; import com.mmc.iuav.user.entity.XzWithdrawalApplyDO;
import com.mmc.iuav.user.entity.wallet.PayWalletDO; import com.mmc.iuav.user.entity.wallet.PayWalletDO;
import com.mmc.iuav.user.entity.wallet.WithdrawalLogDO;
import com.mmc.iuav.user.enums.WithdrawalMethod;
import com.mmc.iuav.user.model.vo.wallet.ApplyWithdrawalVO; import com.mmc.iuav.user.model.vo.wallet.ApplyWithdrawalVO;
import com.mmc.iuav.user.service.xzsz.WithdrawalService; import com.mmc.iuav.user.service.xzsz.WithdrawalService;
import com.mmc.iuav.user.util.TDateUtil; import com.mmc.iuav.user.util.TDateUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -42,6 +46,7 @@ public class WithdrawalServiceImpl implements WithdrawalService { ...@@ -42,6 +46,7 @@ public class WithdrawalServiceImpl implements WithdrawalService {
private PayWalletDao payWalletDao; private PayWalletDao payWalletDao;
@Override @Override
@Transactional
public ResultBody apply(ApplyWithdrawalVO applyWithdrawalVO, Integer userAccountId) { public ResultBody apply(ApplyWithdrawalVO applyWithdrawalVO, Integer userAccountId) {
// 判断该用户是否实名认证 // 判断该用户是否实名认证
RealNameAuthDO realNameAuth = realNameAuthDao.getRealNameAuthByUId(userAccountId); RealNameAuthDO realNameAuth = realNameAuthDao.getRealNameAuthByUId(userAccountId);
...@@ -66,8 +71,8 @@ public class WithdrawalServiceImpl implements WithdrawalService { ...@@ -66,8 +71,8 @@ public class WithdrawalServiceImpl implements WithdrawalService {
return ResultBody.error("当前金额大于可提现金额!"); return ResultBody.error("当前金额大于可提现金额!");
} }
applyWithdrawalVO.setUserAccountId(userAccountId); applyWithdrawalVO.setUserAccountId(userAccountId);
// 生成提现流水编号 // 生成提现交易编号
String outerTradeNo = "T" + TDateUtil.getDateStr(new Date(), TDateUtil.TYPE) + userAccountId + CodeUtil.getRandomNum(4); String outerTradeNo = "B" + TDateUtil.getDateStr(new Date(), TDateUtil.TYPE) + userAccountId + CodeUtil.getRandomNum(4);
// 记录提现申请记录 // 记录提现申请记录
XzWithdrawalApplyDO xzWithdrawalApplyDO = new XzWithdrawalApplyDO(applyWithdrawalVO); XzWithdrawalApplyDO xzWithdrawalApplyDO = new XzWithdrawalApplyDO(applyWithdrawalVO);
xzWithdrawalApplyDO.setOuterTradeNo(outerTradeNo); xzWithdrawalApplyDO.setOuterTradeNo(outerTradeNo);
...@@ -78,6 +83,28 @@ public class WithdrawalServiceImpl implements WithdrawalService { ...@@ -78,6 +83,28 @@ public class WithdrawalServiceImpl implements WithdrawalService {
xzWithdrawalApplyDO.setMonth(TDateUtil.getCurrentDateByType("yyyy-MM")); xzWithdrawalApplyDO.setMonth(TDateUtil.getCurrentDateByType("yyyy-MM"));
xzWithdrawalApplyDO.setTradeStatus("apply"); xzWithdrawalApplyDO.setTradeStatus("apply");
withdrawalDao.insertWithdrawalApply(xzWithdrawalApplyDO); withdrawalDao.insertWithdrawalApply(xzWithdrawalApplyDO);
// 生成提现流水编号
String payNo = "T" + TDateUtil.getDateStr(new Date(), TDateUtil.TYPE) + userAccountId + CodeUtil.getRandomNum(4);
// 记录流水记录
WithdrawalLogDO withdrawalLogDO = new WithdrawalLogDO();
withdrawalLogDO.setPayNo(payNo);
withdrawalLogDO.setPayTime(new Date());
withdrawalLogDO.setSalaryFreeze(applyWithdrawalVO.getPayAmount());
withdrawalLogDO.setXzWithdrawalApplyId(xzWithdrawalApplyDO.getId());
withdrawalLogDO.setUserAccountId(userAccountId);
withdrawalLogDO.setPayMethod(WithdrawalMethod.TXDJ.getCode());
payWalletDao.insertWithdrawalLog(withdrawalLogDO);
// 修改钱包信息,钱包冻结金额
PayWalletDO payWalletDO = new PayWalletDO();
payWalletDO.setPid(payWallet.getPid());
payWalletDO.setUserAccountId(userAccountId);
payWalletDO.setSalaryAmt(payWallet.getSalaryAmt().subtract(applyWithdrawalVO.getPayAmount()));
payWalletDO.setSalaryFreeze(payWallet.getSalaryFreeze().add(applyWithdrawalVO.getPayAmount()));
int updateCount = payWalletDao.updatePayWallet(payWalletDO);
if (updateCount != 1) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ResultBody.error("提现申请失败,请稍后重试!");
}
return ResultBody.success(); return ResultBody.success();
} }
} }
...@@ -22,6 +22,15 @@ ...@@ -22,6 +22,15 @@
values (#{userAccountId}, #{payNo}, #{payMethod}, #{cashAmtPaid}, #{salaryAmtPaid}, NOW(), #{remark}, values (#{userAccountId}, #{payNo}, #{payMethod}, #{cashAmtPaid}, #{salaryAmtPaid}, NOW(), #{remark},
#{operateUser}) #{operateUser})
</insert> </insert>
<insert id="insertWithdrawalLog">
insert into withdrawal_log(user_account_id,
xz_withdrawal_apply_id,
pay_no,
pay_method,
pay_time,
salary_freeze)
values (#{userAccountId}, #{xzWithdrawalApplyId}, #{payNo}, #{payMethod}, #{payTime}, #{salaryFreeze})
</insert>
<update id="updatePayWallet"> <update id="updatePayWallet">
update pay_wallet update pay_wallet
<set> <set>
......
...@@ -4,7 +4,8 @@ ...@@ -4,7 +4,8 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mmc.iuav.user.dao.xzsz.WithdrawalDao"> <mapper namespace="com.mmc.iuav.user.dao.xzsz.WithdrawalDao">
<insert id="insertWithdrawalApply"> <insert id="insertWithdrawalApply" useGeneratedKeys="true" keyProperty="id"
parameterType="com.mmc.iuav.user.entity.XzWithdrawalApplyDO">
insert into xz_withdrawal_apply (user_account_id, insert into xz_withdrawal_apply (user_account_id,
bank_name, bank_name,
emp_name, emp_name,
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论