diff --git a/iot/app.log b/iot/app.log new file mode 100644 index 0000000..e69de29 diff --git a/iot/pom.xml b/iot/pom.xml index 65fab26..d2ca3f5 100644 --- a/iot/pom.xml +++ b/iot/pom.xml @@ -20,26 +20,6 @@ core ${com.zeto} - - com.qcloud - cos_api - 5.6.211 - - - me.zhyd.oauth - JustAuth - 1.16.5 - - - com.qcloud - cos-sts_api - 3.1.1 - - - com.tencentcloudapi - tencentcloud-sdk-java - 3.1.640 - @@ -97,7 +77,7 @@ + implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> com.zeto.${project.name}.Application diff --git a/iot/src/main/java/com/zeto/iot/controller/Activity.java b/iot/src/main/java/com/zeto/iot/controller/Activity.java index dc4f31c..ba24dad 100644 --- a/iot/src/main/java/com/zeto/iot/controller/Activity.java +++ b/iot/src/main/java/com/zeto/iot/controller/Activity.java @@ -4,10 +4,10 @@ import com.zeto.ZenData; import com.zeto.ZenEngine; import com.zeto.ZenResult; import com.zeto.annotation.AccessRole; +import com.zeto.annotation.Inject; import com.zeto.domain.ZenRole; import com.zeto.kit.DateKit; import lombok.extern.slf4j.Slf4j; -import org.noear.solon.annotation.Inject; @Slf4j diff --git a/iot/src/main/java/com/zeto/iot/helper/login/DingLogin.java b/iot/src/main/java/com/zeto/iot/helper/login/DingLogin.java deleted file mode 100644 index 9d12ed5..0000000 --- a/iot/src/main/java/com/zeto/iot/helper/login/DingLogin.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.zeto.iot.helper.login; - -// 钉钉登录 -public class DingLogin { -} diff --git a/iot/src/main/java/com/zeto/iot/helper/login/WeCom.java b/iot/src/main/java/com/zeto/iot/helper/login/WeCom.java deleted file mode 100644 index 97b9785..0000000 --- a/iot/src/main/java/com/zeto/iot/helper/login/WeCom.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.zeto.iot.helper.login; - -// 企业微信登录 -public class WeCom { -} diff --git a/iot/src/main/java/com/zeto/iot/helper/upload/IUploader.java b/iot/src/main/java/com/zeto/iot/helper/upload/IUploader.java deleted file mode 100644 index 5d2a299..0000000 --- a/iot/src/main/java/com/zeto/iot/helper/upload/IUploader.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.zeto.iot.helper.upload; - -import java.util.Map; - -public interface IUploader { - void put(String path, String content, String contentType); - - void remove(String path); - - String get(String path); - - void refresh(String path); - - Map token(String fileName, String target); -} diff --git a/iot/src/main/java/com/zeto/iot/helper/upload/Uploader.java b/iot/src/main/java/com/zeto/iot/helper/upload/Uploader.java deleted file mode 100644 index 1a376c3..0000000 --- a/iot/src/main/java/com/zeto/iot/helper/upload/Uploader.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.zeto.iot.helper.upload; - -import com.zeto.ZenEnvironment; -import com.zeto.iot.helper.upload.cos.CosUploader; - -import java.util.HashMap; -import java.util.Map; - -public class Uploader { - private static IUploader uploader = null; - private static final Map contentTypeMap = new HashMap() {{ - put("js", "application/javascript;charset=utf-8"); - put("css", "text/css;charset=utf-8"); - put("json", "application/json;charset=utf-8"); - put("gif", "image/gif"); - put("png", "image/png"); - put("jpg", "image/jpeg"); - put("woff", "application/font-woff"); - put("woff2", "application/font-woff2"); - put("otf", "application/x-font-opentype"); - put("ttf", "application/x-font-ttf"); - put("svg", "image/svg+xml"); - put("eot", "application/vnd.ms-fontobject"); - }}; - - private static IUploader i() { - if (Uploader.uploader == null) { - String type = ZenEnvironment.get("cloudType"); - if (type.equals("qcloud")) Uploader.uploader = new CosUploader(); - } - return Uploader.uploader; - } - - public static void put(String path, String content) { - int extIndex = path.lastIndexOf("."); - if (extIndex < 0) return; - String ext = path.substring(extIndex + 1); - if (!Uploader.contentTypeMap.containsKey(ext)) return; - Uploader.i().put(path, content, Uploader.contentTypeMap.get(ext)); - Uploader.refresh(path); - } - - public static String get(String path) { - return Uploader.i().get(path); - } - - public static void remove(String path) { - Uploader.i().remove(path); - Uploader.refresh(path); - } - - public static void refresh(String path) { - // 非线上环境无需刷CDN - if (!ZenEnvironment.isOnline()) return; - String webpath = ZenEnvironment.get("cdnHost") + path; - Uploader.i().refresh(webpath); - } - - public static Map token(String fileName, String target) { - return Uploader.i().token(fileName, target); - } -} diff --git a/iot/src/main/java/com/zeto/iot/helper/upload/cos/CosUploader.java b/iot/src/main/java/com/zeto/iot/helper/upload/cos/CosUploader.java deleted file mode 100644 index 77ed3eb..0000000 --- a/iot/src/main/java/com/zeto/iot/helper/upload/cos/CosUploader.java +++ /dev/null @@ -1,155 +0,0 @@ -package com.zeto.iot.helper.upload.cos; - - -import com.google.common.base.Strings; -import com.qcloud.cos.COSClient; -import com.qcloud.cos.ClientConfig; -import com.qcloud.cos.auth.BasicCOSCredentials; -import com.qcloud.cos.auth.COSCredentials; -import com.qcloud.cos.exception.CosClientException; -import com.qcloud.cos.model.COSObject; -import com.qcloud.cos.model.COSObjectInputStream; -import com.qcloud.cos.model.ObjectMetadata; -import com.qcloud.cos.model.PutObjectRequest; -import com.qcloud.cos.region.Region; -import com.qcloud.cos.utils.IOUtils; -import com.qcloud.cos.utils.StringUtils; -import com.tencent.cloud.CosStsClient; -import com.tencent.cloud.Response; -import com.zeto.ZenEnvironment; -import com.zeto.iot.helper.upload.IUploader; -import com.zeto.kit.StringKit; -import lombok.extern.slf4j.Slf4j; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.HashMap; -import java.util.Map; -import java.util.TreeMap; - -@Slf4j -public class CosUploader implements IUploader { - private final String publicBucket; - private final COSClient cosClient; - private final String defaultType = "public"; - - public CosUploader() { - String secretId = ZenEnvironment.get("bucketAK"); - String secretKey = ZenEnvironment.get("bucketSK"); - String region = ZenEnvironment.get("bucketRegion"); - publicBucket = ZenEnvironment.get("bucketPublic"); - // 初始化用户身份信息(secretId, secretKey) - COSCredentials cred = new BasicCOSCredentials(secretId, secretKey); - // 设置bucket的区域, COS地域的简称请参照 https://www.qcloud.com/document/product/436/6224 - ClientConfig clientConfig = new ClientConfig(new Region(region)); - - // 生成cos客户端 - this.cosClient = new COSClient(cred, clientConfig); - } - - @Override - public void remove(String path) { - } - - @Override - public void put(String path, String content, String contentType) { - if (Strings.isNullOrEmpty(content) || Strings.isNullOrEmpty(path)) return; - byte[] contentByteArray = content.getBytes(StringUtils.UTF8); - InputStream contentInput = new ByteArrayInputStream(contentByteArray); - - ObjectMetadata metadata = new ObjectMetadata(); - metadata.setContentType(contentType); - metadata.setContentLength(contentByteArray.length); - - PutObjectRequest putObjectRequest = new PutObjectRequest(publicBucket, path, contentInput, metadata); - cosClient.putObject(putObjectRequest); - } - - @Override - public String get(String path) { - COSObjectInputStream cosObjectInput = null; - try { - COSObject cosObject = cosClient.getObject(publicBucket, path); - cosObjectInput = cosObject.getObjectContent(); - } catch (CosClientException e) { - CosUploader.log.error("uploader", e); - } - - // 这里是直接读取,按实际情况来处理 - byte[] bytes = null; - try { - bytes = IOUtils.toByteArray(cosObjectInput); - } catch (IOException e) { - CosUploader.log.error("uploader", e); - } finally { - // 用完流之后一定要调用 close() - try { - cosObjectInput.close(); - } catch (IOException e) { - CosUploader.log.error("uploader", e); - } - } - return new String(bytes); - } - - // 刷新CDN - @Override - public void refresh(String path) { - - } - - @Override - public Map token(String fileName, String target) { - String secretId = ZenEnvironment.get("bucketAK"); - String secretKey = ZenEnvironment.get("bucketSK"); - String region = ZenEnvironment.get("bucketRegion"); - String domain = ZenEnvironment.get("bucketDomain"); - String filepath = this.getPath(fileName); - TreeMap config = new TreeMap<>(); - // 替换为您的云 api 密钥 SecretId - config.put("secretId", secretId); - // 替换为您的云 api 密钥 SecretKey - config.put("secretKey", secretKey); - String bucket = defaultType.equals(target) ? publicBucket : ZenEnvironment.get("bucketPrivate"); - // 临时密钥有效时长,单位是秒,默认 1800 秒,目前主账号最长 2 小时(即 7200 秒),子账号最长 36 小时(即 129600)秒 - int timeout = 1800; - config.put("durationSeconds", timeout); - config.put("bucket", bucket); - // 换成 publicBucket 所在地区 - config.put("region", region); - String allowPrefix = filepath.substring(0, 18) + "*"; - config.put("allowPrefixes", new String[]{allowPrefix}); - - String[] allowActions = new String[]{ - "name/cos:PutObject", - "name/cos:PostObject" - }; - config.put("allowActions", allowActions); - Map result = new HashMap<>(); - try { - Response response = CosStsClient.getCredential(config); - // 腾讯云 - result.put("type", "cos"); - result.put("startTime", response.startTime); - result.put("expiredTime", response.expiredTime); -// 地域地址:https://cloud.tencent.com/document/product/436/6224 - result.put("pathname", filepath); - result.put("bucket", bucket); - result.put("region", region); - result.put("url", domain + filepath); - result.put("secretId", response.credentials.tmpSecretId); - result.put("secretKey", response.credentials.tmpSecretKey); - result.put("sessionToken", response.credentials.sessionToken); - } catch (IOException e) { - throw new RuntimeException(e); - } - return result; - } - - private String getPath(String fileName) { - String ext = StringKit.fileExt(fileName); - String fileId = StringKit.objectId(); - return "f01/" + ext + "/" + fileId.substring(0, 2) + "/" + fileId.substring(2) + "." + ext; - } -} diff --git a/iot/src/main/java/com/zeto/iot/helper/upload/oss/OssUploader.java b/iot/src/main/java/com/zeto/iot/helper/upload/oss/OssUploader.java deleted file mode 100644 index e718f20..0000000 --- a/iot/src/main/java/com/zeto/iot/helper/upload/oss/OssUploader.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.zeto.iot.helper.upload.oss; - -public class OssUploader { -} diff --git a/iot/src/main/java/com/zeto/iot/hooks/ActivityStatusHook.java b/iot/src/main/java/com/zeto/iot/hooks/ActivityStatusHook.java deleted file mode 100644 index 917b9f1..0000000 --- a/iot/src/main/java/com/zeto/iot/hooks/ActivityStatusHook.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.zeto.iot.hooks; - -import com.zeto.IZenHook; -import com.zeto.ZenData; -import com.zeto.ZenEngine; -import com.zeto.ZenResult; -import com.zeto.annotation.ZenHook; -import com.zeto.driver.JsonKit; -import com.zeto.iot.helper.upload.Uploader; -import com.zeto.iot.hooks.domain.PageComponentDO; -import com.zeto.iot.hooks.domain.PageDO; -import com.zeto.kit.StringKit; -import org.noear.solon.annotation.Inject; - -@ZenHook("patch/activityStatus") -public class ActivityStatusHook implements IZenHook { - private final static String online = "2"; - private final static String offline = "3"; - - @Inject - private ZenEngine zenEngine; - - @Override - public ZenResult before(ZenData context) { - String status = context.get("status"); - ZenResult result = zenEngine.execute("get/activity", context); - String pathStr = StringKit.objectId(); - String path = "/" + pathStr.substring(0, 2) + "/" + pathStr.substring(2); - // 页面上线 - if (ActivityStatusHook.online.equals(status)) { - PageDO pageDO = result.get("content", PageDO.class); - Object pageData = result.getObject("data"); - pageDO.setData(pageData); - StringBuilder jsResult = new StringBuilder(); - for (PageComponentDO componentDO : pageDO.getComponents()) { - String jsSource = "/" + componentDO.getLib() + "/" + componentDO.getName() + ".js"; - jsResult.append(Uploader.get(jsSource)).append(";"); - } - String pageDataStr = JsonKit.stringify(pageDO); - // 推送数据与js资源 - Uploader.put("/jsz" + path + ".json", pageDataStr); - Uploader.put("/jsz" + path + ".js", jsResult.toString()); - context.put("output", path); - } - return ZenResult.success(); - } - - @Override - public void after(ZenData context, ZenResult result) { - String id = context.getId(); - String status = context.get("status"); - // 页面上线 - if (ActivityStatusHook.offline.equals(status)) { - //todo: 完成cdn下线 - } - } -} diff --git a/iot/src/main/java/com/zeto/iot/hooks/ZetoUploadHook.java b/iot/src/main/java/com/zeto/iot/hooks/ZetoUploadHook.java deleted file mode 100644 index 7cce80d..0000000 --- a/iot/src/main/java/com/zeto/iot/hooks/ZetoUploadHook.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.zeto.iot.hooks; - -import com.zeto.IZenHook; -import com.zeto.ZenData; -import com.zeto.ZenResult; -import com.zeto.annotation.ZenHook; -import com.zeto.iot.helper.upload.Uploader; - -import java.util.Map; - -@ZenHook("zetoUploadHook") -public class ZetoUploadHook implements IZenHook { - @Override - public ZenResult before(ZenData context) { - IZenHook.super.before(context); - String fileName = context.get("filename"); - String target = context.get("target"); - Map data = Uploader.token(fileName, target); - return ZenResult.success().setData(data); - } -} diff --git a/iot/src/main/java/com/zeto/iot/hooks/domain/PageComponentDO.java b/iot/src/main/java/com/zeto/iot/hooks/domain/PageComponentDO.java deleted file mode 100644 index 9474c9c..0000000 --- a/iot/src/main/java/com/zeto/iot/hooks/domain/PageComponentDO.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.zeto.iot.hooks.domain; - -import lombok.Data; - -import java.util.Map; - -@Data -public class PageComponentDO { - private String name; - private String id; - private String lib; - private Map meta; -} diff --git a/iot/src/main/java/com/zeto/iot/hooks/domain/PageDO.java b/iot/src/main/java/com/zeto/iot/hooks/domain/PageDO.java deleted file mode 100644 index b2eb164..0000000 --- a/iot/src/main/java/com/zeto/iot/hooks/domain/PageDO.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.zeto.iot.hooks.domain; - -import lombok.Data; - -import java.util.List; - -@Data -public class PageDO { - private List components; - private int counter; - private Object data; -}