商品、订单部分相关代码生成,下一步先把商品搞完再搞订单
Some checks failed
Tests / PHP 8.2 (push) Has been cancelled
Tests / PHP 8.3 (push) Has been cancelled
Tests / PHP 8.4 (push) Has been cancelled

This commit is contained in:
2025-05-20 16:52:47 +08:00
parent 5bd5938e5c
commit 035ab1105c
45 changed files with 1951 additions and 151 deletions

View File

@@ -29,6 +29,10 @@ class BaseService
* @var int 角色ID默认值为0表示未登录状态
*/
protected int $roleId = 0;
/**
* @var int 商家ID
*/
protected int $mallId = 0;
/**
* @var array 用户信息
@@ -95,6 +99,7 @@ class BaseService
$this->userInfo = JWTService::getInstance()->getToken()->getUserInfo();
$this->userId = $this->userInfo['id'] ?? 0;
$this->roleId = $this->userInfo['role_id'] ?? 0;
$this->mallId = $this->userInfo['mall_id'] ?? 0;
$this->utils = UtilsService::getInstance();
}

View File

@@ -3,9 +3,9 @@
namespace App\Http\Controllers\Api\CodeGeneration;
use App\BaseApp\BaseController;
use App\Service\CodeGeneration\StoreClassificationService;
use App\Service\CodeGeneration\MallClassificationService;
class StoreClassificationController extends BaseController
class MallClassificationController extends BaseController
{
//
public function __construct()
@@ -13,6 +13,6 @@ class StoreClassificationController extends BaseController
parent::__construct();
$this->insertField = ["name","pid"];
$this->updateField = ["id","name","pid"];
$this->service = StoreClassificationService::getInstance();
$this->service = MallClassificationService::getInstance();
}
}

View File

@@ -3,9 +3,9 @@
namespace App\Http\Controllers\Api\CodeGeneration;
use App\BaseApp\BaseController;
use App\Service\CodeGeneration\StoreService;
use App\Service\CodeGeneration\MallService;
class StoreController extends BaseController
class MallController extends BaseController
{
//
public function __construct()
@@ -13,6 +13,6 @@ class StoreController extends BaseController
parent::__construct();
$this->insertField = ["name","level","avatar","introduction","description","phone","person", "classification_id","id_card","is_featured","business_license","id_card_portrait_side","id_card_national_emblem_side","chain","business_suspended"];
$this->updateField = ["id","name","level","avatar","introduction","description","phone","person", "classification_id","is_featured","business_license","id_card_portrait_side","id_card_national_emblem_side","chain","business_suspended"];
$this->service = StoreService::getInstance();
$this->service = MallService::getInstance();
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace App\Http\Controllers\Api\CodeGeneration;
use App\BaseApp\BaseController;
use App\Service\CodeGeneration\MallMembershipLevelService;
class MallMembershipLevelController extends BaseController
{
//
public function __construct()
{
parent::__construct();
$this->insertField = ["name","experience"];
$this->updateField = ["id","name","experience"];
$this->service = MallMembershipLevelService::getInstance();
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace App\Http\Controllers\Api\CodeGeneration;
use App\BaseApp\BaseController;
use App\Service\CodeGeneration\OrderService;
class OrderController extends BaseController
{
//
public function __construct()
{
parent::__construct();
$this->insertField = ["user_id","order_no","order_status","total_amount"];
$this->updateField = ["id","user_id","order_no","order_status","total_amount"];
$this->service = OrderService::getInstance();
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace App\Http\Controllers\Api\CodeGeneration;
use App\BaseApp\BaseController;
use App\Service\CodeGeneration\OrderDetailService;
class OrderDetailController extends BaseController
{
//
public function __construct()
{
parent::__construct();
$this->insertField = ["order_id","product_id","quantity","price","subtotal","snapshot"];
$this->updateField = ["id","order_id","product_id","quantity","price","subtotal","snapshot"];
$this->service = OrderDetailService::getInstance();
}
}

View File

@@ -11,8 +11,8 @@ class ProductController extends BaseController
public function __construct()
{
parent::__construct();
$this->insertField = ["title","introduction","cover", "images","description","price","classification_id"];
$this->updateField = ["id","title","introduction","cover", "images","description","price","classification_id"];
$this->insertField = ["title","introduction","cover", "images", "labels","description","price","classification_id"];
$this->updateField = ["id","title","introduction","cover", "images", "labels","description","price","classification_id"];
$this->service = ProductService::getInstance();
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace App\Http\Controllers\Api\CodeGeneration;
use App\BaseApp\BaseController;
use App\Service\CodeGeneration\ProductLabelRelationsService;
class ProductLabelRelationsController extends BaseController
{
//
public function __construct()
{
parent::__construct();
$this->insertField = ["product_id","label_id"];
$this->updateField = ["id","product_id","label_id"];
$this->service = ProductLabelRelationsService::getInstance();
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace App\Http\Controllers\Api\CodeGeneration;
use App\BaseApp\BaseController;
use App\Service\CodeGeneration\SkuService;
class SkuController extends BaseController
{
//
public function __construct()
{
parent::__construct();
$this->insertField = ["product_id","cover", "name","inventory","price"];
$this->updateField = ["id","product_id","cover", "name","inventory","price"];
$this->service = SkuService::getInstance();
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace App\Http\Controllers\Api\CodeGeneration;
use App\BaseApp\BaseController;
use App\Service\CodeGeneration\UserBrowsingHistoryService;
class UserBrowsingHistoryController extends BaseController
{
//
public function __construct()
{
parent::__construct();
$this->insertField = ["user_id","product_id"];
$this->updateField = ["id","user_id","product_id"];
$this->service = UserBrowsingHistoryService::getInstance();
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace App\Http\Controllers\Api\CodeGeneration;
use App\BaseApp\BaseController;
use App\Service\CodeGeneration\UserCollectService;
class UserCollectController extends BaseController
{
//
public function __construct()
{
parent::__construct();
$this->insertField = ["user_id","product_id"];
$this->updateField = ["id","user_id","product_id"];
$this->service = UserCollectService::getInstance();
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace App\Http\Controllers\Api\CodeGeneration;
use App\BaseApp\BaseController;
use App\Service\CodeGeneration\UserService;
class UserController extends BaseController
{
//
public function __construct()
{
parent::__construct();
$this->insertField = ["nick_name","phone","email","level","balance","avatar","integral"];
$this->updateField = ["id","nick_name","phone","email","level","balance","avatar","integral"];
$this->service = UserService::getInstance();
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace App\Http\Controllers\Api\CodeGeneration;
use App\BaseApp\BaseController;
use App\Service\CodeGeneration\UserMembershipService;
class UserMembershipController extends BaseController
{
//
public function __construct()
{
parent::__construct();
$this->insertField = ["name","experience"];
$this->updateField = ["id","name","experience"];
$this->service = UserMembershipService::getInstance();
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace App\Http\Controllers\Api\CodeGeneration;
use App\BaseApp\BaseController;
use App\Service\CodeGeneration\UserReceivingAddressService;
class UserReceivingAddressController extends BaseController
{
//
public function __construct()
{
parent::__construct();
$this->insertField = ["user_id","province","city","district","detailed_address","complete_address"];
$this->updateField = ["id","user_id","province","city","district","detailed_address","complete_address"];
$this->service = UserReceivingAddressService::getInstance();
}
}

View File

@@ -4,10 +4,10 @@ namespace App\Models;
use App\BaseApp\BaseModel;
class StoreClassificationModel extends BaseModel
class MallClassificationModel extends BaseModel
{
protected $table = 'store_classification';
protected $table = 'mall_classification';
/**
* The attributes that are mass assignable.
*

View File

@@ -0,0 +1,26 @@
<?php
namespace App\Models;
use App\BaseApp\BaseModel;
class MallMembershipLevelModel extends BaseModel
{
protected $table = 'mall_membership_level';
/**
* The attributes that are mass assignable.
*
* @var list<string>
*/
protected $guarded = [];
public function product()
{
return $this->hasOne(ProductModel::class, 'id', 'product_id');
}
public function user()
{
return $this->hasOne(UserModel::class, 'id', 'user_id');
}
}

View File

@@ -4,10 +4,10 @@ namespace App\Models;
use App\BaseApp\BaseModel;
class StoreModel extends BaseModel
class MallModel extends BaseModel
{
protected $table = 'store';
protected $table = 'mall';
/**
* The attributes that are mass assignable.
*

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Models;
use App\BaseApp\BaseModel;
class OrderDetailModel extends BaseModel
{
protected $table = 'order_detail';
/**
* The attributes that are mass assignable.
*
* @var list<string>
*/
protected $guarded = [];
}

17
app/Models/OrderModel.php Normal file
View File

@@ -0,0 +1,17 @@
<?php
namespace App\Models;
use App\BaseApp\BaseModel;
class OrderModel extends BaseModel
{
protected $table = 'order';
/**
* The attributes that are mass assignable.
*
* @var list<string>
*/
protected $guarded = [];
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Models;
use App\BaseApp\BaseModel;
class ProductLabelRelationsModel extends BaseModel
{
protected $table = 'product_label_relations';
/**
* The attributes that are mass assignable.
*
* @var list<string>
*/
protected $guarded = [];
}

View File

@@ -20,4 +20,30 @@ class ProductModel extends BaseModel
{
return $this->hasMany(ProductImageModel::class, 'product_id', 'id');
}
public function mall()
{
return $this->hasOne(MallModel::class, 'id', 'mall_id');
}
public function user()
{
return $this->hasOne(AdminModel::class, 'id', 'user_id');
}
public function labels()
{
// return $this->hasMany(ProductLabelRelationsModel::class, 'product_id', 'id');
return $this->belongsToMany(ProductLabelModel::class, 'product_label_relations', 'product_id', 'label_id');
}
public function classification()
{
return $this->hasOne(ProductClassificationModel::class, 'id', 'classification_id');
}
public function skus()
{
return $this->hasMany(SkuModel::class, 'product_id', 'id');
}
}

22
app/Models/SkuModel.php Normal file
View File

@@ -0,0 +1,22 @@
<?php
namespace App\Models;
use App\BaseApp\BaseModel;
class SkuModel extends BaseModel
{
protected $table = 'sku';
/**
* The attributes that are mass assignable.
*
* @var list<string>
*/
protected $guarded = [];
public function product()
{
return $this->hasOne(ProductModel::class, 'id', 'product_id');
}
}

View File

@@ -0,0 +1,27 @@
<?php
namespace App\Models;
use App\BaseApp\BaseModel;
class UserBrowsingHistoryModel extends BaseModel
{
protected $table = 'user_browsing_history';
/**
* The attributes that are mass assignable.
*
* @var list<string>
*/
protected $guarded = [];
public function product()
{
return $this->hasOne(ProductModel::class, 'id', 'product_id');
}
public function user()
{
return $this->hasOne(UserModel::class, 'id', 'user_id');
}
}

View File

@@ -0,0 +1,26 @@
<?php
namespace App\Models;
use App\BaseApp\BaseModel;
class UserCollectModel extends BaseModel
{
protected $table = 'user_collect';
/**
* The attributes that are mass assignable.
*
* @var list<string>
*/
protected $guarded = [];
public function product()
{
return $this->hasOne(ProductModel::class, 'id', 'product_id');
}
public function user()
{
return $this->hasOne(UserModel::class, 'id', 'user_id');
}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Models;
use App\BaseApp\BaseModel;
class UserMembershipModel extends BaseModel
{
protected $table = 'user_membership';
/**
* The attributes that are mass assignable.
*
* @var list<string>
*/
protected $guarded = [];
}

17
app/Models/UserModel.php Normal file
View File

@@ -0,0 +1,17 @@
<?php
namespace App\Models;
use App\BaseApp\BaseModel;
class UserModel extends BaseModel
{
protected $table = 'user';
/**
* The attributes that are mass assignable.
*
* @var list<string>
*/
protected $guarded = [];
}

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Models;
use App\BaseApp\BaseModel;
class UserReceivingAddressModel extends BaseModel
{
protected $table = 'user_receiving_address';
/**
* The attributes that are mass assignable.
*
* @var list<string>
*/
protected $guarded = [];
public function user()
{
return $this->hasOne(UserModel::class, 'id', 'user_id');
}
}

View File

@@ -3,19 +3,19 @@
namespace App\Service\CodeGeneration;
use App\BaseApp\BaseService;
use App\Models\StoreClassificationModel;
use App\Models\MallClassificationModel;
use Exception;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
class StoreClassificationService extends BaseService
class MallClassificationService extends BaseService
{
public function __construct()
{
parent::__construct();
$this->selectField = ["id", "name", "pid", "status", "created_at", "updated_at", "deleted_at"];
$this->queryField = ['name' => 'like','pid' => '=,status='];
$this->model = StoreClassificationModel::class;
$this->model = MallClassificationModel::class;
}
/**

View File

@@ -0,0 +1,87 @@
<?php
namespace App\Service\CodeGeneration;
use App\BaseApp\BaseService;
use App\Models\MallMembershipLevelModel;
use Exception;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
class MallMembershipLevelService extends BaseService
{
public function __construct()
{
parent::__construct();
$this->selectField = ["id", "name", "experience", "status", "created_at", "updated_at", "deleted_at"];
$this->queryField = ['name' => '=,status='];
$this->model = MallMembershipLevelModel::class;
}
/**
* 获取店铺会员等级列表
* @return array
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function list(): array
{
return $this->getPageList();
}
/**
* 获取店铺会员等级详情
* @param $id
* @return mixed
* @throws Exception
*/
public function detail($id)
{
return $this->getDetail($id);
}
/**
* 店铺会员等级下拉列表
* @return mixed
*/
public function option()
{
$this->optionField = ['id', 'name'];
return $this->getOption();
}
/**
* 创建店铺会员等级
* @param $params
* @return mixed
* @throws Exception
*/
public function create($params): mixed
{
return $this->insert($params);
}
/**
* 编辑店铺会员等级
* @param $id
* @param $params
* @return mixed
* @throws Exception
*/
public function update($id, $params): mixed
{
return $this->save($id, $params);
}
/**
* 删除店铺会员等级
* @param $ids
* @return mixed|true
* @throws Exception
*/
public function delete($ids): mixed
{
return $this->del($ids);
}
}

View File

@@ -3,19 +3,19 @@
namespace App\Service\CodeGeneration;
use App\BaseApp\BaseService;
use App\Models\StoreModel;
use App\Models\MallModel;
use Exception;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
class StoreService extends BaseService
class MallService extends BaseService
{
public function __construct()
{
parent::__construct();
$this->selectField = ["id", "name", "level", "avatar", "introduction", "classification_id", "description", "phone", "person", "id_card", "qr_code", "is_featured", "business_license", "id_card_portrait_side", "id_card_national_emblem_side", "chain", "business_suspended", "status", "created_at", "updated_at", "deleted_at"];
$this->queryField = ['name' => '=','level' => '=','phone' => 'like','person' => '=','classification_id' => '=','is_featured' => '=','chain' => '=','business_suspended' => '=,status='];
$this->model = StoreModel::class;
$this->model = MallModel::class;
}
/**

View File

@@ -0,0 +1,87 @@
<?php
namespace App\Service\CodeGeneration;
use App\BaseApp\BaseService;
use App\Models\OrderDetailModel;
use Exception;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
class OrderDetailService extends BaseService
{
public function __construct()
{
parent::__construct();
$this->selectField = ["id", "order_id", "product_id", "quantity", "price", "subtotal", "snapshot", "status", "created_at", "updated_at", "deleted_at"];
$this->queryField = ['order_id' => '=','product_id' => '=,status='];
$this->model = OrderDetailModel::class;
}
/**
* 获取订单详情列表
* @return array
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function list(): array
{
return $this->getPageList();
}
/**
* 获取订单详情详情
* @param $id
* @return mixed
* @throws Exception
*/
public function detail($id)
{
return $this->getDetail($id);
}
/**
* 订单详情下拉列表
* @return mixed
*/
public function option()
{
$this->optionField = ['id', 'name'];
return $this->getOption();
}
/**
* 创建订单详情
* @param $params
* @return mixed
* @throws Exception
*/
public function create($params): mixed
{
return $this->insert($params);
}
/**
* 编辑订单详情
* @param $id
* @param $params
* @return mixed
* @throws Exception
*/
public function update($id, $params): mixed
{
return $this->save($id, $params);
}
/**
* 删除订单详情
* @param $ids
* @return mixed|true
* @throws Exception
*/
public function delete($ids): mixed
{
return $this->del($ids);
}
}

View File

@@ -0,0 +1,87 @@
<?php
namespace App\Service\CodeGeneration;
use App\BaseApp\BaseService;
use App\Models\OrderModel;
use Exception;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
class OrderService extends BaseService
{
public function __construct()
{
parent::__construct();
$this->selectField = ["id", "user_id", "order_no", "order_status", "total_amount", "status", "created_at", "updated_at", "deleted_at"];
$this->queryField = ['user_id' => '=','order_no' => 'like','order_status' => '=,status='];
$this->model = OrderModel::class;
}
/**
* 获取订单管理列表
* @return array
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function list(): array
{
return $this->getPageList();
}
/**
* 获取订单管理详情
* @param $id
* @return mixed
* @throws Exception
*/
public function detail($id)
{
return $this->getDetail($id);
}
/**
* 订单管理下拉列表
* @return mixed
*/
public function option()
{
$this->optionField = ['id', 'name'];
return $this->getOption();
}
/**
* 创建订单管理
* @param $params
* @return mixed
* @throws Exception
*/
public function create($params): mixed
{
return $this->insert($params);
}
/**
* 编辑订单管理
* @param $id
* @param $params
* @return mixed
* @throws Exception
*/
public function update($id, $params): mixed
{
return $this->save($id, $params);
}
/**
* 删除订单管理
* @param $ids
* @return mixed|true
* @throws Exception
*/
public function delete($ids): mixed
{
return $this->del($ids);
}
}

View File

@@ -0,0 +1,87 @@
<?php
namespace App\Service\CodeGeneration;
use App\BaseApp\BaseService;
use App\Models\ProductLabelRelationsModel;
use Exception;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
class ProductLabelRelationsService extends BaseService
{
public function __construct()
{
parent::__construct();
$this->selectField = ["id", "product_id", "label_id", "status", "created_at", "updated_at", "deleted_at"];
$this->queryField = ['product_id' => '=','label_id' => '=,status='];
$this->model = ProductLabelRelationsModel::class;
}
/**
* 获取商品标签关联列表
* @return array
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function list(): array
{
return $this->getPageList();
}
/**
* 获取商品标签关联详情
* @param $id
* @return mixed
* @throws Exception
*/
public function detail($id)
{
return $this->getDetail($id);
}
/**
* 商品标签关联下拉列表
* @return mixed
*/
public function option()
{
$this->optionField = ['id', 'name'];
return $this->getOption();
}
/**
* 创建商品标签关联
* @param $params
* @return mixed
* @throws Exception
*/
public function create($params): mixed
{
return $this->insert($params);
}
/**
* 编辑商品标签关联
* @param $id
* @param $params
* @return mixed
* @throws Exception
*/
public function update($id, $params): mixed
{
return $this->save($id, $params);
}
/**
* 删除商品标签关联
* @param $ids
* @return mixed|true
* @throws Exception
*/
public function delete($ids): mixed
{
return $this->del($ids);
}
}

View File

@@ -4,6 +4,7 @@ namespace App\Service\CodeGeneration;
use App\BaseApp\BaseService;
use App\Models\ProductImageModel;
use App\Models\ProductLabelRelationsModel;
use App\Models\ProductModel;
use Exception;
use Illuminate\Support\Facades\DB;
@@ -19,7 +20,12 @@ class ProductService extends BaseService
$this->queryField = ['title' => 'like','mall_id' => '=','classification_id' => '=,status='];
$this->model = ProductModel::class;
$this->with = [
'images:id,product_id,url'
'images:id,product_id,url',
'mall:id,name,avatar',
'user:id,nick_name,avatar',
'labels',
'classification',
'skus:id,product_id,name,cover,price,inventory',
];
}
@@ -34,6 +40,8 @@ class ProductService extends BaseService
$result = $this->getPageList();
foreach ($result['items'] as &$v) {
$v['images'] = array_column($v['images'], 'url');
$v['labels_name'] = array_column($v['labels'], 'name');
$v['labels'] = array_column($v['labels'], 'id');
}
return $result;
}
@@ -46,7 +54,14 @@ class ProductService extends BaseService
*/
public function detail($id)
{
return $this->getDetail($id);
$result = $this->getDetail($id);
$result = $result->toArray();
$items = [];
foreach ($result['images'] as $v) {
$items[] = $v['url'];
}
$result['images'] = $items;
return $result;
}
/**
@@ -55,7 +70,7 @@ class ProductService extends BaseService
*/
public function option()
{
$this->optionField = ['id', 'name'];
$this->optionField = ['id', 'title'];
return $this->getOption();
}
@@ -68,8 +83,10 @@ class ProductService extends BaseService
public function create($params): mixed
{
$images = $params['images'];
unset($params['images']);
$labels = $params['labels'];
unset($params['images'], $params['labels']);
$params['user_id'] = $this->userId;
$params['mall_id'] = $this->mallId;
DB::beginTransaction();
try {
@@ -81,7 +98,20 @@ class ProductService extends BaseService
'url' => $v
];
}
$imageModel = ProductImageModel::insert($insertData);
$labelInsertData = [];
foreach ($labels as $v) {
$labelInsertData[] = [
'product_id' => $result,
'label_id' => $v
];
}
$labelModel = ProductLabelRelationsModel::insert($labelInsertData);
if (!$imageModel || !$labelModel) {
$this->utils->errorThrow('操作失败');
}
DB::commit();
} catch (Exception $e) {
DB::rollBack();
@@ -102,7 +132,8 @@ class ProductService extends BaseService
DB::beginTransaction();
try {
$images = $params['images'];
unset($params['images']);
$labels = $params['labels'];
unset($params['images'], $params['labels']);
// 1. 更新产品基本信息
$model = $this->save($id, $params);
@@ -139,6 +170,39 @@ class ProductService extends BaseService
}
}
// 3. 处理标签逻辑
if (isset($images)) {
$newLabels = $labels;
// 获取当前产品已有的图片URL列表
$existingLabels = ProductLabelRelationsModel::where('product_id', $id)
->pluck('label_id')
->toArray();
// 计算新增的图片和被删除的图片
$addedLabels = array_diff($newLabels, $existingLabels);
$deletedLabels = array_diff($existingLabels, $newLabels);
// 删除不再需要的图片记录
if (!empty($deletedLabels)) {
ProductLabelRelationsModel::where('product_id', $id)
->whereIn('label_id', $deletedLabels)
->delete();
}
// 添加新图片记录
if (!empty($addedLabels)) {
$insertData = [];
foreach ($addedLabels as $url) {
$insertData[] = [
'product_id' => $id,
'label_id' => $url
];
}
ProductLabelRelationsModel::insert($insertData);
}
}
DB::commit();
} catch (Exception $e) {
DB::rollBack();

View File

@@ -0,0 +1,90 @@
<?php
namespace App\Service\CodeGeneration;
use App\BaseApp\BaseService;
use App\Models\SkuModel;
use Exception;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
class SkuService extends BaseService
{
public function __construct()
{
parent::__construct();
$this->selectField = ["id", "product_id", "name", "cover", "inventory", "price", "status", "created_at", "updated_at", "deleted_at"];
$this->queryField = ['product_id' => '=,status='];
$this->model = SkuModel::class;
$this->with = [
'product:id,title'
];
}
/**
* 获取sku管理列表
* @return array
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function list(): array
{
return $this->getPageList();
}
/**
* 获取sku管理详情
* @param $id
* @return mixed
* @throws Exception
*/
public function detail($id)
{
return $this->getDetail($id);
}
/**
* sku管理下拉列表
* @return mixed
*/
public function option()
{
$this->optionField = ['id', 'name'];
return $this->getOption();
}
/**
* 创建sku管理
* @param $params
* @return mixed
* @throws Exception
*/
public function create($params): mixed
{
return $this->insert($params);
}
/**
* 编辑sku管理
* @param $id
* @param $params
* @return mixed
* @throws Exception
*/
public function update($id, $params): mixed
{
return $this->save($id, $params);
}
/**
* 删除sku管理
* @param $ids
* @return mixed|true
* @throws Exception
*/
public function delete($ids): mixed
{
return $this->del($ids);
}
}

View File

@@ -0,0 +1,91 @@
<?php
namespace App\Service\CodeGeneration;
use App\BaseApp\BaseService;
use App\Models\UserBrowsingHistoryModel;
use Exception;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
class UserBrowsingHistoryService extends BaseService
{
public function __construct()
{
parent::__construct();
$this->selectField = ["id", "user_id", "product_id", "status", "created_at", "updated_at", "deleted_at"];
$this->queryField = ['user_id' => '=','product_id' => '=,status='];
$this->model = UserBrowsingHistoryModel::class;
}
/**
* 获取用户浏览记录列表
* @return array
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function list(): array
{
$this->with = [
'user:id,nick_name,avatar',
'product'
];
return $this->getPageList();
}
/**
* 获取用户浏览记录详情
* @param $id
* @return mixed
* @throws Exception
*/
public function detail($id)
{
return $this->getDetail($id);
}
/**
* 用户浏览记录下拉列表
* @return mixed
*/
public function option()
{
$this->optionField = ['id', 'name'];
return $this->getOption();
}
/**
* 创建用户浏览记录
* @param $params
* @return mixed
* @throws Exception
*/
public function create($params): mixed
{
return $this->insert($params);
}
/**
* 编辑用户浏览记录
* @param $id
* @param $params
* @return mixed
* @throws Exception
*/
public function update($id, $params): mixed
{
return $this->save($id, $params);
}
/**
* 删除用户浏览记录
* @param $ids
* @return mixed|true
* @throws Exception
*/
public function delete($ids): mixed
{
return $this->del($ids);
}
}

View File

@@ -0,0 +1,91 @@
<?php
namespace App\Service\CodeGeneration;
use App\BaseApp\BaseService;
use App\Models\UserCollectModel;
use Exception;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
class UserCollectService extends BaseService
{
public function __construct()
{
parent::__construct();
$this->selectField = ["id", "user_id", "product_id", "status", "created_at", "updated_at", "deleted_at"];
$this->queryField = ['user_id' => '=','product_id' => '=,status='];
$this->model = UserCollectModel::class;
}
/**
* 获取用户收藏列表
* @return array
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function list(): array
{
$this->with = [
'user:id,nick_name,avatar',
'product'
];
return $this->getPageList();
}
/**
* 获取用户收藏详情
* @param $id
* @return mixed
* @throws Exception
*/
public function detail($id)
{
return $this->getDetail($id);
}
/**
* 用户收藏下拉列表
* @return mixed
*/
public function option()
{
$this->optionField = ['id', 'name'];
return $this->getOption();
}
/**
* 创建用户收藏
* @param $params
* @return mixed
* @throws Exception
*/
public function create($params): mixed
{
return $this->insert($params);
}
/**
* 编辑用户收藏
* @param $id
* @param $params
* @return mixed
* @throws Exception
*/
public function update($id, $params): mixed
{
return $this->save($id, $params);
}
/**
* 删除用户收藏
* @param $ids
* @return mixed|true
* @throws Exception
*/
public function delete($ids): mixed
{
return $this->del($ids);
}
}

View File

@@ -0,0 +1,87 @@
<?php
namespace App\Service\CodeGeneration;
use App\BaseApp\BaseService;
use App\Models\UserMembershipModel;
use Exception;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
class UserMembershipService extends BaseService
{
public function __construct()
{
parent::__construct();
$this->selectField = ["id", "name", "experience", "status", "created_at", "updated_at", "deleted_at"];
$this->queryField = ['name' => '=,status='];
$this->model = UserMembershipModel::class;
}
/**
* 获取用户会员列表
* @return array
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function list(): array
{
return $this->getPageList();
}
/**
* 获取用户会员详情
* @param $id
* @return mixed
* @throws Exception
*/
public function detail($id)
{
return $this->getDetail($id);
}
/**
* 用户会员下拉列表
* @return mixed
*/
public function option()
{
$this->optionField = ['id', 'name'];
return $this->getOption();
}
/**
* 创建用户会员
* @param $params
* @return mixed
* @throws Exception
*/
public function create($params): mixed
{
return $this->insert($params);
}
/**
* 编辑用户会员
* @param $id
* @param $params
* @return mixed
* @throws Exception
*/
public function update($id, $params): mixed
{
return $this->save($id, $params);
}
/**
* 删除用户会员
* @param $ids
* @return mixed|true
* @throws Exception
*/
public function delete($ids): mixed
{
return $this->del($ids);
}
}

View File

@@ -0,0 +1,87 @@
<?php
namespace App\Service\CodeGeneration;
use App\BaseApp\BaseService;
use App\Models\UserReceivingAddressModel;
use Exception;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
class UserReceivingAddressService extends BaseService
{
public function __construct()
{
parent::__construct();
$this->selectField = ["id", "user_id", "province", "city", "district", "detailed_address", "complete_address", "status", "created_at", "updated_at", "deleted_at"];
$this->queryField = ['user_id' => '=','province' => '=','city' => '=','district' => '=','detailed_address' => '=','complete_address' => '=,status='];
$this->model = UserReceivingAddressModel::class;
}
/**
* 获取用户收货地址列表
* @return array
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function list(): array
{
return $this->getPageList();
}
/**
* 获取用户收货地址详情
* @param $id
* @return mixed
* @throws Exception
*/
public function detail($id)
{
return $this->getDetail($id);
}
/**
* 用户收货地址下拉列表
* @return mixed
*/
public function option()
{
$this->optionField = ['id', 'name'];
return $this->getOption();
}
/**
* 创建用户收货地址
* @param $params
* @return mixed
* @throws Exception
*/
public function create($params): mixed
{
return $this->insert($params);
}
/**
* 编辑用户收货地址
* @param $id
* @param $params
* @return mixed
* @throws Exception
*/
public function update($id, $params): mixed
{
return $this->save($id, $params);
}
/**
* 删除用户收货地址
* @param $ids
* @return mixed|true
* @throws Exception
*/
public function delete($ids): mixed
{
return $this->del($ids);
}
}

View File

@@ -0,0 +1,88 @@
<?php
namespace App\Service\CodeGeneration;
use App\BaseApp\BaseService;
use App\Models\UserModel;
use Exception;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
class UserService extends BaseService
{
public function __construct()
{
parent::__construct();
$this->selectField = ["id", "open_id", "nick_name", "phone", "email", "level", "balance", "avatar", "integral", "wx_open_id", "zfb_open_id", "status", "created_at", "updated_at", "deleted_at"];
$this->queryField = ['open_id' => '=','nick_name' => 'like','phone' => '=','email' => '=','level' => '=,status='];
$this->model = UserModel::class;
}
/**
* 获取用户列表
* @return array
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function list(): array
{
return $this->getPageList();
}
/**
* 获取用户详情
* @param $id
* @return mixed
* @throws Exception
*/
public function detail($id)
{
return $this->getDetail($id);
}
/**
* 用户下拉列表
* @return mixed
*/
public function option()
{
$this->optionField = ['id', 'name'];
return $this->getOption();
}
/**
* 创建用户
* @param $params
* @return mixed
* @throws Exception
*/
public function create($params): mixed
{
$params['open_id'] = $this->utils->genOpenId();
return $this->insert($params);
}
/**
* 编辑用户
* @param $id
* @param $params
* @return mixed
* @throws Exception
*/
public function update($id, $params): mixed
{
return $this->save($id, $params);
}
/**
* 删除用户
* @param $ids
* @return mixed|true
* @throws Exception
*/
public function delete($ids): mixed
{
return $this->del($ids);
}
}

View File

@@ -55,6 +55,7 @@ class LoginService extends BaseNotAuthService
'avatar' => $userModel->avatar,
'email' => $userModel->email,
'role_id' => $userModel->role_id,
'mall_id' => $userModel->mall_id,
'role_name' => $userModel->role->name,
'role_value' => $userModel->role->value,
'ip' => $userModel->ip,

View File

@@ -15,7 +15,9 @@ class CodeGenerationService
{
const TEXT_TYPE = [
'LONGTEXT',
'TEXT'
'TEXT',
'longtext',
'text',
];
const INT_TYPE = [
'INT',
@@ -23,6 +25,13 @@ class CodeGenerationService
'BIGINT',
'SMALLINT',
'FLOAT',
'DECIMAL',
'int',
'tinyint',
'bigint',
'smallint',
'float',
'decimal',
];
private static mixed $_instance;
@@ -140,6 +149,8 @@ class CodeGenerationService
'created_at' => time(),
'updated_at' => time(),
]);
// 删除Store/app/www
Storage::deleteDirectory('www');
return [
'id' => $insertModel->id,
'file_name' => $insertModel->file_name

View File

@@ -14,7 +14,7 @@
<div class="mb-6 flex flex-col md:flex-row justify-between items-start md:items-center space-y-4 md:space-y-0">
<div class="flex flex-wrap gap-2">
<button class="view-toggle-btn active px-4 py-2 rounded-lg bg-primary text-white font-medium transition-all duration-200" data-view="all">
<i class="fa fa-list-ul mr-1"></i>全部路由
<i class="fa fa-list-ul mr-1"></i>全部路由 {{ count($routes) }}
</button>
<button class="view-toggle-btn px-4 py-2 rounded-lg bg-gray-100 text-gray-700 font-medium transition-all duration-200 hover:bg-gray-200" data-view="groups">
<i class="fa fa-th-large mr-1"></i>分组视图

View File

@@ -27,17 +27,24 @@ Route::group([], function () {
'role' => \App\Http\Controllers\Api\RoleController::class, // 角色管理
'menu' => \App\Http\Controllers\Api\MenuController::class, // 菜单管理
'upload' => \App\Http\Controllers\Api\UploadController::class, // 上传文件
'product' => \App\Http\Controllers\Api\CodeGeneration\ProductController::class, // 产品
'product' => \App\Http\Controllers\Api\CodeGeneration\ProductController::class, // 产品
'product' => \App\Http\Controllers\Api\CodeGeneration\ProductController::class, // 产品
'product' => \App\Http\Controllers\Api\CodeGeneration\ProductController::class, // 产品
'product' => \App\Http\Controllers\Api\CodeGeneration\ProductController::class, // 产品
'product-classification' => \App\Http\Controllers\Api\CodeGeneration\ProductClassificationController::class, // 商品分类
'product-classification' => \App\Http\Controllers\Api\CodeGeneration\ProductClassificationController::class, // 商品分类
'product-label' => \App\Http\Controllers\Api\CodeGeneration\ProductLabelController::class, // 商品标签
'product-image' => \App\Http\Controllers\Api\CodeGeneration\ProductImageController::class, // 商品图片
'store' => \App\Http\Controllers\Api\CodeGeneration\StoreController::class, // 店铺管理
'store-classification' => \App\Http\Controllers\Api\CodeGeneration\StoreClassificationController::class, // 店铺行业
'product' => \App\Http\Controllers\Api\CodeGeneration\ProductController::class, // 产品
'product-classification' => \App\Http\Controllers\Api\CodeGeneration\ProductClassificationController::class, // 商品分类
'product-label' => \App\Http\Controllers\Api\CodeGeneration\ProductLabelController::class, // 商品标签
'product-image' => \App\Http\Controllers\Api\CodeGeneration\ProductImageController::class, // 商品图片
'mall' => \App\Http\Controllers\Api\CodeGeneration\MallController::class, // 店铺管理
'mall-classification' => \App\Http\Controllers\Api\CodeGeneration\MallClassificationController::class, // 店铺行业
'mall-membership-level' => \App\Http\Controllers\Api\CodeGeneration\MallMembershipLevelController::class, // 店铺会员等级
'user-membership' => \App\Http\Controllers\Api\CodeGeneration\UserMembershipController::class, // 用户会员
'user' => \App\Http\Controllers\Api\CodeGeneration\UserController::class, // 用户
'user-receiving-address' => \App\Http\Controllers\Api\CodeGeneration\UserReceivingAddressController::class, // 用户收货地址
'user-collect' => \App\Http\Controllers\Api\CodeGeneration\UserCollectController::class, // 用户收藏
'user-browsing-history' => \App\Http\Controllers\Api\CodeGeneration\UserBrowsingHistoryController::class, // 用户浏览记录
'product-label-relations' => \App\Http\Controllers\Api\CodeGeneration\ProductLabelRelationsController::class, // 商品标签关联
'order' => \App\Http\Controllers\Api\CodeGeneration\OrderController::class, // 订单管理
'order-detail' => \App\Http\Controllers\Api\CodeGeneration\OrderDetailController::class, // 订单详情
'order-detail' => \App\Http\Controllers\Api\CodeGeneration\OrderDetailController::class, // 订单详情
'order-detail' => \App\Http\Controllers\Api\CodeGeneration\OrderDetailController::class, // 订单详情
'sku' => \App\Http\Controllers\Api\CodeGeneration\SkuController::class, // sku管理
// 需要登录的路由生成地址
]);
});

View File

@@ -1,17 +1,17 @@
/*
Navicat Premium Dump SQL
Source Server : 测试库
Source Server : 开发库(本地)
Source Server Type : MySQL
Source Server Version : 80404 (8.4.4)
Source Host : 101.43.12.11:3306
Source Host : localhost:3310
Source Schema : nl_mall
Target Server Type : MySQL
Target Server Version : 80404 (8.4.4)
File Encoding : 65001
Date: 19/05/2025 16:52:55
Date: 20/05/2025 16:52:01
*/
SET NAMES utf8mb4;
@@ -29,6 +29,7 @@ CREATE TABLE `nl_admin` (
`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '密码',
`phone` char(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户手机',
`email` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户邮箱',
`mall_id` int NOT NULL DEFAULT 0 COMMENT '商家ID',
`code` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '业务员推广码',
`role_id` int NOT NULL DEFAULT 0 COMMENT '角色',
`province_id` int NOT NULL DEFAULT 0 COMMENT '',
@@ -49,7 +50,7 @@ CREATE TABLE `nl_admin` (
-- ----------------------------
-- Records of nl_admin
-- ----------------------------
INSERT INTO `nl_admin` VALUES (1, 'nl_28686ad68682180e26836c721a52', '', '超管', '$2y$12$sMgspfujo/5qnMEFvXH2d.0hYq/7PXhkJREYHbc..4WKt5LH7M8ui', '15100000000', 'workerqi@163.com', '517117', 1, 0, 0, 0, 0, '127.0.0.1', '[\"127.0.0.1\"]', '0', '', 1, 0, 1747026536, 0);
INSERT INTO `nl_admin` VALUES (1, 'nl_28686ad68682180e26836c721a52', 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_4pmS6Hl01KSpNsR1682c0ca9c19c2.jpg', '超管', '$2y$12$sMgspfujo/5qnMEFvXH2d.0hYq/7PXhkJREYHbc..4WKt5LH7M8ui', '15100000000', 'workerqi@163.com', 1, '517117', 1, 0, 0, 0, 0, '127.0.0.1', '[\"127.0.0.1\"]', '0', '', 1, 0, 1747026536, 0);
-- ----------------------------
-- Table structure for nl_admin_notice
@@ -115,7 +116,7 @@ CREATE TABLE `nl_code_generation` (
`updated_at` int NOT NULL DEFAULT 0 COMMENT '更新时间',
`deleted_at` int NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '代码生成记录' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 17 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '代码生成记录' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of nl_code_generation
@@ -124,6 +125,18 @@ INSERT INTO `nl_code_generation` VALUES (1, '产品', '产品-68245521ec6da.zip'
INSERT INTO `nl_code_generation` VALUES (2, '商品分类', '商品分类-68245705d2a02.zip', '/www/sites/nl-mall/index/nl-admin-api/storage/app/public/zip/code-generation/商品分类-68245705d2a02.zip', '{\"class_name\":\"productClassification\",\"class_comment\":\"\\u5546\\u54c1\\u5206\\u7c7b\",\"sort\":50,\"icon\":\"carbon:data-class\",\"pid\":10,\"field\":[{\"name\":\"name\",\"type\":\"varchar\",\"type_length\":\"32\",\"default\":null,\"comment\":\"\\u5206\\u7c7b\\u540d\\u79f0\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"like\"},{\"name\":\"cover\",\"type\":\"varchar\",\"type_length\":\"255\",\"default\":null,\"comment\":\"\\u5206\\u7c7b\\u56fe\\u7247\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":false,\"searchValue\":\"=\"},{\"name\":\"pid\",\"type\":\"INT\",\"type_length\":\"11\",\"default\":null,\"comment\":\"\\u7236\\u7ea7\\u5206\\u7c7b\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"=\"}]}', 1747212037, 1747212037, 0);
INSERT INTO `nl_code_generation` VALUES (3, '商品标签', '商品标签-68245ad6a3ba6.zip', '/www/sites/nl-mall/index/nl-admin-api/storage/app/public/zip/code-generation/商品标签-68245ad6a3ba6.zip', '{\"class_name\":\"productLabel\",\"class_comment\":\"\\u5546\\u54c1\\u6807\\u7b7e\",\"sort\":60,\"icon\":\"fluent-emoji:label\",\"pid\":10,\"field\":[{\"name\":\"name\",\"type\":\"varchar\",\"type_length\":\"255\",\"default\":null,\"comment\":\"\\u6807\\u7b7e\\u540d\\u79f0\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"=\"}]}', 1747213014, 1747213014, 0);
INSERT INTO `nl_code_generation` VALUES (4, '商品图片', '商品图片-682a7abf8d587.zip', '/www/sites/nl-mall/index/nl-mall-api/storage/app/public/zip/code-generation/商品图片-682a7abf8d587.zip', '{\"class_name\":\"productImage\",\"class_comment\":\"\\u5546\\u54c1\\u56fe\\u7247\",\"sort\":100,\"icon\":\"catppuccin:image\",\"pid\":10,\"field\":[{\"name\":\"url\",\"type\":\"varchar\",\"type_length\":\"255\",\"default\":null,\"comment\":\"\\u5546\\u54c1\\u5730\\u5740\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"Avatar\",\"search\":true,\"searchValue\":\"like\"},{\"name\":\"product_id\",\"type\":\"INT\",\"type_length\":\"11\",\"default\":\"0\",\"comment\":\"\\u5546\\u54c1ID\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"=\"}]}', 1747614399, 1747614399, 0);
INSERT INTO `nl_code_generation` VALUES (5, '店铺管理', '店铺管理-682a91ea747cf.zip', '/www/sites/nl-mall/index/nl-mall-api/storage/app/public/zip/code-generation/店铺管理-682a91ea747cf.zip', '{\"class_name\":\"mall\",\"class_comment\":\"\\u5e97\\u94fa\\u7ba1\\u7406\",\"sort\":1,\"icon\":\"ion:mallfront-sharp\",\"pid\":15,\"field\":[{\"name\":\"name\",\"type\":\"varchar\",\"type_length\":\"64\",\"default\":null,\"comment\":\"\\u5e97\\u94fa\\u540d\\u79f0\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"=\"},{\"name\":\"level\",\"type\":\"INT\",\"type_length\":\"11\",\"default\":\"0\",\"comment\":\"\\u5e97\\u94fa\\u7b49\\u7ea7\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"InputNumber\",\"search\":true,\"searchValue\":\"=\"},{\"name\":\"avatar\",\"type\":\"varchar\",\"type_length\":\"255\",\"default\":null,\"comment\":\"\\u5e97\\u94fa\\u5934\\u50cf\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"Avatar\",\"search\":false,\"searchValue\":\"=\"},{\"name\":\"introduction\",\"type\":\"varchar\",\"type_length\":\"255\",\"default\":null,\"comment\":\"\\u5e97\\u94fa\\u7b80\\u4ecb\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"Textarea\",\"search\":false,\"searchValue\":\"=\"},{\"name\":\"description\",\"type\":\"TEXT\",\"type_length\":null,\"default\":null,\"comment\":\"\\u8be6\\u7ec6\\u4ecb\\u7ecd\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"Textarea\",\"search\":false,\"searchValue\":\"=\",\"null\":true},{\"name\":\"phone\",\"type\":\"varchar\",\"type_length\":\"11\",\"default\":null,\"comment\":\"\\u5546\\u5bb6\\u7535\\u8bdd\\u53f7\\u7801\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"like\"},{\"name\":\"person\",\"type\":\"varchar\",\"type_length\":\"32\",\"default\":null,\"comment\":\"\\u8054\\u7cfb\\u4eba\\u540d\\u79f0\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"=\"},{\"name\":\"id_card\",\"type\":\"varchar\",\"type_length\":\"18\",\"default\":null,\"comment\":\"\\u8eab\\u4efd\\u8bc1\\u53f7\\u7801\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":false,\"searchValue\":\"=\"},{\"name\":\"qr_code\",\"type\":\"varchar\",\"type_length\":\"255\",\"default\":null,\"comment\":\"\\u5e97\\u94fa\\u4e8c\\u7ef4\\u7801\",\"not_null\":true,\"formShow\":false,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":false,\"searchValue\":\"=\"},{\"name\":\"is_featured\",\"type\":\"TINYINT\",\"type_length\":\"1\",\"default\":\"0\",\"comment\":\"\\u662f\\u5426\\u4e3a\\u63a8\\u8350\\u5e97\\u94fa\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenSelect\",\"search\":true,\"searchValue\":\"=\"},{\"name\":\"business_license\",\"type\":\"varchar\",\"type_length\":\"255\",\"default\":null,\"comment\":\"\\u8425\\u4e1a\\u6267\\u7167\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"Avatar\",\"search\":false,\"searchValue\":\"=\"},{\"name\":\"id_card_portrait_side\",\"type\":\"varchar\",\"type_length\":\"255\",\"default\":null,\"comment\":\"\\u8eab\\u4efd\\u8bc1\\u4eba\\u9762\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"Avatar\",\"search\":false,\"searchValue\":\"=\"},{\"name\":\"id_card_national_emblem_side\",\"type\":\"varchar\",\"type_length\":\"255\",\"default\":null,\"comment\":\"\\u8eab\\u4efd\\u8bc1\\u56fd\\u5fbd\\u9762\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"Avatar\",\"search\":false,\"searchValue\":\"=\"},{\"name\":\"chain\",\"type\":\"TINYINT\",\"type_length\":\"1\",\"default\":\"0\",\"comment\":\"\\u662f\\u5426\\u8fde\\u9501\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenSelect\",\"search\":true,\"searchValue\":\"=\"},{\"name\":\"business_suspended\",\"type\":\"TINYINT\",\"type_length\":\"1\",\"default\":\"0\",\"comment\":\"\\u662f\\u5426\\u6682\\u505c\\u8425\\u4e1a\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenSelect\",\"search\":true,\"searchValue\":\"=\"}]}', 1747620330, 1747620330, 0);
INSERT INTO `nl_code_generation` VALUES (6, '店铺行业', '店铺行业-682a9e9e66e3c.zip', '/www/sites/nl-mall/index/nl-mall-api/storage/app/public/zip/code-generation/店铺行业-682a9e9e66e3c.zip', '{\"class_name\":\"mallClassification\",\"class_comment\":\"\\u5e97\\u94fa\\u884c\\u4e1a\",\"sort\":20,\"icon\":\"fluent:classification-20-filled\",\"pid\":15,\"field\":[{\"name\":\"name\",\"type\":\"varchar\",\"type_length\":\"64\",\"default\":null,\"comment\":\"\\u884c\\u4e1a\\u540d\\u79f0\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"like\"},{\"name\":\"pid\",\"type\":\"INT\",\"type_length\":\"11\",\"default\":\"0\",\"comment\":\"\\u7236\\u7ea7ID\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"=\"}]}', 1747623582, 1747623582, 0);
INSERT INTO `nl_code_generation` VALUES (7, '店铺会员等级', '店铺会员等级-682bca2f4a191.zip', '/www/sites/nl-mall/index/nl-mall-api/storage/app/public/zip/code-generation/店铺会员等级-682bca2f4a191.zip', '{\"class_name\":\"mallMembershipLevel\",\"class_comment\":\"\\u5e97\\u94fa\\u4f1a\\u5458\\u7b49\\u7ea7\",\"sort\":150,\"icon\":\"lsicon:vip-filled\",\"pid\":15,\"field\":[{\"name\":\"name\",\"type\":\"varchar\",\"type_length\":\"32\",\"default\":null,\"comment\":\"\\u7b49\\u7ea7\\u540d\\u79f0\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"=\"},{\"name\":\"experience\",\"type\":\"INT\",\"type_length\":\"11\",\"default\":null,\"comment\":\"\\u5347\\u7ea7\\u6240\\u9700\\u7ecf\\u9a8c\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"InputNumber\",\"search\":false,\"searchValue\":\"=\"}]}', 1747700271, 1747700271, 0);
INSERT INTO `nl_code_generation` VALUES (8, '用户会员', '用户会员-682bcc0968eba.zip', '/www/sites/nl-mall/index/nl-mall-api/storage/app/public/zip/code-generation/用户会员-682bcc0968eba.zip', '{\"class_name\":\"userMembership\",\"class_comment\":\"\\u7528\\u6237\\u4f1a\\u5458\",\"sort\":300,\"icon\":\"lsicon:vip-outline\",\"pid\":19,\"field\":[{\"name\":\"name\",\"type\":\"varchar\",\"type_length\":\"32\",\"default\":null,\"comment\":\"\\u4f1a\\u5458\\u7b49\\u7ea7\\u8bf4\\u660e\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"=\"},{\"name\":\"experience\",\"type\":\"INT\",\"type_length\":\"11\",\"default\":null,\"comment\":\"\\u5347\\u7ea7\\u6240\\u9700\\u7ecf\\u9a8c\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"InputNumber\",\"search\":false,\"searchValue\":\"=\"}]}', 1747700745, 1747700745, 0);
INSERT INTO `nl_code_generation` VALUES (9, '用户', '用户-682bcfd6ce602.zip', '/www/sites/nl-mall/index/nl-mall-api/storage/app/public/zip/code-generation/用户-682bcfd6ce602.zip', '{\"class_name\":\"user\",\"class_comment\":\"\\u7528\\u6237\",\"sort\":10,\"icon\":\"qlementine-icons:user-24\",\"pid\":19,\"field\":[{\"name\":\"open_id\",\"type\":\"varchar\",\"type_length\":\"255\",\"default\":null,\"comment\":\"\\u5e73\\u53f0OpenId\",\"not_null\":true,\"formShow\":false,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"=\"},{\"name\":\"nick_avatar\",\"type\":\"varchar\",\"type_length\":\"32\",\"default\":null,\"comment\":\"\\u7528\\u6237\\u6635\\u79f0\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"like\"},{\"name\":\"phone\",\"type\":\"CHAR\",\"type_length\":\"11\",\"default\":null,\"comment\":\"\\u624b\\u673a\\u53f7\\u7801\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"=\"},{\"name\":\"email\",\"type\":\"varchar\",\"type_length\":\"64\",\"default\":null,\"comment\":\"\\u90ae\\u7bb1\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"=\"},{\"name\":\"level\",\"type\":\"INT\",\"type_length\":\"11\",\"default\":null,\"comment\":\"\\u7528\\u6237\\u4f1a\\u5458\\u7b49\\u7ea7\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"InputNumber\",\"search\":true,\"searchValue\":\"=\"},{\"name\":\"balance\",\"type\":\"DECIMAL\",\"type_length\":\"10,2\",\"default\":\"0\",\"comment\":\"\\u7528\\u6237\\u4f59\\u989d\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"InputNumber\",\"search\":false,\"searchValue\":\"=\"},{\"name\":\"avatar\",\"type\":\"varchar\",\"type_length\":\"255\",\"default\":null,\"comment\":\"\\u7528\\u6237\\u5934\\u50cf\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"Avatar\",\"search\":false,\"searchValue\":\"=\"},{\"name\":\"Integral\",\"type\":\"INT\",\"type_length\":\"11\",\"default\":null,\"comment\":\"\\u79ef\\u5206\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"InputNumber\",\"search\":false,\"searchValue\":\"=\"},{\"name\":\"wx_open_id\",\"type\":\"varchar\",\"type_length\":\"255\",\"default\":null,\"comment\":\"\\u5fae\\u4fe1\\u5c0f\\u7a0b\\u5e8f\\u552f\\u4e00\\u6807\\u8bc6\",\"not_null\":true,\"formShow\":false,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":false,\"searchValue\":\"=\"},{\"name\":\"zfb_open_id\",\"type\":\"varchar\",\"type_length\":\"255\",\"default\":null,\"comment\":\"\\u652f\\u4ed8\\u5b9d\\u5c0f\\u7a0b\\u5e8f\\u552f\\u4e00\\u6807\\u8bc6\",\"not_null\":true,\"formShow\":false,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":false,\"searchValue\":\"=\"}]}', 1747701718, 1747701718, 0);
INSERT INTO `nl_code_generation` VALUES (10, '用户收货地址', '用户收货地址-682bd11fd7252.zip', '/www/sites/nl-mall/index/nl-mall-api/storage/app/public/zip/code-generation/用户收货地址-682bd11fd7252.zip', '{\"class_name\":\"userReceivingAddress\",\"class_comment\":\"\\u7528\\u6237\\u6536\\u8d27\\u5730\\u5740\",\"sort\":200,\"icon\":\"mdi:address-marker\",\"pid\":19,\"field\":[{\"name\":\"user_id\",\"type\":\"INT\",\"type_length\":\"11\",\"default\":null,\"comment\":\"\\u7528\\u6237\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"=\"},{\"name\":\"province\",\"type\":\"INT\",\"type_length\":\"11\",\"default\":null,\"comment\":\"\\u7701\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"InputNumber\",\"search\":true,\"searchValue\":\"=\"},{\"name\":\"city\",\"type\":\"INT\",\"type_length\":\"11\",\"default\":null,\"comment\":\"\\u5e02\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"InputNumber\",\"search\":true,\"searchValue\":\"=\"},{\"name\":\"district\",\"type\":\"INT\",\"type_length\":\"11\",\"default\":null,\"comment\":\"\\u533a\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"InputNumber\",\"search\":true,\"searchValue\":\"=\"},{\"name\":\"detailed_address\",\"type\":\"varchar\",\"type_length\":\"255\",\"default\":null,\"comment\":\"\\u8be6\\u7ec6\\u5730\\u5740\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"Textarea\",\"search\":true,\"searchValue\":\"=\"},{\"name\":\"complete_address\",\"type\":\"varchar\",\"type_length\":\"500\",\"default\":null,\"comment\":\"\\u5b8c\\u6574\\u5730\\u5740\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"=\"}]}', 1747702047, 1747702047, 0);
INSERT INTO `nl_code_generation` VALUES (11, '用户收藏', '用户收藏-682bdb8ce8fba.zip', '/www/sites/nl-mall/index/nl-mall-api/storage/app/public/zip/code-generation/用户收藏-682bdb8ce8fba.zip', '{\"class_name\":\"userCollect\",\"class_comment\":\"\\u7528\\u6237\\u6536\\u85cf\",\"sort\":500,\"icon\":\"ic:round-stars\",\"pid\":19,\"field\":[{\"name\":\"user_id\",\"type\":\"int\",\"type_length\":\"11\",\"default\":\"0\",\"comment\":\"\\u7528\\u6237\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"=\"},{\"name\":\"product_id\",\"type\":\"int\",\"type_length\":\"11\",\"default\":\"0\",\"comment\":\"\\u5546\\u54c1id\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"=\"}]}', 1747704717, 1747704717, 0);
INSERT INTO `nl_code_generation` VALUES (12, '用户浏览记录', '用户浏览记录-682bdc2db4c0a.zip', '/www/sites/nl-mall/index/nl-mall-api/storage/app/public/zip/code-generation/用户浏览记录-682bdc2db4c0a.zip', '{\"class_name\":\"userBrowsingHistory\",\"class_comment\":\"\\u7528\\u6237\\u6d4f\\u89c8\\u8bb0\\u5f55\",\"sort\":550,\"icon\":\"fluent-color:history-20\",\"pid\":19,\"field\":[{\"name\":\"user_id\",\"type\":\"INT\",\"type_length\":\"11\",\"default\":\"0\",\"comment\":\"\\u7528\\u6237\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"=\"},{\"name\":\"product_id\",\"type\":\"int\",\"type_length\":\"11\",\"default\":\"0\",\"comment\":\"\\u5546\\u54c1id\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"=\"}]}', 1747704877, 1747704877, 0);
INSERT INTO `nl_code_generation` VALUES (13, '商品标签关联', '商品标签关联-682c136c52d50.zip', '/www/sites/nl-mall/index/nl-mall-api/storage/app/public/zip/code-generation/商品标签关联-682c136c52d50.zip', '{\"class_name\":\"product_label_relations\",\"class_comment\":\"\\u5546\\u54c1\\u6807\\u7b7e\\u5173\\u8054\",\"sort\":9999,\"icon\":\"ant-design:tags-outlined\",\"pid\":10,\"field\":[{\"name\":\"product_id\",\"type\":\"int\",\"type_length\":\"11\",\"default\":\"0\",\"comment\":\"\\u5546\\u54c1\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"=\"},{\"name\":\"label_id\",\"type\":\"INT\",\"type_length\":\"11\",\"default\":\"0\",\"comment\":\"\\u6807\\u7b7e\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"=\"}]}', 1747719020, 1747719020, 0);
INSERT INTO `nl_code_generation` VALUES (14, '订单管理', '订单管理-682c2ccc22ad7.zip', '/www/sites/nl-mall/index/nl-mall-api/storage/app/public/zip/code-generation/订单管理-682c2ccc22ad7.zip', '{\"class_name\":\"order\",\"class_comment\":\"\\u8ba2\\u5355\\u7ba1\\u7406\",\"sort\":9999,\"icon\":\"lets-icons:order\",\"pid\":26,\"field\":[{\"name\":\"user_id\",\"type\":\"int\",\"type_length\":\"11\",\"default\":\"0\",\"comment\":\"\\u7528\\u6237ID\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"=\"},{\"name\":\"order_no\",\"type\":\"varchar\",\"type_length\":\"50\",\"default\":null,\"comment\":\"\\u8ba2\\u5355\\u7f16\\u53f7\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"like\"},{\"name\":\"order_status\",\"type\":\"tinyint\",\"type_length\":\"4\",\"default\":\"0\",\"comment\":\"\\u8ba2\\u5355\\u72b6\\u6001\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenSelect\",\"search\":true,\"searchValue\":\"=\"},{\"name\":\"total_amount\",\"type\":\"decimal\",\"type_length\":\"10,2\",\"default\":\"0.00\",\"comment\":\"\\u8ba2\\u5355\\u603b\\u91d1\\u989d\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInputNumber\",\"search\":false,\"searchValue\":\"=\"}]}', 1747725516, 1747725516, 0);
INSERT INTO `nl_code_generation` VALUES (15, '订单详情', '订单详情-682c2f52eb1df.zip', '/www/sites/nl-mall/index/nl-mall-api/storage/app/public/zip/code-generation/订单详情-682c2f52eb1df.zip', '{\"class_name\":\"orderDetail\",\"class_comment\":\"\\u8ba2\\u5355\\u8be6\\u60c5\",\"sort\":9999,\"icon\":\"raphael:package\",\"pid\":26,\"field\":[{\"name\":\"order_id\",\"type\":\"int\",\"type_length\":\"11\",\"default\":\"0\",\"comment\":\"\\u8ba2\\u5355ID\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"=\"},{\"name\":\"product_id\",\"type\":\"int\",\"type_length\":\"11\",\"default\":\"0\",\"comment\":\"\\u5546\\u54c1ID\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"=\"},{\"name\":\"quantity\",\"type\":\"int\",\"type_length\":\"11\",\"default\":\"0\",\"comment\":\"\\u5546\\u54c1\\u6570\\u91cf\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInputNumber\",\"search\":false,\"searchValue\":\"=\"},{\"name\":\"price\",\"type\":\"decimal\",\"type_length\":\"10,2\",\"default\":\"0.00\",\"comment\":\"\\u5546\\u54c1\\u5355\\u4ef7\",\"not_null\":true,\"formShow\":false,\"tableShow\":true,\"formType\":\"VbenInputNumber\",\"search\":false,\"searchValue\":\"=\"},{\"name\":\"subtotal\",\"type\":\"decimal\",\"type_length\":\"10,2\",\"default\":\"0.00\",\"comment\":\"\\u5c0f\\u8ba1\\u91d1\\u989d\",\"not_null\":false,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInputNumber\",\"search\":false,\"searchValue\":\"=\"},{\"name\":\"snapshot\",\"type\":\"text\",\"type_length\":null,\"default\":null,\"comment\":\"\\u5546\\u54c1\\u5feb\\u7167\",\"not_null\":false,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":false,\"searchValue\":\"=\",\"null\":true}]}', 1747726163, 1747726163, 0);
INSERT INTO `nl_code_generation` VALUES (16, 'sku管理', 'sku管理-682c37e642fa0.zip', '/www/sites/nl-mall/index/nl-mall-api/storage/app/public/zip/code-generation/sku管理-682c37e642fa0.zip', '{\"class_name\":\"sku\",\"class_comment\":\"sku\\u7ba1\\u7406\",\"sort\":600,\"icon\":\"octicon:ai-model-16\",\"pid\":10,\"field\":[{\"name\":\"product_id\",\"type\":\"int\",\"type_length\":\"11\",\"default\":\"0\",\"comment\":\"\\u5546\\u54c1ID\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":true,\"searchValue\":\"=\"},{\"name\":\"cover\",\"type\":\"varchar\",\"type_length\":\"255\",\"default\":null,\"comment\":\"sku\\u56fe\\u7247\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":false,\"searchValue\":\"=\"},{\"name\":\"inventory\",\"type\":\"int\",\"type_length\":\"11\",\"default\":\"0\",\"comment\":\"\\u5546\\u54c1\\u5e93\\u5b58\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":false,\"searchValue\":\"=\"},{\"name\":\"price\",\"type\":\"decimal\",\"type_length\":\"10,2\",\"default\":\"0.00\",\"comment\":\"\\u5546\\u54c1\\u5355\\u4ef7\",\"not_null\":true,\"formShow\":true,\"tableShow\":true,\"formType\":\"VbenInput\",\"search\":false,\"searchValue\":\"=\"}]}', 1747728358, 1747728358, 0);
-- ----------------------------
-- Table structure for nl_file
@@ -139,7 +152,7 @@ CREATE TABLE `nl_file` (
`updated_at` int NOT NULL DEFAULT 0 COMMENT '更新时间',
`deleted_at` int NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 87 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '文件表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 165 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '文件表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of nl_file
@@ -147,6 +160,268 @@ CREATE TABLE `nl_file` (
INSERT INTO `nl_file` VALUES (84, 1, 'http://127.0.0.1:18010/storage/spa/image/20250514/cc_upload_0hihYRbKMo0PfGg1682459de08829.png', 0, 0, 1747212766, 0, 0);
INSERT INTO `nl_file` VALUES (85, 1, 'http://127.0.0.1:18010/storage/spa/image/20250514/cc_upload_r9HVNOq19s5aFZKz682459e9cde8c.png', 0, 0, 1747212777, 0, 0);
INSERT INTO `nl_file` VALUES (86, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_61k5vKIw1Tdt0cD8682a78a699ada.jpg', 0, 0, 1747613862, 0, 0);
INSERT INTO `nl_file` VALUES (87, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_9q3IKcPoTloN66iu682a7c530dee3.jpg', 0, 0, 1747614803, 0, 0);
INSERT INTO `nl_file` VALUES (88, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_BYskMDNX39yxDDnh682a7c5e3106a.jpg', 0, 0, 1747614814, 0, 0);
INSERT INTO `nl_file` VALUES (89, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_Dsi9ucfGQn29qjYa682a7c5e3104f.jpg', 0, 0, 1747614814, 0, 0);
INSERT INTO `nl_file` VALUES (90, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_XJqPxBAT2Pe8l4yz682a7c5e3782c.jpg', 0, 0, 1747614814, 0, 0);
INSERT INTO `nl_file` VALUES (91, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_lP7rqOFgDmvJISMs682a7c5e39a91.jpg', 0, 0, 1747614814, 0, 0);
INSERT INTO `nl_file` VALUES (92, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_ty8qrMgOZWZUzia6682a7c5e3ec1e.jpg', 0, 0, 1747614814, 0, 0);
INSERT INTO `nl_file` VALUES (93, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_myMzxGJ9WmYjAGiq682a7c5e3fb6e.jpg', 0, 0, 1747614814, 0, 0);
INSERT INTO `nl_file` VALUES (94, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_BECOVo2gSZrlbWet682a7c5e43f8d.jpg', 0, 0, 1747614814, 0, 0);
INSERT INTO `nl_file` VALUES (95, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_W6M0C5H0FLDfRpDu682a7c5e446f3.jpg', 0, 0, 1747614814, 0, 0);
INSERT INTO `nl_file` VALUES (96, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_NoAZR2WA4El33WfK682a7c5e49b17.jpg', 0, 0, 1747614814, 0, 0);
INSERT INTO `nl_file` VALUES (97, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_4w8zNhCptfAjCBFk682a7c5e4a2cc.png', 0, 0, 1747614814, 0, 0);
INSERT INTO `nl_file` VALUES (98, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_z1k2enBT53UVnzxy682a7c5e4dac1.jpg', 0, 0, 1747614814, 0, 0);
INSERT INTO `nl_file` VALUES (99, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_1LQ60KbxpYQNEtwe682a7cbde2554.jpg', 0, 0, 1747614909, 0, 0);
INSERT INTO `nl_file` VALUES (100, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_Qh37LcGVpHaF7kqL682a7cc4bf955.jpg', 0, 0, 1747614916, 0, 0);
INSERT INTO `nl_file` VALUES (101, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_MEpSb5nrvUCjtxHu682a7cc4c0db5.jpg', 0, 0, 1747614916, 0, 0);
INSERT INTO `nl_file` VALUES (102, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_F0qCkYKtpqNox0ua682a7cc4c4b84.jpg', 0, 0, 1747614916, 0, 0);
INSERT INTO `nl_file` VALUES (103, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_l2DrZ0f9j42zZunf682a7cc4c7072.jpg', 0, 0, 1747614916, 0, 0);
INSERT INTO `nl_file` VALUES (104, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_xy9Sg7kKsVo2Cmlo682a7cc4c9acd.jpg', 0, 0, 1747614916, 0, 0);
INSERT INTO `nl_file` VALUES (105, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_u4BIBLRq29vjScA9682a7cc4cb839.jpg', 0, 0, 1747614916, 0, 0);
INSERT INTO `nl_file` VALUES (106, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_YhLfvnbHpscb9709682a7cc4cdc08.jpg', 0, 0, 1747614916, 0, 0);
INSERT INTO `nl_file` VALUES (107, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_ScGN6whid5C7D2Mb682a7cc4cfca1.jpg', 0, 0, 1747614916, 0, 0);
INSERT INTO `nl_file` VALUES (108, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_IeTov2i7auUY3tjl682a7cc4d1538.jpg', 0, 0, 1747614916, 0, 0);
INSERT INTO `nl_file` VALUES (109, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_aETpZM9dsZ1ihLdE682a7cc4d413a.png', 0, 0, 1747614916, 0, 0);
INSERT INTO `nl_file` VALUES (110, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_Ur7B0iYFvWFxJrwc682a7cf76dae5.jpg', 0, 0, 1747614967, 0, 0);
INSERT INTO `nl_file` VALUES (111, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_3PX5Hh22t9NZzXEc682a7cfe0bf1e.jpg', 0, 0, 1747614974, 0, 0);
INSERT INTO `nl_file` VALUES (112, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_gvJJgG7zWmyHkg2d682a7cfe0d17c.jpg', 0, 0, 1747614974, 0, 0);
INSERT INTO `nl_file` VALUES (113, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_tWlytv1TkaVd4YEM682a7cfe125cb.jpg', 0, 0, 1747614974, 0, 0);
INSERT INTO `nl_file` VALUES (114, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_vzPvxHg3ixPufZhO682a7cfe138c5.jpg', 0, 0, 1747614974, 0, 0);
INSERT INTO `nl_file` VALUES (115, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_fq9QBGnoNSJByJIy682a7cfe19a13.jpg', 0, 0, 1747614974, 0, 0);
INSERT INTO `nl_file` VALUES (116, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_cgAdy0TGZ5CT46aW682a7cfe1a57b.jpg', 0, 0, 1747614974, 0, 0);
INSERT INTO `nl_file` VALUES (117, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_zbk39XUCM81jsyd8682a7cfe1d6a9.jpg', 0, 0, 1747614974, 0, 0);
INSERT INTO `nl_file` VALUES (118, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_Bna73vXpfQMQj1ii682a7cfe1dd69.jpg', 0, 0, 1747614974, 0, 0);
INSERT INTO `nl_file` VALUES (119, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_QuInLOFa3esBV3fk682a7cfe1f91b.jpg', 0, 0, 1747614974, 0, 0);
INSERT INTO `nl_file` VALUES (120, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_ufmzpy8H5cuNiTF2682a7cfe22a21.jpg', 0, 0, 1747614974, 0, 0);
INSERT INTO `nl_file` VALUES (121, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_j6iIrLv7Fhuc8nH6682a7cfe22a22.png', 0, 0, 1747614974, 0, 0);
INSERT INTO `nl_file` VALUES (122, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_rubA0RB2Fshv8M3f682a8882bb293.png', 0, 0, 1747617922, 0, 0);
INSERT INTO `nl_file` VALUES (123, 1, 'http://127.0.0.1:18010/storage/spa/image/20250519/cc_upload_4UMArH4DZtlcoqgL682a88939b64d.png', 0, 0, 1747617939, 0, 0);
INSERT INTO `nl_file` VALUES (124, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_UKJgivhKCthXQjgt682bde9158eb8.jpg', 0, 0, 1747705489, 0, 0);
INSERT INTO `nl_file` VALUES (125, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_dcl2zawzwo5Jli9z682bf4588c457.png', 0, 0, 1747711064, 0, 0);
INSERT INTO `nl_file` VALUES (126, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_fvfRc7dtCu5d459B682bf45b88df7.png', 0, 0, 1747711067, 0, 0);
INSERT INTO `nl_file` VALUES (127, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_GTKdTH2o7OVCg6Jo682bf45e0c44c.png', 0, 0, 1747711070, 0, 0);
INSERT INTO `nl_file` VALUES (128, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_khkAPxEQCts4mljg682c042d43722.png', 0, 0, 1747715117, 0, 0);
INSERT INTO `nl_file` VALUES (129, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_CuGglRzx2S9aoUP3682c064312a01.png', 0, 0, 1747715651, 0, 0);
INSERT INTO `nl_file` VALUES (130, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_lWO3aWChcIQrk1Ff682c066e753ba.jpg', 0, 0, 1747715694, 0, 0);
INSERT INTO `nl_file` VALUES (131, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_4pmS6Hl01KSpNsR1682c0ca9c19c2.jpg', 0, 0, 1747717289, 0, 0);
INSERT INTO `nl_file` VALUES (132, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_OiafhIebCSNCDwAo682c0cdce1be5.png', 0, 0, 1747717340, 0, 0);
INSERT INTO `nl_file` VALUES (133, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_fzq4ZsMNUU4NHf5f682c0ced3dd50.png', 0, 0, 1747717357, 0, 0);
INSERT INTO `nl_file` VALUES (134, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_fQrVltkzQ3NNRi4r682c0ced4a7e8.png', 0, 0, 1747717357, 0, 0);
INSERT INTO `nl_file` VALUES (135, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_YhkIfJyLi2gakch2682c0ced4b53c.png', 0, 0, 1747717357, 0, 0);
INSERT INTO `nl_file` VALUES (136, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_6FzM3ttXqf6fhUpH682c0ced561a5.png', 0, 0, 1747717357, 0, 0);
INSERT INTO `nl_file` VALUES (137, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_8mc41pERZT9XKUgt682c0ced59a8f.png', 0, 0, 1747717357, 0, 0);
INSERT INTO `nl_file` VALUES (138, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_A1hT7zhC4qCYeJXC682c0ced5e475.png', 0, 0, 1747717357, 0, 0);
INSERT INTO `nl_file` VALUES (139, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_aQA36KDebkO51Eun682c0ced65112.png', 0, 0, 1747717357, 0, 0);
INSERT INTO `nl_file` VALUES (140, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_UMyq73gS4hAIJu6T682c0ced67542.png', 0, 0, 1747717357, 0, 0);
INSERT INTO `nl_file` VALUES (141, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_1DfLMo1biN7BnAyW682c0ced715b4.png', 0, 0, 1747717357, 0, 0);
INSERT INTO `nl_file` VALUES (142, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_H4o0mlEsSDLp6tCJ682c0ced755a3.png', 0, 0, 1747717357, 0, 0);
INSERT INTO `nl_file` VALUES (143, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_OGzjvTXuonEj8RjX682c0ced7be9f.png', 0, 0, 1747717357, 0, 0);
INSERT INTO `nl_file` VALUES (144, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_DzvbnSwJdZKQ3Byf682c0ced7f8c7.png', 0, 0, 1747717357, 0, 0);
INSERT INTO `nl_file` VALUES (145, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_YXVJn4fWgWjA0Ege682c0ced8602f.png', 0, 0, 1747717357, 0, 0);
INSERT INTO `nl_file` VALUES (146, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_YZQ5LEO8uJKn5mFN682c0ced87db5.png', 0, 0, 1747717357, 0, 0);
INSERT INTO `nl_file` VALUES (147, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_uDB8oOsWXI4B2df8682c0ced8f15b.png', 0, 0, 1747717357, 0, 0);
INSERT INTO `nl_file` VALUES (148, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_5LI3KASIbfucQvbW682c0d6d4c829.png', 0, 0, 1747717485, 0, 0);
INSERT INTO `nl_file` VALUES (149, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_YGCAPNYOURragq8Z682c17a9635fb.png', 0, 0, 1747720105, 0, 0);
INSERT INTO `nl_file` VALUES (150, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_MhnxUlMfZr0faAQd682c19e629fb7.png', 0, 0, 1747720678, 0, 0);
INSERT INTO `nl_file` VALUES (151, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_7JuYBuEnSxJtH1I4682c19e8f2848.png', 0, 0, 1747720681, 0, 0);
INSERT INTO `nl_file` VALUES (152, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_BaKzz2QubiWoR4Hr682c19f012489.png', 0, 0, 1747720688, 0, 0);
INSERT INTO `nl_file` VALUES (153, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_D7zrSznHJ4KTIohQ682c19f013154.png', 0, 0, 1747720688, 0, 0);
INSERT INTO `nl_file` VALUES (154, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_jauQUYuNJ2L0BvzC682c19f013117.png', 0, 0, 1747720688, 0, 0);
INSERT INTO `nl_file` VALUES (155, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_ibL2sHMyGh3dXQOt682c19f01cfeb.png', 0, 0, 1747720688, 0, 0);
INSERT INTO `nl_file` VALUES (156, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_1btN6OewsIG9Inu7682c19f01e70b.png', 0, 0, 1747720688, 0, 0);
INSERT INTO `nl_file` VALUES (157, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_8yHfWjnrUddChi1x682c19f021179.png', 0, 0, 1747720688, 0, 0);
INSERT INTO `nl_file` VALUES (158, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_Owe2rndCAjfBgaT1682c19f02cf37.png', 0, 0, 1747720688, 0, 0);
INSERT INTO `nl_file` VALUES (159, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_jAwPDBM7fI5uMl4R682c2537580ac.png', 0, 0, 1747723575, 0, 0);
INSERT INTO `nl_file` VALUES (160, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_4JCGll5gji8cxcWa682c399581cdd.png', 0, 0, 1747728789, 0, 0);
INSERT INTO `nl_file` VALUES (161, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_260hhy4XjjJYpyOc682c3a4562340.png', 0, 0, 1747728965, 0, 0);
INSERT INTO `nl_file` VALUES (162, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_YZLKXQXuYD6IVMXP682c3a5e80847.png', 0, 0, 1747728990, 0, 0);
INSERT INTO `nl_file` VALUES (163, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_2w2YuEbjxTkV9DSP682c41577f46f.png', 0, 0, 1747730775, 0, 0);
INSERT INTO `nl_file` VALUES (164, 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_T0gXfIUWl0FZMBe2682c41e04cea0.png', 0, 0, 1747730912, 0, 0);
-- ----------------------------
-- Table structure for nl_mall
-- ----------------------------
DROP TABLE IF EXISTS `nl_mall`;
CREATE TABLE `nl_mall` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '店铺名称',
`level` int NOT NULL DEFAULT 0 COMMENT '店铺等级',
`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '店铺头像',
`classification_id` int NOT NULL DEFAULT 0 COMMENT '店铺分类',
`introduction` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '店铺简介',
`description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '详细介绍',
`phone` char(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '商家电话号码',
`person` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '联系人名称',
`id_card` char(18) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '身份证号码',
`qr_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '店铺二维码',
`is_featured` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否为推荐店铺',
`business_license` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '营业执照',
`id_card_portrait_side` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '身份证人面',
`id_card_national_emblem_side` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '身份证国徽面',
`chain` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否连锁',
`business_suspended` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否暂停营业',
`status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '状态 0正常 1禁用',
`created_at` int NOT NULL DEFAULT 0 COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT 0 COMMENT '修改时间',
`deleted_at` int NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '店铺管理表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of nl_mall
-- ----------------------------
INSERT INTO `nl_mall` VALUES (1, '奶酪商城官方店(源码店)', 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_khkAPxEQCts4mljg682c042d43722.png', 90, '奶酪商城是一个科技店铺,主要营业是源码', '奶酪商城官方店秉持着 “汇聚科技精华,共享源码智慧” 的理念,精心搜罗全球范围内极具价值的科技产品与开源、闭源的优质源码。我们深知科技的力量能够重塑世界,源码则是开启创新大门的钥匙。无论是资深的技术专家,还是刚刚踏入科技领域的新手,都能在奶酪商城官方店找到契合自身需求的资源,开启属于自己的科技探索之旅。', '15100000000', '李二狗', '140311222211114033', '', 1, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_dcl2zawzwo5Jli9z682bf4588c457.png', 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_fvfRc7dtCu5d459B682bf45b88df7.png', 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_GTKdTH2o7OVCg6Jo682bf45e0c44c.png', 0, 0, 0, 1747715119, 0, 0);
-- ----------------------------
-- Table structure for nl_mall_classification
-- ----------------------------
DROP TABLE IF EXISTS `nl_mall_classification`;
CREATE TABLE `nl_mall_classification` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '行业名称',
`pid` int NOT NULL DEFAULT 0 COMMENT '父级ID',
`status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '状态 0正常 1禁用',
`created_at` int NOT NULL DEFAULT 0 COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT 0 COMMENT '修改时间',
`deleted_at` int NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 106 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '店铺行业表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of nl_mall_classification
-- ----------------------------
INSERT INTO `nl_mall_classification` VALUES (1, '零售百货', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (2, '超市便利店', 1, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (3, '精品百货', 1, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (4, '折扣店', 1, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (5, '母婴店', 1, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (6, '服饰鞋帽', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (7, '男装品牌店', 6, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (8, '女装品牌店', 6, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (9, '童装店', 6, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (10, '鞋店', 6, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (11, '箱包店', 6, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (12, '美妆个护', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (13, '化妆品店', 12, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (14, '护肤品店', 12, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (15, '美发美甲店', 12, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (16, '美容院', 12, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (17, '餐饮美食', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (18, '中餐', 17, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (19, '西餐', 17, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (20, '快餐小吃', 17, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (21, '火锅烧烤', 17, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (22, '饮品甜点', 17, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (23, '住宿服务', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (24, '酒店', 23, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (25, '民宿', 23, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (26, '度假村', 23, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (27, '短租公寓', 23, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (28, '休闲娱乐', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (29, '电影院', 28, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (30, 'KTV', 28, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (31, '健身房', 28, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (32, '游乐场', 28, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (33, '酒吧咖啡馆', 28, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (34, '家居建材', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (35, '家具店', 34, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (36, '建材店', 34, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (37, '灯具店', 34, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (38, '卫浴店', 34, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (39, '数码电器', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (40, '手机店', 39, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (41, '电脑店', 39, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (42, '家电卖场', 39, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (43, '数码配件店', 39, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (44, '医疗健康', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (45, '药店', 44, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (46, '美容院', 44, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (47, '体检中心', 44, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (48, '宠物医院', 44, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (49, '教育培训', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (50, '早教机构', 49, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (51, '培训机构', 49, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (52, '语言学校', 49, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (53, '职业教育', 49, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (54, '金融服务', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (55, '银行', 54, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (56, '保险', 54, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (57, '证券', 54, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (58, '投资理财', 54, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (59, '汽车服务', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (60, '4S店', 59, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (61, '汽车维修', 59, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (62, '汽车美容', 59, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (63, '加油站', 59, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (64, '生活服务', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (65, '洗衣店', 64, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (66, '家政服务', 64, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (67, '婚庆服务', 64, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (68, '摄影机构', 64, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (69, '宠物店', 64, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (70, '文化艺术', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (71, '书店', 70, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (72, '画廊', 70, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (73, '艺术培训', 70, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (74, '乐器行', 70, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (75, '旅游服务', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (76, '旅行社', 75, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (77, '票务代理', 75, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (78, '景区景点', 75, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (79, '酒店预订', 75, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (80, '电商服务', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (81, '综合电商', 80, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (82, '垂直电商', 80, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (83, '跨境电商', 80, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (84, '社交电商', 80, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (85, '批发贸易', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (86, '服装批发', 85, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (87, '食品批发', 85, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (88, '建材批发', 85, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (89, '小商品批发', 85, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (90, '专业服务', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (91, '法律咨询', 90, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (92, '会计服务', 90, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (93, '广告传媒', 90, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (94, '设计服务', 90, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (95, '物流配送', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (96, '快递公司', 95, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_mall_classification` VALUES (97, '虚拟商品', 0, 0, 1747717121, 0, 0);
INSERT INTO `nl_mall_classification` VALUES (98, '网站设计', 0, 0, 1747717133, 0, 0);
INSERT INTO `nl_mall_classification` VALUES (99, 'App', 98, 0, 1747717168, 1747717188, 0);
INSERT INTO `nl_mall_classification` VALUES (100, '微信小程序', 98, 0, 1747717174, 1747717182, 0);
INSERT INTO `nl_mall_classification` VALUES (101, 'Web', 98, 0, 1747717194, 0, 0);
INSERT INTO `nl_mall_classification` VALUES (102, '服务端', 98, 0, 1747717217, 0, 0);
INSERT INTO `nl_mall_classification` VALUES (103, '整站源码', 98, 0, 1747717226, 0, 0);
INSERT INTO `nl_mall_classification` VALUES (104, '定制开发', 98, 0, 1747717233, 0, 0);
INSERT INTO `nl_mall_classification` VALUES (105, 'UI设计', 98, 0, 1747717241, 0, 0);
-- ----------------------------
-- Table structure for nl_mall_membership_level
-- ----------------------------
DROP TABLE IF EXISTS `nl_mall_membership_level`;
CREATE TABLE `nl_mall_membership_level` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
`name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '等级名称',
`experience` int NOT NULL DEFAULT 0 COMMENT '升级所需经验',
`status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '状态 0正常 1禁用',
`created_at` int NOT NULL DEFAULT 0 COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT 0 COMMENT '修改时间',
`deleted_at` int NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '店铺会员等级表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of nl_mall_membership_level
-- ----------------------------
INSERT INTO `nl_mall_membership_level` VALUES (1, '普通会员', 100, 0, 1747700339, 0, 0);
INSERT INTO `nl_mall_membership_level` VALUES (2, '白银会员', 500, 0, 1747700348, 1747700358, 0);
INSERT INTO `nl_mall_membership_level` VALUES (3, '黄金会员', 1500, 0, 1747700383, 0, 0);
INSERT INTO `nl_mall_membership_level` VALUES (4, '铂金会员', 3000, 0, 1747700392, 0, 0);
INSERT INTO `nl_mall_membership_level` VALUES (5, '钻石会员', 6000, 0, 1747700415, 0, 0);
INSERT INTO `nl_mall_membership_level` VALUES (6, '黑钻会员', 10000, 0, 1747700520, 0, 0);
INSERT INTO `nl_mall_membership_level` VALUES (7, '超级会员', 30000, 0, 1747700548, 0, 0);
-- ----------------------------
-- Table structure for nl_menu
@@ -174,7 +449,7 @@ CREATE TABLE `nl_menu` (
`updated_at` int NOT NULL DEFAULT 0 COMMENT '更新时间',
`deleted_at` int NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 15 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '菜单表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 30 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '菜单表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of nl_menu
@@ -193,6 +468,68 @@ INSERT INTO `nl_menu` VALUES (11, '产品', 'ep:goods-filled', 'Product', '/prod
INSERT INTO `nl_menu` VALUES (12, '商品分类', 'carbon:data-class', 'ProductClassification', '/product-classification', '/my-gen/product-classification/index', '', 1, 0, 1, '', 0, 0, '', 10, 50, '', 1747212037, 0, 0);
INSERT INTO `nl_menu` VALUES (13, '商品标签', 'fluent-emoji:label', 'ProductLabel', '/product-label', '/my-gen/product-label/index', '', 1, 0, 1, '', 0, 0, '', 10, 60, '', 1747213014, 0, 0);
INSERT INTO `nl_menu` VALUES (14, '商品图片', 'catppuccin:image', 'ProductImage', '/product-image', '/my-gen/product-image/index', '', 1, 0, 1, '', 0, 0, '', 10, 100, '', 1747614399, 0, 0);
INSERT INTO `nl_menu` VALUES (15, '店铺中心', 'fluent-color:building-store-16', 'MallCenter', '/mall-center', 'BasicLayout', '', 0, 0, 1, '', 0, 0, '', 0, 50, '', 1734486082, 1735117933, 0);
INSERT INTO `nl_menu` VALUES (16, '店铺管理', 'ion:storefront-sharp', 'Mall', '/mall', '/my-gen/mall/index', '', 1, 0, 1, '', 0, 0, '', 15, 1, '', 1747620330, 0, 0);
INSERT INTO `nl_menu` VALUES (17, '店铺行业', 'fluent:classification-20-filled', 'MallClassification', '/mall-classification', '/my-gen/mall-classification/index', '', 1, 0, 1, '', 0, 0, '', 15, 20, '', 1747623582, 0, 0);
INSERT INTO `nl_menu` VALUES (18, '店铺会员等级', 'lsicon:vip-filled', 'MallMembershipLevel', '/mall-membership-level', '/my-gen/mall-membership-level/index', '', 1, 0, 1, '', 0, 0, '', 15, 150, '', 1747700271, 0, 0);
INSERT INTO `nl_menu` VALUES (19, '用户中心', 'entypo:user', 'UserCenter', '/user-center', 'BasicLayout', '', 0, 0, 1, '', 0, 0, '', 0, 60, '', 1734486082, 1735117933, 0);
INSERT INTO `nl_menu` VALUES (20, '用户会员', 'lsicon:vip-outline', 'UserMembership', '/user-membership', '/my-gen/user-membership/index', '', 1, 0, 1, '', 0, 0, '', 19, 300, '', 1747700745, 0, 0);
INSERT INTO `nl_menu` VALUES (21, '用户', 'qlementine-icons:user-24', 'User', '/user', '/my-gen/user/index', '', 1, 0, 1, '', 0, 0, '', 19, 10, '', 1747701718, 0, 0);
INSERT INTO `nl_menu` VALUES (22, '用户收货地址', 'mdi:address-marker', 'UserReceivingAddress', '/user-receiving-address', '/my-gen/user-receiving-address/index', '', 1, 0, 1, '', 0, 0, '', 19, 200, '', 1747702047, 0, 0);
INSERT INTO `nl_menu` VALUES (23, '用户收藏', 'ic:round-stars', 'UserCollect', '/user-collect', '/my-gen/user-collect/index', '', 1, 0, 1, '', 0, 0, '', 19, 500, '', 1747704717, 0, 0);
INSERT INTO `nl_menu` VALUES (24, '用户浏览记录', 'fluent-color:history-20', 'UserBrowsingHistory', '/user-browsing-history', '/my-gen/user-browsing-history/index', '', 1, 0, 1, '', 0, 0, '', 19, 550, '', 1747704877, 0, 0);
INSERT INTO `nl_menu` VALUES (25, '商品标签关联', 'ant-design:tags-outlined', 'Product_label_relations', '/product-label-relations', '/my-gen/product-label-relations/index', '', 1, 0, 1, '', 0, 0, '', 10, 9999, '', 1747719020, 0, 0);
INSERT INTO `nl_menu` VALUES (26, '订单中心', 'material-symbols:order-play-outline-sharp', 'OrderCenter', '/order-center', 'BasicLayout', '', 0, 0, 1, '', 0, 0, '', 0, 50, '', 1734486082, 1735117933, 0);
INSERT INTO `nl_menu` VALUES (27, '订单管理', 'lets-icons:order', 'Order', '/order', '/my-gen/order/index', '', 1, 0, 1, '', 0, 0, '', 26, 1, '', 1747725516, 0, 0);
INSERT INTO `nl_menu` VALUES (28, '订单详情', 'raphael:package', 'OrderDetail', '/order-detail', '/my-gen/order-detail/index', '', 1, 0, 1, '', 0, 0, '', 26, 9999, '', 1747726163, 0, 0);
INSERT INTO `nl_menu` VALUES (29, 'sku管理', 'octicon:ai-model-16', 'Sku', '/sku', '/my-gen/sku/index', '', 1, 0, 1, '', 0, 0, '', 10, 600, '', 1747728358, 0, 0);
-- ----------------------------
-- Table structure for nl_order
-- ----------------------------
DROP TABLE IF EXISTS `nl_order`;
CREATE TABLE `nl_order` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
`user_id` int NOT NULL DEFAULT 0 COMMENT '用户ID',
`order_no` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '订单编号',
`order_status` tinyint NOT NULL DEFAULT 0 COMMENT '订单状态',
`total_amount` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '订单总金额',
`status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '状态 0待支付 1待发货 2待收货 3已收货 4待评价 5已评价 6申请退款 7同意退款 8拒绝退款 9异常订单 10投诉订单',
`created_at` int NOT NULL DEFAULT 0 COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT 0 COMMENT '修改时间',
`deleted_at` int NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '订单管理表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of nl_order
-- ----------------------------
INSERT INTO `nl_order` VALUES (1, 1, 'NLD20250520135499856687', 0, 10000.00, 0, 0, 0, 0);
-- ----------------------------
-- Table structure for nl_order_detail
-- ----------------------------
DROP TABLE IF EXISTS `nl_order_detail`;
CREATE TABLE `nl_order_detail` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
`order_id` int NOT NULL DEFAULT 0 COMMENT '订单ID',
`product_id` int NOT NULL DEFAULT 0 COMMENT '商品ID',
`quantity` int NOT NULL DEFAULT 0 COMMENT '商品数量',
`sku_id` int NOT NULL DEFAULT 0 COMMENT 'SKUID',
`price` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '商品单价',
`subtotal` decimal(10, 2) NULL DEFAULT 0.00 COMMENT '小计金额',
`snapshot` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '商品快照',
`status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '状态 0正常 1禁用',
`created_at` int NOT NULL DEFAULT 0 COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT 0 COMMENT '修改时间',
`deleted_at` int NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '订单详情表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of nl_order_detail
-- ----------------------------
INSERT INTO `nl_order_detail` VALUES (1, 1, 1, 2, 0, 100.00, 0.00, NULL, 0, 0, 0, 0);
-- ----------------------------
-- Table structure for nl_product
@@ -203,7 +540,7 @@ CREATE TABLE `nl_product` (
`title` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '商品名称',
`mall_id` int NOT NULL DEFAULT 0 COMMENT '商家ID',
`user_id` int NOT NULL DEFAULT 0 COMMENT '上传用户ID',
`Introduction` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '简介',
`introduction` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '简介',
`cover` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '封面图',
`description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '详细说明',
`price` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '价格',
@@ -214,11 +551,13 @@ CREATE TABLE `nl_product` (
`updated_at` int NOT NULL DEFAULT 0 COMMENT '修改时间',
`deleted_at` int NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '产品表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '产品表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of nl_product
-- ----------------------------
INSERT INTO `nl_product` VALUES (2, '网站、App、小程序定制开发', 1, 1, '我们覆盖网站、App、小程序全平台定制开发为不同行业与规模的企业提供一站式解决方案。无论是追求高端质感与交互体验的品牌官网还是需要满足复杂业务流程与海量数据处理的企业级应用亦或是主打便捷触达、轻量化服务的小程序均可根据客户需求定制开发。通过深入分析企业目标用户群体、业务流程与发展战略从产品架构设计、功能开发、UI/UX 设计到测试上线,全程为客户打造专属的数字化产品', 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_MhnxUlMfZr0faAQd682c19e629fb7.png', '网站、App、小程序定制开发服务介绍 在数字经济浪潮中标准化产品已难以满足企业差异化竞争需求。我们提供的网站、App、小程序定制开发服务旨在深度贴合企业业务逻辑与用户体验需求打造兼具功能性与创新性的数字化产品助力企业在互联网时代实现高效增长与品牌价值提升。 全场景定制开发服务​ 我们覆盖网站、App、小程序全平台定制开发为不同行业与规模的企业提供一站式解决方案。无论是追求高端质感与交互体验的品牌官网还是需要满足复杂业务流程与海量数据处理的企业级应用亦或是主打便捷触达、轻量化服务的小程序均可根据客户需求定制开发。通过深入分析企业目标用户群体、业务流程与发展战略从产品架构设计、功能开发、UI/UX 设计到测试上线,全程为客户打造专属的数字化产品。​ 定制开发核心优势​ 精准匹配业务需求:区别于模板化产品,定制开发能够深度契合企业独特的业务模式与个性化需求。无论是复杂的订单管理系统、定制化的数据报表分析,还是具有行业特色的功能模块,都能精准实现,避免因功能冗余或缺失导致的资源浪费与使用不便。​ 提升用户体验:以用户为中心的设计理念贯穿开发全程,从界面交互到操作流程,均经过反复打磨与测试。通过个性化的界面设计、流畅的操作体验,有效提升用户留存率与活跃度,增强用户对品牌的好感与忠诚度。​ 灵活扩展与迭代:随着企业业务发展与市场环境变化,定制开发的产品具备良好的扩展性与兼容性。可根据实际需求灵活增加新功能模块、升级技术架构,确保产品始终贴合企业发展步伐,保持市场竞争力。​ 数据安全与可控:对数据安全高度重视,在开发过程中严格遵循数据安全标准与规范,从代码编写到服务器部署,全方位保障企业与用户数据的安全性与隐私性。同时,企业拥有对定制产品的完全控制权,数据存储、管理与使用更加自主可控。​ 专业技术与团队保障​ 我们拥有一支经验丰富、技术精湛的开发团队涵盖前端开发、后端开发、UI 设计、测试运维等多个领域的专业人才。团队成员精通多种主流开发技术与框架,如 Java、Python、React、Vue 等,能够根据项目需求灵活选用最合适的技术方案。在开发过程中,严格遵循敏捷开发流程,确保项目高效推进、按时交付,并提供完善的售后技术支持与维护服务,为企业数字化转型保驾护航。​ 无论你是希望通过网站提升品牌形象、借助 App 拓展业务版图,还是利用小程序实现流量转化,我们都能以专业的技术与服务,将你的创意与需求转化为优质的数字化产品,携手共创互联网时代的无限可能。​ 上述介绍涵盖了定制开发的核心要点,如果你觉得某些部分需要补充细节,或是想调整风格,欢迎随时和我说。', 9999.00, 97, 0, 0, 1747614992, 1747720892, 0);
INSERT INTO `nl_product` VALUES (3, '小白入门套餐', 1, 1, '该商品包含了包括PHP、Vue等等热门技术的从零到一实战课程', 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_jAwPDBM7fI5uMl4R682c2537580ac.png', '该商品包含了包括PHP、Vue等等热门技术的从零到一实战课程', 999.00, 50, 0, 0, 1747717424, 1747723576, 0);
-- ----------------------------
-- Table structure for nl_product_classification
@@ -234,7 +573,7 @@ CREATE TABLE `nl_product_classification` (
`updated_at` int NOT NULL DEFAULT 0 COMMENT '修改时间',
`deleted_at` int NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 97 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '商品分类表' ROW_FORMAT = Dynamic;
) ENGINE = InnoDB AUTO_INCREMENT = 98 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '商品分类表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of nl_product_classification
@@ -335,6 +674,7 @@ INSERT INTO `nl_product_classification` VALUES (93, '运动服饰', '', 92, 0, 1
INSERT INTO `nl_product_classification` VALUES (94, '健身器材', '', 92, 0, 1747624512, 1747624512, 0);
INSERT INTO `nl_product_classification` VALUES (95, '户外装备', '', 92, 0, 1747624512, 1747624512, 0);
INSERT INTO `nl_product_classification` VALUES (96, '体育用品', '', 92, 0, 1747624512, 1747624512, 0);
INSERT INTO `nl_product_classification` VALUES (97, '定制开发', 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_YGCAPNYOURragq8Z682c17a9635fb.png', 0, 0, 1747720109, 0, 0);
-- ----------------------------
-- Table structure for nl_product_image
@@ -349,11 +689,34 @@ CREATE TABLE `nl_product_image` (
`updated_at` int NOT NULL DEFAULT 0 COMMENT '修改时间',
`deleted_at` int NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '商品图片表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 35 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '商品图片表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of nl_product_image
-- ----------------------------
INSERT INTO `nl_product_image` VALUES (12, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_fzq4ZsMNUU4NHf5f682c0ced3dd50.png', 3, 0, 0, 0, 0);
INSERT INTO `nl_product_image` VALUES (13, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_fQrVltkzQ3NNRi4r682c0ced4a7e8.png', 3, 0, 0, 0, 0);
INSERT INTO `nl_product_image` VALUES (14, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_YhkIfJyLi2gakch2682c0ced4b53c.png', 3, 0, 0, 0, 0);
INSERT INTO `nl_product_image` VALUES (15, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_6FzM3ttXqf6fhUpH682c0ced561a5.png', 3, 0, 0, 0, 0);
INSERT INTO `nl_product_image` VALUES (16, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_8mc41pERZT9XKUgt682c0ced59a8f.png', 3, 0, 0, 0, 0);
INSERT INTO `nl_product_image` VALUES (17, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_A1hT7zhC4qCYeJXC682c0ced5e475.png', 3, 0, 0, 0, 0);
INSERT INTO `nl_product_image` VALUES (18, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_aQA36KDebkO51Eun682c0ced65112.png', 3, 0, 0, 0, 0);
INSERT INTO `nl_product_image` VALUES (19, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_UMyq73gS4hAIJu6T682c0ced67542.png', 3, 0, 0, 0, 0);
INSERT INTO `nl_product_image` VALUES (20, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_1DfLMo1biN7BnAyW682c0ced715b4.png', 3, 0, 0, 0, 0);
INSERT INTO `nl_product_image` VALUES (21, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_H4o0mlEsSDLp6tCJ682c0ced755a3.png', 3, 0, 0, 0, 0);
INSERT INTO `nl_product_image` VALUES (22, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_OGzjvTXuonEj8RjX682c0ced7be9f.png', 3, 0, 0, 0, 0);
INSERT INTO `nl_product_image` VALUES (23, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_DzvbnSwJdZKQ3Byf682c0ced7f8c7.png', 3, 0, 0, 0, 0);
INSERT INTO `nl_product_image` VALUES (24, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_YXVJn4fWgWjA0Ege682c0ced8602f.png', 3, 0, 0, 0, 0);
INSERT INTO `nl_product_image` VALUES (25, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_YZQ5LEO8uJKn5mFN682c0ced87db5.png', 3, 0, 0, 0, 0);
INSERT INTO `nl_product_image` VALUES (26, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_uDB8oOsWXI4B2df8682c0ced8f15b.png', 3, 0, 0, 0, 0);
INSERT INTO `nl_product_image` VALUES (27, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_7JuYBuEnSxJtH1I4682c19e8f2848.png', 2, 0, 0, 0, 0);
INSERT INTO `nl_product_image` VALUES (28, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_D7zrSznHJ4KTIohQ682c19f013154.png', 2, 0, 0, 0, 0);
INSERT INTO `nl_product_image` VALUES (29, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_BaKzz2QubiWoR4Hr682c19f012489.png', 2, 0, 0, 0, 0);
INSERT INTO `nl_product_image` VALUES (30, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_jauQUYuNJ2L0BvzC682c19f013117.png', 2, 0, 0, 0, 0);
INSERT INTO `nl_product_image` VALUES (31, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_1btN6OewsIG9Inu7682c19f01e70b.png', 2, 0, 0, 0, 0);
INSERT INTO `nl_product_image` VALUES (32, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_ibL2sHMyGh3dXQOt682c19f01cfeb.png', 2, 0, 0, 0, 0);
INSERT INTO `nl_product_image` VALUES (33, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_8yHfWjnrUddChi1x682c19f021179.png', 2, 0, 0, 0, 0);
INSERT INTO `nl_product_image` VALUES (34, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_Owe2rndCAjfBgaT1682c19f02cf37.png', 2, 0, 0, 0, 0);
-- ----------------------------
-- Table structure for nl_product_label
@@ -367,7 +730,7 @@ CREATE TABLE `nl_product_label` (
`updated_at` int NOT NULL DEFAULT 0 COMMENT '修改时间',
`deleted_at` int NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '商品标签表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '商品标签表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of nl_product_label
@@ -375,6 +738,31 @@ CREATE TABLE `nl_product_label` (
INSERT INTO `nl_product_label` VALUES (1, '包邮', 0, 1747213158, 0, 0);
INSERT INTO `nl_product_label` VALUES (2, '7天无理由退货', 0, 1747213167, 0, 0);
INSERT INTO `nl_product_label` VALUES (3, '绝对正版', 0, 1747213198, 0, 0);
INSERT INTO `nl_product_label` VALUES (4, '一年内免费维护', 0, 1747720847, 0, 0);
INSERT INTO `nl_product_label` VALUES (5, '原创,绝不侵权', 0, 1747720878, 1747722072, 0);
-- ----------------------------
-- Table structure for nl_product_label_relations
-- ----------------------------
DROP TABLE IF EXISTS `nl_product_label_relations`;
CREATE TABLE `nl_product_label_relations` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
`product_id` int NOT NULL DEFAULT 0 COMMENT '商品',
`label_id` int NOT NULL DEFAULT 0 COMMENT '标签',
`status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '状态 0正常 1禁用',
`created_at` int NOT NULL DEFAULT 0 COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT 0 COMMENT '修改时间',
`deleted_at` int NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '商品标签关联表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of nl_product_label_relations
-- ----------------------------
INSERT INTO `nl_product_label_relations` VALUES (1, 3, 3, 0, 0, 0, 0);
INSERT INTO `nl_product_label_relations` VALUES (5, 2, 5, 0, 0, 0, 0);
INSERT INTO `nl_product_label_relations` VALUES (6, 2, 4, 0, 0, 0, 0);
INSERT INTO `nl_product_label_relations` VALUES (7, 3, 5, 0, 0, 0, 0);
-- ----------------------------
-- Table structure for nl_role
@@ -426,118 +814,146 @@ INSERT INTO `nl_role_menu_relations` VALUES (7, 1, 7, 1747033198);
INSERT INTO `nl_role_menu_relations` VALUES (8, 1, 8, 1747033198);
-- ----------------------------
-- Table structure for nl_store_classification
-- Table structure for nl_sku
-- ----------------------------
DROP TABLE IF EXISTS `nl_store_classification`;
CREATE TABLE `nl_store_classification` (
DROP TABLE IF EXISTS `nl_sku`;
CREATE TABLE `nl_sku` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '行业名称',
`pid` int NOT NULL DEFAULT 0 COMMENT '父级ID',
`product_id` int NOT NULL DEFAULT 0 COMMENT '商品ID',
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT 'sku名称',
`cover` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT 'sku图片',
`inventory` int NOT NULL DEFAULT 0 COMMENT '商品库存',
`price` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '商品单价',
`status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '状态 0正常 1禁用',
`created_at` int NOT NULL DEFAULT 0 COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT 0 COMMENT '修改时间',
`deleted_at` int NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 97 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '店铺行业' ROW_FORMAT = Dynamic;
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'sku管理' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of nl_store_classification
-- Records of nl_sku
-- ----------------------------
INSERT INTO `nl_sku` VALUES (1, 3, '全部视频', 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_260hhy4XjjJYpyOc682c3a4562340.png', 100, 999.99, 0, 1747728976, 0, 0);
INSERT INTO `nl_sku` VALUES (2, 3, 'Laravel入门到精通', 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_YZLKXQXuYD6IVMXP682c3a5e80847.png', 100, 500.00, 0, 1747729014, 0, 0);
INSERT INTO `nl_sku` VALUES (3, 3, 'Vue实战课程', 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_T0gXfIUWl0FZMBe2682c41e04cea0.png', 100, 99.00, 0, 1747730916, 1747730949, 0);
-- ----------------------------
-- Table structure for nl_user
-- ----------------------------
DROP TABLE IF EXISTS `nl_user`;
CREATE TABLE `nl_user` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
`open_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '平台OpenId',
`nick_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '用户昵称',
`phone` char(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '手机号码',
`email` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '邮箱',
`level` int NOT NULL DEFAULT 0 COMMENT '用户会员等级',
`balance` decimal(10, 2) NOT NULL DEFAULT 0.00 COMMENT '用户余额',
`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '用户头像',
`Integral` int NOT NULL DEFAULT 0 COMMENT '积分',
`wx_open_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '微信小程序唯一标识',
`zfb_open_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '支付宝小程序唯一标识',
`status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '状态 0正常 1禁用',
`created_at` int NOT NULL DEFAULT 0 COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT 0 COMMENT '修改时间',
`deleted_at` int NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of nl_user
-- ----------------------------
INSERT INTO `nl_user` VALUES (1, 'nl_2254d682bdea52f983ceb90c8771', '李二狗', '15100000000', 'workerqi@163.com', 1, 0.00, 'http://127.0.0.1:18010/storage/spa/image/20250520/cc_upload_UKJgivhKCthXQjgt682bde9158eb8.jpg', 1000, '', '', 0, 1747705509, 0, 0);
-- ----------------------------
-- Table structure for nl_user_browsing_history
-- ----------------------------
DROP TABLE IF EXISTS `nl_user_browsing_history`;
CREATE TABLE `nl_user_browsing_history` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
`user_id` int NOT NULL DEFAULT 0 COMMENT '用户',
`product_id` int NOT NULL DEFAULT 0 COMMENT '商品id',
`status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '状态 0正常 1禁用',
`created_at` int NOT NULL DEFAULT 0 COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT 0 COMMENT '修改时间',
`deleted_at` int NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户浏览记录表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of nl_user_browsing_history
-- ----------------------------
INSERT INTO `nl_user_browsing_history` VALUES (1, 1, 2, 0, 1747704956, 1747704984, 0);
-- ----------------------------
-- Table structure for nl_user_collect
-- ----------------------------
DROP TABLE IF EXISTS `nl_user_collect`;
CREATE TABLE `nl_user_collect` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
`user_id` int NOT NULL DEFAULT 0 COMMENT '用户',
`product_id` int NOT NULL DEFAULT 0 COMMENT '商品id',
`status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '状态 0正常 1禁用',
`created_at` int NOT NULL DEFAULT 0 COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT 0 COMMENT '修改时间',
`deleted_at` int NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户收藏表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of nl_user_collect
-- ----------------------------
INSERT INTO `nl_user_collect` VALUES (1, 1, 2, 0, 1747707257, 0, 0);
INSERT INTO `nl_user_collect` VALUES (2, 1, 3, 0, 1747724224, 0, 0);
-- ----------------------------
-- Table structure for nl_user_membership
-- ----------------------------
DROP TABLE IF EXISTS `nl_user_membership`;
CREATE TABLE `nl_user_membership` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
`name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '会员等级说明',
`experience` int NOT NULL DEFAULT 0 COMMENT '升级所需经验',
`status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '状态 0正常 1禁用',
`created_at` int NOT NULL DEFAULT 0 COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT 0 COMMENT '修改时间',
`deleted_at` int NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户会员表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of nl_user_membership
-- ----------------------------
INSERT INTO `nl_user_membership` VALUES (1, '普通会员', 1000, 0, 1747700339, 0, 0);
INSERT INTO `nl_user_membership` VALUES (2, '白银会员', 5000, 0, 1747700348, 1747700358, 0);
INSERT INTO `nl_user_membership` VALUES (3, '黄金会员', 15000, 0, 1747700383, 0, 0);
INSERT INTO `nl_user_membership` VALUES (4, '铂金会员', 30000, 0, 1747700392, 0, 0);
INSERT INTO `nl_user_membership` VALUES (5, '钻石会员', 60000, 0, 1747700415, 0, 0);
INSERT INTO `nl_user_membership` VALUES (6, '黑钻会员', 100000, 0, 1747700520, 0, 0);
INSERT INTO `nl_user_membership` VALUES (7, '超级会员', 300000, 0, 1747700548, 0, 0);
-- ----------------------------
-- Table structure for nl_user_receiving_address
-- ----------------------------
DROP TABLE IF EXISTS `nl_user_receiving_address`;
CREATE TABLE `nl_user_receiving_address` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
`user_id` int NOT NULL DEFAULT 0 COMMENT '用户',
`province` int NOT NULL DEFAULT 0 COMMENT '',
`city` int NOT NULL DEFAULT 0 COMMENT '',
`district` int NOT NULL DEFAULT 0 COMMENT '',
`detailed_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '详细地址',
`complete_address` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '完整地址',
`status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '状态 0正常 1禁用',
`created_at` int NOT NULL DEFAULT 0 COMMENT '创建时间',
`updated_at` int NOT NULL DEFAULT 0 COMMENT '修改时间',
`deleted_at` int NOT NULL DEFAULT 0 COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户收货地址表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of nl_user_receiving_address
-- ----------------------------
INSERT INTO `nl_store_classification` VALUES (1, '零售百货', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (2, '超市便利店', 1, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (3, '精品百货', 1, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (4, '折扣店', 1, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (5, '母婴店', 1, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (6, '服饰鞋帽', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (7, '男装品牌店', 6, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (8, '女装品牌店', 6, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (9, '童装店', 6, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (10, '鞋店', 6, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (11, '箱包店', 6, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (12, '美妆个护', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (13, '化妆品店', 12, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (14, '护肤品店', 12, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (15, '美发美甲店', 12, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (16, '美容院', 12, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (17, '餐饮美食', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (18, '中餐', 17, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (19, '西餐', 17, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (20, '快餐小吃', 17, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (21, '火锅烧烤', 17, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (22, '饮品甜点', 17, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (23, '住宿服务', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (24, '酒店', 23, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (25, '民宿', 23, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (26, '度假村', 23, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (27, '短租公寓', 23, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (28, '休闲娱乐', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (29, '电影院', 28, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (30, 'KTV', 28, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (31, '健身房', 28, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (32, '游乐场', 28, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (33, '酒吧咖啡馆', 28, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (34, '家居建材', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (35, '家具店', 34, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (36, '建材店', 34, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (37, '灯具店', 34, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (38, '卫浴店', 34, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (39, '数码电器', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (40, '手机店', 39, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (41, '电脑店', 39, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (42, '家电卖场', 39, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (43, '数码配件店', 39, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (44, '医疗健康', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (45, '药店', 44, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (46, '美容院', 44, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (47, '体检中心', 44, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (48, '宠物医院', 44, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (49, '教育培训', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (50, '早教机构', 49, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (51, '培训机构', 49, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (52, '语言学校', 49, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (53, '职业教育', 49, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (54, '金融服务', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (55, '银行', 54, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (56, '保险', 54, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (57, '证券', 54, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (58, '投资理财', 54, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (59, '汽车服务', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (60, '4S店', 59, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (61, '汽车维修', 59, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (62, '汽车美容', 59, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (63, '加油站', 59, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (64, '生活服务', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (65, '洗衣店', 64, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (66, '家政服务', 64, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (67, '婚庆服务', 64, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (68, '摄影机构', 64, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (69, '宠物店', 64, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (70, '文化艺术', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (71, '书店', 70, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (72, '画廊', 70, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (73, '艺术培训', 70, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (74, '乐器行', 70, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (75, '旅游服务', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (76, '旅行社', 75, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (77, '票务代理', 75, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (78, '景区景点', 75, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (79, '酒店预订', 75, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (80, '电商服务', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (81, '综合电商', 80, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (82, '垂直电商', 80, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (83, '跨境电商', 80, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (84, '社交电商', 80, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (85, '批发贸易', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (86, '服装批发', 85, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (87, '食品批发', 85, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (88, '建材批发', 85, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (89, '小商品批发', 85, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (90, '专业服务', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (91, '法律咨询', 90, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (92, '会计服务', 90, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (93, '广告传媒', 90, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (94, '设计服务', 90, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (95, '物流配送', 0, 0, 1747624544, 1747624544, 0);
INSERT INTO `nl_store_classification` VALUES (96, '快递公司', 95, 0, 1747624544, 1747624544, 0);
SET FOREIGN_KEY_CHECKS = 1;