Explorar el Código

切换为idea项目

Jim Wu hace 2 años
padre
commit
2f0b3bb346

+ 1 - 0
.gitignore

@@ -47,3 +47,4 @@ build/
 .gradle/
 /logs/
 /war/WEB-INF/eshome/esdata/nodes/
+*.rdb

+ 8 - 0
.idea/.gitignore

@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml

+ 17 - 0
.idea/gradle.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="GradleSettings">
+    <option name="linkedExternalProjectsSettings">
+      <GradleProjectSettings>
+        <option name="distributionType" value="LOCAL" />
+        <option name="externalProjectPath" value="$PROJECT_DIR$" />
+        <option name="gradleHome" value="$PROJECT_DIR$/../../../softs/gradle-8.2.1" />
+        <option name="modules">
+          <set>
+            <option value="$PROJECT_DIR$" />
+          </set>
+        </option>
+      </GradleProjectSettings>
+    </option>
+  </component>
+</project>

+ 8 - 0
.idea/misc.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ExternalStorageConfigurationManager" enabled="true" />
+  <component name="FrameworkDetectionExcludesConfiguration">
+    <file type="web" url="file://$PROJECT_DIR$" />
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK" />
+</project>

+ 6 - 0
.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+  </component>
+</project>

+ 41 - 8
build.gradle

@@ -1,15 +1,46 @@
 //---------------------- 公共部分 ----------------------//
 
 //系统启动初始化:自动下载插件
-buildscript {
-    repositories {
-    	maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' } //阿里云
+def repoConfig = {
+    all { ArtifactRepository repo ->
+        if (repo instanceof MavenArtifactRepository) {
+            def url = repo.url.toString()
+            if (url.contains('repo1.maven.org/maven2')
+                    || url.contains('repo.maven.org/maven2')
+                    || url.contains('repo.maven.apache.org/maven2')
+                    || url.contains('jcenter.bintray.com')
+                    || url.contains('maven.google.com')
+                    || url.contains('plugins.gradle.org/m2')
+                    || url.contains('repo.spring.io/libs-milestone')
+                    || url.contains('repo.spring.io/plugins-release')
+                    || url.contains('repo.grails.org/grails/core')
+                    || url.contains('repository.apache.org/snapshots')
+            ) {
+                println "gradle init: [buildscript.repositories] (${repo.name}: ${repo.url}) removed"
+                remove repo
+            }
+        }
+    }
+
+    // Maven 镜像聚合了:central、jcenter、google、gradle-plugin
+    maven { url 'https://maven.aliyun.com/repository/central' }
+    maven { url 'https://maven.aliyun.com/repository/jcenter' }
+    maven { url 'https://maven.aliyun.com/repository/google' }
+    maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
+    maven { url 'https://maven.aliyun.com/repository/public/' }
+}
+
+allprojects {
+    buildscript {
+        repositories repoConfig
     }
+    repositories repoConfig
 }
 
-//公共仓库配置
 repositories {
-    maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' } //阿里云
+    maven {
+        url 'https://maven.aliyun.com/repository/gradle-plugin'
+    }
 }
 
 //---------------------- JAVA 编译插件 ----------------------//
@@ -254,7 +285,7 @@ dependencies {
 
     implementation 'org.freemarker:freemarker:2.3.30'
     implementation 'com.alibaba:druid:1.1.23'
-    implementation 'mysql:mysql-connector-java:8.0.21'
+    implementation 'mysql:mysql-connector-java:8.0.33'
     implementation 'org.redisson:redisson:3.15.6' //redis分布式扩展支持
     implementation 'org.jboss.marshalling:jboss-marshalling:2.0.9.Final'
     implementation 'org.jboss.marshalling:jboss-marshalling-river:2.0.9.Final'
@@ -358,10 +389,12 @@ dependencies {
 
 	//其它编译但是不需要发布的
     compileOnly 'javax.servlet.jsp:jsp-api:2.2'
-    compileOnly 'org.projectlombok:lombok:1.18.28'
-	annotationProcessor 'org.projectlombok:lombok:1.18.28'
+    compileOnly 'org.projectlombok:lombok:1.18.30'
+	annotationProcessor 'org.projectlombok:lombok:1.18.30'
+    testAnnotationProcessor 'org.projectlombok:lombok:1.18.30'
 
     //参与测试不进行发布
+    testImplementation 'org.projectlombok:lombok:1.18.30'
     testImplementation 'junit:junit:4.8' //4.11的版本需要额外包
 
 }

+ 0 - 3
src/test/java/ControllerTypescriptApiExportTest.java

@@ -41,9 +41,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
-import com.google.common.base.CaseFormat;
-import com.mysql.cj.xdevapi.Collection;
-
 import freemarker.template.Configuration;
 import freemarker.template.Template;
 import freemarker.template.TemplateException;

+ 0 - 3
src/test/java/ControllerUViewUiApiExportTest.java

@@ -40,9 +40,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
-import com.google.common.base.CaseFormat;
-import com.mysql.cj.xdevapi.Collection;
-
 import freemarker.template.Configuration;
 import freemarker.template.Template;
 import freemarker.template.TemplateException;

+ 4 - 2
src/test/java/JExcelWriterTest.java

@@ -1,4 +1,5 @@
 import org.ccframe.commons.data.JExcelWriter;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import java.io.File;
@@ -12,8 +13,9 @@ import java.util.UUID;
 /**
  * @author Jim
  */
-//@Ignore("手动测试")
-public class JExcelWriterTest {
+
+@Ignore("手动测试")
+class JExcelWriterTest {
 
     @Test
     public void testJExcelWriter(){

+ 18 - 16
src/test/resources/CodeEnum.js

@@ -3,14 +3,18 @@
   用法:
   import CodeEnum from codeEnum.js;
   然后直接使用Enum例如 CodeEnum.UserStatCodeEnum.NORMAL;
-  generate at 2021-11-9 17:05:20
+  generate at 2023-10-26 15:55:30
 */
 
 const CodeEnum = {
 	AccountTypeCodeEnum: {
-		HS_COIN: '0',
-		CREDITS: '1',
-		PRE_DEPOSIT: '2',
+		CREDITS: '0',
+		PRE_DEPOSIT: '1',
+	},
+	ActuatorTimeRangeCodeEnum: {
+		MINUTE30: '0',
+		HOUR8: '1',
+		HOUR24: '2',
 	},
 	ApproveStatusCodeEnum: {
 		NOT_SUBMIT: '0',
@@ -45,19 +49,17 @@ const CodeEnum = {
 		MULTI_SELECT: '5',
 	},
 	RoleCodeEnum: {
-		ADMIN: '0',
-		SUPER_ADMIN: '1',
-		REPORT_ADMIN: '2',
-		USER: '3',
-		VIP: '4',
-		SVIP: '5',
+		GOD: '0',
+		ADMIN: '1',
+		SUPER_ADMIN: '2',
+		REPORT_ADMIN: '3',
+		USER: '4',
+		VIP: '5',
+		SVIP: '6',
 	},
 	TreeNodeTypeCodeEnum: {
 		VIRTUAL_ROOT: '0',
-		SYS_MENU_RES: '1',
-		ARTICLE_CATEGORY: '2',
-		PRODUCT_CATEGORY: '3',
-		ZONE: '4',
+		ZONE: '1',
 	},
 	UserStatusCodeEnum: {
 		NORMAL: '0',
@@ -66,7 +68,7 @@ const CodeEnum = {
 	},
 };
 
-CodeEnum.enumToText = ((enumValue, enumClass, enumTexts) =>{
+CodeEnum.enumToText = (enumValue, enumClass, enumTexts) =>{
     const enumTextsArray = enumTexts.split(',');
     let result = '';
 
@@ -79,6 +81,6 @@ CodeEnum.enumToText = ((enumValue, enumClass, enumTexts) =>{
         });
 	}
     return result;
-});
+};
 
 export default CodeEnum;

+ 73 - 76
src/test/resources/CodeEnum.ts

@@ -1,84 +1,81 @@
 /**
   使用模板生成的代码表
   用法:
-  import {CodeEnum} from 'codeEnum';
+  import * as CodeEnum from 'codeEnum';
   然后直接使用Enum例如 CodeEnum.UserStatCodeEnum.NORMAL;
-  generate at 2021-10-27 11:02:37
+  generate at 2023-10-26 15:55:30
 */
 
-const CodeEnum = {
-	AccountTypeCodeEnum: {
-		HS_COIN: '0',
-		CREDITS: '1',
-		PRE_DEPOSIT: '2'
-	},
-	ApproveStatusCodeEnum: {
-		NOT_SUBMIT: '0',
-		QUEUE: '1',
-		APPROVE: '2',
-		DENY: '3'
-	},
-	BoolCodeEnum: {
-		YES: 'Y',
-		NO: 'N'
-	},
-	CnWeekDayCodeEnum: {
-		MONDAY: '0',
-		TUESDAY: '1',
-		WEDNESDAY: '2',
-		THURSDAY: '3',
-		FRIDAY: '4',
-		SATURDAY: '5',
-		SUNDAY: '6'
-	},
-	MenuResTypeCodeEnum: {
-		STATUS_0: '0',
-		STATUS_1: '1',
-		STATUS_2: '2'
-	},
-	ParamTypeCodeEnum: {
-		HIDDEN: '0',
-		TEXT: '1',
-		HTML: '2',
-		SWITCH: '3',
-		SINGLE_SELECT: '4',
-		MULTI_SELECT: '5'
-	},
-	RoleCodeEnum: {
-		ADMIN: '0',
-		SUPER_ADMIN: '1',
-		REPORT_ADMIN: '2',
-		USER: '3',
-		VIP: '4',
-		SVIP: '5'
-	},
-	TreeNodeTypeCodeEnum: {
-		VIRTUAL_ROOT: '0',
-		SYS_MENU_RES: '1',
-		ARTICLE_CATEGORY: '2',
-		PRODUCT_CATEGORY: '3',
-		ZONE: '4'
-	},
-	UserStatusCodeEnum: {
-		NORMAL: '0',
-		FREEZE: '1',
-		DELETED: '2'
-	},
-	enumToText: ((enumValue : string, enumClass : string, enumTexts : string) =>{
-	    const enumTextsArray = enumTexts.split(',');
-	    let result = '';
-	
-	    const EnumObj = CodeEnum[enumClass];
-	    if(EnumObj !== undefined){
-	        Object.keys(EnumObj).forEach((key) => {
-	            if(EnumObj[key] === enumValue){
-	                result = enumTextsArray[parseInt(EnumObj[key])];
-	            }
-	        });
-		}
-	    return result;
-	})
-};
+export enum AccountTypeCodeEnum {
+  CREDITS = '0',
+  PRE_DEPOSIT = '1'
+}
+export enum ActuatorTimeRangeCodeEnum {
+  MINUTE30 = '0',
+  HOUR8 = '1',
+  HOUR24 = '2'
+}
+export enum ApproveStatusCodeEnum {
+  NOT_SUBMIT = '0',
+  QUEUE = '1',
+  APPROVE = '2',
+  DENY = '3'
+}
+export enum BoolCodeEnum {
+  YES = 'Y',
+  NO = 'N'
+}
+export enum CnWeekDayCodeEnum {
+  MONDAY = '0',
+  TUESDAY = '1',
+  WEDNESDAY = '2',
+  THURSDAY = '3',
+  FRIDAY = '4',
+  SATURDAY = '5',
+  SUNDAY = '6'
+}
+export enum MenuResTypeCodeEnum {
+  STATUS_0 = '0',
+  STATUS_1 = '1',
+  STATUS_2 = '2'
+}
+export enum ParamTypeCodeEnum {
+  HIDDEN = '0',
+  TEXT = '1',
+  HTML = '2',
+  SWITCH = '3',
+  SINGLE_SELECT = '4',
+  MULTI_SELECT = '5'
+}
+export enum RoleCodeEnum {
+  GOD = '0',
+  ADMIN = '1',
+  SUPER_ADMIN = '2',
+  REPORT_ADMIN = '3',
+  USER = '4',
+  VIP = '5',
+  SVIP = '6'
+}
+export enum TreeNodeTypeCodeEnum {
+  VIRTUAL_ROOT = '0',
+  ZONE = '1'
+}
+export enum UserStatusCodeEnum {
+  NORMAL = '0',
+  FREEZE = '1',
+  DELETED = '2'
+}
 
+export type Enum<E> = Record<keyof E, number | string> & { [k: number]: string }
 
-export default CodeEnum;
+export function enumToText<E extends Enum<E>>(enumValue: string, enumClass: E, enumTexts: string): string {
+  const enumTextsArray = enumTexts.split(',')
+  let result = ''
+
+  Object.values(enumClass).forEach((value, index) => {
+    if (value === enumValue) {
+      result = enumTextsArray[index]
+    }
+  })
+  return result
+}

+ 2 - 0
src/test/resources/QueryObject.js

@@ -0,0 +1,2 @@
+export default {
+}

+ 295 - 58
src/test/resources/adminAPI.ts

@@ -1,6 +1,18 @@
 /**
-    Auto generate by ccframeTool@JIM at 2021-12-26 22:26:26
+    TypeScript API模块.
+    该功能基于V3 Admin改进的service模块,支持url参数和from post
+
+    usage:
+    1) import * as adminAPI from '@/api/adminAPI.vue', 其中adminAPI是别名,后台API建议用adminAPI,前台用memberAPI
+    2) adminAPI.<controller名>.<方法名> 来访问方法。注意多个参数要使用对象方式传入
+    3) 方法返回一个Promise,使用.then来执行回调参数接收
+    4) 后台的controller多个原始类型参数自动组装为application/x-www-form-urlencoded的形式来传递,避免生成太多VO,只有使用RequestBody方式时,才使用application/json来发送对象
+    5) application/json来发送对象时,允许增加其他原始类型参数,自动作为URL的参数来传递给后台
+    6) 业务类异常BusinessException自动激发弹窗提示(依赖改进的service模块)
+
+    Auto generate by ccframeTool@JIM at 2023-10-26 15:55:30
 */
+/* eslint-disable quotes */
 import { request } from '@/utils/service'
 
 export interface FileInf {
@@ -30,137 +42,362 @@ export interface FileInfDto {
   pictHeight?: number
   pictWidth?: number
 }
+export interface IndexingStatus {
+  indexingList?: any[]
+  taskCount?: number
+}
+export interface ReportMenuConfig {
+  menuList?: any[]
+  reportBaseUrl?: string
+  tokenValue?: string
+}
+export interface SoftwareAuth {
+  authTo?: string
+  leaseDate?: string
+}
+export interface SysStatusInfo {
+  hisStatusList?: any[]
+  jvmGcPause?: number
+  jvmMemoryCommitted?: number
+  jvmMemoryMax?: number
+  jvmMemoryUsed?: number
+  jvmThreadsDaemon?: number
+  jvmThreadsLive?: number
+  jvmThreadsPeak?: number
+  processCpuUsage?: number
+  processFilesMax?: number
+  processFilesOpen?: number
+  serverName?: string
+  systemCpuUsage?: number
+  time?: string
+  tomcatGlobalRequestMax?: number
+  tomcatThreadsBusy?: number
+  tomcatThreadsConfigMax?: number
+  tomcatThreadsCurrent?: number
+}
+export interface TreeNode {
+  createTime?: string
+  createUserId?: number
+  icon?: string
+  id?: number
+  ifSysReserve?: string
+  nodePath?: any[]
+  nodePathData?: string
+  sysObjectId?: number
+  treeNodeId?: number
+  treeNodeNm?: string
+  treeNodePosition?: number
+  treeNodeTypeCode?: string
+  updateTime?: string
+  updateUserId?: number
+  upperTreeNodeId?: number
+}
+export interface TreeNodeTree {
+  createTime?: string
+  createUserId?: number
+  icon?: string
+  id?: number
+  ifSysReserve?: string
+  nodePath?: any[]
+  nodePathData?: string
+  subNodeTree?: any[]
+  sysObjectId?: number
+  treeNodeId?: number
+  treeNodeNm?: string
+  treeNodePosition?: number
+  treeNodeTypeCode?: string
+  updateTime?: string
+  updateUserId?: number
+  upperTreeNodeId?: number
+}
 export interface UserInfo {
   avatar?: string
+  lastVersion?: string
+  loginId?: string
   name?: string
+  platformNm?: string
   roles?: any[]
 }
 
-/* eslint-disable */
+export const actuatorController = {
+  // 获取所有机器列表
+  getServerList() {
+    return request({
+      url: `admin/actuator/servers`,
+      method: 'get'
+    })
+  },
+  // 获取指定机器的状态信息
+  getSysStatus(actuatorTimeRangeCode: string | null, serverName: string | null) {
+    return request({
+      url: `admin/actuator/status`,
+      method: 'get',
+      params: {
+        actuatorTimeRangeCode,
+        serverName
+      }
+    })
+  }
+}
 export const cacheIndexController = {
-  rebuildIndex(params: {
-    idsStr?: string
-    searchService?: string
-  }) { // 重建索引
+  // 清理缓存
+  clearCache(region: string | null) {
     return request({
-      url: `admin/cacheIndex/rebuildIndex`,
+      url: `admin/cacheIndex/clearCache`,
       method: 'get',
-      params
+      params: {
+        region
+      }
     })
   },
-  resume(params: {
-    region?: string
-  }) { // 清理缓存
+  // 查询所有索引状态
+  queryIndexing() {
     return request({
-      url: `admin/cacheIndex/clearCache`,
+      url: `admin/cacheIndex/queryIndexing`,
+      method: 'get'
+    })
+  },
+  // 重建索引
+  rebuildIndex(idsStr: string | null, searchService: string | null) {
+    return request({
+      url: `admin/cacheIndex/rebuildIndex`,
       method: 'get',
-      params
+      params: {
+        idsStr,
+        searchService
+      }
     })
   },
+  // 单独建立指定索引,同时清理对象缓存
+  rebuildSingle(clientJwtAlg: string | null, searchService: string | null) {
+    return request({
+      url: `admin/cacheIndex/rebuildSingle`,
+      method: 'get',
+      params: {
+        clientJwtAlg,
+        searchService
+      }
+    })
+  }
 }
 export const fileInfController = {
-  loadFileInfDtoList(params: {
-    fileInfIds?: string
-  }) { // 
+  // loadFileInfDtoList
+  loadFileInfDtoList(fileInfIds: string | null) {
     return request({
       url: `admin/fileInf/loadFileInfDtoList`,
       method: 'get',
-      params
+      params: {
+        fileInfIds
+      }
     })
   },
+  // 添加
   save(
-  	data? : FileInf
-  ) { // 添加
+    data : FileInf
+  ) {
     return request({
       url: `admin/fileInf`,
       method: 'post',
       data
     })
   },
-  test(params: {
-    id?: number
-  }) { // 
+  // test
+  test(id: number | null) {
     return request({
-      url: `admin/fileInf/queryErrorFile/${params.id}`,
+      url: `admin/fileInf/queryErrorFile/${id}`,
       method: 'get',
-      params
+      params: {
+        id
+      }
     })
-  },
+  }
 }
 export const mainFrameController = {
-  doLogin(data: {
-    loginId?: string
-    sid?: string
-    userPsw?: string
-    validateCode?: string
-  }) { // 后台管理员登录
+  // 后台管理员登录
+  doLogin(loginId: string | null, sid: string | null, userPsw: string | null, validateCode: string | null) {
     return request({
       url: `admin/mainFrame/doLogin`,
       method: 'post',
       formPost: true,
-      data
+      data: {
+        loginId,
+        sid,
+        userPsw,
+        validateCode
+      }
     })
   },
-  heartbeat() { // 用户登录状态保持心跳,每5分钟一次
+  // 软件授权
+  getSoftwareAuth() {
     return request({
-      url: `admin/mainFrame/heartbeat`,
+      url: `admin/mainFrame/getSoftwareAuth`,
+      method: 'get'
+    })
+  },
+  // 软件授权
+  getVersion(maxRecord: number | null) {
+    return request({
+      url: `admin/mainFrame/getVersion`,
       method: 'get',
+      params: {
+        maxRecord
+      }
+    })
+  },
+  // 用户登录状态保持心跳,每5分钟一次
+  heartbeat() {
+    return request({
+      url: `admin/mainFrame/heartbeat`,
+      method: 'get'
     })
   },
-  updatePassword(params: {
-    userPsw?: string
-  }) { // 
+  // 用户修改密码
+  updatePassword(userPsw: string | null) {
     return request({
       url: `admin/mainFrame/updatePassword`,
-      method: 'get',
-      params
+      method: 'post',
+      formPost: true,
+      data: {
+        userPsw
+      }
     })
   },
-  userInfo() { // 获取登陆用户信息
+  // 获取登陆用户信息
+  userInfo() {
     return request({
       url: `admin/mainFrame/userInfo`,
-      method: 'get',
+      method: 'get'
     })
-  },
+  }
+}
+export const menuConfigController = {
+  // 获取报表菜单配置
+  getReportMenu() {
+    return request({
+      url: `admin/menuConfig/getReportMenu`,
+      method: 'get'
+    })
+  }
 }
 export const quartzController = {
-  list() { // 查询任务
+  // 查询任务
+  list(
+    data : any
+  ) {
     return request({
       url: `admin/quartz/list`,
       method: 'post',
+      data
     })
   },
-  pause(data: {
-    triggerKey?: string
-  }) { // 停止任务
+  // 暂停任务
+  pause(triggerKey: string | null) {
     return request({
       url: `admin/quartz/pause`,
       method: 'post',
       formPost: true,
-      data
+      data: {
+        triggerKey
+      }
     })
   },
-  resume(data: {
-    triggerKey?: string
-  }) { // 继续任务
+  // 继续任务
+  resume(triggerKey: string | null) {
     return request({
       url: `admin/quartz/resume`,
       method: 'post',
       formPost: true,
-      data
+      data: {
+        triggerKey
+      }
     })
-  },
+  }
 }
 export const simpleLabelValueController = {
-  getLabelValueList(params: {
-    beanName?: string
-    extraParam?: string
-  }) { // 
+  // 动态获取选择项
+  getLabelValueList(beanName: string | null, extraParam: string | null) {
     return request({
       url: `admin/simpleLabelValue`,
       method: 'get',
-      params
+      params: {
+        beanName,
+        extraParam
+      }
+    })
+  }
+}
+export const treeNodeController = {
+  // 添加节点
+  addNode(sysObjectId: number | null, treeNodeNm: string | null, treeNodePosition: number | null, upperTreeNodeId: number | null) {
+    return request({
+      url: `admin/treeNode/addNode`,
+      method: 'post',
+      formPost: true,
+      data: {
+        sysObjectId,
+        treeNodeNm,
+        treeNodePosition,
+        upperTreeNodeId
+      }
+    })
+  },
+  // 删除节点
+  deleteNode(autoPosition: boolean | null, deleteCheckBeans: string | null, treeNodeId: number | null) {
+    return request({
+      url: `admin/treeNode/deleteNode`,
+      method: 'post',
+      formPost: true,
+      data: {
+        autoPosition,
+        deleteCheckBeans,
+        treeNodeId
+      }
+    })
+  },
+  // 编辑节点
+  editNode(sysObjectId: number | null, treeNodeId: number | null, treeNodeNm: string | null, treeNodePosition: number | null) {
+    return request({
+      url: `admin/treeNode/editNode`,
+      method: 'post',
+      formPost: true,
+      data: {
+        sysObjectId,
+        treeNodeId,
+        treeNodeNm,
+        treeNodePosition
+      }
+    })
+  },
+  // 获得节点树子集
+  getAllSubNodes(treeNodeTypeCode: string | null) {
+    return request({
+      url: `admin/treeNode/getAllSubNodes`,
+      method: 'get',
+      params: {
+        treeNodeTypeCode
+      }
+    })
+  },
+  // 获得节点树
+  getTree(treeNodeTypeCode: string | null) {
+    return request({
+      url: `admin/treeNode/getTree`,
+      method: 'get',
+      params: {
+        treeNodeTypeCode
+      }
     })
   },
+  // 交换节点
+  swapNode(treeNodeAId: number | null, treeNodeBId: number | null) {
+    return request({
+      url: `admin/treeNode/swapNode`,
+      method: 'post',
+      formPost: true,
+      data: {
+        treeNodeAId,
+        treeNodeBId
+      }
+    })
+  }
 }
-/* eslint-enable */

+ 22 - 4
src/test/resources/memberAPI.js

@@ -1,20 +1,38 @@
 /**
-    Auto generate by ccframeTool@JIM at 2021-11-3 0:38:19
+    Auto generate by ccframeTool@JIM at 2023-10-26 15:55:30
 */
 import Vue from 'vue';
 
 export default {
 	commonApi: {
-		doLogin(loginId, userPsw, validateCode, sid){ // 前台管理员登录
+		doLogin(loginId, userPsw, validateCode, sid){ // 用户名密码方式会员登录
 			return Vue.prototype.$u.post(`api/common/doLogin`, {
 				loginId, userPsw, validateCode, sid
 			}, true)
 		},
-		mytest(page, size, testQuery){ // 测试方法
-			return Vue.prototype.$u.post(`api/common/test`, testQuery, false, {
+		mobileLogin(userMobile, validateCode, sid){ // 手机短信方式会员登录
+			return Vue.prototype.$u.post(`api/common/mobileLogin`, {
+				userMobile, validateCode, sid
+			}, true)
+		},
+		modUserPass(modPassword){ // 修改当前用户的密码
+			return Vue.prototype.$u.post(`api/common/modUserPass`, {
+				modPassword
+			}, true)
+		},
+		mytest(){ // 
+			return Vue.prototype.$u.get(`api/common/test`, {}, false)
+		},
+		mytest1(page, size, queryObject){ // 临时测试方法
+			return Vue.prototype.$u.post(`api/common/test1`, queryObject, false, {
 				page, size
 			})
 		},
+		sendAuthCode(userMobile, sid){ // 给会员发送鉴权短信
+			return Vue.prototype.$u.post(`api/common/sendAuthCode`, {
+				userMobile, sid
+			}, true)
+		},
 		uuid(){ // 页面唯一key
 			return Vue.prototype.$u.get(`api/common/uuid`, {}, false)
 		}

+ 62 - 29
src/test/resources/memberAPI.ts

@@ -1,6 +1,18 @@
 /**
-    Auto generate by ccframeTool@JIM at 2021-12-26 22:26:26
+    TypeScript API模块.
+    该功能基于V3 Admin改进的service模块,支持url参数和from post
+
+    usage:
+    1) import * as adminAPI from '@/api/adminAPI.vue', 其中adminAPI是别名,后台API建议用adminAPI,前台用memberAPI
+    2) adminAPI.<controller名>.<方法名> 来访问方法。注意多个参数要使用对象方式传入
+    3) 方法返回一个Promise,使用.then来执行回调参数接收
+    4) 后台的controller多个原始类型参数自动组装为application/x-www-form-urlencoded的形式来传递,避免生成太多VO,只有使用RequestBody方式时,才使用application/json来发送对象
+    5) application/json来发送对象时,允许增加其他原始类型参数,自动作为URL的参数来传递给后台
+    6) 业务类异常BusinessException自动激发弹窗提示(依赖改进的service模块)
+
+    Auto generate by ccframeTool@JIM at 2023-10-26 15:55:30
 */
+/* eslint-disable quotes */
 import { request } from '@/utils/service'
 
 export interface FileInfDto {
@@ -34,64 +46,85 @@ export interface QueryObject {
   searchText?: string
 }
 
-/* eslint-disable */
 export const commonApiController = {
-  doLogin(data: {
-    loginId?: string
-    sid?: string
-    userPsw?: string
-    validateCode?: string
-  }) { // 用户名密码方式会员登录
+  // 用户名密码方式会员登录
+  doLogin(loginId: string | null, sid: string | null, userPsw: string | null, validateCode: string | null) {
     return request({
       url: `api/common/doLogin`,
       method: 'post',
       formPost: true,
-      data
+      data: {
+        loginId,
+        sid,
+        userPsw,
+        validateCode
+      }
     })
   },
-  mobileLogin(data: {
-    sid?: string
-    userMobile?: string
-    validateCode?: string
-  }) { // 手机短信方式会员登录
+  // 手机短信方式会员登录
+  mobileLogin(sid: string | null, userMobile: string | null, validateCode: string | null) {
     return request({
       url: `api/common/mobileLogin`,
       method: 'post',
       formPost: true,
-      data
+      data: {
+        sid,
+        userMobile,
+        validateCode
+      }
+    })
+  },
+  // 修改当前用户的密码
+  modUserPass(modPassword: string | null) {
+    return request({
+      url: `api/common/modUserPass`,
+      method: 'post',
+      formPost: true,
+      data: {
+        modPassword
+      }
     })
   },
+  // mytest
+  mytest() {
+    return request({
+      url: `api/common/test`,
+      method: 'get'
+    })
+  },
+  // 临时测试方法
   mytest1(
-    page?: any,
-    size?: any,
-  	data? : QueryObject
-  ) { // 临时测试方法
+    page: number | null,
+    size: number | null,
+    data : QueryObject
+  ) {
     return request({
       url: `api/common/test1`,
       method: 'post',
       params: {
         page,
-        size,
+        size
       },
       data
     })
   },
-  sendAuthCode(data: {
-    sid?: string
-    userMobile?: string
-  }) { // 给会员发送鉴权短信
+  // 给会员发送鉴权短信
+  sendAuthCode(sid: string | null, userMobile: string | null) {
     return request({
       url: `api/common/sendAuthCode`,
       method: 'post',
       formPost: true,
-      data
+      data: {
+        sid,
+        userMobile
+      }
     })
   },
-  uuid() { // 页面唯一key
+  // 页面唯一key
+  uuid() {
     return request({
       url: `api/common/uuid`,
-      method: 'get',
+      method: 'get'
     })
-  },
+  }
 }
-/* eslint-enable */

+ 1 - 1
src/test/resources/typeExtend.ts

@@ -1,4 +1,4 @@
-/** Auto generate by ccframeTool@JIM at 2022-01-04 17:29:20 **/
+/** Auto generate by ccframeTool@JIM at 2023-10-26 15:55:29 **/
 export interface AsyncRunProgress {
   asyncRunStatCode?: string
   infoData?: string