From ec6ccb175deca534af2f3ead6d5ff8bca2a0de30 Mon Sep 17 00:00:00 2001 From: ldj_willow Date: Sat, 24 Sep 2022 10:22:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/nl/AppRun.java | 6 +- .../common/annotation/AnonymousAccess.java | 30 --- .../rest/AnonymousDeleteMapping.java | 86 ------ .../annotation/rest/AnonymousGetMapping.java | 86 ------ .../rest/AnonymousPatchMapping.java | 87 ------- .../annotation/rest/AnonymousPostMapping.java | 87 ------- .../annotation/rest/AnonymousPutMapping.java | 87 ------- .../quartz/task/wql/QS_PERFORMANCE.wql | 245 ------------------ .../nl/modules/quartz/task/wql/SYS_LOGS01.wql | 55 ---- .../org/nl/modules/quartz/task/wql/sta.xls | Bin 188928 -> 0 bytes .../rest/AuthorizationController.java | 14 +- .../modules/system/rest/LimitController.java | 4 +- .../src/main/resources/config/application.yml | 2 +- 13 files changed, 11 insertions(+), 778 deletions(-) delete mode 100644 nladmin-system/src/main/java/org/nl/modules/common/annotation/AnonymousAccess.java delete mode 100644 nladmin-system/src/main/java/org/nl/modules/common/annotation/rest/AnonymousDeleteMapping.java delete mode 100644 nladmin-system/src/main/java/org/nl/modules/common/annotation/rest/AnonymousGetMapping.java delete mode 100644 nladmin-system/src/main/java/org/nl/modules/common/annotation/rest/AnonymousPatchMapping.java delete mode 100644 nladmin-system/src/main/java/org/nl/modules/common/annotation/rest/AnonymousPostMapping.java delete mode 100644 nladmin-system/src/main/java/org/nl/modules/common/annotation/rest/AnonymousPutMapping.java delete mode 100644 nladmin-system/src/main/java/org/nl/modules/quartz/task/wql/QS_PERFORMANCE.wql delete mode 100644 nladmin-system/src/main/java/org/nl/modules/quartz/task/wql/SYS_LOGS01.wql delete mode 100644 nladmin-system/src/main/java/org/nl/modules/quartz/task/wql/sta.xls diff --git a/nladmin-system/src/main/java/org/nl/AppRun.java b/nladmin-system/src/main/java/org/nl/AppRun.java index 1e1b2cb3f..fcbe866e9 100644 --- a/nladmin-system/src/main/java/org/nl/AppRun.java +++ b/nladmin-system/src/main/java/org/nl/AppRun.java @@ -1,9 +1,9 @@ package org.nl; +import cn.dev33.satoken.annotation.SaIgnore; import com.alicp.jetcache.anno.config.EnableCreateCacheAnnotation; import com.alicp.jetcache.anno.config.EnableMethodCache; import io.swagger.annotations.Api; -import org.nl.modules.common.annotation.rest.AnonymousGetMapping; import org.nl.wql.util.SpringContextHolder; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -14,6 +14,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.data.jpa.repository.config.EnableJpaAuditing; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.transaction.annotation.EnableTransactionManagement; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; /** @@ -58,7 +59,8 @@ public class AppRun { * * @return / */ - @AnonymousGetMapping("/") + @GetMapping("/") + @SaIgnore public String index() { return "Backend service started successfully"; } diff --git a/nladmin-system/src/main/java/org/nl/modules/common/annotation/AnonymousAccess.java b/nladmin-system/src/main/java/org/nl/modules/common/annotation/AnonymousAccess.java deleted file mode 100644 index 679568ff4..000000000 --- a/nladmin-system/src/main/java/org/nl/modules/common/annotation/AnonymousAccess.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2019-2020 Zheng Jie - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.nl.modules.common.annotation; - -import java.lang.annotation.*; - -/** - * @author jacky - * 用于标记匿名访问方法 - */ -@Inherited -@Documented -@Target({ElementType.METHOD,ElementType.ANNOTATION_TYPE}) -@Retention(RetentionPolicy.RUNTIME) -public @interface AnonymousAccess { - -} diff --git a/nladmin-system/src/main/java/org/nl/modules/common/annotation/rest/AnonymousDeleteMapping.java b/nladmin-system/src/main/java/org/nl/modules/common/annotation/rest/AnonymousDeleteMapping.java deleted file mode 100644 index dedeeb4d4..000000000 --- a/nladmin-system/src/main/java/org/nl/modules/common/annotation/rest/AnonymousDeleteMapping.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2002-2016 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.nl.modules.common.annotation.rest; - -import org.nl.annotation.AnonymousAccess; -import org.springframework.core.annotation.AliasFor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; - -import java.lang.annotation.*; - -/** - * Annotation for mapping HTTP {@code DELETE} requests onto specific handler - * methods. - * 支持匿名访问 DeleteMapping - * - * @author liaojinlong - * @see AnonymousGetMapping - * @see AnonymousPostMapping - * @see AnonymousPutMapping - * @see AnonymousPatchMapping - * @see RequestMapping - */ -@AnonymousAccess -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.RUNTIME) -@Documented -@RequestMapping(method = RequestMethod.DELETE) -public @interface AnonymousDeleteMapping { - - /** - * Alias for {@link RequestMapping#name}. - */ - @AliasFor(annotation = RequestMapping.class) - String name() default ""; - - /** - * Alias for {@link RequestMapping#value}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] value() default {}; - - /** - * Alias for {@link RequestMapping#path}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] path() default {}; - - /** - * Alias for {@link RequestMapping#params}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] params() default {}; - - /** - * Alias for {@link RequestMapping#headers}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] headers() default {}; - - /** - * Alias for {@link RequestMapping#consumes}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] consumes() default {}; - - /** - * Alias for {@link RequestMapping#produces}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] produces() default {}; - -} diff --git a/nladmin-system/src/main/java/org/nl/modules/common/annotation/rest/AnonymousGetMapping.java b/nladmin-system/src/main/java/org/nl/modules/common/annotation/rest/AnonymousGetMapping.java deleted file mode 100644 index 0588a58e0..000000000 --- a/nladmin-system/src/main/java/org/nl/modules/common/annotation/rest/AnonymousGetMapping.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2002-2016 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.nl.modules.common.annotation.rest; - -import org.nl.annotation.AnonymousAccess; -import org.springframework.core.annotation.AliasFor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; - -import java.lang.annotation.*; - -/** - * Annotation for mapping HTTP {@code GET} requests onto specific handler - * methods. - *

- * 支持匿名访问 GetMapping - * - * @author liaojinlong - * @see RequestMapping - */ -@AnonymousAccess -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.RUNTIME) -@Documented -@RequestMapping(method = RequestMethod.GET) -public @interface AnonymousGetMapping { - - /** - * Alias for {@link RequestMapping#name}. - */ - @AliasFor(annotation = RequestMapping.class) - String name() default ""; - - /** - * Alias for {@link RequestMapping#value}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] value() default {}; - - /** - * Alias for {@link RequestMapping#path}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] path() default {}; - - /** - * Alias for {@link RequestMapping#params}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] params() default {}; - - /** - * Alias for {@link RequestMapping#headers}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] headers() default {}; - - /** - * Alias for {@link RequestMapping#consumes}. - * - * @since 4.3.5 - */ - @AliasFor(annotation = RequestMapping.class) - String[] consumes() default {}; - - /** - * Alias for {@link RequestMapping#produces}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] produces() default {}; - -} diff --git a/nladmin-system/src/main/java/org/nl/modules/common/annotation/rest/AnonymousPatchMapping.java b/nladmin-system/src/main/java/org/nl/modules/common/annotation/rest/AnonymousPatchMapping.java deleted file mode 100644 index 515ddd1ed..000000000 --- a/nladmin-system/src/main/java/org/nl/modules/common/annotation/rest/AnonymousPatchMapping.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2002-2016 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.nl.modules.common.annotation.rest; - -import org.nl.annotation.AnonymousAccess; -import org.springframework.core.annotation.AliasFor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; - -import java.lang.annotation.*; - -/** - * Annotation for mapping HTTP {@code PATCH} requests onto specific handler - * methods. - * * 支持匿名访问 PatchMapping - * - * @author liaojinlong - * @see AnonymousGetMapping - * @see AnonymousPostMapping - * @see AnonymousPutMapping - * @see AnonymousDeleteMapping - * @see RequestMapping - */ -@AnonymousAccess -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.RUNTIME) -@Documented -@RequestMapping(method = RequestMethod.PATCH) -public @interface AnonymousPatchMapping { - - /** - * Alias for {@link RequestMapping#name}. - */ - @AliasFor(annotation = RequestMapping.class) - String name() default ""; - - /** - * Alias for {@link RequestMapping#value}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] value() default {}; - - /** - * Alias for {@link RequestMapping#path}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] path() default {}; - - /** - * Alias for {@link RequestMapping#params}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] params() default {}; - - /** - * Alias for {@link RequestMapping#headers}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] headers() default {}; - - /** - * Alias for {@link RequestMapping#consumes}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] consumes() default {}; - - /** - * Alias for {@link RequestMapping#produces}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] produces() default {}; - -} diff --git a/nladmin-system/src/main/java/org/nl/modules/common/annotation/rest/AnonymousPostMapping.java b/nladmin-system/src/main/java/org/nl/modules/common/annotation/rest/AnonymousPostMapping.java deleted file mode 100644 index 326e9b17c..000000000 --- a/nladmin-system/src/main/java/org/nl/modules/common/annotation/rest/AnonymousPostMapping.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2002-2016 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.nl.modules.common.annotation.rest; - -import org.nl.annotation.AnonymousAccess; -import org.springframework.core.annotation.AliasFor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; - -import java.lang.annotation.*; - -/** - * Annotation for mapping HTTP {@code POST} requests onto specific handler - * methods. - * 支持匿名访问 PostMapping - * - * @author liaojinlong - * @see AnonymousGetMapping - * @see AnonymousPostMapping - * @see AnonymousPutMapping - * @see AnonymousDeleteMapping - * @see RequestMapping - */ -@AnonymousAccess -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.RUNTIME) -@Documented -@RequestMapping(method = RequestMethod.POST) -public @interface AnonymousPostMapping { - - /** - * Alias for {@link RequestMapping#name}. - */ - @AliasFor(annotation = RequestMapping.class) - String name() default ""; - - /** - * Alias for {@link RequestMapping#value}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] value() default {}; - - /** - * Alias for {@link RequestMapping#path}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] path() default {}; - - /** - * Alias for {@link RequestMapping#params}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] params() default {}; - - /** - * Alias for {@link RequestMapping#headers}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] headers() default {}; - - /** - * Alias for {@link RequestMapping#consumes}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] consumes() default {}; - - /** - * Alias for {@link RequestMapping#produces}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] produces() default {}; - -} diff --git a/nladmin-system/src/main/java/org/nl/modules/common/annotation/rest/AnonymousPutMapping.java b/nladmin-system/src/main/java/org/nl/modules/common/annotation/rest/AnonymousPutMapping.java deleted file mode 100644 index bef341b20..000000000 --- a/nladmin-system/src/main/java/org/nl/modules/common/annotation/rest/AnonymousPutMapping.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2002-2016 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.nl.modules.common.annotation.rest; - -import org.nl.annotation.AnonymousAccess; -import org.springframework.core.annotation.AliasFor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; - -import java.lang.annotation.*; - -/** - * Annotation for mapping HTTP {@code PUT} requests onto specific handler - * methods. - * * 支持匿名访问 PutMapping - * - * @author liaojinlong - * @see AnonymousGetMapping - * @see AnonymousPostMapping - * @see AnonymousPutMapping - * @see AnonymousDeleteMapping - * @see RequestMapping - */ -@AnonymousAccess -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.RUNTIME) -@Documented -@RequestMapping(method = RequestMethod.PUT) -public @interface AnonymousPutMapping { - - /** - * Alias for {@link RequestMapping#name}. - */ - @AliasFor(annotation = RequestMapping.class) - String name() default ""; - - /** - * Alias for {@link RequestMapping#value}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] value() default {}; - - /** - * Alias for {@link RequestMapping#path}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] path() default {}; - - /** - * Alias for {@link RequestMapping#params}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] params() default {}; - - /** - * Alias for {@link RequestMapping#headers}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] headers() default {}; - - /** - * Alias for {@link RequestMapping#consumes}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] consumes() default {}; - - /** - * Alias for {@link RequestMapping#produces}. - */ - @AliasFor(annotation = RequestMapping.class) - String[] produces() default {}; - -} diff --git a/nladmin-system/src/main/java/org/nl/modules/quartz/task/wql/QS_PERFORMANCE.wql b/nladmin-system/src/main/java/org/nl/modules/quartz/task/wql/QS_PERFORMANCE.wql deleted file mode 100644 index 77bbc003a..000000000 --- a/nladmin-system/src/main/java/org/nl/modules/quartz/task/wql/QS_PERFORMANCE.wql +++ /dev/null @@ -1,245 +0,0 @@ -[交易说明] - 交易名: 业绩指标 - 所属模块: - 功能简述: - 版权所有: - 表引用: - 版本经历: - -[数据库] - --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 - -[IO定义] - ################################################# - ## 表字段对应输入参数 - ################################################# - 输入.flag TYPEAS s_string - 输入.where TYPEAS f_string - - -[临时表] - --这边列出来的临时表就会在运行期动态创建 - -[临时变量] - --所有中间过程变量均可在此处定义 - -[业务过程] - - ########################################## - # 1、输入输出检查 # - ########################################## - - - ########################################## - # 2、主过程前处理 # - ########################################## - - - ########################################## - # 3、业务主过程 # - ########################################## - - IF 输入.flag = "1" - QUERY - SELECT - work.workorder_id, - task.material_id, - task.pcsn - FROM - PDM_BI_WorkOrder work - LEFT JOIN PDM_BI_WorkTask task ON work.workorder_id = task.workorder_id - WHERE - work.is_delete = '0' - AND task.status = '99' - AND task.workprocedure_code = 'GX003' - AND task.nextworkprocedure_id = task.workprocedure_id - AND ( - work.create_time>=date(now()) and work.create_time "" - line.material_id = 输入.material_id - ENDOPTION - - OPTION 输入.pcsn <> "" - line.pcsn = 输入.pcsn - ENDOPTION - - ENDSELECT - ENDQUERY - ENDIF - - IF 输入.flag = "3" - QUERY - SELECT - count(*) AS sum - FROM - PDM_BI_WorkTask work - WHERE - workprocedure_code = 'GX003' - AND status = '99' - OPTION 输入.where <> "" - 输入.where - ENDOPTION - - ENDSELECT - ENDQUERY - ENDIF - - IF 输入.flag = "4" - QUERY - SELECT - count(*) AS sum - FROM - em_bi_deviceinfo - WHERE - workprocedure_code = 'GX003' - - ENDSELECT - ENDQUERY - ENDIF - - IF 输入.flag = "5" - QUERY - SELECT - count(*) AS sum - FROM - PDM_BI_WorkOrder work - LEFT JOIN QL_TEST_PhysicalMst phyMst ON work.material_id = phyMst.material_id AND work.pcsn = phyMst.pcsn - LEFT JOIN QL_TEST_InspectionSheetDtl shtDtl ON work.material_id = shtDtl.material_id AND work.pcsn = shtDtl.pcsn - LEFT JOIN QL_TEST_InspectionSheetMst shtMst ON shtMst.inspection_id = shtDtl.inspection_id - WHERE - work.status = '99' - AND work.finish_type = '01' - AND work.realend_time <= work.planend_time - AND phyMst.is_delete = '0' - AND phyMst.is_effective = '1' - AND shtMst.is_delete = '0' - AND shtMst.bill_status = '99' - AND shtDtl.bill_status = '99' - AND shtDtl.result = '01' - OPTION 输入.where <> "" - 输入.where - ENDOPTION - - ENDSELECT - ENDQUERY - ENDIF - - IF 输入.flag = "6" - QUERY - SELECT - count(*) AS sum - FROM - PDM_BI_WorkOrder work - WHERE - work.status = '99' - AND work.is_delete = '0' - OPTION 输入.where <> "" - 输入.where - ENDOPTION - - ENDSELECT - ENDQUERY - ENDIF - - IF 输入.flag = "7" - QUERY - SELECT - count(*) AS sum - FROM - QL_TEST_PhysicalMst phyMst - LEFT JOIN QL_TEST_InspectionSheetDtl shtDtl ON phyMst.material_id = shtDtl.material_id AND phyMst.pcsn = shtDtl.pcsn - LEFT JOIN QL_TEST_InspectionSheetMst shtMst ON shtMst.inspection_id = shtDtl.inspection_id - WHERE - phyMst.is_delete = '0' - AND phyMst.is_effective = '1' - AND shtMst.is_delete = '0' - AND shtMst.bill_status = '99' - AND shtDtl.bill_status = '99' - AND shtDtl.result = '01' - OPTION 输入.where <> "" - 输入.where - ENDOPTION - - ENDSELECT - ENDQUERY - ENDIF - - IF 输入.flag = "8" - QUERY - SELECT - count(*) AS sum - FROM - QL_TEST_PhysicalMst phyMst - WHERE - phyMst.is_delete = '0' - AND phyMst.is_effective = '1' - OPTION 输入.where <> "" - 输入.where - ENDOPTION - - ENDSELECT - ENDQUERY - ENDIF - - IF 输入.flag = "9" - QUERY - SELECT - count(*) AS sum - FROM - QL_TEST_WorkProcedureMst mst - WHERE - mst.bill_status = '99' - AND mst.is_delete = '0' - AND mst.result = '01' - AND mst.workprocedure_code = 'GX003' - OPTION 输入.where <> "" - 输入.where - ENDOPTION - - ENDSELECT - ENDQUERY - ENDIF - - IF 输入.flag = "10" - QUERY - SELECT - count(*) AS sum - FROM - QL_TEST_WorkProcedureMst mst - WHERE - mst.bill_status = '99' - AND mst.is_delete = '0' - AND mst.workprocedure_code = 'GX003' - OPTION 输入.where <> "" - 输入.where - ENDOPTION - - ENDSELECT - ENDQUERY - ENDIF - - - diff --git a/nladmin-system/src/main/java/org/nl/modules/quartz/task/wql/SYS_LOGS01.wql b/nladmin-system/src/main/java/org/nl/modules/quartz/task/wql/SYS_LOGS01.wql deleted file mode 100644 index 0017e2382..000000000 --- a/nladmin-system/src/main/java/org/nl/modules/quartz/task/wql/SYS_LOGS01.wql +++ /dev/null @@ -1,55 +0,0 @@ -[交易说明] - 交易名: 日志 - 所属模块: - 功能简述: - 版权所有: - 表引用: - 版本经历: - -[数据库] - --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 - -[IO定义] - ################################################# - ## 表字段对应输入参数 - ################################################# - 输入.flag TYPEAS s_string - - -[临时表] - --这边列出来的临时表就会在运行期动态创建 - -[临时变量] - --所有中间过程变量均可在此处定义 - -[业务过程] - - ########################################## - # 1、输入输出检查 # - ########################################## - - - ########################################## - # 2、主过程前处理 # - ########################################## - - - ########################################## - # 3、业务主过程 # - ########################################## - - IF 输入.flag = "1" - PAGEQUERY - SELECT - TIMESTAMPDIFF(DAY,create_time,now()) AS time,request_ip - FROM - sys_log - WHERE - 1=1 - - ENDSELECT - ENDPAGEQUERY - ENDIF - - - diff --git a/nladmin-system/src/main/java/org/nl/modules/quartz/task/wql/sta.xls b/nladmin-system/src/main/java/org/nl/modules/quartz/task/wql/sta.xls deleted file mode 100644 index 563f59c1d9e9a3b237e3fcc33834c1d42fa34d61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 188928 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

-)~e*5I76Q9LA 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 WvV&>T9c)0_j_s{92 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

0=e>laIS6cujrO8}&T+n}h@3o&LapvUKjBZZ`eS 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 login(@Validated @RequestBody AuthUserDto authUser, HttpServletRequest request) throws Exception { // 密码解密 - 前端的加密规则: encrypt String password = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey, authUser.getPassword()); @@ -136,7 +130,7 @@ public class AuthorizationController { } @ApiOperation("获取验证码") - @AnonymousGetMapping(value = "/code") + @GetMapping(value = "/code") public ResponseEntity getCode() { // 获取运算的结果 Captcha captcha = loginProperties.getCaptcha(); @@ -157,7 +151,7 @@ public class AuthorizationController { } @ApiOperation("退出登录") - @AnonymousDeleteMapping(value = "/logout") + @DeleteMapping(value = "/logout") public ResponseEntity logout(HttpServletRequest request) { onlineUserService.logout(StpUtil.getTokenValue()); StpUtil.logout(); diff --git a/nladmin-system/src/main/java/org/nl/modules/system/rest/LimitController.java b/nladmin-system/src/main/java/org/nl/modules/system/rest/LimitController.java index 7c8cbe1fe..da7daffc8 100644 --- a/nladmin-system/src/main/java/org/nl/modules/system/rest/LimitController.java +++ b/nladmin-system/src/main/java/org/nl/modules/system/rest/LimitController.java @@ -18,7 +18,7 @@ package org.nl.modules.system.rest; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.nl.modules.common.annotation.Limit; -import org.nl.modules.common.annotation.rest.AnonymousGetMapping; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -38,7 +38,7 @@ public class LimitController { /** * 测试限流注解,下面配置说明该接口 60秒内最多只能访问 10次,保存到redis的键名为 limit_test, */ - @AnonymousGetMapping + @GetMapping @ApiOperation("测试") @Limit(key = "test", period = 60, count = 10, name = "testLimit", prefix = "limit") public int test() { diff --git a/nladmin-system/src/main/resources/config/application.yml b/nladmin-system/src/main/resources/config/application.yml index dac2e02cb..2e8998265 100644 --- a/nladmin-system/src/main/resources/config/application.yml +++ b/nladmin-system/src/main/resources/config/application.yml @@ -75,4 +75,4 @@ security: - /actuator - /actuator/** # 上传 - - /api/localStorage/pictures \ No newline at end of file + - /api/localStorage/pictures