Files
YwxAppThink/addon/appmall/model/AddonLicense.php
T
ywxapp 1d49e6f5ee feat: 公共表更名 common/member 前缀 + 插件命令自动加载 + 版本 1.1.1
- 18 张公共表更名(addon/attachment/configure/links/spider_log/spider_stat/sms/notice/ad/task/prop/medal/help/card -> common_*,member_wallets->member_wallet,score_rule/score_log -> member_*,addon_config->common_addonconf),模型全部对齐新表名,Db 直引用清零
- Attachment 模型补  表名绑定,修复富文本上传查 wxapp_attachment 1146 隐患
- install.sql + 迁移 SQL:backend_admin/backend_role delete_at 默认 0,修复软删除(NULL != 0)误过滤导致后台菜单为空
- AppService::boot() 支持插件 info.php 声明 commands 自动注册插件命令(psr-4 自动加载,坏类名自动跳过)
- 各插件(haonav/mqttbroker/wxchat/articles/blog/forum 等)字段与配置同步调整
- 框架版本 1.1.0 -> 1.1.1
2026-08-20 20:19:15 +08:00

58 lines
1.8 KiB
PHP

<?php
// +----------------------------------------------------------------------
// | YwxApp AppMarket [ 应用市场中心站插件 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2026-2036 http://ywxapp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: ywxapp<admin@ywxapp.cn>
// +----------------------------------------------------------------------
declare(strict_types=1);
namespace addon\appmall\model;
use ywxapp\model\BaseModel;
/**
* 插件授权(中心站)
* 表:appmall_addon_licenses
* @mixin \think\Model
*/
class AddonLicense extends BaseModel
{
protected function getOptions(): array
{
return [
'strict' => true,
'name' => 'appmall_addon_licenses',
'autoWriteTimestamp' => 'int',
'readonly' => ['uid'],
'createTime' => 'create_at',
'updateTime' => 'update_at',
];
}
/**
* 关联插件信息(核心插件注册表)
* @return \think\model\relation\BelongsTo
*/
public function addon()
{
return $this->belongsTo(\ywxapp\model\CommonAddon::class, 'aid', 'id');
}
/**
* 生成安全签名(防链接泄漏)
* @param string $licenseKey 授权码
* @param int $aid 插件ID
* @param int $timestamp 时间戳
* @param string $secret 签名密钥(仅作 HMAC key,不要拼进消息)
* @return string
*/
public function generateSign(string $licenseKey, int $aid, int $timestamp, string $secret): string
{
$str = $licenseKey . $aid . $timestamp;
return hash_hmac('sha256', $str, $secret);
}
}