Procházet zdrojové kódy

feature: 支持接口匿名访问,方便支付宝过审

Walker před 2 roky
rodič
revize
da906f1f9d

+ 0 - 4
onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/web/configs/WebMvcConfigure.java

@@ -15,12 +15,8 @@ public class WebMvcConfigure extends WebMvcConfigurerAdapter {
                 .addPathPatterns("/**")
                 // 排除的接口,无法通过 ContextHelper 获取 userId, terminal & alipayUid,也无法通过 BizUtil 获取 hospitalId,需要自行获取
                 .excludePathPatterns("/auth/*")
-                .excludePathPatterns("/dev/*")
                 .excludePathPatterns("/register/*")
-                .excludePathPatterns("/isvRequest.inpatient.list")
-                .excludePathPatterns("/isvRequest.home.dailyBill.list")
                 .excludePathPatterns("/isvRequest.order.doctorScheduleList")
-                .excludePathPatterns("/msg/*")
         ;
         super.addInterceptors(registry);
     }

+ 2 - 0
onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/web/controller/MsgController.java

@@ -7,6 +7,7 @@ import com.ywt.alipaympapi.models.auth.AlipayMpCfg;
 import com.ywt.alipaympapi.models.msg.SendRegMsgReq;
 import com.ywt.alipaympapi.service.AuthService;
 import com.ywt.alipaympapi.service.MessageService;
+import com.ywt.core.Anonymous;
 import com.ywt.core.exception.AppMessageException;
 import com.ywt.model.BaseResponse;
 import lombok.extern.slf4j.Slf4j;
@@ -27,6 +28,7 @@ public class MsgController {
     @Autowired
     MessageService messageService;
 
+    @Anonymous(enable = true)
     @RequestMapping(value = {"/sendRegMsg"}, method = RequestMethod.POST)
     public @ResponseBody BaseResponse sendRegMsg(@RequestBody SendRegMsgReq reqData) {
         BaseResponse baseResponse = new BaseResponse();

+ 9 - 4
onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/web/interceptors/AccessBehaviorInterceptor.java

@@ -1,12 +1,11 @@
 package com.ywt.alipaympapi.web.interceptors;
 
-import com.fasterxml.jackson.databind.JsonNode;
+import com.ywt.core.Anonymous;
 import com.ywt.alipaympapi.core.utils.Checker;
-import com.ywt.alipaympapi.core.utils.JsonSerializer;
-import com.ywt.alipaympapi.core.utils.WebHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
+import org.springframework.web.method.HandlerMethod;
 import org.springframework.web.servlet.HandlerInterceptor;
 import org.springframework.web.servlet.ModelAndView;
 
@@ -47,7 +46,13 @@ public class AccessBehaviorInterceptor implements HandlerInterceptor {
                 }
             }
 
-            if (userId <= 0) {
+            HandlerMethod handlerMethod = (HandlerMethod) o;
+            Anonymous anonymous = handlerMethod.getMethod().getAnnotation(Anonymous.class);
+            if (anonymous == null) {
+                anonymous = handlerMethod.getMethod().getDeclaringClass().getAnnotation(Anonymous.class);
+            }
+
+            if (userId <= 0 && (anonymous == null || !anonymous.enable())) {
                 httpServletResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
                 httpServletResponse.getWriter().write("please login");
                 return false;

+ 3 - 0
onemini-hospital-sdk/src/main/java/com/ywt/alipaympapi/controller/InpatientController.java

@@ -1,6 +1,7 @@
 package com.ywt.alipaympapi.controller;
 
 import com.alibaba.fastjson.JSON;
+import com.ywt.core.Anonymous;
 import com.ywt.core.exception.AppMessageException;
 import com.ywt.model.BaseResponse;
 import com.ywt.model.Code;
@@ -90,6 +91,7 @@ public class InpatientController {
      * @param request
      * @return
      */
+    @Anonymous(enable = true)
     @PostMapping("isvRequest.inpatient.list")
     public ResponseVO<List<InpatientListResponseData>> inpatientList(InpatientListRequest request) {
         try {
@@ -139,6 +141,7 @@ public class InpatientController {
      * @param request
      * @return
      */
+    @Anonymous(enable = true)
     @PostMapping("isvRequest.home.dailyBill.list")
     public ResponseVO<List<DailyBillResponseData>> dailyBillList(DailyBillRequest request) throws Exception {
         try {

+ 2 - 0
onemini-hospital-sdk/src/main/java/com/ywt/alipaympapi/controller/OrderRemindController.java

@@ -1,6 +1,7 @@
 package com.ywt.alipaympapi.controller;
 
 import com.alibaba.fastjson.JSON;
+import com.ywt.core.Anonymous;
 import com.ywt.model.ResponseVO;
 import com.ywt.request.OrderReminderQueryRequest;
 import com.ywt.response.OrderReminderResponse;
@@ -39,6 +40,7 @@ public class OrderRemindController {
      * @param request
      * @return
      */
+    @Anonymous(enable = true)
     @PostMapping("miniProRequest.order.remindList")
     public ResponseVO<List<OrderReminderResponse>> userIndexReminderInfoList(OrderReminderQueryRequest request) {
         log.info("request:{}", JSON.toJSONString(request));

+ 5 - 0
onemini-hospital-sdk/src/main/java/com/ywt/alipaympapi/controller/PlanController.java

@@ -1,6 +1,7 @@
 package com.ywt.alipaympapi.controller;
 
 import com.ywt.alipaympapi.service.IsvRegisterService;
+import com.ywt.core.Anonymous;
 import com.ywt.core.exception.AppMessageException;
 import com.ywt.model.Code;
 import com.ywt.model.PageVO;
@@ -32,6 +33,7 @@ public class PlanController {
      * @param request
      * @return
      */
+    @Anonymous(enable = true)
     @PostMapping("isvRequest.order.departmentList")
     public ResponseVO<List<QueryDepartmentListResponseData>> queryDepartmentList(QueryDepartmentListRequest request) throws Exception {
         try {
@@ -50,6 +52,7 @@ public class PlanController {
      * @param request
      * @return
      */
+    @Anonymous(enable = true)
     @PostMapping("isvRequest.order.depOrderSourceRemain")
     public ResponseVO<List<QueryDepOrderSourceRemainResponseData>> queryDepOrderSourceRemain(QueryDepOrderSourceRemainRequest request) {
         try {
@@ -68,6 +71,7 @@ public class PlanController {
      * @param request
      * @return
      */
+    @Anonymous(enable = true)
     @PostMapping("isvRequest.order.depDoctorList")
     public ResponseVO<PageVO<QueryDepDoctorListResponseData>> queryDepDoctorList(QueryDepDoctorListRequest request) {
         try {
@@ -104,6 +108,7 @@ public class PlanController {
      * @param request
      * @return
      */
+    @Anonymous(enable = true)
     @PostMapping("isvRequest.order.queryHospitalDistrictList")
     public ResponseVO<List<QueryHospitalDistrictListResponseData>> queryHospitalDistrictList(QueryHospitalDistrictListRequest request) throws Exception {
         try {

+ 14 - 0
onemini-hospital-sdk/src/main/java/com/ywt/core/Anonymous.java

@@ -0,0 +1,14 @@
+package com.ywt.core;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * 允许匿名访问,使用该注解可能会获取不到 userId
+ * @author Walker
+ * Created on 2022/9/29
+ */
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Anonymous {
+    boolean enable() default false;
+}