feat: 完成多模块功能迭代与优化

1. 重构商品创建接口返回主键ID
2. 新增商品SKU管理功能
3. 补充订单收货地址手动填写支持
4. 新增仪表盘7日订单趋势统计
5. 优化前台商品详情页与购物车流程
6. 重构后台仪表盘与统计页面为ECharts图表
7. 调整后台菜单结构与权限配置
8. 更新支付宝支付配置信息
9. 修复景点描述HTML标签渲染问题
This commit is contained in:
sparksfly 2026-08-08 12:06:40 +08:00
parent 966c458348
commit 8d65afcd45
18 changed files with 910 additions and 187 deletions

View File

@ -17,6 +17,20 @@ export function deleteProduct(id: number) {
return http.delete(`/product/${id}`)
}
// ============ Product SKU ============
export function getSkuListByProductId(productId: number) {
return http.get(`/sku/product/${productId}`)
}
export function createSku(data: any) {
return http.post('/sku', data)
}
export function updateSku(data: any) {
return http.put('/sku', data)
}
export function deleteSku(id: number) {
return http.delete(`/sku/${id}`)
}
// ============ Product Category ============
export function getProductCategoryTree() {
return http.get('/product/category/tree')

View File

@ -12,10 +12,14 @@
theme="dark"
@click="handleMenuClick"
>
<a-menu-item key="/dashboard">
<DashboardOutlined />
<span>工作台</span>
</a-menu-item>
<a-sub-menu key="home">
<template #title>
<HomeOutlined />
<span>首页</span>
</template>
<a-menu-item key="/dashboard">工作台</a-menu-item>
<a-menu-item key="/statistics">数据统计</a-menu-item>
</a-sub-menu>
<a-sub-menu key="system">
<template #title>
@ -23,15 +27,9 @@
<span>系统管理</span>
</template>
<a-menu-item key="/system/admin">管理员管理</a-menu-item>
<a-menu-item key="/system/role">角色管理</a-menu-item>
<a-menu-item key="/system/log">操作日志</a-menu-item>
<a-menu-item key="/user/list">用户管理</a-menu-item>
</a-sub-menu>
<a-menu-item key="/user/list">
<UserOutlined />
<span>用户管理</span>
</a-menu-item>
<a-sub-menu key="attraction">
<template #title>
<EnvironmentOutlined />
@ -60,11 +58,6 @@
<a-menu-item key="/order/product">商品订单</a-menu-item>
</a-sub-menu>
<a-menu-item key="/travel/list">
<EditOutlined />
<span>游记管理</span>
</a-menu-item>
<a-sub-menu key="content">
<template #title>
<PictureOutlined />
@ -72,12 +65,9 @@
</template>
<a-menu-item key="/content/banner">轮播图管理</a-menu-item>
<a-menu-item key="/content/announcement">公告管理</a-menu-item>
<a-menu-item key="/travel/list">游记管理</a-menu-item>
</a-sub-menu>
<a-menu-item key="/statistics">
<BarChartOutlined />
<span>数据统计</span>
</a-menu-item>
</a-menu>
</a-layout-sider>

View File

@ -2,10 +2,15 @@
<div class="dashboard">
<a-row :gutter="20" class="mb-4">
<a-col :span="6" v-for="card in statCards" :key="card.label">
<a-card hoverable>
<div class="stat-card">
<div class="stat-value">{{ card.value }}</div>
<div class="stat-label">{{ card.label }}</div>
<a-card hoverable class="stat-card" :bordered="false">
<div class="stat-inner">
<div class="stat-icon" :style="{ background: card.bg }">
<component :is="card.icon" />
</div>
<div class="stat-info">
<div class="stat-value">{{ card.value }}</div>
<div class="stat-label">{{ card.label }}</div>
</div>
</div>
</a-card>
</a-col>
@ -13,19 +18,13 @@
<a-row :gutter="20">
<a-col :span="16">
<a-card title="销售趋势">
<div style="height: 300px">图表区域 - 近7日订单趋势</div>
<a-card title="近7日订单趋势">
<div ref="trendRef" class="chart chart-lg"></div>
</a-card>
</a-col>
<a-col :span="8">
<a-card title="热门景点">
<div style="height: 300px">
<div v-for="(item, idx) in hotAttractions" :key="idx" class="hot-item">
<span class="rank">{{ idx + 1 }}</span>
<span class="name">{{ item.name }}</span>
<span class="count">{{ item.count }}</span>
</div>
</div>
<a-card title="热门景点 Top5">
<div ref="hotRef" class="chart chart-lg"></div>
</a-card>
</a-col>
</a-row>
@ -33,62 +32,195 @@
</template>
<script setup lang="ts">
import { ref, onMounted } from 'vue'
import { ref, onMounted, onBeforeUnmount, nextTick } from 'vue'
import * as echarts from 'echarts'
import {
FileDoneOutlined,
PayCircleOutlined,
TeamOutlined,
EnvironmentOutlined,
} from '@ant-design/icons-vue'
import { getDashboardStatistics } from '@/api/dashboard'
const trendRef = ref<HTMLDivElement>()
const hotRef = ref<HTMLDivElement>()
const statCards = ref([
{ label: '今日订单', value: '-' },
{ label: '本月GMV', value: '-' },
{ label: '注册用户', value: '-' },
{ label: '景点总数', value: '-' },
{ label: '今日订单', value: '-', icon: FileDoneOutlined, bg: 'linear-gradient(135deg, #3b82f6, #60a5fa)' },
{ label: '本月GMV', value: '-', icon: PayCircleOutlined, bg: 'linear-gradient(135deg, #7c3aed, #a78bfa)' },
{ label: '注册用户', value: '-', icon: TeamOutlined, bg: 'linear-gradient(135deg, #10b981, #34d399)' },
{ label: '景点总数', value: '-', icon: EnvironmentOutlined, bg: 'linear-gradient(135deg, #f59e0b, #fbbf24)' },
])
const trend = ref<any[]>([])
const hotAttractions = ref<any[]>([])
let charts: echarts.ECharts[] = []
function initChart(el: HTMLElement, option: echarts.EChartsOption) {
const chart = echarts.init(el)
chart.setOption(option)
charts.push(chart)
}
function disposeCharts() {
charts.forEach((c) => c.dispose())
charts = []
}
function renderCharts() {
disposeCharts()
if (trendRef.value) initChart(trendRef.value, trendOption())
if (hotRef.value) initChart(hotRef.value, hotOption())
}
function trendOption(): echarts.EChartsOption {
return {
tooltip: { trigger: 'axis' },
legend: { data: ['景点订单', '商品订单'], top: 0, textStyle: { color: '#6b7280' } },
grid: { left: 48, right: 24, top: 40, bottom: 32 },
xAxis: {
type: 'category',
data: trend.value.map((i) => i.date),
axisLabel: { color: '#6b7280' },
axisLine: { lineStyle: { color: '#e5e7eb' } },
},
yAxis: {
type: 'value',
minInterval: 1,
splitLine: { lineStyle: { color: '#f3f4f6' } },
axisLabel: { color: '#6b7280' },
},
series: [
{
name: '景点订单',
type: 'bar',
barMaxWidth: 18,
data: trend.value.map((i) => i.attraction),
itemStyle: { color: '#7C3AED', borderRadius: [4, 4, 0, 0] },
},
{
name: '商品订单',
type: 'bar',
barMaxWidth: 18,
data: trend.value.map((i) => i.product),
itemStyle: { color: '#0EA5E9', borderRadius: [4, 4, 0, 0] },
},
],
}
}
function hotOption(): echarts.EChartsOption {
const names = hotAttractions.value.map((i) => i.name).reverse()
const values = hotAttractions.value.map((i) => i.count).reverse()
return {
tooltip: {
trigger: 'axis',
axisPointer: { type: 'shadow' },
formatter: (params: any) => {
const p = Array.isArray(params) ? params[0] : params
return `${p.name}<br/>订单数:${p.value}`
},
},
grid: { left: 70, right: 40, top: 10, bottom: 24 },
xAxis: { type: 'value', minInterval: 1, splitLine: { lineStyle: { color: '#f3f4f6' } }, axisLabel: { color: '#6b7280' } },
yAxis: {
type: 'category',
data: names,
axisLabel: { color: '#374151', width: 64, overflow: 'truncate' },
axisLine: { lineStyle: { color: '#e5e7eb' } },
axisTick: { show: false },
},
series: [
{
type: 'bar',
data: values,
barWidth: 14,
label: { show: true, position: 'right', color: '#6b7280' },
itemStyle: { color: '#7C3AED', borderRadius: [0, 7, 7, 0] },
},
],
}
}
function handleResize() {
charts.forEach((c) => c.resize())
}
onMounted(async () => {
try {
const res: any = await getDashboardStatistics()
const d = res.data
statCards.value = [
{ label: '今日订单', value: d.todayOrders },
{ label: '本月GMV', value: '¥' + (d.monthGmv || 0).toLocaleString() },
{ label: '注册用户', value: (d.registerUsers || 0).toLocaleString() },
{ label: '景点总数', value: d.attractionTotal },
{ ...statCards.value[0], value: d.todayOrders ?? '-' },
{ ...statCards.value[1], value: '¥' + (d.monthGmv || 0).toLocaleString() },
{ ...statCards.value[2], value: (d.registerUsers || 0).toLocaleString() },
{ ...statCards.value[3], value: d.attractionTotal ?? '-' },
]
hotAttractions.value = d.hotAttractions || []
} catch { /* mock handles */ }
trend.value = d.trend || []
} catch { /* 错误提示由拦截器处理 */ }
await nextTick()
renderCharts()
window.addEventListener('resize', handleResize)
})
onBeforeUnmount(() => {
window.removeEventListener('resize', handleResize)
disposeCharts()
})
</script>
<style scoped lang="scss">
.dashboard {
.stat-card {
text-align: center;
padding: 10px 0;
}
.stat-value {
font-size: 28px;
font-weight: bold;
color: #1890ff;
}
.stat-label {
font-size: 14px;
color: #666;
margin-top: 8px;
}
.hot-item {
display: flex;
align-items: center;
padding: 8px 0;
border-bottom: 1px solid #f0f0f0;
.rank {
width: 24px; height: 24px; border-radius: 50%; background: #e8e8e8;
display: flex; align-items: center; justify-content: center;
font-size: 12px; font-weight: bold; margin-right: 10px;
}
.name { flex: 1; font-size: 14px; }
.count { font-size: 13px; color: #999; }
}
}
.mb-4 { margin-bottom: 20px; }
.stat-card {
border-radius: 10px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.06);
}
.stat-inner {
display: flex;
align-items: center;
gap: 16px;
}
.stat-icon {
width: 52px;
height: 52px;
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
color: #fff;
font-size: 24px;
flex-shrink: 0;
}
.stat-info {
min-width: 0;
}
.stat-value {
font-size: 24px;
font-weight: 700;
color: #1f2937;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.stat-label {
font-size: 13px;
color: #9ca3af;
margin-top: 2px;
}
.chart {
width: 100%;
}
.chart-lg {
height: 320px;
}
</style>

View File

@ -108,6 +108,45 @@
<a-input v-model:value="form.tags" placeholder="多个标签用逗号分隔,如:特产,手工艺,纪念品" />
</a-form-item>
<a-divider orientation="left">规格信息</a-divider>
<a-form-item label="商品规格">
<div class="sku-editor">
<a-table
:data-source="skuList"
:columns="skuColumns"
row-key="key"
:pagination="false"
size="small"
:scroll="{ x: 760 }"
>
<template #bodyCell="{ column, record }">
<template v-if="column.dataIndex === 'name'">
<a-input v-model:value="record.name" placeholder="规格" />
</template>
<template v-else-if="column.dataIndex === 'value'">
<a-input v-model:value="record.value" placeholder="如:标准款/礼盒装" />
</template>
<template v-else-if="column.dataIndex === 'price'">
<a-input-number v-model:value="record.price" :min="0" :precision="2" style="width: 100%" />
</template>
<template v-else-if="column.dataIndex === 'stock'">
<a-input-number v-model:value="record.stock" :min="0" style="width: 100%" />
</template>
<template v-else-if="column.dataIndex === 'sort'">
<a-input-number v-model:value="record.sort" :min="0" style="width: 100%" />
</template>
<template v-else-if="column.key === 'action'">
<a-button type="link" danger size="small" @click="removeSku(record)">删除</a-button>
</template>
</template>
</a-table>
<a-button type="dashed" block style="margin-top: 8px" @click="addSku">
<PlusOutlined /> 添加规格
</a-button>
<p class="sku-tip">每个商品至少需要一个规格价格必填库存默认 0</p>
</div>
</a-form-item>
<a-divider orientation="left">其他设置</a-divider>
<a-row :gutter="24" class="other-settings">
<a-col :span="6">
@ -185,6 +224,10 @@ import {
updateProduct,
getProductById,
getProductCategoryTree,
getSkuListByProductId,
createSku,
updateSku,
deleteSku,
} from '@/api/product'
import { uploadFile } from '@/api/file'
import { message } from 'ant-design-vue'
@ -218,6 +261,36 @@ const preview = reactive({
const imageFileList = ref<any[]>([])
const skuList = ref<any[]>([])
const originalSkuIds = ref<Set<number>>(new Set())
let skuKeyCounter = 0
const skuColumns = [
{ title: '规格名称', dataIndex: 'name', width: 110 },
{ title: '规格值', dataIndex: 'value', width: 180 },
{ title: '价格', dataIndex: 'price', width: 140 },
{ title: '库存', dataIndex: 'stock', width: 120 },
{ title: '排序', dataIndex: 'sort', width: 90 },
{ title: '操作', key: 'action', width: 80 },
]
function addSku() {
skuKeyCounter += 1
skuList.value.push({
key: `new-${Date.now()}-${skuKeyCounter}`,
id: undefined,
name: '规格',
value: '',
price: undefined,
stock: 0,
sort: skuList.value.length + 1,
})
}
function removeSku(row: any) {
skuList.value = skuList.value.filter((r) => r.key !== row.key)
}
const introEditorRef = shallowRef<IDomEditor | undefined>(undefined)
const detailEditorRef = shallowRef<IDomEditor | undefined>(undefined)
const toolbarConfig: Partial<IToolbarConfig> = {}
@ -401,6 +474,17 @@ async function fetchDetail(id: number) {
status: 'done',
url,
}))
const skuRes: any = await getSkuListByProductId(data.id)
skuList.value = (skuRes.data || []).map((s: any) => ({
key: `sku-${s.id}`,
id: s.id,
name: s.name,
value: s.value,
price: s.price,
stock: s.stock,
sort: s.sort,
}))
originalSkuIds.value = new Set(skuList.value.map((r: any) => r.id))
} catch (e) {
message.error('获取商品详情失败')
console.error(e)
@ -416,23 +500,63 @@ async function handleSave() {
message.error('请选择分类')
return
}
for (const row of skuList.value) {
if (!row.value || !row.value.trim()) {
message.error('请填写规格值')
return
}
if (row.price == null || row.price < 0) {
message.error('请填写规格价格')
return
}
}
saveLoading.value = true
try {
const data = { ...form }
let productId: number | undefined = form.id
if (isEdit.value) {
await updateProduct(data)
message.success('更新成功')
} else {
await createProduct(data)
message.success('创建成功')
const res: any = await createProduct(data)
productId = res.data
}
if (productId) {
await saveSkus(productId)
}
message.success(isEdit.value ? '更新成功' : '创建成功')
router.push('/product/list')
} catch (err: any) {
message.error(err.message || '保存失败')
} finally {
saveLoading.value = false
}
}
async function saveSkus(productId: number) {
const currentIds = new Set(skuList.value.filter((r: any) => r.id).map((r: any) => r.id))
for (const id of originalSkuIds.value) {
if (!currentIds.has(id)) {
await deleteSku(id)
}
}
for (const row of skuList.value) {
const payload = {
productId,
name: row.name || '规格',
value: row.value.trim(),
price: row.price,
stock: row.stock ?? 0,
sort: row.sort ?? 0,
}
if (row.id) {
await updateSku({ id: row.id, ...payload })
} else {
await createSku(payload)
}
}
}
function handleCancel() {
router.push('/product/list')
}
@ -615,4 +739,14 @@ onBeforeUnmount(() => {
padding-inline-end: 24px;
}
}
.sku-editor {
width: 100%;
}
.sku-tip {
margin-top: 8px;
font-size: 12px;
color: #999;
}
</style>

View File

@ -1,72 +1,173 @@
<template>
<div class="statistics">
<a-card title="用户增长趋势" class="mb-4">
<div style="height: 280px">
<div v-if="userGrowth.length" class="chart-bars">
<div class="bar-group" v-for="item in userGrowth" :key="item.month">
<div class="bar" :style="{ height: (item.count / maxUserCount) * 240 + 'px' }">
<span class="bar-value">{{ item.count }}</span>
</div>
<span class="bar-label">{{ item.month }}</span>
</div>
</div>
</div>
<div ref="userGrowthRef" class="chart chart-lg"></div>
</a-card>
<a-row :gutter="20" class="mb-4">
<a-card title="月度订单统计" class="mb-4">
<div ref="orderStatsRef" class="chart chart-lg"></div>
</a-card>
<a-row :gutter="20">
<a-col :span="12">
<a-card title="景点门票销量排行">
<div v-for="(item, idx) in attractionRank" :key="idx" class="rank-item">
<span class="rank-num">{{ idx + 1 }}</span>
<span class="rank-name">{{ item.name }}</span>
<span class="rank-bar-bg"><span class="rank-bar" :style="{ width: (item.ticketSales / maxTicketSales) * 100 + '%' }"></span></span>
<span class="rank-count">{{ item.ticketSales.toLocaleString() }}</span>
</div>
<div ref="attractionRankRef" class="chart chart-rank"></div>
</a-card>
</a-col>
<a-col :span="12">
<a-card title="商品销量排行">
<div v-for="(item, idx) in productRank" :key="idx" class="rank-item">
<span class="rank-num">{{ idx + 1 }}</span>
<span class="rank-name">{{ item.name }}</span>
<span class="rank-bar-bg"><span class="rank-bar" :style="{ width: (item.sales / maxProductSales) * 100 + '%', background: '#f59e0b' }"></span></span>
<span class="rank-count">{{ item.sales.toLocaleString() }}</span>
</div>
<div ref="productRankRef" class="chart chart-rank"></div>
</a-card>
</a-col>
</a-row>
<a-card title="月度订单统计">
<div style="height: 280px">
<div v-if="orderStats.length" class="chart-lines">
<div class="line-group" v-for="item in orderStats" :key="item.month">
<div class="line-bar attraction-bar" :style="{ height: (item.attraction / maxOrderCount) * 240 + 'px' }" title="景点订单"></div>
<div class="line-bar product-bar" :style="{ height: (item.product / maxOrderCount) * 240 + 'px' }" title="商品订单"></div>
<span class="line-label">{{ item.month }}</span>
</div>
<div class="legend">
<span><span class="dot attraction-dot"></span> 景点订单</span>
<span><span class="dot product-dot"></span> 商品订单</span>
</div>
</div>
</div>
</a-card>
</div>
</template>
<script setup lang="ts">
import { ref, computed, onMounted } from 'vue'
import { ref, onMounted, onBeforeUnmount, nextTick } from 'vue'
import * as echarts from 'echarts'
import { getStatisticsOverview } from '@/api/statistics'
const userGrowthRef = ref<HTMLDivElement>()
const orderStatsRef = ref<HTMLDivElement>()
const attractionRankRef = ref<HTMLDivElement>()
const productRankRef = ref<HTMLDivElement>()
const userGrowth = ref<any[]>([])
const orderStats = ref<any[]>([])
const attractionRank = ref<any[]>([])
const productRank = ref<any[]>([])
const maxUserCount = computed(() => Math.max(...userGrowth.value.map((i: any) => i.count), 1))
const maxTicketSales = computed(() => Math.max(...attractionRank.value.map((i: any) => i.ticketSales), 1))
const maxProductSales = computed(() => Math.max(...productRank.value.map((i: any) => i.sales), 1))
const maxOrderCount = computed(() => Math.max(...orderStats.value.flatMap((i: any) => [i.attraction, i.product]), 1))
let charts: echarts.ECharts[] = []
function initChart(el: HTMLElement, option: echarts.EChartsOption) {
const chart = echarts.init(el)
chart.setOption(option)
charts.push(chart)
}
function disposeCharts() {
charts.forEach((c) => c.dispose())
charts = []
}
function renderCharts() {
disposeCharts()
if (userGrowthRef.value) initChart(userGrowthRef.value, userGrowthOption())
if (orderStatsRef.value) initChart(orderStatsRef.value, orderStatsOption())
if (attractionRankRef.value) initChart(attractionRankRef.value, rankOption(attractionRank.value.map((i: any) => ({ name: i.name, value: i.ticketSales })), '#7C3AED', '销量'))
if (productRankRef.value) initChart(productRankRef.value, rankOption(productRank.value.map((i: any) => ({ name: i.name, value: i.sales })), '#F59E0B', '销量'))
}
function userGrowthOption(): echarts.EChartsOption {
return {
tooltip: { trigger: 'axis' },
grid: { left: 48, right: 24, top: 30, bottom: 32 },
xAxis: {
type: 'category',
boundaryGap: false,
data: userGrowth.value.map((i) => i.month),
axisLine: { lineStyle: { color: '#e5e7eb' } },
axisLabel: { color: '#6b7280' },
},
yAxis: {
type: 'value',
minInterval: 1,
splitLine: { lineStyle: { color: '#f3f4f6' } },
axisLabel: { color: '#6b7280' },
},
series: [
{
name: '注册用户',
type: 'line',
smooth: true,
symbolSize: 6,
data: userGrowth.value.map((i) => i.count),
lineStyle: { color: '#7C3AED', width: 3 },
itemStyle: { color: '#7C3AED' },
areaStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: 'rgba(124, 58, 237, 0.35)' },
{ offset: 1, color: 'rgba(124, 58, 237, 0.02)' },
]),
},
},
],
}
}
function orderStatsOption(): echarts.EChartsOption {
return {
tooltip: { trigger: 'axis' },
legend: { data: ['景点订单', '商品订单'], top: 0, textStyle: { color: '#6b7280' } },
grid: { left: 48, right: 24, top: 40, bottom: 40 },
xAxis: {
type: 'category',
data: orderStats.value.map((i) => i.month),
axisLabel: { color: '#6b7280', rotate: 30 },
axisLine: { lineStyle: { color: '#e5e7eb' } },
},
yAxis: {
type: 'value',
minInterval: 1,
splitLine: { lineStyle: { color: '#f3f4f6' } },
axisLabel: { color: '#6b7280' },
},
series: [
{
name: '景点订单',
type: 'bar',
barMaxWidth: 20,
data: orderStats.value.map((i) => i.attraction),
itemStyle: { color: '#7C3AED', borderRadius: [4, 4, 0, 0] },
},
{
name: '商品订单',
type: 'bar',
barMaxWidth: 20,
data: orderStats.value.map((i) => i.product),
itemStyle: { color: '#0EA5E9', borderRadius: [4, 4, 0, 0] },
},
],
}
}
function rankOption(data: { name: string; value: number }[], color: string, unit: string): echarts.EChartsOption {
const names = data.map((d) => d.name).reverse()
const values = data.map((d) => d.value).reverse()
return {
tooltip: {
trigger: 'axis',
axisPointer: { type: 'shadow' },
formatter: (params: any) => {
const p = Array.isArray(params) ? params[0] : params
return `${p.name}<br/>${unit}${p.value}`
},
},
grid: { left: 96, right: 48, top: 10, bottom: 24 },
xAxis: { type: 'value', splitLine: { lineStyle: { color: '#f3f4f6' } }, axisLabel: { color: '#6b7280' } },
yAxis: {
type: 'category',
data: names,
axisLabel: { color: '#374151', width: 84, overflow: 'truncate' },
axisLine: { lineStyle: { color: '#e5e7eb' } },
axisTick: { show: false },
},
series: [
{
type: 'bar',
data: values,
barWidth: 14,
label: { show: true, position: 'right', color: '#6b7280' },
itemStyle: { color, borderRadius: [0, 7, 7, 0] },
},
],
}
}
function handleResize() {
charts.forEach((c) => c.resize())
}
onMounted(async () => {
try {
@ -76,43 +177,30 @@ onMounted(async () => {
orderStats.value = d.orderStats || []
attractionRank.value = d.attractionRank || []
productRank.value = d.productRank || []
} catch { /* mock handles */ }
} catch { /* 错误提示由拦截器处理 */ }
await nextTick()
renderCharts()
window.addEventListener('resize', handleResize)
})
onBeforeUnmount(() => {
window.removeEventListener('resize', handleResize)
disposeCharts()
})
</script>
<style scoped lang="scss">
.mb-4 { margin-bottom: 20px; }
.chart-bars {
display: flex; align-items: flex-end; justify-content: space-around; height: 100%; padding-top: 20px;
.bar-group { display: flex; flex-direction: column; align-items: center; flex: 1; }
.bar {
width: 30px; background: linear-gradient(to top, #1890ff, #69c0ff); border-radius: 4px 4px 0 0;
transition: height 0.5s; position: relative;
.bar-value { position: absolute; top: -20px; left: 50%; transform: translateX(-50%); font-size: 11px; color: #666; white-space: nowrap; }
}
.bar-label { margin-top: 8px; font-size: 12px; color: #999; }
.chart {
width: 100%;
}
.rank-item {
display: flex; align-items: center; padding: 6px 0; gap: 10px;
.rank-num { width: 20px; height: 20px; border-radius: 50%; background: #e8e8e8; display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: bold; }
.rank-name { width: 160px; font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rank-bar-bg { flex: 1; height: 16px; background: #f0f0f0; border-radius: 8px; overflow: hidden; }
.rank-bar { display: block; height: 100%; background: #1890ff; border-radius: 8px; transition: width 0.5s; }
.rank-count { width: 80px; text-align: right; font-size: 12px; color: #999; }
.chart-lg {
height: 300px;
}
.chart-lines {
display: flex; align-items: flex-end; justify-content: space-around; height: 100%; padding-top: 10px; position: relative;
.line-group { display: flex; flex-direction: column; align-items: center; flex: 1; gap: 2px; }
.line-bar { width: 20px; border-radius: 3px 3px 0 0; transition: height 0.5s; }
.attraction-bar { background: #1890ff; }
.product-bar { background: #f59e0b; }
.line-label { margin-top: 8px; font-size: 11px; color: #999; }
.legend { position: absolute; top: -20px; right: 0; display: flex; gap: 16px; font-size: 12px; color: #666; }
.dot { display: inline-block; width: 10px; height: 10px; border-radius: 2px; margin-right: 4px; }
.attraction-dot { background: #1890ff; }
.product-dot { background: #f59e0b; }
.chart-rank {
height: 320px;
}
</style>

View File

@ -17,4 +17,16 @@ public class DashboardStatisticsVO {
private Long attractionTotal;
private List<HotAttractionVO> hotAttractions;
private List<TrendItem> trend;
@Data
public static class TrendItem {
private String date;
private Long attraction;
private Long product;
}
}

View File

@ -21,6 +21,7 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@ -61,6 +62,7 @@ public class DashboardServiceImpl implements DashboardService {
vo.setRegisterUsers(userMapper.selectCount(null));
vo.setAttractionTotal(attractionMapper.selectCount(null));
vo.setHotAttractions(listHotAttractions());
vo.setTrend(list7DayTrend());
return vo;
}
@ -110,6 +112,27 @@ public class DashboardServiceImpl implements DashboardService {
return gmv;
}
private List<DashboardStatisticsVO.TrendItem> list7DayTrend() {
List<DashboardStatisticsVO.TrendItem> items = new ArrayList<>();
LocalDate today = LocalDate.now();
for (int i = 6; i >= 0; i--) {
LocalDateTime start = today.minusDays(i).atStartOfDay();
LocalDateTime end = start.plusDays(1);
LambdaQueryWrapper<AttractionOrder> attractionWrapper = new LambdaQueryWrapper<>();
attractionWrapper.ge(AttractionOrder::getCreateTime, start).lt(AttractionOrder::getCreateTime, end);
LambdaQueryWrapper<ProductOrder> productWrapper = new LambdaQueryWrapper<>();
productWrapper.ge(ProductOrder::getCreateTime, start).lt(ProductOrder::getCreateTime, end);
DashboardStatisticsVO.TrendItem item = new DashboardStatisticsVO.TrendItem();
item.setDate(start.toLocalDate().format(DateTimeFormatter.ofPattern("MM-dd")));
item.setAttraction(attractionOrderMapper.selectCount(attractionWrapper));
item.setProduct(productOrderMapper.selectCount(productWrapper));
items.add(item);
}
return items;
}
private List<HotAttractionVO> listHotAttractions() {
QueryWrapper<AttractionOrder> wrapper = new QueryWrapper<>();
wrapper.select("attraction_id", "COUNT(*) AS order_count")

View File

@ -12,4 +12,17 @@ public class ProductOrderCreateDTO {
private String remark;
private List<OrderItemDTO> items;
/** 未选择地址库地址时,可直接传入收货信息 */
private String consignee;
private String phone;
private String province;
private String city;
private String district;
private String detailAddress;
}

View File

@ -93,6 +93,13 @@ public class ProductOrderServiceImpl extends ServiceImpl<ProductOrderMapper, Pro
order.setCity(address.getCity());
order.setDistrict(address.getDistrict());
order.setDetailAddress(address.getDetailAddress());
} else if (StringUtils.hasText(dto.getConsignee())) {
order.setConsignee(dto.getConsignee());
order.setPhone(dto.getPhone());
order.setProvince(dto.getProvince());
order.setCity(dto.getCity());
order.setDistrict(dto.getDistrict());
order.setDetailAddress(dto.getDetailAddress());
}
baseMapper.insert(order);

View File

@ -24,9 +24,8 @@ public class ProductController {
@Operation(summary = "新增商品")
@PostMapping
public Result<Void> create(@RequestBody ProductCreateDTO dto) {
productService.create(dto);
return Result.success();
public Result<Long> create(@RequestBody ProductCreateDTO dto) {
return Result.success(productService.create(dto));
}
@Operation(summary = "修改商品")

View File

@ -5,7 +5,7 @@ import com.tourism.product.dto.*;
public interface ProductService {
void create(ProductCreateDTO dto);
Long create(ProductCreateDTO dto);
void update(ProductUpdateDTO dto);

View File

@ -32,7 +32,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
}
@Override
public void create(ProductCreateDTO dto) {
public Long create(ProductCreateDTO dto) {
Product product = new Product();
BeanUtils.copyProperties(dto, product);
product.setViewCount(0);
@ -40,6 +40,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
product.setFavoriteCount(0);
product.setScore(new BigDecimal("5.00"));
baseMapper.insert(product);
return product.getId();
}
@Override

View File

@ -46,8 +46,8 @@ rustfs:
alipay:
app-id: 2021000118699999
app-private-key: classpath:alipay/app-private-key.pem
alipay-public-key: classpath:alipay/alipay-public-key.pem
app-private-key: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCVJ8TnZD3hi8gxYOTU3WYBYh92QVMWmqbJIy37y/M3+ccdkXdTicKJN5zpvSdfDhZ9UatH1wUCq0D9V+UOtN1SlzOkzTZ1go3cN+V2PCncr4ROj8mnLJjIyekIDqq0gMzOr7cdM7evtnfrewnaiT7gVwJYPmhiX2bKK/Q3GtWRrjZJnImJNncNHpV/+7S9rUpv7UgUDHojVuNZSoV4I5zp0vra/w8G4XYLhR2OS+upe2hZSAi7K2b+3qffzFXNMTbsWkzndG5HsUEMdeSJ1aE71pG3Lx+QVpEMrGOyvIwL2Q/Gzn/Ix3GRBeuhogW5G16Sma+z2SSmM5lgm+TtCljvAgMBAAECggEAAoBPOf4hV4XrjoBsdfFcg4tssaP4y7k+MMNJQx6xbm/e2e0Vji4SOBDZrcXBQkPPNrzG3YaKi/fpOBZgPfXkfD0S3aGfVysgS+AYFfp+TTgYROT+YbJKwZs5MCxmym4agSDLNk8mtmid7DH9AVAp4MM0w9wQDg5BgARqrP3jNPUrSoviG8N2kzbzMqbmaVdnYfaOOQRCHmupQFqueQqw91VA06QjTvc50X2Mbl4DWlwVZ89bKXuUOH53fWWACxIw0iBuiBAUJHGLaTQKOel71yq/u0YoIwdXMPjpoU/RwIiMW8JDIzmtUpqwhjwncSu78hyWmRzp2WOBXXBlzarSMQKBgQDlXsZo8NgfBSsz8hiegaKbhqX4RgjrOaH6LIwpdfmOqXJ1DdGdsoBR5RaVqpA6IKqBzP9WR49g+5EiS5Jh56S7by5Johy1ZWqoGnF6rwSpBUyhx1AEeictYykRWqxgqcoyr8Evet+2HmTFrlRsR5ReTJB1GcrahSgO//5srGrPGQKBgQCmeON8OPabbOyHnbRAVxsNocfZzebgDO6F8G2R4b9eJNbRiAC66gjoWdNpZOkuiS4hgZ/Son2T2xPBtYn7N7jEF406XLo1JtUwpb27oKYqm/aCruhT4W3/qI6YaAgAcKnLFQs9yd84AS9xrFTlTlAAE5jJdoeo3WkBp7eAn4RRRwKBgQCzZxnRYu/n82cDTkyrTcId24ddVYoMUhu7TbSjiT8Usrxvict2iPONGp47mhkNHhe/RtRAa+BdfubZ6DoqkcBrSl7uAPprd1OhAG3aA6KlgRubPgX8On8CJRkuFbnWMXeRhZ6YwIbSL5uqctxdhO8rgr9KmE3t9VCLyvb5kTJJoQKBgCBeayUxUkogYNFxyaWlCj6ZUWm5ToYMHajvee6erX4ZvadaQYIWlYrQRHo+w9Rnmg+ry67CJ5bDR1EoAl9Vk1iVl8FcXFyPY26lG4JLF2Q7lTAN4GDG+YN3e9qIh93GCk3RlrD5+qxCFr6MmqlHk+if5tptcK1V99/5g4W//pNrAoGAcVi20SA3QEhEhClQK8q2RZ7MzwVKwSlMOwFfWBC7y26dHQejbZ1T5jxUtKUcPa5UbwP1MBXPGkeOi1V9RXMcUrP+LKfgDUGb5d7eQxRaxMgC7hLs1WiiSM+8kKPYryI/bwPr0wENBsOlWqqj8CbtjbyDkJ1eyoToPVOIPF7P90k=
alipay-public-key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl54qsMxRkuisHTif0XyMG/ct3+Dx44gC5yj5k729AAJxXd5Y7uFit+FeN805W7ltm0sXB/gFNKsxe0ZJv5N+CO3/GfFtxDZK3FGxgkzH+6isXOI2pl2bOv5jWh/LcyOckA0SAq/p0AUjy0m8/FNJmq321q9SCz8UYSq188iYgawPdUtbuhwUlX2pJTWW25c5qSyNBeiXViODqkeQ9PhBYaEivRa/iY536ypRpEJ8QKcWcfj0INhh7gvDdbCSveRakCAxTkklMtahmkSuUlzVRhAkzhShX+1U2l7tUScimqEzjYJ2FdvhYYRQxjOt054hPug67ptNxPutGhPOI4L8FwIDAQAB
gateway-url: https://openapi-sandbox.dl.alipaydev.com/gateway.do
notify-url: /api/payment/alipay/notify
notify-url: http://47.113.122.255:10080
return-url: /api/payment/alipay/return

View File

@ -93,3 +93,18 @@ export function cancelProductOrder(data: { id: number; cancelReason?: string })
export function receiveProductOrder(id: number) {
return http.put<void>(`/order/product/${id}/receive`)
}
export interface ProductOrderCreateDTO {
items: { productId: number; skuId: number; quantity: number }[]
remark?: string
consignee?: string
phone?: string
province?: string
city?: string
district?: string
detailAddress?: string
}
export function createProductOrder(data: ProductOrderCreateDTO) {
return http.post<ProductOrder>('/order/product', data)
}

View File

@ -30,7 +30,7 @@
</div>
<div class="card-body">
<h3>{{ item.name }}</h3>
<p>{{ item.description || '' }}</p>
<p>{{ stripHtml(item.description) }}</p>
<div class="card-meta">
<span>&#9733; {{ item.score || '暂无' }}</span>
<span class="card-city">{{ item.city || '' }}</span>
@ -65,6 +65,12 @@ const total = ref(0)
const current = ref(1)
const pageSize = ref(12)
function stripHtml(html: string) {
const div = document.createElement('div')
div.innerHTML = html || ''
return div.textContent || div.innerText || ''
}
const placeholderColors = ['#667eea', '#f093fb', '#4facfe', '#43e97b', '#fa709a', '#a18cd1', '#fccb90', '#d57eeb']
function placeholderColor(name: string): string {

View File

@ -6,11 +6,24 @@
<div class="order-main">
<div class="section-card" v-if="!isAttractionOrder">
<h3>收货地址</h3>
<div class="address-selected" v-if="selectedAddress">
<p><strong>{{ selectedAddress.consignee }}</strong> {{ selectedAddress.phone }}</p>
<p>{{ selectedAddress.province }}{{ selectedAddress.city }}{{ selectedAddress.district }}{{ selectedAddress.detail }}</p>
<div class="form-row">
<label>收货人</label>
<el-input v-model="addressForm.consignee" placeholder="请输入收货人姓名" />
</div>
<div class="form-row">
<label>手机号</label>
<el-input v-model="addressForm.phone" placeholder="请输入手机号" maxlength="11" />
</div>
<div class="form-row">
<label>所在地区</label>
<el-input v-model="addressForm.province" placeholder="省" style="width: 30%" />
<el-input v-model="addressForm.city" placeholder="市" style="width: 30%" />
<el-input v-model="addressForm.district" placeholder="区/县" style="width: 30%" />
</div>
<div class="form-row">
<label>详细地址</label>
<el-input v-model="addressForm.detailAddress" placeholder="街道、门牌号等" />
</div>
<el-button text type="primary" @click="showAddressDialog = true">选择地址</el-button>
</div>
<div class="section-card" v-if="isAttractionOrder">
@ -52,7 +65,8 @@
<div class="section-card" v-if="!isAttractionOrder">
<h3>订单商品</h3>
<div v-for="item in cartStore.items" :key="item.skuId" class="order-item">
<div v-if="orderItems.length === 0" class="empty-tip">没有需要下单的商品</div>
<div v-for="item in orderItems" :key="item.skuId" class="order-item">
<div class="item-img" style="background: linear-gradient(135deg, #667eea, #764ba2)">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="rgba(255,255,255,0.3)" stroke-width="1.5"><rect x="3" y="7" width="18" height="14" rx="2"/><path d="M16 7V5a2 2 0 00-4-2h-2a2 2 0 00-2 2v2"/></svg>
</div>
@ -99,31 +113,41 @@
</template>
<script setup lang="ts">
import { ref, computed } from 'vue'
import { ref, reactive, computed } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import { useCartStore } from '@/stores/cart'
import { ElMessage } from 'element-plus'
import { createAttractionOrder } from '@/api/order'
import { createAttractionOrder, createProductOrder } from '@/api/order'
const route = useRoute()
const router = useRouter()
const cartStore = useCartStore()
const paymentMethod = ref('alipay')
const showAddressDialog = ref(false)
const submitting = ref(false)
const selectedAddress = ref({ consignee: '张三', phone: '13800138000', province: '安徽省', city: '黄山市', district: '屯溪区', detail: '黄山大道88号' })
const addressForm = reactive({
consignee: '',
phone: '',
province: '',
city: '',
district: '',
detailAddress: '',
})
const isAttractionOrder = computed(() => route.query.type === 'attraction')
const isDirectOrder = computed(() => route.query.type === 'direct')
const attractionOrder = ref<any>(history.state || {})
const selectedTickets = computed<any[]>(() => attractionOrder.value.tickets || [])
const directOrder = ref<any>(history.state || {})
const directItems = computed<any[]>(() => directOrder.value.items || [])
const orderItems = computed<any[]>(() => (isDirectOrder.value ? directItems.value : cartStore.items))
const totalPrice = computed(() => {
if (isAttractionOrder.value) {
return selectedTickets.value.reduce((s: number, t: any) => s + Number(t.price || 0) * Number(t.quantity || 0), 0)
}
return cartStore.totalPrice
return orderItems.value.reduce((s: number, i: any) => s + Number(i.price || 0) * Number(i.quantity || 0), 0)
})
const contactName = ref('')
@ -185,14 +209,57 @@ async function submitAttractionOrder() {
}
}
async function submitProductOrder() {
if (orderItems.value.length === 0) {
ElMessage.warning('没有需要下单的商品')
return
}
if (!addressForm.consignee.trim()
|| !/^1\d{10}$/.test(addressForm.phone.trim())
|| !addressForm.province.trim()
|| !addressForm.city.trim()
|| !addressForm.district.trim()
|| !addressForm.detailAddress.trim()) {
ElMessage.warning('请完整填写收货地址')
return
}
submitting.value = true
try {
const res: any = await createProductOrder({
items: orderItems.value.map((i: any) => ({
productId: i.productId,
skuId: i.skuId,
quantity: i.quantity,
})),
consignee: addressForm.consignee.trim(),
phone: addressForm.phone.trim(),
province: addressForm.province.trim(),
city: addressForm.city.trim(),
district: addressForm.district.trim(),
detailAddress: addressForm.detailAddress.trim(),
})
const order = res.data
if (!isDirectOrder.value) {
cartStore.clear()
}
router.push({
path: '/payment',
query: { type: 'product', ids: String(order.id), amount: Number(order.actualAmount ?? order.totalPrice).toFixed(2) },
})
} catch {
// axios
} finally {
submitting.value = false
}
}
function submitOrder() {
if (isAttractionOrder.value) {
submitAttractionOrder()
return
}
ElMessage.success('下单成功')
cartStore.clear()
setTimeout(() => { router.push('/user/profile?orders=product') }, 1000)
submitProductOrder()
}
</script>

View File

@ -91,9 +91,11 @@ import { ref, computed, onMounted } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import { ElMessage } from 'element-plus'
import { getProductDetail, getProductSkus } from '@/api/product'
import { useCartStore } from '@/stores/cart'
const route = useRoute()
const router = useRouter()
const cartStore = useCartStore()
const loading = ref(true)
const detail = ref<any>(null)
@ -140,12 +142,47 @@ function selectSku(sku: any) {
selectedSkuId.value = sku.id
}
const selectedSku = computed(() => skus.value.find((s: any) => s.id === selectedSkuId.value) || skus.value[0] || null)
function addToCart() {
const sku = selectedSku.value
if (!sku) {
ElMessage.warning('请先选择规格')
return
}
cartStore.addItem({
productId: detail.value.id,
productName: detail.value.name,
skuId: sku.id,
skuName: `${sku.name || ''}${sku.value || ''}`.trim(),
image: detail.value.coverImage || '',
price: Number(sku.price),
quantity: quantity.value,
})
ElMessage.success('已加入购物车')
}
function handleBuy() {
router.push('/order/confirm')
const sku = selectedSku.value
if (!sku) {
ElMessage.warning('请先选择规格')
return
}
router.push({
path: '/order/confirm',
query: { type: 'direct' },
state: {
items: [{
productId: detail.value.id,
productName: detail.value.name,
skuId: sku.id,
skuName: `${sku.name || ''}${sku.value || ''}`.trim(),
image: detail.value.coverImage || '',
price: Number(sku.price),
quantity: quantity.value,
}],
},
})
}
onMounted(async () => {

View File

@ -11,7 +11,7 @@
Target Server Version : 80046 (8.0.46)
File Encoding : 65001
Date: 08/08/2026 11:39:30
Date: 08/08/2026 12:06:24
*/
SET NAMES utf8mb4;
@ -71,7 +71,7 @@ CREATE TABLE `admin` (
-- Records of admin
-- ----------------------------
BEGIN;
INSERT INTO `admin` (`id`, `username`, `password`, `name`, `phone`, `email`, `avatar`, `status`, `last_login_time`, `last_login_ip`, `create_time`, `update_time`, `is_deleted`) VALUES (1, 'admin', '$2a$10$fli.rv1m/pqtPzSIly3Lqu4cx77VYnZUY4cXHcCzEHUn/N32tfJVy', '系统管理员', NULL, NULL, NULL, 1, '2026-08-08 11:24:41', NULL, '2026-08-05 21:39:11', '2026-08-05 21:47:02', 0);
INSERT INTO `admin` (`id`, `username`, `password`, `name`, `phone`, `email`, `avatar`, `status`, `last_login_time`, `last_login_ip`, `create_time`, `update_time`, `is_deleted`) VALUES (1, 'admin', '$2a$10$fli.rv1m/pqtPzSIly3Lqu4cx77VYnZUY4cXHcCzEHUn/N32tfJVy', '系统管理员', NULL, NULL, NULL, 1, '2026-08-08 11:56:02', NULL, '2026-08-05 21:39:11', '2026-08-05 21:47:02', 0);
COMMIT;
-- ----------------------------
@ -191,7 +191,7 @@ INSERT INTO `attraction` (`id`, `name`, `category_id`, `city`, `address`, `latit
INSERT INTO `attraction` (`id`, `name`, `category_id`, `city`, `address`, `latitude`, `longitude`, `cover_image`, `images`, `video_url`, `description`, `open_time`, `play_time`, `traffic_info`, `tags`, `is_hot`, `is_recommend`, `status`, `view_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (16, '三亚亚龙湾', 5, '三亚市', '三亚市吉阳区亚龙湾路', 18.220000, 109.640000, 'https://picsum.photos/seed/attraction-cover-14/1200/800', '[\"https://picsum.photos/seed/attraction-img-14-1/800/600\", \"https://picsum.photos/seed/attraction-img-14-2/800/600\", \"https://picsum.photos/seed/attraction-img-14-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/Sintel.mp4', '<h3>景点介绍</h3><p><strong>三亚亚龙湾</strong>位于三亚市,是极具代表性的旅游目的地,兼具自然景观与人文底蕴,深受中外游客喜爱。</p><p>景区配套设施完善,四季景色各异,适合摄影、休闲度假与亲子出游,是感受当地文化的绝佳窗口。</p><ul><li><b>开放时间:</b>全天开放</li><li><b>建议游玩:</b>半天</li><li><b>特色标签:</b>海滨度假,阳光沙滩,潜水</li></ul><p><b>交通信息:</b>市区乘公交15路/24路可达</p><p><i>温馨提示:节假日期间游客较多,建议提前规划行程、错峰出行,注意安全。</i></p>', '全天开放', '半天', '市区乘公交15路/24路可达', '海滨度假,阳光沙滩,潜水', 0, 0, 1, 0, 0, 5.00, '2026-08-08 10:45:08', '2026-08-08 10:45:08', 0);
INSERT INTO `attraction` (`id`, `name`, `category_id`, `city`, `address`, `latitude`, `longitude`, `cover_image`, `images`, `video_url`, `description`, `open_time`, `play_time`, `traffic_info`, `tags`, `is_hot`, `is_recommend`, `status`, `view_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (17, '丽江古城', 2, '丽江市', '丽江市古城区', 26.872000, 100.230000, 'https://picsum.photos/seed/attraction-cover-15/1200/800', '[\"https://picsum.photos/seed/attraction-img-15-1/800/600\", \"https://picsum.photos/seed/attraction-img-15-2/800/600\", \"https://picsum.photos/seed/attraction-img-15-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4', '<h3>景点介绍</h3><p><strong>丽江古城</strong>位于丽江市,是极具代表性的旅游目的地,兼具自然景观与人文底蕴,深受中外游客喜爱。</p><p>景区配套设施完善,四季景色各异,适合摄影、休闲度假与亲子出游,是感受当地文化的绝佳窗口。</p><ul><li><b>开放时间:</b>全天开放</li><li><b>建议游玩:</b>1天</li><li><b>特色标签:</b>世界遗产,古城,纳西文化</li></ul><p><b>交通信息:</b>丽江三义机场乘机场大巴至古城</p><p><i>温馨提示:节假日期间游客较多,建议提前规划行程、错峰出行,注意安全。</i></p>', '全天开放', '1天', '丽江三义机场乘机场大巴至古城', '世界遗产,古城,纳西文化', 1, 0, 1, 0, 0, 5.00, '2026-08-08 10:45:08', '2026-08-08 10:45:08', 0);
INSERT INTO `attraction` (`id`, `name`, `category_id`, `city`, `address`, `latitude`, `longitude`, `cover_image`, `images`, `video_url`, `description`, `open_time`, `play_time`, `traffic_info`, `tags`, `is_hot`, `is_recommend`, `status`, `view_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (18, '大理洱海', 1, '大理市', '云南省大理市', 25.740000, 100.180000, 'https://picsum.photos/seed/attraction-cover-16/1200/800', '[\"https://picsum.photos/seed/attraction-img-16-1/800/600\", \"https://picsum.photos/seed/attraction-img-16-2/800/600\", \"https://picsum.photos/seed/attraction-img-16-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4', '<h3>景点介绍</h3><p><strong>大理洱海</strong>位于大理市,是极具代表性的旅游目的地,兼具自然景观与人文底蕴,深受中外游客喜爱。</p><p>景区配套设施完善,四季景色各异,适合摄影、休闲度假与亲子出游,是感受当地文化的绝佳窗口。</p><ul><li><b>开放时间:</b>全天开放</li><li><b>建议游玩:</b>1天</li><li><b>特色标签:</b>自然风光,高原湖泊,风花雪月</li></ul><p><b>交通信息:</b>大理站乘环海巴士或租车环湖</p><p><i>温馨提示:节假日期间游客较多,建议提前规划行程、错峰出行,注意安全。</i></p>', '全天开放', '1天', '大理站乘环海巴士或租车环湖', '自然风光,高原湖泊,风花雪月', 0, 0, 1, 0, 0, 5.00, '2026-08-08 10:45:08', '2026-08-08 10:45:08', 0);
INSERT INTO `attraction` (`id`, `name`, `category_id`, `city`, `address`, `latitude`, `longitude`, `cover_image`, `images`, `video_url`, `description`, `open_time`, `play_time`, `traffic_info`, `tags`, `is_hot`, `is_recommend`, `status`, `view_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (19, '成都大熊猫繁育研究基地', 3, '成都市', '成都市成华区熊猫大道1375号', 30.733300, 104.143300, 'https://picsum.photos/seed/attraction-cover-17/1200/800', '[\"https://picsum.photos/seed/attraction-img-17-1/800/600\", \"https://picsum.photos/seed/attraction-img-17-2/800/600\", \"https://picsum.photos/seed/attraction-img-17-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4', '<h3>景点介绍</h3><p><strong>成都大熊猫繁育研究基地</strong>位于成都市,是极具代表性的旅游目的地,兼具自然景观与人文底蕴,深受中外游客喜爱。</p><p>景区配套设施完善,四季景色各异,适合摄影、休闲度假与亲子出游,是感受当地文化的绝佳窗口。</p><ul><li><b>开放时间:</b>07:30-18:00</li><li><b>建议游玩:</b>3-4小时</li><li><b>特色标签:</b>国宝大熊猫,主题公园,亲子游</li></ul><p><b>交通信息:</b>地铁3号线熊猫大道站换乘公交</p><p><i>温馨提示:节假日期间游客较多,建议提前规划行程、错峰出行,注意安全。</i></p>', '07:30-18:00', '3-4小时', '地铁3号线熊猫大道站换乘公交', '国宝大熊猫,主题公园,亲子游', 0, 1, 1, 0, 0, 5.00, '2026-08-08 10:45:08', '2026-08-08 10:45:08', 0);
INSERT INTO `attraction` (`id`, `name`, `category_id`, `city`, `address`, `latitude`, `longitude`, `cover_image`, `images`, `video_url`, `description`, `open_time`, `play_time`, `traffic_info`, `tags`, `is_hot`, `is_recommend`, `status`, `view_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (19, '成都大熊猫繁育研究基地', 3, '成都市', '成都市成华区熊猫大道1375号', 30.733300, 104.143300, 'https://picsum.photos/seed/attraction-cover-17/1200/800', '[\"https://picsum.photos/seed/attraction-img-17-1/800/600\", \"https://picsum.photos/seed/attraction-img-17-2/800/600\", \"https://picsum.photos/seed/attraction-img-17-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4', '<h3>景点介绍</h3><p><strong>成都大熊猫繁育研究基地</strong>位于成都市,是极具代表性的旅游目的地,兼具自然景观与人文底蕴,深受中外游客喜爱。</p><p>景区配套设施完善,四季景色各异,适合摄影、休闲度假与亲子出游,是感受当地文化的绝佳窗口。</p><ul><li><b>开放时间:</b>07:30-18:00</li><li><b>建议游玩:</b>3-4小时</li><li><b>特色标签:</b>国宝大熊猫,主题公园,亲子游</li></ul><p><b>交通信息:</b>地铁3号线熊猫大道站换乘公交</p><p><i>温馨提示:节假日期间游客较多,建议提前规划行程、错峰出行,注意安全。</i></p>', '07:30-18:00', '3-4小时', '地铁3号线熊猫大道站换乘公交', '国宝大熊猫,主题公园,亲子游', 0, 1, 1, 1, 0, 5.00, '2026-08-08 10:45:08', '2026-08-08 10:45:08', 0);
INSERT INTO `attraction` (`id`, `name`, `category_id`, `city`, `address`, `latitude`, `longitude`, `cover_image`, `images`, `video_url`, `description`, `open_time`, `play_time`, `traffic_info`, `tags`, `is_hot`, `is_recommend`, `status`, `view_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (20, '西安秦始皇兵马俑博物馆', 4, '西安市', '西安市临潼区秦陵北路', 34.384100, 109.278500, 'https://picsum.photos/seed/attraction-cover-18/1200/800', '[\"https://picsum.photos/seed/attraction-img-18-1/800/600\", \"https://picsum.photos/seed/attraction-img-18-2/800/600\", \"https://picsum.photos/seed/attraction-img-18-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerEscapes.mp4', '<h3>景点介绍</h3><p><strong>西安秦始皇兵马俑博物馆</strong>位于西安市,是极具代表性的旅游目的地,兼具自然景观与人文底蕴,深受中外游客喜爱。</p><p>景区配套设施完善,四季景色各异,适合摄影、休闲度假与亲子出游,是感受当地文化的绝佳窗口。</p><ul><li><b>开放时间:</b>08:30-17:00</li><li><b>建议游玩:</b>3小时</li><li><b>特色标签:</b>博物馆,世界遗产,秦代文物</li></ul><p><b>交通信息:</b>地铁9号线华清池站转游5路</p><p><i>温馨提示:节假日期间游客较多,建议提前规划行程、错峰出行,注意安全。</i></p>', '08:30-17:00', '3小时', '地铁9号线华清池站转游5路', '博物馆,世界遗产,秦代文物', 1, 0, 1, 0, 0, 5.00, '2026-08-08 10:45:08', '2026-08-08 10:45:08', 0);
INSERT INTO `attraction` (`id`, `name`, `category_id`, `city`, `address`, `latitude`, `longitude`, `cover_image`, `images`, `video_url`, `description`, `open_time`, `play_time`, `traffic_info`, `tags`, `is_hot`, `is_recommend`, `status`, `view_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (21, '华山', 1, '渭南市', '渭南市华阴市华山镇', 34.486700, 110.085000, 'https://picsum.photos/seed/attraction-cover-19/1200/800', '[\"https://picsum.photos/seed/attraction-img-19-1/800/600\", \"https://picsum.photos/seed/attraction-img-19-2/800/600\", \"https://picsum.photos/seed/attraction-img-19-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/Sintel.mp4', '<h3>景点介绍</h3><p><strong>华山</strong>位于渭南市,是极具代表性的旅游目的地,兼具自然景观与人文底蕴,深受中外游客喜爱。</p><p>景区配套设施完善,四季景色各异,适合摄影、休闲度假与亲子出游,是感受当地文化的绝佳窗口。</p><ul><li><b>开放时间:</b>全天开放</li><li><b>建议游玩:</b>1天</li><li><b>特色标签:</b>自然风光,奇险天下第一山,日出</li></ul><p><b>交通信息:</b>高铁华山北站乘免费公交至游客中心</p><p><i>温馨提示:节假日期间游客较多,建议提前规划行程、错峰出行,注意安全。</i></p>', '全天开放', '1天', '高铁华山北站乘免费公交至游客中心', '自然风光,奇险天下第一山,日出', 0, 0, 1, 0, 0, 5.00, '2026-08-08 10:45:08', '2026-08-08 10:45:08', 0);
INSERT INTO `attraction` (`id`, `name`, `category_id`, `city`, `address`, `latitude`, `longitude`, `cover_image`, `images`, `video_url`, `description`, `open_time`, `play_time`, `traffic_info`, `tags`, `is_hot`, `is_recommend`, `status`, `view_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (22, '敦煌莫高窟', 2, '敦煌市', '甘肃省敦煌市东南25公里', 40.035900, 94.810000, 'https://picsum.photos/seed/attraction-cover-20/1200/800', '[\"https://picsum.photos/seed/attraction-img-20-1/800/600\", \"https://picsum.photos/seed/attraction-img-20-2/800/600\", \"https://picsum.photos/seed/attraction-img-20-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4', '<h3>景点介绍</h3><p><strong>敦煌莫高窟</strong>位于敦煌市,是极具代表性的旅游目的地,兼具自然景观与人文底蕴,深受中外游客喜爱。</p><p>景区配套设施完善,四季景色各异,适合摄影、休闲度假与亲子出游,是感受当地文化的绝佳窗口。</p><ul><li><b>开放时间:</b>08:00-18:00</li><li><b>建议游玩:</b>3-4小时</li><li><b>特色标签:</b>世界遗产,石窟艺术,丝路文化</li></ul><p><b>交通信息:</b>敦煌市区乘旅游专线车</p><p><i>温馨提示:节假日期间游客较多,建议提前规划行程、错峰出行,注意安全。</i></p>', '08:00-18:00', '3-4小时', '敦煌市区乘旅游专线车', '世界遗产,石窟艺术,丝路文化', 0, 0, 1, 0, 0, 5.00, '2026-08-08 10:45:08', '2026-08-08 10:45:08', 0);
@ -199,7 +199,7 @@ INSERT INTO `attraction` (`id`, `name`, `category_id`, `city`, `address`, `latit
INSERT INTO `attraction` (`id`, `name`, `category_id`, `city`, `address`, `latitude`, `longitude`, `cover_image`, `images`, `video_url`, `description`, `open_time`, `play_time`, `traffic_info`, `tags`, `is_hot`, `is_recommend`, `status`, `view_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (24, '厦门鼓浪屿', 5, '厦门市', '厦门市思明区鼓浪屿', 24.447800, 118.065000, 'https://picsum.photos/seed/attraction-cover-22/1200/800', '[\"https://picsum.photos/seed/attraction-img-22-1/800/600\", \"https://picsum.photos/seed/attraction-img-22-2/800/600\", \"https://picsum.photos/seed/attraction-img-22-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4', '<h3>景点介绍</h3><p><strong>厦门鼓浪屿</strong>位于厦门市,是极具代表性的旅游目的地,兼具自然景观与人文底蕴,深受中外游客喜爱。</p><p>景区配套设施完善,四季景色各异,适合摄影、休闲度假与亲子出游,是感受当地文化的绝佳窗口。</p><ul><li><b>开放时间:</b>全天开放</li><li><b>建议游玩:</b>半天</li><li><b>特色标签:</b>海滨度假,世界遗产,万国建筑</li></ul><p><b>交通信息:</b>厦门轮渡码头乘船约10分钟</p><p><i>温馨提示:节假日期间游客较多,建议提前规划行程、错峰出行,注意安全。</i></p>', '全天开放', '半天', '厦门轮渡码头乘船约10分钟', '海滨度假,世界遗产,万国建筑', 0, 0, 1, 0, 0, 5.00, '2026-08-08 10:45:08', '2026-08-08 10:45:08', 0);
INSERT INTO `attraction` (`id`, `name`, `category_id`, `city`, `address`, `latitude`, `longitude`, `cover_image`, `images`, `video_url`, `description`, `open_time`, `play_time`, `traffic_info`, `tags`, `is_hot`, `is_recommend`, `status`, `view_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (25, '广州长隆旅游度假区', 3, '广州市', '广州市番禺区汉溪大道东299号', 22.995000, 113.320000, 'https://picsum.photos/seed/attraction-cover-23/1200/800', '[\"https://picsum.photos/seed/attraction-img-23-1/800/600\", \"https://picsum.photos/seed/attraction-img-23-2/800/600\", \"https://picsum.photos/seed/attraction-img-23-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerEscapes.mp4', '<h3>景点介绍</h3><p><strong>广州长隆旅游度假区</strong>位于广州市,是极具代表性的旅游目的地,兼具自然景观与人文底蕴,深受中外游客喜爱。</p><p>景区配套设施完善,四季景色各异,适合摄影、休闲度假与亲子出游,是感受当地文化的绝佳窗口。</p><ul><li><b>开放时间:</b>09:30-18:00</li><li><b>建议游玩:</b>1天</li><li><b>特色标签:</b>主题乐园,野生动物园,亲子游</li></ul><p><b>交通信息:</b>地铁3号线汉溪长隆站直达</p><p><i>温馨提示:节假日期间游客较多,建议提前规划行程、错峰出行,注意安全。</i></p>', '09:30-18:00', '1天', '地铁3号线汉溪长隆站直达', '主题乐园,野生动物园,亲子游', 0, 0, 1, 0, 0, 5.00, '2026-08-08 10:45:08', '2026-08-08 10:45:08', 0);
INSERT INTO `attraction` (`id`, `name`, `category_id`, `city`, `address`, `latitude`, `longitude`, `cover_image`, `images`, `video_url`, `description`, `open_time`, `play_time`, `traffic_info`, `tags`, `is_hot`, `is_recommend`, `status`, `view_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (26, '哈尔滨冰雪大世界', 3, '哈尔滨市', '哈尔滨市松北区太阳岛西区', 45.790000, 126.590000, 'https://picsum.photos/seed/attraction-cover-24/1200/800', '[\"https://picsum.photos/seed/attraction-img-24-1/800/600\", \"https://picsum.photos/seed/attraction-img-24-2/800/600\", \"https://picsum.photos/seed/attraction-img-24-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/Sintel.mp4', '<h3>景点介绍</h3><p><strong>哈尔滨冰雪大世界</strong>位于哈尔滨市,是极具代表性的旅游目的地,兼具自然景观与人文底蕴,深受中外游客喜爱。</p><p>景区配套设施完善,四季景色各异,适合摄影、休闲度假与亲子出游,是感受当地文化的绝佳窗口。</p><ul><li><b>开放时间:</b>11:00-21:30</li><li><b>建议游玩:</b>3-4小时</li><li><b>特色标签:</b>冰雪主题,冰雕雪雕,冬季度假</li></ul><p><b>交通信息:</b>地铁2号线太阳岛站步行可达</p><p><i>温馨提示:节假日期间游客较多,建议提前规划行程、错峰出行,注意安全。</i></p>', '11:00-21:30', '3-4小时', '地铁2号线太阳岛站步行可达', '冰雪主题,冰雕雪雕,冬季度假', 1, 0, 1, 0, 0, 5.00, '2026-08-08 10:45:08', '2026-08-08 10:45:08', 0);
INSERT INTO `attraction` (`id`, `name`, `category_id`, `city`, `address`, `latitude`, `longitude`, `cover_image`, `images`, `video_url`, `description`, `open_time`, `play_time`, `traffic_info`, `tags`, `is_hot`, `is_recommend`, `status`, `view_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (27, '三亚蜈支洲岛', 5, '三亚市', '三亚市海棠区蜈支洲岛', 18.310000, 109.760000, 'https://picsum.photos/seed/attraction-cover-25/1200/800', '[\"https://picsum.photos/seed/attraction-img-25-1/800/600\", \"https://picsum.photos/seed/attraction-img-25-2/800/600\", \"https://picsum.photos/seed/attraction-img-25-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4', '<h3>景点介绍</h3><p><strong>三亚蜈支洲岛</strong>位于三亚市,是极具代表性的旅游目的地,兼具自然景观与人文底蕴,深受中外游客喜爱。</p><p>景区配套设施完善,四季景色各异,适合摄影、休闲度假与亲子出游,是感受当地文化的绝佳窗口。</p><ul><li><b>开放时间:</b>08:00-17:30</li><li><b>建议游玩:</b>1天</li><li><b>特色标签:</b>海滨度假,潜水胜地,海岛风光</li></ul><p><b>交通信息:</b>海棠湾码头乘船约20分钟上岛</p><p><i>温馨提示:节假日期间游客较多,建议提前规划行程、错峰出行,注意安全。</i></p>', '08:00-17:30', '1天', '海棠湾码头乘船约20分钟上岛', '海滨度假,潜水胜地,海岛风光', 0, 1, 1, 0, 0, 5.00, '2026-08-08 10:45:09', '2026-08-08 10:45:09', 0);
INSERT INTO `attraction` (`id`, `name`, `category_id`, `city`, `address`, `latitude`, `longitude`, `cover_image`, `images`, `video_url`, `description`, `open_time`, `play_time`, `traffic_info`, `tags`, `is_hot`, `is_recommend`, `status`, `view_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (27, '三亚蜈支洲岛', 5, '三亚市', '三亚市海棠区蜈支洲岛', 18.310000, 109.760000, 'https://picsum.photos/seed/attraction-cover-25/1200/800', '[\"https://picsum.photos/seed/attraction-img-25-1/800/600\", \"https://picsum.photos/seed/attraction-img-25-2/800/600\", \"https://picsum.photos/seed/attraction-img-25-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4', '<h3>景点介绍</h3><p><strong>三亚蜈支洲岛</strong>位于三亚市,是极具代表性的旅游目的地,兼具自然景观与人文底蕴,深受中外游客喜爱。</p><p>景区配套设施完善,四季景色各异,适合摄影、休闲度假与亲子出游,是感受当地文化的绝佳窗口。</p><ul><li><b>开放时间:</b>08:00-17:30</li><li><b>建议游玩:</b>1天</li><li><b>特色标签:</b>海滨度假,潜水胜地,海岛风光</li></ul><p><b>交通信息:</b>海棠湾码头乘船约20分钟上岛</p><p><i>温馨提示:节假日期间游客较多,建议提前规划行程、错峰出行,注意安全。</i></p>', '08:00-17:30', '1天', '海棠湾码头乘船约20分钟上岛', '海滨度假,潜水胜地,海岛风光', 0, 1, 1, 2, 0, 5.00, '2026-08-08 10:45:09', '2026-08-08 10:45:09', 0);
INSERT INTO `attraction` (`id`, `name`, `category_id`, `city`, `address`, `latitude`, `longitude`, `cover_image`, `images`, `video_url`, `description`, `open_time`, `play_time`, `traffic_info`, `tags`, `is_hot`, `is_recommend`, `status`, `view_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (28, '埃菲尔铁塔', 2, '巴黎', '法国巴黎战神广场', 48.858400, 2.294500, 'https://picsum.photos/seed/attraction-cover-26/1200/800', '[\"https://picsum.photos/seed/attraction-img-26-1/800/600\", \"https://picsum.photos/seed/attraction-img-26-2/800/600\", \"https://picsum.photos/seed/attraction-img-26-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4', '<h3>景点介绍</h3><p><strong>埃菲尔铁塔</strong>位于巴黎,是极具代表性的旅游目的地,兼具自然景观与人文底蕴,深受中外游客喜爱。</p><p>景区配套设施完善,四季景色各异,适合摄影、休闲度假与亲子出游,是感受当地文化的绝佳窗口。</p><ul><li><b>开放时间:</b>09:30-23:00</li><li><b>建议游玩:</b>2-3小时</li><li><b>特色标签:</b>城市地标,浪漫之都,登塔观景</li></ul><p><b>交通信息:</b>地铁6号线Bir-Hakeim站步行5分钟</p><p><i>温馨提示:节假日期间游客较多,建议提前规划行程、错峰出行,注意安全。</i></p>', '09:30-23:00', '2-3小时', '地铁6号线Bir-Hakeim站步行5分钟', '城市地标,浪漫之都,登塔观景', 0, 0, 1, 0, 0, 5.00, '2026-08-08 10:45:09', '2026-08-08 10:45:09', 0);
INSERT INTO `attraction` (`id`, `name`, `category_id`, `city`, `address`, `latitude`, `longitude`, `cover_image`, `images`, `video_url`, `description`, `open_time`, `play_time`, `traffic_info`, `tags`, `is_hot`, `is_recommend`, `status`, `view_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (29, '卢浮宫博物馆', 4, '巴黎', '法国巴黎里沃利街', 48.860600, 2.337600, 'https://picsum.photos/seed/attraction-cover-27/1200/800', '[\"https://picsum.photos/seed/attraction-img-27-1/800/600\", \"https://picsum.photos/seed/attraction-img-27-2/800/600\", \"https://picsum.photos/seed/attraction-img-27-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4', '<h3>景点介绍</h3><p><strong>卢浮宫博物馆</strong>位于巴黎,是极具代表性的旅游目的地,兼具自然景观与人文底蕴,深受中外游客喜爱。</p><p>景区配套设施完善,四季景色各异,适合摄影、休闲度假与亲子出游,是感受当地文化的绝佳窗口。</p><ul><li><b>开放时间:</b>09:00-18:00</li><li><b>建议游玩:</b>半天</li><li><b>特色标签:</b>博物馆,蒙娜丽莎,世界艺术殿堂</li></ul><p><b>交通信息:</b>地铁1号线Palais Royal站直达</p><p><i>温馨提示:节假日期间游客较多,建议提前规划行程、错峰出行,注意安全。</i></p>', '09:00-18:00', '半天', '地铁1号线Palais Royal站直达', '博物馆,蒙娜丽莎,世界艺术殿堂', 1, 0, 1, 0, 0, 5.00, '2026-08-08 10:45:09', '2026-08-08 10:45:09', 0);
INSERT INTO `attraction` (`id`, `name`, `category_id`, `city`, `address`, `latitude`, `longitude`, `cover_image`, `images`, `video_url`, `description`, `open_time`, `play_time`, `traffic_info`, `tags`, `is_hot`, `is_recommend`, `status`, `view_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (30, '巴黎圣母院', 2, '巴黎', '法国巴黎西岱岛', 48.853000, 2.349900, 'https://picsum.photos/seed/attraction-cover-28/1200/800', '[\"https://picsum.photos/seed/attraction-img-28-1/800/600\", \"https://picsum.photos/seed/attraction-img-28-2/800/600\", \"https://picsum.photos/seed/attraction-img-28-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerEscapes.mp4', '<h3>景点介绍</h3><p><strong>巴黎圣母院</strong>位于巴黎,是极具代表性的旅游目的地,兼具自然景观与人文底蕴,深受中外游客喜爱。</p><p>景区配套设施完善,四季景色各异,适合摄影、休闲度假与亲子出游,是感受当地文化的绝佳窗口。</p><ul><li><b>开放时间:</b>08:00-18:30</li><li><b>建议游玩:</b>1-2小时</li><li><b>特色标签:</b>哥特建筑,历史遗迹,雨果名著</li></ul><p><b>交通信息:</b>地铁4号线Cite站步行3分钟</p><p><i>温馨提示:节假日期间游客较多,建议提前规划行程、错峰出行,注意安全。</i></p>', '08:00-18:30', '1-2小时', '地铁4号线Cite站步行3分钟', '哥特建筑,历史遗迹,雨果名著', 0, 0, 1, 0, 0, 5.00, '2026-08-08 10:45:09', '2026-08-08 10:45:09', 0);
@ -320,8 +320,8 @@ CREATE TABLE `banner` (
-- Records of banner
-- ----------------------------
BEGIN;
INSERT INTO `banner` (`id`, `title`, `image_url`, `link_type`, `link_id`, `link_url`, `sort`, `status`, `start_time`, `end_time`, `create_time`, `update_time`) VALUES (1, '热门景点推荐', '/uploads/banner1.jpg', 1, NULL, NULL, 1, 1, NULL, NULL, '2026-08-05 21:39:11', '2026-08-05 21:39:11');
INSERT INTO `banner` (`id`, `title`, `image_url`, `link_type`, `link_id`, `link_url`, `sort`, `status`, `start_time`, `end_time`, `create_time`, `update_time`) VALUES (2, '新品纪念品上架', '/uploads/banner2.jpg', 1, NULL, NULL, 2, 1, NULL, NULL, '2026-08-05 21:39:11', '2026-08-05 21:39:11');
INSERT INTO `banner` (`id`, `title`, `image_url`, `link_type`, `link_id`, `link_url`, `sort`, `status`, `start_time`, `end_time`, `create_time`, `update_time`) VALUES (1, '热门景点推荐', 'https://picsum.photos/seed/attraction-cover-25/1200/800', 1, NULL, NULL, 1, 1, NULL, NULL, '2026-08-05 21:39:11', '2026-08-08 11:46:15');
INSERT INTO `banner` (`id`, `title`, `image_url`, `link_type`, `link_id`, `link_url`, `sort`, `status`, `start_time`, `end_time`, `create_time`, `update_time`) VALUES (2, '新品纪念品上架', 'https://picsum.photos/seed/attraction-cover-17/1200/800', 1, NULL, NULL, 2, 1, NULL, NULL, '2026-08-05 21:39:11', '2026-08-08 11:46:38');
COMMIT;
-- ----------------------------
@ -521,12 +521,13 @@ CREATE TABLE `order_item` (
KEY `idx_order_id` (`order_id`),
KEY `idx_order_no` (`order_no`),
KEY `idx_product_id` (`product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订单商品表';
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订单商品表';
-- ----------------------------
-- Records of order_item
-- ----------------------------
BEGIN;
INSERT INTO `order_item` (`id`, `order_id`, `order_no`, `product_id`, `product_name`, `sku_id`, `sku_name`, `cover_image`, `unit_price`, `quantity`, `total_price`, `create_time`) VALUES (1, 1, 'P2085937994793951232', 42, '手工紫砂壶大容量', 101, '规格:标准款', 'https://picsum.photos/seed/product-cover-42/1200/800', 72.00, 1, 72.00, '2026-08-08 11:55:47');
COMMIT;
-- ----------------------------
@ -665,7 +666,7 @@ INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `vi
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (39, '竹编果篮', 2, 'https://picsum.photos/seed/product-cover-39/1200/800', '[\"https://picsum.photos/seed/product-img-39-1/800/600\", \"https://picsum.photos/seed/product-img-39-2/800/600\", \"https://picsum.photos/seed/product-img-39-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/Sintel.mp4', '<h3>商品简介</h3><p><strong>竹编果篮</strong>精选优质原料,融合地方文化与现代设计,是工艺纪念品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>竹编果篮注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:工艺纪念品;竹编</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '工艺纪念品;竹编', 1, 0, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:00', '2026-08-08 10:51:00', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (40, '剪纸画册', 2, 'https://picsum.photos/seed/product-cover-40/1200/800', '[\"https://picsum.photos/seed/product-img-40-1/800/600\", \"https://picsum.photos/seed/product-img-40-2/800/600\", \"https://picsum.photos/seed/product-img-40-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4', '<h3>商品简介</h3><p><strong>剪纸画册</strong>精选优质原料,融合地方文化与现代设计,是工艺纪念品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>剪纸画册注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:工艺纪念品;剪纸</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '工艺纪念品;剪纸', 0, 0, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:00', '2026-08-08 10:51:00', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (41, '手工紫砂壶小容量', 2, 'https://picsum.photos/seed/product-cover-41/1200/800', '[\"https://picsum.photos/seed/product-img-41-1/800/600\", \"https://picsum.photos/seed/product-img-41-2/800/600\", \"https://picsum.photos/seed/product-img-41-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4', '<h3>商品简介</h3><p><strong>手工紫砂壶小容量</strong>精选优质原料,融合地方文化与现代设计,是工艺纪念品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>手工紫砂壶小容量注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:工艺纪念品;紫砂</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '工艺纪念品;紫砂', 0, 1, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:00', '2026-08-08 10:51:00', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (42, '手工紫砂壶大容量', 2, 'https://picsum.photos/seed/product-cover-42/1200/800', '[\"https://picsum.photos/seed/product-img-42-1/800/600\", \"https://picsum.photos/seed/product-img-42-2/800/600\", \"https://picsum.photos/seed/product-img-42-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4', '<h3>商品简介</h3><p><strong>手工紫砂壶大容量</strong>精选优质原料,融合地方文化与现代设计,是工艺纪念品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>手工紫砂壶大容量注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:工艺纪念品;紫砂</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '工艺纪念品;紫砂', 1, 0, 1, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:00', '2026-08-08 10:51:00', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (42, '手工紫砂壶大容量', 2, 'https://picsum.photos/seed/product-cover-42/1200/800', '[\"https://picsum.photos/seed/product-img-42-1/800/600\", \"https://picsum.photos/seed/product-img-42-2/800/600\", \"https://picsum.photos/seed/product-img-42-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4', '<h3>商品简介</h3><p><strong>手工紫砂壶大容量</strong>精选优质原料,融合地方文化与现代设计,是工艺纪念品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>手工紫砂壶大容量注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:工艺纪念品;紫砂</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '工艺纪念品;紫砂', 1, 0, 1, 1, 2, 1, 0, 5.00, '2026-08-08 10:51:00', '2026-08-08 10:51:00', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (43, '景泰蓝书签', 2, 'https://picsum.photos/seed/product-cover-43/1200/800', '[\"https://picsum.photos/seed/product-img-43-1/800/600\", \"https://picsum.photos/seed/product-img-43-2/800/600\", \"https://picsum.photos/seed/product-img-43-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerEscapes.mp4', '<h3>商品简介</h3><p><strong>景泰蓝书签</strong>精选优质原料,融合地方文化与现代设计,是工艺纪念品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>景泰蓝书签注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:工艺纪念品;珐琅</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '工艺纪念品;珐琅', 0, 0, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:00', '2026-08-08 10:51:00', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (44, '玉雕吊坠', 2, 'https://picsum.photos/seed/product-cover-44/1200/800', '[\"https://picsum.photos/seed/product-img-44-1/800/600\", \"https://picsum.photos/seed/product-img-44-2/800/600\", \"https://picsum.photos/seed/product-img-44-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/Sintel.mp4', '<h3>商品简介</h3><p><strong>玉雕吊坠</strong>精选优质原料,融合地方文化与现代设计,是工艺纪念品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>玉雕吊坠注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:工艺纪念品;玉器</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '工艺纪念品;玉器', 0, 0, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:00', '2026-08-08 10:51:00', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (45, '刺绣团扇', 2, 'https://picsum.photos/seed/product-cover-45/1200/800', '[\"https://picsum.photos/seed/product-img-45-1/800/600\", \"https://picsum.photos/seed/product-img-45-2/800/600\", \"https://picsum.photos/seed/product-img-45-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4', '<h3>商品简介</h3><p><strong>刺绣团扇</strong>精选优质原料,融合地方文化与现代设计,是工艺纪念品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>刺绣团扇注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:工艺纪念品;刺绣</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '工艺纪念品;刺绣', 1, 1, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:00', '2026-08-08 10:51:00', 0);
@ -680,12 +681,12 @@ INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `vi
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (54, '手绘风景明信片', 3, 'https://picsum.photos/seed/product-cover-54/1200/800', '[\"https://picsum.photos/seed/product-img-54-1/800/600\", \"https://picsum.photos/seed/product-img-54-2/800/600\", \"https://picsum.photos/seed/product-img-54-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/Sintel.mp4', '<h3>商品简介</h3><p><strong>手绘风景明信片</strong>精选优质原料,融合地方文化与现代设计,是文创产品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>手绘风景明信片注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:文创产品;明信片</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '文创产品;明信片', 1, 0, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:00', '2026-08-08 10:51:00', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (55, '手绘建筑明信片', 3, 'https://picsum.photos/seed/product-cover-55/1200/800', '[\"https://picsum.photos/seed/product-img-55-1/800/600\", \"https://picsum.photos/seed/product-img-55-2/800/600\", \"https://picsum.photos/seed/product-img-55-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4', '<h3>商品简介</h3><p><strong>手绘建筑明信片</strong>精选优质原料,融合地方文化与现代设计,是文创产品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>手绘建筑明信片注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:文创产品;明信片</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '文创产品;明信片', 0, 0, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:00', '2026-08-08 10:51:00', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (56, '手绘明信片整套', 3, 'https://picsum.photos/seed/product-cover-56/1200/800', '[\"https://picsum.photos/seed/product-img-56-1/800/600\", \"https://picsum.photos/seed/product-img-56-2/800/600\", \"https://picsum.photos/seed/product-img-56-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4', '<h3>商品简介</h3><p><strong>手绘明信片整套</strong>精选优质原料,融合地方文化与现代设计,是文创产品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>手绘明信片整套注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:文创产品;明信片</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '文创产品;明信片', 0, 0, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:00', '2026-08-08 10:51:00', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (57, '旅行主题笔记本', 3, 'https://picsum.photos/seed/product-cover-57/1200/800', '[\"https://picsum.photos/seed/product-img-57-1/800/600\", \"https://picsum.photos/seed/product-img-57-2/800/600\", \"https://picsum.photos/seed/product-img-57-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4', '<h3>商品简介</h3><p><strong>旅行主题笔记本</strong>精选优质原料,融合地方文化与现代设计,是文创产品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>旅行主题笔记本注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:文创产品;笔记本</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '文创产品;笔记本', 1, 1, 1, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:00', '2026-08-08 10:51:00', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (57, '旅行主题笔记本', 3, 'https://picsum.photos/seed/product-cover-57/1200/800', '[\"https://picsum.photos/seed/product-img-57-1/800/600\", \"https://picsum.photos/seed/product-img-57-2/800/600\", \"https://picsum.photos/seed/product-img-57-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4', '<h3>商品简介</h3><p><strong>旅行主题笔记本</strong>精选优质原料,融合地方文化与现代设计,是文创产品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>旅行主题笔记本注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:文创产品;笔记本</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '文创产品;笔记本', 1, 1, 1, 1, 1, 0, 0, 5.00, '2026-08-08 10:51:00', '2026-08-08 10:51:00', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (58, '文创手账本', 3, 'https://picsum.photos/seed/product-cover-58/1200/800', '[\"https://picsum.photos/seed/product-img-58-1/800/600\", \"https://picsum.photos/seed/product-img-58-2/800/600\", \"https://picsum.photos/seed/product-img-58-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerEscapes.mp4', '<h3>商品简介</h3><p><strong>文创手账本</strong>精选优质原料,融合地方文化与现代设计,是文创产品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>文创手账本注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:文创产品;笔记本</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '文创产品;笔记本', 0, 0, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:00', '2026-08-08 10:51:00', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (59, '文创笔记本礼盒', 3, 'https://picsum.photos/seed/product-cover-59/1200/800', '[\"https://picsum.photos/seed/product-img-59-1/800/600\", \"https://picsum.photos/seed/product-img-59-2/800/600\", \"https://picsum.photos/seed/product-img-59-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/Sintel.mp4', '<h3>商品简介</h3><p><strong>文创笔记本礼盒</strong>精选优质原料,融合地方文化与现代设计,是文创产品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>文创笔记本礼盒注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:文创产品;笔记本</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '文创产品;笔记本', 0, 0, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:00', '2026-08-08 10:51:00', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (60, '帆布书袋', 3, 'https://picsum.photos/seed/product-cover-60/1200/800', '[\"https://picsum.photos/seed/product-img-60-1/800/600\", \"https://picsum.photos/seed/product-img-60-2/800/600\", \"https://picsum.photos/seed/product-img-60-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4', '<h3>商品简介</h3><p><strong>帆布书袋</strong>精选优质原料,融合地方文化与现代设计,是文创产品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>帆布书袋注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:文创产品;帆布包</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '文创产品;帆布包', 1, 0, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:01', '2026-08-08 10:51:01', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (61, '金属景点书签', 3, 'https://picsum.photos/seed/product-cover-61/1200/800', '[\"https://picsum.photos/seed/product-img-61-1/800/600\", \"https://picsum.photos/seed/product-img-61-2/800/600\", \"https://picsum.photos/seed/product-img-61-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4', '<h3>商品简介</h3><p><strong>金属景点书签</strong>精选优质原料,融合地方文化与现代设计,是文创产品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>金属景点书签注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:文创产品;书签</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '文创产品;书签', 0, 1, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:01', '2026-08-08 10:51:01', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (62, '木质景点书签', 3, 'https://picsum.photos/seed/product-cover-62/1200/800', '[\"https://picsum.photos/seed/product-img-62-1/800/600\", \"https://picsum.photos/seed/product-img-62-2/800/600\", \"https://picsum.photos/seed/product-img-62-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4', '<h3>商品简介</h3><p><strong>木质景点书签</strong>精选优质原料,融合地方文化与现代设计,是文创产品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>木质景点书签注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:文创产品;书签</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '文创产品;书签', 0, 0, 1, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:01', '2026-08-08 10:51:01', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (62, '木质景点书签', 3, 'https://picsum.photos/seed/product-cover-62/1200/800', '[\"https://picsum.photos/seed/product-img-62-1/800/600\", \"https://picsum.photos/seed/product-img-62-2/800/600\", \"https://picsum.photos/seed/product-img-62-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4', '<h3>商品简介</h3><p><strong>木质景点书签</strong>精选优质原料,融合地方文化与现代设计,是文创产品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>木质景点书签注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:文创产品;书签</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '文创产品;书签', 0, 0, 1, 1, 2, 0, 0, 5.00, '2026-08-08 10:51:01', '2026-08-08 10:51:01', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (63, '景点书签套装', 3, 'https://picsum.photos/seed/product-cover-63/1200/800', '[\"https://picsum.photos/seed/product-img-63-1/800/600\", \"https://picsum.photos/seed/product-img-63-2/800/600\", \"https://picsum.photos/seed/product-img-63-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerEscapes.mp4', '<h3>商品简介</h3><p><strong>景点书签套装</strong>精选优质原料,融合地方文化与现代设计,是文创产品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>景点书签套装注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:文创产品;书签</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '文创产品;书签', 1, 0, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:01', '2026-08-08 10:51:01', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (64, '景点图案马克杯', 3, 'https://picsum.photos/seed/product-cover-64/1200/800', '[\"https://picsum.photos/seed/product-img-64-1/800/600\", \"https://picsum.photos/seed/product-img-64-2/800/600\", \"https://picsum.photos/seed/product-img-64-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/Sintel.mp4', '<h3>商品简介</h3><p><strong>景点图案马克杯</strong>精选优质原料,融合地方文化与现代设计,是文创产品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>景点图案马克杯注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:文创产品;马克杯</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '文创产品;马克杯', 0, 0, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:01', '2026-08-08 10:51:01', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (65, '卡通马克杯', 3, 'https://picsum.photos/seed/product-cover-65/1200/800', '[\"https://picsum.photos/seed/product-img-65-1/800/600\", \"https://picsum.photos/seed/product-img-65-2/800/600\", \"https://picsum.photos/seed/product-img-65-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4', '<h3>商品简介</h3><p><strong>卡通马克杯</strong>精选优质原料,融合地方文化与现代设计,是文创产品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>卡通马克杯注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:文创产品;马克杯</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '文创产品;马克杯', 0, 1, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:01', '2026-08-08 10:51:01', 0);
@ -695,7 +696,7 @@ INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `vi
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (69, '单枚文创徽章', 3, 'https://picsum.photos/seed/product-cover-69/1200/800', '[\"https://picsum.photos/seed/product-img-69-1/800/600\", \"https://picsum.photos/seed/product-img-69-2/800/600\", \"https://picsum.photos/seed/product-img-69-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/Sintel.mp4', '<h3>商品简介</h3><p><strong>单枚文创徽章</strong>精选优质原料,融合地方文化与现代设计,是文创产品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>单枚文创徽章注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:文创产品;徽章</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '文创产品;徽章', 1, 1, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:01', '2026-08-08 10:51:01', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (70, '文创徽章套装', 3, 'https://picsum.photos/seed/product-cover-70/1200/800', '[\"https://picsum.photos/seed/product-img-70-1/800/600\", \"https://picsum.photos/seed/product-img-70-2/800/600\", \"https://picsum.photos/seed/product-img-70-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4', '<h3>商品简介</h3><p><strong>文创徽章套装</strong>精选优质原料,融合地方文化与现代设计,是文创产品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>文创徽章套装注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:文创产品;徽章</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '文创产品;徽章', 0, 0, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:01', '2026-08-08 10:51:01', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (71, '旅行护照夹', 3, 'https://picsum.photos/seed/product-cover-71/1200/800', '[\"https://picsum.photos/seed/product-img-71-1/800/600\", \"https://picsum.photos/seed/product-img-71-2/800/600\", \"https://picsum.photos/seed/product-img-71-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4', '<h3>商品简介</h3><p><strong>旅行护照夹</strong>精选优质原料,融合地方文化与现代设计,是文创产品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>旅行护照夹注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:文创产品;旅行用品</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '文创产品;旅行用品', 0, 0, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:01', '2026-08-08 10:51:01', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (72, '手绘城市地图', 3, 'https://picsum.photos/seed/product-cover-72/1200/800', '[\"https://picsum.photos/seed/product-img-72-1/800/600\", \"https://picsum.photos/seed/product-img-72-2/800/600\", \"https://picsum.photos/seed/product-img-72-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4', '<h3>商品简介</h3><p><strong>手绘城市地图</strong>精选优质原料,融合地方文化与现代设计,是文创产品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>手绘城市地图注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:文创产品;地图</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '文创产品;地图', 1, 0, 1, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:01', '2026-08-08 10:51:01', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (72, '手绘城市地图', 3, 'https://picsum.photos/seed/product-cover-72/1200/800', '[\"https://picsum.photos/seed/product-img-72-1/800/600\", \"https://picsum.photos/seed/product-img-72-2/800/600\", \"https://picsum.photos/seed/product-img-72-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4', '<h3>商品简介</h3><p><strong>手绘城市地图</strong>精选优质原料,融合地方文化与现代设计,是文创产品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>手绘城市地图注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:文创产品;地图</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '文创产品;地图', 1, 0, 1, 1, 2, 0, 0, 5.00, '2026-08-08 10:51:01', '2026-08-08 10:51:01', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (73, '文创胶带', 3, 'https://picsum.photos/seed/product-cover-73/1200/800', '[\"https://picsum.photos/seed/product-img-73-1/800/600\", \"https://picsum.photos/seed/product-img-73-2/800/600\", \"https://picsum.photos/seed/product-img-73-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerEscapes.mp4', '<h3>商品简介</h3><p><strong>文创胶带</strong>精选优质原料,融合地方文化与现代设计,是文创产品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>文创胶带注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:文创产品;手账</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '文创产品;手账', 0, 1, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:01', '2026-08-08 10:51:01', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (74, '明信片套装', 3, 'https://picsum.photos/seed/product-cover-74/1200/800', '[\"https://picsum.photos/seed/product-img-74-1/800/600\", \"https://picsum.photos/seed/product-img-74-2/800/600\", \"https://picsum.photos/seed/product-img-74-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/Sintel.mp4', '<h3>商品简介</h3><p><strong>明信片套装</strong>精选优质原料,融合地方文化与现代设计,是文创产品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>明信片套装注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:文创产品;明信片</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '文创产品;明信片', 0, 0, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:01', '2026-08-08 10:51:01', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (75, '城市纪念印章', 3, 'https://picsum.photos/seed/product-cover-75/1200/800', '[\"https://picsum.photos/seed/product-img-75-1/800/600\", \"https://picsum.photos/seed/product-img-75-2/800/600\", \"https://picsum.photos/seed/product-img-75-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4', '<h3>商品简介</h3><p><strong>城市纪念印章</strong>精选优质原料,融合地方文化与现代设计,是文创产品中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>城市纪念印章注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:文创产品;印章</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '文创产品;印章', 1, 0, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:01', '2026-08-08 10:51:01', 0);
@ -705,7 +706,7 @@ INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `vi
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (79, '经典款卫衣', 4, 'https://picsum.photos/seed/product-cover-79/1200/800', '[\"https://picsum.photos/seed/product-img-79-1/800/600\", \"https://picsum.photos/seed/product-img-79-2/800/600\", \"https://picsum.photos/seed/product-img-79-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/Sintel.mp4', '<h3>商品简介</h3><p><strong>经典款卫衣</strong>精选优质原料,融合地方文化与现代设计,是服饰箱包中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>经典款卫衣注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:服饰箱包;卫衣</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '服饰箱包;卫衣', 0, 0, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:01', '2026-08-08 10:51:01', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (80, '情侣款卫衣', 4, 'https://picsum.photos/seed/product-cover-80/1200/800', '[\"https://picsum.photos/seed/product-img-80-1/800/600\", \"https://picsum.photos/seed/product-img-80-2/800/600\", \"https://picsum.photos/seed/product-img-80-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4', '<h3>商品简介</h3><p><strong>情侣款卫衣</strong>精选优质原料,融合地方文化与现代设计,是服饰箱包中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>情侣款卫衣注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:服饰箱包;卫衣</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '服饰箱包;卫衣', 0, 0, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:01', '2026-08-08 10:51:01', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (81, '旅行渔夫帽', 4, 'https://picsum.photos/seed/product-cover-81/1200/800', '[\"https://picsum.photos/seed/product-img-81-1/800/600\", \"https://picsum.photos/seed/product-img-81-2/800/600\", \"https://picsum.photos/seed/product-img-81-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4', '<h3>商品简介</h3><p><strong>旅行渔夫帽</strong>精选优质原料,融合地方文化与现代设计,是服饰箱包中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>旅行渔夫帽注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:服饰箱包;帽子</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '服饰箱包;帽子', 1, 1, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:01', '2026-08-08 10:51:01', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (82, '印花丝巾', 4, 'https://picsum.photos/seed/product-cover-82/1200/800', '[\"https://picsum.photos/seed/product-img-82-1/800/600\", \"https://picsum.photos/seed/product-img-82-2/800/600\", \"https://picsum.photos/seed/product-img-82-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4', '<h3>商品简介</h3><p><strong>印花丝巾</strong>精选优质原料,融合地方文化与现代设计,是服饰箱包中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>印花丝巾注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:服饰箱包;丝巾</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '服饰箱包;丝巾', 0, 0, 1, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:01', '2026-08-08 10:51:01', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (82, '印花丝巾', 4, 'https://picsum.photos/seed/product-cover-82/1200/800', '[\"https://picsum.photos/seed/product-img-82-1/800/600\", \"https://picsum.photos/seed/product-img-82-2/800/600\", \"https://picsum.photos/seed/product-img-82-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4', '<h3>商品简介</h3><p><strong>印花丝巾</strong>精选优质原料,融合地方文化与现代设计,是服饰箱包中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>印花丝巾注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:服饰箱包;丝巾</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '服饰箱包;丝巾', 0, 0, 1, 1, 1, 0, 0, 5.00, '2026-08-08 10:51:01', '2026-08-08 10:51:01', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (83, '素色丝巾', 4, 'https://picsum.photos/seed/product-cover-83/1200/800', '[\"https://picsum.photos/seed/product-img-83-1/800/600\", \"https://picsum.photos/seed/product-img-83-2/800/600\", \"https://picsum.photos/seed/product-img-83-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerEscapes.mp4', '<h3>商品简介</h3><p><strong>素色丝巾</strong>精选优质原料,融合地方文化与现代设计,是服饰箱包中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>素色丝巾注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:服饰箱包;丝巾</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '服饰箱包;丝巾', 0, 0, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:02', '2026-08-08 10:51:02', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (84, '大号帆布包', 4, 'https://picsum.photos/seed/product-cover-84/1200/800', '[\"https://picsum.photos/seed/product-img-84-1/800/600\", \"https://picsum.photos/seed/product-img-84-2/800/600\", \"https://picsum.photos/seed/product-img-84-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/Sintel.mp4', '<h3>商品简介</h3><p><strong>大号帆布包</strong>精选优质原料,融合地方文化与现代设计,是服饰箱包中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>大号帆布包注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:服饰箱包;帆布包</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '服饰箱包;帆布包', 1, 0, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:02', '2026-08-08 10:51:02', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (85, '小号帆布包', 4, 'https://picsum.photos/seed/product-cover-85/1200/800', '[\"https://picsum.photos/seed/product-img-85-1/800/600\", \"https://picsum.photos/seed/product-img-85-2/800/600\", \"https://picsum.photos/seed/product-img-85-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4', '<h3>商品简介</h3><p><strong>小号帆布包</strong>精选优质原料,融合地方文化与现代设计,是服饰箱包中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>小号帆布包注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:服饰箱包;帆布包</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '服饰箱包;帆布包', 0, 1, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:02', '2026-08-08 10:51:02', 0);
@ -720,7 +721,7 @@ INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `vi
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (94, '长款钱包', 4, 'https://picsum.photos/seed/product-cover-94/1200/800', '[\"https://picsum.photos/seed/product-img-94-1/800/600\", \"https://picsum.photos/seed/product-img-94-2/800/600\", \"https://picsum.photos/seed/product-img-94-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/Sintel.mp4', '<h3>商品简介</h3><p><strong>长款钱包</strong>精选优质原料,融合地方文化与现代设计,是服饰箱包中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>长款钱包注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:服饰箱包;钱包</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '服饰箱包;钱包', 0, 0, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:02', '2026-08-08 10:51:02', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (95, '真皮腰带', 4, 'https://picsum.photos/seed/product-cover-95/1200/800', '[\"https://picsum.photos/seed/product-img-95-1/800/600\", \"https://picsum.photos/seed/product-img-95-2/800/600\", \"https://picsum.photos/seed/product-img-95-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4', '<h3>商品简介</h3><p><strong>真皮腰带</strong>精选优质原料,融合地方文化与现代设计,是服饰箱包中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>真皮腰带注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:服饰箱包;腰带</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '服饰箱包;腰带', 0, 0, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:02', '2026-08-08 10:51:02', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (96, '居家拖鞋', 4, 'https://picsum.photos/seed/product-cover-96/1200/800', '[\"https://picsum.photos/seed/product-img-96-1/800/600\", \"https://picsum.photos/seed/product-img-96-2/800/600\", \"https://picsum.photos/seed/product-img-96-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4', '<h3>商品简介</h3><p><strong>居家拖鞋</strong>精选优质原料,融合地方文化与现代设计,是服饰箱包中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>居家拖鞋注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:服饰箱包;拖鞋</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '服饰箱包;拖鞋', 1, 0, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:02', '2026-08-08 10:51:02', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (97, '旅行袜礼盒', 4, 'https://picsum.photos/seed/product-cover-97/1200/800', '[\"https://picsum.photos/seed/product-img-97-1/800/600\", \"https://picsum.photos/seed/product-img-97-2/800/600\", \"https://picsum.photos/seed/product-img-97-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4', '<h3>商品简介</h3><p><strong>旅行袜礼盒</strong>精选优质原料,融合地方文化与现代设计,是服饰箱包中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>旅行袜礼盒注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:服饰箱包;袜子</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '服饰箱包;袜子', 0, 1, 1, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:02', '2026-08-08 10:51:02', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (97, '旅行袜礼盒', 4, 'https://picsum.photos/seed/product-cover-97/1200/800', '[\"https://picsum.photos/seed/product-img-97-1/800/600\", \"https://picsum.photos/seed/product-img-97-2/800/600\", \"https://picsum.photos/seed/product-img-97-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4', '<h3>商品简介</h3><p><strong>旅行袜礼盒</strong>精选优质原料,融合地方文化与现代设计,是服饰箱包中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>旅行袜礼盒注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:服饰箱包;袜子</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '服饰箱包;袜子', 0, 1, 1, 1, 1, 0, 0, 5.00, '2026-08-08 10:51:02', '2026-08-08 10:51:02', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (98, '真丝眼罩', 4, 'https://picsum.photos/seed/product-cover-98/1200/800', '[\"https://picsum.photos/seed/product-img-98-1/800/600\", \"https://picsum.photos/seed/product-img-98-2/800/600\", \"https://picsum.photos/seed/product-img-98-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerEscapes.mp4', '<h3>商品简介</h3><p><strong>真丝眼罩</strong>精选优质原料,融合地方文化与现代设计,是服饰箱包中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>真丝眼罩注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:服饰箱包;睡眠用品</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '服饰箱包;睡眠用品', 0, 0, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:02', '2026-08-08 10:51:02', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (99, '旅行颈枕', 4, 'https://picsum.photos/seed/product-cover-99/1200/800', '[\"https://picsum.photos/seed/product-img-99-1/800/600\", \"https://picsum.photos/seed/product-img-99-2/800/600\", \"https://picsum.photos/seed/product-img-99-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/Sintel.mp4', '<h3>商品简介</h3><p><strong>旅行颈枕</strong>精选优质原料,融合地方文化与现代设计,是服饰箱包中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>旅行颈枕注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:服饰箱包;旅行用品</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '服饰箱包;旅行用品', 1, 0, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:02', '2026-08-08 10:51:02', 0);
INSERT INTO `product` (`id`, `name`, `category_id`, `cover_image`, `images`, `video_url`, `description`, `detail`, `tags`, `is_hot`, `is_new`, `is_recommend`, `status`, `view_count`, `sale_count`, `favorite_count`, `score`, `create_time`, `update_time`, `is_deleted`) VALUES (100, '羊绒围巾', 4, 'https://picsum.photos/seed/product-cover-100/1200/800', '[\"https://picsum.photos/seed/product-img-100-1/800/600\", \"https://picsum.photos/seed/product-img-100-2/800/600\", \"https://picsum.photos/seed/product-img-100-3/800/600\"]', 'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4', '<h3>商品简介</h3><p><strong>羊绒围巾</strong>精选优质原料,融合地方文化与现代设计,是服饰箱包中的热销单品,适合自用与送礼。</p><p>包装精美、携带方便,附赠品牌手袋与说明卡片,收到即可放心使用。</p>', '<h3>商品详情</h3><p><strong>产品特色:</strong>羊绒围巾注重品质与细节,兼顾实用性与文化内涵,深受游客与收藏爱好者喜爱。</p><p><b>材质工艺:</b>选用环保材料,经多道工序精心制作,质感细腻、经久耐用。</p><ul><li>标签:服饰箱包;围巾</li><li>适用场景:旅行伴手礼、节日赠礼、个人收藏、日常使用</li><li>保养建议:避光干燥存放,避免长时间暴晒与潮湿</li></ul><p><i>温馨提示:产品图片仅供参考,颜色与规格以实物为准。</i></p>', '服饰箱包;围巾', 0, 0, 0, 1, 0, 0, 0, 5.00, '2026-08-08 10:51:02', '2026-08-08 10:51:02', 0);
@ -788,12 +789,13 @@ CREATE TABLE `product_order` (
KEY `idx_user_id` (`user_id`),
KEY `idx_status` (`status`),
KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='商品订单表';
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='商品订单表';
-- ----------------------------
-- Records of product_order
-- ----------------------------
BEGIN;
INSERT INTO `product_order` (`id`, `order_no`, `user_id`, `total_quantity`, `total_price`, `discount_amount`, `actual_amount`, `freight_amount`, `address_id`, `consignee`, `phone`, `province`, `city`, `district`, `detail_address`, `order_type`, `status`, `pay_time`, `delivery_time`, `receive_time`, `cancel_time`, `cancel_reason`, `remark`, `create_time`, `update_time`) VALUES (1, 'P2085937994793951232', 1, 1, 72.00, 0.00, 72.00, 0.00, NULL, '1', '16866668888', '1', '1', '1', '1', 1, 2, '2026-08-08 11:55:48', NULL, NULL, NULL, NULL, NULL, '2026-08-08 11:55:47', '2026-08-08 11:55:47');
COMMIT;
-- ----------------------------
@ -893,12 +895,195 @@ CREATE TABLE `sku` (
`is_deleted` tinyint DEFAULT '0' COMMENT '逻辑删除',
PRIMARY KEY (`id`),
KEY `idx_product_id` (`product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='商品规格表';
) ENGINE=InnoDB AUTO_INCREMENT=184 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='商品规格表';
-- ----------------------------
-- Records of sku
-- ----------------------------
BEGIN;
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (1, 100, '规格', '标准款', 37.00, 103, 'https://picsum.photos/seed/product-cover-100/1200/800', 1, '2026-08-08 11:52:14', '2026-08-08 11:52:14', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (2, 83, '规格', '标准款', 54.00, 156, 'https://picsum.photos/seed/product-cover-83/1200/800', 1, '2026-08-08 11:52:14', '2026-08-08 11:52:14', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (3, 83, '规格', '礼盒装', 70.20, 156, 'https://picsum.photos/seed/product-cover-83/1200/800', 2, '2026-08-08 11:52:14', '2026-08-08 11:52:14', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (4, 84, '规格', '标准款', 71.00, 209, 'https://picsum.photos/seed/product-cover-84/1200/800', 1, '2026-08-08 11:52:14', '2026-08-08 11:52:14', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (5, 84, '规格', '简装', 56.80, 209, 'https://picsum.photos/seed/product-cover-84/1200/800', 3, '2026-08-08 11:52:14', '2026-08-08 11:52:14', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (6, 85, '规格', '标准款', 88.00, 262, 'https://picsum.photos/seed/product-cover-85/1200/800', 1, '2026-08-08 11:52:14', '2026-08-08 11:52:14', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (7, 85, '规格', '礼盒装', 114.40, 262, 'https://picsum.photos/seed/product-cover-85/1200/800', 2, '2026-08-08 11:52:14', '2026-08-08 11:52:14', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (8, 86, '规格', '标准款', 105.00, 315, 'https://picsum.photos/seed/product-cover-86/1200/800', 1, '2026-08-08 11:52:14', '2026-08-08 11:52:14', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (9, 87, '规格', '标准款', 122.00, 368, 'https://picsum.photos/seed/product-cover-87/1200/800', 1, '2026-08-08 11:52:14', '2026-08-08 11:52:14', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (10, 87, '规格', '礼盒装', 158.60, 368, 'https://picsum.photos/seed/product-cover-87/1200/800', 2, '2026-08-08 11:52:14', '2026-08-08 11:52:14', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (11, 87, '规格', '简装', 97.60, 368, 'https://picsum.photos/seed/product-cover-87/1200/800', 3, '2026-08-08 11:52:14', '2026-08-08 11:52:14', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (12, 88, '规格', '标准款', 139.00, 421, 'https://picsum.photos/seed/product-cover-88/1200/800', 1, '2026-08-08 11:52:14', '2026-08-08 11:52:14', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (13, 89, '规格', '标准款', 156.00, 474, 'https://picsum.photos/seed/product-cover-89/1200/800', 1, '2026-08-08 11:52:14', '2026-08-08 11:52:14', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (14, 89, '规格', '礼盒装', 202.80, 474, 'https://picsum.photos/seed/product-cover-89/1200/800', 2, '2026-08-08 11:52:14', '2026-08-08 11:52:14', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (15, 90, '规格', '标准款', 173.00, 77, 'https://picsum.photos/seed/product-cover-90/1200/800', 1, '2026-08-08 11:52:14', '2026-08-08 11:52:14', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (16, 90, '规格', '简装', 138.40, 77, 'https://picsum.photos/seed/product-cover-90/1200/800', 3, '2026-08-08 11:52:14', '2026-08-08 11:52:14', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (17, 91, '规格', '标准款', 190.00, 130, 'https://picsum.photos/seed/product-cover-91/1200/800', 1, '2026-08-08 11:52:14', '2026-08-08 11:52:14', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (18, 91, '规格', '礼盒装', 247.00, 130, 'https://picsum.photos/seed/product-cover-91/1200/800', 2, '2026-08-08 11:52:14', '2026-08-08 11:52:14', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (19, 93, '规格', '标准款', 27.00, 183, 'https://picsum.photos/seed/product-cover-93/1200/800', 1, '2026-08-08 11:52:14', '2026-08-08 11:52:14', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (20, 94, '规格', '标准款', 44.00, 236, 'https://picsum.photos/seed/product-cover-94/1200/800', 1, '2026-08-08 11:52:14', '2026-08-08 11:52:14', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (21, 94, '规格', '礼盒装', 57.20, 236, 'https://picsum.photos/seed/product-cover-94/1200/800', 2, '2026-08-08 11:52:14', '2026-08-08 11:52:14', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (22, 94, '规格', '简装', 35.20, 236, 'https://picsum.photos/seed/product-cover-94/1200/800', 3, '2026-08-08 11:52:14', '2026-08-08 11:52:14', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (23, 95, '规格', '标准款', 61.00, 289, 'https://picsum.photos/seed/product-cover-95/1200/800', 1, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (24, 96, '规格', '标准款', 78.00, 342, 'https://picsum.photos/seed/product-cover-96/1200/800', 1, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (25, 96, '规格', '礼盒装', 101.40, 342, 'https://picsum.photos/seed/product-cover-96/1200/800', 2, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (26, 97, '规格', '标准款', 95.00, 395, 'https://picsum.photos/seed/product-cover-97/1200/800', 1, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (27, 97, '规格', '简装', 76.00, 395, 'https://picsum.photos/seed/product-cover-97/1200/800', 3, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (28, 98, '规格', '标准款', 112.00, 448, 'https://picsum.photos/seed/product-cover-98/1200/800', 1, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (29, 98, '规格', '礼盒装', 145.60, 448, 'https://picsum.photos/seed/product-cover-98/1200/800', 2, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (30, 99, '规格', '标准款', 129.00, 51, 'https://picsum.photos/seed/product-cover-99/1200/800', 1, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (31, 92, '规格', '标准款', 146.00, 104, 'https://picsum.photos/seed/product-cover-92/1200/800', 1, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (32, 92, '规格', '礼盒装', 189.80, 104, 'https://picsum.photos/seed/product-cover-92/1200/800', 2, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (33, 92, '规格', '简装', 116.80, 104, 'https://picsum.photos/seed/product-cover-92/1200/800', 3, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (34, 70, '规格', '标准款', 163.00, 157, 'https://picsum.photos/seed/product-cover-70/1200/800', 1, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (35, 69, '规格', '标准款', 180.00, 210, 'https://picsum.photos/seed/product-cover-69/1200/800', 1, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (36, 69, '规格', '礼盒装', 234.00, 210, 'https://picsum.photos/seed/product-cover-69/1200/800', 2, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (37, 68, '规格', '标准款', 197.00, 263, 'https://picsum.photos/seed/product-cover-68/1200/800', 1, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (38, 68, '规格', '简装', 157.60, 263, 'https://picsum.photos/seed/product-cover-68/1200/800', 3, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (39, 67, '规格', '标准款', 34.00, 316, 'https://picsum.photos/seed/product-cover-67/1200/800', 1, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (40, 67, '规格', '礼盒装', 44.20, 316, 'https://picsum.photos/seed/product-cover-67/1200/800', 2, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (41, 66, '规格', '标准款', 51.00, 369, 'https://picsum.photos/seed/product-cover-66/1200/800', 1, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (42, 65, '规格', '标准款', 68.00, 422, 'https://picsum.photos/seed/product-cover-65/1200/800', 1, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (43, 65, '规格', '礼盒装', 88.40, 422, 'https://picsum.photos/seed/product-cover-65/1200/800', 2, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (44, 65, '规格', '简装', 54.40, 422, 'https://picsum.photos/seed/product-cover-65/1200/800', 3, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (45, 64, '规格', '标准款', 85.00, 475, 'https://picsum.photos/seed/product-cover-64/1200/800', 1, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (46, 63, '规格', '标准款', 102.00, 78, 'https://picsum.photos/seed/product-cover-63/1200/800', 1, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (47, 63, '规格', '礼盒装', 132.60, 78, 'https://picsum.photos/seed/product-cover-63/1200/800', 2, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (48, 62, '规格', '标准款', 119.00, 131, 'https://picsum.photos/seed/product-cover-62/1200/800', 1, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (49, 62, '规格', '简装', 95.20, 131, 'https://picsum.photos/seed/product-cover-62/1200/800', 3, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (50, 61, '规格', '标准款', 136.00, 184, 'https://picsum.photos/seed/product-cover-61/1200/800', 1, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (51, 61, '规格', '礼盒装', 176.80, 184, 'https://picsum.photos/seed/product-cover-61/1200/800', 2, '2026-08-08 11:52:15', '2026-08-08 11:52:15', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (52, 60, '规格', '标准款', 153.00, 237, 'https://picsum.photos/seed/product-cover-60/1200/800', 1, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (53, 76, '规格', '标准款', 170.00, 290, 'https://picsum.photos/seed/product-cover-76/1200/800', 1, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (54, 76, '规格', '礼盒装', 221.00, 290, 'https://picsum.photos/seed/product-cover-76/1200/800', 2, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (55, 76, '规格', '简装', 136.00, 290, 'https://picsum.photos/seed/product-cover-76/1200/800', 3, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (56, 72, '规格', '标准款', 187.00, 343, 'https://picsum.photos/seed/product-cover-72/1200/800', 1, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (57, 82, '规格', '标准款', 24.00, 396, 'https://picsum.photos/seed/product-cover-82/1200/800', 1, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (58, 82, '规格', '礼盒装', 31.20, 396, 'https://picsum.photos/seed/product-cover-82/1200/800', 2, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (59, 81, '规格', '标准款', 41.00, 449, 'https://picsum.photos/seed/product-cover-81/1200/800', 1, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (60, 81, '规格', '简装', 32.80, 449, 'https://picsum.photos/seed/product-cover-81/1200/800', 3, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (61, 80, '规格', '标准款', 58.00, 52, 'https://picsum.photos/seed/product-cover-80/1200/800', 1, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (62, 80, '规格', '礼盒装', 75.40, 52, 'https://picsum.photos/seed/product-cover-80/1200/800', 2, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (63, 79, '规格', '标准款', 75.00, 105, 'https://picsum.photos/seed/product-cover-79/1200/800', 1, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (64, 78, '规格', '标准款', 92.00, 158, 'https://picsum.photos/seed/product-cover-78/1200/800', 1, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (65, 78, '规格', '礼盒装', 119.60, 158, 'https://picsum.photos/seed/product-cover-78/1200/800', 2, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (66, 78, '规格', '简装', 73.60, 158, 'https://picsum.photos/seed/product-cover-78/1200/800', 3, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (67, 77, '规格', '标准款', 109.00, 211, 'https://picsum.photos/seed/product-cover-77/1200/800', 1, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (68, 75, '规格', '标准款', 126.00, 264, 'https://picsum.photos/seed/product-cover-75/1200/800', 1, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (69, 75, '规格', '礼盒装', 163.80, 264, 'https://picsum.photos/seed/product-cover-75/1200/800', 2, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (70, 74, '规格', '标准款', 143.00, 317, 'https://picsum.photos/seed/product-cover-74/1200/800', 1, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (71, 74, '规格', '简装', 114.40, 317, 'https://picsum.photos/seed/product-cover-74/1200/800', 3, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (72, 73, '规格', '标准款', 160.00, 370, 'https://picsum.photos/seed/product-cover-73/1200/800', 1, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (73, 73, '规格', '礼盒装', 208.00, 370, 'https://picsum.photos/seed/product-cover-73/1200/800', 2, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (74, 71, '规格', '标准款', 177.00, 423, 'https://picsum.photos/seed/product-cover-71/1200/800', 1, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (75, 51, '规格', '标准款', 194.00, 476, 'https://picsum.photos/seed/product-cover-51/1200/800', 1, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (76, 51, '规格', '礼盒装', 252.20, 476, 'https://picsum.photos/seed/product-cover-51/1200/800', 2, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (77, 51, '规格', '简装', 155.20, 476, 'https://picsum.photos/seed/product-cover-51/1200/800', 3, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (78, 59, '规格', '标准款', 31.00, 79, 'https://picsum.photos/seed/product-cover-59/1200/800', 1, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (79, 58, '规格', '标准款', 48.00, 132, 'https://picsum.photos/seed/product-cover-58/1200/800', 1, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (80, 58, '规格', '礼盒装', 62.40, 132, 'https://picsum.photos/seed/product-cover-58/1200/800', 2, '2026-08-08 11:52:16', '2026-08-08 11:52:16', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (81, 57, '规格', '标准款', 65.00, 185, 'https://picsum.photos/seed/product-cover-57/1200/800', 1, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (82, 57, '规格', '简装', 52.00, 185, 'https://picsum.photos/seed/product-cover-57/1200/800', 3, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (83, 56, '规格', '标准款', 82.00, 238, 'https://picsum.photos/seed/product-cover-56/1200/800', 1, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (84, 56, '规格', '礼盒装', 106.60, 238, 'https://picsum.photos/seed/product-cover-56/1200/800', 2, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (85, 55, '规格', '标准款', 99.00, 291, 'https://picsum.photos/seed/product-cover-55/1200/800', 1, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (86, 54, '规格', '标准款', 116.00, 344, 'https://picsum.photos/seed/product-cover-54/1200/800', 1, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (87, 54, '规格', '礼盒装', 150.80, 344, 'https://picsum.photos/seed/product-cover-54/1200/800', 2, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (88, 54, '规格', '简装', 92.80, 344, 'https://picsum.photos/seed/product-cover-54/1200/800', 3, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (89, 53, '规格', '标准款', 133.00, 397, 'https://picsum.photos/seed/product-cover-53/1200/800', 1, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (90, 52, '规格', '标准款', 150.00, 450, 'https://picsum.photos/seed/product-cover-52/1200/800', 1, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (91, 52, '规格', '礼盒装', 195.00, 450, 'https://picsum.photos/seed/product-cover-52/1200/800', 2, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (92, 50, '规格', '标准款', 167.00, 53, 'https://picsum.photos/seed/product-cover-50/1200/800', 1, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (93, 50, '规格', '简装', 133.60, 53, 'https://picsum.photos/seed/product-cover-50/1200/800', 3, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (94, 38, '规格', '标准款', 184.00, 106, 'https://picsum.photos/seed/product-cover-38/1200/800', 1, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (95, 38, '规格', '礼盒装', 239.20, 106, 'https://picsum.photos/seed/product-cover-38/1200/800', 2, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (96, 39, '规格', '标准款', 21.00, 159, 'https://picsum.photos/seed/product-cover-39/1200/800', 1, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (97, 40, '规格', '标准款', 38.00, 212, 'https://picsum.photos/seed/product-cover-40/1200/800', 1, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (98, 40, '规格', '礼盒装', 49.40, 212, 'https://picsum.photos/seed/product-cover-40/1200/800', 2, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (99, 40, '规格', '简装', 30.40, 212, 'https://picsum.photos/seed/product-cover-40/1200/800', 3, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (100, 41, '规格', '标准款', 55.00, 265, 'https://picsum.photos/seed/product-cover-41/1200/800', 1, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (101, 42, '规格', '标准款', 72.00, 317, 'https://picsum.photos/seed/product-cover-42/1200/800', 1, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (102, 42, '规格', '礼盒装', 93.60, 318, 'https://picsum.photos/seed/product-cover-42/1200/800', 2, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (103, 43, '规格', '标准款', 89.00, 371, 'https://picsum.photos/seed/product-cover-43/1200/800', 1, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (104, 43, '规格', '简装', 71.20, 371, 'https://picsum.photos/seed/product-cover-43/1200/800', 3, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (105, 45, '规格', '标准款', 106.00, 424, 'https://picsum.photos/seed/product-cover-45/1200/800', 1, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (106, 45, '规格', '礼盒装', 137.80, 424, 'https://picsum.photos/seed/product-cover-45/1200/800', 2, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (107, 46, '规格', '标准款', 123.00, 477, 'https://picsum.photos/seed/product-cover-46/1200/800', 1, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (108, 47, '规格', '标准款', 140.00, 80, 'https://picsum.photos/seed/product-cover-47/1200/800', 1, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (109, 47, '规格', '礼盒装', 182.00, 80, 'https://picsum.photos/seed/product-cover-47/1200/800', 2, '2026-08-08 11:52:17', '2026-08-08 11:52:17', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (110, 47, '规格', '简装', 112.00, 80, 'https://picsum.photos/seed/product-cover-47/1200/800', 3, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (111, 48, '规格', '标准款', 157.00, 133, 'https://picsum.photos/seed/product-cover-48/1200/800', 1, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (112, 49, '规格', '标准款', 174.00, 186, 'https://picsum.photos/seed/product-cover-49/1200/800', 1, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (113, 49, '规格', '礼盒装', 226.20, 186, 'https://picsum.photos/seed/product-cover-49/1200/800', 2, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (114, 44, '规格', '标准款', 191.00, 239, 'https://picsum.photos/seed/product-cover-44/1200/800', 1, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (115, 44, '规格', '简装', 152.80, 239, 'https://picsum.photos/seed/product-cover-44/1200/800', 3, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (116, 25, '规格', '标准款', 28.00, 292, 'https://picsum.photos/seed/product-cover-25/1200/800', 1, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (117, 25, '规格', '礼盒装', 36.40, 292, 'https://picsum.photos/seed/product-cover-25/1200/800', 2, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (118, 24, '规格', '标准款', 45.00, 345, 'https://picsum.photos/seed/product-cover-24/1200/800', 1, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (119, 23, '规格', '标准款', 62.00, 398, 'https://picsum.photos/seed/product-cover-23/1200/800', 1, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (120, 23, '规格', '礼盒装', 80.60, 398, 'https://picsum.photos/seed/product-cover-23/1200/800', 2, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (121, 23, '规格', '简装', 49.60, 398, 'https://picsum.photos/seed/product-cover-23/1200/800', 3, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (122, 22, '规格', '标准款', 79.00, 451, 'https://picsum.photos/seed/product-cover-22/1200/800', 1, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (123, 21, '规格', '标准款', 96.00, 54, 'https://picsum.photos/seed/product-cover-21/1200/800', 1, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (124, 21, '规格', '礼盒装', 124.80, 54, 'https://picsum.photos/seed/product-cover-21/1200/800', 2, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (125, 20, '规格', '标准款', 113.00, 107, 'https://picsum.photos/seed/product-cover-20/1200/800', 1, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (126, 20, '规格', '简装', 90.40, 107, 'https://picsum.photos/seed/product-cover-20/1200/800', 3, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (127, 19, '规格', '标准款', 130.00, 160, 'https://picsum.photos/seed/product-cover-19/1200/800', 1, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (128, 19, '规格', '礼盒装', 169.00, 160, 'https://picsum.photos/seed/product-cover-19/1200/800', 2, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (129, 18, '规格', '标准款', 147.00, 213, 'https://picsum.photos/seed/product-cover-18/1200/800', 1, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (130, 17, '规格', '标准款', 164.00, 266, 'https://picsum.photos/seed/product-cover-17/1200/800', 1, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (131, 17, '规格', '礼盒装', 213.20, 266, 'https://picsum.photos/seed/product-cover-17/1200/800', 2, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (132, 17, '规格', '简装', 131.20, 266, 'https://picsum.photos/seed/product-cover-17/1200/800', 3, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (133, 16, '规格', '标准款', 181.00, 319, 'https://picsum.photos/seed/product-cover-16/1200/800', 1, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (134, 26, '规格', '标准款', 198.00, 372, 'https://picsum.photos/seed/product-cover-26/1200/800', 1, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (135, 26, '规格', '礼盒装', 257.40, 372, 'https://picsum.photos/seed/product-cover-26/1200/800', 2, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (136, 28, '规格', '标准款', 35.00, 425, 'https://picsum.photos/seed/product-cover-28/1200/800', 1, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (137, 28, '规格', '简装', 28.00, 425, 'https://picsum.photos/seed/product-cover-28/1200/800', 3, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (138, 29, '规格', '标准款', 52.00, 478, 'https://picsum.photos/seed/product-cover-29/1200/800', 1, '2026-08-08 11:52:18', '2026-08-08 11:52:18', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (139, 29, '规格', '礼盒装', 67.60, 478, 'https://picsum.photos/seed/product-cover-29/1200/800', 2, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (140, 30, '规格', '标准款', 69.00, 81, 'https://picsum.photos/seed/product-cover-30/1200/800', 1, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (141, 31, '规格', '标准款', 86.00, 134, 'https://picsum.photos/seed/product-cover-31/1200/800', 1, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (142, 31, '规格', '礼盒装', 111.80, 134, 'https://picsum.photos/seed/product-cover-31/1200/800', 2, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (143, 31, '规格', '简装', 68.80, 134, 'https://picsum.photos/seed/product-cover-31/1200/800', 3, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (144, 32, '规格', '标准款', 103.00, 187, 'https://picsum.photos/seed/product-cover-32/1200/800', 1, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (145, 33, '规格', '标准款', 120.00, 240, 'https://picsum.photos/seed/product-cover-33/1200/800', 1, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (146, 33, '规格', '礼盒装', 156.00, 240, 'https://picsum.photos/seed/product-cover-33/1200/800', 2, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (147, 34, '规格', '标准款', 137.00, 293, 'https://picsum.photos/seed/product-cover-34/1200/800', 1, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (148, 34, '规格', '简装', 109.60, 293, 'https://picsum.photos/seed/product-cover-34/1200/800', 3, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (149, 35, '规格', '标准款', 154.00, 346, 'https://picsum.photos/seed/product-cover-35/1200/800', 1, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (150, 35, '规格', '礼盒装', 200.20, 346, 'https://picsum.photos/seed/product-cover-35/1200/800', 2, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (151, 36, '规格', '标准款', 171.00, 399, 'https://picsum.photos/seed/product-cover-36/1200/800', 1, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (152, 37, '规格', '标准款', 188.00, 452, 'https://picsum.photos/seed/product-cover-37/1200/800', 1, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (153, 37, '规格', '礼盒装', 244.40, 452, 'https://picsum.photos/seed/product-cover-37/1200/800', 2, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (154, 37, '规格', '简装', 150.40, 452, 'https://picsum.photos/seed/product-cover-37/1200/800', 3, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (155, 27, '规格', '标准款', 25.00, 55, 'https://picsum.photos/seed/product-cover-27/1200/800', 1, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (156, 8, '规格', '标准款', 42.00, 108, 'https://picsum.photos/seed/product-cover-8/1200/800', 1, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (157, 8, '规格', '礼盒装', 54.60, 108, 'https://picsum.photos/seed/product-cover-8/1200/800', 2, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (158, 14, '规格', '标准款', 59.00, 161, 'https://picsum.photos/seed/product-cover-14/1200/800', 1, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (159, 14, '规格', '简装', 47.20, 161, 'https://picsum.photos/seed/product-cover-14/1200/800', 3, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (160, 7, '规格', '标准款', 76.00, 214, 'https://picsum.photos/seed/product-cover-7/1200/800', 1, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (161, 7, '规格', '礼盒装', 98.80, 214, 'https://picsum.photos/seed/product-cover-7/1200/800', 2, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (162, 6, '规格', '标准款', 93.00, 267, 'https://picsum.photos/seed/product-cover-6/1200/800', 1, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (163, 5, '规格', '标准款', 110.00, 320, 'https://picsum.photos/seed/product-cover-5/1200/800', 1, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (164, 5, '规格', '礼盒装', 143.00, 320, 'https://picsum.photos/seed/product-cover-5/1200/800', 2, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (165, 5, '规格', '简装', 88.00, 320, 'https://picsum.photos/seed/product-cover-5/1200/800', 3, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (166, 4, '规格', '标准款', 127.00, 373, 'https://picsum.photos/seed/product-cover-4/1200/800', 1, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (167, 3, '规格', '标准款', 144.00, 426, 'https://picsum.photos/seed/product-cover-3/1200/800', 1, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (168, 3, '规格', '礼盒装', 187.20, 426, 'https://picsum.photos/seed/product-cover-3/1200/800', 2, '2026-08-08 11:52:19', '2026-08-08 11:52:19', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (169, 2, '规格', '标准款', 161.00, 479, 'https://picsum.photos/seed/product-cover-2/1200/800', 1, '2026-08-08 11:52:20', '2026-08-08 11:52:20', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (170, 2, '规格', '简装', 128.80, 479, 'https://picsum.photos/seed/product-cover-2/1200/800', 3, '2026-08-08 11:52:20', '2026-08-08 11:52:20', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (171, 9, '规格', '标准款', 178.00, 82, 'https://picsum.photos/seed/product-cover-9/1200/800', 1, '2026-08-08 11:52:20', '2026-08-08 11:52:20', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (172, 9, '规格', '礼盒装', 231.40, 82, 'https://picsum.photos/seed/product-cover-9/1200/800', 2, '2026-08-08 11:52:20', '2026-08-08 11:52:20', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (173, 10, '规格', '标准款', 195.00, 135, 'https://picsum.photos/seed/product-cover-10/1200/800', 1, '2026-08-08 11:52:20', '2026-08-08 11:52:20', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (174, 11, '规格', '标准款', 32.00, 188, 'https://picsum.photos/seed/product-cover-11/1200/800', 1, '2026-08-08 11:52:20', '2026-08-08 11:52:20', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (175, 11, '规格', '礼盒装', 41.60, 188, 'https://picsum.photos/seed/product-cover-11/1200/800', 2, '2026-08-08 11:52:20', '2026-08-08 11:52:20', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (176, 11, '规格', '简装', 25.60, 188, 'https://picsum.photos/seed/product-cover-11/1200/800', 3, '2026-08-08 11:52:20', '2026-08-08 11:52:20', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (177, 12, '规格', '标准款', 49.00, 241, 'https://picsum.photos/seed/product-cover-12/1200/800', 1, '2026-08-08 11:52:20', '2026-08-08 11:52:20', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (178, 13, '规格', '标准款', 66.00, 294, 'https://picsum.photos/seed/product-cover-13/1200/800', 1, '2026-08-08 11:52:20', '2026-08-08 11:52:20', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (179, 13, '规格', '礼盒装', 85.80, 294, 'https://picsum.photos/seed/product-cover-13/1200/800', 2, '2026-08-08 11:52:20', '2026-08-08 11:52:20', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (180, 15, '规格', '标准款', 83.00, 347, 'https://picsum.photos/seed/product-cover-15/1200/800', 1, '2026-08-08 11:52:20', '2026-08-08 11:52:20', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (181, 15, '规格', '简装', 66.40, 347, 'https://picsum.photos/seed/product-cover-15/1200/800', 3, '2026-08-08 11:52:20', '2026-08-08 11:52:20', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (182, 1, '规格', '标准款', 100.00, 400, 'https://picsum.photos/seed/product-cover-1/1200/800', 1, '2026-08-08 11:52:20', '2026-08-08 11:52:20', 0);
INSERT INTO `sku` (`id`, `product_id`, `name`, `value`, `price`, `stock`, `image`, `sort`, `create_time`, `update_time`, `is_deleted`) VALUES (183, 1, '规格', '礼盒装', 130.00, 400, 'https://picsum.photos/seed/product-cover-1/1200/800', 2, '2026-08-08 11:52:20', '2026-08-08 11:52:20', 0);
COMMIT;
-- ----------------------------
@ -1373,7 +1558,7 @@ CREATE TABLE `user` (
-- Records of user
-- ----------------------------
BEGIN;
INSERT INTO `user` (`id`, `username`, `password`, `phone`, `email`, `avatar`, `nickname`, `gender`, `birthday`, `signature`, `status`, `last_login_time`, `last_login_ip`, `create_time`, `update_time`, `is_deleted`) VALUES (1, 'user', '$2a$10$h20T/.uYI.puV4fJh5GINODR1UtxZDQyFhcDvxiVwJc7XyhQvbn.C', '16686866868', NULL, NULL, 'user', 0, NULL, NULL, 1, '2026-08-08 11:31:42', NULL, '2026-08-08 10:57:57', '2026-08-08 10:57:57', 0);
INSERT INTO `user` (`id`, `username`, `password`, `phone`, `email`, `avatar`, `nickname`, `gender`, `birthday`, `signature`, `status`, `last_login_time`, `last_login_ip`, `create_time`, `update_time`, `is_deleted`) VALUES (1, 'user', '$2a$10$h20T/.uYI.puV4fJh5GINODR1UtxZDQyFhcDvxiVwJc7XyhQvbn.C', '16686866868', NULL, NULL, '用户', 0, NULL, NULL, 1, '2026-08-08 11:55:36', NULL, '2026-08-08 10:57:57', '2026-08-08 10:57:57', 0);
INSERT INTO `user` (`id`, `username`, `password`, `phone`, `email`, `avatar`, `nickname`, `gender`, `birthday`, `signature`, `status`, `last_login_time`, `last_login_ip`, `create_time`, `update_time`, `is_deleted`) VALUES (2, 'travel_writer', '$2a$10$7xQmE6owatyUL7RgdGRiJut15CZLobvTO1DfmI8cWV1kIGI0gfsKC', '13800001234', 'travel_writer@example.com', NULL, '旅行记录者', 0, NULL, NULL, 1, '2026-08-08 11:02:20', NULL, '2026-08-08 11:02:19', '2026-08-08 11:02:19', 0);
COMMIT;