初始化

缺陷:主题配色需要优化整体的同风格
This commit is contained in:
2026-08-14 23:21:21 +08:00
parent 6e2769c528
commit bcf54c2727
152 changed files with 13521 additions and 141 deletions

View File

@@ -0,0 +1,15 @@
<?php
namespace App\Models\business;
use App\BaseApp\BaseBusinessModel;
/**
* 色卡分类cc_card_class
*/
class CardClassModel extends BaseBusinessModel
{
protected $table = 'card_class';
protected $guarded = [];
}

View File

@@ -0,0 +1,15 @@
<?php
namespace App\Models\business;
use App\BaseApp\BaseBusinessModel;
/**
* 小程序轮播图cc_carousel
*/
class CarouselModel extends BaseBusinessModel
{
protected $table = 'carousel';
protected $guarded = [];
}

View File

@@ -0,0 +1,35 @@
<?php
namespace App\Models\business;
use App\BaseApp\BaseBusinessModel;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
/**
* 商品图册cc_catalogue
*
* 老项目关系名写成 cateGory序列化出来是 cate_gory前端还得记这个拼写。
* 新后端统一叫 category列表里另外拍平成 category_name。
*/
class CatalogueModel extends BaseBusinessModel
{
protected $table = 'catalogue';
protected $guarded = [];
public function category(): BelongsTo
{
return $this->belongsTo(CategoryModel::class, 'category_id', 'id');
}
public function priceSheet(): HasMany
{
return $this->hasMany(PriceSheetModel::class, 'catalogue_id', 'id');
}
public function images(): HasMany
{
return $this->hasMany(ImageModel::class, 'catalogue_id', 'id');
}
}

View File

@@ -0,0 +1,26 @@
<?php
namespace App\Models\business;
use App\BaseApp\BaseBusinessModel;
use Illuminate\Database\Eloquent\Relations\HasMany;
/**
* 商品分类cc_category
*/
class CategoryModel extends BaseBusinessModel
{
protected $table = 'category';
protected $guarded = [];
public function children(): HasMany
{
return $this->hasMany(self::class, 'pid', 'id');
}
public function catalogues(): HasMany
{
return $this->hasMany(CatalogueModel::class, 'category_id', 'id');
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace App\Models\business;
use App\BaseApp\BaseBusinessModel;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
/**
* 色卡cc_colorcard
*
* 外键列名是 card_class / company不带 _id沿用老表不改。
*/
class ColorcardModel extends BaseBusinessModel
{
protected $table = 'colorcard';
protected $guarded = [];
public function cardClassInfo(): BelongsTo
{
return $this->belongsTo(CardClassModel::class, 'card_class', 'id');
}
public function companyInfo(): BelongsTo
{
return $this->belongsTo(CompanyModel::class, 'company', 'id');
}
}

View File

@@ -0,0 +1,15 @@
<?php
namespace App\Models\business;
use App\BaseApp\BaseBusinessModel;
/**
* 色卡所属公司cc_company
*/
class CompanyModel extends BaseBusinessModel
{
protected $table = 'company';
protected $guarded = [];
}

View File

@@ -0,0 +1,18 @@
<?php
namespace App\Models\business;
use App\BaseApp\BaseBusinessModel;
/**
* 部门表模型
*
* 直接复用老系统已有的 cc_department 结构正好够用id/name/desc/status/pid/color/时间戳),
* 部门数据零迁移。账号侧通过 nl_admin.department_id 关联。
*/
class DepartmentModel extends BaseBusinessModel
{
protected $table = 'department';
protected $guarded = [];
}

View File

@@ -0,0 +1,23 @@
<?php
namespace App\Models\business;
use App\BaseApp\BaseBusinessModel;
use Illuminate\Database\Eloquent\Relations\HasMany;
/**
* 企业cc_enterprise
*
* 老表只有 name / logo企业管理模块会补齐联系人、税号、结算方式、默认价格倍率等列。
*/
class EnterpriseModel extends BaseBusinessModel
{
protected $table = 'enterprise';
protected $guarded = [];
public function users(): HasMany
{
return $this->hasMany(WxUserModel::class, 'enterprise_id', 'id');
}
}

View File

@@ -0,0 +1,15 @@
<?php
namespace App\Models\business;
use App\BaseApp\BaseBusinessModel;
/**
* 工厂分类cc_factory_classification
*/
class FactoryClassificationModel extends BaseBusinessModel
{
protected $table = 'factory_classification';
protected $guarded = [];
}

View File

@@ -0,0 +1,23 @@
<?php
namespace App\Models\business;
use App\BaseApp\BaseBusinessModel;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
/**
* 工厂产品图cc_factory_image
*
* 外键列名就叫 factory不是 factory_id沿用老表不改。
*/
class FactoryImageModel extends BaseBusinessModel
{
protected $table = 'factory_image';
protected $guarded = [];
public function factoryInfo(): BelongsTo
{
return $this->belongsTo(FactoryInfoModel::class, 'factory', 'id');
}
}

View File

@@ -0,0 +1,29 @@
<?php
namespace App\Models\business;
use App\BaseApp\BaseBusinessModel;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
/**
* 工厂管理cc_factory_info
*
* 外键列名就叫 classification不是 classification_id沿用老表不改。
*/
class FactoryInfoModel extends BaseBusinessModel
{
protected $table = 'factory_info';
protected $guarded = [];
public function classificationInfo(): BelongsTo
{
return $this->belongsTo(FactoryClassificationModel::class, 'classification', 'id');
}
public function images(): HasMany
{
return $this->hasMany(FactoryImageModel::class, 'factory', 'id');
}
}

View File

@@ -0,0 +1,26 @@
<?php
namespace App\Models\business;
use App\BaseApp\BaseBusinessModel;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
/**
* 商品相册cc_image
*
* type 1 渲染图 / 2 实物图,小程序详情页分两个列表展示
*/
class ImageModel extends BaseBusinessModel
{
protected $table = 'image';
protected $guarded = [];
public const TYPE_RENDER = 1;
public const TYPE_PHYSICAL = 2;
public function catalogue(): BelongsTo
{
return $this->belongsTo(CatalogueModel::class, 'catalogue_id', 'id');
}
}

View File

@@ -0,0 +1,34 @@
<?php
namespace App\Models\business;
use App\BaseApp\BaseBusinessModel;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
/**
* 清单明细cc_list_item
*
* catalogue_id 指向商品图册price_sheet_id 指向具体规格行,
* 老库没有这个字段,所以历史数据这里是 0,转订单时要提示用户补选规格。
*/
class ListItemModel extends BaseBusinessModel
{
protected $table = 'list_item';
protected $guarded = [];
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');
}
public function list(): BelongsTo
{
return $this->belongsTo(ListModel::class, 'list_id', 'id');
}
}

View File

@@ -0,0 +1,34 @@
<?php
namespace App\Models\business;
use App\BaseApp\BaseBusinessModel;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
/**
* 清单cc_list
*
* 一个小程序用户可以有多份清单,登录时会自动建一份「默认清单」。
*/
class ListModel extends BaseBusinessModel
{
protected $table = 'list';
protected $guarded = [];
public function items(): HasMany
{
return $this->hasMany(ListItemModel::class, 'list_id', 'id');
}
public function user(): BelongsTo
{
return $this->belongsTo(WxUserModel::class, 'user_id', 'id');
}
public function enterprise(): BelongsTo
{
return $this->belongsTo(EnterpriseModel::class, 'enterprise_id', 'id');
}
}

View File

@@ -0,0 +1,23 @@
<?php
namespace App\Models\business;
use App\BaseApp\BaseBusinessModel;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
/**
* 发货记录cc_order_delivery
*
* 一个订单可能分批发货,所以是一对多而不是订单表上的几个字段。
*/
class OrderDeliveryModel extends BaseBusinessModel
{
protected $table = 'order_delivery';
protected $guarded = [];
public function order(): BelongsTo
{
return $this->belongsTo(OrderModel::class, 'order_id', 'id');
}
}

View File

@@ -0,0 +1,24 @@
<?php
namespace App\Models\business;
use App\BaseApp\BaseBusinessModel;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
/**
* 订单明细cc_order_item
*
* 标题、封面、规格、单价全部是下单那一刻的快照。catalogue_id 只用于溯源,
* 展示金额与规格时不要回查商品表,否则后台改价会改掉历史订单。
*/
class OrderItemModel extends BaseBusinessModel
{
protected $table = 'order_item';
protected $guarded = [];
public function order(): BelongsTo
{
return $this->belongsTo(OrderModel::class, 'order_id', 'id');
}
}

View File

@@ -0,0 +1,63 @@
<?php
namespace App\Models\business;
use App\BaseApp\BaseBusinessModel;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
/**
* 订单cc_order
*
* 金额字段一律是整数分。状态用显式状态机(见 OrderService::transition
* 不要在业务代码里散落 if-else 直接改 status。
*/
class OrderModel extends BaseBusinessModel
{
protected $table = 'order';
protected $guarded = [];
public const STATUS_UNPAID = 0;
public const STATUS_PAID = 1;
public const STATUS_SHIPPED = 2;
public const STATUS_DONE = 3;
public const STATUS_CANCELLED = 4;
public const PAY_TYPE_VOUCHER = 1;
public const PAY_TYPE_WECHAT = 2;
public const PAY_STATUS_UNPAID = 0;
public const PAY_STATUS_AUDITING = 1;
public const PAY_STATUS_PAID = 2;
public const PAY_STATUS_REJECTED = 3;
public const DELIVERY_EXPRESS = 1;
public const DELIVERY_PICKUP = 2;
public const DELIVERY_COMPANY = 3;
public function items(): HasMany
{
return $this->hasMany(OrderItemModel::class, 'order_id', 'id');
}
public function payments(): HasMany
{
return $this->hasMany(OrderPaymentModel::class, 'order_id', 'id');
}
public function deliveries(): HasMany
{
return $this->hasMany(OrderDeliveryModel::class, 'order_id', 'id');
}
public function user(): BelongsTo
{
return $this->belongsTo(WxUserModel::class, 'user_id', 'id');
}
public function enterprise(): BelongsTo
{
return $this->belongsTo(EnterpriseModel::class, 'enterprise_id', 'id');
}
}

View File

@@ -0,0 +1,27 @@
<?php
namespace App\Models\business;
use App\BaseApp\BaseBusinessModel;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
/**
* 支付记录cc_order_payment
*
* out_trade_no 有唯一索引,微信重复推送回调时靠它保证幂等。
*/
class OrderPaymentModel extends BaseBusinessModel
{
protected $table = 'order_payment';
protected $guarded = [];
public const STATUS_AUDITING = 0;
public const STATUS_CONFIRMED = 1;
public const STATUS_REJECTED = 2;
public function order(): BelongsTo
{
return $this->belongsTo(OrderModel::class, 'order_id', 'id');
}
}

View File

@@ -0,0 +1,38 @@
<?php
namespace App\Models\business;
use App\BaseApp\BaseBusinessModel;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
/**
* 报价单cc_price_sheet
*
* 表里除 routine 外还有 6 个材质列(岩板、科技绒…),老项目 create() 从不给它们赋值、
* 前端表单列也全注释了,属于没启用的死 schema。新后端只读不写展示时按非空过滤
* 真要做多材质报价请走 cc_price_sheet_item 那套设计,不要继续往这些列上加逻辑。
*/
class PriceSheetModel extends BaseBusinessModel
{
protected $table = 'price_sheet';
protected $guarded = [];
/**
* 历史材质列,仅用于展示过滤
*/
public const MATERIAL_FIELDS = [
'routine',
'plank_of_rock',
'science_and_technology_velvet',
'imitation_leather',
'genuine_leather',
'science_and_technology_cloth',
'microfiber_skin',
];
public function catalogue(): BelongsTo
{
return $this->belongsTo(CatalogueModel::class, 'catalogue_id', 'id');
}
}

View File

@@ -0,0 +1,24 @@
<?php
namespace App\Models\business;
use App\BaseApp\BaseBusinessModel;
/**
* 小程序装修模板cc_wx_template
*
* tokens 存设计令牌(配色/字号/圆角/阴影/间距/动效曲线与时长),
* layout 存页面骨架(每个页面用哪种排布)。小程序不支持动态 <style>
* 所以令牌最终是注入到根节点的 CSS 变量,不能塞任意 CSS 文本进来。
*/
class WxTemplateModel extends BaseBusinessModel
{
protected $table = 'wx_template';
protected $guarded = [];
protected $casts = [
'tokens' => 'array',
'layout' => 'array',
];
}

View File

@@ -0,0 +1,41 @@
<?php
namespace App\Models\business;
use App\BaseApp\BaseBusinessModel;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
/**
* 小程序用户cc_wx_user
*
* is_p 代理商 / pid 上级代理商 / price_number 价格倍率 / show_price 价格是否可见 /
* template_code 经销商专属装修模板(空=跟随品牌默认)。
* session_key 是微信会话密钥,只能留在服务端,任何接口都不要把它输出出去。
*/
class WxUserModel extends BaseBusinessModel
{
protected $table = 'wx_user';
protected $guarded = [];
protected $hidden = ['session_key'];
public function enterprise(): BelongsTo
{
return $this->belongsTo(EnterpriseModel::class, 'enterprise_id', 'id');
}
/**
* 该代理商名下的下级用户
*/
public function children(): HasMany
{
return $this->hasMany(self::class, 'pid', 'id');
}
public function parent(): BelongsTo
{
return $this->belongsTo(self::class, 'pid', 'id');
}
}