diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/OrderController.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/OrderController.java index c9dc5fa..2de34ad 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/OrderController.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/OrderController.java @@ -92,7 +92,7 @@ public class OrderController { * @param response */ @PostMapping("createPayOrder") - @TokenRequired + //@TokenRequired @Resubmit public BaseResponse createPayOrder(@RequestBody LymsOrder lymsOrder, HttpServletRequest request, HttpServletResponse response) { @@ -137,6 +137,7 @@ public class OrderController { log.info("create order pid {} ,orderNo {}",lymsOrder.getPid(),orderNo); lymsOrder.setCreatedtime(new Date()); lymsOrder.setOrderno(orderNo); + lymsOrder.setPrice(goods.getPrice()); lymsOrder.setAmount(lymsOrder.getPrice()*lymsOrder.getCnt()); lymsOrder.setStatus(PayStatus.CREATED.getCode()); lymsOrder.setOpenid(patient.getOpenid()); @@ -330,33 +331,43 @@ public class OrderController { public void payNotify(HttpServletRequest request, HttpServletResponse response) { Map result = new HashMap<>(2); - result.put("return_code",""); + result.put("return_code","FAIL"); result.put("return_msg","参数错误"); try { Map paramMap = getPayNotifyParamMap(request); //验证支付通知的参数合法性 - if (!verifyPayNotify(paramMap)) { + if (verifyPayNotify(paramMap)) { //微信支付订单号 String transactionId = paramMap.get("transaction_id"); //商户订单号 String mchOrderNo = paramMap.get("out_trade_no"); - LambdaQueryWrapper wrapper = new QueryWrapper().lambda(); - wrapper.eq(LymsOrder::getOrderno, mchOrderNo); - LymsOrder order=new LymsOrder(); - order.setTransactionId(transactionId); - order.setPayTime(new Date()); - boolean f= lymsOrderService.update(order, wrapper); //处理业务逻辑 LambdaQueryWrapper lymsOrderWrapper = new QueryWrapper().lambda(); lymsOrderWrapper.eq(LymsOrder::getOrderno, mchOrderNo); lymsOrderWrapper.eq(LymsOrder::getTransactionId, transactionId); LymsOrder lymsOrders = lymsOrderService.getOne(lymsOrderWrapper); - boolean flag = lymsOrderService.handleOrder(lymsOrders); + if(lymsOrders == null){ + LambdaQueryWrapper wrapper = new QueryWrapper().lambda(); + wrapper.eq(LymsOrder::getOrderno, mchOrderNo); + LymsOrder order=new LymsOrder(); + order.setTransactionId(transactionId); + order.setPayTime(new Date()); + lymsOrderService.update(order, wrapper); + }else{ + result.put("return_code","SUCCESS>"); + result.put("return_msg","OK"); + outResult(response, XmlUtil.mapToXml(result)); + log.info("已经处理过,重复通知!"); + return; + } + //再次查询 + lymsOrders = lymsOrderService.getOne(lymsOrderWrapper); + boolean flag = lymsOrderService.handleOrder(lymsOrders,true); if (flag) { - result.put("return_code",""); - result.put("return_msg",""); + result.put("return_code","SUCCESS>"); + result.put("return_msg","OK"); } } outResult(response, XmlUtil.mapToXml(result)); @@ -383,6 +394,7 @@ public class OrderController { try { pw = response.getWriter(); pw.print(content); + log.info("response pay "+content); log.info("response pay complete."); } catch (IOException e) { log.error("response pay write exception.", e); @@ -462,13 +474,13 @@ public class OrderController { LambdaQueryWrapper wrapper = new QueryWrapper().lambda(); wrapper.eq(LymsOrder::getOrderno, mchOrderNo); List lymsOrders = lymsOrderService.list(wrapper); - if (CollectionUtils.isNotEmpty(lymsOrders)) { + if (CollectionUtils.isEmpty(lymsOrders)) { log.warn("local orderno not exists,payOrderId : {},orderno : {}", payOrderId, mchOrderNo); return false; } // 核对金额 - if (lymsOrders.get(0).getPrice() != Integer.parseInt(amount)) { - log.warn("Inconsistent payment amount ,dbPayPrice : {},payPrice : {}", lymsOrders.get(0).getPrice(), amount); + if (lymsOrders.get(0).getAmount() != Integer.parseInt(amount)) { + log.warn("Inconsistent payment amount ,dbPayPrice : {},payPrice : {}", lymsOrders.get(0).getAmount(), amount); return false; } return true; diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/PatientController.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/PatientController.java index bc136b4..741a161 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/PatientController.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/controller/PatientController.java @@ -1003,7 +1003,8 @@ public class PatientController { patient.setPpasswd(DigestUtils.md5DigestAsHex(patient.getPpasswd().getBytes())); } //注册过程中 - if (StringUtils.isEmpty(patient.getCode())) { + if (StringUtils.hasText(patient.getCode())) { + patient.setOpenid(WeiXinUtil.getWxOpenId(patient.getCode())); } boolean f = lymsPatientService.save(patient); diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsOrder.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsOrder.java index b9317b4..83463e5 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsOrder.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsOrder.java @@ -61,7 +61,7 @@ public class LymsOrder extends BaseModel implements Serializable { * 价格 */ @TableField(value = "price") - private int price; + private Integer price; /** * 购买数量 */ diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsPatient.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsPatient.java index 861c576..b0e894b 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsPatient.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/domain/LymsPatient.java @@ -360,23 +360,65 @@ public class LymsPatient implements Serializable { @Override public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append(getClass().getSimpleName()); - sb.append(" ["); - sb.append("Hash = ").append(hashCode()); - sb.append(", id=").append(id); - sb.append(", pname=").append(pname); - sb.append(", idno=").append(idno); - sb.append(", ppasswd=").append(ppasswd); - sb.append(", sex=").append(sex); - sb.append(", ccnt=").append(ccnt); - sb.append(", hxid=").append(hxid); - sb.append(", createdby=").append(createdby); - sb.append(", createdtime=").append(createdtime); - sb.append(", updatedby=").append(updatedby); - sb.append(", updatedtime=").append(updatedtime); - sb.append(", serialVersionUID=").append(serialVersionUID); - sb.append("]"); - return sb.toString(); + return "LymsPatient{" + + "id=" + id + + ", pname='" + pname + '\'' + + ", idno='" + idno + '\'' + + ", ppasswd='" + ppasswd + '\'' + + ", birth='" + birth + '\'' + + ", openid='" + openid + '\'' + + ", gzopenid='" + gzopenid + '\'' + + ", sex=" + sex + + ", ccnt=" + ccnt + + ", hxid='" + hxid + '\'' + + ", islogin=" + islogin + + ", headimg='" + headimg + '\'' + + ", createdby=" + createdby + + ", createdtime=" + createdtime + + ", updatedby='" + updatedby + '\'' + + ", updatedtime=" + updatedtime + + ", enrolmentPhone='" + enrolmentPhone + '\'' + + ", nationality='" + nationality + '\'' + + ", nation='" + nation + '\'' + + ", marriageType='" + marriageType + '\'' + + ", registerType='" + registerType + '\'' + + ", resideType='" + resideType + '\'' + + ", education='" + education + '\'' + + ", jobType='" + jobType + '\'' + + ", jobName='" + jobName + '\'' + + ", resideProv='" + resideProv + '\'' + + ", resideCity='" + resideCity + '\'' + + ", resideRegin='" + resideRegin + '\'' + + ", resideAddres='" + resideAddres + '\'' + + ", registerProv='" + registerProv + '\'' + + ", registerCity='" + registerCity + '\'' + + ", registerRegin='" + registerRegin + '\'' + + ", registerAddres='" + registerAddres + '\'' + + ", medicalCard='" + medicalCard + '\'' + + ", bookbuilDoctor='" + bookbuilDoctor + '\'' + + ", bookbuilHospital='" + bookbuilHospital + '\'' + + ", bookbuilType='" + bookbuilType + '\'' + + ", xbs='" + xbs + '\'' + + ", xbsQt='" + xbsQt + '\'' + + ", jws='" + jws + '\'' + + ", jwsQt='" + jwsQt + '\'' + + ", grs='" + grs + '\'' + + ", grsInfo='" + grsInfo + '\'' + + ", ywgms='" + ywgms + '\'' + + ", ywgmsQt='" + ywgmsQt + '\'' + + ", yjs='" + yjs + '\'' + + ", yjsQt='" + yjsQt + '\'' + + ", shengys='" + shengys + '\'' + + ", shengysInfo='" + shengysInfo + '\'' + + ", jzs='" + jzs + '\'' + + ", jzsInfo='" + jzsInfo + '\'' + + ", bookbuilDate=" + bookbuilDate + + ", type=" + type + + ", loginType=" + loginType + + ", code='" + code + '\'' + + ", synthesisQuery='" + synthesisQuery + '\'' + + ", startCreatedtime='" + startCreatedtime + '\'' + + ", endCreatedtime='" + endCreatedtime + '\'' + + '}'; } } \ No newline at end of file diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/LymsOrderService.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/LymsOrderService.java index b6dae25..1c04be5 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/LymsOrderService.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/LymsOrderService.java @@ -14,7 +14,13 @@ import java.util.List; */ public interface LymsOrderService extends IService { - boolean handleOrder(LymsOrder lymsOrder); + /** + * + * @param lymsOrder + * @param isPayCallBack 是否支付回调 + * @return + */ + boolean handleOrder(LymsOrder lymsOrder,boolean isPayCallBack); List queryOrderList(OrderRequest orderRequest); diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/impl/LymsHisInfoServiceImpl.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/impl/LymsHisInfoServiceImpl.java index 8ead88e..f51737e 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/impl/LymsHisInfoServiceImpl.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/impl/LymsHisInfoServiceImpl.java @@ -335,13 +335,13 @@ public class LymsHisInfoServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("pid",patient.getIdno()); + queryWrapper.eq("pid",patient.getId()); queryWrapper.gt("status",0); queryWrapper.gt("createdtime", DateUtil.addDay(instDate,-2)); List list = lymsOrderService.list(queryWrapper); if(CollectionUtils.isNotEmpty(list)){ - lymsOrderService.handleOrder(list.get(0)); + lymsOrderService.handleOrder(list.get(0),false); }else{ //不是通过订单生成的问诊卡 for (int i = 0; i < patient.getCcnt() && Objects.nonNull(patient.getCcnt()); i++) { diff --git a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/impl/LymsOrderServiceImpl.java b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/impl/LymsOrderServiceImpl.java index c835b4d..d087b2d 100644 --- a/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/impl/LymsOrderServiceImpl.java +++ b/talkonlineweb/src/main/java/com/lyms/talkonlineweb/service/impl/LymsOrderServiceImpl.java @@ -46,7 +46,7 @@ public class LymsOrderServiceImpl extends ServiceImpl