更新若干功能
This commit is contained in:
@@ -54,6 +54,29 @@ class FileModel extends BaseModel
|
||||
'source' => 'integer',
|
||||
];
|
||||
|
||||
/**
|
||||
* 从对象键取出能落库的扩展名(小写、不带点、最长 20)
|
||||
*
|
||||
* 七牛历史上会把处理参数写进文件名:
|
||||
* b_xxx.jpeg~tplv-a9rns2rl98-downsize_watermark_1_5
|
||||
* pathinfo 会把整段 ~ 后面都当成扩展名,varchar(20) 直接截断报错,
|
||||
* 整批 insert 跟着失败。这里先剥查询串和 ~ 后缀,再取真正的后缀。
|
||||
* 微信保存的 .pic / .pic_hd 按 jpg 认,否则会被打成「其他」。
|
||||
*/
|
||||
public static function extOfKey(string $key): string
|
||||
{
|
||||
$name = basename(str_replace('\\', '/', $key));
|
||||
$cut = strpbrk($name, '?~#');
|
||||
if ($cut !== false) {
|
||||
$name = substr($name, 0, strlen($name) - strlen($cut));
|
||||
}
|
||||
$ext = strtolower(trim((string) pathinfo($name, PATHINFO_EXTENSION), " \t\n\r\0\x0B."));
|
||||
if ($ext === 'pic' || $ext === 'pic_hd') {
|
||||
return 'jpg';
|
||||
}
|
||||
return $ext === '' ? '' : substr($ext, 0, 20);
|
||||
}
|
||||
|
||||
/**
|
||||
* 扩展名归类到 type
|
||||
*
|
||||
@@ -62,7 +85,7 @@ class FileModel extends BaseModel
|
||||
public static function typeOfExt(string $ext): int
|
||||
{
|
||||
return match (strtolower(trim($ext, " \t\n\r\0\x0B."))) {
|
||||
'jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'ico', 'avif', 'heic' => self::TYPE_IMAGE,
|
||||
'jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'ico', 'avif', 'heic', 'pic', 'pic_hd' => self::TYPE_IMAGE,
|
||||
'mp4', 'mov', 'avi', 'mkv', 'flv', 'wmv', 'webm', 'm3u8', 'ts' => self::TYPE_VIDEO,
|
||||
'mp3', 'wav', 'aac', 'flac', 'ogg', 'm4a', 'amr' => self::TYPE_AUDIO,
|
||||
'xls', 'xlsx', 'csv' => self::TYPE_EXCEL,
|
||||
|
||||
33
app/Models/business/PackageItemModel.php
Normal file
33
app/Models/business/PackageItemModel.php
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\business;
|
||||
|
||||
use App\BaseApp\BaseBusinessModel;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
|
||||
/**
|
||||
* 套餐搭配明细(cc_package_item)
|
||||
*
|
||||
* 每行必须带 price_sheet_id,否则一件加入清单后无法按规格下单。
|
||||
*/
|
||||
class PackageItemModel extends BaseBusinessModel
|
||||
{
|
||||
protected $table = 'package_item';
|
||||
|
||||
protected $guarded = [];
|
||||
|
||||
public function package(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(PackageModel::class, 'package_id', 'id');
|
||||
}
|
||||
|
||||
public function catalogue(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(CatalogueModel::class, 'catalogue_id', 'id');
|
||||
}
|
||||
|
||||
public function priceSheet(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(PriceSheetModel::class, 'price_sheet_id', 'id');
|
||||
}
|
||||
}
|
||||
24
app/Models/business/PackageModel.php
Normal file
24
app/Models/business/PackageModel.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\business;
|
||||
|
||||
use App\BaseApp\BaseBusinessModel;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
|
||||
/**
|
||||
* 家具套餐(cc_package)
|
||||
*
|
||||
* original_amount 是明细规格价之和,package_amount 是独立售价。
|
||||
* 两列都是倍率=1 的基准分,展示/下单时再乘用户 price_number。
|
||||
*/
|
||||
class PackageModel extends BaseBusinessModel
|
||||
{
|
||||
protected $table = 'package';
|
||||
|
||||
protected $guarded = [];
|
||||
|
||||
public function items(): HasMany
|
||||
{
|
||||
return $this->hasMany(PackageItemModel::class, 'package_id', 'id');
|
||||
}
|
||||
}
|
||||
21
app/Models/business/WxCardSchemeModel.php
Normal file
21
app/Models/business/WxCardSchemeModel.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\business;
|
||||
|
||||
use App\BaseApp\BaseBusinessModel;
|
||||
|
||||
/**
|
||||
* 小程序卡片画布方案(cc_wx_card_scheme)
|
||||
*
|
||||
* layers 是图层数组,小程序 ThemeCanvasCard 与后台画布编辑器共用同一份 JSON。
|
||||
*/
|
||||
class WxCardSchemeModel extends BaseBusinessModel
|
||||
{
|
||||
protected $table = 'wx_card_scheme';
|
||||
|
||||
protected $guarded = [];
|
||||
|
||||
protected $casts = [
|
||||
'layers' => 'array',
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user