Commit 3ec16c51f3480b59b8651335d712cdb2851dae86
1 parent
02637fd9b7
Exists in
dev
收费功能测试修改
Showing 8 changed files with 111 additions and 47 deletions
- talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/OrderController.java
- talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/PatientController.java
- talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsOrder.java
- talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsPatient.java
- talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/LymsOrderService.java
- talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/impl/LymsHisInfoServiceImpl.java
- talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/impl/LymsOrderServiceImpl.java
- talkonlineweb/src/main/java/com/lyms/talkonlineweb/util/StringUtil.java
talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/OrderController.java
View file @
3ec16c5
| ... | ... | @@ -92,7 +92,7 @@ |
| 92 | 92 | * @param response |
| 93 | 93 | */ |
| 94 | 94 | @PostMapping("createPayOrder") |
| 95 | - @TokenRequired | |
| 95 | + //@TokenRequired | |
| 96 | 96 | @Resubmit |
| 97 | 97 | public BaseResponse createPayOrder(@RequestBody LymsOrder lymsOrder, |
| 98 | 98 | HttpServletRequest request, HttpServletResponse response) { |
| ... | ... | @@ -137,6 +137,7 @@ |
| 137 | 137 | log.info("create order pid {} ,orderNo {}",lymsOrder.getPid(),orderNo); |
| 138 | 138 | lymsOrder.setCreatedtime(new Date()); |
| 139 | 139 | lymsOrder.setOrderno(orderNo); |
| 140 | + lymsOrder.setPrice(goods.getPrice()); | |
| 140 | 141 | lymsOrder.setAmount(lymsOrder.getPrice()*lymsOrder.getCnt()); |
| 141 | 142 | lymsOrder.setStatus(PayStatus.CREATED.getCode()); |
| 142 | 143 | lymsOrder.setOpenid(patient.getOpenid()); |
| 143 | 144 | |
| 144 | 145 | |
| 145 | 146 | |
| 146 | 147 | |
| ... | ... | @@ -330,33 +331,43 @@ |
| 330 | 331 | public void payNotify(HttpServletRequest request, HttpServletResponse response) { |
| 331 | 332 | |
| 332 | 333 | Map<String,String> result = new HashMap<>(2); |
| 333 | - result.put("return_code","<![CDATA[FAIL]]>"); | |
| 334 | + result.put("return_code","FAIL"); | |
| 334 | 335 | result.put("return_msg","参数错误"); |
| 335 | 336 | try { |
| 336 | 337 | Map<String, String> paramMap = getPayNotifyParamMap(request); |
| 337 | 338 | |
| 338 | 339 | //验证支付通知的参数合法性 |
| 339 | - if (!verifyPayNotify(paramMap)) { | |
| 340 | + if (verifyPayNotify(paramMap)) { | |
| 340 | 341 | //微信支付订单号 |
| 341 | 342 | String transactionId = paramMap.get("transaction_id"); |
| 342 | 343 | //商户订单号 |
| 343 | 344 | String mchOrderNo = paramMap.get("out_trade_no"); |
| 344 | - LambdaQueryWrapper<LymsOrder> wrapper = new QueryWrapper().lambda(); | |
| 345 | - wrapper.eq(LymsOrder::getOrderno, mchOrderNo); | |
| 346 | - LymsOrder order=new LymsOrder(); | |
| 347 | - order.setTransactionId(transactionId); | |
| 348 | - order.setPayTime(new Date()); | |
| 349 | - boolean f= lymsOrderService.update(order, wrapper); | |
| 350 | 345 | //处理业务逻辑 |
| 351 | 346 | LambdaQueryWrapper<LymsOrder> lymsOrderWrapper = new QueryWrapper().lambda(); |
| 352 | 347 | lymsOrderWrapper.eq(LymsOrder::getOrderno, mchOrderNo); |
| 353 | 348 | lymsOrderWrapper.eq(LymsOrder::getTransactionId, transactionId); |
| 354 | 349 | LymsOrder lymsOrders = lymsOrderService.getOne(lymsOrderWrapper); |
| 355 | - boolean flag = lymsOrderService.handleOrder(lymsOrders); | |
| 350 | + if(lymsOrders == null){ | |
| 351 | + LambdaQueryWrapper<LymsOrder> wrapper = new QueryWrapper().lambda(); | |
| 352 | + wrapper.eq(LymsOrder::getOrderno, mchOrderNo); | |
| 353 | + LymsOrder order=new LymsOrder(); | |
| 354 | + order.setTransactionId(transactionId); | |
| 355 | + order.setPayTime(new Date()); | |
| 356 | + lymsOrderService.update(order, wrapper); | |
| 357 | + }else{ | |
| 358 | + result.put("return_code","SUCCESS>"); | |
| 359 | + result.put("return_msg","OK"); | |
| 360 | + outResult(response, XmlUtil.mapToXml(result)); | |
| 361 | + log.info("已经处理过,重复通知!"); | |
| 362 | + return; | |
| 363 | + } | |
| 364 | + //再次查询 | |
| 365 | + lymsOrders = lymsOrderService.getOne(lymsOrderWrapper); | |
| 366 | + boolean flag = lymsOrderService.handleOrder(lymsOrders,true); | |
| 356 | 367 | if (flag) |
| 357 | 368 | { |
| 358 | - result.put("return_code","<![CDATA[SUCCESS]]>"); | |
| 359 | - result.put("return_msg","<![CDATA[OK]]>"); | |
| 369 | + result.put("return_code","SUCCESS>"); | |
| 370 | + result.put("return_msg","OK"); | |
| 360 | 371 | } |
| 361 | 372 | } |
| 362 | 373 | outResult(response, XmlUtil.mapToXml(result)); |
| ... | ... | @@ -383,6 +394,7 @@ |
| 383 | 394 | try { |
| 384 | 395 | pw = response.getWriter(); |
| 385 | 396 | pw.print(content); |
| 397 | + log.info("response pay "+content); | |
| 386 | 398 | log.info("response pay complete."); |
| 387 | 399 | } catch (IOException e) { |
| 388 | 400 | log.error("response pay write exception.", e); |
| 389 | 401 | |
| ... | ... | @@ -462,13 +474,13 @@ |
| 462 | 474 | LambdaQueryWrapper<LymsOrder> wrapper = new QueryWrapper().lambda(); |
| 463 | 475 | wrapper.eq(LymsOrder::getOrderno, mchOrderNo); |
| 464 | 476 | List<LymsOrder> lymsOrders = lymsOrderService.list(wrapper); |
| 465 | - if (CollectionUtils.isNotEmpty(lymsOrders)) { | |
| 477 | + if (CollectionUtils.isEmpty(lymsOrders)) { | |
| 466 | 478 | log.warn("local orderno not exists,payOrderId : {},orderno : {}", payOrderId, mchOrderNo); |
| 467 | 479 | return false; |
| 468 | 480 | } |
| 469 | 481 | // 核对金额 |
| 470 | - if (lymsOrders.get(0).getPrice() != Integer.parseInt(amount)) { | |
| 471 | - log.warn("Inconsistent payment amount ,dbPayPrice : {},payPrice : {}", lymsOrders.get(0).getPrice(), amount); | |
| 482 | + if (lymsOrders.get(0).getAmount() != Integer.parseInt(amount)) { | |
| 483 | + log.warn("Inconsistent payment amount ,dbPayPrice : {},payPrice : {}", lymsOrders.get(0).getAmount(), amount); | |
| 472 | 484 | return false; |
| 473 | 485 | } |
| 474 | 486 | return true; |
talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/PatientController.java
View file @
3ec16c5
| ... | ... | @@ -1003,7 +1003,8 @@ |
| 1003 | 1003 | patient.setPpasswd(DigestUtils.md5DigestAsHex(patient.getPpasswd().getBytes())); |
| 1004 | 1004 | } |
| 1005 | 1005 | //注册过程中 |
| 1006 | - if (StringUtils.isEmpty(patient.getCode())) { | |
| 1006 | + if (StringUtils.hasText(patient.getCode())) { | |
| 1007 | + | |
| 1007 | 1008 | patient.setOpenid(WeiXinUtil.getWxOpenId(patient.getCode())); |
| 1008 | 1009 | } |
| 1009 | 1010 | boolean f = lymsPatientService.save(patient); |
talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsOrder.java
View file @
3ec16c5
talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsPatient.java
View file @
3ec16c5
| ... | ... | @@ -360,24 +360,66 @@ |
| 360 | 360 | |
| 361 | 361 | @Override |
| 362 | 362 | public String toString() { |
| 363 | - StringBuilder sb = new StringBuilder(); | |
| 364 | - sb.append(getClass().getSimpleName()); | |
| 365 | - sb.append(" ["); | |
| 366 | - sb.append("Hash = ").append(hashCode()); | |
| 367 | - sb.append(", id=").append(id); | |
| 368 | - sb.append(", pname=").append(pname); | |
| 369 | - sb.append(", idno=").append(idno); | |
| 370 | - sb.append(", ppasswd=").append(ppasswd); | |
| 371 | - sb.append(", sex=").append(sex); | |
| 372 | - sb.append(", ccnt=").append(ccnt); | |
| 373 | - sb.append(", hxid=").append(hxid); | |
| 374 | - sb.append(", createdby=").append(createdby); | |
| 375 | - sb.append(", createdtime=").append(createdtime); | |
| 376 | - sb.append(", updatedby=").append(updatedby); | |
| 377 | - sb.append(", updatedtime=").append(updatedtime); | |
| 378 | - sb.append(", serialVersionUID=").append(serialVersionUID); | |
| 379 | - sb.append("]"); | |
| 380 | - return sb.toString(); | |
| 363 | + return "LymsPatient{" + | |
| 364 | + "id=" + id + | |
| 365 | + ", pname='" + pname + '\'' + | |
| 366 | + ", idno='" + idno + '\'' + | |
| 367 | + ", ppasswd='" + ppasswd + '\'' + | |
| 368 | + ", birth='" + birth + '\'' + | |
| 369 | + ", openid='" + openid + '\'' + | |
| 370 | + ", gzopenid='" + gzopenid + '\'' + | |
| 371 | + ", sex=" + sex + | |
| 372 | + ", ccnt=" + ccnt + | |
| 373 | + ", hxid='" + hxid + '\'' + | |
| 374 | + ", islogin=" + islogin + | |
| 375 | + ", headimg='" + headimg + '\'' + | |
| 376 | + ", createdby=" + createdby + | |
| 377 | + ", createdtime=" + createdtime + | |
| 378 | + ", updatedby='" + updatedby + '\'' + | |
| 379 | + ", updatedtime=" + updatedtime + | |
| 380 | + ", enrolmentPhone='" + enrolmentPhone + '\'' + | |
| 381 | + ", nationality='" + nationality + '\'' + | |
| 382 | + ", nation='" + nation + '\'' + | |
| 383 | + ", marriageType='" + marriageType + '\'' + | |
| 384 | + ", registerType='" + registerType + '\'' + | |
| 385 | + ", resideType='" + resideType + '\'' + | |
| 386 | + ", education='" + education + '\'' + | |
| 387 | + ", jobType='" + jobType + '\'' + | |
| 388 | + ", jobName='" + jobName + '\'' + | |
| 389 | + ", resideProv='" + resideProv + '\'' + | |
| 390 | + ", resideCity='" + resideCity + '\'' + | |
| 391 | + ", resideRegin='" + resideRegin + '\'' + | |
| 392 | + ", resideAddres='" + resideAddres + '\'' + | |
| 393 | + ", registerProv='" + registerProv + '\'' + | |
| 394 | + ", registerCity='" + registerCity + '\'' + | |
| 395 | + ", registerRegin='" + registerRegin + '\'' + | |
| 396 | + ", registerAddres='" + registerAddres + '\'' + | |
| 397 | + ", medicalCard='" + medicalCard + '\'' + | |
| 398 | + ", bookbuilDoctor='" + bookbuilDoctor + '\'' + | |
| 399 | + ", bookbuilHospital='" + bookbuilHospital + '\'' + | |
| 400 | + ", bookbuilType='" + bookbuilType + '\'' + | |
| 401 | + ", xbs='" + xbs + '\'' + | |
| 402 | + ", xbsQt='" + xbsQt + '\'' + | |
| 403 | + ", jws='" + jws + '\'' + | |
| 404 | + ", jwsQt='" + jwsQt + '\'' + | |
| 405 | + ", grs='" + grs + '\'' + | |
| 406 | + ", grsInfo='" + grsInfo + '\'' + | |
| 407 | + ", ywgms='" + ywgms + '\'' + | |
| 408 | + ", ywgmsQt='" + ywgmsQt + '\'' + | |
| 409 | + ", yjs='" + yjs + '\'' + | |
| 410 | + ", yjsQt='" + yjsQt + '\'' + | |
| 411 | + ", shengys='" + shengys + '\'' + | |
| 412 | + ", shengysInfo='" + shengysInfo + '\'' + | |
| 413 | + ", jzs='" + jzs + '\'' + | |
| 414 | + ", jzsInfo='" + jzsInfo + '\'' + | |
| 415 | + ", bookbuilDate=" + bookbuilDate + | |
| 416 | + ", type=" + type + | |
| 417 | + ", loginType=" + loginType + | |
| 418 | + ", code='" + code + '\'' + | |
| 419 | + ", synthesisQuery='" + synthesisQuery + '\'' + | |
| 420 | + ", startCreatedtime='" + startCreatedtime + '\'' + | |
| 421 | + ", endCreatedtime='" + endCreatedtime + '\'' + | |
| 422 | + '}'; | |
| 381 | 423 | } |
| 382 | 424 | } |
talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/LymsOrderService.java
View file @
3ec16c5
| ... | ... | @@ -14,7 +14,13 @@ |
| 14 | 14 | */ |
| 15 | 15 | public interface LymsOrderService extends IService<LymsOrder> { |
| 16 | 16 | |
| 17 | - boolean handleOrder(LymsOrder lymsOrder); | |
| 17 | + /** | |
| 18 | + * | |
| 19 | + * @param lymsOrder | |
| 20 | + * @param isPayCallBack 是否支付回调 | |
| 21 | + * @return | |
| 22 | + */ | |
| 23 | + boolean handleOrder(LymsOrder lymsOrder,boolean isPayCallBack); | |
| 18 | 24 | |
| 19 | 25 | List<OrderListResponse> queryOrderList(OrderRequest orderRequest); |
| 20 | 26 |
talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/impl/LymsHisInfoServiceImpl.java
View file @
3ec16c5
| ... | ... | @@ -335,13 +335,13 @@ |
| 335 | 335 | |
| 336 | 336 | //查找两天内支付的订单 |
| 337 | 337 | QueryWrapper<LymsOrder> queryWrapper = new QueryWrapper<>(); |
| 338 | - queryWrapper.eq("pid",patient.getIdno()); | |
| 338 | + queryWrapper.eq("pid",patient.getId()); | |
| 339 | 339 | queryWrapper.gt("status",0); |
| 340 | 340 | queryWrapper.gt("createdtime", DateUtil.addDay(instDate,-2)); |
| 341 | 341 | List<LymsOrder> list = lymsOrderService.list(queryWrapper); |
| 342 | 342 | |
| 343 | 343 | if(CollectionUtils.isNotEmpty(list)){ |
| 344 | - lymsOrderService.handleOrder(list.get(0)); | |
| 344 | + lymsOrderService.handleOrder(list.get(0),false); | |
| 345 | 345 | }else{ |
| 346 | 346 | //不是通过订单生成的问诊卡 |
| 347 | 347 | for (int i = 0; i < patient.getCcnt() && Objects.nonNull(patient.getCcnt()); i++) { |
talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/impl/LymsOrderServiceImpl.java
View file @
3ec16c5
| ... | ... | @@ -46,7 +46,7 @@ |
| 46 | 46 | |
| 47 | 47 | @Override |
| 48 | 48 | @Transactional(rollbackFor = Exception.class) |
| 49 | - public boolean handleOrder(LymsOrder lymsOrders) { | |
| 49 | + public boolean handleOrder(LymsOrder lymsOrders,boolean isPayCallBack) { | |
| 50 | 50 | Date currentTime = new Date(); |
| 51 | 51 | //说明是 |
| 52 | 52 | if (lymsOrders != null) { |
| ... | ... | @@ -60,8 +60,8 @@ |
| 60 | 60 | lymsOrders.setServiceEndTime(DateUtil.addMonth(currentTime,lymsOrders.getCnt())); |
| 61 | 61 | lymsOrders.setUpdatedtime(new Date()); |
| 62 | 62 | updateById(lymsOrders); |
| 63 | - //pcid不为空,说明是续期购买,直接生成生成问诊卡 | |
| 64 | - if(lymsOrders.getPcid() != null){ | |
| 63 | + //pcid不为空,说明是续期购买,直接生成生成问诊卡 或者his上传 | |
| 64 | + if(lymsOrders.getPcid() != null || !isPayCallBack){ | |
| 65 | 65 | |
| 66 | 66 | //数量代表购买几个月 |
| 67 | 67 | int months = lymsOrders.getCnt(); |
| 68 | 68 | |
| ... | ... | @@ -82,11 +82,10 @@ |
| 82 | 82 | lymsTcardMapper.insert(tcard); |
| 83 | 83 | } |
| 84 | 84 | } |
| 85 | - | |
| 86 | - | |
| 85 | + //更新患者的卡的数量,患者信息上的问诊卡数量其实没啥意义了 | |
| 86 | + lymsPatientMapper.updatePatientCcnt(lymsOrders.getCnt()*Constant.CARD_COUNT_MONTH,patient.getId()); | |
| 87 | 87 | } |
| 88 | - //更新患者的卡的数量,患者信息上的问诊卡数量其实没啥意义了 | |
| 89 | - lymsPatientMapper.updatePatientCcnt(lymsOrders.getCnt()*Constant.CARD_COUNT_MONTH,patient.getId()); | |
| 88 | + | |
| 90 | 89 | return true; |
| 91 | 90 | } |
| 92 | 91 |
talkonlineweb/src/main/java/com/lyms/talkonlineweb/util/StringUtil.java
View file @
3ec16c5
| ... | ... | @@ -51,7 +51,7 @@ |
| 51 | 51 | { |
| 52 | 52 | try |
| 53 | 53 | { |
| 54 | - return String.format("%s%s%06d", "LYMS", DateUtil.getSeqString(), IdWorker.getFlowIdWorkerInstance().nextId()); | |
| 54 | + return String.format("%s%s%06d", "L", DateUtil.getSeqString(), IdWorker.getFlowIdWorkerInstance().nextId()); | |
| 55 | 55 | }catch (Exception e){ |
| 56 | 56 | |
| 57 | 57 | } |
| ... | ... | @@ -65,7 +65,7 @@ |
| 65 | 65 | { |
| 66 | 66 | try |
| 67 | 67 | { |
| 68 | - return String.format("%s%s%06d", "WEIX", DateUtil.getSeqString(), IdWorker.getFlowIdWorkerInstance().nextId()); | |
| 68 | + return String.format("%s%s%06d", "W", DateUtil.getSeqString(), IdWorker.getFlowIdWorkerInstance().nextId()); | |
| 69 | 69 | }catch (Exception e){ |
| 70 | 70 | |
| 71 | 71 | } |
| ... | ... | @@ -140,6 +140,10 @@ |
| 140 | 140 | } |
| 141 | 141 | } |
| 142 | 142 | return result; |
| 143 | + } | |
| 144 | + | |
| 145 | + public static void main(String[] args) { | |
| 146 | + System.out.println(getUniqueNo()); | |
| 143 | 147 | } |
| 144 | 148 | } |