├── App
│ ├── Config 项目配置文件
├ │── Crontab 定时任务
│ │ └── Job 定时业务集合
│ ├── Exception 自定义异常处理
│ ├── HttpController
│ ├── Lib Lib
│ ├── Logic 逻辑层
│ ├── Model 模型层
│ ├── Process 自定义进程
│ ├── Queue 消息队列
│ │ └── Job 消息队列业务集合
│ ├── Service 服务层
│ ├── Task 异步任务
│ ├── Utility 工具集
│ └── Validate 验证类
├── EasySwooleEvent.php
├── Readme.md
├── Sql
├── bootstrap.php
├── composer.json
├── composer.lock
├── dev.php
├── easyswoole
├── index.html
├── produce.php
└── vendor
前端按照请求的参数拼接字符串 每个接口都必须通过签名认证才能正常使用 请按照下边的流程进行签名加密
签名字符串传格式如下 请按照以下格式进行拼装
"app_secret="+app_secret+"&"+query+"&"+body+"×tamp="+timestamp
参数名称 | 参数说明 |
---|---|
app_secret | 应用密钥 由后端提供 例子:dfgAiNQJdjnLimUzVXEtnDJrtFSkKCZx |
query | get请求参数 例子:page=1&pageSize=1 请按照'&'进行变量的拼装 |
body | post请求参数 例子:page=1&pageSize=1 请按照'&'进行变量的拼装 如果是json模式用json的加密串代替 |
timestamp | 当前请求的时间戳 请获取当前的 过期的时间戳 请求不会通过 从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数 例子:1642837463 |
签名加密的规则 js代码如下:
// md5加密并且加密串大写
var sign = CryptoJS.MD5(string).toString().toUpperCase()
// 对md5字符串进行hash256的加密
sign = CryptoJS.HmacSHA256(sign,app_secret).toString();
json字符串加密的规则 将json对象转化为字符串后 对字符串进行des-ecb加密 同时进行base64编码 js代码如下:
// 转化为json字符串
var bodyString = JSON.stringify({
"page": 1,
"pageSize": 9,
"id2":'sdasdasdasd1111',
"id":1
});
// des加密json
var keyHex = CryptoJS.enc.Utf8.parse(app_secret);
var encrypted = CryptoJS.DES.encrypt(bodyString, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
var body_encrypt = encrypted.ciphertext.toString(CryptoJS.enc.Base64);
// GET测试
var timestamp = Math.round(new Date().getTime()/1000);
var app_secret = "dfgAiNQJdjnLimUzVXEtnDJrtFSkKCZx";
// 和postman query顺序参数对应
var query = "page=1&pageSize=1";
// 和postman form-data参数对应
var body = "";
var string = "app_secret="+app_secret+"&"+query+"&"+body+"×tamp="+timestamp
var sign = CryptoJS.MD5(string).toString().toUpperCase()
sign = CryptoJS.HmacSHA256(sign,app_secret).toString();
// 写入postman定义参数
pm.variables.set('sign',sign);
// POST测试
var timestamp = Math.round(new Date().getTime()/1000);
var app_secret = "dfgAiNQJdjnLimUzVXEtnDJrtFSkKCZx";
// 和postman query顺序参数对应
var query = "page=1&pageSize=1";
// 和postman form-data参数对应
var body = "p=1&a=1";
var string = "app_secret="+app_secret+"&"+query+"&"+body+"×tamp="+timestamp
var sign = CryptoJS.MD5(string).toString().toUpperCase()
sign = CryptoJS.HmacSHA256(sign,app_secret).toString();
// 写入postman定义参数
pm.variables.set('sign',sign);
// JSON测试 请将{{body_encrypt}}变量放入到postman中的body的raw选项中的json中
var timestamp = Math.round(new Date().getTime()/1000);
var app_secret = "dfgAiNQJdjnLimUzVXEtnDJrtFSkKCZx";
// 和postman query顺序参数对应
var query = "page=1&data=1";
// 转化为json字符串
var bodyString = JSON.stringify({
"page": 1,
"pageSize": 9,
"id2":'sdasdasdasd1111',
"id":1
});
// des加密json
var keyHex = CryptoJS.enc.Utf8.parse(app_secret);
var encrypted = CryptoJS.DES.encrypt(bodyString, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
var body_encrypt = encrypted.ciphertext.toString(CryptoJS.enc.Base64);
pm.variables.set('body_encrypt',body_encrypt);
// 签名加密
var string = "app_secret="+app_secret+"&"+query+"&"+body_encrypt+"×tamp="+timestamp
var sign = CryptoJS.MD5(string).toString().toUpperCase()
sign = CryptoJS.HmacSHA256(sign,app_secret).toString();
pm.variables.set('sign',sign);
CREATE TABLE `sys_platform_account` (
`id` int(11) NOT NULL COMMENT 'ID',
`platform` char(50) NOT NULL COMMENT '所属平台,参考字典platform_type',
`account` char(100) NOT NULL COMMENT '账号或APPID,第三方平台唯一标识',
`config` text NOT NULL COMMENT '平台配置',
`store_id` int(11) NOT NULL COMMENT '租户ID',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_time` datetime NOT NULL COMMENT '更新时间',
`create_by` int(11) NOT NULL COMMENT '创建者',
`update_by` int(11) NOT NULL COMMENT '更新者',
`status` tinyint(1) NOT NULL COMMENT '状态',
`del_flag` tinyint(1) NOT NULL COMMENT '是有启用'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='平台配置表';
--
-- 转储表的索引
--
--
-- 表的索引 `sys_platform_account`
--
ALTER TABLE `sys_platform_account`
ADD PRIMARY KEY (`id`),
ADD KEY `store_id` (`store_id`),
ADD KEY `platform` (`platform`);
--
-- 在导出的表使用AUTO_INCREMENT
--
--
-- 使用表AUTO_INCREMENT `sys_platform_account`
--
ALTER TABLE `sys_platform_account`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID';
COMMIT;
##Nginx配置
location / { proxy_http_version 1.1; proxy_set_header Connection "keep-alive"; proxy_set_header X-Real-IP $remote_addr; //开启websocket proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; if (!-f $request_filename) { proxy_pass http://127.0.0.1:9502; } }
##参考项目
微信、钉钉通知 https://github.com/wonder-game/es-notify
全局 https://github.com/wonder-game/es-utility
###手动安装xlswriter
wget https://pecl.php.net/get/xlswriter-1.5.2.tgz tar -zxvf xlswriter-1.5.2.tgz cd xlswriter-1.5.2/ /www/server/php/74/bin/phpize ./configure --with-php-config=/www/server/php/74/bin/php-config make && make install echo "extension = xlswriter.so" >> /www/server/php/74/etc/php.ini /etc/init.d/php-fpm-74 reload /www/server/php/74/bin/php -m|grep -i xlswriter
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。