|
|
@@ -35,7 +35,6 @@ import com.wechat.pay.java.service.payments.nativepay.NativePayService;
|
|
|
import com.wechat.pay.java.service.refund.RefundService;
|
|
|
import com.wechat.pay.java.service.refund.model.QueryByOutRefundNoRequest;
|
|
|
import com.wechat.pay.java.service.refund.model.Refund;
|
|
|
-import com.wechat.pay.java.service.refund.model.Status;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.http.impl.client.CloseableHttpClient;
|
|
|
import org.apache.poi.ss.usermodel.Row;
|
|
|
@@ -67,7 +66,6 @@ import java.util.*;
|
|
|
import static com.template.common.utils.StrUtils.getUUIDBits;
|
|
|
import static com.wechat.pay.java.service.payments.model.Transaction.TradeStateEnum.NOTPAY;
|
|
|
import static com.wechat.pay.java.service.payments.model.Transaction.TradeStateEnum.SUCCESS;
|
|
|
-import static com.wechat.pay.java.service.refund.model.Status.*;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
|
@@ -144,6 +142,9 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
@Autowired
|
|
|
SubsidySetupService subsidySetupService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ ApartmentSettingService apartmentSettingService;
|
|
|
+
|
|
|
@Override
|
|
|
public CommonResult getHouseOrderPrice(int houseOrderNumber, String userId, String houseId, String liveTime, String leaveTime) {
|
|
|
if (ObjectUtils.isEmpty(userId) && ObjectUtils.isEmpty(houseId) && ObjectUtils.isEmpty(leaveTime) && ObjectUtils.isEmpty(leaveTime) && ObjectUtils.isEmpty(houseOrderNumber) && houseOrderNumber <= 0) {
|
|
|
@@ -263,15 +264,15 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
houseNumberState.setHouseNumberId(id);
|
|
|
houseNumberState.setStatus(3);
|
|
|
Integer roomType = house.getRoomType();
|
|
|
- if (1==roomType) {
|
|
|
+ if (1 == roomType) {
|
|
|
// DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
LocalDateTime start = LocalDateTime.parse(reserveLiveTime, dateTimeFormatter1).withHour(0).withMinute(0).withSecond(0);
|
|
|
- LocalDateTime end = LocalDateTime.parse(reserveLeaveTime,dateTimeFormatter1).withHour(0).withMinute(0).withSecond(0);
|
|
|
+ LocalDateTime end = LocalDateTime.parse(reserveLeaveTime, dateTimeFormatter1).withHour(0).withMinute(0).withSecond(0);
|
|
|
String startTime = start.format(dateTimeFormatter1);
|
|
|
String endTime = end.format(dateTimeFormatter1);
|
|
|
houseNumberState.setStartTime(startTime);
|
|
|
houseNumberState.setEndTime(endTime);
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
houseNumberState.setStartTime(reserveLiveTime);
|
|
|
houseNumberState.setEndTime(reserveLeaveTime);
|
|
|
}
|
|
|
@@ -825,7 +826,7 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
HouseNumberState houseNumberState1 = houseNumberStateService.getOne(wrapperHns);
|
|
|
HouseNumberState houseNumberState = new HouseNumberState();
|
|
|
if (ObjectUtils.isEmpty(houseNumberState1)) {
|
|
|
- return CommonResult.fail();
|
|
|
+ return CommonResult.fail();
|
|
|
} else {
|
|
|
BeanUtils.copyProperties(houseNumberState1, houseNumberState);
|
|
|
}
|
|
|
@@ -1410,7 +1411,7 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
}
|
|
|
}
|
|
|
// 将工作簿写入文件
|
|
|
- ExcelUtils.excelDownload(workbook, "订单表.xlsx", response);
|
|
|
+ ExcelUtils2.excelDownload(workbook, "订单表.xlsx", response);
|
|
|
|
|
|
return CommonResult.ok();
|
|
|
}
|
|
|
@@ -1432,14 +1433,14 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
return CommonResult.fail("参数异常");
|
|
|
}
|
|
|
|
|
|
- String s="";
|
|
|
+ String s = "";
|
|
|
if ("1".equals(state)) {
|
|
|
- s="2,3,4,8";
|
|
|
+ s = "2,3,4,8";
|
|
|
} else {
|
|
|
- s="1,5";
|
|
|
+ s = "1,5";
|
|
|
}
|
|
|
|
|
|
- PageUtils<ReportStatisticsVo> pageUtils=houseOrderService.reportStatisticsPage(s,keyWord,startTime,endTime,page,size);
|
|
|
+ PageUtils<ReportStatisticsVo> pageUtils = houseOrderService.reportStatisticsPage(s, keyWord, startTime, endTime, page, size);
|
|
|
|
|
|
return CommonResult.ok(pageUtils);
|
|
|
|
|
|
@@ -1463,14 +1464,14 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
return CommonResult.fail("参数异常");
|
|
|
}
|
|
|
|
|
|
- String s="";
|
|
|
+ String s = "";
|
|
|
if ("1".equals(state)) {
|
|
|
- s="2,3,4,8";
|
|
|
+ s = "2,3,4,8";
|
|
|
} else {
|
|
|
- s="1,5";
|
|
|
+ s = "1,5";
|
|
|
}
|
|
|
|
|
|
- List<ReportStatisticsExportVo> vos=houseOrderService.reportStatisticsExport(s,keyWord,startTime,endTime);
|
|
|
+ List<ReportStatisticsExportVo> vos = houseOrderService.reportStatisticsExport(s, keyWord, startTime, endTime);
|
|
|
|
|
|
// 导出
|
|
|
Workbook workbook = new XSSFWorkbook();
|
|
|
@@ -1491,19 +1492,19 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
ReportStatisticsExportVo vo = vos.get(i);
|
|
|
Row dataRow1 = sheet.createRow(i + 1);
|
|
|
|
|
|
- dataRow1.createCell(0).setCellValue(i+1);
|
|
|
+ dataRow1.createCell(0).setCellValue(i + 1);
|
|
|
dataRow1.createCell(1).setCellValue(vo.getOrderStatus());
|
|
|
dataRow1.createCell(2).setCellValue(vo.getLiveName());
|
|
|
// 房型是房间名称加房间类型
|
|
|
String roomName = vo.getRoomName();
|
|
|
String roomType = vo.getRoomType();
|
|
|
- String type="";
|
|
|
+ String type = "";
|
|
|
if ("1".equals(roomType)) {
|
|
|
- type="全";
|
|
|
- }else {
|
|
|
- type="钟";
|
|
|
+ type = "全";
|
|
|
+ } else {
|
|
|
+ type = "钟";
|
|
|
}
|
|
|
- dataRow1.createCell(3).setCellValue(roomName+"("+type+")");
|
|
|
+ dataRow1.createCell(3).setCellValue(roomName + "(" + type + ")");
|
|
|
dataRow1.createCell(4).setCellValue(vo.getRoomNumber());
|
|
|
dataRow1.createCell(5).setCellValue(vo.getPayPrice().doubleValue());
|
|
|
dataRow1.createCell(6).setCellValue(vo.getPayTime());
|
|
|
@@ -1537,7 +1538,7 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
}
|
|
|
|
|
|
// 将工作簿写入文件
|
|
|
- ExcelUtils.excelDownload(workbook, "订单报表.xlsx", response);
|
|
|
+ ExcelUtils2.excelDownload(workbook, "订单报表.xlsx", response);
|
|
|
|
|
|
return CommonResult.ok();
|
|
|
}
|
|
|
@@ -1652,12 +1653,12 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
|
|
|
|
|
|
String houseNumberId = houseOrder.getHouseNumberId();
|
|
|
- HouseNumber houseNumber= houseNumberService.getById(houseNumberId);
|
|
|
+ HouseNumber houseNumber = houseNumberService.getById(houseNumberId);
|
|
|
if (ObjectUtils.isNotEmpty(houseNumber)) {
|
|
|
houseOrderVo.setRoomNumber(houseNumber.getRoomNumber());
|
|
|
}
|
|
|
String orderNumber = houseOrder.getOrderNumber();
|
|
|
- Unlocking unlocking=unlockingService.getOrderNumber(orderNumber);
|
|
|
+ Unlocking unlocking = unlockingService.getOrderNumber(orderNumber);
|
|
|
if (ObjectUtils.isNotEmpty(unlocking)) {
|
|
|
houseOrderVo.setPassWord(unlocking.getPassWord());
|
|
|
}
|
|
|
@@ -1679,8 +1680,8 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
@Transactional(rollbackFor = {Exception.class})
|
|
|
public CommonResult pay(WxPayDto wpd, BindingResult bindingResult, HttpServletRequest request) throws Exception {
|
|
|
System.out.println(TimeExchange.getTime() + "微信支付参数====:" + JSON.toJSON(wpd));
|
|
|
- String wxCode= request.getHeader("code");
|
|
|
- if(wxCode==null||wxCode==""){
|
|
|
+ String wxCode = request.getHeader("code");
|
|
|
+ if (wxCode == null || wxCode == "") {
|
|
|
return CommonResult.fail("code不能为空");
|
|
|
}
|
|
|
if (bindingResult.hasErrors()) {
|
|
|
@@ -1759,29 +1760,29 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
int totalfee = (wpd.getTotalPrice().multiply(new BigDecimal(100))).intValue();
|
|
|
//查询是否有未支付订单,有则调用关闭更新支付订单号重新生成支付订单
|
|
|
List<PayRecord> houseOrderId = payRecordService.list(new QueryWrapper<PayRecord>().eq("house_order_id", ho.getId()));
|
|
|
- log.info("支付订单houseOrderId=="+houseOrderId.toString());
|
|
|
- PayRecord payRecord=houseOrderId.size()>0?houseOrderId.get(0):new PayRecord();
|
|
|
- if (StringUtils.hasText(payRecord.getPayNo())){
|
|
|
+ log.info("支付订单houseOrderId==" + houseOrderId.toString());
|
|
|
+ PayRecord payRecord = houseOrderId.size() > 0 ? houseOrderId.get(0) : new PayRecord();
|
|
|
+ if (StringUtils.hasText(payRecord.getPayNo())) {
|
|
|
try {
|
|
|
this.closeOrderById(payRecord.getPayNo());
|
|
|
} catch (Exception e) {
|
|
|
- return CommonResult.fail("关闭已生成支付订单失败返回:"+e.getMessage());
|
|
|
+ return CommonResult.fail("关闭已生成支付订单失败返回:" + e.getMessage());
|
|
|
}
|
|
|
payRecord.setPayNo(CommonUtil.generateUUID());
|
|
|
payRecord.setRemark("更新订单");
|
|
|
- boolean a =payRecordService.updateById(payRecord);
|
|
|
- if (!a){
|
|
|
+ boolean a = payRecordService.updateById(payRecord);
|
|
|
+ if (!a) {
|
|
|
return CommonResult.fail("生成支付订单失败");
|
|
|
}
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
payRecord.setPayNo(CommonUtil.generateUUID());
|
|
|
payRecord.setHouseOrderId(ho.getId());
|
|
|
payRecord.setUserId(Integer.valueOf(ho.getPayUserId()));
|
|
|
payRecord.setPayPrice(BigDecimal.valueOf(totalfee));
|
|
|
payRecord.setIsSuccess(1);
|
|
|
payRecord.setRemark("新订单");
|
|
|
- boolean a=payRecordService.save(payRecord);
|
|
|
- if (!a){
|
|
|
+ boolean a = payRecordService.save(payRecord);
|
|
|
+ if (!a) {
|
|
|
return CommonResult.fail("创建支付订单失败");
|
|
|
}
|
|
|
}
|
|
|
@@ -1789,13 +1790,13 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
// jsapi支付
|
|
|
//获取openid
|
|
|
String tokenUrl = "https://api.weixin.qq.com/sns/oauth2/access_token";
|
|
|
- tokenUrl=tokenUrl+"?code="+wxCode+"&appid="+wxPayV3Config.getAppId()+"&secret="+wxPayV3Config.getSecret()+"&grant_type=authorization_code";
|
|
|
+ tokenUrl = tokenUrl + "?code=" + wxCode + "&appid=" + wxPayV3Config.getAppId() + "&secret=" + wxPayV3Config.getSecret() + "&grant_type=authorization_code";
|
|
|
RestTemplate client = new RestTemplate();
|
|
|
String tokenResponse = client.postForObject(tokenUrl, null, String.class);
|
|
|
- log.info("获取openid结果"+tokenResponse);
|
|
|
- JSONObject jsonObject1 =JSONObject.parseObject(tokenResponse);
|
|
|
+ log.info("获取openid结果" + tokenResponse);
|
|
|
+ JSONObject jsonObject1 = JSONObject.parseObject(tokenResponse);
|
|
|
String openId = (String) jsonObject1.getString("openid");
|
|
|
- if(openId==null||openId==""){
|
|
|
+ if (openId == null || openId == "") {
|
|
|
return CommonResult.fail("openid查询失败");
|
|
|
}
|
|
|
// String openId = "okdUu5xZ2ICm3RuMUHbpJi4DUyzw";
|
|
|
@@ -1805,30 +1806,30 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
requestpay.setDescription("智慧公寓");
|
|
|
Amount amount2 = new Amount();
|
|
|
amount2.setTotal(totalfee);
|
|
|
- requestpay.setNotifyUrl(wxPayV3Config.getDomain()+"/auto/house-order/returnPay");
|
|
|
+ requestpay.setNotifyUrl(wxPayV3Config.getDomain() + "/auto/house-order/returnPay");
|
|
|
requestpay.setAmount(amount2);
|
|
|
- Payer payer1=new Payer();
|
|
|
+ Payer payer1 = new Payer();
|
|
|
payer1.setOpenid(openId);
|
|
|
requestpay.setPayer(payer1);
|
|
|
// requestpay.setOutTradeNo(TimeExchange.DateToTimestamp(new Date())+"");
|
|
|
requestpay.setOutTradeNo(payRecord.getPayNo());
|
|
|
Config config = new RSAAutoCertificateConfig.Builder()
|
|
|
- .merchantId( wxPayV3Config.getMchId())
|
|
|
- .privateKeyFromPath(wxPayV3Config.getKeyPath())
|
|
|
- .merchantSerialNumber(wxPayV3Config.getSerialNum())
|
|
|
- .apiV3Key(wxPayV3Config.getApiKey3())
|
|
|
- .build();
|
|
|
- JsapiServiceExtension service =new JsapiServiceExtension.Builder()
|
|
|
+ .merchantId(wxPayV3Config.getMchId())
|
|
|
+ .privateKeyFromPath(wxPayV3Config.getKeyPath())
|
|
|
+ .merchantSerialNumber(wxPayV3Config.getSerialNum())
|
|
|
+ .apiV3Key(wxPayV3Config.getApiKey3())
|
|
|
+ .build();
|
|
|
+ JsapiServiceExtension service = new JsapiServiceExtension.Builder()
|
|
|
.config(config)
|
|
|
.signType("RSA") // 不填默认为RSA
|
|
|
.build();
|
|
|
|
|
|
- PrepayWithRequestPaymentResponse responseSdk= null;
|
|
|
+ PrepayWithRequestPaymentResponse responseSdk = null;
|
|
|
try {
|
|
|
responseSdk = service.prepayWithRequestPayment(requestpay);
|
|
|
- log.info("请求支付参数返回:"+responseSdk.toString());
|
|
|
+ log.info("请求支付参数返回:" + responseSdk.toString());
|
|
|
} catch (Exception e) {
|
|
|
- log.info("请求支付异常返回:"+e);
|
|
|
+ log.info("请求支付异常返回:" + e);
|
|
|
return CommonResult.ok(e.getMessage());
|
|
|
}
|
|
|
return CommonResult.ok(responseSdk);
|
|
|
@@ -1843,16 +1844,16 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = {Exception.class})
|
|
|
- public CommonResult queryOrderById(String outTradeNo) throws Exception{
|
|
|
- Transaction transaction= new Transaction();
|
|
|
- HouseOrder one = houseOrderService.getOne(new QueryWrapper<HouseOrder>().eq("order_number",outTradeNo));
|
|
|
- if("2".equals(one.getOrderStatus())&&"2".equals(one.getPayType())){
|
|
|
+ public CommonResult queryOrderById(String outTradeNo) throws Exception {
|
|
|
+ Transaction transaction = new Transaction();
|
|
|
+ HouseOrder one = houseOrderService.getOne(new QueryWrapper<HouseOrder>().eq("order_number", outTradeNo));
|
|
|
+ if ("2".equals(one.getOrderStatus()) && "2".equals(one.getPayType())) {
|
|
|
transaction.setTradeState(SUCCESS);
|
|
|
transaction.setTradeStateDesc("现金支付完成");
|
|
|
return CommonResult.ok(transaction);
|
|
|
}
|
|
|
- PayRecord payRecord=payRecordService.getOne(new QueryWrapper<PayRecord>().eq("house_order_id",one.getId()));
|
|
|
- if(payRecord==null||payRecord.getPayNo()==null){
|
|
|
+ PayRecord payRecord = payRecordService.getOne(new QueryWrapper<PayRecord>().eq("house_order_id", one.getId()));
|
|
|
+ if (payRecord == null || payRecord.getPayNo() == null) {
|
|
|
transaction.setTradeState(NOTPAY);
|
|
|
transaction.setTradeStateDesc("该订单尚未支付");
|
|
|
return CommonResult.ok(transaction);
|
|
|
@@ -1863,22 +1864,22 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
queryOrderByIdRequest.setOutTradeNo(payRecord.getPayNo());
|
|
|
// 调用接口
|
|
|
// JsapiService service = new JsapiService.Builder().config(config).build();
|
|
|
- log.info("微信支付查询订单入参:"+queryOrderByIdRequest.toString());
|
|
|
+ log.info("微信支付查询订单入参:" + queryOrderByIdRequest.toString());
|
|
|
Config config =
|
|
|
new RSAAutoCertificateConfig.Builder()
|
|
|
- .merchantId( wxPayV3Config.getMchId())
|
|
|
+ .merchantId(wxPayV3Config.getMchId())
|
|
|
.privateKeyFromPath(wxPayV3Config.getKeyPath())
|
|
|
.merchantSerialNumber(wxPayV3Config.getSerialNum())
|
|
|
.apiV3Key(wxPayV3Config.getApiKey3())
|
|
|
.build();
|
|
|
- JsapiServiceExtension service =new JsapiServiceExtension.Builder()
|
|
|
+ JsapiServiceExtension service = new JsapiServiceExtension.Builder()
|
|
|
.config(config)
|
|
|
.signType("RSA") // 不填默认为RSA
|
|
|
.build();
|
|
|
|
|
|
try {
|
|
|
transaction = service.queryOrderByOutTradeNo(queryOrderByIdRequest);
|
|
|
- switch (transaction.getTradeState()){
|
|
|
+ switch (transaction.getTradeState()) {
|
|
|
case SUCCESS:
|
|
|
payRecord.setIsSuccess(2);
|
|
|
payRecord.setRemark(transaction.getTradeStateDesc());
|
|
|
@@ -1889,12 +1890,12 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
payRecord.setIsSuccess(3);
|
|
|
break;
|
|
|
}
|
|
|
- boolean a=houseOrderService.updateById(one);
|
|
|
- boolean b=payRecordService.updateById(payRecord);
|
|
|
- if (!a||!b){
|
|
|
+ boolean a = houseOrderService.updateById(one);
|
|
|
+ boolean b = payRecordService.updateById(payRecord);
|
|
|
+ if (!a || !b) {
|
|
|
throw new Exception("更新支付状态失败");
|
|
|
}
|
|
|
- log.info("微信支付查询订单出参:"+transaction.toString());
|
|
|
+ log.info("微信支付查询订单出参:" + transaction.toString());
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
return CommonResult.fail(e.getMessage());
|
|
|
@@ -1912,21 +1913,21 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = {Exception.class})
|
|
|
public CommonResult closeOrder(String outTradeNo) {
|
|
|
- HouseOrder one = houseOrderService.getOne(new QueryWrapper<HouseOrder>().eq("order_number",outTradeNo));
|
|
|
- PayRecord payRecord=payRecordService.getOne(new QueryWrapper<PayRecord>().eq("house_order_id",one.getId()));
|
|
|
- if(payRecord==null){
|
|
|
+ HouseOrder one = houseOrderService.getOne(new QueryWrapper<HouseOrder>().eq("order_number", outTradeNo));
|
|
|
+ PayRecord payRecord = payRecordService.getOne(new QueryWrapper<PayRecord>().eq("house_order_id", one.getId()));
|
|
|
+ if (payRecord == null) {
|
|
|
return CommonResult.ok("没有可关闭支付订单,无需关闭");
|
|
|
}
|
|
|
try {
|
|
|
this.closeOrderById(payRecord.getPayNo());
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
- return CommonResult.fail("关闭订单失败"+e.getMessage());
|
|
|
+ return CommonResult.fail("关闭订单失败" + e.getMessage());
|
|
|
}
|
|
|
return CommonResult.ok("关闭成功");
|
|
|
}
|
|
|
|
|
|
- public void closeOrderById(String outTradeNo) throws Exception{
|
|
|
+ public void closeOrderById(String outTradeNo) throws Exception {
|
|
|
|
|
|
CloseOrderRequest closeOrderRequest = new CloseOrderRequest();
|
|
|
// 调用request.setXxx(val)设置所需参数,具体参数可见Request定义
|
|
|
@@ -1934,20 +1935,21 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
closeOrderRequest.setOutTradeNo(outTradeNo);
|
|
|
// 调用接口
|
|
|
// JsapiService service = new JsapiService.Builder().config(config).build();
|
|
|
- log.info("微信支付关闭订单入参:"+closeOrderRequest.toString());
|
|
|
+ log.info("微信支付关闭订单入参:" + closeOrderRequest.toString());
|
|
|
Config config =
|
|
|
new RSAAutoCertificateConfig.Builder()
|
|
|
- .merchantId( wxPayV3Config.getMchId())
|
|
|
+ .merchantId(wxPayV3Config.getMchId())
|
|
|
.privateKeyFromPath(wxPayV3Config.getKeyPath())
|
|
|
.merchantSerialNumber(wxPayV3Config.getSerialNum())
|
|
|
.apiV3Key(wxPayV3Config.getApiKey3())
|
|
|
.build();
|
|
|
- JsapiServiceExtension service =new JsapiServiceExtension.Builder()
|
|
|
+ JsapiServiceExtension service = new JsapiServiceExtension.Builder()
|
|
|
.config(config)
|
|
|
.signType("RSA") // 不填默认为RSA
|
|
|
.build();
|
|
|
service.closeOrder(closeOrderRequest);
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* 支付成功后回调,推送消息给商家
|
|
|
*
|
|
|
@@ -1980,9 +1982,9 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
try {
|
|
|
// 以支付通知回调为例,验签、解密并转换成 Transaction
|
|
|
Transaction transaction = parser.parse(requestParam, Transaction.class);
|
|
|
- PayRecord payRecord=payRecordService.getOne(new QueryWrapper<PayRecord>().eq("pay_no",transaction.getOutTradeNo()));
|
|
|
+ PayRecord payRecord = payRecordService.getOne(new QueryWrapper<PayRecord>().eq("pay_no", transaction.getOutTradeNo()));
|
|
|
HouseOrder one = houseOrderService.getById(payRecord.getHouseOrderId());
|
|
|
- switch (transaction.getTradeState()){
|
|
|
+ switch (transaction.getTradeState()) {
|
|
|
case SUCCESS:
|
|
|
payRecord.setIsSuccess(2);
|
|
|
payRecord.setRemark(transaction.getTradeStateDesc());
|
|
|
@@ -1996,12 +1998,12 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
payRecord.setRemark(transaction.getTradeStateDesc());
|
|
|
break;
|
|
|
}
|
|
|
- boolean a=houseOrderService.updateById(one);
|
|
|
- boolean b=payRecordService.updateById(payRecord);
|
|
|
- if (!a||!b){
|
|
|
+ boolean a = houseOrderService.updateById(one);
|
|
|
+ boolean b = payRecordService.updateById(payRecord);
|
|
|
+ if (!a || !b) {
|
|
|
throw new Exception("更新支付状态失败");
|
|
|
}
|
|
|
- log.info("支付回调请求返回"+transaction.toString());
|
|
|
+ log.info("支付回调请求返回" + transaction.toString());
|
|
|
//回调成功业务没写
|
|
|
} catch (Exception e) {
|
|
|
// 签名验证失败,返回 401 UNAUTHORIZED 状态码
|
|
|
@@ -2343,7 +2345,7 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
houseOrder.setCancelTime(new Date());
|
|
|
|
|
|
//现金支付直接修改未已退款
|
|
|
- if("2".equals(houseOrder.getPayType())){
|
|
|
+ if ("2".equals(houseOrder.getPayType())) {
|
|
|
houseOrder.setOrderStatus("9");
|
|
|
houseOrderService.updateById(houseOrder);
|
|
|
houseNumberStateService.removeById(houseNumberState);
|
|
|
@@ -2391,20 +2393,20 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
throw new Exception("退款失败!");
|
|
|
}
|
|
|
}
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
// 当有金额需要退款时,状态不变,等收到回调后在改变
|
|
|
houseOrder.setOrderStatus(houseOrder.getOrderStatus());
|
|
|
- PayRecord payRecord= payRecordService.getOne(new QueryWrapper<PayRecord>().eq("house_order_id", houseOrder.getId()));
|
|
|
+ PayRecord payRecord = payRecordService.getOne(new QueryWrapper<PayRecord>().eq("house_order_id", houseOrder.getId()));
|
|
|
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
//商户订单号;
|
|
|
- jsonObject.put("out_trade_no", payRecord.getPayNo()==null?orderNumber:payRecord.getPayNo());
|
|
|
+ jsonObject.put("out_trade_no", payRecord.getPayNo() == null ? orderNumber : payRecord.getPayNo());
|
|
|
//商户退款单号
|
|
|
jsonObject.put("out_refund_no", refund_no);
|
|
|
//退款原因
|
|
|
jsonObject.put("reason", "取消入住");
|
|
|
// 退款结果回调url todo
|
|
|
- jsonObject.put("notify_url", wxPayV3Config.getDomain()+"/auto/house-order/returnRefund");
|
|
|
+ jsonObject.put("notify_url", wxPayV3Config.getDomain() + "/auto/house-order/returnRefund");
|
|
|
// 订单金额信息
|
|
|
JSONObject amount = new JSONObject();
|
|
|
// 退款金额
|
|
|
@@ -2424,15 +2426,15 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
wxPayV3Config.getSerialNum(),
|
|
|
wxPayV3Config.getKeyPath(),
|
|
|
JSONObject.toJSONString(jsonObject));
|
|
|
- log.info("退款签名值"+authStr);
|
|
|
+ log.info("退款签名值" + authStr);
|
|
|
httpHeaders.add("Accept", "application/json");
|
|
|
httpHeaders.add("Authorization", authStr);
|
|
|
// httpHeaders.add("User-Agent", "WeChatPay-HttpClient/null (Windows 10/10.0) Java/1.8.0_171");
|
|
|
httpHeaders.add("Content-Type", "application/json");
|
|
|
HttpEntity<JSONObject> fromEntity = new HttpEntity<>(jsonObject, httpHeaders);
|
|
|
- log.info("退款请求入参"+fromEntity.toString());
|
|
|
+ log.info("退款请求入参" + fromEntity.toString());
|
|
|
String msg = client.postForObject("https://api.mch.weixin.qq.com/v3/refund/domestic/refunds", fromEntity, String.class);
|
|
|
- log.info("退款请求出参"+msg);
|
|
|
+ log.info("退款请求出参" + msg);
|
|
|
|
|
|
JSONObject h5Refund = JSONObject.parseObject(msg);
|
|
|
|
|
|
@@ -2443,7 +2445,7 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
rpr.setUserId(Integer.valueOf(houseOrder.getReserveUserId()));
|
|
|
rpr.setRefundPrice(new BigDecimal(total).divide(new BigDecimal("100")).setScale(2));
|
|
|
rpr.setIsSuccess(0);
|
|
|
- rpr.setRemark("发起微信支付退款金额:"+total+"- "+TimeExchange.getTime());
|
|
|
+ rpr.setRemark("发起微信支付退款金额:" + total + "- " + TimeExchange.getTime());
|
|
|
houseOrder.setOrderStatus("6");
|
|
|
houseOrderService.updateById(houseOrder);
|
|
|
refundRecordService.updateById(rpr);
|
|
|
@@ -2480,12 +2482,12 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
//解析成json
|
|
|
JSONObject data = JSONObject.parseObject(notityXml);
|
|
|
//判断 支付是否成功
|
|
|
- log.info("退款回调入参"+timestamp+"==="+nonce+"===="+serialNo+"======"+signature+"======="+notityXml);
|
|
|
+ log.info("退款回调入参" + timestamp + "===" + nonce + "====" + serialNo + "======" + signature + "=======" + notityXml);
|
|
|
if ("REFUND.SUCCESS".equals(data.get("event_type"))) {
|
|
|
|
|
|
String plainText = WechatPayV3Util.verifyNotify(serialNo, notityXml, signature, nonce, timestamp,
|
|
|
wxPayV3Config.getApiKey3(), wxPayV3Config.getPlatformCertPath());
|
|
|
- log.info("退款回调明文"+plainText);
|
|
|
+ log.info("退款回调明文" + plainText);
|
|
|
// 在这里处理接收到的支付结果通知数据
|
|
|
JSONObject resourceMap = JSONObject.parseObject(plainText);
|
|
|
// 获取 trade_state 值
|
|
|
@@ -2508,49 +2510,48 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
//业务逻辑------------
|
|
|
LambdaQueryWrapper<HouseOrder> wrapperHo = new LambdaQueryWrapper<>();
|
|
|
wrapperHo.eq(HouseOrder::getOrderNumber, outTradeNo);
|
|
|
- PayRecord payRecord=payRecordService.getOne(new QueryWrapper<PayRecord>().eq("pay_no",outTradeNo));
|
|
|
+ PayRecord payRecord = payRecordService.getOne(new QueryWrapper<PayRecord>().eq("pay_no", outTradeNo));
|
|
|
HouseOrder rr = houseOrderService.getById(payRecord.getHouseOrderId());
|
|
|
LambdaQueryWrapper<RefundRecord> wrapperRr = new LambdaQueryWrapper<>();
|
|
|
wrapperRr.eq(RefundRecord::getHouseOrderId, rr.getId());
|
|
|
RefundRecord rpr = refundRecordService.getOne(wrapperRr);
|
|
|
if (tradeState.equals("SUCCESS")) {
|
|
|
if (rpr == null) {
|
|
|
- // 保存支付信息
|
|
|
- rpr = new RefundRecord();
|
|
|
- rpr.setHouseOrderId(rr.getId());
|
|
|
- rpr.setUserId(Integer.valueOf(rr.getReserveUserId()));
|
|
|
- rpr.setRefundNo(outRefundNo);
|
|
|
- rpr.setWxNo(refundId);
|
|
|
- System.out.println("回调的金额:" + total_fee);
|
|
|
- rpr.setRefundPrice(new BigDecimal(total_fee).divide(new BigDecimal("100")).setScale(2));
|
|
|
- rpr.setIsSuccess(1);
|
|
|
- rpr.setRemark("微信支付退款成功");
|
|
|
- Boolean insertRpr = refundRecordService.save(rpr);
|
|
|
- if (!insertRpr) {
|
|
|
- response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
|
|
- JSONObject jsonObject = new JSONObject();
|
|
|
- jsonObject.put("code", "FAIL");
|
|
|
- jsonObject.put("message", "失败");
|
|
|
- response.getWriter().write(jsonObject.toJSONString());
|
|
|
- }
|
|
|
-
|
|
|
- } else if (rpr.getIsSuccess() != ePayStatu.Paysuccess.getValue()) {
|
|
|
- rpr.setRefundNo(outRefundNo);
|
|
|
- rpr.setWxNo(refundId);
|
|
|
- System.out.println("回调的金额:" + total_fee);
|
|
|
- rpr.setRefundPrice(new BigDecimal(total_fee).divide(new BigDecimal("100")).setScale(2));
|
|
|
- rpr.setIsSuccess(1);
|
|
|
- rpr.setRemark(rpr.getRemark()+"|微信支付退款成功金额:"+total_fee+"--"+TimeExchange.getTime());
|
|
|
- Boolean updateRpr = refundRecordService.updateById(rpr);
|
|
|
- if (!updateRpr) {
|
|
|
- response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
|
|
- JSONObject jsonObject = new JSONObject();
|
|
|
- jsonObject.put("code", "FAIL");
|
|
|
- jsonObject.put("message", "失败");
|
|
|
- response.getWriter().write(jsonObject.toJSONString());
|
|
|
- }
|
|
|
+ // 保存支付信息
|
|
|
+ rpr = new RefundRecord();
|
|
|
+ rpr.setHouseOrderId(rr.getId());
|
|
|
+ rpr.setUserId(Integer.valueOf(rr.getReserveUserId()));
|
|
|
+ rpr.setRefundNo(outRefundNo);
|
|
|
+ rpr.setWxNo(refundId);
|
|
|
+ System.out.println("回调的金额:" + total_fee);
|
|
|
+ rpr.setRefundPrice(new BigDecimal(total_fee).divide(new BigDecimal("100")).setScale(2));
|
|
|
+ rpr.setIsSuccess(1);
|
|
|
+ rpr.setRemark("微信支付退款成功");
|
|
|
+ Boolean insertRpr = refundRecordService.save(rpr);
|
|
|
+ if (!insertRpr) {
|
|
|
+ response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
+ jsonObject.put("code", "FAIL");
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ response.getWriter().write(jsonObject.toJSONString());
|
|
|
}
|
|
|
|
|
|
+ } else if (rpr.getIsSuccess() != ePayStatu.Paysuccess.getValue()) {
|
|
|
+ rpr.setRefundNo(outRefundNo);
|
|
|
+ rpr.setWxNo(refundId);
|
|
|
+ System.out.println("回调的金额:" + total_fee);
|
|
|
+ rpr.setRefundPrice(new BigDecimal(total_fee).divide(new BigDecimal("100")).setScale(2));
|
|
|
+ rpr.setIsSuccess(1);
|
|
|
+ rpr.setRemark(rpr.getRemark() + "|微信支付退款成功金额:" + total_fee + "--" + TimeExchange.getTime());
|
|
|
+ Boolean updateRpr = refundRecordService.updateById(rpr);
|
|
|
+ if (!updateRpr) {
|
|
|
+ response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
+ jsonObject.put("code", "FAIL");
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ response.getWriter().write(jsonObject.toJSONString());
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
|
|
|
// 订单状态
|
|
|
@@ -2573,11 +2574,11 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
jsonObject.put("message", "SUCCESS");
|
|
|
response.getWriter().write(jsonObject.toJSONString());
|
|
|
} else {
|
|
|
- if (rpr!=null){
|
|
|
+ if (rpr != null) {
|
|
|
rpr.setRefundNo(outRefundNo);
|
|
|
rpr.setWxNo(refundId);
|
|
|
rpr.setIsSuccess(2);
|
|
|
- rpr.setRemark(rpr.getRemark()+"|微信支付退款失败:"+tradeState+"--"+TimeExchange.getTime());
|
|
|
+ rpr.setRemark(rpr.getRemark() + "|微信支付退款失败:" + tradeState + "--" + TimeExchange.getTime());
|
|
|
|
|
|
}
|
|
|
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
|
|
@@ -2607,61 +2608,61 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
@Override
|
|
|
public CommonResult payOrderPrice(HouseOrderPriceDto houseOrderPriceDto) {
|
|
|
Double price = houseOrderPriceDto.getPrice();
|
|
|
- String payType =houseOrderPriceDto.getPayType()+"";
|
|
|
- if (price<=0) {
|
|
|
+ String payType = houseOrderPriceDto.getPayType() + "";
|
|
|
+ if (price <= 0) {
|
|
|
return CommonResult.fail("金额异常");
|
|
|
}
|
|
|
- if(!StringUtils.hasText(payType)){
|
|
|
+ if (!StringUtils.hasText(payType)) {
|
|
|
return CommonResult.fail("支付类型异常");
|
|
|
}
|
|
|
|
|
|
String orderNumber = houseOrderPriceDto.getOrderNumber();
|
|
|
|
|
|
- LambdaQueryWrapper<HouseOrder> wrapper=new LambdaQueryWrapper<>();
|
|
|
- wrapper.eq(HouseOrder::getOrderNumber,orderNumber);
|
|
|
+ LambdaQueryWrapper<HouseOrder> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(HouseOrder::getOrderNumber, orderNumber);
|
|
|
HouseOrder one = houseOrderService.getOne(wrapper);
|
|
|
one.setPayPrice(BigDecimal.valueOf(price));
|
|
|
one.setPayType(payType);
|
|
|
- if(!"1".equals(one.getOrderStatus())){
|
|
|
+ if (!"1".equals(one.getOrderStatus())) {
|
|
|
return CommonResult.fail("订单状态不为待支付");
|
|
|
}
|
|
|
//查询是否有未支付订单,有则调用关闭更新支付订单号重新生成支付订单
|
|
|
List<PayRecord> houseOrderId = payRecordService.list(new QueryWrapper<PayRecord>().eq("house_order_id", one.getId()));
|
|
|
//现金支付流程
|
|
|
- if("2".equals(payType)){
|
|
|
- if(houseOrderId.size()>0){
|
|
|
+ if ("2".equals(payType)) {
|
|
|
+ if (houseOrderId.size() > 0) {
|
|
|
try {
|
|
|
this.closeOrderById(houseOrderId.get(0).getPayNo());
|
|
|
} catch (Exception e) {
|
|
|
- return CommonResult.fail("关闭已生成支付订单失败返回,请查询订单支付状态:"+e.getMessage());
|
|
|
+ return CommonResult.fail("关闭已生成支付订单失败返回,请查询订单支付状态:" + e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
one.setOrderStatus("2");
|
|
|
- boolean oneFlag=houseOrderService.updateById(one);
|
|
|
- if(!oneFlag){
|
|
|
+ boolean oneFlag = houseOrderService.updateById(one);
|
|
|
+ if (!oneFlag) {
|
|
|
return CommonResult.fail("订单现金支付失败");
|
|
|
}
|
|
|
return CommonResult.ok("订单现金支付完成");
|
|
|
}
|
|
|
- boolean oneFlag=houseOrderService.updateById(one);
|
|
|
- if(!oneFlag){
|
|
|
+ boolean oneFlag = houseOrderService.updateById(one);
|
|
|
+ if (!oneFlag) {
|
|
|
return CommonResult.fail("订单价格修改失败");
|
|
|
}
|
|
|
- PayRecord payRecord=houseOrderId.size()>0?houseOrderId.get(0):new PayRecord();
|
|
|
- if (StringUtils.hasText(payRecord.getPayNo())){
|
|
|
+ PayRecord payRecord = houseOrderId.size() > 0 ? houseOrderId.get(0) : new PayRecord();
|
|
|
+ if (StringUtils.hasText(payRecord.getPayNo())) {
|
|
|
try {
|
|
|
this.closeOrderById(payRecord.getPayNo());
|
|
|
} catch (Exception e) {
|
|
|
- return CommonResult.fail("关闭已生成支付订单失败返回:"+e.getMessage());
|
|
|
+ return CommonResult.fail("关闭已生成支付订单失败返回:" + e.getMessage());
|
|
|
}
|
|
|
payRecord.setPayPrice(BigDecimal.valueOf(price));
|
|
|
payRecord.setPayNo(CommonUtil.generateUUID());
|
|
|
payRecord.setRemark("更新订单");
|
|
|
payRecordService.updateById(payRecord);
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
payRecord.setPayNo(CommonUtil.generateUUID());
|
|
|
payRecord.setHouseOrderId(one.getId());
|
|
|
- payRecord.setUserId(StringUtils.hasText(one.getPayUserId())?Integer.valueOf(one.getPayUserId()):0);
|
|
|
+ payRecord.setUserId(StringUtils.hasText(one.getPayUserId()) ? Integer.valueOf(one.getPayUserId()) : 0);
|
|
|
payRecord.setPayPrice(BigDecimal.valueOf(price));
|
|
|
payRecord.setIsSuccess(1);
|
|
|
payRecord.setRemark("新订单");
|
|
|
@@ -2682,15 +2683,15 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
request.setAppid(wxPayV3Config.getAppId());
|
|
|
request.setMchid(wxPayV3Config.getMchId());
|
|
|
request.setDescription("测试商品标题");
|
|
|
- amount.setTotal((int) (price*100));
|
|
|
+ amount.setTotal((int) (price * 100));
|
|
|
request.setAmount(amount);
|
|
|
request.setOutTradeNo(payRecord.getPayNo());
|
|
|
- request.setNotifyUrl(wxPayV3Config.getDomain()+"/auto/house-order/returnPay");
|
|
|
+ request.setNotifyUrl(wxPayV3Config.getDomain() + "/auto/house-order/returnPay");
|
|
|
// 调用下单方法,得到应答
|
|
|
com.wechat.pay.java.service.payments.nativepay.model.PrepayResponse response = null;
|
|
|
try {
|
|
|
response = service.prepay(request);
|
|
|
- log.info("CodeUrl()========"+response.getCodeUrl());
|
|
|
+ log.info("CodeUrl()========" + response.getCodeUrl());
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
return CommonResult.fail(e.getMessage());
|
|
|
@@ -2700,53 +2701,53 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
|
|
|
@Override
|
|
|
public CommonResult queryRefundById(String refundNo) {
|
|
|
- Refund refund= new Refund();
|
|
|
- Map<String,Object> result=new HashMap<>();
|
|
|
+ Refund refund = new Refund();
|
|
|
+ Map<String, Object> result = new HashMap<>();
|
|
|
HouseOrder one = houseOrderService.getById(refundNo);
|
|
|
- RefundRecord reFundRecord=refundRecordService.getOne(new QueryWrapper<RefundRecord>().eq("house_order_id",refundNo));
|
|
|
- if(reFundRecord==null||reFundRecord.getId()==null){
|
|
|
- result.put("code","1001");
|
|
|
- result.put("message","该订单没有退款记录");
|
|
|
+ RefundRecord reFundRecord = refundRecordService.getOne(new QueryWrapper<RefundRecord>().eq("house_order_id", refundNo));
|
|
|
+ if (reFundRecord == null || reFundRecord.getId() == null) {
|
|
|
+ result.put("code", "1001");
|
|
|
+ result.put("message", "该订单没有退款记录");
|
|
|
one.setOrderStatus("9");
|
|
|
one.setRefundTime(new Date());
|
|
|
houseOrderService.updateById(one);
|
|
|
return CommonResult.ok(result);
|
|
|
}
|
|
|
- if(reFundRecord.getIsSuccess()==1){
|
|
|
- result.put("code","200");
|
|
|
- result.put("message","退款已完成");
|
|
|
+ if (reFundRecord.getIsSuccess() == 1) {
|
|
|
+ result.put("code", "200");
|
|
|
+ result.put("message", "退款已完成");
|
|
|
one.setOrderStatus("9");
|
|
|
one.setRefundTime(new Date());
|
|
|
houseOrderService.updateById(one);
|
|
|
return CommonResult.ok(result);
|
|
|
}
|
|
|
- if(reFundRecord.getIsSuccess()==2){
|
|
|
- result.put("code","1002");
|
|
|
- result.put("message","退款失败,原因:"+reFundRecord.getRemark());
|
|
|
+ if (reFundRecord.getIsSuccess() == 2) {
|
|
|
+ result.put("code", "1002");
|
|
|
+ result.put("message", "退款失败,原因:" + reFundRecord.getRemark());
|
|
|
//失败不更新订房单
|
|
|
return CommonResult.ok(result);
|
|
|
}
|
|
|
//退款中状态去微信查
|
|
|
- if(reFundRecord.getIsSuccess()==0){
|
|
|
+ if (reFundRecord.getIsSuccess() == 0) {
|
|
|
QueryByOutRefundNoRequest queryByOutRefundNoRequest = new QueryByOutRefundNoRequest();
|
|
|
// 调用request.setXxx(val)设置所需参数,具体参数可见Request定义
|
|
|
// queryOrderByIdRequest.setSubMchid(wxPayV3Config.getMchId());
|
|
|
queryByOutRefundNoRequest.setOutRefundNo(reFundRecord.getRefundNo());
|
|
|
- log.info("微信支付查询订单入参:"+queryByOutRefundNoRequest.toString());
|
|
|
+ log.info("微信支付查询订单入参:" + queryByOutRefundNoRequest.toString());
|
|
|
Config config =
|
|
|
new RSAAutoCertificateConfig.Builder()
|
|
|
- .merchantId( wxPayV3Config.getMchId())
|
|
|
+ .merchantId(wxPayV3Config.getMchId())
|
|
|
.privateKeyFromPath(wxPayV3Config.getKeyPath())
|
|
|
.merchantSerialNumber(wxPayV3Config.getSerialNum())
|
|
|
.apiV3Key(wxPayV3Config.getApiKey3())
|
|
|
.build();
|
|
|
- RefundService service =new RefundService.Builder()
|
|
|
+ RefundService service = new RefundService.Builder()
|
|
|
.config(config)
|
|
|
.build();
|
|
|
try {
|
|
|
refund = service.queryByOutRefundNo(queryByOutRefundNoRequest);
|
|
|
- log.info("微信退款查询订单出参:"+refund.toString());
|
|
|
- switch (refund.getStatus()){
|
|
|
+ log.info("微信退款查询订单出参:" + refund.toString());
|
|
|
+ switch (refund.getStatus()) {
|
|
|
case SUCCESS:
|
|
|
one.setOrderStatus("9");
|
|
|
one.setRefundTime(new Date());
|
|
|
@@ -2754,34 +2755,34 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
reFundRecord.setWxNo(refund.getRefundId());
|
|
|
reFundRecord.setRefundPrice(new BigDecimal(refund.getAmount().getPayerRefund()).divide(new BigDecimal("100")).setScale(2));
|
|
|
reFundRecord.setIsSuccess(1);
|
|
|
- reFundRecord.setRemark(reFundRecord.getRemark()+"|微信支付退款成功金额:"+refund.getAmount().getPayerRefund()+"--"+TimeExchange.getTime()+"-"+refund.getUserReceivedAccount());
|
|
|
- result.put("code","200");
|
|
|
- result.put("message","退款成功");
|
|
|
+ reFundRecord.setRemark(reFundRecord.getRemark() + "|微信支付退款成功金额:" + refund.getAmount().getPayerRefund() + "--" + TimeExchange.getTime() + "-" + refund.getUserReceivedAccount());
|
|
|
+ result.put("code", "200");
|
|
|
+ result.put("message", "退款成功");
|
|
|
break;
|
|
|
case PROCESSING:
|
|
|
- result.put("code","1003");
|
|
|
- result.put("message","退款处理中,请稍后再查询:"+reFundRecord.getRemark());
|
|
|
+ result.put("code", "1003");
|
|
|
+ result.put("message", "退款处理中,请稍后再查询:" + reFundRecord.getRemark());
|
|
|
break;
|
|
|
case CLOSED:
|
|
|
one.setOrderStatus("9");
|
|
|
one.setRefundTime(new Date());
|
|
|
reFundRecord.setIsSuccess(2);
|
|
|
- reFundRecord.setRemark(reFundRecord.getRemark()+"|退款处理失败,退款订单被关闭,联系商户处理:"+TimeExchange.getTime());
|
|
|
- result.put("code","1004");
|
|
|
- result.put("message","退款处理失败,退款订单被关闭,联系商户处理");
|
|
|
+ reFundRecord.setRemark(reFundRecord.getRemark() + "|退款处理失败,退款订单被关闭,联系商户处理:" + TimeExchange.getTime());
|
|
|
+ result.put("code", "1004");
|
|
|
+ result.put("message", "退款处理失败,退款订单被关闭,联系商户处理");
|
|
|
break;
|
|
|
case ABNORMAL:
|
|
|
reFundRecord.setIsSuccess(2);
|
|
|
one.setOrderStatus("9");
|
|
|
one.setRefundTime(new Date());
|
|
|
- reFundRecord.setRemark(reFundRecord.getRemark()+"|退款处理失败,退款异常,联系商户处理:"+TimeExchange.getTime());
|
|
|
- result.put("code","1005");
|
|
|
- result.put("message","退款处理失败,退款异常,联系商户处理");
|
|
|
+ reFundRecord.setRemark(reFundRecord.getRemark() + "|退款处理失败,退款异常,联系商户处理:" + TimeExchange.getTime());
|
|
|
+ result.put("code", "1005");
|
|
|
+ result.put("message", "退款处理失败,退款异常,联系商户处理");
|
|
|
break;
|
|
|
}
|
|
|
- boolean a=houseOrderService.updateById(one);
|
|
|
- boolean b=refundRecordService.updateById(reFundRecord);
|
|
|
- if (!a||!b){
|
|
|
+ boolean a = houseOrderService.updateById(one);
|
|
|
+ boolean b = refundRecordService.updateById(reFundRecord);
|
|
|
+ if (!a || !b) {
|
|
|
throw new Exception("更新支付状态失败");
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
@@ -2792,6 +2793,104 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
return CommonResult.ok(result);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public CommonResult appletReserveHour(String houseNumberId, String startTime, int liveTime) {
|
|
|
+ // 获取钟点房可用时间段
|
|
|
+ List<ApartmentSetting> list = apartmentSettingService.list(new LambdaQueryWrapper<>());
|
|
|
+ ApartmentSetting apartmentSetting = list.get(0);
|
|
|
+ String hourTime = apartmentSetting.getHourTime();
|
|
|
+
|
|
|
+ DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+ LocalDateTime start = LocalDateTime.parse(startTime, dateTimeFormatter1);
|
|
|
+
|
|
|
+ start = start.withSecond(0).withMinute(0);
|
|
|
+ LocalDateTime end = start.plusHours(liveTime);
|
|
|
+ String endTime = end.format(dateTimeFormatter1);
|
|
|
+ String[] split = hourTime.split(",");
|
|
|
+ ArrayList<AppletReserveDayVo> reserveDayVos = new ArrayList<>();
|
|
|
+ for (int i = 0; i < 13; i++) {
|
|
|
+ LocalDateTime localDateTime = null;
|
|
|
+ LocalDateTime localDateTime2 = null;
|
|
|
+ if (i == 0) {
|
|
|
+ localDateTime = LocalDateTime.parse(startTime, dateTimeFormatter1);
|
|
|
+ localDateTime2 = localDateTime.plusHours(liveTime);
|
|
|
+ } else {
|
|
|
+ localDateTime = start.plusHours(i);
|
|
|
+ localDateTime2 = end.plusHours(i);
|
|
|
+ }
|
|
|
+// LocalDateTime localDateTime = start.plusHours(i);
|
|
|
+// LocalDateTime localDateTime2 = end.plusHours(i);
|
|
|
+ AppletReserveDayVo reserveDayVo = new AppletReserveDayVo();
|
|
|
+// LocalDateTime localDateTime = start.plusHours(i);
|
|
|
+// LocalDateTime localDateTime2 = end.plusHours(i);
|
|
|
+ String format = localDateTime.format(dateTimeFormatter1);
|
|
|
+ String format2 = localDateTime2.format(dateTimeFormatter1);
|
|
|
+ reserveDayVo.setDate(format + "至" + format2);
|
|
|
+ reserveDayVo.setHourDate(format.split(" ")[1] + "至" + format2.split(" ")[1]);
|
|
|
+// 先判断时间是否在可用时间范围内
|
|
|
+ LocalDateTime start1 = localDateTime.withHour(23).withMinute(59).withSecond(59);
|
|
|
+ String format3 = start1.format(dateTimeFormatter1);
|
|
|
+
|
|
|
+ String[] s1 = format.split(" ");
|
|
|
+ String startStr = s1[0];
|
|
|
+
|
|
|
+ String[] s2 = format2.split(" ");
|
|
|
+ String endStr = s2[0];
|
|
|
+
|
|
|
+ Integer status = 1;
|
|
|
+ for (int j = 0; j < split.length; j++) {
|
|
|
+ String s = split[j];
|
|
|
+ String[] split1 = s.split("-");
|
|
|
+ String start2 = split1[0];
|
|
|
+ String end2 = split1[1];
|
|
|
+ String start3 = startStr + " " + start2;
|
|
|
+ String end3 = startStr + " " + end2;
|
|
|
+ LocalDateTime localStart = LocalDateTime.parse(start3, dateTimeFormatter1);
|
|
|
+ LocalDateTime localEnd = LocalDateTime.parse(end3, dateTimeFormatter1);
|
|
|
+
|
|
|
+// 该天最后时间小于结束时间则需要分为2个时间段
|
|
|
+ if (start1.isBefore(localDateTime2)) {
|
|
|
+ String start4 = endStr + " " + start2;
|
|
|
+ String end4 = endStr + " " + end2;
|
|
|
+ LocalDateTime localStart4 = LocalDateTime.parse(start4, dateTimeFormatter1);
|
|
|
+ LocalDateTime localEnd4 = LocalDateTime.parse(end4, dateTimeFormatter1);
|
|
|
+
|
|
|
+ if ((localStart.isBefore(localDateTime) || format.equals(start3)) && (start1.isBefore(localEnd) || format3.equals(end3)) && (localStart4.isBefore(start1) || start4.equals(format3)) && (start1.isBefore(localEnd4) || end4.equals(format3))) {
|
|
|
+// 可用
|
|
|
+ status = 2;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ if ((localStart.isBefore(localDateTime) || format.equals(start3)) && (localDateTime2.isBefore(localEnd) || format2.equals(end3))) {
|
|
|
+// 可用
|
|
|
+ status = 2;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if (status == 2) {
|
|
|
+ // 获取该时间段内的房态的使用情况
|
|
|
+ List<HouseNumberState> houseNumberStateList = houseNumberStateService.beBooked(houseNumberId, format, format2);
|
|
|
+ if (ObjectUtils.isNotEmpty(houseNumberStateList) && houseNumberStateList.size() > 0) {
|
|
|
+ reserveDayVo.setStatus("不可用");
|
|
|
+ } else {
|
|
|
+ reserveDayVo.setStatus("可用");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ reserveDayVo.setStatus("不可用");
|
|
|
+ }
|
|
|
+
|
|
|
+ reserveDayVos.add(reserveDayVo);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return CommonResult.ok(reserveDayVos);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
public static void main(String[] args) throws Exception {
|
|
|
// 获取签名
|
|
|
@@ -2800,11 +2899,10 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
// 时间戳
|
|
|
long timestamp = System.currentTimeMillis() / 1000;
|
|
|
// 构造签名串
|
|
|
- String qmc="GET"+"\n"
|
|
|
- +"/v3/pay/transactions/h5"+"\n"
|
|
|
- +timestamp+"\n"
|
|
|
- +nonceStr+"\n"
|
|
|
- ;
|
|
|
+ String qmc = "GET" + "\n"
|
|
|
+ + "/v3/pay/transactions/h5" + "\n"
|
|
|
+ + timestamp + "\n"
|
|
|
+ + nonceStr + "\n";
|
|
|
// 使用商户私钥对待签名串进行SHA256 with RSA签名,并对签名结果进行Base64编码得到签名值
|
|
|
Signature sign = Signature.getInstance("SHA256withRSA");
|
|
|
// sign.initSign(privateKey);
|
|
|
@@ -2813,12 +2911,9 @@ public class HouseOrderController implements HouseOrderAPI {
|
|
|
System.out.println("signature = " + signature);
|
|
|
|
|
|
|
|
|
-
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
/**
|
|
|
* 每天12点查询一次到时间没有点退房的订单,并自动退房
|
|
|
*/
|