商户余额充值功能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.domain.vo.priceproduct.ProductSimpleVO;
import cc.yunxi.enums.UserTypeEnum; import cc.yunxi.enums.UserTypeEnum;
import cc.yunxi.service.IClientService; import cc.yunxi.service.IClientService;
import cc.yunxi.service.IEnterpriseService;
import cc.yunxi.service.IPriceProductService; import cc.yunxi.service.IPriceProductService;
import cc.yunxi.utils.UserContext; import cc.yunxi.utils.UserContext;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@ -18,10 +19,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.DecimalMin; import javax.validation.constraints.*;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@ -38,6 +36,8 @@ public class IndexController {
private final IClientService clientService; private final IClientService clientService;
private final IEnterpriseService enterpriseService;
@ApiOperation("废品类目列表") @ApiOperation("废品类目列表")
@GetMapping("/products") @GetMapping("/products")
@ -60,4 +60,17 @@ public class IndexController {
return CommonResult.success(true); 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") // @TableField("bill_status_id")
// private String billStatusId; // private String billStatusId;
// @ApiModelProperty("收入(元)") @ApiModelProperty("充值(元)")
// @TableField("income_amount") @TableField("income_amount")
// private BigDecimal incomeAmount; private BigDecimal incomeAmount;
@ApiModelProperty("交易额") @ApiModelProperty("交易额(元)")
@TableField("payout_amount") @TableField("payout_amount")
private BigDecimal payoutAmount; private BigDecimal payoutAmount;

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

@ -1,9 +1,13 @@
package cc.yunxi.service.impl; package cc.yunxi.service.impl;
import cc.yunxi.common.exception.BizIllegalException; import cc.yunxi.common.exception.BizIllegalException;
import cc.yunxi.common.utils.CommonUtil;
import cc.yunxi.domain.po.Enterprise; import cc.yunxi.domain.po.Enterprise;
import cc.yunxi.domain.po.EnterpriseAccountBill;
import cc.yunxi.domain.po.RecycleStation; import cc.yunxi.domain.po.RecycleStation;
import cc.yunxi.enums.BusinessCodeEnum;
import cc.yunxi.enums.GlobalStatusEnum; import cc.yunxi.enums.GlobalStatusEnum;
import cc.yunxi.mapper.EnterpriseAccountBillMapper;
import cc.yunxi.mapper.EnterpriseMapper; import cc.yunxi.mapper.EnterpriseMapper;
import cc.yunxi.service.IEnterpriseService; import cc.yunxi.service.IEnterpriseService;
import cc.yunxi.service.IRecycleStationService; import cc.yunxi.service.IRecycleStationService;
@ -11,9 +15,13 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
@ -29,6 +37,9 @@ public class EnterpriseServiceImpl extends ServiceImpl<EnterpriseMapper, Enterpr
@Resource @Resource
private IRecycleStationService recycleStationService; private IRecycleStationService recycleStationService;
@Autowired
private EnterpriseAccountBillMapper accountBillMapper;
public Enterprise getEnterpriseByStationId(String stationId) { public Enterprise getEnterpriseByStationId(String stationId) {
RecycleStation station = recycleStationService.getStationById(stationId); RecycleStation station = recycleStationService.getStationById(stationId);
String enterpriseId = station.getEnterpriseId(); String enterpriseId = station.getEnterpriseId();
@ -54,4 +65,30 @@ public class EnterpriseServiceImpl extends ServiceImpl<EnterpriseMapper, Enterpr
return enterprise; 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