diff --git a/src/main/java/com/xuqm/server/appmanager/controller/releases/ReleaseV1Controller.java b/src/main/java/com/xuqm/server/appmanager/controller/releases/ReleaseV1Controller.java new file mode 100644 index 0000000..ad26487 --- /dev/null +++ b/src/main/java/com/xuqm/server/appmanager/controller/releases/ReleaseV1Controller.java @@ -0,0 +1,77 @@ +package com.xuqm.server.appmanager.controller.releases; + +import com.xuqm.server.appmanager.common.JWTHelper; +import com.xuqm.server.appmanager.controller.releases.data.ReleaseAddData; +import com.xuqm.server.appmanager.controller.releases.data.ReleaseListData; +import com.xuqm.server.appmanager.entitys.UserInfo; +import com.xuqm.server.appmanager.entitys.sys.v1.ApplicationEntity; +import com.xuqm.server.appmanager.entitys.sys.v1.ReleaseEntity; +import com.xuqm.server.appmanager.enums.AppStatus; +import com.xuqm.server.appmanager.http.HttpResult; +import com.xuqm.server.appmanager.repository.sys.v1.ApplicationRepository; +import com.xuqm.server.appmanager.repository.sys.v1.ReleaseRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("release/v1") +public class ReleaseV1Controller { + + @Autowired + private ApplicationRepository applicationRepository; + @Autowired + private ReleaseRepository releaseRepository; + + @PostMapping("/add") + public HttpResult ReleaseAdd(@RequestBody ReleaseAddData data, @RequestHeader(name = "token") String token) throws Exception { + UserInfo userInfo = JWTHelper.getUser(token); + if (null == userInfo) { + return new HttpResult<>(401, "登录失效", null); + } + if (null == data.getAppId() || null == data.getUrl() || null == data.getVersionCode() || null == data.getVersionName()) { + return new HttpResult<>(201, "参数错误", null); + } else { + ApplicationEntity app = applicationRepository.findFirstByAppIdAndTenantNo(data.getAppId(), userInfo.getTenantNo()); + if (null == app) return new HttpResult<>(201, "appId不存在", null); + ReleaseEntity release = releaseRepository.findFirstByAppIdAndTenantNoAndVersionCodeGreaterThanEqual(data.getAppId(), userInfo.getTenantNo(), data.getVersionCode()); + if (null != release) return new HttpResult<>(201, "存在更高版本", null); + release = new ReleaseEntity(); + release.setAppId(data.getAppId()); + release.setTenantNo(userInfo.getTenantNo()); + release.setUrl(data.getUrl()); + release.setVersionCode(data.getVersionCode()); + release.setVersionName(data.getVersionName()); + release.setContent(data.getContent()); + release.setVivo(data.isVivo() ? AppStatus.ABSENT : AppStatus.NOT); + release.setXiaomi(data.isXiaomi() ? AppStatus.ABSENT : AppStatus.NOT); + release.setOppo(data.isOppo() ? AppStatus.ABSENT : AppStatus.NOT); + release.setMeizu(data.isMeizu() ? AppStatus.ABSENT : AppStatus.NOT); + release.setHuawei(data.isHuawei() ? AppStatus.ABSENT : AppStatus.NOT); + release.setGoogle(data.isGoogle() ? AppStatus.ABSENT : AppStatus.NOT); + release.setRongyao(data.isRongyao() ? AppStatus.ABSENT : AppStatus.NOT); + releaseRepository.save(release); + + return new HttpResult<>(200, "创建成功", app.getAppId()); + } + + } + + @PostMapping("/list") + public HttpResult> ReleaseList(@RequestBody ReleaseListData data, @RequestHeader(name = "token") String token) throws Exception { + + UserInfo userInfo = JWTHelper.getUser(token); + if (null == userInfo) { + return new HttpResult<>(401, "登录失效", null); + } + if (data.getPageNumber() < 0) return new HttpResult<>(201, "参数错误", null); + if (data.getPageSize() < 0) return new HttpResult<>(201, "参数错误", null); + + + Page apps = releaseRepository.findAllByAppIdAndTenantNo(data.getAppId(), userInfo.getTenantNo(), PageRequest.of(data.getPageNumber(), data.getPageSize())); + + return new HttpResult<>(200, "成功", apps); + } + +} diff --git a/src/main/java/com/xuqm/server/appmanager/controller/releases/data/ReleaseAddData.java b/src/main/java/com/xuqm/server/appmanager/controller/releases/data/ReleaseAddData.java new file mode 100644 index 0000000..fe3b8c8 --- /dev/null +++ b/src/main/java/com/xuqm/server/appmanager/controller/releases/data/ReleaseAddData.java @@ -0,0 +1,20 @@ +package com.xuqm.server.appmanager.controller.releases.data; + +import com.xuqm.server.appmanager.enums.AppStatus; +import lombok.Data; + +@Data +public class ReleaseAddData { + private String appId; + private boolean huawei; + private boolean xiaomi; + private boolean meizu; + private boolean rongyao; + private boolean oppo; + private boolean vivo; + private boolean google; + private String url; + private String versionCode; + private String versionName; + private String content; +} diff --git a/src/main/java/com/xuqm/server/appmanager/controller/releases/data/ReleaseListData.java b/src/main/java/com/xuqm/server/appmanager/controller/releases/data/ReleaseListData.java new file mode 100644 index 0000000..2cee18f --- /dev/null +++ b/src/main/java/com/xuqm/server/appmanager/controller/releases/data/ReleaseListData.java @@ -0,0 +1,9 @@ +package com.xuqm.server.appmanager.controller.releases.data; + +import com.xuqm.server.appmanager.data.PageData; +import lombok.Data; + +@Data +public class ReleaseListData extends PageData { + private String appId; +} diff --git a/src/main/java/com/xuqm/server/appmanager/entitys/sys/v1/ReleaseEntity.java b/src/main/java/com/xuqm/server/appmanager/entitys/sys/v1/ReleaseEntity.java index 01aab51..81f4d26 100644 --- a/src/main/java/com/xuqm/server/appmanager/entitys/sys/v1/ReleaseEntity.java +++ b/src/main/java/com/xuqm/server/appmanager/entitys/sys/v1/ReleaseEntity.java @@ -10,6 +10,7 @@ import lombok.Data; @Data public class ReleaseEntity extends AbstractBaseTimeEntity { private String appId; + private String tenantNo; @Enumerated(EnumType.STRING) private AppStatus huawei; @Enumerated(EnumType.STRING) @@ -27,4 +28,5 @@ public class ReleaseEntity extends AbstractBaseTimeEntity { private String url; private String versionCode; private String versionName; + private String content; } diff --git a/src/main/java/com/xuqm/server/appmanager/repository/sys/v1/ApplicationRepository.java b/src/main/java/com/xuqm/server/appmanager/repository/sys/v1/ApplicationRepository.java index 415e69d..c138b1a 100644 --- a/src/main/java/com/xuqm/server/appmanager/repository/sys/v1/ApplicationRepository.java +++ b/src/main/java/com/xuqm/server/appmanager/repository/sys/v1/ApplicationRepository.java @@ -11,6 +11,7 @@ import java.util.List; @Repository public interface ApplicationRepository extends JpaRepository { ApplicationEntity findFirstByAppNameAndTenantNo(String appName, String tenantNo); + ApplicationEntity findFirstByAppIdAndTenantNo(String appId, String tenantNo); ApplicationEntity findFirstByTenantNoAndPackageNameOrAppName(String tenantNo, String packageName, String appName); diff --git a/src/main/java/com/xuqm/server/appmanager/repository/sys/v1/ReleaseRepository.java b/src/main/java/com/xuqm/server/appmanager/repository/sys/v1/ReleaseRepository.java new file mode 100644 index 0000000..63b6f81 --- /dev/null +++ b/src/main/java/com/xuqm/server/appmanager/repository/sys/v1/ReleaseRepository.java @@ -0,0 +1,14 @@ +package com.xuqm.server.appmanager.repository.sys.v1; + +import com.xuqm.server.appmanager.entitys.sys.v1.ApplicationEntity; +import com.xuqm.server.appmanager.entitys.sys.v1.ReleaseEntity; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface ReleaseRepository extends JpaRepository { + ReleaseEntity findFirstByAppIdAndTenantNoAndVersionCodeGreaterThanEqual(String appId, String tenantNo, String versionCode); + Page findAllByAppIdAndTenantNo(String appId, String tenantNo, Pageable pageable); +}