From 9bc640d0198f3c5798e0a61e7da07a413e683016 Mon Sep 17 00:00:00 2001 From: Heiky Date: Thu, 14 Jan 2021 14:17:11 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=94=B5=E5=AD=90?= =?UTF-8?q?=E9=82=AE=E4=BB=B6=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pear-common/pom.xml | 6 + .../pearadmin/common/config/MailConfig.java | 39 ++++ .../config/proprety/MailProperties.java | 26 +++ .../src/main/resources/application.yml | 29 +-- .../resources/templates/system/mail/add.html | 84 ++++++++ .../resources/templates/system/mail/main.html | 185 ++++++++++++++++++ .../system/controller/SysMailController.java | 98 ++++++++++ .../com/pearadmin/system/domain/SysMail.java | 50 +++++ .../system/mapper/SysMailMapper.java | 49 +++++ .../system/mapper/xml/SysMailMapper.xml | 101 ++++++++++ .../system/service/ISysMailService.java | 60 ++++++ .../service/impl/ISysMailServiceImpl.java | 82 ++++++++ 12 files changed, 798 insertions(+), 11 deletions(-) create mode 100644 pear-common/src/main/java/com/pearadmin/common/config/MailConfig.java create mode 100644 pear-common/src/main/java/com/pearadmin/common/config/proprety/MailProperties.java create mode 100644 pear-entrance/src/main/resources/templates/system/mail/add.html create mode 100644 pear-entrance/src/main/resources/templates/system/mail/main.html create mode 100644 pear-modules/pear-system/src/main/java/com/pearadmin/system/controller/SysMailController.java create mode 100644 pear-modules/pear-system/src/main/java/com/pearadmin/system/domain/SysMail.java create mode 100644 pear-modules/pear-system/src/main/java/com/pearadmin/system/mapper/SysMailMapper.java create mode 100644 pear-modules/pear-system/src/main/java/com/pearadmin/system/mapper/xml/SysMailMapper.xml create mode 100644 pear-modules/pear-system/src/main/java/com/pearadmin/system/service/ISysMailService.java create mode 100644 pear-modules/pear-system/src/main/java/com/pearadmin/system/service/impl/ISysMailServiceImpl.java diff --git a/pear-common/pom.xml b/pear-common/pom.xml index d6b15916..979bfc33 100644 --- a/pear-common/pom.xml +++ b/pear-common/pom.xml @@ -84,6 +84,12 @@ org.springframework.boot spring-boot-starter-data-redis + + + + cn.hutool + hutool-all + diff --git a/pear-common/src/main/java/com/pearadmin/common/config/MailConfig.java b/pear-common/src/main/java/com/pearadmin/common/config/MailConfig.java new file mode 100644 index 00000000..377f30e3 --- /dev/null +++ b/pear-common/src/main/java/com/pearadmin/common/config/MailConfig.java @@ -0,0 +1,39 @@ +package com.pearadmin.common.config; + +import cn.hutool.extra.mail.Mail; +import cn.hutool.extra.mail.MailAccount; +import com.pearadmin.common.config.proprety.MailProperties; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import javax.annotation.Resource; +import java.nio.charset.Charset; + +/** + * @Author: Heiky + * @Date: 2021/1/14 9:14 + * @Description: + */ + +@Configuration +@EnableConfigurationProperties(MailProperties.class) +public class MailConfig { + + @Resource + private MailProperties mailProperties; + + @Bean + public MailAccount mailAccount() { + MailAccount mailAccount = new MailAccount(); + mailAccount.setHost(mailProperties.getHost()); + mailAccount.setPort(mailProperties.getPort()); + mailAccount.setAuth(true); + mailAccount.setFrom(mailProperties.getFrom()); + mailAccount.setUser(mailProperties.getUser()); + mailAccount.setPass(mailProperties.getPass()); + mailAccount.setCharset(Charset.forName("UTF-8")); + return mailAccount; + } + +} diff --git a/pear-common/src/main/java/com/pearadmin/common/config/proprety/MailProperties.java b/pear-common/src/main/java/com/pearadmin/common/config/proprety/MailProperties.java new file mode 100644 index 00000000..9cef0e55 --- /dev/null +++ b/pear-common/src/main/java/com/pearadmin/common/config/proprety/MailProperties.java @@ -0,0 +1,26 @@ +package com.pearadmin.common.config.proprety; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; + + +/** + * Describe: 邮箱配置类 + * Author: Heiky + * CreateTime: 2021/1/13 17:52 + */ +@Data +@ConfigurationProperties("pear.mail") +public class MailProperties { + + private String host; + + private Integer port; + + private String from; + + private String user; + + private String pass; + +} diff --git a/pear-entrance/src/main/resources/application.yml b/pear-entrance/src/main/resources/application.yml index f87275e8..6434d83c 100644 --- a/pear-entrance/src/main/resources/application.yml +++ b/pear-entrance/src/main/resources/application.yml @@ -31,31 +31,31 @@ mybatis: # Pear 插 件 配 置 信 息 pear: - # Document 配 置 信 息 + # Document 配 置 信 息 swagger: - # 文 档 标 题 + # 文 档 标 题 title: Pear Admin API - # 是 否 开 启 + # 是 否 开 启 enable: true - # 描 述 信 息 + # 描 述 信 息 describe: 企 业 快 速 开 发 平 台 - # 扫 包 路 径 + # 扫 包 路 径 scan-package: com.pearadmin # 协 议 licence: apache # 协 议 地 址 licence-url: https://gitee.com/pear_community - # 组 织 信 息 + # 组 织 信 息 terms-of-service-url: https://gitee.com/pear_community - # 版 本 信 息 + # 版 本 信 息 version: Release 2.0.0 - # 扩 展 信 息 + # 扩 展 信 息 contact: - # 作 者 + # 作 者 name: 就 眠 仪 式 - # 连 接 + # 连 接 url: www.pearadmin.cn - # 邮 箱 + # 邮 箱 email: Jmys1992@gmail.com # 权 限 配 置 security: @@ -83,6 +83,13 @@ pear: windows-path: D:\home\uploads\ # linux 上传路径 linux-path: /home/uploads/ + # 邮 箱 配 置 + mail: + host: smtp.qq.com + port: 25 + from: + user: + pass: # Page Helper pagehelper: diff --git a/pear-entrance/src/main/resources/templates/system/mail/add.html b/pear-entrance/src/main/resources/templates/system/mail/add.html new file mode 100644 index 00000000..a7343447 --- /dev/null +++ b/pear-entrance/src/main/resources/templates/system/mail/add.html @@ -0,0 +1,84 @@ + + + + + + +
+
+
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+
+
+
+ + +
+
+
+ + + + + \ No newline at end of file diff --git a/pear-entrance/src/main/resources/templates/system/mail/main.html b/pear-entrance/src/main/resources/templates/system/mail/main.html new file mode 100644 index 00000000..5cdba694 --- /dev/null +++ b/pear-entrance/src/main/resources/templates/system/mail/main.html @@ -0,0 +1,185 @@ + + + + + + +
+
+
+
+ +
+ +
+ +
+ +
+ +
+ +
+ + +
+
+
+
+ +
+
+
+
+
+ + + + + + + + + + + + \ No newline at end of file diff --git a/pear-modules/pear-system/src/main/java/com/pearadmin/system/controller/SysMailController.java b/pear-modules/pear-system/src/main/java/com/pearadmin/system/controller/SysMailController.java new file mode 100644 index 00000000..32bf9239 --- /dev/null +++ b/pear-modules/pear-system/src/main/java/com/pearadmin/system/controller/SysMailController.java @@ -0,0 +1,98 @@ +package com.pearadmin.system.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.github.pagehelper.PageInfo; +import com.pearadmin.common.constant.ControllerConstant; +import com.pearadmin.common.tools.string.StringUtil; +import com.pearadmin.common.web.base.BaseController; +import com.pearadmin.common.web.domain.request.PageDomain; +import com.pearadmin.common.web.domain.response.Result; +import com.pearadmin.common.web.domain.response.module.ResultTable; +import com.pearadmin.system.domain.SysMail; +import com.pearadmin.system.service.ISysMailService; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import java.util.ArrayList; + +/** + * @Author: Heiky + * @Date: 2021/1/13 15:34 + * @Description: + */ +@RestController +@RequestMapping(ControllerConstant.API_SYSTEM_PREFIX + "mail") +@Api(value = "邮件controller", tags = {"邮件操作接口"}) +public class SysMailController extends BaseController { + + /** + * 基 础 路 径 + */ + private String MODULE_PATH = "system/mail/"; + + @Resource + private ISysMailService sysMailService; + + /** + * Describe: 邮件管理页面 + * Return: ModelAndView + */ + @GetMapping("/main") + public ModelAndView main() { + return JumpPage(MODULE_PATH + "main"); + } + + /** + * Describe: 邮件列表数据 + * Param: PageDomain + * Return: 邮件列表 + */ + @GetMapping("/data") + public ResultTable data(SysMail sysMail, PageDomain pageDomain) { + PageInfo page = sysMailService.page(sysMail, pageDomain); + return pageTable(page.getList(), page.getTotal()); + } + + /** + * Describe: 邮件发送 + * Return: ModelAndView + */ + @GetMapping("/add") + public ModelAndView add() { + return JumpPage(MODULE_PATH + "add"); + } + + /** + * Describe: 邮件保存和发送 + * Param: SysMail + * Return: 操作结果 + */ + @PostMapping("/save") + public Result save(@RequestBody SysMail sysMail) { + return decide(sysMailService.save(sysMail)); + } + + /** + * Describe: 删除邮件 + * Param: String + * Return: 操作结果 + */ + @DeleteMapping("/remove/{mailId}") + public Result remove(@PathVariable String mailId) { + return decide(sysMailService.removeById(mailId)); + } + + /** + * Describe: 批量删除邮件 + * Param: String + * Return: 操作结果 + */ + @DeleteMapping("/batchRemove/{ids}") + public Result batchRemove(@PathVariable String ids) { + ArrayList idList = CollectionUtil.newArrayList(StringUtil.split(ids, ",")); + return decide(sysMailService.removeByIds(idList)); + } + +} diff --git a/pear-modules/pear-system/src/main/java/com/pearadmin/system/domain/SysMail.java b/pear-modules/pear-system/src/main/java/com/pearadmin/system/domain/SysMail.java new file mode 100644 index 00000000..968fa261 --- /dev/null +++ b/pear-modules/pear-system/src/main/java/com/pearadmin/system/domain/SysMail.java @@ -0,0 +1,50 @@ +package com.pearadmin.system.domain; + +import lombok.Data; +import org.apache.ibatis.type.Alias; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * Describe: 邮 件 发 送 实 体 + * Author: Heiky + * CreateTime: 2021/1/13 + */ +@Data +@Alias("SysMail") +public class SysMail implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 邮件id + */ + private String mailId; + + /** + * 接收人(邮箱) + */ + private String receiver; + + /** + * 邮件主体 + */ + private String subject; + + /** + * 邮件正文 + */ + private String content; + + /** + * 发送人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + +} diff --git a/pear-modules/pear-system/src/main/java/com/pearadmin/system/mapper/SysMailMapper.java b/pear-modules/pear-system/src/main/java/com/pearadmin/system/mapper/SysMailMapper.java new file mode 100644 index 00000000..99f6d45d --- /dev/null +++ b/pear-modules/pear-system/src/main/java/com/pearadmin/system/mapper/SysMailMapper.java @@ -0,0 +1,49 @@ +package com.pearadmin.system.mapper; + +import com.pearadmin.system.domain.SysMail; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * Describe: 邮件服务持久层接口 + * Author: Heiky + * CreateTime: 2021/1/13 14:51 + */ +@Mapper +public interface SysMailMapper { + + /** + * 保存邮件 + * + * @param sysMail + * @return integer + */ + Integer insert(SysMail sysMail); + + /** + * 根据条件查询邮件列表 + * + * @param sysMail + * @return list + */ + List selectList(SysMail sysMail); + + /** + * 根据id删除邮件 + * + * @param id + * @return 操作结果 + */ + Integer deleteById(@Param("mailId") String id); + + /** + * 批量删除邮件 + * + * @param ids + * @return + */ + Integer deleteByIds(List ids); + +} diff --git a/pear-modules/pear-system/src/main/java/com/pearadmin/system/mapper/xml/SysMailMapper.xml b/pear-modules/pear-system/src/main/java/com/pearadmin/system/mapper/xml/SysMailMapper.xml new file mode 100644 index 00000000..9fdee74c --- /dev/null +++ b/pear-modules/pear-system/src/main/java/com/pearadmin/system/mapper/xml/SysMailMapper.xml @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + insert into sys_mail + + + mail_id, + + + receiver, + + + subject, + + + content, + + + create_by, + + + create_time, + + + + + #{mailId}, + + + #{receiver}, + + + #{subject}, + + + #{content}, + + + #{createBy}, + + + #{createTime}, + + + + + + + + delete from sys_mail + + 1 = 0 + + or mail_id = #{mailId} + + + + + + delete from sys_mail + + 1 = 0 + + or mail_id in + + #{id} + + + + + + \ No newline at end of file diff --git a/pear-modules/pear-system/src/main/java/com/pearadmin/system/service/ISysMailService.java b/pear-modules/pear-system/src/main/java/com/pearadmin/system/service/ISysMailService.java new file mode 100644 index 00000000..119d1b61 --- /dev/null +++ b/pear-modules/pear-system/src/main/java/com/pearadmin/system/service/ISysMailService.java @@ -0,0 +1,60 @@ +package com.pearadmin.system.service; + + +import com.github.pagehelper.PageInfo; +import com.pearadmin.common.web.domain.request.PageDomain; +import com.pearadmin.system.domain.SysMail; + +import java.util.List; + +/** + * Describe: 邮件服务接口类 + * Author: Heiky + * CreateTime: 2021/1/13 15:21 + */ +public interface ISysMailService { + + /** + * Describe: 邮件保存 + * Param: sysMail + * Return: 操作结果 + */ + Integer save(SysMail sysMail); + + /** + * Describe: 根据条件查询邮件列表数据 + * Param: sysMail + * Return: 返回邮件列表数据 + */ + List list(SysMail sysMail); + + /** + * Describe: 根据条件查询邮件列表数据 分页 + * Param: sysMail + * Return: 返回分页邮件列表数据 + */ + PageInfo page(SysMail sysMail, PageDomain pageDomain); + + /** + * Describe: 发送邮件 + * Param: sysMail + * Return: 操作结果 + */ + Boolean sendMail(SysMail sysMail); + + /** + * Describe: 删除邮件 + * Param: String + * Return: 操作结果 + */ + Integer removeById(String id); + + /** + * 批量删除邮件 + * + * @param ids + * @return + */ + Integer removeByIds(List ids); + +} diff --git a/pear-modules/pear-system/src/main/java/com/pearadmin/system/service/impl/ISysMailServiceImpl.java b/pear-modules/pear-system/src/main/java/com/pearadmin/system/service/impl/ISysMailServiceImpl.java new file mode 100644 index 00000000..beccf237 --- /dev/null +++ b/pear-modules/pear-system/src/main/java/com/pearadmin/system/service/impl/ISysMailServiceImpl.java @@ -0,0 +1,82 @@ +package com.pearadmin.system.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.extra.mail.MailAccount; +import cn.hutool.extra.mail.MailUtil; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.pearadmin.common.tools.secure.SecurityUtil; +import com.pearadmin.common.tools.sequence.SequenceUtil; +import com.pearadmin.common.web.domain.request.PageDomain; +import com.pearadmin.system.domain.SysMail; +import com.pearadmin.system.domain.SysUser; +import com.pearadmin.system.mapper.SysMailMapper; +import com.pearadmin.system.service.ISysMailService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Author: Heiky + * @Date: 2021/1/13 15:24 + * @Description: + */ + +@Service +public class ISysMailServiceImpl implements ISysMailService { + + @Resource + private SysMailMapper sysMailMapper; + + @Resource + private MailAccount mailAccount; + + @Override + @Transactional(rollbackFor = Exception.class) + public Integer save(SysMail sysMail) { + if (sendMail(sysMail)) { + sysMail.setMailId(SequenceUtil.makeStringId()); + sysMail.setCreateBy(((SysUser) SecurityUtil.currentUser().getPrincipal()).getUsername()); + return sysMailMapper.insert(sysMail); + } else { + return 0; + } + } + + @Override + public List list(SysMail sysMail) { + return sysMailMapper.selectList(sysMail); + } + + @Override + public PageInfo page(SysMail sysMail, PageDomain pageDomain) { + PageHelper.startPage(pageDomain.getPage(), pageDomain.getLimit()); + List sysMails = sysMailMapper.selectList(sysMail); + return new PageInfo<>(sysMails); + } + + @Override + public Boolean sendMail(SysMail sysMail) { + ArrayList tos = CollectionUtil.newArrayList(StrUtil.split(sysMail.getReceiver(), ";")); + String send = MailUtil.send(mailAccount, tos, + ObjectUtil.isEmpty(sysMail.getSubject()) ? null : sysMail.getSubject(), sysMail.getContent(), false); + return ObjectUtil.isNotEmpty(send); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Integer removeById(String id) { + return sysMailMapper.deleteById(id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Integer removeByIds(List ids) { + return sysMailMapper.deleteByIds(ids); + } +} -- Gitee From 2800daf1f3cd7fa4f5298fca430c480cee9213df Mon Sep 17 00:00:00 2001 From: Heiky Date: Thu, 14 Jan 2021 14:17:32 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pearadmin/common/web/base/BaseDomain.java | 4 ++-- .../secure/support/SecurePermissionSupport.java | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/pear-common/src/main/java/com/pearadmin/common/web/base/BaseDomain.java b/pear-common/src/main/java/com/pearadmin/common/web/base/BaseDomain.java index 08aa3f2d..4b40eeb7 100644 --- a/pear-common/src/main/java/com/pearadmin/common/web/base/BaseDomain.java +++ b/pear-common/src/main/java/com/pearadmin/common/web/base/BaseDomain.java @@ -34,12 +34,12 @@ public class BaseDomain implements Serializable { private LocalDateTime updateTime; /** - * 修改时间 + * 修改人 * */ private String updateBy; /** - * 修改名称 + * 修改人名称 * */ private String updateName; diff --git a/pear-entrance/src/main/java/com/pearadmin/secure/support/SecurePermissionSupport.java b/pear-entrance/src/main/java/com/pearadmin/secure/support/SecurePermissionSupport.java index b25c9033..ea83342f 100644 --- a/pear-entrance/src/main/java/com/pearadmin/secure/support/SecurePermissionSupport.java +++ b/pear-entrance/src/main/java/com/pearadmin/secure/support/SecurePermissionSupport.java @@ -6,6 +6,7 @@ import com.pearadmin.system.domain.SysUser; import org.springframework.security.access.PermissionEvaluator; import org.springframework.security.core.Authentication; import org.springframework.stereotype.Component; + import javax.annotation.Resource; import java.io.Serializable; import java.util.HashSet; @@ -16,7 +17,7 @@ import java.util.Set; * Describe: 自定义 Security 权限注解实现 * Author: 就 眠 仪 式 * CreateTime: 2019/10/23 - * */ + */ @Component public class SecurePermissionSupport implements PermissionEvaluator { @@ -27,28 +28,27 @@ public class SecurePermissionSupport implements PermissionEvaluator { * Describe: 自定义 Security 权限认证 @hasPermission * Param: Authentication * Return Boolean - * */ + */ @Override - public boolean hasPermission(Authentication authentication, Object o, Object o1) - { + public boolean hasPermission(Authentication authentication, Object targetDomainObject, Object permission) { SysUser securityUserDetails = (SysUser) authentication.getPrincipal(); if (securityProperty.isSuperAuthOpen() && securityProperty.getSuperAdmin().equals(securityUserDetails.getUsername())) { return true; } List powerList = securityUserDetails.getPowerList(); Set permissions = new HashSet<>(); - for (SysPower sysPower :powerList) { + for (SysPower sysPower : powerList) { permissions.add(sysPower.getPowerCode()); } - if(permissions.contains(o1)){ + if (permissions.contains(permission)) { return true; - }else{ + } else { return false; } } @Override - public boolean hasPermission(Authentication authentication, Serializable serializable, String s, Object o) { + public boolean hasPermission(Authentication authentication, Serializable targetId, String targetType, Object permission) { return false; } } -- Gitee From d192ede5a76046d3f56c811d5bb36d9c2fe4d576 Mon Sep 17 00:00:00 2001 From: Heiky Date: Thu, 14 Jan 2021 14:19:14 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=82=AE=E4=BB=B6?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pear-entrance/src/main/resources/application.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pear-entrance/src/main/resources/application.yml b/pear-entrance/src/main/resources/application.yml index 6434d83c..fcd93b33 100644 --- a/pear-entrance/src/main/resources/application.yml +++ b/pear-entrance/src/main/resources/application.yml @@ -85,8 +85,8 @@ pear: linux-path: /home/uploads/ # 邮 箱 配 置 mail: - host: smtp.qq.com - port: 25 + host: + port: from: user: pass: -- Gitee From def53bb31e0917ac2ea14cef572471d86dd1e281 Mon Sep 17 00:00:00 2001 From: Heiky Date: Thu, 14 Jan 2021 14:20:32 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=82=AE=E4=BB=B6?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pear-entrance/src/main/resources/application.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pear-entrance/src/main/resources/application.yml b/pear-entrance/src/main/resources/application.yml index fcd93b33..17f42e2e 100644 --- a/pear-entrance/src/main/resources/application.yml +++ b/pear-entrance/src/main/resources/application.yml @@ -41,9 +41,9 @@ pear: describe: 企 业 快 速 开 发 平 台 # 扫 包 路 径 scan-package: com.pearadmin - # 协 议 - licence: apache - # 协 议 地 址 + # 协 议 + licence: MIT + # 协 议 地 址 licence-url: https://gitee.com/pear_community # 组 织 信 息 terms-of-service-url: https://gitee.com/pear_community -- Gitee