From af78e676b7bdd977711fbdf94d54ef184a2674a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E5=8B=A4=E6=B0=91?= Date: Fri, 23 Aug 2024 15:22:01 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=93=E6=9E=84=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../appmanager/common/CommonHelper.java | 10 ++ .../manager/v1/ManagerV1Controller.java | 61 ++++++++++ .../controller/sys/v1/TenantV1Controller.java | 115 ++++++++++++------ .../sys/v1/data/TenantAddUserData.java | 11 ++ .../sys/v1/data/TenantChangeAdminData.java | 8 ++ .../sys/v1/data/TenantCreateData.java | 13 ++ .../sys/v1/data/TenantDelUserData.java | 8 ++ .../entitys/sys/v1/ApplicationEntity.java | 2 +- .../repository/sys/v1/TenantRepository.java | 2 +- .../sys/v1/TenantUserRepository.java | 1 + 10 files changed, 189 insertions(+), 42 deletions(-) create mode 100644 src/main/java/com/xuqm/server/appmanager/common/CommonHelper.java create mode 100644 src/main/java/com/xuqm/server/appmanager/controller/manager/v1/ManagerV1Controller.java create mode 100644 src/main/java/com/xuqm/server/appmanager/controller/sys/v1/data/TenantAddUserData.java create mode 100644 src/main/java/com/xuqm/server/appmanager/controller/sys/v1/data/TenantChangeAdminData.java create mode 100644 src/main/java/com/xuqm/server/appmanager/controller/sys/v1/data/TenantCreateData.java create mode 100644 src/main/java/com/xuqm/server/appmanager/controller/sys/v1/data/TenantDelUserData.java diff --git a/src/main/java/com/xuqm/server/appmanager/common/CommonHelper.java b/src/main/java/com/xuqm/server/appmanager/common/CommonHelper.java new file mode 100644 index 0000000..c2bd52c --- /dev/null +++ b/src/main/java/com/xuqm/server/appmanager/common/CommonHelper.java @@ -0,0 +1,10 @@ +package com.xuqm.server.appmanager.common; + +import java.util.Random; + +public class CommonHelper { + + public static String getRandomId() { + return TimeHelper.getTimeString("yyyyMMddHHmm") + (new Random().nextInt(899999999) + 100000000); + } +} diff --git a/src/main/java/com/xuqm/server/appmanager/controller/manager/v1/ManagerV1Controller.java b/src/main/java/com/xuqm/server/appmanager/controller/manager/v1/ManagerV1Controller.java new file mode 100644 index 0000000..42a4258 --- /dev/null +++ b/src/main/java/com/xuqm/server/appmanager/controller/manager/v1/ManagerV1Controller.java @@ -0,0 +1,61 @@ +package com.xuqm.server.appmanager.controller.manager.v1; + +import com.xuqm.server.appmanager.common.CommonHelper; +import com.xuqm.server.appmanager.common.JWTHelper; +import com.xuqm.server.appmanager.common.TimeHelper; +import com.xuqm.server.appmanager.entitys.UserInfo; +import com.xuqm.server.appmanager.entitys.sys.v1.ApplicationEntity; +import com.xuqm.server.appmanager.http.HttpResult; +import com.xuqm.server.appmanager.repository.sys.v1.ApplicationRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Random; + +@RestController +@RequestMapping("manager/v1") +public class ManagerV1Controller { + + @Autowired + private ApplicationRepository applicationRepository; + + @PostMapping("/manager/create") + public HttpResult appCreate(@RequestBody ApplicationEntity application, @RequestHeader(name = "token") String token) throws Exception { + if (null == application.getAppName() || null == application.getPackageName()) { + return new HttpResult<>(201, "参数错误", null); + } else { + UserInfo userInfo = JWTHelper.getUser(token); + if (null == userInfo) { + return new HttpResult<>(401, "登录失效", null); + } + ApplicationEntity app = applicationRepository.findFirstByAppNameAndTenantNo(application.getAppName(), userInfo.getTenantNo()); + if (null != app) return new HttpResult<>(201, "已创建相关类型的同名应用", null); + app = new ApplicationEntity(); + app.setTenantNo(userInfo.getTenantNo()); + app.setAppName(application.getAppName()); + app.setPackageName(application.getPackageName()); + app.setDownloadUrl(application.getDownloadUrl()); + app.setAppId(CommonHelper.getRandomId()); + applicationRepository.save(app); + + return new HttpResult<>(200, "创建成功", app.getAppId()); + } + + } + + @PostMapping("/manager/list") + public HttpResult> appList(@RequestBody ApplicationEntity application, @RequestHeader(name = "token") String token) throws Exception { + + UserInfo userInfo = JWTHelper.getUser(token); + if (null == userInfo) { + return new HttpResult<>(401, "登录失效", null); + } + + + List apps = applicationRepository.findAllByTenantNo(userInfo.getTenantNo()); + + return new HttpResult<>(200, "成功", apps); + } + +} diff --git a/src/main/java/com/xuqm/server/appmanager/controller/sys/v1/TenantV1Controller.java b/src/main/java/com/xuqm/server/appmanager/controller/sys/v1/TenantV1Controller.java index 8d0b608..70b3b3c 100644 --- a/src/main/java/com/xuqm/server/appmanager/controller/sys/v1/TenantV1Controller.java +++ b/src/main/java/com/xuqm/server/appmanager/controller/sys/v1/TenantV1Controller.java @@ -1,20 +1,21 @@ package com.xuqm.server.appmanager.controller.sys.v1; +import com.xuqm.server.appmanager.common.CommonHelper; import com.xuqm.server.appmanager.common.JWTHelper; -import com.xuqm.server.appmanager.common.TimeHelper; +import com.xuqm.server.appmanager.controller.sys.v1.data.TenantAddUserData; +import com.xuqm.server.appmanager.controller.sys.v1.data.TenantChangeAdminData; +import com.xuqm.server.appmanager.controller.sys.v1.data.TenantCreateData; +import com.xuqm.server.appmanager.controller.sys.v1.data.TenantDelUserData; import com.xuqm.server.appmanager.entitys.UserInfo; -import com.xuqm.server.appmanager.entitys.sys.v1.ApplicationEntity; import com.xuqm.server.appmanager.entitys.sys.v1.TenantEntity; import com.xuqm.server.appmanager.entitys.sys.v1.TenantUserEntity; import com.xuqm.server.appmanager.http.HttpResult; -import com.xuqm.server.appmanager.repository.sys.v1.ApplicationRepository; import com.xuqm.server.appmanager.repository.sys.v1.TenantRepository; import com.xuqm.server.appmanager.repository.sys.v1.TenantUserRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import java.util.List; -import java.util.Random; +import java.util.Objects; @RestController @RequestMapping("tenant/v1") @@ -24,11 +25,9 @@ public class TenantV1Controller { private TenantRepository tenantRepository; @Autowired private TenantUserRepository tenantUserRepository; - @Autowired - private ApplicationRepository applicationRepository; - @PostMapping("/tenant/create") - public HttpResult tenantCreate(@RequestBody TenantUserEntity tenant) throws Exception { + @PostMapping("/create") + public HttpResult tenantCreate(@RequestBody TenantCreateData tenant) throws Exception { if (null == tenant.getUserPhone() || null == tenant.getUserEmail() || null == tenant.getUserPwd()) { return new HttpResult<>(201, "参数错误", null); } else { @@ -38,12 +37,14 @@ public class TenantV1Controller { u.setUserEmail(tenant.getUserEmail()); u.setUserPhone(tenant.getUserPhone()); u.setUserPwd(tenant.getUserPwd()); - u.setUserId(TimeHelper.getTimeString("yyyyMMddHHmm") + (new Random().nextInt(899999999) + 100000000)); - u.setTenantNo(TimeHelper.getTimeString("yyyyMMddHHmm") + (new Random().nextInt(899999999) + 100000000)); + u.setUserName(tenant.getUserName()); + u.setUserId(CommonHelper.getRandomId()); + u.setTenantNo(CommonHelper.getRandomId()); tenantUserRepository.save(u); TenantEntity t = new TenantEntity(); t.setUserId(u.getUserId()); t.setTenantNo(u.getTenantNo()); + t.setTenantName(tenant.getTenantName()); tenantRepository.save(t); return new HttpResult<>(200, "创建成功", "创建成功"); @@ -51,42 +52,76 @@ public class TenantV1Controller { } - @PostMapping("/manager/create") - public HttpResult appCreate(@RequestBody ApplicationEntity application, @RequestHeader(name = "token") String token) throws Exception { - if (null == application.getAppName() || null == application.getPackageName()) { - return new HttpResult<>(201, "参数错误", null); - } else { - UserInfo userInfo = JWTHelper.getUser(token); - if (null == userInfo) { - return new HttpResult<>(401, "登录失效", null); - } - ApplicationEntity app = applicationRepository.findFirstByAppNameAndTenantNo(application.getAppName(), userInfo.getTenantNo()); - if (null != app) return new HttpResult<>(201, "已创建相关类型的同名应用", null); - app = new ApplicationEntity(); - app.setTenantNo(userInfo.getTenantNo()); - app.setAppName(application.getAppName()); - app.setPackageName(application.getPackageName()); - app.setDownloadUrl(application.getDownloadUrl()); - app.setAppId(TimeHelper.getTimeString("yyyyMMddHHmm") + (new Random().nextInt(899999999) + 100000000)); - applicationRepository.save(app); - - return new HttpResult<>(200, "创建成功", app.getAppId()); - } - - } - - @PostMapping("/manager/list") - public HttpResult> appList(@RequestBody ApplicationEntity application, @RequestHeader(name = "token") String token) throws Exception { - + @PostMapping("/changeAdmin") + public HttpResult changeAdmin(@RequestBody TenantChangeAdminData data, @RequestHeader(name = "token") String token) throws Exception { UserInfo userInfo = JWTHelper.getUser(token); if (null == userInfo) { return new HttpResult<>(401, "登录失效", null); } + if (null == data.getUserId()) { + return new HttpResult<>(201, "参数错误", null); + } else { + TenantEntity tenant = tenantRepository.findFirstByTenantNo(userInfo.getTenantNo()); + if (null == tenant) return new HttpResult<>(201, "查找租户信息失败", null); + if (!Objects.equals(tenant.getUserId(), userInfo.getUserId())) { + return new HttpResult<>(201, "请用管理员账号操作", null); + } + tenant.setUserId(data.getUserId()); + tenantRepository.save(tenant); + return new HttpResult<>(200, "修改成功", "修改成功"); + } - List apps = applicationRepository.findAllByTenantNo(userInfo.getTenantNo()); + } + + @PostMapping("/addUser") + public HttpResult addUser(@RequestBody TenantAddUserData data, @RequestHeader(name = "token") String token) throws Exception { + UserInfo userInfo = JWTHelper.getUser(token); + if (null == userInfo) { + return new HttpResult<>(401, "登录失效", null); + } + if (null == data.getUserPhone() || null == data.getUserEmail() || null == data.getUserPwd()) { + return new HttpResult<>(201, "参数错误", null); + } else { + TenantUserEntity u = tenantUserRepository.findFirstByUserEmailOrUserPhone(data.getUserEmail(), data.getUserPhone()); + if (null != u) return new HttpResult<>(201, "邮箱或手机号重复", null); + u = new TenantUserEntity(); + u.setUserEmail(data.getUserEmail()); + u.setUserPhone(data.getUserPhone()); + u.setUserPwd(data.getUserPwd()); + u.setUserName(data.getUserName()); + u.setUserId(CommonHelper.getRandomId()); + u.setTenantNo(userInfo.getTenantNo()); + tenantUserRepository.save(u); + + return new HttpResult<>(200, "添加成功", "添加成功"); + } + + } + + @PostMapping("/delUser") + public HttpResult delUser(@RequestBody TenantDelUserData data, @RequestHeader(name = "token") String token) throws Exception { + UserInfo userInfo = JWTHelper.getUser(token); + if (null == userInfo) { + return new HttpResult<>(401, "登录失效", null); + } + if (null == data.getUserId()) { + return new HttpResult<>(201, "参数错误", null); + } else { + TenantEntity tenant = tenantRepository.findFirstByTenantNo(userInfo.getTenantNo()); + if (null == tenant) return new HttpResult<>(201, "查找租户信息失败", null); + if (!Objects.equals(tenant.getUserId(), userInfo.getUserId())) { + return new HttpResult<>(201, "请用管理员账号操作", null); + } + if (!Objects.equals(tenant.getUserId(), data.getUserId())) { + return new HttpResult<>(201, "无法删除管理员账号", null); + } + + tenantUserRepository.delete(tenantUserRepository.findFirstByUserId(data.getUserId())); + + return new HttpResult<>(200, "删除成功", "删除成功"); + } - return new HttpResult<>(200, "成功", apps); } } diff --git a/src/main/java/com/xuqm/server/appmanager/controller/sys/v1/data/TenantAddUserData.java b/src/main/java/com/xuqm/server/appmanager/controller/sys/v1/data/TenantAddUserData.java new file mode 100644 index 0000000..fb5f1a1 --- /dev/null +++ b/src/main/java/com/xuqm/server/appmanager/controller/sys/v1/data/TenantAddUserData.java @@ -0,0 +1,11 @@ +package com.xuqm.server.appmanager.controller.sys.v1.data; + +import lombok.Data; + +@Data +public class TenantAddUserData { + private String userName; + private String userPhone; + private String userEmail; + private String userPwd; +} diff --git a/src/main/java/com/xuqm/server/appmanager/controller/sys/v1/data/TenantChangeAdminData.java b/src/main/java/com/xuqm/server/appmanager/controller/sys/v1/data/TenantChangeAdminData.java new file mode 100644 index 0000000..981c040 --- /dev/null +++ b/src/main/java/com/xuqm/server/appmanager/controller/sys/v1/data/TenantChangeAdminData.java @@ -0,0 +1,8 @@ +package com.xuqm.server.appmanager.controller.sys.v1.data; + +import lombok.Data; + +@Data +public class TenantChangeAdminData { + private String userId; +} diff --git a/src/main/java/com/xuqm/server/appmanager/controller/sys/v1/data/TenantCreateData.java b/src/main/java/com/xuqm/server/appmanager/controller/sys/v1/data/TenantCreateData.java new file mode 100644 index 0000000..d4cc2c7 --- /dev/null +++ b/src/main/java/com/xuqm/server/appmanager/controller/sys/v1/data/TenantCreateData.java @@ -0,0 +1,13 @@ +package com.xuqm.server.appmanager.controller.sys.v1.data; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +@Data +public class TenantCreateData { + private String userName; + private String tenantName; + private String userPhone; + private String userEmail; + private String userPwd; +} diff --git a/src/main/java/com/xuqm/server/appmanager/controller/sys/v1/data/TenantDelUserData.java b/src/main/java/com/xuqm/server/appmanager/controller/sys/v1/data/TenantDelUserData.java new file mode 100644 index 0000000..44f04e2 --- /dev/null +++ b/src/main/java/com/xuqm/server/appmanager/controller/sys/v1/data/TenantDelUserData.java @@ -0,0 +1,8 @@ +package com.xuqm.server.appmanager.controller.sys.v1.data; + +import lombok.Data; + +@Data +public class TenantDelUserData { + private String userId; +} diff --git a/src/main/java/com/xuqm/server/appmanager/entitys/sys/v1/ApplicationEntity.java b/src/main/java/com/xuqm/server/appmanager/entitys/sys/v1/ApplicationEntity.java index 4492ba1..ff0c615 100644 --- a/src/main/java/com/xuqm/server/appmanager/entitys/sys/v1/ApplicationEntity.java +++ b/src/main/java/com/xuqm/server/appmanager/entitys/sys/v1/ApplicationEntity.java @@ -6,7 +6,7 @@ import jakarta.persistence.Table; import lombok.Data; @Entity -@Table(name = "app_manager") +@Table(name = "apps") @Data public class ApplicationEntity extends AbstractBaseTimeEntity { private String appId; diff --git a/src/main/java/com/xuqm/server/appmanager/repository/sys/v1/TenantRepository.java b/src/main/java/com/xuqm/server/appmanager/repository/sys/v1/TenantRepository.java index 4855f3e..78b229f 100644 --- a/src/main/java/com/xuqm/server/appmanager/repository/sys/v1/TenantRepository.java +++ b/src/main/java/com/xuqm/server/appmanager/repository/sys/v1/TenantRepository.java @@ -6,6 +6,6 @@ import org.springframework.stereotype.Repository; @Repository public interface TenantRepository extends JpaRepository { -// TenantEntity findFirstByUserEmailOrUserPhone(String userEmail, String userPhone); + TenantEntity findFirstByTenantNo(String tenantNo); } diff --git a/src/main/java/com/xuqm/server/appmanager/repository/sys/v1/TenantUserRepository.java b/src/main/java/com/xuqm/server/appmanager/repository/sys/v1/TenantUserRepository.java index f618f7b..4b77bc3 100644 --- a/src/main/java/com/xuqm/server/appmanager/repository/sys/v1/TenantUserRepository.java +++ b/src/main/java/com/xuqm/server/appmanager/repository/sys/v1/TenantUserRepository.java @@ -9,5 +9,6 @@ import org.springframework.stereotype.Repository; public interface TenantUserRepository extends JpaRepository { TenantUserEntity findFirstByUserEmailOrUserPhone(String userEmail, String userPhone); TenantUserEntity findFirstByUserEmailAndUserPwd(String userEmail, String userPwd); + TenantUserEntity findFirstByUserId(String userId); }