diff --git a/pom.xml b/pom.xml
index 2053dabe..aae42024 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,7 +17,7 @@
doc
-
+ sop-common
sop-example
sop-admin
@@ -25,7 +25,7 @@
sop-test
sop-sdk
- sop-index
+ sop-gateway
sop-registry
sop-support
diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/dto/IdDTO.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/dto/IdDTO.java
new file mode 100644
index 00000000..05cd9976
--- /dev/null
+++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/dto/IdDTO.java
@@ -0,0 +1,14 @@
+package com.gitee.sop.adminbackend.common.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author 六如
+ */
+@Data
+public class IdDTO {
+ @NotNull(message = "id不能为空")
+ private Long id;
+}
diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/dto/StatusUpdateDTO.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/dto/StatusUpdateDTO.java
new file mode 100644
index 00000000..33d3e93b
--- /dev/null
+++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/dto/StatusUpdateDTO.java
@@ -0,0 +1,16 @@
+package com.gitee.sop.adminbackend.common.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author 六如
+ */
+@Data
+public class StatusUpdateDTO extends IdDTO {
+
+ @NotNull(message = "状态不能为空")
+ private Integer status;
+
+}
diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/ConfigKeyEnum.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/enums/ConfigKeyEnum.java
similarity index 88%
rename from sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/ConfigKeyEnum.java
rename to sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/enums/ConfigKeyEnum.java
index 482d0dcd..80e3eef2 100644
--- a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/ConfigKeyEnum.java
+++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/enums/ConfigKeyEnum.java
@@ -1,4 +1,4 @@
-package com.gitee.sop.adminbackend.common;
+package com.gitee.sop.adminbackend.common.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/enums/StatusEnum.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/enums/StatusEnum.java
new file mode 100644
index 00000000..a6c64c24
--- /dev/null
+++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/enums/StatusEnum.java
@@ -0,0 +1,33 @@
+package com.gitee.sop.adminbackend.common.enums;
+
+import lombok.Getter;
+
+import java.util.Objects;
+
+/**
+ * @author 六如
+ */
+@Getter
+public enum StatusEnum {
+ DISABLED((byte)2),
+ ENABLE((byte)1),
+ SET_PWD((byte)3),
+ ;
+
+ private final int status;
+
+ public static StatusEnum of(Integer value) {
+ for (StatusEnum statusEnum : StatusEnum.values()) {
+ if (Objects.equals(statusEnum.status, value)) {
+ return statusEnum;
+ }
+ }
+ return DISABLED;
+ }
+
+ StatusEnum(byte style) {
+ this.status = style;
+ }
+
+
+}
diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/req/IdParam.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/req/IdParam.java
new file mode 100644
index 00000000..51bd2732
--- /dev/null
+++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/req/IdParam.java
@@ -0,0 +1,14 @@
+package com.gitee.sop.adminbackend.common.req;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author 六如
+ */
+@Data
+public class IdParam {
+ @NotNull(message = "id不能为空")
+ private Long id;
+}
diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/req/StatusUpdateParam.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/req/StatusUpdateParam.java
new file mode 100644
index 00000000..3ff967fd
--- /dev/null
+++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/req/StatusUpdateParam.java
@@ -0,0 +1,16 @@
+package com.gitee.sop.adminbackend.common.req;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author 六如
+ */
+@Data
+public class StatusUpdateParam extends IdParam {
+
+ @NotNull(message = "状态不能为空")
+ private Integer status;
+
+}
diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/resp/Result.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/resp/Result.java
new file mode 100644
index 00000000..58fb9169
--- /dev/null
+++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/common/resp/Result.java
@@ -0,0 +1,46 @@
+package com.gitee.sop.adminbackend.common.resp;
+
+import lombok.Data;
+
+import java.util.Objects;
+
+/**
+ * @author thc
+ */
+@Data
+public class Result {
+
+ private static final Result> RESULT = new Result<>();
+
+ private String code = "0";
+ private T data;
+ private String msg = "success";
+
+ public static Result> ok() {
+ return RESULT;
+ }
+
+ public static Result ok(E obj) {
+ Result result = new Result<>();
+ result.setData(obj);
+ return result;
+ }
+
+ public static Result err(String msg) {
+ Result result = new Result<>();
+ result.setCode("1");
+ result.setMsg(msg);
+ return result;
+ }
+
+ public static Result err(String code, String msg) {
+ Result result = new Result<>();
+ result.setCode(code);
+ result.setMsg(msg);
+ return result;
+ }
+
+ public boolean getSuccess() {
+ return Objects.equals("0", code);
+ }
+}
diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/config/Configs.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/config/Configs.java
index 6679aef1..ce95baa9 100644
--- a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/config/Configs.java
+++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/config/Configs.java
@@ -1,6 +1,6 @@
package com.gitee.sop.adminbackend.config;
-import com.gitee.sop.adminbackend.common.ConfigKeyEnum;
+import com.gitee.sop.adminbackend.common.enums.ConfigKeyEnum;
import com.gitee.sop.adminbackend.common.IConfig;
import com.gitee.sop.adminbackend.common.SpringContext;
diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/ExceptionHandlerController.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/ExceptionHandlerController.java
index 06e3b0cd..13956ca7 100644
--- a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/ExceptionHandlerController.java
+++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/ExceptionHandlerController.java
@@ -1,6 +1,6 @@
package com.gitee.sop.adminbackend.controller;
-import com.gitee.sop.adminbackend.common.Result;
+import com.gitee.sop.adminbackend.common.resp.Result;
import com.gitee.sop.adminbackend.common.exception.BizException;
import com.gitee.sop.adminbackend.common.exception.ErrorCode;
import com.gitee.sop.adminbackend.common.exception.ExceptionCode;
diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/isv/IsvInfoController.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/isv/IsvInfoController.java
new file mode 100644
index 00000000..6143fe97
--- /dev/null
+++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/isv/IsvInfoController.java
@@ -0,0 +1,91 @@
+package com.gitee.sop.adminbackend.controller.isv;
+
+import com.gitee.fastmybatis.core.PageInfo;
+import com.gitee.fastmybatis.core.query.Query;
+import com.gitee.fastmybatis.core.query.param.PageParam;
+import com.gitee.sop.adminbackend.common.req.IdParam;
+import com.gitee.sop.adminbackend.common.resp.Result;
+import com.gitee.sop.adminbackend.controller.isv.dto.IsvKeysDTO;
+import com.gitee.sop.adminbackend.dao.entity.IsvInfo;
+import com.gitee.sop.adminbackend.service.isv.IsvInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * @author 六如
+ */
+@RestController
+@RequestMapping("isv")
+public class IsvInfoController {
+
+ @Autowired
+ private IsvInfoService isvInfoService;
+
+ /**
+ * 分页查询
+ *
+ * @param param
+ * @return
+ */
+ @GetMapping("/page")
+ public Result> page(PageParam param) {
+ Query query = param.toQuery();
+ PageInfo pageInfo = isvInfoService.page(query);
+ return Result.ok(pageInfo);
+ }
+
+ /**
+ * 获取秘钥信息
+ *
+ * @param appId
+ * @return
+ */
+ @GetMapping("/getKeys")
+ public Result getKeys(String appId) {
+ IsvKeysDTO isvKeysDTO = isvInfoService.getKeys(appId);
+ return Result.ok(isvKeysDTO);
+ }
+
+ /**
+ * 新增记录
+ *
+ * @param user
+ * @return 返回添加后的主键值
+ */
+ @PostMapping("/add")
+ public Result add(@Validated @RequestBody IsvInfo user) {
+ isvInfoService.save(user);
+ // 返回添加后的主键值
+ return Result.ok(user.getId());
+ }
+
+ /**
+ * 修改记录
+ *
+ * @param user 表单数据
+ * @return 返回影响行数
+ */
+ @PostMapping("/update")
+ public Result update(@Validated @RequestBody IsvInfo user) {
+ return Result.ok(isvInfoService.update(user));
+ }
+
+ /**
+ * 删除记录
+ *
+ * @param param 参数
+ * @return 返回影响行数
+ */
+ @PostMapping("/delete")
+ public Result delete(@Validated @RequestBody IdParam param) {
+ return Result.ok(isvInfoService.deleteById(param.getId()));
+ }
+
+
+}
diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/isv/dto/IsvKeysDTO.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/isv/dto/IsvKeysDTO.java
new file mode 100644
index 00000000..5777a427
--- /dev/null
+++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/isv/dto/IsvKeysDTO.java
@@ -0,0 +1,31 @@
+package com.gitee.sop.adminbackend.controller.isv.dto;
+
+import lombok.Data;
+
+/**
+ * @author 六如
+ */
+@Data
+public class IsvKeysDTO {
+
+ /**
+ * 开发者生成的公钥, 数据库字段:public_key_isv
+ */
+ private String publicKeyIsv;
+
+ /**
+ * 开发者生成的私钥(交给开发者), 数据库字段:private_key_isv
+ */
+ private String privateKeyIsv;
+
+ /**
+ * 平台生成的公钥(交给开发者), 数据库字段:public_key_platform
+ */
+ private String publicKeyPlatform;
+
+ /**
+ * 平台生成的私钥, 数据库字段:private_key_platform
+ */
+ private String privateKeyPlatform;
+
+}
diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/serve/ApiInfoController.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/serve/ApiInfoController.java
index ec23746b..58866196 100644
--- a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/serve/ApiInfoController.java
+++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/serve/ApiInfoController.java
@@ -2,11 +2,14 @@ package com.gitee.sop.adminbackend.controller.serve;
import com.gitee.fastmybatis.core.PageInfo;
import com.gitee.fastmybatis.core.query.Query;
-import com.gitee.sop.adminbackend.common.IdParam;
-import com.gitee.sop.adminbackend.common.Result;
+import com.gitee.sop.adminbackend.common.dto.StatusUpdateDTO;
+import com.gitee.sop.adminbackend.common.req.IdParam;
+import com.gitee.sop.adminbackend.common.req.StatusUpdateParam;
+import com.gitee.sop.adminbackend.common.resp.Result;
import com.gitee.sop.adminbackend.controller.serve.req.ApiInfoParam;
import com.gitee.sop.adminbackend.dao.entity.ApiInfo;
import com.gitee.sop.adminbackend.service.serve.ApiInfoService;
+import com.gitee.sop.adminbackend.util.CopyUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
@@ -66,6 +69,18 @@ public class ApiInfoController {
return Result.ok(apiInfoService.update(user));
}
+ /**
+ * 修改状态
+ *
+ * @param param 表单数据
+ * @return 返回影响行数
+ */
+ @PostMapping("/updateStatus")
+ public Result updateStatus(@Validated @RequestBody StatusUpdateParam param) {
+ StatusUpdateDTO statusUpdateDTO = CopyUtil.copyBean(param, StatusUpdateDTO::new);
+ return Result.ok(apiInfoService.updateStatus(statusUpdateDTO));
+ }
+
/**
* 删除记录
*
diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/serve/req/ApiInfoParam.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/serve/req/ApiInfoParam.java
index 6aebc095..7305b90d 100644
--- a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/serve/req/ApiInfoParam.java
+++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/serve/req/ApiInfoParam.java
@@ -14,5 +14,7 @@ public class ApiInfoParam extends PageParam {
@Condition(operator = Operator.like)
private String apiName;
+ @Condition
+ private Integer status;
}
diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/sys/LoginController.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/sys/LoginController.java
index 1212e29d..f324409d 100644
--- a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/sys/LoginController.java
+++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/sys/LoginController.java
@@ -1,6 +1,6 @@
package com.gitee.sop.adminbackend.controller.sys;
-import com.gitee.sop.adminbackend.common.Result;
+import com.gitee.sop.adminbackend.common.resp.Result;
import com.gitee.sop.adminbackend.controller.sys.req.LoginParam;
import com.gitee.sop.adminbackend.controller.sys.resp.LoginResultVO;
import com.gitee.sop.adminbackend.service.sys.login.LoginService;
diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/sys/SysAdminUserController.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/sys/SysAdminUserController.java
index b0da1aeb..99a0a831 100644
--- a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/sys/SysAdminUserController.java
+++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/controller/sys/SysAdminUserController.java
@@ -3,14 +3,15 @@ package com.gitee.sop.adminbackend.controller.sys;
import com.gitee.fastmybatis.core.PageInfo;
import com.gitee.fastmybatis.core.query.Query;
import com.gitee.fastmybatis.core.query.param.PageParam;
-import com.gitee.sop.adminbackend.common.Result;
+import com.gitee.sop.adminbackend.common.req.IdParam;
+import com.gitee.sop.adminbackend.common.resp.Result;
import com.gitee.sop.adminbackend.dao.entity.SysAdminUser;
import com.gitee.sop.adminbackend.service.sys.SysAdminUserService;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -28,8 +29,8 @@ public class SysAdminUserController {
/**
* 分页查询
*
- * @param param
- * @return
+ * @param param 查询参数
+ * @return 返回分页结果
*/
@GetMapping("/page")
public Result> page(PageParam param) {
@@ -41,36 +42,36 @@ public class SysAdminUserController {
/**
* 新增记录
*
- * @param user
- * @return
+ * @param sysAdminUser 表单参数
+ * @return 返回添加后的主键值
*/
- @PostMapping("/save")
- public Result save(SysAdminUser user) {
- sysAdminUserService.save(user);
+ @PostMapping("/add")
+ public Result add(@Validated @RequestBody SysAdminUser sysAdminUser) {
+ sysAdminUserService.save(sysAdminUser);
// 返回添加后的主键值
- return Result.ok(user.getId());
+ return Result.ok(sysAdminUser.getId());
}
/**
* 修改记录
*
- * @param user 表单数据
- * @return
+ * @param sysAdminUser 表单数据
+ * @return 返回影响行数
*/
- @PutMapping("/update")
- public Result update(SysAdminUser user) {
- return Result.ok(sysAdminUserService.update(user));
+ @PostMapping("/update")
+ public Result update(@Validated @RequestBody SysAdminUser sysAdminUser) {
+ return Result.ok(sysAdminUserService.update(sysAdminUser));
}
/**
* 删除记录
*
- * @param id 主键id
- * @return
+ * @param param 参数
+ * @return 返回影响行数
*/
- @DeleteMapping("/delete")
- public Result> delete(Long id) {
- return Result.ok(sysAdminUserService.deleteById(id));
+ @PostMapping("/delete")
+ public Result delete(@Validated @RequestBody IdParam param) {
+ return Result.ok(sysAdminUserService.deleteById(param.getId()));
}
}
diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/entity/ApiInfo.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/entity/ApiInfo.java
index 60cbcc38..a654403c 100644
--- a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/entity/ApiInfo.java
+++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/dao/entity/ApiInfo.java
@@ -71,6 +71,11 @@ public class ApiInfo {
*/
private Integer isNeedToken;
+ /**
+ * 注册来源,1-系统注册,2-手动注册
+ */
+ private Integer regSource;
+
/**
* 1启用,2禁用
*/
diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/isv/IsvInfoService.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/isv/IsvInfoService.java
new file mode 100644
index 00000000..d3538464
--- /dev/null
+++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/isv/IsvInfoService.java
@@ -0,0 +1,29 @@
+package com.gitee.sop.adminbackend.service.isv;
+
+import com.gitee.fastmybatis.core.support.LambdaService;
+import com.gitee.sop.adminbackend.controller.isv.dto.IsvKeysDTO;
+import com.gitee.sop.adminbackend.dao.entity.IsvInfo;
+import com.gitee.sop.adminbackend.dao.entity.IsvKeys;
+import com.gitee.sop.adminbackend.dao.mapper.IsvInfoMapper;
+import com.gitee.sop.adminbackend.dao.mapper.IsvKeysMapper;
+import com.gitee.sop.adminbackend.util.CopyUtil;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+
+/**
+ * @author 六如
+ */
+@Service
+public class IsvInfoService implements LambdaService {
+
+ @Resource
+ private IsvKeysMapper isvKeysMapper;
+
+ public IsvKeysDTO getKeys(String appId) {
+ IsvKeys isvKeys = isvKeysMapper.get(IsvKeys::getAppId, appId);
+ return CopyUtil.copyBean(isvKeys, IsvKeysDTO::new);
+ }
+
+}
diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/serve/ApiInfoService.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/serve/ApiInfoService.java
index fdbb9b24..2f6529bf 100644
--- a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/serve/ApiInfoService.java
+++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/serve/ApiInfoService.java
@@ -1,6 +1,7 @@
package com.gitee.sop.adminbackend.service.serve;
import com.gitee.fastmybatis.core.support.LambdaService;
+import com.gitee.sop.adminbackend.common.dto.StatusUpdateDTO;
import com.gitee.sop.adminbackend.dao.entity.ApiInfo;
import com.gitee.sop.adminbackend.dao.mapper.ApiInfoMapper;
import org.springframework.stereotype.Service;
@@ -12,4 +13,11 @@ import org.springframework.stereotype.Service;
@Service
public class ApiInfoService implements LambdaService {
+ public int updateStatus(StatusUpdateDTO statusUpdateDTO) {
+ return this.query()
+ .eq(ApiInfo::getId, statusUpdateDTO.getId())
+ .set(ApiInfo::getStatus, statusUpdateDTO.getStatus())
+ .update();
+ }
+
}
diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/SysAdminUserService.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/SysAdminUserService.java
index 03dfcc66..d354ee86 100644
--- a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/SysAdminUserService.java
+++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/SysAdminUserService.java
@@ -1,8 +1,7 @@
package com.gitee.sop.adminbackend.service.sys;
import com.gitee.fastmybatis.core.support.LambdaService;
-import com.gitee.sop.adminbackend.common.ConfigKeyEnum;
-import com.gitee.sop.adminbackend.config.AdminConfig;
+import com.gitee.sop.adminbackend.common.enums.ConfigKeyEnum;
import com.gitee.sop.adminbackend.config.Configs;
import com.gitee.sop.adminbackend.dao.entity.SysAdminUser;
import com.gitee.sop.adminbackend.dao.mapper.SysAdminUserMapper;
diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/UpgradeService.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/UpgradeService.java
index 28712b32..fc5d914a 100644
--- a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/UpgradeService.java
+++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/UpgradeService.java
@@ -1,6 +1,6 @@
package com.gitee.sop.adminbackend.service.sys;
-import com.gitee.sop.adminbackend.common.ConfigKeyEnum;
+import com.gitee.sop.adminbackend.common.enums.ConfigKeyEnum;
import com.gitee.sop.adminbackend.dao.entity.SysAdminUser;
import com.gitee.sop.adminbackend.dao.mapper.UpgradeMapper;
import com.gitee.sop.adminbackend.service.sys.login.enums.RegTypeEnum;
diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/LoginService.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/LoginService.java
index 349aacdf..98a25eb9 100644
--- a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/LoginService.java
+++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/LoginService.java
@@ -1,7 +1,7 @@
package com.gitee.sop.adminbackend.service.sys.login;
import com.alibaba.nacos.shaded.com.google.common.collect.Sets;
-import com.gitee.sop.adminbackend.common.ConfigKeyEnum;
+import com.gitee.sop.adminbackend.common.enums.ConfigKeyEnum;
import com.gitee.sop.adminbackend.common.exception.BizException;
import com.gitee.sop.adminbackend.config.Configs;
import com.gitee.sop.adminbackend.dao.entity.SysAdminUser;
@@ -10,7 +10,7 @@ import com.gitee.sop.adminbackend.service.sys.login.dto.LoginDTO;
import com.gitee.sop.adminbackend.service.sys.login.dto.LoginForm;
import com.gitee.sop.adminbackend.service.sys.login.dto.LoginResult;
import com.gitee.sop.adminbackend.service.sys.login.dto.LoginUser;
-import com.gitee.sop.adminbackend.common.StatusEnum;
+import com.gitee.sop.adminbackend.common.enums.StatusEnum;
import com.gitee.sop.adminbackend.service.sys.login.enums.RegTypeEnum;
import com.gitee.sop.adminbackend.util.CopyUtil;
import com.gitee.sop.adminbackend.util.GenerateUtil;
diff --git a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/impl/DefaultUserCacheManager.java b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/impl/DefaultUserCacheManager.java
index c9ee0b77..d25bb834 100644
--- a/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/impl/DefaultUserCacheManager.java
+++ b/sop-admin/sop-admin-backend/src/main/java/com/gitee/sop/adminbackend/service/sys/login/impl/DefaultUserCacheManager.java
@@ -5,7 +5,7 @@ import com.gitee.sop.adminbackend.dao.entity.SysAdminUser;
import com.gitee.sop.adminbackend.service.sys.SysAdminUserService;
import com.gitee.sop.adminbackend.service.sys.login.UserCacheManager;
import com.gitee.sop.adminbackend.service.sys.login.dto.LoginUser;
-import com.gitee.sop.adminbackend.common.StatusEnum;
+import com.gitee.sop.adminbackend.common.enums.StatusEnum;
import com.gitee.sop.adminbackend.util.CopyUtil;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
diff --git a/sop-admin/sop-admin-frontend/mock/asyncRoutes.ts b/sop-admin/sop-admin-frontend/mock/asyncRoutes.ts
index fb894860..7ed613c8 100644
--- a/sop-admin/sop-admin-frontend/mock/asyncRoutes.ts
+++ b/sop-admin/sop-admin-frontend/mock/asyncRoutes.ts
@@ -1,27 +1,62 @@
// 模拟后端动态生成路由
import { defineFakeRoute } from "vite-plugin-fake-server/client";
-/**
- * 服务管理
- */
-const apiRouter = {
- path: "/serve",
- meta: {
- title: "服务管理",
- icon: "ri:server-line",
- rank: 10
- },
- children: [
- {
- path: "/serve/api/index",
- name: "ApiManage",
- meta: {
- title: "接口管理",
- roles: ["admin"]
+const apiRouters = [
+ {
+ path: "/serve",
+ meta: {
+ title: "服务管理",
+ icon: "ri:server-line",
+ rank: 10
+ },
+ children: [
+ {
+ path: "/serve/api/index",
+ name: "ApiManage",
+ meta: {
+ title: "接口管理",
+ roles: ["admin"]
+ }
}
- }
- ]
-};
+ ]
+ },
+ {
+ path: "/isv",
+ meta: {
+ title: "ISV管理",
+ icon: "ri:shield-user-line",
+ rank: 10
+ },
+ children: [
+ {
+ path: "/isv/list/index",
+ name: "IsvManage",
+ meta: {
+ title: "ISV列表",
+ roles: ["admin"]
+ }
+ }
+ ]
+ },
+ {
+ path: "/sys",
+ meta: {
+ title: "系统管理",
+ icon: "ri:settings-2-line",
+ rank: 10
+ },
+ children: [
+ {
+ path: "/admin/user/index",
+ name: "AdminUser",
+ meta: {
+ title: "用户管理",
+ roles: ["admin"]
+ }
+ }
+ ]
+ }
+];
export default defineFakeRoute([
{
@@ -30,7 +65,7 @@ export default defineFakeRoute([
response: () => {
return {
success: true,
- data: [apiRouter]
+ data: apiRouters
};
}
}
diff --git a/sop-admin/sop-admin-frontend/src/api/isvList.ts b/sop-admin/sop-admin-frontend/src/api/isvList.ts
new file mode 100644
index 00000000..7c4f0d52
--- /dev/null
+++ b/sop-admin/sop-admin-frontend/src/api/isvList.ts
@@ -0,0 +1,52 @@
+import { createUrl, http } from "@/utils/http";
+import type { PageResult, Result } from "@/model";
+
+// 后端请求接口
+const apiUrl: any = createUrl({
+ page: "/isv/page",
+ add: "/isv/add",
+ update: "/isv/update",
+ del: "/isv/delete",
+ getKeys: "/isv/getKeys"
+});
+
+/**
+ * 接口管理
+ */
+export const api: any = {
+ /**
+ * 分页查询
+ * @param params 查询参数
+ */
+ page(params: object): Promise {
+ return http.get(apiUrl.page, { params });
+ },
+ /**
+ * 新增
+ * @param data 表单内容
+ */
+ add(data: object) {
+ return http.post(apiUrl.add, { data });
+ },
+ /**
+ * 修改
+ * @param data 表单内容
+ */
+ update(data: object) {
+ return http.post(apiUrl.update, { data });
+ },
+ /**
+ * 删除
+ * @param data 表单内容
+ */
+ del(data: object) {
+ return http.post(apiUrl.del, { data });
+ },
+ /**
+ * 查看秘钥
+ * @param params
+ */
+ viewKeys(params: object) {
+ return http.get(apiUrl.getKeys, { params });
+ }
+};
diff --git a/sop-admin/sop-admin-frontend/src/api/routes.ts b/sop-admin/sop-admin-frontend/src/api/routes.ts
index 915ca377..501ea3c7 100644
--- a/sop-admin/sop-admin-frontend/src/api/routes.ts
+++ b/sop-admin/sop-admin-frontend/src/api/routes.ts
@@ -6,5 +6,5 @@ type Result = {
};
export const getAsyncRoutes = () => {
- return http.request("get", "/mock/get-async-routes");
+ return http.request("get", "/get-async-routes");
};
diff --git a/sop-admin/sop-admin-frontend/src/api/serveApi.ts b/sop-admin/sop-admin-frontend/src/api/serveApi.ts
new file mode 100644
index 00000000..e8d9d28c
--- /dev/null
+++ b/sop-admin/sop-admin-frontend/src/api/serveApi.ts
@@ -0,0 +1,52 @@
+import { createUrl, http } from "@/utils/http";
+import type { PageResult, Result } from "@/model";
+
+// 后端请求接口
+const apiUrl: any = createUrl({
+ page: "/serve/api/page",
+ add: "/serve/api/add",
+ update: "/serve/api/update",
+ del: "/serve/api/delete",
+ updateStatus: "/serve/api/updateStatus"
+});
+
+/**
+ * 接口管理
+ */
+export const api: any = {
+ /**
+ * 分页查询
+ * @param params 查询参数
+ */
+ page(params: object): Promise {
+ return http.get(apiUrl.page, { params });
+ },
+ /**
+ * 新增
+ * @param data 表单内容
+ */
+ add(data: object) {
+ return http.post(apiUrl.add, { data });
+ },
+ /**
+ * 修改
+ * @param data 表单内容
+ */
+ update(data: object) {
+ return http.post(apiUrl.update, { data });
+ },
+ /**
+ * 删除
+ * @param data 表单内容
+ */
+ del(data: object) {
+ return http.post(apiUrl.del, { data });
+ },
+ /**
+ * 修改状态
+ * @param data 表单内容
+ */
+ updateStatus(data: object) {
+ return http.post(apiUrl.updateStatus, { data });
+ }
+};
diff --git a/sop-admin/sop-admin-frontend/src/api/service/api.ts b/sop-admin/sop-admin-frontend/src/api/service/api.ts
deleted file mode 100644
index e69de29b..00000000
diff --git a/sop-admin/sop-admin-frontend/src/api/sysAdminUser.ts b/sop-admin/sop-admin-frontend/src/api/sysAdminUser.ts
new file mode 100644
index 00000000..6d91f314
--- /dev/null
+++ b/sop-admin/sop-admin-frontend/src/api/sysAdminUser.ts
@@ -0,0 +1,44 @@
+import { createUrl, http } from "@/utils/http";
+import type { PageResult, Result } from "@/model";
+
+// 后端请求接口
+const apiUrl: any = createUrl({
+ page: "/sys/adminuser/page",
+ add: "/sys/adminuser/add",
+ update: "/sys/adminuser/update",
+ del: "/sys/adminuser/delete"
+});
+
+/**
+ * 接口管理
+ */
+export const api: any = {
+ /**
+ * 分页查询
+ * @param params 查询参数
+ */
+ page(params: object): Promise {
+ return http.get(apiUrl.page, { params });
+ },
+ /**
+ * 新增
+ * @param data 表单内容
+ */
+ add(data: object) {
+ return http.post(apiUrl.add, { data });
+ },
+ /**
+ * 修改
+ * @param data 表单内容
+ */
+ update(data: object) {
+ return http.post(apiUrl.update, { data });
+ },
+ /**
+ * 删除
+ * @param data 表单内容
+ */
+ del(data: object) {
+ return http.post(apiUrl.del, { data });
+ }
+};
diff --git a/sop-admin/sop-admin-frontend/src/api/user.ts b/sop-admin/sop-admin-frontend/src/api/user.ts
index 7ba6d46e..5479e14c 100644
--- a/sop-admin/sop-admin-frontend/src/api/user.ts
+++ b/sop-admin/sop-admin-frontend/src/api/user.ts
@@ -1,4 +1,4 @@
-import { http } from "@/utils/http";
+import { baseUrl, http } from "@/utils/http";
export type UserResult = {
success: boolean;
@@ -34,12 +34,19 @@ export type RefreshTokenResult = {
};
};
+const apiUrl = {
+ login: baseUrl("/sys/login"),
+ refreshToken: baseUrl("/sys/refresh-token")
+};
+
/** 登录 */
export const getLogin = (data?: object) => {
- return http.request("post", "/sys/login", { data });
+ return http.request("post", apiUrl.login, { data });
};
/** 刷新`token` */
export const refreshTokenApi = (data?: object) => {
- return http.request("post", "/refresh-token", { data });
+ return http.request("post", apiUrl.refreshToken, {
+ data
+ });
};
diff --git a/sop-admin/sop-admin-frontend/src/model/enums/index.ts b/sop-admin/sop-admin-frontend/src/model/enums/index.ts
new file mode 100644
index 00000000..4f876df6
--- /dev/null
+++ b/sop-admin/sop-admin-frontend/src/model/enums/index.ts
@@ -0,0 +1,4 @@
+export enum StatusEnum {
+ ENABLE = 1,
+ DISABLE = 2
+}
diff --git a/sop-admin/sop-admin-frontend/src/model/index.ts b/sop-admin/sop-admin-frontend/src/model/index.ts
index 6f5d8806..401b0326 100644
--- a/sop-admin/sop-admin-frontend/src/model/index.ts
+++ b/sop-admin/sop-admin-frontend/src/model/index.ts
@@ -1,6 +1,8 @@
export type Result = {
success: boolean;
data: object;
+ msg: "";
+ code: "";
};
export type PageResult = {
diff --git a/sop-admin/sop-admin-frontend/src/utils/http/index.ts b/sop-admin/sop-admin-frontend/src/utils/http/index.ts
index 632274a9..41d37e20 100644
--- a/sop-admin/sop-admin-frontend/src/utils/http/index.ts
+++ b/sop-admin/sop-admin-frontend/src/utils/http/index.ts
@@ -13,19 +13,23 @@ import { stringify } from "qs";
import NProgress from "../progress";
import { getToken, formatToken } from "@/utils/auth";
import { useUserStoreHook } from "@/store/modules/user";
-
-const PREFIX_MOCK: string = "mock";
+import { ElMessage } from "element-plus";
export const baseUrl = (url: string) => {
if (url.startsWith("/")) {
url = url.substring(1);
}
- if (url.startsWith(PREFIX_MOCK)) {
- return url.substring(PREFIX_MOCK.length);
- }
return `/api/${url}`;
};
+export const createUrl = (data: object) => {
+ const ret = {};
+ for (const dataKey in data) {
+ ret[dataKey] = baseUrl(data[dataKey]);
+ }
+ return ret;
+};
+
// 相关配置请参考:www.axios-js.com/zh-cn/docs/#axios-request-config-1
const defaultConfig: AxiosRequestConfig = {
// 请求超时时间
@@ -45,6 +49,13 @@ class PureHttp {
constructor() {
this.httpInterceptorsRequest();
this.httpInterceptorsResponse();
+ PureHttp.initConfig.beforeResponseCallback = response => {
+ const resp = response.data || {};
+ if (resp.code && resp.code !== "0") {
+ console.log(resp);
+ ElMessage.error(resp.msg || "后台出错,请查看日志");
+ }
+ };
}
/** `token`过期后,暂存待执行的请求 */
@@ -166,7 +177,7 @@ class PureHttp {
): Promise {
const config = {
method,
- url: baseUrl(url),
+ url: url,
...param,
...axiosConfig
} as PureHttpRequestConfig;
diff --git a/sop-admin/sop-admin-frontend/src/views/admin/user/index.ts b/sop-admin/sop-admin-frontend/src/views/admin/user/index.ts
new file mode 100644
index 00000000..35dd6478
--- /dev/null
+++ b/sop-admin/sop-admin-frontend/src/views/admin/user/index.ts
@@ -0,0 +1,306 @@
+import { computed, ref } from "vue";
+import {
+ type ButtonsCallBackParams,
+ type FieldValues,
+ type PageInfo,
+ type PlusColumn,
+ useTable
+} from "plus-pro-components";
+import { ElMessage } from "element-plus";
+import { api } from "@/api/sysAdminUser";
+
+const isAdd = ref(false);
+
+// ========= search form =========
+
+// 查询表单对象
+export const searchFormData = ref({
+ id: "",
+ username: "",
+ password: "",
+ nickname: "",
+ email: "",
+ avatar: "",
+ status: "",
+ regType: "",
+ addTime: "",
+ updateTime: "",
+ pageIndex: 1,
+ pageSize: 10
+});
+
+// 查询表单字段定义
+export const searchFormColumns: PlusColumn[] = [
+ {
+ label: "用户名",
+ prop: "username"
+ },
+ {
+ label: "密码",
+ prop: "password"
+ },
+ {
+ label: "用户名",
+ prop: "nickname"
+ },
+ {
+ label: "邮箱",
+ prop: "email"
+ },
+ {
+ label: "头像",
+ prop: "avatar"
+ },
+ {
+ label: "状态,1:启用,2:禁用",
+ prop: "status"
+ },
+ {
+ label: "注册类型",
+ prop: "regType"
+ },
+ {
+ label: "addTime",
+ prop: "addTime"
+ },
+ {
+ label: "updateTime",
+ prop: "updateTime"
+ }
+];
+
+// ========= table =========
+
+// 表格对象
+export const {
+ tableData,
+ total,
+ pageInfo,
+ buttons: actionButtons
+} = useTable();
+// 默认每页条数,默认10
+pageInfo.value.pageSize = 10;
+
+// 表格字段定义
+export const tableColumns: PlusColumn[] = [
+ {
+ label: "用户名",
+ prop: "username"
+ },
+ {
+ label: "密码",
+ prop: "password"
+ },
+ {
+ label: "用户名",
+ prop: "nickname"
+ },
+ {
+ label: "邮箱",
+ prop: "email"
+ },
+ {
+ label: "头像",
+ prop: "avatar"
+ },
+ {
+ label: "状态,1:启用,2:禁用",
+ prop: "status"
+ },
+ {
+ label: "注册类型",
+ prop: "regType"
+ },
+ {
+ label: "addTime",
+ prop: "addTime"
+ },
+ {
+ label: "updateTime",
+ prop: "updateTime"
+ }
+];
+// 表格按钮定义
+actionButtons.value = [
+ {
+ // 修改
+ text: "修改",
+ code: "edit",
+ props: {
+ type: "primary"
+ },
+ show: computed(() => true),
+ onClick(params: ButtonsCallBackParams) {
+ isAdd.value = false;
+ editFormData.value = Object.assign({}, params.row);
+ dlgTitle.value = "修改";
+ dlgShow.value = true;
+ }
+ },
+ {
+ // 删除
+ text: "删除",
+ code: "delete",
+ props: {
+ type: "danger"
+ },
+ confirm: {
+ options: { draggable: false }
+ },
+ onConfirm(params: ButtonsCallBackParams) {
+ api.del(params).then(() => {
+ ElMessage({
+ message: "删除成功",
+ type: "success"
+ });
+ dlgShow.value = false;
+ search();
+ });
+ }
+ }
+];
+
+// ========= dialog form =========
+
+// 弹窗显示
+export const dlgShow = ref(false);
+export const dlgTitle = ref("");
+// 表单值
+const editFormDataGen = () => {
+ return {
+ username: "",
+ password: "",
+ nickname: "",
+ email: "",
+ avatar: "",
+ status: "",
+ regType: "",
+ addTime: "",
+ updateTime: ""
+ };
+};
+export const editFormData = ref(editFormDataGen());
+export const editFormRules = {
+ id: [{ required: true, message: "请输入id" }],
+ username: [{ required: true, message: "请输入用户名" }],
+ password: [{ required: true, message: "请输入密码" }],
+ nickname: [{ required: true, message: "请输入用户名" }],
+ email: [{ required: true, message: "请输入邮箱" }],
+ avatar: [{ required: true, message: "请输入头像" }],
+ status: [{ required: true, message: "请输入状态,1:启用,2:禁用" }],
+ regType: [{ required: true, message: "请输入注册类型" }],
+ addTime: [{ required: true, message: "请输入addTime" }],
+ updateTime: [{ required: true, message: "请输入updateTime" }]
+};
+
+// 表单内容
+export const editFormColumns: PlusColumn[] = [
+ {
+ label: "id",
+ prop: "id",
+ valueType: "copy"
+ },
+ {
+ label: "用户名",
+ prop: "username",
+ valueType: "copy"
+ },
+ {
+ label: "密码",
+ prop: "password",
+ valueType: "copy"
+ },
+ {
+ label: "用户名",
+ prop: "nickname",
+ valueType: "copy"
+ },
+ {
+ label: "邮箱",
+ prop: "email",
+ valueType: "copy"
+ },
+ {
+ label: "头像",
+ prop: "avatar",
+ valueType: "copy"
+ },
+ {
+ label: "状态,1:启用,2:禁用",
+ prop: "status",
+ valueType: "copy"
+ },
+ {
+ label: "注册类型",
+ prop: "regType",
+ valueType: "copy"
+ },
+ {
+ label: "addTime",
+ prop: "addTime",
+ valueType: "copy"
+ },
+ {
+ label: "updateTime",
+ prop: "updateTime",
+ valueType: "copy"
+ }
+];
+
+// ========= event =========
+
+// 添加按钮事件
+export const handleAdd = () => {
+ isAdd.value = true;
+ editFormData.value = editFormDataGen();
+ dlgTitle.value = "新增";
+ dlgShow.value = true;
+};
+
+// 保存按钮事件,校验成功后触发
+export const handleSave = () => {
+ const postData = editFormData.value;
+ const pms = isAdd.value ? api.add(postData) : api.update(postData);
+ pms.then(() => {
+ ElMessage({
+ message: "保存成功",
+ type: "success"
+ });
+ dlgShow.value = false;
+ search();
+ });
+};
+
+// 点击查询按钮
+export const handleSearch = () => {
+ pageInfo.value.page = 1;
+ search();
+};
+
+// 分页事件
+export const handlePaginationChange = (_pageInfo: PageInfo): void => {
+ pageInfo.value = _pageInfo;
+ search();
+};
+
+// 查询
+const search = async () => {
+ try {
+ const { data } = await doSearch();
+ tableData.value = data.list;
+ total.value = data.total;
+ } catch (error) {}
+};
+// 请求接口
+const doSearch = async () => {
+ // 查询参数
+ const data = searchFormData.value;
+ // 添加分页参数
+ data.pageIndex = pageInfo.value.page;
+ data.pageSize = pageInfo.value.pageSize;
+
+ return api.page(data);
+};
+
+// 页面加载
+search();
diff --git a/sop-admin/sop-admin-frontend/src/views/admin/user/index.vue b/sop-admin/sop-admin-frontend/src/views/admin/user/index.vue
new file mode 100644
index 00000000..86fbcddb
--- /dev/null
+++ b/sop-admin/sop-admin-frontend/src/views/admin/user/index.vue
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+ 新增
+
+
+
+
+
diff --git a/sop-admin/sop-admin-frontend/src/views/isv/list/index.ts b/sop-admin/sop-admin-frontend/src/views/isv/list/index.ts
new file mode 100644
index 00000000..d82bdd1b
--- /dev/null
+++ b/sop-admin/sop-admin-frontend/src/views/isv/list/index.ts
@@ -0,0 +1,265 @@
+import { computed, ref } from "vue";
+import {
+ type ButtonsCallBackParams,
+ type FieldValues,
+ type PageInfo,
+ type PlusColumn,
+ useTable
+} from "plus-pro-components";
+import { ElMessage } from "element-plus";
+import { StatusEnum } from "@/model/enums";
+import { api } from "@/api/isvList";
+
+const isAdd = ref(false);
+
+// ========= search form =========
+
+// 查询表单对象
+export const searchFormData = ref({
+ id: "",
+ appId: "",
+ status: "",
+ remark: "",
+ pageIndex: 1,
+ pageSize: 10
+});
+
+// 查询表单字段定义
+export const searchFormColumns: PlusColumn[] = [
+ {
+ label: "AppID",
+ prop: "appId"
+ },
+ {
+ label: "状态",
+ prop: "status",
+ valueType: "select",
+ options: [
+ {
+ label: "启用",
+ value: StatusEnum.ENABLE,
+ color: "green"
+ },
+ {
+ label: "禁用",
+ value: StatusEnum.DISABLE,
+ color: "red"
+ }
+ ]
+ }
+];
+
+// ========= table =========
+
+// 表格对象
+export const {
+ tableData,
+ total,
+ pageInfo,
+ buttons: actionButtons
+} = useTable();
+// 默认每页条数,默认10
+pageInfo.value.pageSize = 10;
+
+// 表格字段定义
+export const tableColumns: PlusColumn[] = [
+ {
+ label: "AppID",
+ prop: "appId",
+ width: 230
+ },
+ {
+ label: "秘钥",
+ prop: "keys",
+ width: 80
+ },
+ {
+ label: "角色",
+ prop: "roleNames",
+ width: 120
+ },
+ {
+ label: "状态",
+ prop: "status",
+ width: 80,
+ valueType: "select",
+ options: [
+ {
+ label: "启用",
+ value: StatusEnum.ENABLE,
+ color: "green"
+ },
+ {
+ label: "禁用",
+ value: StatusEnum.DISABLE,
+ color: "red"
+ }
+ ]
+ },
+ {
+ label: "备注",
+ prop: "remark"
+ },
+ {
+ label: "添加时间",
+ prop: "addTime"
+ },
+ {
+ label: "修改时间",
+ prop: "updateTime"
+ }
+];
+// 表格按钮定义
+actionButtons.value = [
+ {
+ // 修改
+ text: "修改",
+ code: "edit",
+ props: {
+ type: "primary"
+ },
+ show: computed(() => true),
+ onClick(params: ButtonsCallBackParams) {
+ isAdd.value = false;
+ editFormData.value = Object.assign({}, params.row);
+ dlgTitle.value = "修改";
+ dlgShow.value = true;
+ }
+ },
+ {
+ // 删除
+ text: "删除",
+ code: "delete",
+ props: {
+ type: "danger"
+ },
+ confirm: {
+ options: { draggable: false }
+ },
+ onConfirm(params: ButtonsCallBackParams) {
+ api.del(params).then(() => {
+ ElMessage({
+ message: "删除成功",
+ type: "success"
+ });
+ dlgShow.value = false;
+ search();
+ });
+ }
+ }
+];
+
+// ========= dialog form =========
+
+// 弹窗显示
+export const dlgShow = ref(false);
+export const dlgTitle = ref("");
+// 表单值
+const editFormDataGen = () => {
+ return {
+ id: "",
+ appId: "",
+ status: "",
+ remark: "",
+ addTime: "",
+ updateTime: ""
+ };
+};
+export const editFormData = ref(editFormDataGen());
+export const editFormRules = {
+ id: [{ required: true, message: "请输入id" }],
+ appId: [{ required: true, message: "请输入appKey" }],
+ status: [{ required: true, message: "请输入1启用,2禁用" }]
+};
+
+// 表单内容
+export const editFormColumns: PlusColumn[] = [
+ {
+ label: "id",
+ prop: "id",
+ valueType: "copy"
+ },
+ {
+ label: "AppID",
+ prop: "appId",
+ valueType: "copy"
+ },
+ {
+ label: "1启用,2禁用",
+ prop: "status",
+ valueType: "copy"
+ },
+ {
+ label: "备注",
+ prop: "remark",
+ valueType: "copy"
+ },
+ {
+ label: "addTime",
+ prop: "addTime",
+ valueType: "copy"
+ },
+ {
+ label: "updateTime",
+ prop: "updateTime",
+ valueType: "copy"
+ }
+];
+
+// ========= event =========
+
+// 添加按钮事件
+export const handleAdd = () => {
+ isAdd.value = true;
+ editFormData.value = editFormDataGen();
+ dlgTitle.value = "新增";
+ dlgShow.value = true;
+};
+
+// 保存按钮事件,校验成功后触发
+export const handleSave = () => {
+ const postData = editFormData.value;
+ const pms = isAdd.value ? api.add(postData) : api.update(postData);
+ pms.then(() => {
+ ElMessage({
+ message: "保存成功",
+ type: "success"
+ });
+ dlgShow.value = false;
+ search();
+ });
+};
+
+// 点击查询按钮
+export const handleSearch = () => {
+ pageInfo.value.page = 1;
+ search();
+};
+
+// 分页事件
+export const handlePaginationChange = (_pageInfo: PageInfo): void => {
+ pageInfo.value = _pageInfo;
+ search();
+};
+
+// 查询
+const search = async () => {
+ try {
+ const { data } = await doSearch();
+ tableData.value = data.list;
+ total.value = data.total;
+ } catch (error) {}
+};
+// 请求接口
+const doSearch = async () => {
+ // 查询参数
+ const data = searchFormData.value;
+ // 添加分页参数
+ data.pageIndex = pageInfo.value.page;
+ data.pageSize = pageInfo.value.pageSize;
+
+ return api.page(data);
+};
+
+// 页面加载
+search();
diff --git a/sop-admin/sop-admin-frontend/src/views/isv/list/index.vue b/sop-admin/sop-admin-frontend/src/views/isv/list/index.vue
new file mode 100644
index 00000000..d1ca8c61
--- /dev/null
+++ b/sop-admin/sop-admin-frontend/src/views/isv/list/index.vue
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+ 新增
+
+
+ 查看
+
+
+
+
+
+ 关闭
+
+
+
+
diff --git a/sop-admin/sop-admin-frontend/src/views/isv/list/showKeys.ts b/sop-admin/sop-admin-frontend/src/views/isv/list/showKeys.ts
new file mode 100644
index 00000000..60589600
--- /dev/null
+++ b/sop-admin/sop-admin-frontend/src/views/isv/list/showKeys.ts
@@ -0,0 +1,86 @@
+import { ref } from "vue";
+import type { PlusFormGroupRow } from "plus-pro-components";
+import { CreditCard } from "@element-plus/icons-vue";
+import { api } from "@/api/isvList";
+
+// 弹窗显示
+export const dlgKeysShow = ref(false);
+export const showKeysFormData = ref