Browse Source

优化动态表单

zhouhao 7 years ago
parent
commit
2762e17a74

+ 6 - 0
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-controller/pom.xml

@@ -28,5 +28,11 @@
             <artifactId>hsweb-commons-controller</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.hswebframework.web</groupId>
+            <artifactId>hsweb-authorization-basic</artifactId>
+            <version>${project.version}</version>
+            <optional>true</optional>
+        </dependency>
     </dependencies>
 </project>

+ 32 - 0
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-controller/src/main/java/org/hswebframework/web/controller/form/DynamicFormAuthorizeDefinitionParser.java

@@ -0,0 +1,32 @@
+package org.hswebframework.web.controller.form;
+
+import org.hswebframework.web.AopUtils;
+import org.hswebframework.web.authorization.annotation.Authorize;
+import org.hswebframework.web.authorization.basic.aop.AopMethodAuthorizeDefinitionCustomizerParser;
+import org.hswebframework.web.authorization.define.AuthorizeDefinition;
+import org.hswebframework.web.boost.aop.context.MethodInterceptorContext;
+import org.springframework.util.ClassUtils;
+
+import java.lang.reflect.Method;
+
+/**
+ * @author zhouhao
+ * @since 3.0
+ */
+public interface DynamicFormAuthorizeDefinitionParser extends AopMethodAuthorizeDefinitionCustomizerParser {
+    @Override
+    default AuthorizeDefinition parse(Class target, Method method, MethodInterceptorContext context) {
+        if (!ClassUtils.getUserClass(target).equals(DynamicFormOperationController.class)
+                || context == null) {
+            return null;
+        }
+        Authorize methodAuth = AopUtils.findMethodAnnotation(target, method, Authorize.class);
+
+        //获取表单id
+        return context.<String>getParameter("formId")
+                .map(formId -> getDefinition(formId, methodAuth == null ? new String[0] : methodAuth.action()))
+                .orElse(null);
+    }
+
+    AuthorizeDefinition getDefinition(String formId, String[] action);
+}

+ 16 - 3
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-controller/src/main/java/org/hswebframework/web/controller/form/DynamicFormOperationController.java

@@ -9,7 +9,6 @@ import org.hswebframework.web.commons.entity.param.DeleteParamEntity;
 import org.hswebframework.web.commons.entity.param.QueryParamEntity;
 import org.hswebframework.web.commons.entity.param.UpdateParamEntity;
 import org.hswebframework.web.controller.message.ResponseMessage;
-import org.hswebframework.web.logging.AccessLogger;
 import org.hswebframework.web.service.form.DynamicFormOperationService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -23,7 +22,7 @@ import java.util.Map;
  * @since 3.0
  */
 @RestController
-@Api(value = "动态表单操作",tags = "动态表单-数据操作")
+@Api(value = "动态表单操作", tags = "动态表单-数据操作")
 @RequestMapping("/dynamic/form/operation")
 @Authorize(permission = "dynamic-form-operation", description = "动态表单数据操作")
 public class DynamicFormOperationController {
@@ -37,11 +36,25 @@ public class DynamicFormOperationController {
 
     @GetMapping("/{formId}")
     @ApiOperation("动态查询")
-    @Authorize(action = Permission.ACTION_GET)
+    @Authorize(action = Permission.ACTION_QUERY)
     public ResponseMessage<PagerResult<Object>> selectPager(@PathVariable String formId, QueryParamEntity paramEntity) {
         return ResponseMessage.ok(dynamicFormOperationService.selectPager(formId, paramEntity));
     }
 
+    @GetMapping("/{formId}/single")
+    @ApiOperation("动态查询返回单条数据")
+    @Authorize(action = Permission.ACTION_QUERY)
+    public ResponseMessage<Object> selectSingle(@PathVariable String formId, QueryParamEntity paramEntity) {
+        return ResponseMessage.ok(dynamicFormOperationService.selectSingle(formId, paramEntity));
+    }
+
+    @GetMapping("/{formId}/count")
+    @ApiOperation("动态查询返回数据条数")
+    @Authorize(action = Permission.ACTION_QUERY)
+    public ResponseMessage<Object> selectCount(@PathVariable String formId, QueryParamEntity paramEntity) {
+        return ResponseMessage.ok(dynamicFormOperationService.count(formId, paramEntity));
+    }
+
     @PostMapping("/{formId}")
     @ApiOperation("新增")
     @Authorize(action = Permission.ACTION_ADD)

+ 1 - 1
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-entity/src/main/java/org/hswebframework/web/entity/form/DynamicFormEntity.java

@@ -171,7 +171,7 @@ public interface DynamicFormEntity extends GenericEntity<String> {
     /**
      * @return 触发器
      */
-    @ApiModelProperty(value = "触发器.", example = "[{\"language\":\"groovy\",\"script\":\" return true;\"}]")
+    @ApiModelProperty(value = "触发器.", example = "[{\"trigger\":\"update.before\",\"language\":\"groovy\",\"script\":\" return true;\"}]")
     String getTriggers();
 
     /**

+ 1 - 2
hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-service/hsweb-system-dynamic-form-service-api/src/main/java/org/hswebframework/web/service/form/initialize/DynamicFormInitializeCustomer.java

@@ -1,9 +1,8 @@
 package org.hswebframework.web.service.form.initialize;
 
 /**
- * TODO 完成注释
- *
  * @author zhouhao
+ * @since 3.0
  */
 public interface DynamicFormInitializeCustomer {
     void customTableSetting(TableInitializeContext context);