|
@@ -163,7 +163,7 @@ public class TaOrgOrderServiceImpl extends ServiceImpl<TaOrgOrderMapper, TaOrgOr
|
163
|
163
|
WXPay wxpay = new WXPay(config);
|
164
|
164
|
|
165
|
165
|
//获取支付的钱数并且判断是自动锁房还是手动锁房,自动锁房需要锁定房源,手动锁房跳过
|
166
|
|
- String payPrice = String.valueOf(taOrgOrder.getAmount());
|
|
166
|
+ String payPrice = String.valueOf(taOrgOrder.getRealAmount());
|
167
|
167
|
|
168
|
168
|
//生成商户订单
|
169
|
169
|
// String tradeNo = CommonUtils.generateTradeNo("CJ");
|
|
@@ -195,7 +195,7 @@ public class TaOrgOrderServiceImpl extends ServiceImpl<TaOrgOrderMapper, TaOrgOr
|
195
|
195
|
}
|
196
|
196
|
|
197
|
197
|
@Override
|
198
|
|
- public ResponseBean saveCzOrder(Double amount, Integer orgId, Integer userId, String ip) throws Exception {
|
|
198
|
+ public ResponseBean saveCzOrder(Integer amount, Integer orgId, Integer userId, String ip) throws Exception {
|
199
|
199
|
ResponseBean responseBean = new ResponseBean();
|
200
|
200
|
|
201
|
201
|
// 获取下单人名称
|
|
@@ -205,16 +205,17 @@ public class TaOrgOrderServiceImpl extends ServiceImpl<TaOrgOrderMapper, TaOrgOr
|
205
|
205
|
return responseBean;
|
206
|
206
|
}
|
207
|
207
|
|
208
|
|
- // 计算支付金额
|
209
|
|
- Double realAmount = Math.ceil(amount * (1 + CommConstant.WXMCH_PAY_RATE) * 100) / 100;
|
|
208
|
+ // 计算实付金额
|
|
209
|
+ Integer realAmount = calculateRealAmount(amount);
|
210
|
210
|
|
211
|
211
|
// 1.创建订单主表信息
|
212
|
212
|
TaOrgOrder taOrgOrder = new TaOrgOrder();
|
213
|
213
|
taOrgOrder.setOrgId(orgId);
|
214
|
214
|
taOrgOrder.setTradeNo(CommonUtils.generateTradeNo(CommConstant.RECHARGE));
|
215
|
|
- taOrgOrder.setAmount(CommonUtils.yuanToFen(realAmount));
|
|
215
|
+ taOrgOrder.setAmount(amount);
|
|
216
|
+ taOrgOrder.setRealAmount(realAmount);
|
216
|
217
|
taOrgOrder.setCreateDate(LocalDateTime.now());
|
217
|
|
- taOrgOrder.setExpiryDate(LocalDateTime.now().plusMinutes(30));
|
|
218
|
+ taOrgOrder.setExpiryDate(LocalDateTime.now().plusMinutes(5));
|
218
|
219
|
taOrgOrder.setRemark("线上充值");
|
219
|
220
|
taOrgOrder.setStatus(CommConstant.STATUS_NORMAL);
|
220
|
221
|
taOrgOrder.setTradingStatus(CommConstant.TRADING_STATUS_PROCESSING);
|
|
@@ -231,8 +232,9 @@ public class TaOrgOrderServiceImpl extends ServiceImpl<TaOrgOrderMapper, TaOrgOr
|
231
|
232
|
taOrgOrderDetail.setOrderId(taOrgOrder.getOrderId());
|
232
|
233
|
taOrgOrderDetail.setOrgId(orgId);
|
233
|
234
|
taOrgOrderDetail.setItemType(CommConstant.ITEM_TYPE_RECHARGE);
|
234
|
|
- taOrgOrderDetail.setAmount(CommonUtils.yuanToFen(realAmount));
|
235
|
|
- taOrgOrderDetail.setUnitPrice(CommonUtils.yuanToFen(realAmount));
|
|
235
|
+ taOrgOrderDetail.setAmount(amount);
|
|
236
|
+ taOrgOrderDetail.setUnitPrice(amount);
|
|
237
|
+ taOrgOrderDetail.setRealAmount(realAmount);
|
236
|
238
|
taOrgOrderDetail.setQuantity(1);
|
237
|
239
|
taOrgOrderDetail.setStatus(CommConstant.STATUS_NORMAL);
|
238
|
240
|
if (taOrgOrderDetailMapper.insert(taOrgOrderDetail) < 1) {
|
|
@@ -250,7 +252,7 @@ public class TaOrgOrderServiceImpl extends ServiceImpl<TaOrgOrderMapper, TaOrgOr
|
250
|
252
|
JSONObject obj = new JSONObject();
|
251
|
253
|
obj.put("amount", amount);
|
252
|
254
|
obj.put("realAmount", realAmount);
|
253
|
|
- obj.put("serviceFee", CommonUtils.subDouble(realAmount, amount));
|
|
255
|
+ obj.put("serviceFee", realAmount - amount);
|
254
|
256
|
obj.put("mchPayRate", CommConstant.WXMCH_PAY_RATE_STRING);
|
255
|
257
|
obj.put("payQrCode", payResult.getData());
|
256
|
258
|
obj.put("orderInfo", taOrgOrder);
|
|
@@ -259,7 +261,7 @@ public class TaOrgOrderServiceImpl extends ServiceImpl<TaOrgOrderMapper, TaOrgOr
|
259
|
261
|
}
|
260
|
262
|
|
261
|
263
|
@Override
|
262
|
|
- public ResponseBean saveRefundOrder(Double amount, Integer orgId, Integer userId) {
|
|
264
|
+ public ResponseBean saveRefundOrder(Integer amount, Integer orgId, Integer userId) {
|
263
|
265
|
ResponseBean responseBean = new ResponseBean();
|
264
|
266
|
|
265
|
267
|
// 获取下单人名称
|
|
@@ -280,7 +282,7 @@ public class TaOrgOrderServiceImpl extends ServiceImpl<TaOrgOrderMapper, TaOrgOr
|
280
|
282
|
}
|
281
|
283
|
|
282
|
284
|
// 1.校验账户金额
|
283
|
|
- if (amount > CommonUtils.fenToYuan(taOrgAccount.getAvailableBalance())) {
|
|
285
|
+ if (amount > taOrgAccount.getAvailableBalance()) {
|
284
|
286
|
responseBean.addError("账户可用余额不足,请稍后再试");
|
285
|
287
|
return responseBean;
|
286
|
288
|
}
|
|
@@ -289,7 +291,8 @@ public class TaOrgOrderServiceImpl extends ServiceImpl<TaOrgOrderMapper, TaOrgOr
|
289
|
291
|
TaOrgOrder taOrgOrder = new TaOrgOrder();
|
290
|
292
|
taOrgOrder.setOrgId(orgId);
|
291
|
293
|
taOrgOrder.setTradeNo(CommonUtils.generateTradeNo(CommConstant.REFUND));
|
292
|
|
- taOrgOrder.setAmount(CommonUtils.yuanToFen(amount));
|
|
294
|
+ taOrgOrder.setAmount(amount);
|
|
295
|
+ taOrgOrder.setRealAmount(amount);
|
293
|
296
|
taOrgOrder.setCreateDate(LocalDateTime.now());
|
294
|
297
|
taOrgOrder.setExpiryDate(LocalDateTime.now().plusDays(7));
|
295
|
298
|
taOrgOrder.setRemark("线上退款");
|
|
@@ -308,8 +311,9 @@ public class TaOrgOrderServiceImpl extends ServiceImpl<TaOrgOrderMapper, TaOrgOr
|
308
|
311
|
taOrgOrderDetail.setOrderId(taOrgOrder.getOrderId());
|
309
|
312
|
taOrgOrderDetail.setOrgId(orgId);
|
310
|
313
|
taOrgOrderDetail.setItemType(CommConstant.ITEM_TYPE_REFUND);
|
311
|
|
- taOrgOrderDetail.setAmount(CommonUtils.yuanToFen(amount));
|
312
|
|
- taOrgOrderDetail.setUnitPrice(CommonUtils.yuanToFen(amount));
|
|
314
|
+ taOrgOrderDetail.setAmount(amount);
|
|
315
|
+ taOrgOrderDetail.setUnitPrice(amount);
|
|
316
|
+ taOrgOrderDetail.setRealAmount(amount);
|
313
|
317
|
taOrgOrderDetail.setQuantity(1);
|
314
|
318
|
taOrgOrderDetail.setStatus(CommConstant.STATUS_NORMAL);
|
315
|
319
|
if (taOrgOrderDetailMapper.insert(taOrgOrderDetail) < 1) {
|
|
@@ -323,7 +327,7 @@ public class TaOrgOrderServiceImpl extends ServiceImpl<TaOrgOrderMapper, TaOrgOr
|
323
|
327
|
taOrgRefundApplication.setOrgId(orgId);
|
324
|
328
|
taOrgRefundApplication.setUserId(userId);
|
325
|
329
|
taOrgRefundApplication.setUserName(taUser.getUserName());
|
326
|
|
- taOrgRefundApplication.setAmount(CommonUtils.yuanToFen(amount));
|
|
330
|
+ taOrgRefundApplication.setAmount(amount);
|
327
|
331
|
taOrgRefundApplication.setAuditStatus(CommConstant.CHECK_STATUS_CHECKING);
|
328
|
332
|
taOrgRefundApplication.setOrderId(taOrgOrder.getOrderId());
|
329
|
333
|
taOrgRefundApplication.setStatus(CommConstant.STATUS_NORMAL);
|
|
@@ -337,7 +341,7 @@ public class TaOrgOrderServiceImpl extends ServiceImpl<TaOrgOrderMapper, TaOrgOr
|
337
|
341
|
}
|
338
|
342
|
|
339
|
343
|
// 5.更新账户新金额
|
340
|
|
- taOrgAccountMapper.updateAvailableBalanceById(taOrgAccount.getAccountId(), CommonUtils.yuanToFen(amount));
|
|
344
|
+ taOrgAccountMapper.updateAvailableBalanceById(taOrgAccount.getAccountId(), amount);
|
341
|
345
|
responseBean.addSuccess(taOrgOrder);
|
342
|
346
|
return responseBean;
|
343
|
347
|
}
|
|
@@ -717,10 +721,22 @@ public class TaOrgOrderServiceImpl extends ServiceImpl<TaOrgOrderMapper, TaOrgOr
|
717
|
721
|
return sysUser;
|
718
|
722
|
}
|
719
|
723
|
|
720
|
|
- public TaOrgRefundApplication selectRefundApplication(TaOrgRefundApplication refundApplication){
|
|
724
|
+ public TaOrgRefundApplication selectRefundApplication(TaOrgRefundApplication refundApplication) {
|
721
|
725
|
QueryWrapper<TaOrgRefundApplication> taOrgRefundApplicationQueryWrapper = new QueryWrapper<>();
|
722
|
726
|
taOrgRefundApplicationQueryWrapper.eq("order_id", refundApplication.getOrderId());
|
723
|
727
|
return taOrgRefundApplicationMapper.selectOne(taOrgRefundApplicationQueryWrapper);
|
724
|
728
|
}
|
725
|
729
|
|
|
730
|
+ /**
|
|
731
|
+ * 计算实付金额
|
|
732
|
+ *
|
|
733
|
+ * @param amount
|
|
734
|
+ * @return
|
|
735
|
+ */
|
|
736
|
+ public static Integer calculateRealAmount(Integer amount) {
|
|
737
|
+ Double dAmount = CommonUtils.fenToYuan(amount);
|
|
738
|
+ // 防止误差,结果需要加0.01
|
|
739
|
+ Double dRealAmount = dAmount / (1 - CommConstant.WXMCH_PAY_RATE) + 0.01;
|
|
740
|
+ return CommonUtils.yuanToFen(dRealAmount);
|
|
741
|
+ }
|
726
|
742
|
}
|