Commit 9dc42da8 by 邓实川 Committed by chenzg

环境变量配置-阿里云上传、短信,e签宝,系统赠送时间

parent 89a3596b
...@@ -26,6 +26,7 @@ import cn.hutool.core.date.DateField; ...@@ -26,6 +26,7 @@ import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import cn.timer.api.bean.qyzx.QyzxEntInfoM;
import cn.timer.api.bean.qyzx.businessService.QyzxBuyRecord; import cn.timer.api.bean.qyzx.businessService.QyzxBuyRecord;
import cn.timer.api.bean.qyzx.businessService.QyzxOrderRecord; import cn.timer.api.bean.qyzx.businessService.QyzxOrderRecord;
import cn.timer.api.bean.qyzx.businessService.QyzxRemainingQuantity; import cn.timer.api.bean.qyzx.businessService.QyzxRemainingQuantity;
...@@ -81,10 +82,10 @@ public class WxCallBackController { ...@@ -81,10 +82,10 @@ public class WxCallBackController {
if (!env.equals("dev") && !env.equals("test")) { if (!env.equals("dev") && !env.equals("test")) {
return ResultUtil.error("请切换到开发/测试环境"); return ResultUtil.error("请切换到开发/测试环境");
} }
// TODO 加套餐 如果已经存在可用的套餐 ,怎么搞
// TODO 加套餐 如果已经存在可用的套餐 ,怎么搞
// TODO 如果是系统续费 update企业信息表
updateAndInsert(orderNo); updateAndInsert(orderNo);
return ResultUtil.data(orderNo, "购买成功"); return ResultUtil.data(orderNo, "购买成功");
} }
...@@ -102,7 +103,7 @@ public class WxCallBackController { ...@@ -102,7 +103,7 @@ public class WxCallBackController {
Integer expiration = jsonObject.getInt("expiration"); // 商品有效期(天) Integer expiration = jsonObject.getInt("expiration"); // 商品有效期(天)
Date expireDate = DateUtil.offset(new Date(), DateField.DAY_OF_YEAR, expiration); // 时间偏移 Date expireDate = DateUtil.offset(new Date(), DateField.DAY_OF_YEAR, expiration); // 时间偏移
String content = jsonObject.getStr("content"); // 商品名称 String content = jsonObject.getStr("content"); // 商品名称
Integer specification = jsonObject.getInt("specification"); // 商品规格 Integer specification = jsonObject.getInt("specification"); // 商品规格-用于系统续费表示为系统版本0-试用 1-普通 2-专业
String unit = jsonObject.getStr("unit"); String unit = jsonObject.getStr("unit");
// Double originalPrice = jsonObject.getDouble("originalPrice"); // 商品原价 // Double originalPrice = jsonObject.getDouble("originalPrice"); // 商品原价
Double nowPrice = jsonObject.getDouble("nowPrice"); // 购买价 Double nowPrice = jsonObject.getDouble("nowPrice"); // 购买价
...@@ -111,23 +112,32 @@ public class WxCallBackController { ...@@ -111,23 +112,32 @@ public class WxCallBackController {
Integer pcid = qyzxOrderRecord.getPcid(); // 付费内容id Integer pcid = qyzxOrderRecord.getPcid(); // 付费内容id
Integer createdUser = qyzxOrderRecord.getCreateUser(); // 订单创建人 Integer createdUser = qyzxOrderRecord.getCreateUser(); // 订单创建人
Integer orgCode = qyzxOrderRecord.getOrgCode(); // 公司 Integer orgCode = qyzxOrderRecord.getOrgCode(); // 公司
QyzxRemainingQuantity quantity = new QyzxRemainingQuantity();
quantity.setOrderNo(orderNo); // 订单号
quantity.setContent(content); // 商品名称
quantity.setExpireDate(expireDate); // 到期时间
quantity.setSpecification(specification); // 套餐规格
Integer totalNum = specification * count; // 套餐总量 Integer totalNum = specification * count; // 套餐总量
quantity.setTotalNum(totalNum);
quantity.setRemainder(totalNum); // 套餐剩余数(同上)
quantity.setCount(count); // 购买数量
quantity.setPmid(pmid); // 付费模块id
quantity.setPcid(pcid); // 付费内容id
quantity.setUnit(unit);
quantity.setCreateUser(createdUser);
quantity.setOrgCode(orgCode);
quantity.insert();
if (pmid == 3) {
QyzxEntInfoM qyzxEntInfoM = QyzxEntInfoM.builder().id(orgCode).build().selectById(); // 企业信息
Date endTime = qyzxEntInfoM.getEndTime(); // 当前到期时间
// Integer level = qyzxEntInfoM.getLevel(); // 原系统版本
// Integer specification = jsonObject.getInt("specification"); // 新系统版本
Date newEndTime = DateUtil.offsetDay(endTime, expiration*count); // 到期时间+商品有效期x购买数量=系统续费后的时间
qyzxEntInfoM.update(new LambdaUpdateWrapper<QyzxEntInfoM>().eq(QyzxEntInfoM::getId, orgCode)
.set(QyzxEntInfoM::getEndTime, newEndTime).set(QyzxEntInfoM::getLevel, specification));
} else {
QyzxRemainingQuantity quantity = new QyzxRemainingQuantity();
quantity.setOrderNo(orderNo); // 订单号
quantity.setContent(content); // 商品名称
quantity.setExpireDate(expireDate); // 到期时间
quantity.setSpecification(specification); // 套餐规格
quantity.setTotalNum(totalNum); // 套餐总量
quantity.setRemainder(totalNum); // 套餐剩余数(同上)
quantity.setCount(count); // 购买数量
quantity.setPmid(pmid); // 付费模块id
quantity.setPcid(pcid); // 付费内容id
quantity.setUnit(unit);
quantity.setCreateUser(createdUser);
quantity.setOrgCode(orgCode);
quantity.insert();
}
// 插入购买记录表 // 插入购买记录表
QyzxBuyRecord qyzxBuyRecord = new QyzxBuyRecord(); QyzxBuyRecord qyzxBuyRecord = new QyzxBuyRecord();
qyzxBuyRecord.setSpecification(specification); qyzxBuyRecord.setSpecification(specification);
......
...@@ -3,9 +3,12 @@ package cn.timer.api.controller; ...@@ -3,9 +3,12 @@ package cn.timer.api.controller;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Stream; import java.util.stream.Stream;
import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
...@@ -24,7 +27,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; ...@@ -24,7 +27,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.additional.query.impl.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.service.additional.query.impl.LambdaQueryChainWrapper;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import cn.hutool.core.date.BetweenFormater.Level;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.timer.api.bean.qyzx.QyzxEmpEntAsso; import cn.timer.api.bean.qyzx.QyzxEmpEntAsso;
...@@ -57,8 +59,85 @@ import io.swagger.annotations.ApiOperation; ...@@ -57,8 +59,85 @@ import io.swagger.annotations.ApiOperation;
@RequestMapping(value = "/login", produces = { "application/json" }) @RequestMapping(value = "/login", produces = { "application/json" })
public class LoginController { public class LoginController {
@Value("${configtest.patht}") @Value("${config-8timer.register-free-time}")
public String port; public Integer offset; // 系统赠送时间
@Value("${config-8timer.Aliyun.PROJECT_NAME}")
private String PROJECT_NAME;
@Value("${config-8timer.Aliyun.REGION_ID}")
private String REGION_ID;
@Value("${config-8timer.Aliyun.ACCESSKEY_ID}")
private String ACCESSKEY_ID;
@Value("${config-8timer.Aliyun.SECRET}")
private String SECRET;
public static String host;
public static String PROJECT_ID;
public static String PROJECT_SECRET;
@Value("${config-8timer.esign.host}")
private String host_s;
@Value("${config-8timer.esign.PROJECT_ID}")
private String PROJECT_ID_s;
@Value("${config-8timer.esign.PROJECT_SECRET}")
private String PROJECT_SECRET_s;
@PostConstruct
public void init() {
host = host_s;
PROJECT_ID = PROJECT_ID_s;
PROJECT_SECRET = PROJECT_SECRET_s;
}
@Value("${config-8timer.Aliyun.PROJECT_NAME}")
private String endpoint;
@Value("${config-8timer.Aliyun.ACCESSKEY_ID}")
private String accessKeyId;
@Value("${config-8timer.Aliyun.SECRET}")
private String accessKeySecret;
@Value("${config-8timer.Aliyun.bucketName}")
private String bucketName;
@Value("${config-8timer.Aliyun.bucketName_pri}")
private String bucketName_pri;
@Value("${config-8timer.Aliyun.project_package}")
private String project_package;
@Value("${config-8timer.Aliyun.expirationTime}")
private String expirationTime;
@Value("${config-8timer.Aliyun.expirationTime_pri}")
private String expirationTime_pri;
@GetMapping(value = "/test")
public Map<String, Object> test() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("1", offset);
map.put("2", PROJECT_NAME);
map.put("3", REGION_ID);
map.put("4", ACCESSKEY_ID);
map.put("5", SECRET);
map.put("6", host);
map.put("7", PROJECT_ID);
map.put("8", PROJECT_SECRET);
map.put("9", endpoint);
map.put("10", accessKeyId);
map.put("11", accessKeySecret);
map.put("12", bucketName);
map.put("13", bucketName_pri);
map.put("14", project_package);
map.put("15", expirationTime);
map.put("16", expirationTime_pri);
return map;
}
@Autowired @Autowired
private HttpSession session; private HttpSession session;
...@@ -72,12 +151,6 @@ public class LoginController { ...@@ -72,12 +151,6 @@ public class LoginController {
// @Autowired // @Autowired
// private DataSourceTransactionManager transactionManager; // private DataSourceTransactionManager transactionManager;
@GetMapping(value = "/testPro")
public Result<String> testPro() {
System.out.print(port);
return ResultUtil.success("configtest:" + port);
}
/** /**
* 发送验证码 * 发送验证码
* *
...@@ -381,7 +454,9 @@ public class LoginController { ...@@ -381,7 +454,9 @@ public class LoginController {
} }
// 企业信息 // 企业信息
QyzxEntInfoM qyzxEntInfoM = QyzxEntInfoM.builder().name(name).registerTime(DateUtil.date()).endTime(DateUtil.nextMonth()).level(CommonEnum.LEVEL_PROBATION.getType()).build(); QyzxEntInfoM qyzxEntInfoM = QyzxEntInfoM.builder().name(name).registerTime(DateUtil.date())
.endTime(DateUtil.offsetDay(new Date(), offset)).level(CommonEnum.LEVEL_PROBATION.getType())
.build();
boolean b1 = qyzxEntInfoM.insert(); boolean b1 = qyzxEntInfoM.insert();
if (!b1) { if (!b1) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
...@@ -397,7 +472,8 @@ public class LoginController { ...@@ -397,7 +472,8 @@ public class LoginController {
* DateUtil.date()) .endTime(DateUtil.nextMonth()).build(); * DateUtil.date()) .endTime(DateUtil.nextMonth()).build();
*/ */
QyzxEmpLogin qyzxEmpLogin = QyzxEmpLogin.builder().phone(phone).pw(Md5.md5(pw)) QyzxEmpLogin qyzxEmpLogin = QyzxEmpLogin.builder().phone(phone).pw(Md5.md5(pw))
.sts(CommonEnum.U_STS_ON.getType()).orgId(qyzxEntInfoM.getId()).regTime(DateUtil.date()).build(); .sts(CommonEnum.U_STS_ON.getType()).orgId(qyzxEntInfoM.getId()).regTime(DateUtil.date())
.build();
boolean b2 = qyzxEmpLogin.insert(); boolean b2 = qyzxEmpLogin.insert();
if (!b2) { if (!b2) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
......
package cn.timer.api.controller.dzht.cn.tign.hz.constant; package cn.timer.api.controller.dzht.cn.tign.hz.constant;
import javax.annotation.PostConstruct;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
/** /**
* @version 2.0 * @version 2.0
...@@ -8,15 +11,22 @@ import org.apache.commons.lang3.StringUtils; ...@@ -8,15 +11,22 @@ import org.apache.commons.lang3.StringUtils;
*/ */
public class ConfigConstant { public class ConfigConstant {
// 模拟环境域名 public static String host;
public static final String host = "https://smlopenapi.esign.cn"; public static String PROJECT_ID;
// 生产环境域名 public static String PROJECT_SECRET;
// public static final String host = "https://openapi.esign.cn"; @Value("${config-8timer.esign.host}")
private String host_s;
// 项目Id(应用Id) @Value("${config-8timer.esign.PROJECT_ID}")
public static final String PROJECT_ID = "4438775940"; private String PROJECT_ID_s;
// 项目密钥(应用密钥) @Value("${config-8timer.esign.PROJECT_SECRET}")
public static final String PROJECT_SECRET = "7b100813cca2746081c57837855ac5af"; private String PROJECT_SECRET_s;
@PostConstruct
public void init() {
host = host_s;
PROJECT_ID = PROJECT_ID_s;
PROJECT_SECRET = PROJECT_SECRET_s;
}
// 机构认证地址 // 机构认证地址
public static final String getJgrz_URL(String accountId) { public static final String getJgrz_URL(String accountId) {
......
...@@ -5,6 +5,7 @@ import java.util.ArrayList; ...@@ -5,6 +5,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -25,6 +26,8 @@ import io.swagger.annotations.ApiOperation; ...@@ -25,6 +26,8 @@ import io.swagger.annotations.ApiOperation;
@RequestMapping(value = "/oss", produces = { "application/json" }) @RequestMapping(value = "/oss", produces = { "application/json" })
@RestController @RestController
public class OSSController { public class OSSController {
@Autowired
private OSSUtil oss;
/** /**
* 上传普通文件 * 上传普通文件
...@@ -44,7 +47,7 @@ public class OSSController { ...@@ -44,7 +47,7 @@ public class OSSController {
return ResultUtil.error("上传的文件为空,请重新选择!"); return ResultUtil.error("上传的文件为空,请重新选择!");
} else { } else {
try { try {
url = OSSUtil.uploadFile(path, file.getInputStream()); url = oss.uploadFile(path, file.getInputStream());
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
...@@ -70,7 +73,7 @@ public class OSSController { ...@@ -70,7 +73,7 @@ public class OSSController {
return ResultUtil.error("上传的文件为空,请重新选择!"); return ResultUtil.error("上传的文件为空,请重新选择!");
} else { } else {
try { try {
url = OSSUtil.uploadFile(path, file.getInputStream()); url = oss.uploadFile(path, file.getInputStream());
list.add(url); list.add(url);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
...@@ -92,7 +95,7 @@ public class OSSController { ...@@ -92,7 +95,7 @@ public class OSSController {
return ResultUtil.error("上传的文件为空,请重新选择!"); return ResultUtil.error("上传的文件为空,请重新选择!");
} else { } else {
try { try {
OSSUtil.uploadPrivateFile(path, file.getInputStream()); oss.uploadPrivateFile(path, file.getInputStream());
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
...@@ -108,7 +111,7 @@ public class OSSController { ...@@ -108,7 +111,7 @@ public class OSSController {
public Result<String> getUrlPrivate(@CurrentUser UserBean userBean, @RequestParam String moudle, public Result<String> getUrlPrivate(@CurrentUser UserBean userBean, @RequestParam String moudle,
@RequestParam String fileName) { @RequestParam String fileName) {
String path = "8timer2.0/" + userBean.getOrgCode() + "/" + moudle + "/" + fileName; String path = "8timer2.0/" + userBean.getOrgCode() + "/" + moudle + "/" + fileName;
String url = OSSUtil.getUrlP(path); String url = oss.getUrlP(path);
return ResultUtil.data(url, "获取成功"); return ResultUtil.data(url, "获取成功");
} }
......
...@@ -511,6 +511,9 @@ public class QyzxController { ...@@ -511,6 +511,9 @@ public class QyzxController {
*/ */
// 下载系统使用手册 直接提供(OSS公共读权限文件)url地址到前端按钮 // 下载系统使用手册 直接提供(OSS公共读权限文件)url地址到前端按钮
@Autowired
OSSUtil oss;
/** /**
* 意见反馈 * 意见反馈
*/ */
...@@ -528,7 +531,7 @@ public class QyzxController { ...@@ -528,7 +531,7 @@ public class QyzxController {
return ResultUtil.error("上传的文件为空,请重新选择!"); return ResultUtil.error("上传的文件为空,请重新选择!");
} else { } else {
try { try {
url = OSSUtil.uploadFile(path, file.getInputStream()); url = oss.uploadFile(path, file.getInputStream());
list.add(url); list.add(url);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
......
...@@ -2,6 +2,7 @@ package cn.timer.api.utils.aliyun; ...@@ -2,6 +2,7 @@ package cn.timer.api.utils.aliyun;
import java.util.Date; import java.util.Date;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
...@@ -32,12 +33,20 @@ import cn.timer.api.dto.qyzx.EntRegisterDto; ...@@ -32,12 +33,20 @@ import cn.timer.api.dto.qyzx.EntRegisterDto;
*/ */
@Transactional @Transactional
public class AliyunSMS { public class AliyunSMS {
@Value("${config-8timer.Aliyun.PROJECT_NAME}")
private String PROJECT_NAME;
@Value("${config-8timer.Aliyun.REGION_ID}")
private String REGION_ID;
@Value("${config-8timer.Aliyun.ACCESSKEY_ID}")
private String ACCESSKEY_ID;
@Value("${config-8timer.Aliyun.SECRET}")
private String SECRET;
final static String CODE_NAME = "TemplateCode";// 短信模板代码参数名 final static String CODE_NAME = "TemplateCode";// 短信模板代码参数名
final static String REGION_ID = "cn-shenzhen";// 地区参数
final static String PROJECT_NAME = "8小时人事管家";// 项目名
final static String ACCESSKEY_ID = "LTAI4FuaShJWQ1dggsFWG5CC";
final static String SECRET = "EJ6qToT4T4u0B5Rb6qrta9WkyGHvGR";
final static String TEMPLATE_PARAM = "TemplateParam";// 自定义参数 final static String TEMPLATE_PARAM = "TemplateParam";// 自定义参数
final static String DOMAIN = "dysmsapi.aliyuncs.com"; final static String DOMAIN = "dysmsapi.aliyuncs.com";
final static String VERSION = "2017-05-25"; final static String VERSION = "2017-05-25";
...@@ -199,7 +208,7 @@ public class AliyunSMS { ...@@ -199,7 +208,7 @@ public class AliyunSMS {
* @return * @return
*/ */
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public static String remind(String name, String htname, String time, String phone) { public String remind(String name, String htname, String time, String phone) {
Integer orgCode = QyzxEmpLogin.builder().build() Integer orgCode = QyzxEmpLogin.builder().build()
.selectOne(new LambdaQueryWrapper<QyzxEmpLogin>().eq(QyzxEmpLogin::getPhone, phone)).getOrgId(); .selectOne(new LambdaQueryWrapper<QyzxEmpLogin>().eq(QyzxEmpLogin::getPhone, phone)).getOrgId();
......
...@@ -10,6 +10,8 @@ import java.util.Date; ...@@ -10,6 +10,8 @@ import java.util.Date;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver; import org.springframework.web.multipart.commons.CommonsMultipartResolver;
...@@ -30,20 +32,43 @@ import cn.timer.api.utils.ResultUtil; ...@@ -30,20 +32,43 @@ import cn.timer.api.utils.ResultUtil;
* @author dsc * @author dsc
* *
*/ */
@Component
public class OSSUtil { public class OSSUtil {
@Value("${config-8timer.Aliyun.PROJECT_NAME}")
private String endpoint;
@Value("${config-8timer.Aliyun.ACCESSKEY_ID}")
private String accessKeyId;
@Value("${config-8timer.Aliyun.SECRET}")
private String accessKeySecret;
@Value("${config-8timer.Aliyun.bucketName}")
private String bucketName;
@Value("${config-8timer.Aliyun.bucketName_pri}")
private String bucketName_pri;
@Value("${config-8timer.Aliyun.project_package}")
private String project_package;
@Value("${config-8timer.Aliyun.expirationTime}")
private String expirationTime;
@Value("${config-8timer.Aliyun.expirationTime_pri}")
private String expirationTime_pri;
/** /**
* 1.创建储存空间 sout控制台輸出 储存空间名 * 1.创建储存空间 sout控制台輸出 储存空间名
*
* @param bucketName OSS空间名 * @param bucketName OSS空间名
* @return 成功信息 * @return 成功信息
*/ */
public static Result<Void> createZone(String bucketName) { public Result<Void> createZone(String bucketName) {
// Endpoint以杭州为例,其它Region请按实际情况填写。 // Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-shenzhen.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录
// https://ram.console.aliyun.com 创建RAM账号。 // https://ram.console.aliyun.com 创建RAM账号。
String accessKeyId = "LTAI4FuaShJWQ1dggsFWG5CC";
String accessKeySecret = "EJ6qToT4T4u0B5Rb6qrta9WkyGHvGR";
// 创建OSSClient实例。 // 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 创建存储空间。 // 创建存储空间。
...@@ -58,19 +83,12 @@ public class OSSUtil { ...@@ -58,19 +83,12 @@ public class OSSUtil {
/** /**
* 2.上传文件到8time-v2 * 2.上传文件到8time-v2
*
* @param path 上传路径(用'/'分包) * @param path 上传路径(用'/'分包)
* @param ins 输入流 * @param ins 输入流
* @return * @return
*/ */
public static String uploadFile(String path, InputStream ins) { public String uploadFile(String path, InputStream ins) {
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-shenzhen.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录
// https://ram.console.aliyun.com 创建RAM账号。
String accessKeyId = "LTAI4FuaShJWQ1dggsFWG5CC";
String accessKeySecret = "EJ6qToT4T4u0B5Rb6qrta9WkyGHvGR";
// 上传储存空间设置为8time-v2
String bucketName = "8time-v2";
// <yourObjectName>上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。 // <yourObjectName>上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
// String objectName = "8time-v2/test/123.jpg"; // String objectName = "8time-v2/test/123.jpg";
// 创建OSSClient实例。 // 创建OSSClient实例。
...@@ -78,9 +96,8 @@ public class OSSUtil { ...@@ -78,9 +96,8 @@ public class OSSUtil {
// 创建PutObjectRequest对象。 // 创建PutObjectRequest对象。
// 项目名+用户公司id+模块名+文件夹名+文件名 // 项目名+用户公司id+模块名+文件夹名+文件名
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, path, ins);
path, ins); // [file1,file2,file3],["mk1/img","mk1"]
//[file1,file2,file3],["mk1/img","mk1"]
// 如果需要上传时设置存储类型与访问权限,请参考以下示例代码。 // 如果需要上传时设置存储类型与访问权限,请参考以下示例代码。
// ObjectMetadata metadata = new ObjectMetadata(); // ObjectMetadata metadata = new ObjectMetadata();
// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, // metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS,
...@@ -91,33 +108,26 @@ public class OSSUtil { ...@@ -91,33 +108,26 @@ public class OSSUtil {
// 上传文件。 // 上传文件。
ossClient.putObject(putObjectRequest); ossClient.putObject(putObjectRequest);
// 设置URL过期时间为100年。 1s 1h 1d 1y 100y // 设置URL过期时间为100年。 1s 1h 1d 1y 100y
Date expiration = new Date(new Date().getTime() + 1000 * 3600 * 24 * 365 * 100); Date expiration = new Date(new Date().getTime() + 1000 * 3600 * 24 * 365 * 100);
// 生成以GET方法访问的签名URL,访客可以直接通过浏览器访问相关内容。 // 生成以GET方法访问的签名URL,访客可以直接通过浏览器访问相关内容。
URL url = ossClient.generatePresignedUrl(bucketName,path, expiration); URL url = ossClient.generatePresignedUrl(bucketName, path, expiration);
System.err.println(url); System.err.println(url);
// 关闭OSSClient。 // 关闭OSSClient。
ossClient.shutdown(); ossClient.shutdown();
// 返回上传成功的文件名 // 返回上传成功的文件名
return url.toString(); return url.toString();
} }
/** /**
* 3.上传文件到8time-v2-private * 3.上传文件到8time-v2-private
*
* @param path 上传路径(用'/'分包) * @param path 上传路径(用'/'分包)
* @param ins 输入流 * @param ins 输入流
* @return 文件路径 * @return 文件路径
*/ */
public static String uploadPrivateFile(String path, InputStream ins) { public String uploadPrivateFile(String path, InputStream ins) {
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-shenzhen.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录
// https://ram.console.aliyun.com 创建RAM账号。
String accessKeyId = "LTAI4FuaShJWQ1dggsFWG5CC";
String accessKeySecret = "EJ6qToT4T4u0B5Rb6qrta9WkyGHvGR";
// 上传储存空间设置为8time-v2
String bucketName = "8time-v2-private";
// <yourObjectName>上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。 // <yourObjectName>上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
// String objectName = "8time-v2/test/123.jpg"; // String objectName = "8time-v2/test/123.jpg";
// 创建OSSClient实例。 // 创建OSSClient实例。
...@@ -125,9 +135,8 @@ public class OSSUtil { ...@@ -125,9 +135,8 @@ public class OSSUtil {
// 创建PutObjectRequest对象。 // 创建PutObjectRequest对象。
// 项目名+用户公司id+模块名+文件夹名+文件名 // 项目名+用户公司id+模块名+文件夹名+文件名
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName_pri, path, ins);
path, ins); // [file1,file2,file3],["mk1/img","mk1"]
//[file1,file2,file3],["mk1/img","mk1"]
// 如果需要上传时设置存储类型与访问权限,请参考以下示例代码。 // 如果需要上传时设置存储类型与访问权限,请参考以下示例代码。
// ObjectMetadata metadata = new ObjectMetadata(); // ObjectMetadata metadata = new ObjectMetadata();
// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, // metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS,
...@@ -141,9 +150,9 @@ public class OSSUtil { ...@@ -141,9 +150,9 @@ public class OSSUtil {
// 设置URL过期时间为10分钟 // 设置URL过期时间为10分钟
Date expiration = new Date(new Date().getTime() + 1000 * 600); Date expiration = new Date(new Date().getTime() + 1000 * 600);
// 生成以GET方法访问的签名URL,访客可以直接通过浏览器访问相关内容。 // 生成以GET方法访问的签名URL,访客可以直接通过浏览器访问相关内容。
URL url = ossClient.generatePresignedUrl(bucketName,path, expiration); URL url = ossClient.generatePresignedUrl(bucketName_pri, path, expiration);
System.err.println(url); System.err.println(url);
// 关闭OSSClient。 // 关闭OSSClient。
ossClient.shutdown(); ossClient.shutdown();
// 返回上传成功的文件名 // 返回上传成功的文件名
...@@ -161,15 +170,7 @@ public class OSSUtil { ...@@ -161,15 +170,7 @@ public class OSSUtil {
* @param moudle 模块名 * @param moudle 模块名
* @return 完整文件名 * @return 完整文件名
*/ */
public static Result<String> downloadFile(String orgCode, String moudle, String dir, String fileName, String path) { public Result<String> downloadFile(String orgCode, String moudle, String dir, String fileName, String path) {
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-shenzhen.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录
// https://ram.console.aliyun.com 创建RAM账号。
String accessKeyId = "LTAI4FuaShJWQ1dggsFWG5CC";
String accessKeySecret = "EJ6qToT4T4u0B5Rb6qrta9WkyGHvGR";
// 下载储存空间设置为8time-v2
String bucketName = "8time-v2";
// <yourObjectName>从OSS下载文件时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。 // <yourObjectName>从OSS下载文件时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
// String objectName = "8time-v2/test/123.jpg"; // String objectName = "8time-v2/test/123.jpg";
// 创建OSSClient实例。 // 创建OSSClient实例。
...@@ -177,29 +178,19 @@ public class OSSUtil { ...@@ -177,29 +178,19 @@ public class OSSUtil {
// 下载OSS文件到本地文件。如果指定的本地文件存在会覆盖,不存在则新建。 // 下载OSS文件到本地文件。如果指定的本地文件存在会覆盖,不存在则新建。
ossClient.getObject( ossClient.getObject(
new GetObjectRequest(bucketName, "8timer2.0/" + orgCode + "/" + moudle + "/" + dir + "/" + fileName), new GetObjectRequest(bucketName, project_package + orgCode + "/" + moudle + "/" + dir + "/" + fileName),
new File(path + fileName)); new File(path + fileName));
// 关闭OSSClient。 // 关闭OSSClient。
ossClient.shutdown(); ossClient.shutdown();
// 完整路径的文件名 // 完整路径的文件名
System.err.println("objectName:" + "8timer2.0/" + orgCode + "/" + moudle + "/" + dir + "/" + fileName); System.err.println("objectName:" + project_package + orgCode + "/" + moudle + "/" + dir + "/" + fileName);
System.err.println("path:" + path + fileName); System.err.println("path:" + path + fileName);
// 返回成功的本地路径 // 返回成功的本地路径
return ResultUtil.success(path + fileName); return ResultUtil.success(path + fileName);
} }
public Result<BufferedReader> downloadFile(String objectName) throws IOException {
public static Result<BufferedReader> downloadFile(String objectName) throws IOException {
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-shenzhen.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录
// https://ram.console.aliyun.com 创建RAM账号。
String accessKeyId = "LTAI4FuaShJWQ1dggsFWG5CC";
String accessKeySecret = "EJ6qToT4T4u0B5Rb6qrta9WkyGHvGR";
// 下载储存空间设置为8time-v2
String bucketName = "8time-v2";
// 创建OSSClient实例。 // 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
...@@ -231,10 +222,9 @@ public class OSSUtil { ...@@ -231,10 +222,9 @@ public class OSSUtil {
* @param files 批量文件 * @param files 批量文件
* @return 返回上传成功或失败的信息 * @return 返回上传成功或失败的信息
*/ */
public static String uploadFile(MultipartHttpServletRequest request,List<MultipartFile> files) { public String uploadFile(MultipartHttpServletRequest request, List<MultipartFile> files) {
OSS ossClient = new OSSClientBuilder().build("http://oss-cn-shenzhen.aliyuncs.com", "LTAI4FuaShJWQ1dggsFWG5CC", OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
"EJ6qToT4T4u0B5Rb6qrta9WkyGHvGR");
String newFileName = null; String newFileName = null;
URL url = null; URL url = null;
...@@ -250,13 +240,13 @@ public class OSSUtil { ...@@ -250,13 +240,13 @@ public class OSSUtil {
Iterator<String> iter = multiRequest.getFileNames(); Iterator<String> iter = multiRequest.getFileNames();
// 此处上传单个文件,如需多个文件改为while循环 // 此处上传单个文件,如需多个文件改为while循环
while (iter.hasNext()) { while (iter.hasNext()) {
// 取得上传文件 // 取得上传文件
files = multiRequest.getFiles(iter.next()); files = multiRequest.getFiles(iter.next());
if (files != null) { if (files != null) {
// 取得当前上传文件的文件名称 // 取得当前上传文件的文件名称
String myFileName = null; String myFileName = null;
for (MultipartFile file : files) { for (MultipartFile file : files) {
myFileName = file.getOriginalFilename(); myFileName = file.getOriginalFilename();
...@@ -265,16 +255,16 @@ public class OSSUtil { ...@@ -265,16 +255,16 @@ public class OSSUtil {
newFileName = System.currentTimeMillis() newFileName = System.currentTimeMillis()
+ myFileName.substring(myFileName.lastIndexOf(".")); + myFileName.substring(myFileName.lastIndexOf("."));
// 上传客户端文件到oss,如直接上传服务器文件到oss,可使用new FileInputStream( new File("服务器文件路径")) // 上传客户端文件到oss,如直接上传服务器文件到oss,可使用new FileInputStream( new File("服务器文件路径"))
ossClient.putObject("8time-v2", newFileName, file.getInputStream()); ossClient.putObject(bucketName, newFileName, file.getInputStream());
// 设置URL过期时间为100年。 1s 1h 1d 1y 100y // 设置URL过期时间为100年。 1s 1h 1d 1y 100y
Date expiration = new Date(new Date().getTime() + 1000 * 3600 * 24 * 365 * 100); Date expiration = new Date(new Date().getTime() + Long.parseLong(expirationTime));
// 生成以GET方法访问的签名URL,访客可以直接通过浏览器访问相关内容。 // 生成以GET方法访问的签名URL,访客可以直接通过浏览器访问相关内容。
url = ossClient.generatePresignedUrl("8time-v2", newFileName, expiration); url = ossClient.generatePresignedUrl(bucketName, newFileName, expiration);
System.err.println(url); System.err.println(url);
} }
} }
} }
} }
} }
...@@ -286,7 +276,7 @@ public class OSSUtil { ...@@ -286,7 +276,7 @@ public class OSSUtil {
ossClient.shutdown(); ossClient.shutdown();
} }
return url.toString(); return url.toString();
/* /*
* if (file == null || file.getSize() <= 0) { return * if (file == null || file.getSize() <= 0) { return
* ResultUtil.error("上传的文件为空,请重新选择!"); } else { try { * ResultUtil.error("上传的文件为空,请重新选择!"); } else { try {
...@@ -298,24 +288,17 @@ public class OSSUtil { ...@@ -298,24 +288,17 @@ public class OSSUtil {
/** /**
* 获取8time-v2文件的url * 获取8time-v2文件的url
*
* @return url地址 * @return url地址
*/ */
public static String getUrl(String path) { public String getUrl(String path) {
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-shenzhen.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录
// https://ram.console.aliyun.com 创建RAM账号。
String accessKeyId = "LTAI4FuaShJWQ1dggsFWG5CC";
String accessKeySecret = "EJ6qToT4T4u0B5Rb6qrta9WkyGHvGR";
String bucketName = "8time-v2";
// 创建OSSClient实例。 // 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 设置URL过期时间为10年。 1s 1h 1d 1y 10y // 设置URL过期时间为100年。 1s 1h 1d 1y 10y
Date expiration = new Date(new Date().getTime() + 1000 * 3600 * 24 * 365 * 10); Date expiration = new Date(new Date().getTime() + Long.parseLong(expirationTime));
// 生成以GET方法访问的签名URL,访客可以直接通过浏览器访问相关内容。 // 生成以GET方法访问的签名URL,访客可以直接通过浏览器访问相关内容。
URL url = ossClient.generatePresignedUrl(bucketName,path, expiration); URL url = ossClient.generatePresignedUrl(bucketName, path, expiration);
System.err.println(url); System.err.println(url);
// 关闭OSSClient。 // 关闭OSSClient。
ossClient.shutdown(); ossClient.shutdown();
...@@ -324,37 +307,23 @@ public class OSSUtil { ...@@ -324,37 +307,23 @@ public class OSSUtil {
/** /**
* 获取8time-v2-private文件的url * 获取8time-v2-private文件的url
*
* @return url地址 * @return url地址
*/ */
public static String getUrlP(String path) { public String getUrlP(String path) {
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-shenzhen.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录
// https://ram.console.aliyun.com 创建RAM账号。
String accessKeyId = "LTAI4FuaShJWQ1dggsFWG5CC";
String accessKeySecret = "EJ6qToT4T4u0B5Rb6qrta9WkyGHvGR";
String bucketName = "8time-v2-private";
// 创建OSSClient实例。 // 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 设置URL过期时间为10分钟。 // 设置URL过期时间为10分钟。
Date expiration = new Date(new Date().getTime() + 1000 * 600); Date expiration = new Date(new Date().getTime() + Long.parseLong(expirationTime_pri));
// 生成以GET方法访问的签名URL,访客可以直接通过浏览器访问相关内容。 // 生成以GET方法访问的签名URL,访客可以直接通过浏览器访问相关内容。
URL url = ossClient.generatePresignedUrl(bucketName,path, expiration); URL url = ossClient.generatePresignedUrl(bucketName, path, expiration);
System.err.println(url); System.err.println(url);
// 关闭OSSClient。 // 关闭OSSClient。
ossClient.shutdown(); ossClient.shutdown();
return url.toString(); return url.toString();
} }
/* /*
* (跨域资源) // Endpoint以杭州为例,其它Region请按实际情况填写。 String endpoint = * (跨域资源) // Endpoint以杭州为例,其它Region请按实际情况填写。 String endpoint =
* "http://oss-cn-hangzhou.aliyuncs.com"; // * "http://oss-cn-hangzhou.aliyuncs.com"; //
......
...@@ -58,6 +58,8 @@ public class RemindUtil implements SchedulingConfigurer { ...@@ -58,6 +58,8 @@ public class RemindUtil implements SchedulingConfigurer {
*/ */
// @Scheduled(cron = "0 0 8 * * ?") // 每天8点扫一下看有没要提醒的,有就发一个 // @Scheduled(cron = "0 0 8 * * ?") // 每天8点扫一下看有没要提醒的,有就发一个
public static String reportCurrentTime() { public static String reportCurrentTime() {
AliyunSMS sms = new AliyunSMS();
List<HtzzAssoHtgx> htgxs = HtzzAssoHtgx.builder().build().selectAll(); List<HtzzAssoHtgx> htgxs = HtzzAssoHtgx.builder().build().selectAll();
for (HtzzAssoHtgx htgx : htgxs) { for (HtzzAssoHtgx htgx : htgxs) {
QueryWrapper<HtzzAdminZzda> q = new QueryWrapper<HtzzAdminZzda>(); QueryWrapper<HtzzAdminZzda> q = new QueryWrapper<HtzzAdminZzda>();
...@@ -75,13 +77,13 @@ public class RemindUtil implements SchedulingConfigurer { ...@@ -75,13 +77,13 @@ public class RemindUtil implements SchedulingConfigurer {
System.err.println(name + " 的 " + htname + "还有: " + betweenDay + " 天到期"); System.err.println(name + " 的 " + htname + "还有: " + betweenDay + " 天到期");
if (sjc > 0) { if (sjc > 0) {
if (betweenDay <= 1) { if (betweenDay <= 1) {
AliyunSMS.remind(name, htname, time, phone); // 少于1天短信提醒 sms.remind(name, htname, time, phone); // 少于1天短信提醒
} else if (betweenDay == 3) { } else if (betweenDay == 3) {
AliyunSMS.remind(name, htname, time, phone); // 少于3天短信提醒 sms.remind(name, htname, time, phone); // 少于3天短信提醒
} else if (betweenDay == 7) { } else if (betweenDay == 7) {
AliyunSMS.remind(name, htname, time, phone); // 少于7天短信提醒 sms.remind(name, htname, time, phone); // 少于7天短信提醒
} else if (betweenDay == 30) { } else if (betweenDay == 30) {
AliyunSMS.remind(name, htname, time, phone); // 少于30天短信提醒 sms.remind(name, htname, time, phone); // 少于30天短信提醒
} }
} else { } else {
zzda.setTxkgType(1); // 关闭提醒 zzda.setTxkgType(1); // 关闭提醒
......
...@@ -149,5 +149,29 @@ logging: ...@@ -149,5 +149,29 @@ logging:
# ui-config: # ui-config:
# operations-sorter: method # 它提供了两个配置项:alpha和method,分别代表了按字母表排序以及按方法定义顺序排序 # operations-sorter: method # 它提供了两个配置项:alpha和method,分别代表了按字母表排序以及按方法定义顺序排序
configtest: config-8timer:
patht: 'devPath-dev' register-free-time: 90 #系统赠送时间
\ No newline at end of file Aliyun: # 阿里云
PROJECT_NAME: 8小时人事管家
REGION_ID: cn-shenzhen
ACCESSKEY_ID: LTAI4FuaShJWQ1dggsFWG5CC
SECRET: EJ6qToT4T4u0B5Rb6qrta9WkyGHvGR
endpoint: http://oss-cn-shenzhen.aliyuncs.com
# accessKeyId: LTAI4FuaShJWQ1dggsFWG5CC
# accessKeySecret: EJ6qToT4T4u0B5Rb6qrta9WkyGHvGR
bucketName: 8time-v2
bucketName_pri: 8time-v2-private
project_package: 8timer2.0/
expirationTime: 3153600000000L
expirationTime_pri: 600000L
esign: # e签宝
host: https://smlopenapi.esign.cn
# test: https://smlopenapi.esign.cn
# pro: https://openapi.esign.cn
PROJECT_ID: 4438775940
PROJECT_SECRET: 7b100813cca2746081c57837855ac5af
\ No newline at end of file
...@@ -125,5 +125,20 @@ logging: ...@@ -125,5 +125,20 @@ logging:
# ui-config: # ui-config:
# operations-sorter: method # 它提供了两个配置项:alpha和method,分别代表了按字母表排序以及按方法定义顺序排序 # operations-sorter: method # 它提供了两个配置项:alpha和method,分别代表了按字母表排序以及按方法定义顺序排序
configtest: config-8timer:
patht: 'devPath-pro' register-free-time: 90 #系统赠送时间
\ No newline at end of file Aliyun: # 阿里云
PROJECT_NAME: 8小时人事管家
REGION_ID: cn-shenzhen
ACCESSKEY_ID: LTAI4FuaShJWQ1dggsFWG5CC
SECRET: EJ6qToT4T4u0B5Rb6qrta9WkyGHvGR
endpoint: http://oss-cn-shenzhen.aliyuncs.com
bucketName: 8time-v2
bucketName_pri: 8time-v2-private
project_package: 8timer2.0/
expirationTime: 3153600000000L
expirationTime_pri: 600000L
esign: # e签宝
host: https://openapi.esign.cn
PROJECT_ID: 4438775940
PROJECT_SECRET: 7b100813cca2746081c57837855ac5af
\ No newline at end of file
...@@ -125,5 +125,20 @@ logging: ...@@ -125,5 +125,20 @@ logging:
# ui-config: # ui-config:
# operations-sorter: method # 它提供了两个配置项:alpha和method,分别代表了按字母表排序以及按方法定义顺序排序 # operations-sorter: method # 它提供了两个配置项:alpha和method,分别代表了按字母表排序以及按方法定义顺序排序
configtest: config-8timer:
patht: 'devPath-test' register-free-time: 90 #系统赠送时间
\ No newline at end of file Aliyun: # 阿里云
PROJECT_NAME: 8小时人事管家
REGION_ID: cn-shenzhen
ACCESSKEY_ID: LTAI4FuaShJWQ1dggsFWG5CC
SECRET: EJ6qToT4T4u0B5Rb6qrta9WkyGHvGR
endpoint: http://oss-cn-shenzhen.aliyuncs.com
bucketName: 8time-v2
bucketName_pri: 8time-v2-private
project_package: 8timer2.0/
expirationTime: 3153600000000L
expirationTime_pri: 600000L
esign: # e签宝
host: https://smlopenapi.esign.cn
PROJECT_ID: 4438775940
PROJECT_SECRET: 7b100813cca2746081c57837855ac5af
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment