商户余额充值功能v1

door
LI-CCONG\李聪聪 7 months ago
parent c4dc471e3d
commit 0452b91596

@ -9,6 +9,7 @@ import cc.yunxi.domain.po.Product;
import cc.yunxi.domain.vo.priceproduct.ProductSimpleVO;
import cc.yunxi.enums.UserTypeEnum;
import cc.yunxi.service.IClientService;
import cc.yunxi.service.IEnterpriseService;
import cc.yunxi.service.IPriceProductService;
import cc.yunxi.utils.UserContext;
import io.swagger.annotations.Api;
@ -18,10 +19,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.util.Collections;
import java.util.List;
@ -38,6 +36,8 @@ public class IndexController {
private final IClientService clientService;
private final IEnterpriseService enterpriseService;
@ApiOperation("废品类目列表")
@GetMapping("/products")
@ -60,4 +60,17 @@ public class IndexController {
return CommonResult.success(true);
}
@ApiOperation(value = "商户余额充值", hidden = true)
@PostMapping("/recharge-balance")
public CommonResult<Boolean> recharge(
@NotBlank(message = "商户号不能为空")
String merchantId,
@NotNull(message = "充值金额不能为空")
@Min(value = 100, message = "充值金额最大为100元")
@Max(value = 10000, message = "充值金额最大为10000元") Integer amount) throws Exception {
enterpriseService.rechargeBalance(merchantId, amount);
return CommonResult.success(true);
}
}

@ -50,11 +50,11 @@ public class EnterpriseAccountBill {
// @TableField("bill_status_id")
// private String billStatusId;
// @ApiModelProperty("收入(元)")
// @TableField("income_amount")
// private BigDecimal incomeAmount;
@ApiModelProperty("充值(元)")
@TableField("income_amount")
private BigDecimal incomeAmount;
@ApiModelProperty("交易额")
@ApiModelProperty("交易额(元)")
@TableField("payout_amount")
private BigDecimal payoutAmount;

@ -26,4 +26,12 @@ public interface IEnterpriseService extends IService<Enterprise> {
* @return Enterprise
*/
Enterprise getEnterpriseById(String enterpriseId);
/**
*
* @param merchantId
* @param amount
*/
void rechargeBalance(String merchantId, Integer amount);
}

@ -1,9 +1,13 @@
package cc.yunxi.service.impl;
import cc.yunxi.common.exception.BizIllegalException;
import cc.yunxi.common.utils.CommonUtil;
import cc.yunxi.domain.po.Enterprise;
import cc.yunxi.domain.po.EnterpriseAccountBill;
import cc.yunxi.domain.po.RecycleStation;
import cc.yunxi.enums.BusinessCodeEnum;
import cc.yunxi.enums.GlobalStatusEnum;
import cc.yunxi.mapper.EnterpriseAccountBillMapper;
import cc.yunxi.mapper.EnterpriseMapper;
import cc.yunxi.service.IEnterpriseService;
import cc.yunxi.service.IRecycleStationService;
@ -11,9 +15,13 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* <p>
@ -29,6 +37,9 @@ public class EnterpriseServiceImpl extends ServiceImpl<EnterpriseMapper, Enterpr
@Resource
private IRecycleStationService recycleStationService;
@Autowired
private EnterpriseAccountBillMapper accountBillMapper;
public Enterprise getEnterpriseByStationId(String stationId) {
RecycleStation station = recycleStationService.getStationById(stationId);
String enterpriseId = station.getEnterpriseId();
@ -54,4 +65,30 @@ public class EnterpriseServiceImpl extends ServiceImpl<EnterpriseMapper, Enterpr
return enterprise;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void rechargeBalance(String merchantId, Integer amount) {
LocalDateTime now = LocalDateTime.now();
// 余额充值
Enterprise enterprise = this.getEnterpriseById(merchantId);
BigDecimal fund = enterprise.getFund();
BigDecimal rechargeAmount = new BigDecimal(amount);
fund = fund.add(rechargeAmount);
enterprise.setFund(fund);
this.updateById(enterprise);
// 记录充值流水
EnterpriseAccountBill accountBill = new EnterpriseAccountBill();
accountBill.setEnterpriseId(enterprise.getId());
accountBill.setBillNumber(CommonUtil.getIdNumber(BusinessCodeEnum.BILL.getCode()));
accountBill.setAccountBalance(fund);
accountBill.setIncomeAmount(rechargeAmount);
accountBill.setOrderNumber("0");
accountBill.setRemark("充值金额" + rechargeAmount.setScale(2) + "元");
accountBill.setCreatorTime(now);
accountBillMapper.insert(accountBill);
}
}

Loading…
Cancel
Save