散户退款接口开发

door
LI-CCONG\李聪聪 7 months ago
parent 361eb193cf
commit c7cca4b6f7

@ -6,12 +6,14 @@ import cc.yunxi.common.utils.BeanUtils;
import cc.yunxi.domain.dto.UserDTO;
import cc.yunxi.domain.po.Client;
import cc.yunxi.domain.po.Product;
import cc.yunxi.domain.po.RecycleOrder;
import cc.yunxi.domain.vo.enterprise.RechargeBalanceVO;
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.service.IRecycleOrderService;
import cc.yunxi.utils.UserContext;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -41,6 +43,8 @@ public class IndexController {
private final IEnterpriseService enterpriseService;
private final IRecycleOrderService recycleOrderService;
@ApiOperation("废品类目列表")
@GetMapping("/products")
@ -73,4 +77,12 @@ public class IndexController {
return CommonResult.success(true);
}
@ApiOperation(value = "散户退款", hidden = true)
@GetMapping(value = "/refund")
public CommonResult<Boolean> recharge(@RequestParam("orderId") String orderId) {
recycleOrderService.refundOrder(orderId);
return CommonResult.success(true);
}
}

@ -67,11 +67,10 @@ public class RecycleOrderController {
@ApiOperation("分页查询回收订单")
@PostMapping("/page")
public CommonResult<PageDTO<? extends RecycleOrderRespVO>> queryOrderByPage(@RequestBody RecycleOrderQuery recycleOrderQuery) {
// if (ObjectUtil.isEmpty(recycleOrderQuery.getOrderType())) {
//// throw new BizIllegalException("请确定要查询的订单类型");
// recycleOrderQuery.setOrderType(OrderTypeEnum.SH_ORDER);
// }
recycleOrderQuery.setOrderType(OrderTypeEnum.SH_ORDER); // 先定死 todo
if (ObjectUtil.isEmpty(recycleOrderQuery.getOrderType())) {
throw new BizIllegalException("请确定要查询的订单类型");
}
// recycleOrderQuery.setOrderType(OrderTypeEnum.SH_ORDER); // 先定死 todo
// 1.解析用户上下文
UserDTO userDTO = UserContext.getUser();
recycleOrderQuery.setUserType(userDTO.getUserType()).setUserId(userDTO.getId()).setStationId(userDTO.getStationId());

@ -50,7 +50,7 @@ public class EnterpriseAccountBill {
// @TableField("bill_status_id")
// private String billStatusId;
@ApiModelProperty("充值(元)")
@ApiModelProperty("进账(元)")
@TableField("income_amount")
private BigDecimal incomeAmount;

@ -143,7 +143,7 @@ public class RecycleOrder {
@TableField("remark")
private String remark;
@ApiModelProperty("数据隔离1")
@ApiModelProperty("企业商户id")
@TableField("company_id")
private String companyId;

@ -18,7 +18,7 @@ public enum BalanceChangeTypeEnum implements BaseEnum {
CASH_OUT("2", "提现"),
EXPEND("3", "消费");
REFUND("3", "退款");
@EnumValue
private final String code;

@ -90,14 +90,26 @@ public interface IClientService extends IService<Client> {
* @param clientId
* @param amount
* @param orderNo
* @param enterpriseId
*/
void addBalance(String clientId, BigDecimal amount, String orderNo, String stationId);
void addBalance(String clientId, BigDecimal amount, String orderNo, String enterpriseId);
/**
*
* @param openId
* @param amount
*/
void cashBalance(String openId, Integer amount) throws Exception;
/**
* 退
* @param clientId
* @param amount
* @param orderNo
* @param enterpriseId
*/
void reduceBalance(String clientId, BigDecimal amount, String orderNo, String enterpriseId);
}

@ -98,4 +98,10 @@ public interface IRecycleOrderService extends IService<RecycleOrder> {
*/
void finishOrder(@Valid RecycleOrderFinishVO orderFinishVO);
/**
* 退
* @param orderId
*/
void refundOrder(String orderId);
}

@ -170,8 +170,14 @@ public class ClientServiceImpl extends ServiceImpl<ClientMapper, Client> impleme
@Override
public void addBalance(String clientId, BigDecimal amount, String orderNo, String stationId) {
this.changeBalance(clientId, amount, orderNo, stationId, BalanceChangeTypeEnum.INCOME);
public void addBalance(String clientId, BigDecimal amount, String orderNo, String enterpriseId) {
this.changeBalance(clientId, amount, orderNo, enterpriseId, BalanceChangeTypeEnum.INCOME);
}
@Override
public void reduceBalance(String clientId, BigDecimal amount, String orderNo, String enterpriseId) {
this.changeBalance(clientId, amount, orderNo, enterpriseId, BalanceChangeTypeEnum.REFUND);
}
@ -257,19 +263,20 @@ public class ClientServiceImpl extends ServiceImpl<ClientMapper, Client> impleme
// 统一金额交易
private void changeBalance(String keyId, BigDecimal amount, String orderNo,
String stationId, BalanceChangeTypeEnum changeTypeEnum) {
String enterpriseId, BalanceChangeTypeEnum changeTypeEnum) {
Client client = this.getClientByKeyId(keyId);
BigDecimal balance = client.getBanlance();
String remark;
LocalDateTime now = LocalDateTime.now();
amount = amount.setScale(2, RoundingMode.HALF_UP);
String amountStr = String.valueOf(amount);
if (changeTypeEnum.equals(BalanceChangeTypeEnum.INCOME)) { // 收入
switch (changeTypeEnum) { // 收入
case INCOME:
balance = balance.add(amount);
remark = "废品回收结算,收入" + amountStr + "元";
// 更新商户资金
Enterprise enterprise = enterpriseService.getEnterpriseByStationId(stationId);
Enterprise enterprise = enterpriseService.getEnterpriseById(enterpriseId, true);
BigDecimal fund = enterprise.getFund();
if (fund.compareTo(amount) < 0) {
throw new BizIllegalException("商户资金不足,请联系商户");
@ -288,13 +295,41 @@ public class ClientServiceImpl extends ServiceImpl<ClientMapper, Client> impleme
accountBill.setRemark("支付给散户" + amountStr + "元");
accountBill.setCreatorTime(now);
accountBillMapper.insert(accountBill);
break;
case REFUND:
if (balance.compareTo(amount) < 0) {
throw new BizIllegalException("余额不足");
}
balance = balance.subtract(amount);
remark = "退款给商户" + amountStr + "元";
} else { // 微信提现
// 更新商户资金
Enterprise enterprise1 = enterpriseService.getEnterpriseById(enterpriseId, true);
BigDecimal fund1 = enterprise1.getFund();
fund1 = fund1.add(amount);
enterprise1.setFund(fund1);
enterpriseService.updateById(enterprise1);
// 记录商户流水
EnterpriseAccountBill accountBill1 = new EnterpriseAccountBill();
accountBill1.setEnterpriseId(enterprise1.getId());
accountBill1.setBillNumber(CommonUtil.getIdNumber(BusinessCodeEnum.BILL.getCode()));
accountBill1.setAccountBalance(fund1);
accountBill1.setIncomeAmount(amount);
accountBill1.setOrderNumber(orderNo);
accountBill1.setRemark("散户退款到商户" + amountStr + "元");
accountBill1.setCreatorTime(now);
accountBillMapper.insert(accountBill1);
break;
case CASH_OUT: // 微信提现
if (balance.compareTo(amount) < 0) {
throw new BizIllegalException("余额不足");
}
balance = balance.subtract(amount);
remark = "微信提现" + amountStr + "元";
break;
default:
return;
}
// 更新散户余额
client.setBanlance(balance);

@ -299,7 +299,7 @@ public class RecycleOrderServiceImpl extends ServiceImpl<RecycleOrderMapper, Rec
this.updateById(recycleOrder);
// 增加收入余额 异步? todo
clientService.addBalance(client.getId(), totalAmount, orderNo, recycler.getStationId());
clientService.addBalance(client.getId(), totalAmount, orderNo, recycler.getCompanyId());
return orderId;
}
@ -433,7 +433,19 @@ public class RecycleOrderServiceImpl extends ServiceImpl<RecycleOrderMapper, Rec
recyclerService.totalTick(recyclerId, distance, totalAmount);
// 增加收入余额 异步? todo
clientService.addBalance(clientId, totalAmount, orderNumber, recycleStationId);
clientService.addBalance(clientId, totalAmount, orderNumber, recycleOrder.getCompanyId());
}
@Override
@Transactional(rollbackFor = Exception.class)
public void refundOrder(String orderId) {
RecycleOrder recycleOrder = this.getOrderById(orderId, false);
String companyId = recycleOrder.getCompanyId();
String clientId = recycleOrder.getClientId();
BigDecimal orderAmount = recycleOrder.getOrderAmount();
String orderNo = recycleOrder.getOrderNumber();
clientService.reduceBalance(clientId, orderAmount, orderNo, companyId);
}

@ -99,6 +99,7 @@ nxhs:
- /api/common/shlogin
- /api/test/**
- /api/file/download
- /api/index/products
adminKey: 8bd2aa89033ead51c505e44994e42189 # 后台接口访问Key
upload:
basePath: /upload/

Loading…
Cancel
Save