service

common service tools and common develop tools

License

License

GroupId

GroupId

com.github.guang19
ArtifactId

ArtifactId

service
Last Version

Last Version

1.0.3
Release Date

Release Date

Type

Type

pom
Description

Description

service
common service tools and common develop tools
Project URL

Project URL

https://github.com/guang19/service
Source Code Management

Source Code Management

https://github.com/guang19/service.git

Download service

Filename Size
service-1.0.3.pom 11 KB
Browse

How to add to project

<!-- https://jarcasting.com/artifacts/com.github.guang19/service/ -->
<dependency>
    <groupId>com.github.guang19</groupId>
    <artifactId>service</artifactId>
    <version>1.0.3</version>
    <type>pom</type>
</dependency>
// https://jarcasting.com/artifacts/com.github.guang19/service/
implementation 'com.github.guang19:service:1.0.3'
// https://jarcasting.com/artifacts/com.github.guang19/service/
implementation ("com.github.guang19:service:1.0.3")
'com.github.guang19:service:pom:1.0.3'
<dependency org="com.github.guang19" name="service" rev="1.0.3">
  <artifact name="service" type="pom" />
</dependency>
@Grapes(
@Grab(group='com.github.guang19', module='service', version='1.0.3')
)
libraryDependencies += "com.github.guang19" % "service" % "1.0.3"
[com.github.guang19/service "1.0.3"]

Dependencies

compile (1)

Group / Artifact Type Version
junit : junit jar 4.13

provided (1)

Group / Artifact Type Version
org.projectlombok : lombok jar 1.18.10

Project Modules

  • cloud-storage-service
  • short-message-service
  • service-common
  • cos-spring-boot-starter
  • sms-spring-boot-starter

提供更加便捷的服务(Service Tool)

关于服务2字的含义,我想可以既可以是普通服务,也可以是其他类型的服务,如:云服务...

目前提供的服务包括:

  1. COS(Cloud Object Storage:云对象存储服务.腾讯云的COS和阿里云的OSS)
  2. SMS(Short-Message-Service: 短信服务,阿里云和腾讯云(目前只支持阿里云))
  3. COS-With-SpringBoot
  4. SMS-With-SpringBoot

1.COS(Cloud Object Storage or Object Storage Service)

云对象存储服务

腾讯云COS的参考文档: 文档1 文档2

阿里云OSS的参考文档: 文档1 文档2 文档3

使用:

引入依赖:

maven:
<dependency>
 <groupId>com.github.guang19</groupId>
 <artifactId>cloud-storage-service</artifactId>
 <version>1.0.3</version>
</dependency>

COS服务分为存储桶操作和对象操作.

这2个操作我都分别为他们建立了一个模板,有了模板,就大大简化了对存储桶和对象的处理. 在资源目录下创建一个配置文件,随意命名,如:cos-config.properties 配置文件内容参照:配置文件

存储桶操作(bucket):

  1. 创建存储桶模板.
  2. 使用存储桶模板.
//或者创建腾讯云/阿里云的存储桶操作模板取决于: cos.service.type 属性 
TenCloudCOSBucketTemplate cosBucketTemplate = new TenCloudCOSBucketTemplateBuilder("cos-config.properties").build();
AliyunOSSBucketTemplate   cosBucketTemplate = new AliyunOSSBucketTemplateBuilder("cos-config.properties").build();


//bucket 操作
System.out.println(cosBucketTemplate.existBucket("a"));
cosBucketTemplate.deleteBucket("test");
System.out.println(cosBucketTemplate.getBucketAccessControllerList("a"));
System.out.println(cosBucketTemplate.getBucketLocation("a"));
System.out.println(cosBucketTemplate.getAllBuckets());
 ...

对象操作(object):

  1. 创建对象模板.
  2. 使用对象模板

//或者创建腾讯云/阿里云的对象操作模板取决于: cos.service.type 属性 
TenCloudCOSObjectTemplate cosObjectTemplate = new TenCloudCOSObjectTemplateBuilder("cos-config.properties").build();
AliyunOSSObjectTemplate ossObjectTemplate   = new AliyunOSSObjectTemplateBuilder"cos-config.properties".build();

//object操作
System.out.println(ossObjectTemplate.getAllObjects());
System.out.println(ossObjectTemplate.getAllFileKeys());
System.out.println(ossObjectTemplate.getAllFileNames());
System.out.println(ossObjectTemplate.getAllObjectsWithKeyPrefix("img"));
System.out.println(ossObjectTemplate.getAllFileNamesWithKeyPrefix("img"));
System.out.println(ossObjectTemplate.getObjectMetaData("b"));
...

具体的object和bucket操作,我相信如果各位同学熟悉OSS或COS就知道该怎么测试了.不过我个人是不推荐使用API来 操作bucket的,控制台更加方面和直观.

以下是全部配置属性:

属性: 腾讯云 阿里云 默认值
cos.service.type : 对象存储服务类型 需要(tencent cloud) 需要(aliyun)
cos.service.secret-id:云服务访问secret id 需要 需要
cos.service.secret-key:云服务访问secret key 需要 需要
cos.service.region: 要操作的存储桶地域 需要 不需要
cos.service.app-id:腾讯云的app id 需要 不需要
cos.service.endpoint: 阿里云的存储桶对外访问的域名 不需要 与cname二选一
cos.service.cname:阿里云的存储桶自定义域名,推荐使用endpoint 不需要 与endpoint二选一
cos.service.object-template-bucket:要操作的存储桶,此属性是构造对象模板所需,指定此属性就是让对象模板操作此存储桶里的对象.如果是想创建存储桶模板可不填 需要 需要
cos.service.upload-limit-size:允许上传对象的大小限制.单位:MB.不要把此配置设置为小数,否则在解析文件时会出现错误 . 可选 可选 20M
cos.service.upload-img-style:阿里云上传图片时使用的样式. 不需要 可选
cos.service.protocol:连接cos服务器的协议 可选 可选 http
cos.service.socket-timeout: 客户端传输数据的超时时间.单位:ms 可选 可选 30000ms
cos.service.connection-timeout:客户端与cos服务器的连接超时时间.单位:ms 可选 可选 30000ms
cos.service.connection-request-timeout:从连接池中获取连接的超时时间.单位:ms 可选 可选 -1(不超时)
cos.service.max-connection:允许打开的最大http连接数. 可选 可选 1024
cos.service.proxy-ip:代理服务器的ip.一般不做配置 可选 可选
cos.service.proxy-port:代理服务器的主机端口.一般不做配置 可选 可选
cos.service.proxy-username:代理服务器验证的用户名.一般不做配置 可选 可选
cos.service.proxy-password:代理服务器验证的密码,一般不做配置 可选 可选

COS-With-SpringBoot

在SpringBoot中使用COS,只剩二字: 习惯.

引入依赖

maven:
<dependency>
  <groupId>com.github.guang19</groupId>
  <artifactId>cos-spring-boot-starter</artifactId>
  <version>1.0.3</version>
</dependency>

在SpringBoot中的配置与上面普通配置一样,只是加上spring前缀即可

//此配置决定容器该加载哪种类型模板,当选择aliyun时,腾讯云的模板不会加载,当选择tencent cloud时,亦是如此.
spring.cos.service.type=aliyun/tencent cloud

关键属性需要配置...

使用:

  @Autowired
  private AliyunOSSBucketTemplate bucketTemplate;

  @Autowired
  private AliyunOSSObjectTemplate objectTemplate;

使用...

2. SMS(Short Message Service)

短信服务.(因为腾讯云需要购买套餐包才能发送短信,连调试都不行,所以我暂时不写它的短信服务了)

阿里云SMS的参考文档: 文档

斗胆猜测一下:我想没有同学愿意以API的方式来操作短信服务的签名和模板,如果想这么做的同学我还是建议参考文档吧, 此项目是对SMS的一个简单的封装,毕竟短信接口的API不多.

使用:

引入依赖:

maven:
<dependency>
  <groupId>com.github.guang19</groupId>
  <artifactId>short-message-service</artifactId>
  <version>1.0.3</version>
</dependency>

短信接口的API比较少,但我仍然采用模板+配置的方式来编写. 在资源文件夹下创建一个properties文件 配置文件内容参照:配置文件

使用:

  1. 创建模板
  2. 使用模板

//创建阿里云短信服务操作模板,模板类型取决于:sms.type
DefaultAliyunSMSTemplate smsTemplate = (DefaultAliyunSMSTemplate)new AliyunSMSTemplateBuilder("short-message.properties").build();

//使用单条签名,发送单条短信,返回ResponseDTO,ResponseDTO可以获取发送短信的详细信息
ResponseDTO responseDTO = smsTemplate.sendMessage("1123123123123", new ParamDTO().put("code", "123456"));
System.out.println(responseDTO.getMessage());
System.out.println(responseDTO.getCode());
System.out.println(responseDTO.getBizId());

//使用单条签名,发送多条短信
String[] phoneNumbers = new String[]{"123123123123","12312312323"};
ResponseDTO responseDTO = smsTemplate.sendMessage(phoneNumbers, new ParamDTO().put("code", "123456"));
System.out.println(responseDTO.getMessage());
System.out.println(responseDTO.getCode());
System.out.println(responseDTO.getBizId());

//使用多条签名,发送多条短信
ResponseDTO responseDTO = smsTemplate.batchSendMessage(phoneNumbers, new ParamDTO[]{new ParamDTO().put("code", "123456"), new ParamDTO().put("code", "123456")});
System.out.println(responseDTO.getMessage());
System.out.println(responseDTO.getCode());
System.out.println(responseDTO.getBizId());

 //查询短信明细
ResponseDTO responseDTO = smsTemplate.querySendDetails("123123123", LocalDate.now(Clock.systemDefaultZone()), 1);
System.out.println(Arrays.toString(responseDTO.getSmsSendDetailDTOs().getSmsSendDetailDTO()));

//查询指定流水的短信明细
ResponseDTO responseDTO = smsTemplate.querySendDetail("123123123213", LocalDate.now(Clock.systemDefaultZone()), 1, "123123123");
System.out.println(Arrays.toString(responseDTO.getSmsSendDetailDTOs().getSmsSendDetailDTO()));

关于签名和模板,使用控制台申请和操作就行了,个人认为使用API来申请签名和模板是多余的。

以下是短信服务所有配置:

属性 阿里云 默认值
sms.type:腾讯云还是阿里云,目前只支持阿里云 需要(aliyun)
sms.secret-id:阿里云的AccesskeyId 需要
sms.secret-key:阿里云的Access Key Secret 需要
sms.region:发送短信的ECS的地域,此配置必填,但是只有在配置专属域名的情况下才有用 需要
sms.sign-names:短信签名,如果想批量发送短信,要多个签名,以逗号分隔. 需要
sms.template:短信模板,阿里云的短信模板code,个人认为在项目中可能会使用多中模板,所以建议以模板API的方式 set 需要
sms.query-page-size:当使用模板进行查询操作时,此参数就指定查询结果每页的数量,如果不指定,默认为 50 可选 50

PS: 在SpringBoot中,如果你的sms.sign-names为中文,可能会出现乱码,到时候把文件编码设置为UTF-8就行了

SMS-With-SpringBoot

引入依赖

<dependency>
  <groupId>com.github.guang19</groupId>
  <artifactId>sms-spring-boot-starter</artifactId>
  <version>1.0.3</version>
</dependency>

在SpringBoot中的配置与上面普通配置相似,只是加上spring前缀即可

//此配置决定容器该加载哪种类型模板,当选择aliyun时才加载SMS模板,暂且不支持腾讯云的短信服务,所以此选项只有aliyun

spring.sms.type=aliyun

关键属性需要配置...

使用:

  @Autowired
  private AliyunSMSTemplate smsTemplate;

Versions

Version
1.0.3
1.0.2
1.0.1
1.0.0