JAVA全系列 教程
3762个小节阅读:7094.9k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
xxxxxxxxxx
{
"orderBackfeeDto": {
"backAmount": 5,
"chId": "CH1463686948676829184",
"regId": "GH1463681727015813120",
"patientName": "唐太宗"
},
"orderBackfeeItemDtoList": [{
"itemId": "ITEM1463771832669831168",
"coId": "CO1463771831843553280",
"itemName": "血常规",
"itemPrice": 5,
"itemNum": 1,
"itemType": "1",
"itemAmount": 5
}]
}
返回JSON数据
名称 | 类型 | 其他信息 |
---|---|---|
code | int | |
msg | String | |
data | String |
创建OrderBackfeeFormDto、OrderBackfeeItemDto
创建OrderBackfeeMapper、OrderBackfeeMapper.xml
修改OrderOrderChargeService,增加下面的方法
xxxxxxxxxx
/**
* 根据订单ID查询订单信息
* @param orderId
* @return
*/
OrderCharge queryOrderChargeByOrderId(String orderId);
修改OrderChargeServiceImpl,增加下面的方法实现
xxxxxxxxxx
@Override
public OrderCharge queryOrderChargeByOrderId(String orderId) {
return this.orderChargeMapper.selectById(orderId);
}
在OrderBackfeeController中增加创建退费单方法(支付宝)
xxxxxxxxxx
/**
* 创建支付宝退费订单
*/
@PostMapping("createOrderBackfeeWithZfb")
public AjaxResult createOrderBackfeeWithZfb(@RequestBody @Validated OrderBackfeeFormDto orderBackfeeFormDto){
//保存订单
orderBackfeeFormDto.getOrderBackfeeDto().setBackType(Constants.PAY_TYPE_1);
orderBackfeeFormDto.setSimpleUser(ShiroSecurityUtils.getCurrentSimpleUser());
//生成退费单号
String backId= IdGeneratorSnowflake.generatorIdWithProfix(Constants.ID_PROFIX_ODB);
orderBackfeeFormDto.getOrderBackfeeDto().setBackId(backId);
//找到当前退费单之前的收费单的ID
String itemId = orderBackfeeFormDto.getOrderBackfeeItemDtoList().get(0).getItemId();
OrderChargeItem orderChargeItem=this.orderChargeService.queryOrderChargeItemByItemId(itemId);
//根据订单号找到之前的支付定单对象 判断之前是否使用支付宝支付
OrderCharge orderCharge=this.orderChargeService.queryOrderChargeByOrderId(orderChargeItem.getOrderId());
if(orderCharge==null){
return AjaxResult.fail("【"+orderBackfeeFormDto.getOrderBackfeeDto().getRegId()+"】的挂号单之前没有收费记录,不能使用支付宝退费,请核对后再查询");
}
if(!orderCharge.getPayType().equals(Constants.PAY_TYPE_1)){
return AjaxResult.fail("【"+orderBackfeeFormDto.getOrderBackfeeDto().getRegId()+"】的挂号单之前的支付方式为现金,不能使用支付宝退费,请核对后再查询");
}
orderBackfeeFormDto.getOrderBackfeeDto().setOrderId(orderChargeItem.getOrderId());
this.orderBackfeeService.saveOrderAndItems(orderBackfeeFormDto);
//因为是支付宝退费,所以调用支付宝的接口
String outTradeNo=orderCharge.getOrderId();
String tradeNo=orderCharge.getPayPlatformId();
String refundAmount=orderBackfeeFormDto.getOrderBackfeeDto().getBackAmount().toString();
String refundReason="不想要了";
String outRequestNo=backId;
Map<String, Object> map = PayService.payBack(outTradeNo, tradeNo, refundAmount, refundReason, outRequestNo);
if(map.get("code").toString().equals("200")){
this.orderBackfeeService.backSuccess(backId,map.get("tradeNo").toString(),Constants.PAY_TYPE_1);
return AjaxResult.success();
}else{
return AjaxResult.fail(map.get("msg").toString());
}
创建支付宝退费订单/doctor/backfee/createOrderBackfeeWithZfb