diff --git a/.workbuddy/memory/2026-07-01.md b/.workbuddy/memory/2026-07-01.md index 8ed17fa..73c45d5 100644 --- a/.workbuddy/memory/2026-07-01.md +++ b/.workbuddy/memory/2026-07-01.md @@ -12,5 +12,28 @@ - 修改 `src/app.config.ts`:注册新页面 `pages/store/center/index` - 订单状态字段说明(`ShopOrder`): - `payStatus: boolean` — `false`=未付款,`true`=已付款 - - `deliveryStatus: number` — `10`=未发货,`20`=已发货 + - `deliveryStatus: number` — `10`=未发货,`20`=已发货,`30`=发货已完成 - `orderStatus: number` — `0`=正常,`1`=已完成,`2`=已取消 + - `sendEndImg: string` — 配送员送达拍照(逗号分隔的多图URL) + +## 门店中心功能重构 + +- 取消注释 `src/pages/user/user.tsx` 第56-57行:门店中心菜单项(`user.isAdmin` 条件显示),位于"我的钱包"上方 +- 重写门店中心页面 `src/pages/store/center/index.tsx`: + - 修复 API 分页参数:使用 `page`/`limit` 替代 `pageNo`/`pageSize`,响应格式使用 `list`/`count` + - 新增"确认送达"操作(`opType='complete'`):配送货物到达后拍照上传,同时变更 payStatus=true + deliveryStatus=30 + orderStatus=1 + sendEndImg + - 已完成订单显示送达凭证照片(`sendEndImg`) + - 使用 `useDidShow` 生命周期刷新列表 + - 使用 `loadingRef` 防止并发加载 +- 修改门店中心显示条件:从 `user.isAdmin` 改为 `storeInfo`(通过 `/api/shop/shop-store-user/my` 接口判断当前用户是否为门店店员/店长) + +## 门店中心页面简化(货到付款模式) + +- 重写 `src/pages/store/center/index.tsx`: + - Tab 从4个简化为2个:**待处理**(statusFilter=8)、**已完成**(orderStatus=1) + - 待处理订单提供两种操作: + - "确认收款":仅变更 payStatus=true(已付款) + - "确认完成":同时变更 payStatus=true + deliveryStatus=30 + orderStatus=1 + sendEndImg(必填,配送到达拍照上传) + - 已完成订单仅展示,无操作按钮 + - 状态文案适配货到付款:待收款/待发货/待收货/已完成 + - Tab 颜色改为绿色主题 diff --git a/src/pages/store/center/index.tsx b/src/pages/store/center/index.tsx index 7e4aa4d..d8f108e 100644 --- a/src/pages/store/center/index.tsx +++ b/src/pages/store/center/index.tsx @@ -1,32 +1,40 @@ -import React, { useState, useEffect } from 'react' +import React, { useState, useEffect, useCallback, useRef } from 'react' import { View, Text, Image, ScrollView } from '@tarojs/components' -import Taro from '@tarojs/taro' -import { pageShopOrder, updateShopOrder } from '@/api/shop/shopOrder' -import type { ShopOrder } from '@/api/shop/shopOrder/model' -import { TenantId } from '../../../../config/app' +import Taro, { useDidShow } from '@tarojs/taro' +import { pageShopOrder, updateShopOrder, removeShopOrder } from '@/api/shop/shopOrder' +import type { ShopOrder, ShopOrderParam } from '@/api/shop/shopOrder/model' +import { TenantId } from '../../../config/app' -type TabKey = 'unpaid' | 'unshipped' | 'shipped' | 'completed' +definePageConfig({ + navigationBarTitleText: '门店中心', +}) -const TABS = [ - { key: 'unpaid', label: '待付款', params: { payStatus: 0 } }, - { key: 'unshipped', label: '待发货', params: { payStatus: 1, deliveryStatus: 10 } }, - { key: 'shipped', label: '待收货', params: { payStatus: 1, deliveryStatus: 20 } }, - { key: 'completed', label: '已完成', params: { orderStatus: 1, payStatus: 1 } }, -] as const +// ─── Tab 配置(货到付款模式:待处理 + 已完成)───────────────────── +type TabKey = 'pending' | 'completed' -type OpType = 'pay' | 'ship' | 'complete' +const TABS: { key: TabKey; label: string; params: Partial }[] = [ + { key: 'pending', label: '待处理', params: { statusFilter: 8 } }, + { key: 'completed', label: '已完成', params: { orderStatus: 1 } }, +] + +// ─── 操作类型 ───────────────────────────────────────────────────── +type OpType = 'pay' | 'complete' const OP_LABEL: Record = { - pay: '已付款', - ship: '已发货', + pay: '已收款', complete: '已完成', } -/** 上传图片到后端,返回图片 URL */ +const OP_DESC: Record = { + pay: '变更支付状态为已付款', + complete: '同时变更支付状态为已付款、发货状态为已完成、订单状态为已完成', +} + +// ─── 图片上传 ───────────────────────────────────────────────────── const uploadImage = (filePath: string): Promise => { return new Promise((resolve, reject) => { Taro.uploadFile({ - url: 'https://shop-api.websoft.top/api/oss/upload', + url: 'https://server.websoft.top/api/oss/upload', filePath, name: 'file', header: { 'content-type': 'application/json', TenantId }, @@ -47,45 +55,118 @@ const uploadImage = (filePath: string): Promise => { }) } +// ─── 状态辅助函数 ────────────────────────────────────────────────── + +/** 格式化日期为 Spring Boot LocalDateTime 可接受的格式:yyyy-MM-dd HH:mm:ss */ +function formatDateTime(date: Date): string { + const y = date.getFullYear() + const m = String(date.getMonth() + 1).padStart(2, '0') + const d = String(date.getDate()).padStart(2, '0') + const h = String(date.getHours()).padStart(2, '0') + const mi = String(date.getMinutes()).padStart(2, '0') + const s = String(date.getSeconds()).padStart(2, '0') + return `${y}-${m}-${d} ${h}:${mi}:${s}` +} + +function getStatusText(order: ShopOrder): string { + if (order.orderStatus === 2) return '待处理' + if (order.orderStatus === 1) return '已完成' + if (order.payStatus === false) return '待收款' + if (order.payStatus && order.deliveryStatus === 10) return '待发货' + if (order.payStatus && order.deliveryStatus === 20) return '待收货' + return '待处理' +} + +function getStatusColor(order: ShopOrder): string { + if (order.orderStatus === 2) return '#999' + if (order.orderStatus === 1) return '#0e932e' + if (order.payStatus === false) return '#ee0a24' + if (order.payStatus) return '#ff7d00' + return '#999' +} + +/** 获取待处理订单可执行的操作 */ +function getOrderActions(order: ShopOrder): { label: string; type: OpType }[] { + const actions: { label: string; type: OpType }[] = [] + // 未付款 → 可确认收款,也可直接确认完成 + if (order.payStatus === false) { + actions.push({ label: '确认收款', type: 'pay' }) + actions.push({ label: '确认完成', type: 'complete' }) + } + // 已付款但未完成 → 可确认完成 + if (order.payStatus && order.orderStatus !== 1 && order.orderStatus !== 2) { + actions.push({ label: '确认完成', type: 'complete' }) + } + return actions +} + +// ─── 页面组件 ────────────────────────────────────────────────────── export default function StoreCenterPage() { - const [activeTab, setActiveTab] = useState('unshipped') - const [orderList, setOrderList] = useState([]) - const [total, setTotal] = useState(0) - const [pageNo, setPageNo] = useState(1) - const [loading, setLoading] = useState(false) - const pageSize = 10 + const [activeTab, setActiveTab] = useState('pending') + + // 订单列表与分页 + const [orderList, setOrderList] = useState([]) + const [page, setPage] = useState(1) + const [hasMore, setHasMore] = useState(true) + const [loading, setLoading] = useState(false) // 操作弹窗状态 - const [showModal, setShowModal] = useState(false) + const [showModal, setShowModal] = useState(false) const [currentOrder, setCurrentOrder] = useState(null) - const [opType, setOpType] = useState('pay') + const [opType, setOpType] = useState('pay') const [proofImages, setProofImages] = useState([]) const [submitting, setSubmitting] = useState(false) + const pageSize = 10 + const loadingRef = useRef(false) + /** 加载订单列表 */ - const loadOrders = async (tab: TabKey = activeTab, page: number = 1, append = false) => { - const tabConfig = TABS.find(t => t.key === tab) - if (!tabConfig) return + const loadOrders = useCallback(async (tab: TabKey, pageNo: number = 1, append = false) => { + if (loadingRef.current) return + loadingRef.current = true setLoading(true) + try { - const res: any = await pageShopOrder({ + const tabConfig = TABS.find(t => t.key === tab) + if (!tabConfig) return + + const params: ShopOrderParam = { ...tabConfig.params, - pageNo, - pageSize, - } as any) - const records: ShopOrder[] = res?.records || res?.data?.records || [] - const totalCount: number = res?.total || res?.data?.total || 0 - setOrderList(append ? prev => [...prev, ...records] : records) - setTotal(totalCount) - setPageNo(page) + page: pageNo, + limit: pageSize, + } + + const res = await pageShopOrder(params) + const list = res?.list || [] + + setOrderList(prev => append ? [...prev, ...list] : list) + setPage(pageNo) + setHasMore(list.length >= pageSize) } catch (e: any) { Taro.showToast({ title: e.message || '加载失败', icon: 'none' }) + if (!append) setOrderList([]) } finally { + loadingRef.current = false setLoading(false) } - } + }, []) - useEffect(() => { loadOrders(activeTab, 1) }, [activeTab]) + // 切换 tab 时重新加载 + useEffect(() => { + loadOrders(activeTab, 1) + }, [activeTab, loadOrders]) + + // 页面重新显示时刷新 + useDidShow(() => { + loadOrders(activeTab, 1) + }) + + /** 加载更多 */ + const handleLoadMore = () => { + if (hasMore && !loadingRef.current) { + loadOrders(activeTab, page + 1, true) + } + } /** 打开操作弹窗 */ const openModal = (order: ShopOrder, type: OpType) => { @@ -102,21 +183,27 @@ export default function StoreCenterPage() { setProofImages([]) } - /** 选择凭证图片 */ + /** 选择并上传凭证图片 */ const chooseProofImage = () => { + const maxCount = 3 + const remaining = maxCount - proofImages.length + if (remaining <= 0) return + Taro.chooseImage({ - count: 1, + count: remaining, sizeType: ['compressed'], sourceType: ['camera', 'album'], success: async (res) => { - try { - Taro.showLoading({ title: '上传中...' }) - const url = await uploadImage(res.tempFilePaths[0]) - Taro.hideLoading() - setProofImages(prev => [...prev, url]) - } catch (e: any) { - Taro.hideLoading() - Taro.showToast({ title: e.message || '上传失败', icon: 'none' }) + for (const filePath of res.tempFilePaths) { + try { + Taro.showLoading({ title: '上传中...' }) + const url = await uploadImage(filePath) + Taro.hideLoading() + setProofImages(prev => [...prev, url]) + } catch (e: any) { + Taro.hideLoading() + Taro.showToast({ title: e.message || '上传失败', icon: 'none' }) + } } }, }) @@ -130,32 +217,40 @@ export default function StoreCenterPage() { /** 提交操作 */ const submitOperation = async () => { if (!currentOrder) return - if (proofImages.length === 0) { - Taro.showToast({ title: '请上传操作凭证', icon: 'none' }) + + // 确认完成必须上传凭证照片 + if (opType === 'complete' && proofImages.length === 0) { + Taro.showToast({ title: '请上传配送凭证照片', icon: 'none' }) return } + setSubmitting(true) try { - const proofText = `【门店操作凭证】${OP_LABEL[opType]}:${proofImages.join(',')}` const updateData: any = { orderId: currentOrder.orderId } if (opType === 'pay') { + // 确认收款:变更支付状态为已付款 updateData.payStatus = true - updateData.payTime = new Date().toISOString() - } else if (opType === 'ship') { - updateData.deliveryStatus = 20 - updateData.deliveryTime = new Date().toISOString() + updateData.payTime = formatDateTime(new Date()) } else if (opType === 'complete') { - updateData.orderStatus = 1 + // 确认完成:变更支付状态为已付款、发货状态为已完成、订单状态为已完成 + updateData.payStatus = true + updateData.payTime = formatDateTime(new Date()) + updateData.deliveryStatus = 20 // 发货状态 → 已完成 + updateData.orderStatus = 1 // 订单状态 → 已完成 + updateData.sendEndImg = proofImages.join(',') // 配送员送达拍照 } - // 将凭证追加到备注 - updateData.comments = (currentOrder.comments || '') + `\n${proofText}` + // 收款操作如有凭证也追加到备注 + if (opType === 'pay' && proofImages.length > 0) { + const proofText = `【门店收款凭证】:${proofImages.join(',')}` + updateData.comments = (currentOrder.comments || '') + `\n${proofText}` + } await updateShopOrder(updateData) Taro.showToast({ title: '操作成功', icon: 'success' }) closeModal() - loadOrders(activeTab, 1) + loadOrders(activeTab, 1) // 刷新列表 } catch (e: any) { Taro.showToast({ title: e.message || '操作失败', icon: 'none' }) } finally { @@ -163,23 +258,33 @@ export default function StoreCenterPage() { } } - /** 获取订单可进行的操作 */ - const getOrderActions = (order: ShopOrder) => { - const actions: { label: string; type: OpType }[] = [] - if (!order.payStatus) { - actions.push({ label: '标记已付款', type: 'pay' }) - } - if (order.payStatus && order.deliveryStatus === 10) { - actions.push({ label: '标记已发货', type: 'ship' }) - } - if (order.payStatus && order.deliveryStatus === 20 && order.orderStatus === 0) { - actions.push({ label: '标记已完成', type: 'complete' }) - } - return actions + /** 删除订单 */ + const handleDelete = (order: ShopOrder) => { + Taro.showModal({ + title: '提示', + content: `确定要删除订单 ${order.orderNo} 吗?删除后无法恢复。`, + confirmColor: '#ee0a24', + success: async (res) => { + if (!res.confirm) return + try { + Taro.showLoading({ title: '删除中...' }) + await removeShopOrder(order.orderId) + Taro.hideLoading() + Taro.showToast({ title: '删除成功', icon: 'success' }) + loadOrders(activeTab, 1) + } catch (e: any) { + Taro.hideLoading() + Taro.showToast({ title: e.message || '删除失败', icon: 'none' }) + } + }, + }) } + /** 渲染单个订单卡片 */ const renderOrderCard = (order: ShopOrder) => { - const actions = getOrderActions(order) + const actions = activeTab === 'pending' ? getOrderActions(order) : [] + const orderGoods = (order as any).orderGoods || [] + return ( {/* 订单头部 */} @@ -191,7 +296,7 @@ export default function StoreCenterPage() { {/* 商品列表 */} - {(order as any).orderGoods?.map((goods: any, idx: number) => ( + {orderGoods.map((goods: any, idx: number) => ( {goods.coverImage && ( @@ -219,30 +324,56 @@ export default function StoreCenterPage() { )} - {/* 金额 */} + {/* 送达凭证(已完成订单) */} + {order.sendEndImg && ( + + 配送凭证: + + {order.sendEndImg.split(',').map((img, i) => ( + + ))} + + + )} + + {/* 金额 + 支付方式 */} - 共{(order as any).orderGoods?.length || 0}件商品 + {order.payType === 0 ? '余额支付' : order.payType === 4 ? '现金支付' : '货到付款'} 实付:¥{order.payPrice || order.totalPrice} - {/* 操作按钮 */} - {actions.length > 0 && ( - + {/* 操作按钮(仅待处理订单) */} + + {/* 删除按钮 */} + handleDelete(order)} + > + 删除订单 + + + {actions.map(act => ( openModal(order, act.type)} > - {act.label} + {act.label} ))} - )} + ) } @@ -255,11 +386,11 @@ export default function StoreCenterPage() { setActiveTab(tab.key as TabKey)} + onClick={() => setActiveTab(tab.key)} > - + {tab.label} @@ -269,10 +400,9 @@ export default function StoreCenterPage() { {/* 订单列表 */} { - if (orderList.length < total && !loading) loadOrders(activeTab, pageNo + 1, true) - }} + style={{ height: 'calc(100vh - 50px)' }} + onScrollToLower={handleLoadMore} + lowerThreshold={100} > {loading && orderList.length === 0 ? ( @@ -290,6 +420,11 @@ export default function StoreCenterPage() { 加载中... )} + {!hasMore && orderList.length > 0 && ( + + 没有更多了 + + )} @@ -311,11 +446,16 @@ export default function StoreCenterPage() { 实付金额:¥{currentOrder.payPrice || currentOrder.totalPrice} + + 操作说明:{OP_DESC[opType]} + )} {/* 凭证上传 */} - 上传操作凭证(必填,最多3张) + + 上传凭证照片{opType === 'complete' ? '(必填,配送货物到达后拍照上传,最多3张)' : '(选填,最多3张)'} + {proofImages.map((url, idx) => ( @@ -344,8 +484,10 @@ export default function StoreCenterPage() { 取消 {submitting ? ( 提交中... @@ -360,23 +502,3 @@ export default function StoreCenterPage() { ) } - -/** 获取订单状态文字 */ -function getStatusText(order: ShopOrder): string { - if (order.payStatus === false) return '待付款' - if (order.orderStatus === 2) return '已取消' - if (order.deliveryStatus === 10) return '待发货' - if (order.deliveryStatus === 20) return '待收货' - if (order.orderStatus === 1) return '已完成' - return '处理中' -} - -/** 获取订单状态颜色 */ -function getStatusColor(order: ShopOrder): string { - if (order.payStatus === false) return '#ee0a24' - if (order.orderStatus === 2) return '#999' - if (order.deliveryStatus === 10) return '#ff7d00' - if (order.deliveryStatus === 20) return '#4b9cf5' - if (order.orderStatus === 1) return '#0e932e' - return '#999' -} diff --git a/src/pages/user/user.tsx b/src/pages/user/user.tsx index 6e5215d..095e6f6 100644 --- a/src/pages/user/user.tsx +++ b/src/pages/user/user.tsx @@ -53,11 +53,8 @@ const UserPage: React.FC = () => { }) const menuItems = [ - // { icon: '🏆', label: '赛事活动', url: '/pages/event/my/index' }, - // { icon: '📅', label: '预约穿线', url: '/pages/booking/list/index' }, - // { icon: '🎫', label: '优惠券', url: '/pages/user/coupon-list' }, - // 门店中心:仅管理员显示 - ...(user?.isAdmin ? [{ icon: '🏪', label: '门店中心', url: '/pages/store/center/index' }] : []), + // 门店中心:仅门店店员/店长显示(通过 /shop/shop-store-user/my 判断) + ...(storeInfo ? [{ icon: '🏪', label: '门店中心', url: '/pages/store/center/index' }] : []), { icon: '💰', label: '我的钱包', url: '/pages/user/wallet' }, { icon: '📍', label: '收货地址', url: '/pages/user/address-list' }, // { icon: '⭐', label: '积分明细', url: '/pages/user/points-record' }, diff --git a/src_bak/api/cms/cmsAd/index.ts b/src_bak/api/cms/cmsAd/index.ts deleted file mode 100644 index 37dae87..0000000 --- a/src_bak/api/cms/cmsAd/index.ts +++ /dev/null @@ -1,115 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsAd, CmsAdParam } from './model'; - - -/** - * 分页查询广告位 - */ -export async function pageCmsAd(params: CmsAdParam) { - const res = await request.get>>( - '/cms/cms-ad/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询广告位列表 - */ -export async function listCmsAd(params?: CmsAdParam) { - const res = await request.get>( - '/cms/cms-ad', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加广告位 - */ -export async function addCmsAd(data: CmsAd) { - const res = await request.post>( - '/cms/cms-ad', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改广告位 - */ -export async function updateCmsAd(data: CmsAd) { - const res = await request.put>( - '/cms/cms-ad', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除广告位 - */ -export async function removeCmsAd(id?: number) { - const res = await request.del>( - '/cms/cms-ad/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除广告位 - */ -export async function removeBatchCmsAd(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-ad/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询广告位 - */ -export async function getCmsAd(id: number) { - const res = await request.get>( - '/cms/cms-ad/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据code查询广告位 - */ -export async function getCmsAdByCode(code: string) { - const res = await request.get>( - '/cms/cms-ad/getByCode/' + code - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsAd/model/index.ts b/src_bak/api/cms/cmsAd/model/index.ts deleted file mode 100644 index 99cd4eb..0000000 --- a/src_bak/api/cms/cmsAd/model/index.ts +++ /dev/null @@ -1,60 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 广告位 - */ -export interface CmsAd { - // ID - adId?: number; - // 页面ID - designId?: number; - // 广告类型 - adType?: string; - // 广告类型 - type?: string; - // 广告位名称 - name?: string; - // 宽 - width?: string; - // 高 - height?: string; - // 广告图片 - images?: string; - // 图片列表 - imageList?: any[]; - // 路由/链接地址 - path?: string; - // 用户ID - userId?: number; - // 页面ID - pageId?: number; - // 页面名称 - pageName?: string; - // 排序(数字越小越靠前) - sortNumber?: number; - // 备注 - comments?: string; - // 状态, 0正常, 1冻结 - status?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - merchantId?: number; - // 图片数组 - imgArr?: any[]; -} - -/** - * 广告位搜索条件 - */ -export interface CmsAdParam extends PageParam { - adId?: number; - adType?: string; - pageId?: number; - pageName?: string; - status?: number; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsAdRecord/index.ts b/src_bak/api/cms/cmsAdRecord/index.ts deleted file mode 100644 index 55c042b..0000000 --- a/src_bak/api/cms/cmsAdRecord/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsAdRecord, CmsAdRecordParam } from './model'; - - -/** - * 分页查询广告图片 - */ -export async function pageCmsAdRecord(params: CmsAdRecordParam) { - const res = await request.get>>( - '/cms/cms-ad-record/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询广告图片列表 - */ -export async function listCmsAdRecord(params?: CmsAdRecordParam) { - const res = await request.get>( - '/cms/cms-ad-record', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加广告图片 - */ -export async function addCmsAdRecord(data: CmsAdRecord) { - const res = await request.post>( - '/cms/cms-ad-record', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改广告图片 - */ -export async function updateCmsAdRecord(data: CmsAdRecord) { - const res = await request.put>( - '/cms/cms-ad-record', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除广告图片 - */ -export async function removeCmsAdRecord(id?: number) { - const res = await request.del>( - '/cms/cms-ad-record/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除广告图片 - */ -export async function removeBatchCmsAdRecord(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-ad-record/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询广告图片 - */ -export async function getCmsAdRecord(id: number) { - const res = await request.get>( - '/cms/cms-ad-record/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsAdRecord/model/index.ts b/src_bak/api/cms/cmsAdRecord/model/index.ts deleted file mode 100644 index 0ecf5d1..0000000 --- a/src_bak/api/cms/cmsAdRecord/model/index.ts +++ /dev/null @@ -1,35 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 广告图片 - */ -export interface CmsAdRecord { - // ID - adRecordId?: number; - // 广告标题 - title?: string; - // 图片地址 - path?: string; - // 链接地址 - url?: string; - // 广告位ID - adId?: number; - // 排序(数字越小越靠前) - sortNumber?: number; - // 备注 - comments?: string; - // 状态, 0正常, 1冻结 - status?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; -} - -/** - * 广告图片搜索条件 - */ -export interface CmsAdRecordParam extends PageParam { - adRecordId?: number; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsArticle/index.ts b/src_bak/api/cms/cmsArticle/index.ts deleted file mode 100644 index 608c0e5..0000000 --- a/src_bak/api/cms/cmsArticle/index.ts +++ /dev/null @@ -1,218 +0,0 @@ -import request from '@/utils/request'; -import type {ApiResult, PageResult} from '@/api'; -import type {CmsArticle, CmsArticleParam} from './model'; - -/** - * 分页查询文章 - */ -export async function pageCmsArticle(params: CmsArticleParam) { - const res = await request.get>>( - '/cms/cms-article/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询文章列表 - */ -export async function listCmsArticle(params?: CmsArticleParam) { - const res = await request.get>( - '/cms/cms-article', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加文章 - */ -export async function addCmsArticle(data: CmsArticle) { - const res = await request.post>( - '/cms/cms-article', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改文章 - */ -export async function updateCmsArticle(data: CmsArticle) { - const res = await request.put>( - '/cms/cms-article', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除文章 - */ -export async function removeCmsArticle(id?: number) { - const res = await request.del>( - '/cms/cms-article/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除文章 - */ -export async function removeBatchCmsArticle(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-article/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询文章 - */ -export async function getCmsArticle(id: number) { - const res = await request.get>( - '/cms/cms-article/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -export async function getCount(params?: CmsArticleParam) { - const res = await request.get>('/cms/cms-article/data', { - params - }); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 上一篇 - * @param params - */ -export async function getPrevious(params?: CmsArticleParam) { - const res = await request.get>( - '/cms/cms-article/getPrevious/' + params?.articleId, - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 下一篇 - * @param params - */ -export async function getNext(params?: CmsArticleParam) { - const res = await request.get>( - '/cms/cms-article/getNext/' + params?.articleId, - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 验证文章密码 - * @param params - */ -export async function checkArticlePassword(params?: CmsArticleParam) { - const res = await request.get>( - '/cms/cms-article/checkArticlePassword', - { - params - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -export async function findTags(params?: CmsArticleParam) { - const res = await request.get>( - '/cms/cms-article/findTags', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -export async function pageTags(params?: CmsArticleParam) { - const res = await request.get>( - '/cms/cms-article/pageTags', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 按IDS查询文章 - * @param params - */ -export async function getByIds(params?: CmsArticleParam) { - const res = await request.get>( - '/cms/cms-article/getByIds', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据code查询文章 - */ -export async function getByCode(code: string) { - const res = await request.get>( - '/cms/cms-article/getByCode/' + code - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsArticle/model/index.ts b/src_bak/api/cms/cmsArticle/model/index.ts deleted file mode 100644 index 5206b48..0000000 --- a/src_bak/api/cms/cmsArticle/model/index.ts +++ /dev/null @@ -1,132 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 文章 - */ -export interface CmsArticle { - // 文章ID - articleId?: number; - // 文章标题 - title?: string; - // 文章类型 0常规 1视频 - type?: number; - // 文章模型 - model?: string; - // 文章详情页模板 - detail?: string; - // banner图片 - banner?: string; - // 列表显示方式(10小图展示 20大图展示) - showType?: number; - // 话题 - topic?: string; - // 标签 - tags?: any; - // 栏目ID - categoryId?: number; - // 栏目名称 - categoryName?: string; - // 封面图 - image?: string; - // 价格 - price?: number; - startTime?: any; - endTime?: any; - // 缩列图 - thumbnail?: string; - // 来源 - source?: string; - // 产品概述 - overview?: string; - // 虚拟阅读量(仅用作展示) - virtualViews?: number; - // 实际阅读量 - actualViews?: number; - // 购买人数 - bmUsers?: number; - // 浏览权限(0公开 1会员 2密码) - permission?: number; - // 访问密码 - password?: string; - // 确认密码 - password2?: string; - // 发布来源客户端 (APP、H5、小程序等) - platform?: string; - // 文章附件 - files?: string; - // 视频地址 - video?: string; - // 接受的文件类型 - accept?: string; - // 经度 - longitude?: string; - // 纬度 - latitude?: string; - // 所在省份 - province?: string; - // 所在城市 - city?: string; - // 所在辖区 - region?: string; - // 街道地址 - address?: string; - // 点赞数 - likes?: number; - // pdf地址 - pdfUrl?: string; - // 评论数 - commentNumbers?: number; - // 提醒谁看 - toUsers?: string; - // 文章内容 - content?: string; - // 是否推荐 - recommend?: number; - // 用户ID - userId?: number; - // 排序(数字越小越靠前) - sortNumber?: number; - // 备注 - comments?: string; - // 状态, 0已发布, 1待审核 2已驳回 3违规内容 - status?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; - // 父级id - parentId?: number; - nickname?: string; - username?: string; - author?: string; - shopId?: number; - tenantName?: string; - logo?: string; - fileList?: any; - // 编辑器类型 - editor?: number; -} - -/** - * 文章搜索条件 - */ -export interface CmsArticleParam extends PageParam { - articleId?: number; - articleIds?: string; - categoryId?: number; - parentId?: number; - status?: number; - // 是否推荐 - recommend?: number; - keywords?: string; - // 验证密码 - password?: string; - password2?: string; - tags?: string; - detail?: string; - sceneType?: string; -} diff --git a/src_bak/api/cms/cmsArticleCategory/index.ts b/src_bak/api/cms/cmsArticleCategory/index.ts deleted file mode 100644 index ba607c1..0000000 --- a/src_bak/api/cms/cmsArticleCategory/index.ts +++ /dev/null @@ -1,108 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsArticleCategory, CmsArticleCategoryParam } from './model'; - - -/** - * 分页查询文章分类表 - */ -export async function pageCmsArticleCategory(params: CmsArticleCategoryParam) { - const res = await request.get>>( - '/cms/cms-article-category/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询文章分类表列表 - */ -export async function listCmsArticleCategory(params?: CmsArticleCategoryParam) { - const res = await request.get>( - '/cms/cms-article-category', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加文章分类表 - */ -export async function addCmsArticleCategory(data: CmsArticleCategory) { - const res = await request.post>( - '/cms/cms-article-category', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改文章分类表 - */ -export async function updateCmsArticleCategory(data: CmsArticleCategory) { - const res = await request.put>( - '/cms/cms-article-category', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除文章分类表 - */ -export async function removeCmsArticleCategory(id?: number) { - const res = await request.del>( - '/cms/cms-article-category/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除文章分类表 - */ -export async function removeBatchCmsArticleCategory( - data: (number | undefined)[] -) { - const res = await request.del>( - '/cms/cms-article-category/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询文章分类表 - */ -export async function getCmsArticleCategory(id: number) { - const res = await request.get>( - '/cms/cms-article-category/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsArticleCategory/model/index.ts b/src_bak/api/cms/cmsArticleCategory/model/index.ts deleted file mode 100644 index 4270213..0000000 --- a/src_bak/api/cms/cmsArticleCategory/model/index.ts +++ /dev/null @@ -1,59 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 文章分类表 - */ -export interface CmsArticleCategory { - // 文章分类ID - categoryId?: number; - // 分类标识 - categoryCode?: string; - // 分类名称 - title?: string; - // 类型 0列表 1单页 2外链 - type?: number; - // 分类图片 - image?: string; - // 上级分类ID - parentId?: number; - // 路由/链接地址 - path?: string; - // 组件路径 - component?: string; - // 绑定的页面 - pageId?: number; - // 用户ID - userId?: number; - // 文章数量 - count?: number; - // 排序(数字越小越靠前) - sortNumber?: number; - // 备注 - comments?: string; - // 是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单) - hide?: number; - // 是否推荐 - recommend?: number; - // 是否显示在首页 - showIndex?: number; - // 状态, 0正常, 1禁用 - status?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; - value?: number; - label?: string; -} - -/** - * 文章分类表搜索条件 - */ -export interface CmsArticleCategoryParam extends PageParam { - categoryId?: number; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsArticleComment/index.ts b/src_bak/api/cms/cmsArticleComment/index.ts deleted file mode 100644 index 50b9806..0000000 --- a/src_bak/api/cms/cmsArticleComment/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsArticleComment, CmsArticleCommentParam } from './model'; - - -/** - * 分页查询文章评论表 - */ -export async function pageCmsArticleComment(params: CmsArticleCommentParam) { - const res = await request.get>>( - '/cms/cms-article-comment/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询文章评论表列表 - */ -export async function listCmsArticleComment(params?: CmsArticleCommentParam) { - const res = await request.get>( - '/cms/cms-article-comment', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加文章评论表 - */ -export async function addCmsArticleComment(data: CmsArticleComment) { - const res = await request.post>( - '/cms/cms-article-comment', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改文章评论表 - */ -export async function updateCmsArticleComment(data: CmsArticleComment) { - const res = await request.put>( - '/cms/cms-article-comment', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除文章评论表 - */ -export async function removeCmsArticleComment(id?: number) { - const res = await request.del>( - '/cms/cms-article-comment/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除文章评论表 - */ -export async function removeBatchCmsArticleComment(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-article-comment/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询文章评论表 - */ -export async function getCmsArticleComment(id: number) { - const res = await request.get>( - '/cms/cms-article-comment/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsArticleComment/model/index.ts b/src_bak/api/cms/cmsArticleComment/model/index.ts deleted file mode 100644 index 2490228..0000000 --- a/src_bak/api/cms/cmsArticleComment/model/index.ts +++ /dev/null @@ -1,47 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 文章评论表 - */ -export interface CmsArticleComment { - // 评价ID - commentId?: number; - // 文章ID - articleId?: number; - // 评分 (10好评 20中评 30差评) - score?: number; - // 评价内容 - content?: string; - // 是否为图片评价 - isPicture?: number; - // 评论者ID - userId?: number; - // 被评价者ID - toUserId?: number; - // 回复的评论ID - replyCommentId?: number; - // 回复者ID - replyUserId?: number; - // 排序(数字越小越靠前) - sortNumber?: number; - // 备注 - comments?: string; - // 状态, 0未读, 1已读 - status?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 文章评论表搜索条件 - */ -export interface CmsArticleCommentParam extends PageParam { - commentId?: number; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsArticleContent/index.ts b/src_bak/api/cms/cmsArticleContent/index.ts deleted file mode 100644 index 8c3ca00..0000000 --- a/src_bak/api/cms/cmsArticleContent/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsArticleContent, CmsArticleContentParam } from './model'; - - -/** - * 分页查询文章记录表 - */ -export async function pageCmsArticleContent(params: CmsArticleContentParam) { - const res = await request.get>>( - '/cms/cms-article-content/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询文章记录表列表 - */ -export async function listCmsArticleContent(params?: CmsArticleContentParam) { - const res = await request.get>( - '/cms/cms-article-content', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加文章记录表 - */ -export async function addCmsArticleContent(data: CmsArticleContent) { - const res = await request.post>( - '/cms/cms-article-content', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改文章记录表 - */ -export async function updateCmsArticleContent(data: CmsArticleContent) { - const res = await request.put>( - '/cms/cms-article-content', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除文章记录表 - */ -export async function removeCmsArticleContent(id?: number) { - const res = await request.del>( - '/cms/cms-article-content/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除文章记录表 - */ -export async function removeBatchCmsArticleContent(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-article-content/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询文章记录表 - */ -export async function getCmsArticleContent(id: number) { - const res = await request.get>( - '/cms/cms-article-content/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsArticleContent/model/index.ts b/src_bak/api/cms/cmsArticleContent/model/index.ts deleted file mode 100644 index 432c376..0000000 --- a/src_bak/api/cms/cmsArticleContent/model/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 文章记录表 - */ -export interface CmsArticleContent { - // - id?: number; - // 文章ID - articleId?: number; - // 文章内容 - content?: string; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; -} - -/** - * 文章记录表搜索条件 - */ -export interface CmsArticleContentParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsArticleCount/index.ts b/src_bak/api/cms/cmsArticleCount/index.ts deleted file mode 100644 index fc02eb1..0000000 --- a/src_bak/api/cms/cmsArticleCount/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsArticleCount, CmsArticleCountParam } from './model'; - - -/** - * 分页查询点赞文章 - */ -export async function pageCmsArticleCount(params: CmsArticleCountParam) { - const res = await request.get>>( - '/cms/cms-article-count/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询点赞文章列表 - */ -export async function listCmsArticleCount(params?: CmsArticleCountParam) { - const res = await request.get>( - '/cms/cms-article-count', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加点赞文章 - */ -export async function addCmsArticleCount(data: CmsArticleCount) { - const res = await request.post>( - '/cms/cms-article-count', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改点赞文章 - */ -export async function updateCmsArticleCount(data: CmsArticleCount) { - const res = await request.put>( - '/cms/cms-article-count', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除点赞文章 - */ -export async function removeCmsArticleCount(id?: number) { - const res = await request.del>( - '/cms/cms-article-count/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除点赞文章 - */ -export async function removeBatchCmsArticleCount(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-article-count/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询点赞文章 - */ -export async function getCmsArticleCount(id: number) { - const res = await request.get>( - '/cms/cms-article-count/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsArticleCount/model/index.ts b/src_bak/api/cms/cmsArticleCount/model/index.ts deleted file mode 100644 index 9cfbc24..0000000 --- a/src_bak/api/cms/cmsArticleCount/model/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 点赞文章 - */ -export interface CmsArticleCount { - // 主键ID - id?: number; - // 文章ID - articleId?: number; - // 用户ID - userId?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; -} - -/** - * 点赞文章搜索条件 - */ -export interface CmsArticleCountParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsArticleLike/index.ts b/src_bak/api/cms/cmsArticleLike/index.ts deleted file mode 100644 index eca990c..0000000 --- a/src_bak/api/cms/cmsArticleLike/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsArticleLike, CmsArticleLikeParam } from './model'; - - -/** - * 分页查询点赞文章 - */ -export async function pageCmsArticleLike(params: CmsArticleLikeParam) { - const res = await request.get>>( - '/cms/cms-article-like/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询点赞文章列表 - */ -export async function listCmsArticleLike(params?: CmsArticleLikeParam) { - const res = await request.get>( - '/cms/cms-article-like', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加点赞文章 - */ -export async function addCmsArticleLike(data: CmsArticleLike) { - const res = await request.post>( - '/cms/cms-article-like', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改点赞文章 - */ -export async function updateCmsArticleLike(data: CmsArticleLike) { - const res = await request.put>( - '/cms/cms-article-like', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除点赞文章 - */ -export async function removeCmsArticleLike(id?: number) { - const res = await request.del>( - '/cms/cms-article-like/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除点赞文章 - */ -export async function removeBatchCmsArticleLike(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-article-like/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询点赞文章 - */ -export async function getCmsArticleLike(id: number) { - const res = await request.get>( - '/cms/cms-article-like/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsArticleLike/model/index.ts b/src_bak/api/cms/cmsArticleLike/model/index.ts deleted file mode 100644 index ccee27a..0000000 --- a/src_bak/api/cms/cmsArticleLike/model/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 点赞文章 - */ -export interface CmsArticleLike { - // 主键ID - id?: number; - // 文章ID - articleId?: number; - // 用户ID - userId?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; -} - -/** - * 点赞文章搜索条件 - */ -export interface CmsArticleLikeParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsComponents/index.ts b/src_bak/api/cms/cmsComponents/index.ts deleted file mode 100644 index c765f33..0000000 --- a/src_bak/api/cms/cmsComponents/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsComponents, CmsComponentsParam } from './model'; - - -/** - * 分页查询组件 - */ -export async function pageCmsComponents(params: CmsComponentsParam) { - const res = await request.get>>( - '/cms/cms-components/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询组件列表 - */ -export async function listCmsComponents(params?: CmsComponentsParam) { - const res = await request.get>( - '/cms/cms-components', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加组件 - */ -export async function addCmsComponents(data: CmsComponents) { - const res = await request.post>( - '/cms/cms-components', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改组件 - */ -export async function updateCmsComponents(data: CmsComponents) { - const res = await request.put>( - '/cms/cms-components', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除组件 - */ -export async function removeCmsComponents(id?: number) { - const res = await request.del>( - '/cms/cms-components/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除组件 - */ -export async function removeBatchCmsComponents(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-components/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询组件 - */ -export async function getCmsComponents(id: number) { - const res = await request.get>( - '/cms/cms-components/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsComponents/model/index.ts b/src_bak/api/cms/cmsComponents/model/index.ts deleted file mode 100644 index f3fc8f5..0000000 --- a/src_bak/api/cms/cmsComponents/model/index.ts +++ /dev/null @@ -1,43 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 组件 - */ -export interface CmsComponents { - // ID - id?: number; - // 组件标题 - title?: string; - // 关联导航ID - navigationId?: number; - // 组件类型 - type?: string; - // 页面关键词 - keywords?: string; - // 页面描述 - description?: string; - // 组件路径 - path?: string; - // 组件图标 - icon?: string; - // 用户ID - userId?: number; - // 排序(数字越小越靠前) - sortNumber?: number; - // 备注 - comments?: string; - // 状态, 0正常, 1冻结 - status?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; -} - -/** - * 组件搜索条件 - */ -export interface CmsComponentsParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsDesign/index.ts b/src_bak/api/cms/cmsDesign/index.ts deleted file mode 100644 index 44696ff..0000000 --- a/src_bak/api/cms/cmsDesign/index.ts +++ /dev/null @@ -1,102 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsDesign, CmsDesignParam } from './model'; - - -/** - * 分页查询页面管理记录表 - */ -export async function pageCmsDesign(params: CmsDesignParam) { - const res = await request.get>>( - '/cms/cms-design/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询页面管理记录表列表 - */ -export async function listCmsDesign(params?: CmsDesignParam) { - const res = await request.get>( - '/cms/cms-design', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加页面管理记录表 - */ -export async function addCmsDesign(data: CmsDesign) { - const res = await request.post>( - '/cms/cms-design', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改页面管理记录表 - */ -export async function updateCmsDesign(data: CmsDesign) { - const res = await request.put>( - '/cms/cms-design', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除页面管理记录表 - */ -export async function removeCmsDesign(id?: number) { - const res = await request.del>( - '/cms/cms-design/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除页面管理记录表 - */ -export async function removeBatchCmsDesign(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-design/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询页面管理记录表 - */ -export async function getCmsDesign(id: number) { - const res = await request.get>( - '/cms/cms-design/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsDesign/model/index.ts b/src_bak/api/cms/cmsDesign/model/index.ts deleted file mode 100644 index d1a8c1c..0000000 --- a/src_bak/api/cms/cmsDesign/model/index.ts +++ /dev/null @@ -1,60 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 页面管理记录表 - */ -export interface CmsDesign { - pageId?: number; - name?: string; - keywords?: string; - description?: string; - path?: string; - component?: string; - photo?: string; - content?: string; - // 类型 - type?: string; - categoryId?: number; - // 宽 - width?: string; - // 高 - height?: string; - // 页面样式 - style?: string; - // 附件 - images?: string; - // 用户ID - userId?: number; - // 设为首页 - home?: number; - // 排序 - sortNumber?: number; - // 备注 - comments?: string; - // 状态 - status?: number; - // 创建时间 - createTime?: string; - // 更新时间 - updateTime?: string; - // 页面布局 - layout?: string; - backgroundColor?: string; - // 关联网站导航ID - navigationId?: number; - showLayout?: boolean; - btn?: any[]; - showBanner?: boolean; - buyUrl?: string; - demoUrl?: string; - account?: string; - docUrl?: string; -} - -/** - * 页面管理记录表搜索条件 - */ -export interface CmsDesignParam extends PageParam { - pageId?: number; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsDesignRecord/index.ts b/src_bak/api/cms/cmsDesignRecord/index.ts deleted file mode 100644 index f1ea541..0000000 --- a/src_bak/api/cms/cmsDesignRecord/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsDesignRecord, CmsDesignRecordParam } from './model'; - - -/** - * 分页查询页面组件表 - */ -export async function pageCmsDesignRecord(params: CmsDesignRecordParam) { - const res = await request.get>>( - '/cms/cms-design-record/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询页面组件表列表 - */ -export async function listCmsDesignRecord(params?: CmsDesignRecordParam) { - const res = await request.get>( - '/cms/cms-design-record', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加页面组件表 - */ -export async function addCmsDesignRecord(data: CmsDesignRecord) { - const res = await request.post>( - '/cms/cms-design-record', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改页面组件表 - */ -export async function updateCmsDesignRecord(data: CmsDesignRecord) { - const res = await request.put>( - '/cms/cms-design-record', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除页面组件表 - */ -export async function removeCmsDesignRecord(id?: number) { - const res = await request.del>( - '/cms/cms-design-record/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除页面组件表 - */ -export async function removeBatchCmsDesignRecord(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-design-record/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询页面组件表 - */ -export async function getCmsDesignRecord(id: number) { - const res = await request.get>( - '/cms/cms-design-record/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsDesignRecord/model/index.ts b/src_bak/api/cms/cmsDesignRecord/model/index.ts deleted file mode 100644 index 0c6e809..0000000 --- a/src_bak/api/cms/cmsDesignRecord/model/index.ts +++ /dev/null @@ -1,51 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 页面组件表 - */ -export interface CmsDesignRecord { - // ID - id?: number; - // 关联导航ID - navigationId?: number; - parentId?: number; - pageId?: number; - // 组件 - title?: string; - // 组件标识 - dictCode?: string; - // 组件样式 - styles?: string; - // 卡片阴影显示时机 - shadow?: string; - // 页面关键词 - keywords?: string; - // 页面描述 - description?: string; - // 页面路由地址 - path?: string; - // 缩列图 - photo?: string; - // 用户ID - userId?: number; - // 排序(数字越小越靠前) - sortNumber?: number; - // 备注 - comments?: string; - // 状态, 0正常, 1冻结 - status?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 所属期次 - periodId?: number; -} - -/** - * 页面组件表搜索条件 - */ -export interface CmsDesignRecordParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsDocs/index.ts b/src_bak/api/cms/cmsDocs/index.ts deleted file mode 100644 index 585b1e4..0000000 --- a/src_bak/api/cms/cmsDocs/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsDocs, CmsDocsParam } from './model'; - - -/** - * 分页查询文档管理记录表 - */ -export async function pageCmsDocs(params: CmsDocsParam) { - const res = await request.get>>( - '/cms/cms-docs/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询文档管理记录表列表 - */ -export async function listCmsDocs(params?: CmsDocsParam) { - const res = await request.get>( - '/cms/cms-docs', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加文档管理记录表 - */ -export async function addCmsDocs(data: CmsDocs) { - const res = await request.post>( - '/cms/cms-docs', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改文档管理记录表 - */ -export async function updateCmsDocs(data: CmsDocs) { - const res = await request.put>( - '/cms/cms-docs', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除文档管理记录表 - */ -export async function removeCmsDocs(id?: number) { - const res = await request.del>( - '/cms/cms-docs/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除文档管理记录表 - */ -export async function removeBatchCmsDocs(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-docs/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询文档管理记录表 - */ -export async function getCmsDocs(id: number) { - const res = await request.get>( - '/cms/cms-docs/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsDocs/model/index.ts b/src_bak/api/cms/cmsDocs/model/index.ts deleted file mode 100644 index 1c8c78d..0000000 --- a/src_bak/api/cms/cmsDocs/model/index.ts +++ /dev/null @@ -1,45 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 文档管理记录表 - */ -export interface CmsDocs { - // 文档ID - docsId?: number; - // 文档标题 - title?: string; - // 上级目录 - parentId?: number; - // 书籍ID - bookId?: number; - // 可见性(public,private,protected) - visibility?: string; - // 虚拟阅读量(仅用作展示) - virtualViews?: number; - // 实际阅读量 - actualViews?: number; - // 用户ID - userId?: number; - // 备注 - comments?: string; - // 排序(数字越小越靠前) - sortNumber?: number; - // 状态, 0正常, 1冻结 - status?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 文档管理记录表搜索条件 - */ -export interface CmsDocsParam extends PageParam { - docsId?: number; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsDocsBook/index.ts b/src_bak/api/cms/cmsDocsBook/index.ts deleted file mode 100644 index 15b6766..0000000 --- a/src_bak/api/cms/cmsDocsBook/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsDocsBook, CmsDocsBookParam } from './model'; - - -/** - * 分页查询书籍记录表 - */ -export async function pageCmsDocsBook(params: CmsDocsBookParam) { - const res = await request.get>>( - '/cms/cms-docs-book/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询书籍记录表列表 - */ -export async function listCmsDocsBook(params?: CmsDocsBookParam) { - const res = await request.get>( - '/cms/cms-docs-book', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加书籍记录表 - */ -export async function addCmsDocsBook(data: CmsDocsBook) { - const res = await request.post>( - '/cms/cms-docs-book', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改书籍记录表 - */ -export async function updateCmsDocsBook(data: CmsDocsBook) { - const res = await request.put>( - '/cms/cms-docs-book', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除书籍记录表 - */ -export async function removeCmsDocsBook(id?: number) { - const res = await request.del>( - '/cms/cms-docs-book/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除书籍记录表 - */ -export async function removeBatchCmsDocsBook(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-docs-book/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询书籍记录表 - */ -export async function getCmsDocsBook(id: number) { - const res = await request.get>( - '/cms/cms-docs-book/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsDocsBook/model/index.ts b/src_bak/api/cms/cmsDocsBook/model/index.ts deleted file mode 100644 index 5e02d44..0000000 --- a/src_bak/api/cms/cmsDocsBook/model/index.ts +++ /dev/null @@ -1,37 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 书籍记录表 - */ -export interface CmsDocsBook { - // ID - bookId?: number; - // 书籍名称 - name?: string; - // 书籍标识 - code?: string; - // 封面图 - photo?: string; - // 备注 - comments?: string; - // 文档内容 - content?: string; - // 排序(数字越小越靠前) - sortNumber?: number; - // 状态, 0正常, 1冻结 - status?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; -} - -/** - * 书籍记录表搜索条件 - */ -export interface CmsDocsBookParam extends PageParam { - bookId?: number; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsDocsContent/index.ts b/src_bak/api/cms/cmsDocsContent/index.ts deleted file mode 100644 index 1b64435..0000000 --- a/src_bak/api/cms/cmsDocsContent/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsDocsContent, CmsDocsContentParam } from './model'; - - -/** - * 分页查询文档内容记录表 - */ -export async function pageCmsDocsContent(params: CmsDocsContentParam) { - const res = await request.get>>( - '/cms/cms-docs-content/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询文档内容记录表列表 - */ -export async function listCmsDocsContent(params?: CmsDocsContentParam) { - const res = await request.get>( - '/cms/cms-docs-content', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加文档内容记录表 - */ -export async function addCmsDocsContent(data: CmsDocsContent) { - const res = await request.post>( - '/cms/cms-docs-content', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改文档内容记录表 - */ -export async function updateCmsDocsContent(data: CmsDocsContent) { - const res = await request.put>( - '/cms/cms-docs-content', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除文档内容记录表 - */ -export async function removeCmsDocsContent(id?: number) { - const res = await request.del>( - '/cms/cms-docs-content/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除文档内容记录表 - */ -export async function removeBatchCmsDocsContent(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-docs-content/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询文档内容记录表 - */ -export async function getCmsDocsContent(id: number) { - const res = await request.get>( - '/cms/cms-docs-content/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsDocsContent/model/index.ts b/src_bak/api/cms/cmsDocsContent/model/index.ts deleted file mode 100644 index dc06432..0000000 --- a/src_bak/api/cms/cmsDocsContent/model/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 文档内容记录表 - */ -export interface CmsDocsContent { - // ID - id?: number; - // 文档ID - docsId?: number; - // 文档内容 - content?: string; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; -} - -/** - * 文档内容记录表搜索条件 - */ -export interface CmsDocsContentParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsDomain/index.ts b/src_bak/api/cms/cmsDomain/index.ts deleted file mode 100644 index 748a5d5..0000000 --- a/src_bak/api/cms/cmsDomain/index.ts +++ /dev/null @@ -1,151 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsDomain, CmsDomainParam } from './model'; -import {SERVER_API_URL} from "@/utils/server"; - - -/** - * 分页查询网站域名记录表 - */ -export async function pageCmsDomain(params: CmsDomainParam) { - const res = await request.get>>( - SERVER_API_URL + '/cms/cms-domain/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询网站域名记录表列表 - */ -export async function listCmsDomain(params?: CmsDomainParam) { - const res = await request.get>( - SERVER_API_URL + '/cms/cms-domain', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加网站域名记录表 - */ -export async function addCmsDomain(data: CmsDomain) { - const res = await request.post>( - SERVER_API_URL + '/cms/cms-domain', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改网站域名记录表 - */ -export async function updateCmsDomain(data: CmsDomain) { - const res = await request.post>( - SERVER_API_URL + '/cms/cms-domain/domain', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除网站域名记录表 - */ -export async function removeCmsDomain(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/cms/cms-domain/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除网站域名记录表 - */ -export async function removeBatchCmsDomain(data: (number | undefined)[]) { - const res = await request.del>( - SERVER_API_URL + '/cms/cms-domain/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询网站域名记录表 - */ -export async function getCmsDomain(id: number) { - const res = await request.get>( - SERVER_API_URL + '/cms/cms-domain/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 检查IP是否存在 - */ -export async function checkExistence( - field: string, - value: string, - id?: number -) { - const res = await request.get>( - SERVER_API_URL + '/cms/domain/existence', - { - params: { field, value, id } - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -export async function resolvable(id: number) { - const res = await request.get>( - SERVER_API_URL + '/cms/domain/resolvable/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -export async function getTenantIdByDomain(params: CmsDomainParam) { - const res = await request.get>>( - SERVER_API_URL + '/cms/cms-domain/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - diff --git a/src_bak/api/cms/cmsDomain/model/index.ts b/src_bak/api/cms/cmsDomain/model/index.ts deleted file mode 100644 index 377e838..0000000 --- a/src_bak/api/cms/cmsDomain/model/index.ts +++ /dev/null @@ -1,44 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 网站域名记录表 - */ -export interface CmsDomain { - // ID - id?: number; - // 类型 0赠送域名 1绑定域名 - type?: number; - // 域名 - domain?: string; - // 主机记录 - hostName?: string; - // 记录值 - hostValue?: string; - // 状态 - status?: number; - // 排序号 - sortNumber?: number; - // 网站ID - websiteId?: number; - // 租户ID - appId?: number; - // 用户ID - userId?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 网站域名记录表搜索条件 - */ -export interface CmsDomainParam extends PageParam { - id?: number; - domain?: string; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsForm/index.ts b/src_bak/api/cms/cmsForm/index.ts deleted file mode 100644 index 19988a7..0000000 --- a/src_bak/api/cms/cmsForm/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsForm, CmsFormParam } from './model'; - - -/** - * 分页查询表单设计表 - */ -export async function pageCmsForm(params: CmsFormParam) { - const res = await request.get>>( - '/cms/cms-form/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询表单设计表列表 - */ -export async function listCmsForm(params?: CmsFormParam) { - const res = await request.get>( - '/cms/cms-form', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加表单设计表 - */ -export async function addCmsForm(data: CmsForm) { - const res = await request.post>( - '/cms/cms-form', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改表单设计表 - */ -export async function updateCmsForm(data: CmsForm) { - const res = await request.put>( - '/cms/cms-form', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除表单设计表 - */ -export async function removeCmsForm(id?: number) { - const res = await request.del>( - '/cms/cms-form/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除表单设计表 - */ -export async function removeBatchCmsForm(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-form/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询表单设计表 - */ -export async function getCmsForm(id: number) { - const res = await request.get>( - '/cms/cms-form/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsForm/model/index.ts b/src_bak/api/cms/cmsForm/model/index.ts deleted file mode 100644 index 6e43ff9..0000000 --- a/src_bak/api/cms/cmsForm/model/index.ts +++ /dev/null @@ -1,53 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 表单设计表 - */ -export interface CmsForm { - // ID - formId?: number; - // 表单标题 - name?: string; - // 顶部图片 - photo?: string; - // 背景图片 - background?: string; - // 视频文件 - video?: string; - // 提交次数 - submitNumber?: number; - // 页面布局 - layout?: string; - // 是否隐藏顶部图片 - hidePhoto?: number; - // 是否隐藏背景图片 - hideBackground?: number; - // 是否隐藏视频 - hideVideo?: number; - // 背景图片透明度 - opacity?: string; - // 用户ID - userId?: number; - // 商户ID - merchantId?: number; - // 排序(数字越小越靠前) - sortNumber?: number; - // 备注 - comments?: string; - // 状态, 0正常, 1冻结 - status?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; -} - -/** - * 表单设计表搜索条件 - */ -export interface CmsFormParam extends PageParam { - formId?: number; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsFormRecord/index.ts b/src_bak/api/cms/cmsFormRecord/index.ts deleted file mode 100644 index 376bf44..0000000 --- a/src_bak/api/cms/cmsFormRecord/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsFormRecord, CmsFormRecordParam } from './model'; - - -/** - * 分页查询表单数据记录表 - */ -export async function pageCmsFormRecord(params: CmsFormRecordParam) { - const res = await request.get>>( - '/cms/cms-form-record/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询表单数据记录表列表 - */ -export async function listCmsFormRecord(params?: CmsFormRecordParam) { - const res = await request.get>( - '/cms/cms-form-record', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加表单数据记录表 - */ -export async function addCmsFormRecord(data: CmsFormRecord) { - const res = await request.post>( - '/cms/cms-form-record', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改表单数据记录表 - */ -export async function updateCmsFormRecord(data: CmsFormRecord) { - const res = await request.put>( - '/cms/cms-form-record', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除表单数据记录表 - */ -export async function removeCmsFormRecord(id?: number) { - const res = await request.del>( - '/cms/cms-form-record/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除表单数据记录表 - */ -export async function removeBatchCmsFormRecord(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-form-record/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询表单数据记录表 - */ -export async function getCmsFormRecord(id: number) { - const res = await request.get>( - '/cms/cms-form-record/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsFormRecord/model/index.ts b/src_bak/api/cms/cmsFormRecord/model/index.ts deleted file mode 100644 index 87624d1..0000000 --- a/src_bak/api/cms/cmsFormRecord/model/index.ts +++ /dev/null @@ -1,41 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 表单数据记录表 - */ -export interface CmsFormRecord { - // ID - formRecordId?: number; - // 手机号 - phone?: string; - // 表单数据 - formData?: string; - // 表单ID - formId?: number; - // 用户ID - userId?: number; - // 商户ID - merchantId?: number; - // 姓名 - name?: string; - // 排序(数字越小越靠前) - sortNumber?: number; - // 备注 - comments?: string; - // 状态, 0正常, 1冻结 - status?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; -} - -/** - * 表单数据记录表搜索条件 - */ -export interface CmsFormRecordParam extends PageParam { - formRecordId?: number; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsLang/index.ts b/src_bak/api/cms/cmsLang/index.ts deleted file mode 100644 index bda1b17..0000000 --- a/src_bak/api/cms/cmsLang/index.ts +++ /dev/null @@ -1,105 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsLang, CmsLangParam } from './model'; - -/** - * 分页查询国际化 - */ -export async function pageCmsLang(params: CmsLangParam) { - const res = await request.get>>( - '/cms/cms-lang/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询国际化列表 - */ -export async function listCmsLang(params?: CmsLangParam) { - const res = await request.get>( - '/cms/cms-lang', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加国际化 - */ -export async function addCmsLang(data: CmsLang) { - const res = await request.post>( - '/cms/cms-lang', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改国际化 - */ -export async function updateCmsLang(data: CmsLang) { - const res = await request.put>( - '/cms/cms-lang', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除国际化 - */ -export async function removeCmsLang(id?: number) { - const res = await request.del>( - '/cms/cms-lang/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除国际化 - */ -export async function removeBatchCmsLang(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-lang/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询国际化 - */ -export async function getCmsLang(id: number) { - const res = await request.get>( - '/cms/cms-lang/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsLang/model/index.ts b/src_bak/api/cms/cmsLang/model/index.ts deleted file mode 100644 index 2dae25f..0000000 --- a/src_bak/api/cms/cmsLang/model/index.ts +++ /dev/null @@ -1,39 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 国际化 - */ -export interface CmsLang { - // ID - id?: number; - // 名称 - name?: string; - // 菜单组件地址, 目录可为空 - code?: string; - // 启用语言 - lang?: string; - // 排序(数字越小越靠前) - sortNumber?: number; - // 备注 - comments?: string; - // 0禁用 1启用 - enable?: boolean; - // 状态, 0禁用 1启用 - status?: boolean; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 国际化搜索条件 - */ -export interface CmsLangParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsLangLog/index.ts b/src_bak/api/cms/cmsLangLog/index.ts deleted file mode 100644 index 056858b..0000000 --- a/src_bak/api/cms/cmsLangLog/index.ts +++ /dev/null @@ -1,105 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsLangLog, CmsLangLogParam } from './model'; - -/** - * 分页查询国际化记录启用 - */ -export async function pageCmsLangLog(params: CmsLangLogParam) { - const res = await request.get>>( - '/cms/cms-lang-log/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询国际化记录启用列表 - */ -export async function listCmsLangLog(params?: CmsLangLogParam) { - const res = await request.get>( - '/cms/cms-lang-log', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加国际化记录启用 - */ -export async function addCmsLangLog(data: CmsLangLog) { - const res = await request.post>( - '/cms/cms-lang-log', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改国际化记录启用 - */ -export async function updateCmsLangLog(data: CmsLangLog) { - const res = await request.put>( - '/cms/cms-lang-log', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除国际化记录启用 - */ -export async function removeCmsLangLog(id?: number) { - const res = await request.del>( - '/cms/cms-lang-log/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除国际化记录启用 - */ -export async function removeBatchCmsLangLog(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-lang-log/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询国际化记录启用 - */ -export async function getCmsLangLog(id: number) { - const res = await request.get>( - '/cms/cms-lang-log/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsLangLog/model/index.ts b/src_bak/api/cms/cmsLangLog/model/index.ts deleted file mode 100644 index 0d1cc29..0000000 --- a/src_bak/api/cms/cmsLangLog/model/index.ts +++ /dev/null @@ -1,27 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 国际化记录启用 - */ -export interface CmsLangLog { - // ID - id?: number; - // 关联ID - langId?: number; - // 编码 - code?: string; - // 名称 - lang?: string; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; -} - -/** - * 国际化记录启用搜索条件 - */ -export interface CmsLangLogParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsLink/index.ts b/src_bak/api/cms/cmsLink/index.ts deleted file mode 100644 index 1d6def0..0000000 --- a/src_bak/api/cms/cmsLink/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsLink, CmsLinkParam } from './model'; - - -/** - * 分页查询常用链接 - */ -export async function pageCmsLink(params: CmsLinkParam) { - const res = await request.get>>( - '/cms/cms-link/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询常用链接列表 - */ -export async function listCmsLink(params?: CmsLinkParam) { - const res = await request.get>( - '/cms/cms-link', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加常用链接 - */ -export async function addCmsLink(data: CmsLink) { - const res = await request.post>( - '/cms/cms-link', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改常用链接 - */ -export async function updateCmsLink(data: CmsLink) { - const res = await request.put>( - '/cms/cms-link', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除常用链接 - */ -export async function removeCmsLink(id?: number) { - const res = await request.del>( - '/cms/cms-link/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除常用链接 - */ -export async function removeBatchCmsLink(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-link/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询常用链接 - */ -export async function getCmsLink(id: number) { - const res = await request.get>( - '/cms/cms-link/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsLink/model/index.ts b/src_bak/api/cms/cmsLink/model/index.ts deleted file mode 100644 index 1258a5c..0000000 --- a/src_bak/api/cms/cmsLink/model/index.ts +++ /dev/null @@ -1,43 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 常用链接 - */ -export interface CmsLink { - // 自增ID - id?: number; - // 链接名称 - name?: string; - // 图标 - icon?: string; - // 链接地址 - url?: string; - // 链接分类 - linkType?: string; - // 应用ID - appId?: number; - // 用户ID - userId?: number; - // 是否推荐 - recommend?: number; - // 备注 - comments?: string; - // 排序(数字越小越靠前) - sortNumber?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 状态, 0正常, 1待确认 - status?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; -} - -/** - * 常用链接搜索条件 - */ -export interface CmsLinkParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsModel/index.ts b/src_bak/api/cms/cmsModel/index.ts deleted file mode 100644 index 77bee6d..0000000 --- a/src_bak/api/cms/cmsModel/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsModel, CmsModelParam } from './model'; - - -/** - * 分页查询模型 - */ -export async function pageCmsModel(params: CmsModelParam) { - const res = await request.get>>( - '/cms/cms-model/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询模型列表 - */ -export async function listCmsModel(params?: CmsModelParam) { - const res = await request.get>( - '/cms/cms-model', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加模型 - */ -export async function addCmsModel(data: CmsModel) { - const res = await request.post>( - '/cms/cms-model', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改模型 - */ -export async function updateCmsModel(data: CmsModel) { - const res = await request.put>( - '/cms/cms-model', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除模型 - */ -export async function removeCmsModel(id?: number) { - const res = await request.del>( - '/cms/cms-model/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除模型 - */ -export async function removeBatchCmsModel(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-model/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询模型 - */ -export async function getCmsModel(id: number) { - const res = await request.get>( - '/cms/cms-model/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsModel/model/index.ts b/src_bak/api/cms/cmsModel/model/index.ts deleted file mode 100644 index 4c1c7f7..0000000 --- a/src_bak/api/cms/cmsModel/model/index.ts +++ /dev/null @@ -1,57 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 模型 - */ -export interface CmsModel { - // ID - modelId?: number; - // 模型名称 - name?: string; - // 唯一标识 - model?: string; - // 菜单路由地址 - path?: string; - // 菜单组件地址, 目录可为空 - component?: string; - // 模型banner图片 - banner?: string; - // 缩列图 - thumb?: string; - // 封面图宽 - imageWidth?: string; - // 封面图高 - imageHeight?: string; - // 样式 - style?: string; - // Banner上的标题 - title?: string; - // Banner上的描述 - desc?: string; - // 列表显示方式(10小图展示 20大图展示) - showType?: number; - // 用户ID - userId?: number; - // 排序(数字越小越靠前) - sortNumber?: number; - // 备注 - comments?: string; - // 状态, 0已发布, 1待审核 2已驳回 3违规内容 - status?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 模型搜索条件 - */ -export interface CmsModelParam extends PageParam { - modelId?: number; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsMp/index.ts b/src_bak/api/cms/cmsMp/index.ts deleted file mode 100644 index 4004efe..0000000 --- a/src_bak/api/cms/cmsMp/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsMp, CmsMpParam } from './model'; - - -/** - * 分页查询小程序信息 - */ -export async function pageCmsMp(params: CmsMpParam) { - const res = await request.get>>( - '/cms/cms-mp/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询小程序信息列表 - */ -export async function listCmsMp(params?: CmsMpParam) { - const res = await request.get>( - '/cms/cms-mp', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加小程序信息 - */ -export async function addCmsMp(data: CmsMp) { - const res = await request.post>( - '/cms/cms-mp', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改小程序信息 - */ -export async function updateCmsMp(data: CmsMp) { - const res = await request.put>( - '/cms/cms-mp', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除小程序信息 - */ -export async function removeCmsMp(id?: number) { - const res = await request.del>( - '/cms/cms-mp/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除小程序信息 - */ -export async function removeBatchCmsMp(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-mp/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询小程序信息 - */ -export async function getCmsMp(id: number) { - const res = await request.get>( - '/cms/cms-mp/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsMp/model/index.ts b/src_bak/api/cms/cmsMp/model/index.ts deleted file mode 100644 index b3eafe1..0000000 --- a/src_bak/api/cms/cmsMp/model/index.ts +++ /dev/null @@ -1,61 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 小程序信息 - */ -export interface CmsMp { - // ID - mpId?: number; - // 是否主账号 - type?: number; - // 小程序ID - appId?: string; - // 小程序密钥 - appSecret?: string; - // 小程序名称 - mpName?: string; - // 小程序简称 - shortName?: string; - // 头像 - avatar?: string; - // 小程序码 - mpQrcode?: string; - // 微信认证 - authentication?: number; - // 主体信息 - companyName?: string; - // 小程序备案 - icpNo?: string; - // 登录邮箱 - email?: string; - // 登录密码 - password?: string; - // 原始ID - ghId?: string; - // 入口页面 - mainPath?: string; - // 过期时间 - expirationTime?: string; - // 排序(数字越小越靠前) - sortNumber?: number; - // 介绍 - comments?: string; - // 用户ID - userId?: number; - // 状态, 0正常, 1冻结 - status?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; -} - -/** - * 小程序信息搜索条件 - */ -export interface CmsMpParam extends PageParam { - mpId?: number; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsMpAd/index.ts b/src_bak/api/cms/cmsMpAd/index.ts deleted file mode 100644 index 563d06c..0000000 --- a/src_bak/api/cms/cmsMpAd/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsMpAd, CmsMpAdParam } from './model'; - - -/** - * 分页查询小程序广告位 - */ -export async function pageCmsMpAd(params: CmsMpAdParam) { - const res = await request.get>>( - '/cms/cms-mp-ad/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询小程序广告位列表 - */ -export async function listCmsMpAd(params?: CmsMpAdParam) { - const res = await request.get>( - '/cms/cms-mp-ad', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加小程序广告位 - */ -export async function addCmsMpAd(data: CmsMpAd) { - const res = await request.post>( - '/cms/cms-mp-ad', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改小程序广告位 - */ -export async function updateCmsMpAd(data: CmsMpAd) { - const res = await request.put>( - '/cms/cms-mp-ad', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除小程序广告位 - */ -export async function removeCmsMpAd(id?: number) { - const res = await request.del>( - '/cms/cms-mp-ad/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除小程序广告位 - */ -export async function removeBatchCmsMpAd(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-mp-ad/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询小程序广告位 - */ -export async function getCmsMpAd(id: number) { - const res = await request.get>( - '/cms/cms-mp-ad/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsMpAd/model/index.ts b/src_bak/api/cms/cmsMpAd/model/index.ts deleted file mode 100644 index 3d061d6..0000000 --- a/src_bak/api/cms/cmsMpAd/model/index.ts +++ /dev/null @@ -1,47 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 小程序广告位 - */ -export interface CmsMpAd { - // ID - adId?: number; - // 页面ID - pageId?: number; - // 广告类型 - adType?: string; - // 广告位名称 - name?: string; - // 宽 - width?: string; - // 高 - height?: string; - // 广告图片 - images?: string; - // 路由/链接地址 - path?: string; - // 页面名称 - pageName?: string; - // 用户ID - userId?: number; - // 排序(数字越小越靠前) - sortNumber?: number; - // 备注 - comments?: string; - // 状态, 0正常, 1冻结 - status?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; -} - -/** - * 小程序广告位搜索条件 - */ -export interface CmsMpAdParam extends PageParam { - adId?: number; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsMpField/index.ts b/src_bak/api/cms/cmsMpField/index.ts deleted file mode 100644 index 1eb216b..0000000 --- a/src_bak/api/cms/cmsMpField/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsMpField, CmsMpFieldParam } from './model'; - - -/** - * 分页查询小程序配置 - */ -export async function pageCmsMpField(params: CmsMpFieldParam) { - const res = await request.get>>( - '/cms/cms-mp-field/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询小程序配置列表 - */ -export async function listCmsMpField(params?: CmsMpFieldParam) { - const res = await request.get>( - '/cms/cms-mp-field', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加小程序配置 - */ -export async function addCmsMpField(data: CmsMpField) { - const res = await request.post>( - '/cms/cms-mp-field', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改小程序配置 - */ -export async function updateCmsMpField(data: CmsMpField) { - const res = await request.put>( - '/cms/cms-mp-field', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除小程序配置 - */ -export async function removeCmsMpField(id?: number) { - const res = await request.del>( - '/cms/cms-mp-field/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除小程序配置 - */ -export async function removeBatchCmsMpField(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-mp-field/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询小程序配置 - */ -export async function getCmsMpField(id: number) { - const res = await request.get>( - '/cms/cms-mp-field/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsMpField/model/index.ts b/src_bak/api/cms/cmsMpField/model/index.ts deleted file mode 100644 index f573edb..0000000 --- a/src_bak/api/cms/cmsMpField/model/index.ts +++ /dev/null @@ -1,35 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 小程序配置 - */ -export interface CmsMpField { - // 自增ID - id?: number; - // 类型,0文本 1图片 2其他 - type?: number; - // 名称 - name?: string; - // 备注 - comments?: string; - // 名称 - value?: string; - // 页面ID - pageId?: number; - // 排序(数字越小越靠前) - sortNumber?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; -} - -/** - * 小程序配置搜索条件 - */ -export interface CmsMpFieldParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsMpMenu/index.ts b/src_bak/api/cms/cmsMpMenu/index.ts deleted file mode 100644 index 91554af..0000000 --- a/src_bak/api/cms/cmsMpMenu/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsMpMenu, CmsMpMenuParam } from './model'; - - -/** - * 分页查询小程序端菜单 - */ -export async function pageCmsMpMenu(params: CmsMpMenuParam) { - const res = await request.get>>( - '/cms/cms-mp-menu/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询小程序端菜单列表 - */ -export async function listCmsMpMenu(params?: CmsMpMenuParam) { - const res = await request.get>( - '/cms/cms-mp-menu', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加小程序端菜单 - */ -export async function addCmsMpMenu(data: CmsMpMenu) { - const res = await request.post>( - '/cms/cms-mp-menu', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改小程序端菜单 - */ -export async function updateCmsMpMenu(data: CmsMpMenu) { - const res = await request.put>( - '/cms/cms-mp-menu', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除小程序端菜单 - */ -export async function removeCmsMpMenu(id?: number) { - const res = await request.del>( - '/cms/cms-mp-menu/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除小程序端菜单 - */ -export async function removeBatchCmsMpMenu(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-mp-menu/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询小程序端菜单 - */ -export async function getCmsMpMenu(id: number) { - const res = await request.get>( - '/cms/cms-mp-menu/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsMpMenu/model/index.ts b/src_bak/api/cms/cmsMpMenu/model/index.ts deleted file mode 100644 index 7019e58..0000000 --- a/src_bak/api/cms/cmsMpMenu/model/index.ts +++ /dev/null @@ -1,79 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 小程序端菜单 - */ -export interface CmsMpMenu { - // ID - menuId?: number; - // 上级id, 0是顶级 - parentId?: number; - // 菜单名称 - title?: string; - // 类型 0功能图标 1订单状态图标 2首页导航图标 3 商城导航图标 4管理人员功能图标 - type?: number; - // 是否微信小程序菜单 - isMpWeixin?: string; - // 菜单路由地址 - path?: string; - // 菜单组件地址, 目录可为空 - component?: string; - // 打开位置 - target?: string; - // 菜单图标 - avatar?: string; - // 图标颜色 - color?: string; - // 上传图标 - icon?: string; - // 是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单) - hide?: number; - // 位置 0不限 1顶部 2底部 - position?: number; - // 0 第一行 1第二行 - rows?: number; - // 菜单侧栏选中的path - active?: string; - // 其它路由元信息 - meta?: string; - // 绑定的页面 - pageId?: number; - // 绑定的文章分类ID - articleCategoryId?: number; - // 绑定的文章ID - articleId?: number; - // 绑定的表单ID - formId?: number; - // 绑定的书籍标识 - bookCode?: string; - // 绑定的商品分类ID - goodsCategoryId?: number; - // 绑定的商品ID - goodsId?: number; - // 用户ID - userId?: number; - // 是否管理人员可见 - adminShow?: number; - // 设为首页 - home?: number; - // 分组名称 - groupName?: string; - // 排序(数字越小越靠前) - sortNumber?: number; - // 备注 - comments?: string; - // 状态, 0正常, 1冻结 - status?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; -} - -/** - * 小程序端菜单搜索条件 - */ -export interface CmsMpMenuParam extends PageParam { - menuId?: number; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsMpPages/index.ts b/src_bak/api/cms/cmsMpPages/index.ts deleted file mode 100644 index da3fd65..0000000 --- a/src_bak/api/cms/cmsMpPages/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsMpPages, CmsMpPagesParam } from './model'; - - -/** - * 分页查询小程序页面 - */ -export async function pageCmsMpPages(params: CmsMpPagesParam) { - const res = await request.get>>( - '/cms/cms-mp-pages/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询小程序页面列表 - */ -export async function listCmsMpPages(params?: CmsMpPagesParam) { - const res = await request.get>( - '/cms/cms-mp-pages', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加小程序页面 - */ -export async function addCmsMpPages(data: CmsMpPages) { - const res = await request.post>( - '/cms/cms-mp-pages', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改小程序页面 - */ -export async function updateCmsMpPages(data: CmsMpPages) { - const res = await request.put>( - '/cms/cms-mp-pages', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除小程序页面 - */ -export async function removeCmsMpPages(id?: number) { - const res = await request.del>( - '/cms/cms-mp-pages/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除小程序页面 - */ -export async function removeBatchCmsMpPages(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-mp-pages/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询小程序页面 - */ -export async function getCmsMpPages(id: number) { - const res = await request.get>( - '/cms/cms-mp-pages/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsMpPages/model/index.ts b/src_bak/api/cms/cmsMpPages/model/index.ts deleted file mode 100644 index 8b08ae1..0000000 --- a/src_bak/api/cms/cmsMpPages/model/index.ts +++ /dev/null @@ -1,47 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 小程序页面 - */ -export interface CmsMpPages { - // ID - id?: number; - // 上级id, 0是顶级 - parentId?: number; - // 页面名称 - title?: string; - // 页面路径 - path?: string; - // 设为首页 - home?: number; - // 分包 - subpackage?: string; - // 图标 - icon?: string; - // 未选中图标 - iconPath?: string; - // 选中的图标 - selectedIconPath?: string; - // 排序(数字越小越靠前) - sortNumber?: number; - // 备注 - comments?: string; - // 用户ID - userId?: number; - // 状态, 0正常, 1冻结 - status?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; -} - -/** - * 小程序页面搜索条件 - */ -export interface CmsMpPagesParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsNavigation/index.ts b/src_bak/api/cms/cmsNavigation/index.ts deleted file mode 100644 index 7eb316f..0000000 --- a/src_bak/api/cms/cmsNavigation/index.ts +++ /dev/null @@ -1,138 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsNavigation, CmsNavigationParam } from './model'; - -/** - * 分页查询网站导航记录表 - */ -export async function pageCmsNavigation(params: CmsNavigationParam) { - const res = await request.get>>( - '/cms/cms-navigation/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询网站导航记录表列表 - */ -export async function listCmsNavigation(params?: CmsNavigationParam) { - const res = await request.get>( - '/cms/cms-navigation', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询导航列表(树形结构) - */ -export async function treeNavigation(params?: CmsNavigationParam) { - const res = await request.get>( - '/cms/cms-navigation/tree', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} -/** - * 添加网站导航记录表 - */ -export async function addCmsNavigation(data: CmsNavigation) { - const res = await request.post>( - '/cms/cms-navigation', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改网站导航记录表 - */ -export async function updateCmsNavigation(data: CmsNavigation) { - const res = await request.put>( - '/cms/cms-navigation', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除网站导航记录表 - */ -export async function removeCmsNavigation(id?: number) { - const res = await request.del>( - '/cms/cms-navigation/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除网站导航记录表 - */ -export async function removeBatchCmsNavigation(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-navigation/batch', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询网站导航记录表 - */ -export async function getCmsNavigation(id: number) { - const res = await request.get>( - '/cms/cms-navigation/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -export async function getNavigationByPath(params: CmsNavigationParam) { - const res = await request.get>( - '/cms/cms-navigation/getNavigationByPath', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - - -/** - * 根据code查询导航 - */ -export async function getByCode(code: string) { - const res = await request.get>( - '/cms/cms-navigation/getByCode/' + code - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - diff --git a/src_bak/api/cms/cmsNavigation/model/index.ts b/src_bak/api/cms/cmsNavigation/model/index.ts deleted file mode 100644 index cdd4f0c..0000000 --- a/src_bak/api/cms/cmsNavigation/model/index.ts +++ /dev/null @@ -1,117 +0,0 @@ -import type {PageParam} from '@/api/index'; -import type {CmsDesign} from "@/api/cms/cmsDesign/model"; -import type {CmsModel} from "@/api/cms/cmsModel/model"; -import {CmsArticle} from "@/api/cms/cmsArticle/model"; - -/** - * 网站导航记录表 - */ -export interface CmsNavigation { - // ID - navigationId?: number; - // 上级id, 0是顶级 - parentId?: number; - // 菜单名称 - title?: string; - // 模型 - model?: string; - // 标识 - code?: string; - // 菜单路由地址 - path?: string; - // 菜单组件地址, 目录可为空 - component?: string; - // 组件路径 - componentPath?: string; - // 打开位置 - target?: string; - // 菜单图标 - icon?: string; - // banner图片 - banner?: string; - // 图标颜色 - color?: string; - // 是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单) - hide?: number; - // 可见类型 0所有人 1登录可见 2密码可见 - permission?: number; - // 访问密码 - password?: string; - // 位置 0不限 1顶部 2底部 - position?: number; - // 仅在顶部显示 - top?: number; - // 仅在底部显示 - bottom?: number; - // 菜单侧栏选中的path - active?: string; - // 其它路由元信息 - meta?: string; - // css样式 - style?: string; - // 父级栏目路由 - parentPath?: string; - // 父级栏目名称 - parentName?: string; - // 模型名称 - modelName?: string; - // 类型(模型) - type?: string; - // 绑定的页面(已废弃) - pageId?: number; - // 项目ID - itemId?: number; - // 是否微信小程序菜单 - isMpWeixin?: string; - // 用户ID - userId?: number; - // 设为首页 - home?: number; - // 排序(数字越小越靠前) - sortNumber?: number; - // 备注 - comments?: string; - // 是否删除, 0否, 1是 - deleted?: number; - // 状态, 0正常, 1冻结 - status?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 父级栏目 - parent?: CmsNavigation; - // 子级栏目 - children?: CmsNavigation[]; - // 模型信息 - modelInfo?: CmsModel; - // 栏目名称 - categoryName?: string; - // 是否禁用 - disabled?: boolean; - // 链接地址 - design?: CmsDesign; - // 子级数量 - childHeight?: number, - // 是否展开 - showChild?: boolean - // 布局 - layout?: any; - // 标题 - label?: string; - // 值 - value?: number; - // 文章列表 - articles?: CmsArticle[]; -} - -/** - * 网站导航记录表搜索条件 - */ -export interface CmsNavigationParam extends PageParam { - navigationId?: number; - parentId?: number; - hide?: number; - model?: string; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsOrder/index.ts b/src_bak/api/cms/cmsOrder/index.ts deleted file mode 100644 index 8224ddd..0000000 --- a/src_bak/api/cms/cmsOrder/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsOrder, CmsOrderParam } from './model'; - - -/** - * 分页查询订单 - */ -export async function pageCmsOrder(params: CmsOrderParam) { - const res = await request.get>>( - '/cms/cms-order/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询订单列表 - */ -export async function listCmsOrder(params?: CmsOrderParam) { - const res = await request.get>( - '/cms/cms-order', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加订单 - */ -export async function addCmsOrder(data: CmsOrder) { - const res = await request.post>( - '/cms/cms-order', - data - ); - if (res.code === 0) { - return res; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改订单 - */ -export async function updateCmsOrder(data: CmsOrder) { - const res = await request.put>( - '/cms/cms-order', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除订单 - */ -export async function removeCmsOrder(id?: number) { - const res = await request.del>( - '/cms/cms-order/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除订单 - */ -export async function removeBatchCmsOrder(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-order/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询订单 - */ -export async function getCmsOrder(id: number) { - const res = await request.get>( - '/cms/cms-order/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsOrder/model/index.ts b/src_bak/api/cms/cmsOrder/model/index.ts deleted file mode 100644 index bde0439..0000000 --- a/src_bak/api/cms/cmsOrder/model/index.ts +++ /dev/null @@ -1,69 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 订单 - */ -export interface CmsOrder { - // 订单号 - orderId?: number; - // 关联模型 - model?: string; - // 订单标题 - title?: string; - // 订单编号 - orderNo?: string; - // 订单类型,0商城 1询价 2留言 - type?: number; - // 关联文章ID - articleId?: number; - // 真实姓名 - realName?: string; - // 手机号码 - phone?: string; - // 电子邮箱 - email?: string; - // 收货地址 - address?: string; - // 订单内容 - content?: string; - // 订单总额 - totalPrice?: string; - // 实际付款 - payPrice?: string; - // 报价询价 - price?: string; - // 购买数量 - totalNum?: number; - // 二维码地址,保存订单号,支付成功后才生成 - qrcode?: string; - // 下单渠道,0网站 1小程序 2其他 - channel?: number; - // 过期时间 - expirationTime?: string; - // 订单是否已结算(0未结算 1已结算) - isSettled?: number; - // 用户id - userId?: number; - // 备注 - comments?: string; - // 排序号 - sortNumber?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 图像验证码 - code?: string; - // 图像验证码内容 - text?: string; -} - -/** - * 订单搜索条件 - */ -export interface CmsOrderParam extends PageParam { - orderId?: number; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsSpec/index.ts b/src_bak/api/cms/cmsSpec/index.ts deleted file mode 100644 index 145b031..0000000 --- a/src_bak/api/cms/cmsSpec/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsSpec, CmsSpecParam } from './model'; - - -/** - * 分页查询规格 - */ -export async function pageCmsSpec(params: CmsSpecParam) { - const res = await request.get>>( - '/cms/cms-spec/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询规格列表 - */ -export async function listCmsSpec(params?: CmsSpecParam) { - const res = await request.get>( - '/cms/cms-spec', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加规格 - */ -export async function addCmsSpec(data: CmsSpec) { - const res = await request.post>( - '/cms/cms-spec', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改规格 - */ -export async function updateCmsSpec(data: CmsSpec) { - const res = await request.put>( - '/cms/cms-spec', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除规格 - */ -export async function removeCmsSpec(id?: number) { - const res = await request.del>( - '/cms/cms-spec/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除规格 - */ -export async function removeBatchCmsSpec(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-spec/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询规格 - */ -export async function getCmsSpec(id: number) { - const res = await request.get>( - '/cms/cms-spec/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsSpec/model/index.ts b/src_bak/api/cms/cmsSpec/model/index.ts deleted file mode 100644 index 3a7913a..0000000 --- a/src_bak/api/cms/cmsSpec/model/index.ts +++ /dev/null @@ -1,35 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 规格 - */ -export interface CmsSpec { - // 规格ID - specId?: number; - // 规格名称 - specName?: string; - // 规格值 - specValue?: string; - // 创建用户 - userId?: number; - // 更新者 - updater?: number; - // 备注 - comments?: string; - // 状态, 0正常, 1待修,2异常已修,3异常未修 - status?: number; - // 排序号 - sortNumber?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; -} - -/** - * 规格搜索条件 - */ -export interface CmsSpecParam extends PageParam { - specId?: number; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsSpecValue/index.ts b/src_bak/api/cms/cmsSpecValue/index.ts deleted file mode 100644 index 0983b22..0000000 --- a/src_bak/api/cms/cmsSpecValue/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsSpecValue, CmsSpecValueParam } from './model'; - - -/** - * 分页查询规格值 - */ -export async function pageCmsSpecValue(params: CmsSpecValueParam) { - const res = await request.get>>( - '/cms/cms-spec-value/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询规格值列表 - */ -export async function listCmsSpecValue(params?: CmsSpecValueParam) { - const res = await request.get>( - '/cms/cms-spec-value', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加规格值 - */ -export async function addCmsSpecValue(data: CmsSpecValue) { - const res = await request.post>( - '/cms/cms-spec-value', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改规格值 - */ -export async function updateCmsSpecValue(data: CmsSpecValue) { - const res = await request.put>( - '/cms/cms-spec-value', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除规格值 - */ -export async function removeCmsSpecValue(id?: number) { - const res = await request.del>( - '/cms/cms-spec-value/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除规格值 - */ -export async function removeBatchCmsSpecValue(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-spec-value/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询规格值 - */ -export async function getCmsSpecValue(id: number) { - const res = await request.get>( - '/cms/cms-spec-value/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsSpecValue/model/index.ts b/src_bak/api/cms/cmsSpecValue/model/index.ts deleted file mode 100644 index 697279d..0000000 --- a/src_bak/api/cms/cmsSpecValue/model/index.ts +++ /dev/null @@ -1,29 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 规格值 - */ -export interface CmsSpecValue { - // 规格值ID - specValueId?: number; - // 规格组ID - specId?: number; - // 规格值 - specValue?: string; - // 备注 - comments?: string; - // 排序号 - sortNumber?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; -} - -/** - * 规格值搜索条件 - */ -export interface CmsSpecValueParam extends PageParam { - specValueId?: number; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsWebsite/index.ts b/src_bak/api/cms/cmsWebsite/index.ts deleted file mode 100644 index 0679bcf..0000000 --- a/src_bak/api/cms/cmsWebsite/index.ts +++ /dev/null @@ -1,147 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CmsWebsite, CmsWebsiteParam } from './model'; - - -/** - * 分页查询网站信息记录表 - */ -export async function pageCmsWebsite(params: CmsWebsiteParam) { - const res = await request.get>>( - '/cms/cms-website/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询网站 - */ -export async function getCmsWebsiteAll(id: number) { - const res = await request.get>( - '/cms/cms-website/getAll/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询网站信息记录表列表 - */ -export async function listCmsWebsite(params?: CmsWebsiteParam) { - const res = await request.get>( - '/cms/cms-website', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加网站信息记录表 - */ -export async function addCmsWebsite(data: CmsWebsite) { - const res = await request.post>( - '/cms/cms-website', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改网站信息记录表 - */ -export async function updateCmsWebsite(data: CmsWebsite) { - const res = await request.put>( - '/cms/cms-website', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除网站信息记录表 - */ -export async function removeCmsWebsite(id?: number) { - const res = await request.del>( - '/cms/cms-website/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除网站信息记录表 - */ -export async function removeBatchCmsWebsite(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-website/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询网站信息记录表 - */ -export async function getCmsWebsite(id: number) { - const res = await request.get>( - '/cms/cms-website/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 清除缓存 - */ -export async function removeSiteInfoCache(key?: string) { - const res = await request.del>( - '/cms/cms-website/clearSiteInfo/' + key - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 分页查询网站信息记录表 - * @param params - */ -export async function pageCmsWebsiteAll(params: CmsWebsiteParam) { - const res = await request.get>>( - '/cms/cms-website/pageAll', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsWebsite/model/index.ts b/src_bak/api/cms/cmsWebsite/model/index.ts deleted file mode 100644 index e12d132..0000000 --- a/src_bak/api/cms/cmsWebsite/model/index.ts +++ /dev/null @@ -1,138 +0,0 @@ -import type { PageParam } from '@/api/index'; -import type {CmsNavigation} from "@/api/cms/cmsNavigation/model"; - -/** - * 网站信息记录表 - */ -export interface CmsWebsite { - // 站点ID - websiteId?: number; - // 网站名称 - websiteName?: string; - // 网站标识 - websiteCode?: string; - // 网站LOGO - websiteIcon?: string; - // 网站LOGO - websiteLogo?: string; - // 网站LOGO(深色模式) - websiteDarkLogo?: string; - // 网站类型 - websiteType?: string; - // 网站关键词 - keywords?: string; - // 域名前缀 - prefix?: string; - // 绑定域名 - domain?: string; - // 全局样式 - style?: string; - // 后台管理地址 - adminUrl?: string; - // 应用版本 10免费版 20专业版 30永久授权 - version?: number; - // 服务到期时间 - expirationTime?: string; - // 模版ID - templateId?: number; - // 行业类型(父级) - industryParent?: string; - // 行业类型(子级) - industryChild?: string; - // 企业ID - companyId?: number; - // 所在国家 - country?: string; - // 所在省份 - province?: string; - // 所在城市 - city?: string; - // 所在辖区 - region?: string; - // 经度 - longitude?: string; - // 纬度 - latitude?: string; - // 街道地址 - address?: string; - // 联系电话 - phone?: string; - // 电子邮箱 - email?: string; - // ICP备案号 - icpNo?: string; - // 公安备案 - policeNo?: string; - // 备注 - comments?: string; - // 是否推荐 - recommend?: number; - // 运行状态 - running?: number; - // 状态 0未开通 1运行中 2维护中 3已关闭 4已欠费停机 5违规关停 - status?: number; - // 维护说明 - statusText?: string; - // 关闭说明 - statusClose?: string; - // 状态图标 - statusIcon?: string; - // 全局样式 - styles?: string; - // 排序号 - sortNumber?: number; - // 用户ID - userId?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; - // 网站配置 - config?: any; - topNavs?: CmsNavigation[]; - bottomNavs?: CmsNavigation[]; - loginUser?: any; - search?: boolean; -} - - -export interface AppInfo { - appId?: number; - appName?: string; - description?: string; - keywords?: string; - appCode?: string; - mpQrCode?: string; - title?: string; - logo?: string; - icon?: string; - domain?: string; - running?: number; - version?: number; - expirationTime?: string; - expired?: boolean; - expiredDays?: number; - soon?: number; - statusIcon?: string; - statusText?: string; - config?: Object; - serverTime?: Object; - topNavs?: CmsNavigation[]; - bottomNavs?: CmsNavigation[]; - setting?: Object; - createTime?: string; -} - -/** - * 网站信息记录表搜索条件 - */ -export interface CmsWebsiteParam extends PageParam { - websiteId?: number; - status?: number; - phone?: string; - keywords?: string; -} diff --git a/src_bak/api/cms/cmsWebsiteField/index.ts b/src_bak/api/cms/cmsWebsiteField/index.ts deleted file mode 100644 index 65644c6..0000000 --- a/src_bak/api/cms/cmsWebsiteField/index.ts +++ /dev/null @@ -1,129 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type {CmsWebsiteField, CmsWebsiteFieldParam, Config} from './model'; - -/** - * 分页查询应用参数 - */ -export async function pageCmsWebsiteField(params: CmsWebsiteFieldParam) { - const res = await request.get>>( - '/cms/cms-website-field/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询应用参数列表 - */ -export async function listCmsWebsiteField(params?: CmsWebsiteFieldParam) { - const res = await request.get>( - '/cms/cms-website-field', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加应用参数 - */ -export async function addCmsWebsiteField(data: CmsWebsiteField) { - const res = await request.post>( - '/cms/cms-website-field', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改应用参数 - */ -export async function updateCmsWebsiteField(data: CmsWebsiteField) { - const res = await request.put>( - '/cms/cms-website-field', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除应用参数 - */ -export async function removeCmsWebsiteField(id?: number) { - const res = await request.del>( - '/cms/cms-website-field/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除应用参数 - */ -export async function removeBatchCmsWebsiteField(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/cms-website-field/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询应用参数 - */ -export async function getCmsWebsiteField(id: number) { - const res = await request.get>( - '/cms/cms-website-field/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 恢复项目参数 - */ -export async function undeleteWebsiteField(id?: number) { - const res = await request.del>( - '/cms/website-field/undelete/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - - -/** - * 查询项目参数列表 - */ -export async function configWebsiteField(params?: CmsWebsiteFieldParam) { - const res = await request.get>( - '/cms/cms-website-field/config', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/cmsWebsiteField/model/index.ts b/src_bak/api/cms/cmsWebsiteField/model/index.ts deleted file mode 100644 index ec5967c..0000000 --- a/src_bak/api/cms/cmsWebsiteField/model/index.ts +++ /dev/null @@ -1,63 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 应用参数 - */ -export interface CmsWebsiteField { - // 自增ID - id?: number; - // 类型,0文本 1图片 2其他 - type?: number; - // 名称 - name?: string; - // 默认值 - defaultValue?: string; - // 可修改的值 [on|off] - modifyRange?: string; - // 备注 - comments?: string; - // css样式 - style?: string; - // 名称 - value?: string; - // 排序(数字越小越靠前) - sortNumber?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; -} - -/** - * 应用参数搜索条件 - */ -export interface CmsWebsiteFieldParam extends PageParam { - id?: number; - name?: string; - keywords?: string; -} - -export interface Config { - siteName?: string; - siteLogo?: string; - domain?: string; - icpNo?: string; - copyright?: string; - loginBgImg?: string; - address?: string; - tel?: string; - theme?: string; - workDay?: string; - kefu2?: string; - kefu1?: string; - email?: string; - loginTitle?: string; - sysLogo?: string; - vipText?: string; - vipComments?: string; - deliveryText?: string; - guaranteeText?: string; - openComments?: string; -} diff --git a/src_bak/api/cms/link/index.ts b/src_bak/api/cms/link/index.ts deleted file mode 100644 index 5ffcb84..0000000 --- a/src_bak/api/cms/link/index.ts +++ /dev/null @@ -1,113 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { Link, LinkParam } from './model'; - - -/** - * 分页查询链接 - */ -export async function pageLink(params: LinkParam) { - const res = await request.get>>( - '/oa/link/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询链接列表 - */ -export async function listLink(params?: LinkParam) { - const res = await request.get>( - '/oa/link', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加链接 - */ -export async function addLink(data: Link) { - const res = await request.post>( - '/oa/link', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改链接 - */ -export async function updateLink(data: Link) { - const res = await request.put>( - '/oa/link', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除链接 - */ -export async function removeLink(id?: number) { - const res = await request.del>( - '/oa/link/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除链接 - */ -export async function removeBatchLink(data: (number | undefined)[]) { - const res = await request.del>( - '/oa/link/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 检查IP是否存在 - */ -export async function checkExistence( - field: string, - value: string, - id?: number -) { - const res = await request.get>( - '/oa/link/existence', - { - params: { field, value, id } - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/link/model/index.ts b/src_bak/api/cms/link/model/index.ts deleted file mode 100644 index b22d9dc..0000000 --- a/src_bak/api/cms/link/model/index.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 链接 - */ -export interface Link { - id?: number; - name?: string; - icon?: string; - url?: string; - linkType?: string; - appId?: number; - categoryId?: number; - userId?: number; - comments?: string; - recommend?: number; - sortNumber?: number; - deleted?: number; - status?: number; - createTime?: number; -} - -/** - * 链接搜索条件 - */ -export interface LinkParam extends PageParam { - id?: number; - linkType?: string; - categoryId?: number; - name?: string; -} diff --git a/src_bak/api/cms/mpOfficialMenu/index.ts b/src_bak/api/cms/mpOfficialMenu/index.ts deleted file mode 100644 index 396e464..0000000 --- a/src_bak/api/cms/mpOfficialMenu/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { MpOfficialMenu, MpOfficialMenuParam } from './model'; - - -/** - * 分页查询小程序端菜单 - */ -export async function pageMpOfficialMenu(params: MpOfficialMenuParam) { - const res = await request.get>>( - '/cms/mp-official-menu/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询小程序端菜单列表 - */ -export async function listMpOfficialMenu(params?: MpOfficialMenuParam) { - const res = await request.get>( - '/cms/mp-official-menu', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加小程序端菜单 - */ -export async function addMpOfficialMenu(data: MpOfficialMenu) { - const res = await request.post>( - '/cms/mp-official-menu', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改小程序端菜单 - */ -export async function updateMpOfficialMenu(data: MpOfficialMenu) { - const res = await request.put>( - '/cms/mp-official-menu', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除小程序端菜单 - */ -export async function removeMpOfficialMenu(id?: number) { - const res = await request.del>( - '/cms/mp-official-menu/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除小程序端菜单 - */ -export async function removeBatchMpOfficialMenu(data: (number | undefined)[]) { - const res = await request.del>( - '/cms/mp-official-menu/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询小程序端菜单 - */ -export async function getMpOfficialMenu(id: number) { - const res = await request.get>( - '/cms/mp-official-menu/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/cms/mpOfficialMenu/model/index.ts b/src_bak/api/cms/mpOfficialMenu/model/index.ts deleted file mode 100644 index dc4cd02..0000000 --- a/src_bak/api/cms/mpOfficialMenu/model/index.ts +++ /dev/null @@ -1,37 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 小程序端菜单 - */ -export interface MpOfficialMenu { - // ID - id?: number; - // 上级id, 0是顶级 - parentId?: number; - // 菜单名称 - name?: string; - // 类型 - type?: string; - // 菜单值 - key?: string; - // 用户ID - userId?: number; - // 排序(数字越小越靠前) - sortNumber?: number; - // 备注 - comments?: string; - // 状态, 0正常, 1冻结 - status?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; -} - -/** - * 小程序端菜单搜索条件 - */ -export interface MpOfficialMenuParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/index.ts b/src_bak/api/index.ts deleted file mode 100644 index 981f63c..0000000 --- a/src_bak/api/index.ts +++ /dev/null @@ -1,61 +0,0 @@ -/** - * 接口统一返回结果 - */ -export interface ApiResult { - // 状态码 - code: number; - // 状态信息 - message?: string; - // 返回数据 - data?: T; -} - -/** - * 分页查询统一结果 - */ -export interface PageResult { - // 返回数据 - list: T[]; - // 总数量 - count: number; -} - -/** - * 分页查询基本参数 - */ -export interface PageParam { - // 第几页 - page?: number; - // 每页多少条 - limit?: number; - // 排序字段 - sort?: string; - sortNum?: string; - // 排序方式, asc升序, desc降序 - order?: string; - // 租户ID - tenantId?: number; - // 企业ID - companyId?: number; - // 商户ID - merchantId?: number; - merchantName?: string; - categoryIds?: any; - // 商品分类 - categoryId?: number; - categoryName?: string; - // 搜素关键词 - keywords?: string; - // 起始时间 - createTimeStart?: string; - // 结束时间 - createTimeEnd?: string; - timeStart?: number; - timeEnd?: number; - isExpireTime?: number; - showSoldStatus?: boolean; - dateTime?: string; - lang?: string; - model?: string; - BaseUrl?: string; -} diff --git a/src_bak/api/json/china-provinces.geo.json b/src_bak/api/json/china-provinces.geo.json deleted file mode 100644 index be70ca7..0000000 --- a/src_bak/api/json/china-provinces.geo.json +++ /dev/null @@ -1 +0,0 @@ -{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"id":"65","size":"550","name":"新疆","cp":[84.9023,42.148],"childNum":18},"geometry":{"type":"Polygon","coordinates":[[[96.416,42.7588],[96.416,42.7148],[95.9766,42.4951],[96.0645,42.3193],[96.2402,42.2314],[95.9766,41.9238],[95.2734,41.6162],[95.1855,41.792],[94.5703,41.4844],[94.043,41.0889],[93.8672,40.6934],[93.0762,40.6494],[92.6367,39.6387],[92.373,39.3311],[92.373,39.1113],[92.373,39.0234],[90.1758,38.4961],[90.3516,38.2324],[90.6152,38.3203],[90.5273,37.8369],[91.0547,37.4414],[91.3184,37.0898],[90.7031,36.7822],[90.791,36.6064],[91.0547,36.5186],[91.0547,36.0791],[90.8789,36.0352],[90,36.2549],[89.9121,36.0791],[89.7363,36.0791],[89.209,36.2988],[88.7695,36.3428],[88.5938,36.4746],[87.3633,36.4307],[86.2207,36.167],[86.1328,35.8594],[85.6055,35.6836],[85.0781,35.7275],[84.1992,35.376],[83.1445,35.4199],[82.8809,35.6836],[82.4414,35.7275],[82.002,35.332],[81.6504,35.2441],[80.4199,35.4199],[80.2441,35.2881],[80.332,35.1563],[80.2441,35.2002],[79.8926,34.8047],[79.8047,34.4971],[79.1016,34.4531],[79.0137,34.3213],[78.2227,34.7168],[78.0469,35.2441],[78.0469,35.5078],[77.4316,35.4639],[76.8164,35.6396],[76.5527,35.8594],[76.2012,35.8154],[75.9375,36.0352],[76.0254,36.4746],[75.8496,36.6943],[75.498,36.7383],[75.4102,36.958],[75.0586,37.002],[74.8828,36.9141],[74.7949,37.0459],[74.5313,37.0898],[74.5313,37.2217],[74.8828,37.2217],[75.1465,37.4414],[74.8828,37.5732],[74.9707,37.749],[74.8828,38.4521],[74.3555,38.6719],[74.1797,38.6719],[74.0918,38.54],[73.8281,38.584],[73.7402,38.8477],[73.8281,38.9795],[73.4766,39.375],[73.916,39.5068],[73.916,39.6826],[73.8281,39.7705],[74.0039,40.0342],[74.8828,40.3418],[74.7949,40.5176],[75.2344,40.4297],[75.5859,40.6494],[75.7617,40.2979],[76.377,40.3857],[76.9043,41.001],[77.6074,41.001],[78.1348,41.2207],[78.1348,41.3965],[80.1563,42.0557],[80.2441,42.2754],[80.1563,42.627],[80.2441,42.8467],[80.5078,42.8906],[80.4199,43.0664],[80.7715,43.1982],[80.4199,44.165],[80.4199,44.6045],[79.9805,44.8242],[79.9805,44.9561],[81.7383,45.3955],[82.0898,45.2197],[82.5293,45.2197],[82.2656,45.6592],[83.0566,47.2412],[83.6719,47.0215],[84.7266,47.0215],[84.9023,46.8896],[85.5176,47.0654],[85.6934,47.2852],[85.5176,48.1201],[85.7813,48.4277],[86.5723,48.5596],[86.8359,48.8232],[86.748,48.9551],[86.8359,49.1309],[87.8027,49.1748],[87.8906,48.999],[87.7148,48.9111],[88.0664,48.7354],[87.9785,48.6035],[88.5059,48.3838],[88.6816,48.1641],[89.1211,47.9883],[89.5605,48.0322],[89.7363,47.8564],[90.0879,47.8564],[90.3516,47.6807],[90.5273,47.2412],[90.8789,46.9775],[91.0547,46.582],[90.8789,46.3184],[91.0547,46.0107],[90.7031,45.7471],[90.7031,45.5273],[90.8789,45.2197],[91.582,45.0879],[93.5156,44.9561],[94.7461,44.3408],[95.3613,44.2969],[95.3613,44.0332],[95.5371,43.9014],[95.8887,43.2422],[96.3281,42.9346],[96.416,42.7588]]]}},{"type":"Feature","properties":{"id":"54","size":"550","name":"西藏","cp":[87.8695,31.6846],"childNum":7},"geometry":{"type":"Polygon","coordinates":[[[79.0137,34.3213],[79.1016,34.4531],[79.8047,34.4971],[79.8926,34.8047],[80.2441,35.2002],[80.332,35.1563],[80.2441,35.2881],[80.4199,35.4199],[81.6504,35.2441],[82.002,35.332],[82.4414,35.7275],[82.8809,35.6836],[83.1445,35.4199],[84.1992,35.376],[85.0781,35.7275],[85.6055,35.6836],[86.1328,35.8594],[86.2207,36.167],[87.3633,36.4307],[88.5938,36.4746],[88.7695,36.3428],[89.209,36.2988],[89.7363,36.0791],[89.3848,36.0352],[89.4727,35.9033],[89.7363,35.7715],[89.7363,35.4199],[89.4727,35.376],[89.4727,35.2441],[89.5605,34.8926],[89.8242,34.8486],[89.7363,34.6729],[89.8242,34.3652],[89.6484,34.0137],[90.0879,33.4863],[90.7031,33.1348],[91.4063,33.1348],[91.9336,32.8271],[92.1973,32.8271],[92.2852,32.7393],[92.9883,32.7393],[93.5156,32.4756],[93.7793,32.5635],[94.1309,32.4316],[94.6582,32.6074],[95.1855,32.4316],[95.0098,32.2998],[95.1855,32.3438],[95.2734,32.2119],[95.3613,32.168],[95.3613,31.9922],[95.4492,31.8164],[95.8008,31.6846],[95.9766,31.8164],[96.1523,31.5967],[96.2402,31.9482],[96.5039,31.7285],[96.8555,31.6846],[96.7676,31.9922],[97.2949,32.0801],[97.3828,32.5635],[97.7344,32.5195],[98.1738,32.3438],[98.4375,31.8604],[98.877,31.4209],[98.6133,31.2012],[98.9648,30.7617],[99.1406,29.2676],[98.9648,29.1357],[98.9648,28.8281],[98.7891,28.8721],[98.7891,29.0039],[98.7012,28.916],[98.6133,28.5205],[98.7891,28.3447],[98.7012,28.2129],[98.3496,28.125],[98.2617,28.3887],[98.1738,28.125],[97.5586,28.5205],[97.2949,28.0811],[97.3828,27.9053],[97.0313,27.7295],[96.5039,28.125],[95.7129,28.2568],[95.3613,28.125],[95.2734,27.9492],[94.2188,27.5537],[93.8672,27.0264],[93.6035,26.9385],[92.1094,26.8506],[92.0215,27.4658],[91.582,27.5537],[91.582,27.9053],[91.4063,28.0371],[91.0547,27.8613],[90.7031,28.0811],[89.8242,28.2129],[89.6484,28.1689],[89.1211,27.5977],[89.1211,27.334],[89.0332,27.2021],[88.7695,27.4219],[88.8574,27.9932],[88.6816,28.125],[88.1543,27.9053],[87.8906,27.9492],[87.7148,27.8174],[87.0996,27.8174],[86.748,28.125],[86.5723,28.125],[86.4844,27.9053],[86.1328,28.125],[86.0449,27.9053],[85.6934,28.3447],[85.6055,28.2568],[85.166,28.3447],[85.166,28.6523],[84.9023,28.5645],[84.4629,28.7402],[84.2871,28.8721],[84.1992,29.2236],[84.1113,29.2676],[83.584,29.1797],[83.2324,29.5752],[82.1777,30.0586],[82.0898,30.3223],[81.3867,30.3662],[81.2109,30.0146],[81.0352,30.2344],[80.0684,30.5859],[79.7168,30.9375],[79.0137,31.0693],[78.75,31.333],[78.8379,31.5967],[78.6621,31.8164],[78.75,31.9043],[78.4863,32.124],[78.3984,32.5195],[78.75,32.6953],[78.9258,32.3438],[79.2773,32.5635],[79.1016,33.1787],[78.6621,33.6621],[78.6621,34.1016],[78.9258,34.1455],[79.0137,34.3213]]]}},{"type":"Feature","properties":{"id":"15","size":"450","name":"内蒙古","cp":[111.670801,41.818311],"childNum":12},"geometry":{"type":"Polygon","coordinates":[[[97.207,42.8027],[99.4922,42.583],[100.8105,42.6709],[101.7773,42.4951],[102.041,42.2314],[102.7441,42.1436],[103.3594,41.8799],[103.8867,41.792],[104.502,41.8799],[104.502,41.6602],[105.0293,41.5723],[105.7324,41.9238],[107.4023,42.4512],[109.4238,42.4512],[110.3906,42.7588],[111.0059,43.3301],[111.9727,43.6816],[111.9727,43.8135],[111.4453,44.3848],[111.7969,45],[111.9727,45.0879],[113.6426,44.7363],[114.1699,44.9561],[114.5215,45.3955],[115.6641,45.4395],[116.1914,45.7031],[116.2793,45.9668],[116.543,46.2744],[117.334,46.3623],[117.4219,46.582],[117.7734,46.5381],[118.3008,46.7578],[118.7402,46.7139],[118.916,46.7578],[119.0918,46.6699],[119.707,46.626],[119.9707,46.7139],[119.707,47.1973],[118.4766,47.9883],[117.8613,48.0322],[117.334,47.6807],[116.8066,47.9004],[116.1914,47.8564],[115.9277,47.6807],[115.5762,47.9004],[115.4883,48.1641],[115.8398,48.252],[115.8398,48.5596],[116.7188,49.834],[117.7734,49.5264],[118.5645,49.9219],[119.2676,50.0977],[119.3555,50.3174],[119.1797,50.3613],[119.5313,50.7568],[119.5313,50.8887],[119.707,51.0645],[120.1465,51.6797],[120.6738,51.9434],[120.7617,52.1191],[120.7617,52.251],[120.5859,52.3389],[120.6738,52.5146],[120.4102,52.6465],[120.0586,52.6025],[120.0586,52.7344],[120.8496,53.2617],[121.4648,53.3496],[121.8164,53.042],[121.2012,52.5586],[121.6406,52.4268],[121.7285,52.2949],[121.9922,52.2949],[122.168,52.5146],[122.6953,52.251],[122.6074,52.0752],[122.959,51.3281],[123.3105,51.2402],[123.6621,51.3721],[124.3652,51.2842],[124.541,51.3721],[124.8926,51.3721],[125.0684,51.6357],[125.332,51.6357],[126.0352,51.0205],[125.7715,50.7568],[125.7715,50.5371],[125.332,50.1416],[125.1563,49.834],[125.2441,49.1748],[124.8047,49.1309],[124.4531,48.1201],[124.2773,48.5156],[122.4316,47.373],[123.0469,46.7139],[123.3984,46.8896],[123.3984,46.9775],[123.4863,46.9775],[123.5742,46.8457],[123.5742,46.8896],[123.5742,46.6699],[123.0469,46.582],[123.2227,46.2305],[122.7832,46.0107],[122.6953,45.7031],[122.4316,45.8789],[122.2559,45.791],[121.8164,46.0107],[121.7285,45.7471],[121.9043,45.7031],[122.2559,45.2637],[122.0801,44.8682],[122.3438,44.2529],[123.1348,44.4727],[123.4863,43.7256],[123.3105,43.5059],[123.6621,43.374],[123.5742,43.0225],[123.3105,42.9785],[123.1348,42.8027],[122.7832,42.7148],[122.3438,42.8467],[122.3438,42.6709],[121.9922,42.7148],[121.7285,42.4512],[121.4648,42.4951],[120.498,42.0996],[120.1465,41.7041],[119.8828,42.1875],[119.5313,42.3633],[119.3555,42.2754],[119.2676,41.7041],[119.4434,41.6162],[119.2676,41.3086],[118.3887,41.3086],[118.125,41.748],[118.3008,41.792],[118.3008,42.0996],[118.125,42.0557],[117.9492,42.2314],[118.0371,42.4072],[117.7734,42.627],[117.5098,42.583],[117.334,42.4512],[116.8945,42.4072],[116.8066,42.0117],[116.2793,42.0117],[116.0156,41.792],[115.9277,41.9238],[115.2246,41.5723],[114.9609,41.6162],[114.873,42.0996],[114.5215,42.1436],[114.1699,41.792],[114.2578,41.5723],[113.9063,41.4404],[113.9941,41.2207],[113.9063,41.1328],[114.082,40.7373],[114.082,40.5176],[113.8184,40.5176],[113.5547,40.3418],[113.2031,40.3857],[112.7637,40.166],[112.3242,40.2539],[111.9727,39.5947],[111.4453,39.6387],[111.3574,39.4189],[111.0938,39.375],[111.0938,39.5947],[110.6543,39.2871],[110.127,39.4629],[110.2148,39.2871],[109.8633,39.2432],[109.9512,39.1553],[108.9844,38.3203],[109.0723,38.0127],[108.8965,37.9688],[108.8086,38.0127],[108.7207,37.7051],[108.1934,37.6172],[107.666,37.8809],[107.3145,38.1006],[106.7871,38.1885],[106.5234,38.3203],[106.9629,38.9795],[106.7871,39.375],[106.3477,39.2871],[105.9082,38.7158],[105.8203,37.793],[104.3262,37.4414],[103.4473,37.8369],[103.3594,38.0127],[103.5352,38.1445],[103.4473,38.3643],[104.2383,38.9795],[104.0625,39.4189],[103.3594,39.3311],[103.0078,39.1113],[102.4805,39.2432],[101.8652,39.1113],[102.041,38.8916],[101.7773,38.6719],[101.3379,38.7598],[101.25,39.0234],[100.9863,38.9355],[100.8105,39.4189],[100.5469,39.4189],[100.0195,39.7705],[99.4922,39.8584],[100.1074,40.2539],[100.1953,40.6494],[99.9316,41.001],[99.2285,40.8691],[99.0527,40.6934],[98.9648,40.7813],[98.7891,40.6055],[98.5254,40.7373],[98.6133,40.6494],[98.3496,40.5615],[98.3496,40.9131],[97.4707,41.4844],[97.8223,41.6162],[97.8223,41.748],[97.207,42.8027]]]}},{"type":"Feature","properties":{"id":"63","size":"800","name":"青海","cp":[95.2402,35.4199],"childNum":8},"geometry":{"type":"Polygon","coordinates":[[[89.7363,36.0791],[89.9121,36.0791],[90,36.2549],[90.8789,36.0352],[91.0547,36.0791],[91.0547,36.5186],[90.791,36.6064],[90.7031,36.7822],[91.3184,37.0898],[91.0547,37.4414],[90.5273,37.8369],[90.6152,38.3203],[90.3516,38.2324],[90.1758,38.4961],[92.373,39.0234],[92.373,39.1113],[93.1641,39.1992],[93.1641,38.9795],[93.6914,38.9355],[93.8672,38.7158],[94.3066,38.7598],[94.5703,38.3643],[95.0098,38.4082],[95.4492,38.2764],[95.7129,38.3643],[96.2402,38.1006],[96.416,38.2324],[96.6797,38.1885],[96.6797,38.4521],[97.1191,38.584],[97.0313,39.1992],[98.1738,38.8037],[98.3496,39.0234],[98.6133,38.9355],[98.7891,39.0674],[99.1406,38.9355],[99.8438,38.3643],[100.1953,38.2764],[100.0195,38.4521],[100.1074,38.4961],[100.459,38.2764],[100.7227,38.2324],[101.1621,37.8369],[101.5137,37.8809],[101.7773,37.6172],[101.9531,37.7051],[102.1289,37.4414],[102.5684,37.1777],[102.4805,36.958],[102.6563,36.8262],[102.5684,36.7383],[102.832,36.3428],[103.0078,36.2549],[102.9199,36.0791],[102.9199,35.9033],[102.6563,35.7715],[102.832,35.5957],[102.4805,35.5957],[102.3047,35.4199],[102.3926,35.2002],[101.9531,34.8486],[101.9531,34.6289],[102.2168,34.4092],[102.1289,34.2773],[101.6895,34.1016],[100.9863,34.3652],[100.8105,34.2773],[101.25,33.6621],[101.5137,33.7061],[101.6016,33.5303],[101.7773,33.5303],[101.6895,33.3105],[101.7773,33.2227],[101.6016,33.1348],[101.1621,33.2227],[101.25,32.6953],[100.7227,32.6514],[100.7227,32.5195],[100.3711,32.7393],[100.1074,32.6514],[100.1074,32.8711],[99.8438,33.0029],[99.7559,32.7393],[99.2285,32.915],[99.2285,33.0469],[98.877,33.1787],[98.4375,34.0576],[97.8223,34.1895],[97.6465,34.1016],[97.7344,33.9258],[97.3828,33.8818],[97.4707,33.5742],[97.7344,33.3984],[97.3828,32.8711],[97.4707,32.6953],[97.7344,32.5195],[97.3828,32.5635],[97.2949,32.0801],[96.7676,31.9922],[96.8555,31.6846],[96.5039,31.7285],[96.2402,31.9482],[96.1523,31.5967],[95.9766,31.8164],[95.8008,31.6846],[95.4492,31.8164],[95.3613,31.9922],[95.3613,32.168],[95.2734,32.2119],[95.1855,32.3438],[95.0098,32.2998],[95.1855,32.4316],[94.6582,32.6074],[94.1309,32.4316],[93.7793,32.5635],[93.5156,32.4756],[92.9883,32.7393],[92.2852,32.7393],[92.1973,32.8271],[91.9336,32.8271],[91.4063,33.1348],[90.7031,33.1348],[90.0879,33.4863],[89.6484,34.0137],[89.8242,34.3652],[89.7363,34.6729],[89.8242,34.8486],[89.5605,34.8926],[89.4727,35.2441],[89.4727,35.376],[89.7363,35.4199],[89.7363,35.7715],[89.4727,35.9033],[89.3848,36.0352],[89.7363,36.0791]]]}},{"type":"Feature","properties":{"id":"51","size":"900","name":"四川","cp":[101.9199,30.1904],"childNum":21},"geometry":{"type":"Polygon","coordinates":[[[101.7773,33.5303],[101.8652,33.5742],[101.9531,33.4424],[101.8652,33.0908],[102.4805,33.4424],[102.2168,33.9258],[102.9199,34.3213],[103.0957,34.1895],[103.1836,33.7939],[104.1504,33.6182],[104.2383,33.3984],[104.4141,33.3105],[104.3262,33.2227],[104.4141,33.0469],[104.3262,32.8711],[104.4141,32.7393],[105.2051,32.6074],[105.3809,32.7393],[105.3809,32.8711],[105.4688,32.915],[105.5566,32.7393],[106.084,32.8711],[106.084,32.7393],[106.3477,32.6514],[107.0508,32.6953],[107.1387,32.4756],[107.2266,32.4316],[107.4023,32.5195],[108.0176,32.168],[108.2813,32.2559],[108.5449,32.2119],[108.3691,32.168],[108.2813,31.9043],[108.5449,31.6846],[108.1934,31.5088],[107.9297,30.8496],[107.4902,30.8496],[107.4023,30.7617],[107.4902,30.6299],[107.0508,30.0146],[106.7871,30.0146],[106.6113,30.3223],[106.2598,30.1904],[105.8203,30.4541],[105.6445,30.2783],[105.5566,30.1025],[105.7324,29.8828],[105.293,29.5313],[105.4688,29.3115],[105.7324,29.2676],[105.8203,28.96],[106.2598,28.8721],[106.3477,28.5205],[105.9961,28.7402],[105.6445,28.4326],[105.9082,28.125],[106.1719,28.125],[106.3477,27.8174],[105.6445,27.6416],[105.5566,27.7734],[105.293,27.7295],[105.2051,27.9932],[105.0293,28.0811],[104.8535,27.9053],[104.4141,27.9492],[104.3262,28.0371],[104.4141,28.125],[104.4141,28.2568],[104.2383,28.4326],[104.4141,28.6084],[103.8867,28.6523],[103.7988,28.3008],[103.4473,28.125],[103.4473,27.7734],[102.9199,27.29],[103.0078,26.3672],[102.6563,26.1914],[102.5684,26.3672],[102.1289,26.1035],[101.8652,26.0596],[101.6016,26.2354],[101.6895,26.3672],[101.4258,26.5869],[101.4258,26.8066],[101.4258,26.7188],[101.1621,27.0264],[101.1621,27.1582],[100.7227,27.8613],[100.3711,27.8174],[100.2832,27.7295],[100.0195,28.125],[100.1953,28.3447],[99.668,28.8281],[99.4043,28.5205],[99.4043,28.1689],[99.2285,28.3008],[99.1406,29.2676],[98.9648,30.7617],[98.6133,31.2012],[98.877,31.4209],[98.4375,31.8604],[98.1738,32.3438],[97.7344,32.5195],[97.4707,32.6953],[97.3828,32.8711],[97.7344,33.3984],[97.4707,33.5742],[97.3828,33.8818],[97.7344,33.9258],[97.6465,34.1016],[97.8223,34.1895],[98.4375,34.0576],[98.877,33.1787],[99.2285,33.0469],[99.2285,32.915],[99.7559,32.7393],[99.8438,33.0029],[100.1074,32.8711],[100.1074,32.6514],[100.3711,32.7393],[100.7227,32.5195],[100.7227,32.6514],[101.25,32.6953],[101.1621,33.2227],[101.6016,33.1348],[101.7773,33.2227],[101.6895,33.3105],[101.7773,33.5303]]]}},{"type":"Feature","properties":{"id":"23","size":"700","name":"黑龙江","cp":[128.642464,46.756967],"childNum":13},"geometry":{"type":"Polygon","coordinates":[[[121.4648,53.3496],[123.6621,53.5693],[124.8926,53.0859],[125.0684,53.2178],[125.5957,53.0859],[125.6836,52.9102],[126.123,52.7783],[126.0352,52.6025],[126.2109,52.5146],[126.3867,52.2949],[126.3867,52.207],[126.5625,52.1631],[126.4746,51.9434],[126.9141,51.3721],[126.8262,51.2842],[127.002,51.3281],[126.9141,51.1084],[127.2656,50.7568],[127.3535,50.2734],[127.6172,50.2295],[127.5293,49.8779],[127.793,49.6143],[128.7598,49.5703],[129.1113,49.3506],[129.4629,49.4385],[130.2539,48.8672],[130.6934,48.8672],[130.5176,48.6475],[130.8691,48.2959],[130.6934,48.1201],[131.0449,47.6807],[132.5391,47.7246],[132.627,47.9443],[133.0664,48.1201],[133.5059,48.1201],[134.209,48.3838],[135.0879,48.4277],[134.7363,48.252],[134.5605,47.9883],[134.7363,47.6807],[134.5605,47.4609],[134.3848,47.4609],[134.209,47.2852],[134.209,47.1533],[133.8574,46.5381],[133.9453,46.2744],[133.5059,45.835],[133.418,45.5713],[133.2422,45.5273],[133.0664,45.1318],[132.8906,45.0439],[131.9238,45.3516],[131.5723,45.0439],[131.0449,44.8682],[131.3086,44.0771],[131.2207,43.7256],[131.3086,43.4619],[130.8691,43.418],[130.5176,43.6377],[130.3418,43.9893],[129.9902,43.8574],[129.9023,44.0332],[129.8145,43.9014],[129.2871,43.8135],[129.1992,43.5938],[128.8477,43.5498],[128.4961,44.165],[128.4082,44.4727],[128.0566,44.3408],[128.0566,44.1211],[127.7051,44.1211],[127.5293,44.6045],[127.0898,44.6045],[127.002,44.7803],[127.0898,45],[126.9141,45.1318],[126.5625,45.2637],[126.0352,45.1758],[125.7715,45.3076],[125.6836,45.5273],[125.0684,45.3955],[124.8926,45.5273],[124.3652,45.4395],[124.0137,45.7471],[123.9258,46.2305],[123.2227,46.2305],[123.0469,46.582],[123.5742,46.6699],[123.5742,46.8896],[123.5742,46.8457],[123.4863,46.9775],[123.3984,46.9775],[123.3984,46.8896],[123.0469,46.7139],[122.4316,47.373],[124.2773,48.5156],[124.4531,48.1201],[124.8047,49.1309],[125.2441,49.1748],[125.1563,49.834],[125.332,50.1416],[125.7715,50.5371],[125.7715,50.7568],[126.0352,51.0205],[125.332,51.6357],[125.0684,51.6357],[124.8926,51.3721],[124.541,51.3721],[124.3652,51.2842],[123.6621,51.3721],[123.3105,51.2402],[122.959,51.3281],[122.6074,52.0752],[122.6953,52.251],[122.168,52.5146],[121.9922,52.2949],[121.7285,52.2949],[121.6406,52.4268],[121.2012,52.5586],[121.8164,53.042],[121.4648,53.3496]]]}},{"type":"Feature","properties":{"id":"62","size":"690","name":"甘肃","cp":[103.823557,36.058039],"childNum":14},"geometry":{"type":"Polygon","coordinates":[[[96.416,42.7148],[97.207,42.8027],[97.8223,41.748],[97.8223,41.6162],[97.4707,41.4844],[98.3496,40.9131],[98.3496,40.5615],[98.6133,40.6494],[98.5254,40.7373],[98.7891,40.6055],[98.9648,40.7813],[99.0527,40.6934],[99.2285,40.8691],[99.9316,41.001],[100.1953,40.6494],[100.1074,40.2539],[99.4922,39.8584],[100.0195,39.7705],[100.5469,39.4189],[100.8105,39.4189],[100.9863,38.9355],[101.25,39.0234],[101.3379,38.7598],[101.7773,38.6719],[102.041,38.8916],[101.8652,39.1113],[102.4805,39.2432],[103.0078,39.1113],[103.3594,39.3311],[104.0625,39.4189],[104.2383,38.9795],[103.4473,38.3643],[103.5352,38.1445],[103.3594,38.0127],[103.4473,37.8369],[104.3262,37.4414],[104.5898,37.4414],[104.5898,37.2217],[104.8535,37.2217],[105.293,36.8262],[105.2051,36.6943],[105.4688,36.123],[105.293,35.9912],[105.3809,35.7715],[105.7324,35.7275],[105.8203,35.5518],[105.9961,35.4639],[105.9082,35.4199],[105.9961,35.4199],[106.084,35.376],[106.2598,35.4199],[106.3477,35.2441],[106.5234,35.332],[106.4355,35.6836],[106.6992,35.6836],[106.9629,35.8154],[106.875,36.123],[106.5234,36.2549],[106.5234,36.4746],[106.4355,36.5625],[106.6113,36.7822],[106.6113,37.0898],[107.3145,37.0898],[107.3145,36.9141],[108.7207,36.3428],[108.6328,35.9912],[108.5449,35.8594],[108.6328,35.5518],[108.5449,35.2881],[107.7539,35.2881],[107.7539,35.1123],[107.8418,35.0244],[107.666,34.9365],[107.2266,34.8926],[106.9629,35.0684],[106.6113,35.0684],[106.5234,34.7607],[106.3477,34.585],[106.6992,34.3213],[106.5234,34.2773],[106.6113,34.1455],[106.4355,33.9258],[106.5234,33.5303],[105.9961,33.6182],[105.7324,33.3984],[105.9961,33.1787],[105.9082,33.0029],[105.4688,32.915],[105.3809,32.8711],[105.3809,32.7393],[105.2051,32.6074],[104.4141,32.7393],[104.3262,32.8711],[104.4141,33.0469],[104.3262,33.2227],[104.4141,33.3105],[104.2383,33.3984],[104.1504,33.6182],[103.1836,33.7939],[103.0957,34.1895],[102.9199,34.3213],[102.2168,33.9258],[102.4805,33.4424],[101.8652,33.0908],[101.9531,33.4424],[101.8652,33.5742],[101.7773,33.5303],[101.6016,33.5303],[101.5137,33.7061],[101.25,33.6621],[100.8105,34.2773],[100.9863,34.3652],[101.6895,34.1016],[102.1289,34.2773],[102.2168,34.4092],[101.9531,34.6289],[101.9531,34.8486],[102.3926,35.2002],[102.3047,35.4199],[102.4805,35.5957],[102.832,35.5957],[102.6563,35.7715],[102.9199,35.9033],[102.9199,36.0791],[103.0078,36.2549],[102.832,36.3428],[102.5684,36.7383],[102.6563,36.8262],[102.4805,36.958],[102.5684,37.1777],[102.1289,37.4414],[101.9531,37.7051],[101.7773,37.6172],[101.5137,37.8809],[101.1621,37.8369],[100.7227,38.2324],[100.459,38.2764],[100.1074,38.4961],[100.0195,38.4521],[100.1953,38.2764],[99.8438,38.3643],[99.1406,38.9355],[98.7891,39.0674],[98.6133,38.9355],[98.3496,39.0234],[98.1738,38.8037],[97.0313,39.1992],[97.1191,38.584],[96.6797,38.4521],[96.6797,38.1885],[96.416,38.2324],[96.2402,38.1006],[95.7129,38.3643],[95.4492,38.2764],[95.0098,38.4082],[94.5703,38.3643],[94.3066,38.7598],[93.8672,38.7158],[93.6914,38.9355],[93.1641,38.9795],[93.1641,39.1992],[92.373,39.1113],[92.373,39.3311],[92.6367,39.6387],[93.0762,40.6494],[93.8672,40.6934],[94.043,41.0889],[94.5703,41.4844],[95.1855,41.792],[95.2734,41.6162],[95.9766,41.9238],[96.2402,42.2314],[96.0645,42.3193],[95.9766,42.4951],[96.416,42.7148]]]}},{"type":"Feature","properties":{"id":"53","size":"1200","name":"云南","cp":[101.512251,24.740609],"childNum":16},"geometry":{"type":"Polygon","coordinates":[[[98.1738,28.125],[98.2617,28.3887],[98.3496,28.125],[98.7012,28.2129],[98.7891,28.3447],[98.6133,28.5205],[98.7012,28.916],[98.7891,29.0039],[98.7891,28.8721],[98.9648,28.8281],[98.9648,29.1357],[99.1406,29.2676],[99.2285,28.3008],[99.4043,28.1689],[99.4043,28.5205],[99.668,28.8281],[100.1953,28.3447],[100.0195,28.125],[100.2832,27.7295],[100.3711,27.8174],[100.7227,27.8613],[101.1621,27.1582],[101.1621,27.0264],[101.4258,26.7188],[101.4258,26.8066],[101.4258,26.5869],[101.6895,26.3672],[101.6016,26.2354],[101.8652,26.0596],[102.1289,26.1035],[102.5684,26.3672],[102.6563,26.1914],[103.0078,26.3672],[102.9199,27.29],[103.4473,27.7734],[103.4473,28.125],[103.7988,28.3008],[103.8867,28.6523],[104.4141,28.6084],[104.2383,28.4326],[104.4141,28.2568],[104.4141,28.125],[104.3262,28.0371],[104.4141,27.9492],[104.8535,27.9053],[105.0293,28.0811],[105.2051,27.9932],[105.293,27.7295],[105.2051,27.3779],[104.5898,27.334],[104.4141,27.4658],[104.1504,27.2461],[103.8867,27.4219],[103.623,27.0264],[103.7109,26.9824],[103.7109,26.7627],[103.8867,26.543],[104.4141,26.6748],[104.6777,26.4111],[104.3262,25.708],[104.8535,25.2246],[104.5898,25.0488],[104.6777,24.9609],[104.502,24.7412],[104.6777,24.3457],[104.7656,24.4775],[105.0293,24.4336],[105.2051,24.082],[105.4688,24.0381],[105.5566,24.126],[105.9961,24.126],[106.1719,23.8184],[106.1719,23.5547],[105.6445,23.4229],[105.5566,23.2031],[105.293,23.3789],[104.8535,23.1592],[104.7656,22.8516],[104.3262,22.6758],[104.1504,22.8076],[103.9746,22.5439],[103.623,22.7637],[103.5352,22.5879],[103.3594,22.8076],[103.0957,22.4561],[102.4805,22.7637],[102.3047,22.4121],[101.8652,22.3682],[101.7773,22.5],[101.6016,22.1924],[101.8652,21.6211],[101.7773,21.1377],[101.6016,21.2256],[101.25,21.1816],[101.1621,21.7529],[100.6348,21.4453],[100.1074,21.4893],[99.9316,22.0605],[99.2285,22.1484],[99.4043,22.5879],[99.3164,22.7197],[99.4922,23.0713],[98.877,23.2031],[98.7012,23.9502],[98.877,24.126],[98.1738,24.082],[97.7344,23.8623],[97.5586,23.9063],[97.7344,24.126],[97.6465,24.4336],[97.5586,24.4336],[97.5586,24.7412],[97.7344,24.8291],[97.8223,25.2686],[98.1738,25.4004],[98.1738,25.6201],[98.3496,25.5762],[98.5254,25.8398],[98.7012,25.8838],[98.6133,26.0596],[98.7012,26.1475],[98.7891,26.5869],[98.7012,27.5098],[98.5254,27.6416],[98.3496,27.5098],[98.1738,28.125]]]}},{"type":"Feature","properties":{"id":"45","size":"1450","name":"广西","cp":[107.7813,23.6426],"childNum":14},"geometry":{"type":"Polygon","coordinates":[[[104.502,24.7412],[104.6777,24.6094],[105.2051,24.9609],[105.9961,24.6533],[106.1719,24.7852],[106.1719,24.9609],[106.875,25.1807],[107.0508,25.2686],[106.9629,25.4883],[107.2266,25.6201],[107.4902,25.2246],[107.7539,25.2246],[107.8418,25.1367],[108.1055,25.2246],[108.1934,25.4443],[108.3691,25.5322],[108.6328,25.3125],[108.6328,25.5762],[109.0723,25.5322],[108.9844,25.752],[109.3359,25.708],[109.5117,26.0156],[109.7754,25.8838],[109.9512,26.1914],[110.2148,25.9717],[110.5664,26.3232],[111.1816,26.3232],[111.2695,26.2354],[111.2695,25.8838],[111.4453,25.8398],[111.0059,25.0049],[111.0938,24.9609],[111.3574,25.1367],[111.5332,24.6533],[111.709,24.7852],[112.0605,24.7412],[111.8848,24.6533],[112.0605,24.3457],[111.8848,24.2139],[111.8848,23.9941],[111.7969,23.8184],[111.6211,23.8184],[111.6211,23.6865],[111.3574,23.4668],[111.4453,23.0273],[111.2695,22.8076],[110.7422,22.5439],[110.7422,22.2803],[110.6543,22.1484],[110.3027,22.1484],[110.3027,21.8848],[109.9512,21.8408],[109.8633,21.665],[109.7754,21.6211],[109.7754,21.4014],[109.5996,21.4453],[109.1602,21.3574],[109.248,20.874],[109.0723,20.9619],[109.0723,21.5332],[108.7207,21.5332],[108.6328,21.665],[108.2813,21.4893],[107.8418,21.6211],[107.4023,21.6211],[107.0508,21.7969],[107.0508,21.9287],[106.6992,22.0166],[106.6113,22.4121],[106.7871,22.7637],[106.6992,22.8955],[105.9082,22.9395],[105.5566,23.0713],[105.5566,23.2031],[105.6445,23.4229],[106.1719,23.5547],[106.1719,23.8184],[105.9961,24.126],[105.5566,24.126],[105.4688,24.0381],[105.2051,24.082],[105.0293,24.4336],[104.7656,24.4775],[104.6777,24.3457],[104.502,24.7412]]]}},{"type":"Feature","properties":{"id":"43","size":"1700","name":"湖南","cp":[111.782279,28.09409],"childNum":14},"geometry":{"type":"Polygon","coordinates":[[[109.248,28.4766],[109.248,29.1357],[109.5117,29.6191],[109.6875,29.6191],[109.7754,29.751],[110.4785,29.6631],[110.6543,29.751],[110.4785,30.0146],[110.8301,30.1465],[111.7969,29.9268],[112.2363,29.5313],[112.5,29.6191],[112.6758,29.5752],[112.9395,29.7949],[113.0273,29.751],[112.9395,29.4873],[113.0273,29.4434],[113.5547,29.8389],[113.5547,29.707],[113.7305,29.5752],[113.6426,29.3115],[113.7305,29.0918],[113.9063,29.0479],[114.1699,28.8281],[114.082,28.5645],[114.2578,28.3447],[113.7305,27.9492],[113.6426,27.5977],[113.6426,27.3779],[113.8184,27.29],[113.7305,27.1143],[113.9063,26.9385],[113.9063,26.6309],[114.082,26.5869],[113.9941,26.1914],[114.2578,26.1475],[113.9941,26.0596],[113.9063,25.4443],[113.6426,25.3125],[113.2031,25.5322],[112.8516,25.3564],[113.0273,25.2246],[113.0273,24.9609],[112.8516,24.917],[112.5879,25.1367],[112.2363,25.1807],[112.1484,24.873],[112.0605,24.7412],[111.709,24.7852],[111.5332,24.6533],[111.3574,25.1367],[111.0938,24.9609],[111.0059,25.0049],[111.4453,25.8398],[111.2695,25.8838],[111.2695,26.2354],[111.1816,26.3232],[110.5664,26.3232],[110.2148,25.9717],[109.9512,26.1914],[109.7754,25.8838],[109.5117,26.0156],[109.4238,26.2793],[109.248,26.3232],[109.4238,26.5869],[109.3359,26.7188],[109.5117,26.8066],[109.5117,27.0264],[109.3359,27.1582],[108.8965,27.0264],[108.8086,27.1143],[109.4238,27.5977],[109.3359,27.9053],[109.3359,28.2568],[109.248,28.4766]]]}},{"type":"Feature","properties":{"id":"61","size":"1150","name":"陕西","cp":[108.948024,34.263161],"childNum":10},"geometry":{"type":"Polygon","coordinates":[[[105.4688,32.915],[105.9082,33.0029],[105.9961,33.1787],[105.7324,33.3984],[105.9961,33.6182],[106.5234,33.5303],[106.4355,33.9258],[106.6113,34.1455],[106.5234,34.2773],[106.6992,34.3213],[106.3477,34.585],[106.5234,34.7607],[106.6113,35.0684],[106.9629,35.0684],[107.2266,34.8926],[107.666,34.9365],[107.8418,35.0244],[107.7539,35.1123],[107.7539,35.2881],[108.5449,35.2881],[108.6328,35.5518],[108.5449,35.8594],[108.6328,35.9912],[108.7207,36.3428],[107.3145,36.9141],[107.3145,37.0898],[107.3145,37.6172],[107.666,37.8809],[108.1934,37.6172],[108.7207,37.7051],[108.8086,38.0127],[108.8965,37.9688],[109.0723,38.0127],[108.9844,38.3203],[109.9512,39.1553],[109.8633,39.2432],[110.2148,39.2871],[110.127,39.4629],[110.6543,39.2871],[111.0938,39.5947],[111.0938,39.375],[111.1816,39.2432],[110.918,38.7158],[110.8301,38.4961],[110.4785,38.1885],[110.4785,37.9688],[110.8301,37.6611],[110.3906,37.002],[110.4785,36.123],[110.5664,35.6396],[110.2148,34.8926],[110.2148,34.6729],[110.3906,34.585],[110.4785,34.2334],[110.6543,34.1455],[110.6543,33.8379],[111.0059,33.5303],[111.0059,33.2666],[110.7422,33.1348],[110.5664,33.2666],[110.3027,33.1787],[109.5996,33.2666],[109.4238,33.1348],[109.7754,33.0469],[109.7754,32.915],[110.127,32.7393],[110.127,32.6074],[109.6875,32.6074],[109.5117,32.4316],[109.5996,31.7285],[109.248,31.7285],[109.0723,31.9482],[108.5449,32.2119],[108.2813,32.2559],[108.0176,32.168],[107.4023,32.5195],[107.2266,32.4316],[107.1387,32.4756],[107.0508,32.6953],[106.3477,32.6514],[106.084,32.7393],[106.084,32.8711],[105.5566,32.7393],[105.4688,32.915]]]}},{"type":"Feature","properties":{"id":"44","size":"1600","name":"广东","cp":[113.280637,23.125178],"childNum":21},"geometry":{"type":"Polygon","coordinates":[[[109.7754,21.4014],[109.7754,21.6211],[109.8633,21.665],[109.9512,21.8408],[110.3027,21.8848],[110.3027,22.1484],[110.6543,22.1484],[110.7422,22.2803],[110.7422,22.5439],[111.2695,22.8076],[111.4453,23.0273],[111.3574,23.4668],[111.6211,23.6865],[111.6211,23.8184],[111.7969,23.8184],[111.8848,23.9941],[111.8848,24.2139],[112.0605,24.3457],[111.8848,24.6533],[112.0605,24.7412],[112.1484,24.873],[112.2363,25.1807],[112.5879,25.1367],[112.8516,24.917],[113.0273,24.9609],[113.0273,25.2246],[112.8516,25.3564],[113.2031,25.5322],[113.6426,25.3125],[113.9063,25.4443],[113.9941,25.2686],[114.6094,25.4004],[114.7852,25.2686],[114.6973,25.1367],[114.4336,24.9609],[114.1699,24.6973],[114.4336,24.5215],[115.4004,24.7852],[115.8398,24.5654],[115.752,24.7852],[115.9277,24.917],[116.2793,24.7852],[116.3672,24.873],[116.543,24.6094],[116.7188,24.6533],[116.9824,24.1699],[116.9824,23.9063],[117.1582,23.5547],[117.334,23.2471],[116.8945,23.3789],[116.6309,23.1152],[116.543,22.8516],[115.9277,22.7197],[115.6641,22.7637],[115.5762,22.6318],[115.0488,22.6758],[114.6094,22.3682],[114.3457,22.5439],[113.9941,22.5],[113.8184,22.1924],[114.3457,22.1484],[114.4336,22.0166],[114.082,21.9287],[113.9941,21.7969],[113.5547,22.0166],[113.1152,21.8408],[112.9395,21.5771],[112.4121,21.4453],[112.2363,21.5332],[111.5332,21.4893],[111.2695,21.3574],[110.7422,21.3574],[110.6543,21.2256],[110.7422,20.918],[110.4785,20.874],[110.6543,20.2588],[110.5664,20.2588],[110.3906,20.127],[110.0391,20.127],[109.8633,20.127],[109.8633,20.3027],[109.5996,20.918],[109.7754,21.4014],[109.7754,21.4014]],[[113.5986,22.1649],[113.6096,22.1265],[113.5547,22.11],[113.5437,22.2034],[113.5767,22.2034],[113.5986,22.1649]]]}},{"type":"Feature","properties":{"id":"22","size":"1120","name":"吉林","cp":[125.7746,43.5938],"childNum":9},"geometry":{"type":"Polygon","coordinates":[[[123.2227,46.2305],[123.9258,46.2305],[124.0137,45.7471],[124.3652,45.4395],[124.8926,45.5273],[125.0684,45.3955],[125.6836,45.5273],[125.7715,45.3076],[126.0352,45.1758],[126.5625,45.2637],[126.9141,45.1318],[127.0898,45],[127.002,44.7803],[127.0898,44.6045],[127.5293,44.6045],[127.7051,44.1211],[128.0566,44.1211],[128.0566,44.3408],[128.4082,44.4727],[128.4961,44.165],[128.8477,43.5498],[129.1992,43.5938],[129.2871,43.8135],[129.8145,43.9014],[129.9023,44.0332],[129.9902,43.8574],[130.3418,43.9893],[130.5176,43.6377],[130.8691,43.418],[131.3086,43.4619],[131.3086,43.3301],[131.1328,42.9346],[130.4297,42.7148],[130.6055,42.6709],[130.6055,42.4512],[130.2539,42.7588],[130.2539,42.8906],[130.166,42.9785],[129.9023,43.0225],[129.7266,42.4951],[129.375,42.4512],[128.9355,42.0117],[128.0566,42.0117],[128.3203,41.5723],[128.1445,41.3525],[127.0898,41.5283],[127.1777,41.5723],[126.9141,41.792],[126.6504,41.6602],[126.4746,41.3965],[126.123,40.957],[125.6836,40.8691],[125.5957,40.9131],[125.7715,41.2207],[125.332,41.6602],[125.332,41.9678],[125.4199,42.0996],[125.332,42.1436],[124.8926,42.8027],[124.8926,43.0664],[124.7168,43.0664],[124.4531,42.8467],[124.2773,43.2422],[123.8379,43.4619],[123.6621,43.374],[123.3105,43.5059],[123.4863,43.7256],[123.1348,44.4727],[122.3438,44.2529],[122.0801,44.8682],[122.2559,45.2637],[121.9043,45.7031],[121.7285,45.7471],[121.8164,46.0107],[122.2559,45.791],[122.4316,45.8789],[122.6953,45.7031],[122.7832,46.0107],[123.2227,46.2305]]]}},{"type":"Feature","properties":{"id":"13","size":"1300","name":"河北","cp":[114.502461,38.045474],"childNum":11},"geometry":{"type":"MultiPolygon","coordinates":[[[[114.5215,39.5068],[114.3457,39.8584],[113.9941,39.9902],[114.5215,40.3418],[114.3457,40.3857],[114.2578,40.6055],[114.082,40.7373],[113.9063,41.1328],[113.9941,41.2207],[113.9063,41.4404],[114.2578,41.5723],[114.1699,41.792],[114.5215,42.1436],[114.873,42.0996],[114.9609,41.6162],[115.2246,41.5723],[115.9277,41.9238],[116.0156,41.792],[116.2793,42.0117],[116.8066,42.0117],[116.8945,42.4072],[117.334,42.4512],[117.5098,42.583],[117.7734,42.627],[118.0371,42.4072],[117.9492,42.2314],[118.125,42.0557],[118.3008,42.0996],[118.3008,41.792],[118.125,41.748],[118.3887,41.3086],[119.2676,41.3086],[118.8281,40.8252],[119.2676,40.5176],[119.5313,40.5615],[119.707,40.1221],[119.8828,39.9463],[119.5313,39.6826],[119.4434,39.4189],[118.916,39.0674],[118.4766,38.9355],[118.125,39.0234],[118.0371,39.1992],[118.0371,39.2432],[117.8613,39.4189],[117.9492,39.5947],[117.6855,39.5947],[117.5098,39.7705],[117.5098,39.9902],[117.6855,39.9902],[117.6855,40.0781],[117.4219,40.21],[117.2461,40.5176],[117.4219,40.6494],[116.9824,40.6934],[116.6309,41.0449],[116.3672,40.9131],[116.4551,40.7813],[116.1914,40.7813],[116.1035,40.6055],[115.752,40.5615],[115.9277,40.2539],[115.4004,39.9463],[115.4883,39.6387],[115.752,39.5068],[116.1914,39.5947],[116.3672,39.4629],[116.543,39.5947],[116.8066,39.5947],[116.8945,39.1113],[116.7188,38.9355],[116.7188,38.8037],[117.2461,38.54],[117.5977,38.6279],[117.9492,38.3203],[117.4219,37.8369],[116.8066,37.8369],[116.4551,37.4854],[116.2793,37.5732],[116.2793,37.3535],[116.0156,37.3535],[115.752,36.9141],[115.3125,36.5186],[115.4883,36.167],[115.3125,36.0791],[115.1367,36.2109],[114.9609,36.0791],[114.873,36.123],[113.7305,36.3428],[113.4668,36.6504],[113.7305,36.8701],[113.7305,37.1338],[114.1699,37.6611],[113.9941,37.7051],[113.8184,38.1445],[113.5547,38.2764],[113.5547,38.54],[113.8184,38.8037],[113.8184,38.9355],[113.9063,39.0234],[114.3457,39.0674],[114.5215,39.5068]]],[[[117.2461,40.0781],[117.1582,39.8145],[117.1582,39.6387],[116.8945,39.6826],[116.8945,39.8145],[116.8066,39.9902],[117.2461,40.0781]]]]}},{"type":"Feature","properties":{"id":"42","size":"1500","name":"湖北","cp":[113.298572,30.684355],"childNum":17},"geometry":{"type":"Polygon","coordinates":[[[110.2148,31.1572],[110.127,31.377],[109.6875,31.5527],[109.7754,31.6846],[109.5996,31.7285],[109.5117,32.4316],[109.6875,32.6074],[110.127,32.6074],[110.127,32.7393],[109.7754,32.915],[109.7754,33.0469],[109.4238,33.1348],[109.5996,33.2666],[110.3027,33.1787],[110.5664,33.2666],[110.7422,33.1348],[111.0059,33.2666],[111.5332,32.6074],[112.3242,32.3438],[113.2031,32.4316],[113.4668,32.2998],[113.7305,32.4316],[113.8184,31.8604],[113.9941,31.7725],[114.1699,31.8604],[114.5215,31.7725],[114.6094,31.5527],[114.7852,31.4648],[115.1367,31.5967],[115.2246,31.4209],[115.4004,31.4209],[115.5762,31.2012],[116.0156,31.0254],[115.752,30.6738],[116.1035,30.1904],[116.1035,29.8389],[115.9277,29.707],[115.4883,29.7949],[114.873,29.3994],[114.2578,29.3555],[113.9063,29.0479],[113.7305,29.0918],[113.6426,29.3115],[113.7305,29.5752],[113.5547,29.707],[113.5547,29.8389],[113.0273,29.4434],[112.9395,29.4873],[113.0273,29.751],[112.9395,29.7949],[112.6758,29.5752],[112.5,29.6191],[112.2363,29.5313],[111.7969,29.9268],[110.8301,30.1465],[110.4785,30.0146],[110.6543,29.751],[110.4785,29.6631],[109.7754,29.751],[109.6875,29.6191],[109.5117,29.6191],[109.248,29.1357],[109.0723,29.3555],[108.9844,29.3115],[108.6328,29.8389],[108.457,29.7949],[108.5449,30.2344],[108.457,30.4102],[108.6328,30.5859],[108.8086,30.498],[109.0723,30.6299],[109.1602,30.542],[109.248,30.6299],[109.4238,30.542],[109.8633,30.8936],[110.0391,30.8057],[110.2148,31.1572]]]}},{"type":"Feature","properties":{"id":"52","size":"2000","name":"贵州","cp":[106.6113,26.9385],"childNum":9},"geometry":{"type":"Polygon","coordinates":[[[104.1504,27.2461],[104.4141,27.4658],[104.5898,27.334],[105.2051,27.3779],[105.293,27.7295],[105.5566,27.7734],[105.6445,27.6416],[106.3477,27.8174],[106.1719,28.125],[105.9082,28.125],[105.6445,28.4326],[105.9961,28.7402],[106.3477,28.5205],[106.5234,28.5645],[106.4355,28.7842],[106.5234,28.7842],[106.6113,28.6523],[106.6113,28.5205],[106.6992,28.4766],[106.875,28.7842],[107.4023,28.8721],[107.4023,29.1797],[107.5781,29.2236],[107.8418,29.1357],[107.8418,29.0039],[108.2813,29.0918],[108.3691,28.6523],[108.5449,28.6523],[108.5449,28.3887],[108.7207,28.4766],[108.7207,28.2129],[109.0723,28.2129],[109.248,28.4766],[109.3359,28.2568],[109.3359,27.9053],[109.4238,27.5977],[108.8086,27.1143],[108.8965,27.0264],[109.3359,27.1582],[109.5117,27.0264],[109.5117,26.8066],[109.3359,26.7188],[109.4238,26.5869],[109.248,26.3232],[109.4238,26.2793],[109.5117,26.0156],[109.3359,25.708],[108.9844,25.752],[109.0723,25.5322],[108.6328,25.5762],[108.6328,25.3125],[108.3691,25.5322],[108.1934,25.4443],[108.1055,25.2246],[107.8418,25.1367],[107.7539,25.2246],[107.4902,25.2246],[107.2266,25.6201],[106.9629,25.4883],[107.0508,25.2686],[106.875,25.1807],[106.1719,24.9609],[106.1719,24.7852],[105.9961,24.6533],[105.2051,24.9609],[104.6777,24.6094],[104.502,24.7412],[104.6777,24.9609],[104.5898,25.0488],[104.8535,25.2246],[104.3262,25.708],[104.6777,26.4111],[104.4141,26.6748],[103.8867,26.543],[103.7109,26.7627],[103.7109,26.9824],[103.623,27.0264],[103.8867,27.4219],[104.1504,27.2461]]]}},{"type":"Feature","properties":{"id":"37","size":"1500","name":"山东","cp":[118.7402,36.4307],"childNum":17},"geometry":{"type":"Polygon","coordinates":[[[115.4883,36.167],[115.3125,36.5186],[115.752,36.9141],[116.0156,37.3535],[116.2793,37.3535],[116.2793,37.5732],[116.4551,37.4854],[116.8066,37.8369],[117.4219,37.8369],[117.9492,38.3203],[118.125,38.1445],[118.916,38.1445],[119.3555,37.6611],[119.0039,37.5293],[119.0039,37.3535],[119.3555,37.1338],[119.707,37.1338],[119.8828,37.3975],[120.498,37.8369],[120.5859,38.1445],[120.9375,38.4521],[121.0254,37.8369],[121.2012,37.6611],[121.9043,37.4854],[122.168,37.6172],[122.2559,37.4854],[122.6074,37.4854],[122.6953,37.3535],[122.6074,36.9141],[122.4316,36.7822],[121.8164,36.8701],[121.7285,36.6943],[121.1133,36.6064],[121.1133,36.4307],[121.377,36.2549],[120.7617,36.167],[120.9375,35.8594],[120.6738,36.0352],[119.707,35.4639],[119.9707,34.9805],[119.3555,35.0244],[119.2676,35.1123],[118.916,35.0244],[118.7402,34.7168],[118.4766,34.6729],[118.3887,34.4092],[118.2129,34.4092],[118.125,34.6289],[117.9492,34.6729],[117.5977,34.4531],[117.334,34.585],[117.2461,34.4531],[116.8066,34.9365],[116.4551,34.8926],[116.3672,34.6289],[116.1914,34.585],[115.5762,34.585],[115.4004,34.8486],[114.7852,35.0684],[115.0488,35.376],[115.2246,35.4199],[115.4883,35.7275],[116.1035,36.0791],[115.3125,35.8154],[115.4883,36.167]]]}},{"type":"Feature","properties":{"id":"36","size":"1700","name":"江西","cp":[115.592151,27.676493],"childNum":11},"geometry":{"type":"Polygon","coordinates":[[[114.2578,28.3447],[114.082,28.5645],[114.1699,28.8281],[113.9063,29.0479],[114.2578,29.3555],[114.873,29.3994],[115.4883,29.7949],[115.9277,29.707],[116.1035,29.8389],[116.2793,29.7949],[116.7188,30.0586],[116.8945,29.9268],[116.7188,29.751],[116.7188,29.6191],[117.1582,29.707],[117.0703,29.8389],[117.1582,29.9268],[117.5098,29.6191],[118.0371,29.5752],[118.2129,29.3994],[118.0371,29.1797],[118.0371,29.0479],[118.3887,28.7842],[118.4766,28.3447],[118.4766,28.3008],[118.3008,28.0811],[117.7734,27.8174],[117.5098,27.9932],[116.9824,27.6416],[117.1582,27.29],[117.0703,27.1143],[116.543,26.8066],[116.6309,26.4551],[116.3672,26.2354],[116.4551,26.1035],[116.1914,25.8838],[116.0156,25.2686],[115.8398,25.2246],[115.9277,24.917],[115.752,24.7852],[115.8398,24.5654],[115.4004,24.7852],[114.4336,24.5215],[114.1699,24.6973],[114.4336,24.9609],[114.6973,25.1367],[114.7852,25.2686],[114.6094,25.4004],[113.9941,25.2686],[113.9063,25.4443],[113.9941,26.0596],[114.2578,26.1475],[113.9941,26.1914],[114.082,26.5869],[113.9063,26.6309],[113.9063,26.9385],[113.7305,27.1143],[113.8184,27.29],[113.6426,27.3779],[113.6426,27.5977],[113.7305,27.9492],[114.2578,28.3447]]]}},{"type":"Feature","properties":{"id":"41","size":"1700","name":"河南","cp":[113.0668,33.8818],"childNum":17},"geometry":{"type":"Polygon","coordinates":[[[110.3906,34.585],[110.8301,34.6289],[111.1816,34.8047],[111.5332,34.8486],[111.7969,35.0684],[112.0605,35.0684],[112.0605,35.2881],[112.7637,35.2002],[113.1152,35.332],[113.6426,35.6836],[113.7305,36.3428],[114.873,36.123],[114.9609,36.0791],[115.1367,36.2109],[115.3125,36.0791],[115.4883,36.167],[115.3125,35.8154],[116.1035,36.0791],[115.4883,35.7275],[115.2246,35.4199],[115.0488,35.376],[114.7852,35.0684],[115.4004,34.8486],[115.5762,34.585],[116.1914,34.585],[116.1914,34.4092],[116.543,34.2773],[116.6309,33.9258],[116.1914,33.7061],[116.0156,33.9697],[115.6641,34.0576],[115.5762,33.9258],[115.5762,33.6621],[115.4004,33.5303],[115.3125,33.1787],[114.873,33.1348],[114.873,33.0029],[115.1367,32.8711],[115.2246,32.6074],[115.5762,32.4316],[115.8398,32.5195],[115.9277,31.7725],[115.4883,31.6846],[115.4004,31.4209],[115.2246,31.4209],[115.1367,31.5967],[114.7852,31.4648],[114.6094,31.5527],[114.5215,31.7725],[114.1699,31.8604],[113.9941,31.7725],[113.8184,31.8604],[113.7305,32.4316],[113.4668,32.2998],[113.2031,32.4316],[112.3242,32.3438],[111.5332,32.6074],[111.0059,33.2666],[111.0059,33.5303],[110.6543,33.8379],[110.6543,34.1455],[110.4785,34.2334],[110.3906,34.585]]]}},{"type":"Feature","properties":{"id":"21","size":"1500","name":"辽宁","cp":[122.0438,41.0889],"childNum":14},"geometry":{"type":"Polygon","coordinates":[[[119.2676,41.3086],[119.4434,41.6162],[119.2676,41.7041],[119.3555,42.2754],[119.5313,42.3633],[119.8828,42.1875],[120.1465,41.7041],[120.498,42.0996],[121.4648,42.4951],[121.7285,42.4512],[121.9922,42.7148],[122.3438,42.6709],[122.3438,42.8467],[122.7832,42.7148],[123.1348,42.8027],[123.3105,42.9785],[123.5742,43.0225],[123.6621,43.374],[123.8379,43.4619],[124.2773,43.2422],[124.4531,42.8467],[124.7168,43.0664],[124.8926,43.0664],[124.8926,42.8027],[125.332,42.1436],[125.4199,42.0996],[125.332,41.9678],[125.332,41.6602],[125.7715,41.2207],[125.5957,40.9131],[125.6836,40.8691],[124.541,40.21],[124.1016,39.6826],[123.3984,39.6826],[123.1348,39.4189],[123.1348,39.0234],[122.0801,39.0234],[121.5527,38.7158],[121.1133,38.6719],[120.9375,38.9795],[121.377,39.1992],[121.2012,39.5508],[122.0801,40.3857],[121.9922,40.6934],[121.7285,40.8252],[121.2012,40.8252],[120.5859,40.21],[119.8828,39.9463],[119.707,40.1221],[119.5313,40.5615],[119.2676,40.5176],[118.8281,40.8252],[119.2676,41.3086]]]}},{"type":"Feature","properties":{"id":"14","size":"1450","name":"山西","cp":[111.849248,36.857014],"childNum":11},"geometry":{"type":"Polygon","coordinates":[[[110.918,38.7158],[111.1816,39.2432],[111.0938,39.375],[111.3574,39.4189],[111.4453,39.6387],[111.9727,39.5947],[112.3242,40.2539],[112.7637,40.166],[113.2031,40.3857],[113.5547,40.3418],[113.8184,40.5176],[114.082,40.5176],[114.082,40.7373],[114.2578,40.6055],[114.3457,40.3857],[114.5215,40.3418],[113.9941,39.9902],[114.3457,39.8584],[114.5215,39.5068],[114.3457,39.0674],[113.9063,39.0234],[113.8184,38.9355],[113.8184,38.8037],[113.5547,38.54],[113.5547,38.2764],[113.8184,38.1445],[113.9941,37.7051],[114.1699,37.6611],[113.7305,37.1338],[113.7305,36.8701],[113.4668,36.6504],[113.7305,36.3428],[113.6426,35.6836],[113.1152,35.332],[112.7637,35.2002],[112.0605,35.2881],[112.0605,35.0684],[111.7969,35.0684],[111.5332,34.8486],[111.1816,34.8047],[110.8301,34.6289],[110.3906,34.585],[110.2148,34.6729],[110.2148,34.8926],[110.5664,35.6396],[110.4785,36.123],[110.3906,37.002],[110.8301,37.6611],[110.4785,37.9688],[110.4785,38.1885],[110.8301,38.4961],[110.918,38.7158]]]}},{"type":"Feature","properties":{"id":"34","size":"1700","name":"安徽","cp":[117.283042,31.26119],"childNum":17},"geometry":{"type":"Polygon","coordinates":[[[116.6309,33.9258],[116.543,34.2773],[116.1914,34.4092],[116.1914,34.585],[116.3672,34.6289],[116.8945,34.4092],[117.1582,34.0576],[117.5977,34.0137],[117.7734,33.7061],[118.125,33.75],[117.9492,33.2227],[118.0371,33.1348],[118.2129,33.2227],[118.3008,32.7832],[118.7402,32.7393],[118.916,32.959],[119.1797,32.8271],[119.1797,32.4756],[118.5645,32.5635],[118.6523,32.2119],[118.4766,32.168],[118.3887,31.9482],[118.916,31.5527],[118.7402,31.377],[118.8281,31.2451],[119.3555,31.2891],[119.4434,31.1572],[119.6191,31.1133],[119.6191,31.0693],[119.4434,30.6738],[119.2676,30.6299],[119.3555,30.4102],[118.916,30.3223],[118.916,29.9707],[118.7402,29.707],[118.2129,29.3994],[118.0371,29.5752],[117.5098,29.6191],[117.1582,29.9268],[117.0703,29.8389],[117.1582,29.707],[116.7188,29.6191],[116.7188,29.751],[116.8945,29.9268],[116.7188,30.0586],[116.2793,29.7949],[116.1035,29.8389],[116.1035,30.1904],[115.752,30.6738],[116.0156,31.0254],[115.5762,31.2012],[115.4004,31.4209],[115.4883,31.6846],[115.9277,31.7725],[115.8398,32.5195],[115.5762,32.4316],[115.2246,32.6074],[115.1367,32.8711],[114.873,33.0029],[114.873,33.1348],[115.3125,33.1787],[115.4004,33.5303],[115.5762,33.6621],[115.5762,33.9258],[115.6641,34.0576],[116.0156,33.9697],[116.1914,33.7061],[116.6309,33.9258]]]}},{"type":"Feature","properties":{"id":"35","size":"2000","name":"福建","cp":[118.306239,26.075302],"childNum":9},"geometry":{"type":"Polygon","coordinates":[[[118.4766,28.3008],[118.8281,28.2568],[118.7402,28.0371],[118.916,27.4658],[119.2676,27.4219],[119.6191,27.6855],[119.7949,27.29],[120.2344,27.4219],[120.4102,27.1582],[120.7617,27.0264],[120.6738,26.8945],[120.2344,26.8506],[120.2344,26.7188],[120.4102,26.6748],[120.498,26.3672],[120.2344,26.2793],[120.4102,26.1475],[120.0586,26.1914],[119.9707,25.9277],[119.7949,25.9277],[119.9707,25.4004],[119.7949,25.2686],[119.5313,25.1367],[119.4434,25.0049],[119.2676,25.0928],[118.916,24.8291],[118.6523,24.5215],[118.4766,24.5215],[118.4766,24.4336],[118.2129,24.3457],[118.2129,24.1699],[117.8613,23.9941],[117.7734,23.7744],[117.5098,23.5986],[117.1582,23.5547],[116.9824,23.9063],[116.9824,24.1699],[116.7188,24.6533],[116.543,24.6094],[116.3672,24.873],[116.2793,24.7852],[115.9277,24.917],[115.8398,25.2246],[116.0156,25.2686],[116.1914,25.8838],[116.4551,26.1035],[116.3672,26.2354],[116.6309,26.4551],[116.543,26.8066],[117.0703,27.1143],[117.1582,27.29],[116.9824,27.6416],[117.5098,27.9932],[117.7734,27.8174],[118.3008,28.0811],[118.4766,28.3008]]]}},{"type":"Feature","properties":{"id":"33","size":"2100","name":"浙江","cp":[120.498,29.0918],"childNum":11},"geometry":{"type":"Polygon","coordinates":[[[118.2129,29.3994],[118.7402,29.707],[118.916,29.9707],[118.916,30.3223],[119.3555,30.4102],[119.2676,30.6299],[119.4434,30.6738],[119.6191,31.0693],[119.6191,31.1133],[119.9707,31.1572],[120.498,30.8057],[120.9375,31.0254],[121.2891,30.6738],[121.9922,30.8057],[122.6953,30.8936],[122.8711,30.7178],[122.959,30.1465],[122.6074,30.1025],[122.6074,29.9268],[122.168,29.5313],[122.3438,28.8721],[121.9922,28.8721],[121.9922,28.4326],[121.7285,28.3447],[121.7285,28.2129],[121.4648,28.2129],[121.5527,28.0371],[121.2891,27.9492],[121.1133,27.4219],[120.6738,27.334],[120.6738,27.1582],[120.9375,27.0264],[120.7617,27.0264],[120.4102,27.1582],[120.2344,27.4219],[119.7949,27.29],[119.6191,27.6855],[119.2676,27.4219],[118.916,27.4658],[118.7402,28.0371],[118.8281,28.2568],[118.4766,28.3008],[118.4766,28.3447],[118.3887,28.7842],[118.0371,29.0479],[118.0371,29.1797],[118.2129,29.3994]]]}},{"type":"Feature","properties":{"id":"32","size":"1950","name":"江苏","cp":[119.767413,33.041544],"childNum":13},"geometry":{"type":"Polygon","coordinates":[[[116.3672,34.6289],[116.4551,34.8926],[116.8066,34.9365],[117.2461,34.4531],[117.334,34.585],[117.5977,34.4531],[117.9492,34.6729],[118.125,34.6289],[118.2129,34.4092],[118.3887,34.4092],[118.4766,34.6729],[118.7402,34.7168],[118.916,35.0244],[119.2676,35.1123],[119.3555,35.0244],[119.3555,34.8486],[119.707,34.585],[120.3223,34.3652],[120.9375,33.0469],[121.0254,32.6514],[121.377,32.4756],[121.4648,32.168],[121.9043,31.9922],[121.9922,31.6846],[121.9922,31.5967],[121.2012,31.8604],[121.1133,31.7285],[121.377,31.5088],[121.2012,31.4648],[120.9375,31.0254],[120.498,30.8057],[119.9707,31.1572],[119.6191,31.1133],[119.4434,31.1572],[119.3555,31.2891],[118.8281,31.2451],[118.7402,31.377],[118.916,31.5527],[118.3887,31.9482],[118.4766,32.168],[118.6523,32.2119],[118.5645,32.5635],[119.1797,32.4756],[119.1797,32.8271],[118.916,32.959],[118.7402,32.7393],[118.3008,32.7832],[118.2129,33.2227],[118.0371,33.1348],[117.9492,33.2227],[118.125,33.75],[117.7734,33.7061],[117.5977,34.0137],[117.1582,34.0576],[116.8945,34.4092],[116.3672,34.6289]]]}},{"type":"Feature","properties":{"id":"50","size":"2380","name":"重庆","cp":[107.304962,29.533155],"childNum":40},"geometry":{"type":"Polygon","coordinates":[[[108.5449,31.6846],[108.2813,31.9043],[108.3691,32.168],[108.5449,32.2119],[109.0723,31.9482],[109.248,31.7285],[109.5996,31.7285],[109.7754,31.6846],[109.6875,31.5527],[110.127,31.377],[110.2148,31.1572],[110.0391,30.8057],[109.8633,30.8936],[109.4238,30.542],[109.248,30.6299],[109.1602,30.542],[109.0723,30.6299],[108.8086,30.498],[108.6328,30.5859],[108.457,30.4102],[108.5449,30.2344],[108.457,29.7949],[108.6328,29.8389],[108.9844,29.3115],[109.0723,29.3555],[109.248,29.1357],[109.248,28.4766],[109.0723,28.2129],[108.7207,28.2129],[108.7207,28.4766],[108.5449,28.3887],[108.5449,28.6523],[108.3691,28.6523],[108.2813,29.0918],[107.8418,29.0039],[107.8418,29.1357],[107.5781,29.2236],[107.4023,29.1797],[107.4023,28.8721],[106.875,28.7842],[106.6992,28.4766],[106.6113,28.5205],[106.6113,28.6523],[106.5234,28.7842],[106.4355,28.7842],[106.5234,28.5645],[106.3477,28.5205],[106.2598,28.8721],[105.8203,28.96],[105.7324,29.2676],[105.4688,29.3115],[105.293,29.5313],[105.7324,29.8828],[105.5566,30.1025],[105.6445,30.2783],[105.8203,30.4541],[106.2598,30.1904],[106.6113,30.3223],[106.7871,30.0146],[107.0508,30.0146],[107.4902,30.6299],[107.4023,30.7617],[107.4902,30.8496],[107.9297,30.8496],[108.1934,31.5088],[108.5449,31.6846]]]}},{"type":"Feature","properties":{"id":"64","size":"2100","name":"宁夏","cp":[105.9961,37.3096],"childNum":5},"geometry":{"type":"Polygon","coordinates":[[[104.3262,37.4414],[105.8203,37.793],[105.9082,38.7158],[106.3477,39.2871],[106.7871,39.375],[106.9629,38.9795],[106.5234,38.3203],[106.7871,38.1885],[107.3145,38.1006],[107.666,37.8809],[107.3145,37.6172],[107.3145,37.0898],[106.6113,37.0898],[106.6113,36.7822],[106.4355,36.5625],[106.5234,36.4746],[106.5234,36.2549],[106.875,36.123],[106.9629,35.8154],[106.6992,35.6836],[106.4355,35.6836],[106.5234,35.332],[106.3477,35.2441],[106.2598,35.4199],[106.084,35.376],[105.9961,35.4199],[106.084,35.4639],[105.9961,35.4639],[105.8203,35.5518],[105.7324,35.7275],[105.3809,35.7715],[105.293,35.9912],[105.4688,36.123],[105.2051,36.6943],[105.293,36.8262],[104.8535,37.2217],[104.5898,37.2217],[104.5898,37.4414],[104.3262,37.4414]]]}},{"type":"Feature","properties":{"id":"46","size":"4500","name":"海南","cp":[109.9512,19.2041],"childNum":18},"geometry":{"type":"Polygon","coordinates":[[[108.6328,19.3799],[109.0723,19.6436],[109.248,19.9512],[109.5996,20.0391],[110.0391,20.127],[110.3906,20.127],[110.5664,20.2588],[110.6543,20.2588],[111.0938,19.9512],[111.2695,19.9951],[110.6543,19.1602],[110.5664,18.6768],[110.2148,18.5889],[110.0391,18.3691],[109.8633,18.3691],[109.6875,18.1055],[108.9844,18.2813],[108.6328,18.457],[108.6328,19.3799]]]}},{"type":"Feature","properties":{"id":"71","size":"3000","name":"台湾","cp":[120.0254,23.5986],"childNum":1},"geometry":{"type":"Polygon","coordinates":[[[121.9043,25.0488],[121.9922,25.0049],[121.8164,24.7412],[121.9043,24.5654],[121.6406,24.0381],[121.377,23.1152],[121.0254,22.6758],[120.8496,22.0605],[120.7617,21.9287],[120.6738,22.3242],[120.2344,22.5879],[120.0586,23.0713],[120.1465,23.6865],[121.0254,25.0488],[121.5527,25.3125],[121.9043,25.0488]]]}},{"type":"Feature","properties":{"id":"11","size":"5000","name":"北京","cp":[116.4551,40.2539],"childNum":19},"geometry":{"type":"Polygon","coordinates":[[[117.4219,40.21],[117.334,40.1221],[117.2461,40.0781],[116.8066,39.9902],[116.8945,39.8145],[116.8945,39.6826],[116.8066,39.5947],[116.543,39.5947],[116.3672,39.4629],[116.1914,39.5947],[115.752,39.5068],[115.4883,39.6387],[115.4004,39.9463],[115.9277,40.2539],[115.752,40.5615],[116.1035,40.6055],[116.1914,40.7813],[116.4551,40.7813],[116.3672,40.9131],[116.6309,41.0449],[116.9824,40.6934],[117.4219,40.6494],[117.2461,40.5176],[117.4219,40.21]]]}},{"type":"Feature","properties":{"id":"12","size":"5000","name":"天津","cp":[117.4219,39.4189],"childNum":18},"geometry":{"type":"Polygon","coordinates":[[[116.8066,39.5947],[116.8945,39.6826],[117.1582,39.6387],[117.1582,39.8145],[117.2461,40.0781],[117.334,40.1221],[117.4219,40.21],[117.6855,40.0781],[117.6855,39.9902],[117.5098,39.9902],[117.5098,39.7705],[117.6855,39.5947],[117.9492,39.5947],[117.8613,39.4189],[118.0371,39.2432],[118.0371,39.1992],[117.8613,39.1113],[117.5977,38.6279],[117.2461,38.54],[116.7188,38.8037],[116.7188,38.9355],[116.8945,39.1113],[116.8066,39.5947]]]}},{"type":"Feature","properties":{"id":"31","size":"7500","name":"上海","cp":[121.4648,31.2891],"childNum":19},"geometry":{"type":"Polygon","coordinates":[[[120.9375,31.0254],[121.2012,31.4648],[121.377,31.5088],[121.1133,31.7285],[121.2012,31.8604],[121.9922,31.5967],[121.9043,31.1572],[121.9922,30.8057],[121.2891,30.6738],[120.9375,31.0254]]]}},{"type":"Feature","properties":{"id":"81","size":"18000","name":"香港","cp":[114.1178,22.3242],"childNum":1},"geometry":{"type":"Polygon","coordinates":[[[114.6094,22.4121],[114.5215,22.1484],[114.3457,22.1484],[113.9063,22.1484],[113.8184,22.1924],[113.9063,22.4121],[114.1699,22.5439],[114.3457,22.5439],[114.4336,22.5439],[114.4336,22.4121],[114.6094,22.4121]]]}},{"type":"Feature","properties":{"id":"82","size":"27","name":"澳门","cp":[111.5547,22.1484],"childNum":1},"geometry":{"type":"Polygon","coordinates":[[[113.5986,22.1649],[113.6096,22.1265],[113.5547,22.11],[113.5437,22.2034],[113.5767,22.2034],[113.5986,22.1649]]]}}]} diff --git a/src_bak/api/json/industry-data.json b/src_bak/api/json/industry-data.json deleted file mode 100644 index 0d8baa8..0000000 --- a/src_bak/api/json/industry-data.json +++ /dev/null @@ -1 +0,0 @@ -[{"value":1001,"label":"IT服务","children":[{"value":1001000,"label":"计算机软件/硬件/信息服务","children":[]},{"value":1001001,"label":"互联网和相关服务","children":[]},{"value":1001002,"label":"其他","children":[]}],"icon":""},{"value":1002,"label":"制造业","children":[{"value":1002000,"label":"机械/电子","children":[]},{"value":1003000,"label":"服装/纺织","children":[]},{"value":1002002,"label":"汽车","children":[]},{"value":1002005,"label":"金属制品","children":[]},{"value":1003002,"label":"食品/饮料","children":[]},{"value":1003003,"label":"家具/家纺","children":[]},{"value":1002001,"label":"重工制造","children":[]},{"value":1003005,"label":"家电/数码","children":[]},{"value":1002004,"label":"橡胶/塑料","children":[]},{"value":1003004,"label":"日用品/化妆品","children":[]},{"value":1002006,"label":"化学原料制品","children":[]},{"value":1003007,"label":"文教/工美/体育/娱乐用品","children":[]},{"value":1003006,"label":"烟酒/茶","children":[]},{"value":1002007,"label":"非金属矿物","children":[]},{"value":1002003,"label":"其他","children":[]}],"icon":""},{"value":1003,"label":"批发/零售","children":[{"value":1003008,"label":"批发","children":[]},{"value":1003010,"label":"零售","children":[]},{"value":1003001,"label":"超市/便利店/百货商场","children":[]},{"value":1003011,"label":"进出口","children":[]},{"value":1003009,"label":"其他","children":[]}],"icon":""},{"value":1004,"label":"生活服务","children":[{"value":1004001,"label":"餐饮","children":[]},{"value":1004004,"label":"居民服务","children":[]},{"value":1004002,"label":"租赁和商务服务","children":[]},{"value":1004000,"label":"酒店/住宿","children":[]},{"value":1004003,"label":"其他","children":[]}],"icon":""},{"value":1005,"label":"文化/体育/娱乐业","children":[{"value":1005001,"label":"文化/体育","children":[]},{"value":1005002,"label":"娱乐/旅游","children":[]},{"value":1005000,"label":"新闻传媒","children":[]},{"value":1005003,"label":"其他","children":[]}],"icon":""},{"value":1006,"label":"建筑/房地产","children":[{"value":1006001,"label":"建筑业","children":[]},{"value":1006002,"label":"建材装修","children":[]},{"value":1006000,"label":"房地产","children":[]},{"value":1006003,"label":"其他","children":[]}],"icon":""},{"value":1007,"label":"教育","children":[{"value":1007000,"label":"学前教育","children":[],"desc":"如:托儿所、幼儿园"},{"value":1007001,"label":"初中等教育","children":[],"desc":"如:小学、初中、高中、职高"},{"value":1007002,"label":"高等教育","children":[],"desc":"如:大学、高职、高专"},{"value":1007003,"label":"培训机构","children":[]},{"value":1007004,"label":"其他","children":[]}],"icon":""},{"value":1008,"label":"运输/物流/仓储","children":[{"value":1008003,"label":"物流/仓储","children":[]},{"value":1008000,"label":"道路/铁路运输","children":[]},{"value":1008004,"label":"邮政/快递","children":[]},{"value":1008001,"label":"航空运输","children":[]},{"value":1008002,"label":"水上运输","children":[]},{"value":1008005,"label":"其他","children":[]}],"icon":""},{"value":1009,"label":"医疗","children":[{"value":1009000,"label":"医院/医疗机构","children":[]},{"value":1009003,"label":"医疗器械","children":[]},{"value":1009001,"label":"医药制造","children":[]},{"value":1009002,"label":"医药流通","children":[]},{"value":1009004,"label":"其他","children":[]}],"icon":""},{"value":1010,"label":"政府","children":[{"value":1010000,"label":"党政机关","children":[]},{"value":1010001,"label":"国家权力/行政机构","children":[]},{"value":1010002,"label":"检察院/法院/公安","children":[]},{"value":1010003,"label":"民政/人社/交通/卫生","children":[]},{"value":1010004,"label":"发改委/经信委/商务局/统计局","children":[]},{"value":1010005,"label":"国土/规划","children":[]},{"value":1010006,"label":"税务/海关/工商/环保/物价/药品","children":[]},{"value":1010007,"label":"政协/民主党派","children":[]},{"value":1010008,"label":"地方政府","children":[]},{"value":1010009,"label":"其他","children":[]}],"icon":""},{"value":1011,"label":"金融","children":[{"value":1011000,"label":"保险","children":[]},{"value":1011001,"label":"银行","children":[]},{"value":1011002,"label":"证券/投资/基金","children":[]},{"value":1011003,"label":"其他","children":[]}],"icon":""},{"value":1012,"label":"能源/采矿","children":[{"value":1014003,"label":"电力/热力/燃气/水供应业","children":[]},{"value":1012003,"label":"石油/天然气","children":[]},{"value":1012002,"label":"煤炭","children":[]},{"value":1012001,"label":"有色金属","children":[]},{"value":1012000,"label":"钢铁","children":[]},{"value":1012004,"label":"其他","children":[]}],"icon":""},{"value":1013,"label":"农林渔牧","children":[{"value":1013000,"label":"农林渔牧","children":[]}],"icon":""},{"value":1014,"label":"其他行业","children":[{"value":1014000,"label":"科学研究和技术服务业","children":[]},{"value":1014002,"label":"社会组织","children":[]},{"value":1014001,"label":"水利和环境管理","children":[]},{"value":1014004,"label":"国际组织","children":[]},{"value":1014005,"label":"其他","children":[]}],"icon":""}] diff --git a/src_bak/api/json/regions-data.json b/src_bak/api/json/regions-data.json deleted file mode 100644 index 4cbd130..0000000 --- a/src_bak/api/json/regions-data.json +++ /dev/null @@ -1 +0,0 @@ -[{"label":"北京","value":"110000","children":[{"value":"110100","label":"北京市","children":[{"value":"110101","label":"东城区"},{"value":"110102","label":"西城区"},{"value":"110103","label":"崇文区"},{"value":"110104","label":"宣武区"},{"value":"110105","label":"朝阳区"},{"value":"110106","label":"丰台区"},{"value":"110107","label":"石景山区"},{"value":"110108","label":"海淀区"},{"value":"110109","label":"门头沟区"},{"value":"110111","label":"房山区"},{"value":"110112","label":"通州区"},{"value":"110113","label":"顺义区"},{"value":"110114","label":"昌平区"},{"value":"110115","label":"大兴区"},{"value":"110116","label":"怀柔区"},{"value":"110117","label":"平谷区"},{"value":"110228","label":"密云县"},{"value":"110229","label":"延庆县"}]}]},{"label":"天津","value":"120000","children":[{"value":"120100","label":"天津市","children":[{"value":"120101","label":"和平区"},{"value":"120102","label":"河东区"},{"value":"120103","label":"河西区"},{"value":"120104","label":"南开区"},{"value":"120105","label":"河北区"},{"value":"120106","label":"红桥区"},{"value":"120107","label":"塘沽区"},{"value":"120108","label":"汉沽区"},{"value":"120109","label":"大港区"},{"value":"120110","label":"东丽区"},{"value":"120111","label":"西青区"},{"value":"120112","label":"津南区"},{"value":"120113","label":"北辰区"},{"value":"120114","label":"武清区"},{"value":"120115","label":"宝坻区"},{"value":"120116","label":"滨海新区"},{"value":"120221","label":"宁河县"},{"value":"120223","label":"静海县"},{"value":"120225","label":"蓟县"}]}]},{"label":"河北省","value":"130000","children":[{"value":"130100","label":"石家庄市","children":[{"value":"130102","label":"长安区"},{"value":"130103","label":"桥东区"},{"value":"130104","label":"桥西区"},{"value":"130105","label":"新华区"},{"value":"130107","label":"井陉矿区"},{"value":"130108","label":"裕华区"},{"value":"130121","label":"井陉县"},{"value":"130123","label":"正定县"},{"value":"130124","label":"栾城县"},{"value":"130125","label":"行唐县"},{"value":"130126","label":"灵寿县"},{"value":"130127","label":"高邑县"},{"value":"130128","label":"深泽县"},{"value":"130129","label":"赞皇县"},{"value":"130130","label":"无极县"},{"value":"130131","label":"平山县"},{"value":"130132","label":"元氏县"},{"value":"130133","label":"赵县"},{"value":"130181","label":"辛集市"},{"value":"130182","label":"藁城市"},{"value":"130183","label":"晋州市"},{"value":"130184","label":"新乐市"},{"value":"130185","label":"鹿泉市"}]},{"value":"130200","label":"唐山市","children":[{"value":"130202","label":"路南区"},{"value":"130203","label":"路北区"},{"value":"130204","label":"古冶区"},{"value":"130205","label":"开平区"},{"value":"130207","label":"丰南区"},{"value":"130208","label":"丰润区"},{"value":"130223","label":"滦县"},{"value":"130224","label":"滦南县"},{"value":"130225","label":"乐亭县"},{"value":"130227","label":"迁西县"},{"value":"130229","label":"玉田县"},{"value":"130230","label":"唐海县"},{"value":"130281","label":"遵化市"},{"value":"130283","label":"迁安市"}]},{"value":"130300","label":"秦皇岛市","children":[{"value":"130302","label":"海港区"},{"value":"130303","label":"山海关区"},{"value":"130304","label":"北戴河区"},{"value":"130321","label":"青龙满族自治县"},{"value":"130322","label":"昌黎县"},{"value":"130323","label":"抚宁县"},{"value":"130324","label":"卢龙县"},{"value":"130399","label":"经济技术开发区"}]},{"value":"130400","label":"邯郸市","children":[{"value":"130402","label":"邯山区"},{"value":"130403","label":"丛台区"},{"value":"130404","label":"复兴区"},{"value":"130406","label":"峰峰矿区"},{"value":"130421","label":"邯郸县"},{"value":"130423","label":"临漳县"},{"value":"130424","label":"成安县"},{"value":"130425","label":"大名县"},{"value":"130426","label":"涉县"},{"value":"130427","label":"磁县"},{"value":"130428","label":"肥乡县"},{"value":"130429","label":"永年县"},{"value":"130430","label":"邱县"},{"value":"130431","label":"鸡泽县"},{"value":"130432","label":"广平县"},{"value":"130433","label":"馆陶县"},{"value":"130434","label":"魏县"},{"value":"130435","label":"曲周县"},{"value":"130481","label":"武安市"}]},{"value":"130500","label":"邢台市","children":[{"value":"130502","label":"桥东区"},{"value":"130503","label":"桥西区"},{"value":"130521","label":"邢台县"},{"value":"130522","label":"临城县"},{"value":"130523","label":"内丘县"},{"value":"130524","label":"柏乡县"},{"value":"130525","label":"隆尧县"},{"value":"130526","label":"任县"},{"value":"130527","label":"南和县"},{"value":"130528","label":"宁晋县"},{"value":"130529","label":"巨鹿县"},{"value":"130530","label":"新河县"},{"value":"130531","label":"广宗县"},{"value":"130532","label":"平乡县"},{"value":"130533","label":"威县"},{"value":"130534","label":"清河县"},{"value":"130535","label":"临西县"},{"value":"130581","label":"南宫市"},{"value":"130582","label":"沙河市"}]},{"value":"130600","label":"保定市","children":[{"value":"130602","label":"新市区"},{"value":"130603","label":"北市区"},{"value":"130604","label":"南市区"},{"value":"130621","label":"满城县"},{"value":"130622","label":"清苑县"},{"value":"130623","label":"涞水县"},{"value":"130624","label":"阜平县"},{"value":"130625","label":"徐水县"},{"value":"130626","label":"定兴县"},{"value":"130627","label":"唐县"},{"value":"130628","label":"高阳县"},{"value":"130629","label":"容城县"},{"value":"130630","label":"涞源县"},{"value":"130631","label":"望都县"},{"value":"130632","label":"安新县"},{"value":"130633","label":"易县"},{"value":"130634","label":"曲阳县"},{"value":"130635","label":"蠡县"},{"value":"130636","label":"顺平县"},{"value":"130637","label":"博野县"},{"value":"130638","label":"雄县"},{"value":"130681","label":"涿州市"},{"value":"130682","label":"定州市"},{"value":"130683","label":"安国市"},{"value":"130684","label":"高碑店市"},{"value":"130698","label":"高开区"}]},{"value":"130700","label":"张家口市","children":[{"value":"130702","label":"桥东区"},{"value":"130703","label":"桥西区"},{"value":"130705","label":"宣化区"},{"value":"130706","label":"下花园区"},{"value":"130721","label":"宣化县"},{"value":"130722","label":"张北县"},{"value":"130723","label":"康保县"},{"value":"130724","label":"沽源县"},{"value":"130725","label":"尚义县"},{"value":"130726","label":"蔚县"},{"value":"130727","label":"阳原县"},{"value":"130728","label":"怀安县"},{"value":"130729","label":"万全县"},{"value":"130730","label":"怀来县"},{"value":"130731","label":"涿鹿县"},{"value":"130732","label":"赤城县"},{"value":"130733","label":"崇礼县"}]},{"value":"130800","label":"承德市","children":[{"value":"130802","label":"双桥区"},{"value":"130803","label":"双滦区"},{"value":"130804","label":"鹰手营子矿区"},{"value":"130821","label":"承德县"},{"value":"130822","label":"兴隆县"},{"value":"130823","label":"平泉县"},{"value":"130824","label":"滦平县"},{"value":"130825","label":"隆化县"},{"value":"130826","label":"丰宁满族自治县"},{"value":"130827","label":"宽城满族自治县"},{"value":"130828","label":"围场满族蒙古族自治县"}]},{"value":"130900","label":"沧州市","children":[{"value":"130902","label":"新华区"},{"value":"130903","label":"运河区"},{"value":"130921","label":"沧县"},{"value":"130922","label":"青县"},{"value":"130923","label":"东光县"},{"value":"130924","label":"海兴县"},{"value":"130925","label":"盐山县"},{"value":"130926","label":"肃宁县"},{"value":"130927","label":"南皮县"},{"value":"130928","label":"吴桥县"},{"value":"130929","label":"献县"},{"value":"130930","label":"孟村回族自治县"},{"value":"130981","label":"泊头市"},{"value":"130982","label":"任丘市"},{"value":"130983","label":"黄骅市"},{"value":"130984","label":"河间市"}]},{"value":"131000","label":"廊坊市","children":[{"value":"131002","label":"安次区"},{"value":"131003","label":"广阳区"},{"value":"131022","label":"固安县"},{"value":"131023","label":"永清县"},{"value":"131024","label":"香河县"},{"value":"131025","label":"大城县"},{"value":"131026","label":"文安县"},{"value":"131028","label":"大厂回族自治县"},{"value":"131051","label":"开发区"},{"value":"131052","label":"燕郊经济技术开发区"},{"value":"131081","label":"霸州市"},{"value":"131082","label":"三河市"}]},{"value":"131100","label":"衡水市","children":[{"value":"131102","label":"桃城区"},{"value":"131121","label":"枣强县"},{"value":"131122","label":"武邑县"},{"value":"131123","label":"武强县"},{"value":"131124","label":"饶阳县"},{"value":"131125","label":"安平县"},{"value":"131126","label":"故城县"},{"value":"131127","label":"景县"},{"value":"131128","label":"阜城县"},{"value":"131181","label":"冀州市"},{"value":"131182","label":"深州市"}]}]},{"label":"山西省","value":"140000","children":[{"value":"140100","label":"太原市","children":[{"value":"140105","label":"小店区"},{"value":"140106","label":"迎泽区"},{"value":"140107","label":"杏花岭区"},{"value":"140108","label":"尖草坪区"},{"value":"140109","label":"万柏林区"},{"value":"140110","label":"晋源区"},{"value":"140121","label":"清徐县"},{"value":"140122","label":"阳曲县"},{"value":"140123","label":"娄烦县"},{"value":"140181","label":"古交市"}]},{"value":"140200","label":"大同市","children":[{"value":"140202","label":"城区"},{"value":"140203","label":"矿区"},{"value":"140211","label":"南郊区"},{"value":"140212","label":"新荣区"},{"value":"140221","label":"阳高县"},{"value":"140222","label":"天镇县"},{"value":"140223","label":"广灵县"},{"value":"140224","label":"灵丘县"},{"value":"140225","label":"浑源县"},{"value":"140226","label":"左云县"},{"value":"140227","label":"大同县"}]},{"value":"140300","label":"阳泉市","children":[{"value":"140302","label":"城区"},{"value":"140303","label":"矿区"},{"value":"140311","label":"郊区"},{"value":"140321","label":"平定县"},{"value":"140322","label":"盂县"}]},{"value":"140400","label":"长治市","children":[{"value":"140421","label":"长治县"},{"value":"140423","label":"襄垣县"},{"value":"140424","label":"屯留县"},{"value":"140425","label":"平顺县"},{"value":"140426","label":"黎城县"},{"value":"140427","label":"壶关县"},{"value":"140428","label":"长子县"},{"value":"140429","label":"武乡县"},{"value":"140430","label":"沁县"},{"value":"140431","label":"沁源县"},{"value":"140481","label":"潞城市"},{"value":"140482","label":"城区"},{"value":"140483","label":"郊区"},{"value":"140484","label":"高新区"}]},{"value":"140500","label":"晋城市","children":[{"value":"140502","label":"城区"},{"value":"140521","label":"沁水县"},{"value":"140522","label":"阳城县"},{"value":"140524","label":"陵川县"},{"value":"140525","label":"泽州县"},{"value":"140581","label":"高平市"}]},{"value":"140600","label":"朔州市","children":[{"value":"140602","label":"朔城区"},{"value":"140603","label":"平鲁区"},{"value":"140621","label":"山阴县"},{"value":"140622","label":"应县"},{"value":"140623","label":"右玉县"},{"value":"140624","label":"怀仁县"}]},{"value":"140700","label":"晋中市","children":[{"value":"140702","label":"榆次区"},{"value":"140721","label":"榆社县"},{"value":"140722","label":"左权县"},{"value":"140723","label":"和顺县"},{"value":"140724","label":"昔阳县"},{"value":"140725","label":"寿阳县"},{"value":"140726","label":"太谷县"},{"value":"140727","label":"祁县"},{"value":"140728","label":"平遥县"},{"value":"140729","label":"灵石县"},{"value":"140781","label":"介休市"}]},{"value":"140800","label":"运城市","children":[{"value":"140802","label":"盐湖区"},{"value":"140821","label":"临猗县"},{"value":"140822","label":"万荣县"},{"value":"140823","label":"闻喜县"},{"value":"140824","label":"稷山县"},{"value":"140825","label":"新绛县"},{"value":"140826","label":"绛县"},{"value":"140827","label":"垣曲县"},{"value":"140828","label":"夏县"},{"value":"140829","label":"平陆县"},{"value":"140830","label":"芮城县"},{"value":"140881","label":"永济市"},{"value":"140882","label":"河津市"}]},{"value":"140900","label":"忻州市","children":[{"value":"140902","label":"忻府区"},{"value":"140921","label":"定襄县"},{"value":"140922","label":"五台县"},{"value":"140923","label":"代县"},{"value":"140924","label":"繁峙县"},{"value":"140925","label":"宁武县"},{"value":"140926","label":"静乐县"},{"value":"140927","label":"神池县"},{"value":"140928","label":"五寨县"},{"value":"140929","label":"岢岚县"},{"value":"140930","label":"河曲县"},{"value":"140931","label":"保德县"},{"value":"140932","label":"偏关县"},{"value":"140981","label":"原平市"}]},{"value":"141000","label":"临汾市","children":[{"value":"141002","label":"尧都区"},{"value":"141021","label":"曲沃县"},{"value":"141022","label":"翼城县"},{"value":"141023","label":"襄汾县"},{"value":"141024","label":"洪洞县"},{"value":"141025","label":"古县"},{"value":"141026","label":"安泽县"},{"value":"141027","label":"浮山县"},{"value":"141028","label":"吉县"},{"value":"141029","label":"乡宁县"},{"value":"141030","label":"大宁县"},{"value":"141031","label":"隰县"},{"value":"141032","label":"永和县"},{"value":"141033","label":"蒲县"},{"value":"141034","label":"汾西县"},{"value":"141081","label":"侯马市"},{"value":"141082","label":"霍州市"}]},{"value":"141100","label":"吕梁市","children":[{"value":"141102","label":"离石区"},{"value":"141121","label":"文水县"},{"value":"141122","label":"交城县"},{"value":"141123","label":"兴县"},{"value":"141124","label":"临县"},{"value":"141125","label":"柳林县"},{"value":"141126","label":"石楼县"},{"value":"141127","label":"岚县"},{"value":"141128","label":"方山县"},{"value":"141129","label":"中阳县"},{"value":"141130","label":"交口县"},{"value":"141181","label":"孝义市"},{"value":"141182","label":"汾阳市"}]}]},{"label":"内蒙古自治区","value":"150000","children":[{"value":"150100","label":"呼和浩特市","children":[{"value":"150102","label":"新城区"},{"value":"150103","label":"回民区"},{"value":"150104","label":"玉泉区"},{"value":"150105","label":"赛罕区"},{"value":"150121","label":"土默特左旗"},{"value":"150122","label":"托克托县"},{"value":"150123","label":"和林格尔县"},{"value":"150124","label":"清水河县"},{"value":"150125","label":"武川县"}]},{"value":"150200","label":"包头市","children":[{"value":"150202","label":"东河区"},{"value":"150203","label":"昆都仑区"},{"value":"150204","label":"青山区"},{"value":"150205","label":"石拐区"},{"value":"150206","label":"白云矿区"},{"value":"150207","label":"九原区"},{"value":"150221","label":"土默特右旗"},{"value":"150222","label":"固阳县"},{"value":"150223","label":"达尔罕茂明安联合旗"}]},{"value":"150300","label":"乌海市","children":[{"value":"150302","label":"海勃湾区"},{"value":"150303","label":"海南区"},{"value":"150304","label":"乌达区"}]},{"value":"150400","label":"赤峰市","children":[{"value":"150402","label":"红山区"},{"value":"150403","label":"元宝山区"},{"value":"150404","label":"松山区"},{"value":"150421","label":"阿鲁科尔沁旗"},{"value":"150422","label":"巴林左旗"},{"value":"150423","label":"巴林右旗"},{"value":"150424","label":"林西县"},{"value":"150425","label":"克什克腾旗"},{"value":"150426","label":"翁牛特旗"},{"value":"150428","label":"喀喇沁旗"},{"value":"150429","label":"宁城县"},{"value":"150430","label":"敖汉旗"}]},{"value":"150500","label":"通辽市","children":[{"value":"150502","label":"科尔沁区"},{"value":"150521","label":"科尔沁左翼中旗"},{"value":"150522","label":"科尔沁左翼后旗"},{"value":"150523","label":"开鲁县"},{"value":"150524","label":"库伦旗"},{"value":"150525","label":"奈曼旗"},{"value":"150526","label":"扎鲁特旗"},{"value":"150581","label":"霍林郭勒市"}]},{"value":"150600","label":"鄂尔多斯市","children":[{"value":"150602","label":"东胜区"},{"value":"150621","label":"达拉特旗"},{"value":"150622","label":"准格尔旗"},{"value":"150623","label":"鄂托克前旗"},{"value":"150624","label":"鄂托克旗"},{"value":"150625","label":"杭锦旗"},{"value":"150626","label":"乌审旗"},{"value":"150627","label":"伊金霍洛旗"}]},{"value":"150700","label":"呼伦贝尔市","children":[{"value":"150702","label":"海拉尔区"},{"value":"150721","label":"阿荣旗"},{"value":"150722","label":"莫力达瓦达斡尔族自治旗"},{"value":"150723","label":"鄂伦春自治旗"},{"value":"150724","label":"鄂温克族自治旗"},{"value":"150725","label":"陈巴尔虎旗"},{"value":"150726","label":"新巴尔虎左旗"},{"value":"150727","label":"新巴尔虎右旗"},{"value":"150781","label":"满洲里市"},{"value":"150782","label":"牙克石市"},{"value":"150783","label":"扎兰屯市"},{"value":"150784","label":"额尔古纳市"},{"value":"150785","label":"根河市"}]},{"value":"150800","label":"巴彦淖尔市","children":[{"value":"150802","label":"临河区"},{"value":"150821","label":"五原县"},{"value":"150822","label":"磴口县"},{"value":"150823","label":"乌拉特前旗"},{"value":"150824","label":"乌拉特中旗"},{"value":"150825","label":"乌拉特后旗"},{"value":"150826","label":"杭锦后旗"}]},{"value":"150900","label":"乌兰察布市","children":[{"value":"150902","label":"集宁区"},{"value":"150921","label":"卓资县"},{"value":"150922","label":"化德县"},{"value":"150923","label":"商都县"},{"value":"150924","label":"兴和县"},{"value":"150925","label":"凉城县"},{"value":"150926","label":"察哈尔右翼前旗"},{"value":"150927","label":"察哈尔右翼中旗"},{"value":"150928","label":"察哈尔右翼后旗"},{"value":"150929","label":"四子王旗"},{"value":"150981","label":"丰镇市"}]},{"value":"152200","label":"兴安盟","children":[{"value":"152201","label":"乌兰浩特市"},{"value":"152202","label":"阿尔山市"},{"value":"152221","label":"科尔沁右翼前旗"},{"value":"152222","label":"科尔沁右翼中旗"},{"value":"152223","label":"扎赉特旗"},{"value":"152224","label":"突泉县"}]},{"value":"152500","label":"锡林郭勒盟","children":[{"value":"152501","label":"二连浩特市"},{"value":"152502","label":"锡林浩特市"},{"value":"152522","label":"阿巴嘎旗"},{"value":"152523","label":"苏尼特左旗"},{"value":"152524","label":"苏尼特右旗"},{"value":"152525","label":"东乌珠穆沁旗"},{"value":"152526","label":"西乌珠穆沁旗"},{"value":"152527","label":"太仆寺旗"},{"value":"152528","label":"镶黄旗"},{"value":"152529","label":"正镶白旗"},{"value":"152530","label":"正蓝旗"},{"value":"152531","label":"多伦县"}]},{"value":"152900","label":"阿拉善盟","children":[{"value":"152921","label":"阿拉善左旗"},{"value":"152922","label":"阿拉善右旗"},{"value":"152923","label":"额济纳旗"}]}]},{"label":"辽宁省","value":"210000","children":[{"value":"210100","label":"沈阳市","children":[{"value":"210102","label":"和平区"},{"value":"210103","label":"沈河区"},{"value":"210104","label":"大东区"},{"value":"210105","label":"皇姑区"},{"value":"210106","label":"铁西区"},{"value":"210111","label":"苏家屯区"},{"value":"210112","label":"东陵区"},{"value":"210113","label":"新城子区"},{"value":"210114","label":"于洪区"},{"value":"210122","label":"辽中县"},{"value":"210123","label":"康平县"},{"value":"210124","label":"法库县"},{"value":"210181","label":"新民市"},{"value":"210182","label":"浑南新区"},{"value":"210183","label":"张士开发区"},{"value":"210184","label":"沈北新区"}]},{"value":"210200","label":"大连市","children":[{"value":"210202","label":"中山区"},{"value":"210203","label":"西岗区"},{"value":"210204","label":"沙河口区"},{"value":"210211","label":"甘井子区"},{"value":"210212","label":"旅顺口区"},{"value":"210213","label":"金州区"},{"value":"210224","label":"长海县"},{"value":"210251","label":"开发区"},{"value":"210281","label":"瓦房店市"},{"value":"210282","label":"普兰店市"},{"value":"210283","label":"庄河市"},{"value":"210297","label":"岭前区"}]},{"value":"210300","label":"鞍山市","children":[{"value":"210302","label":"铁东区"},{"value":"210303","label":"铁西区"},{"value":"210304","label":"立山区"},{"value":"210311","label":"千山区"},{"value":"210321","label":"台安县"},{"value":"210323","label":"岫岩满族自治县"},{"value":"210351","label":"高新区"},{"value":"210381","label":"海城市"}]},{"value":"210400","label":"抚顺市","children":[{"value":"210402","label":"新抚区"},{"value":"210403","label":"东洲区"},{"value":"210404","label":"望花区"},{"value":"210411","label":"顺城区"},{"value":"210421","label":"抚顺县"},{"value":"210422","label":"新宾满族自治县"},{"value":"210423","label":"清原满族自治县"}]},{"value":"210500","label":"本溪市","children":[{"value":"210502","label":"平山区"},{"value":"210503","label":"溪湖区"},{"value":"210504","label":"明山区"},{"value":"210505","label":"南芬区"},{"value":"210521","label":"本溪满族自治县"},{"value":"210522","label":"桓仁满族自治县"}]},{"value":"210600","label":"丹东市","children":[{"value":"210602","label":"元宝区"},{"value":"210603","label":"振兴区"},{"value":"210604","label":"振安区"},{"value":"210624","label":"宽甸满族自治县"},{"value":"210681","label":"东港市"},{"value":"210682","label":"凤城市"}]},{"value":"210700","label":"锦州市","children":[{"value":"210702","label":"古塔区"},{"value":"210703","label":"凌河区"},{"value":"210711","label":"太和区"},{"value":"210726","label":"黑山县"},{"value":"210727","label":"义县"},{"value":"210781","label":"凌海市"},{"value":"210782","label":"北镇市"}]},{"value":"210800","label":"营口市","children":[{"value":"210802","label":"站前区"},{"value":"210803","label":"西市区"},{"value":"210804","label":"鲅鱼圈区"},{"value":"210811","label":"老边区"},{"value":"210881","label":"盖州市"},{"value":"210882","label":"大石桥市"}]},{"value":"210900","label":"阜新市","children":[{"value":"210902","label":"海州区"},{"value":"210903","label":"新邱区"},{"value":"210904","label":"太平区"},{"value":"210905","label":"清河门区"},{"value":"210911","label":"细河区"},{"value":"210921","label":"阜新蒙古族自治县"},{"value":"210922","label":"彰武县"}]},{"value":"211000","label":"辽阳市","children":[{"value":"211002","label":"白塔区"},{"value":"211003","label":"文圣区"},{"value":"211004","label":"宏伟区"},{"value":"211005","label":"弓长岭区"},{"value":"211011","label":"太子河区"},{"value":"211021","label":"辽阳县"},{"value":"211081","label":"灯塔市"}]},{"value":"211100","label":"盘锦市","children":[{"value":"211102","label":"双台子区"},{"value":"211103","label":"兴隆台区"},{"value":"211121","label":"大洼县"},{"value":"211122","label":"盘山县"}]},{"value":"211200","label":"铁岭市","children":[{"value":"211202","label":"银州区"},{"value":"211204","label":"清河区"},{"value":"211221","label":"铁岭县"},{"value":"211223","label":"西丰县"},{"value":"211224","label":"昌图县"},{"value":"211281","label":"调兵山市"},{"value":"211282","label":"开原市"}]},{"value":"211300","label":"朝阳市","children":[{"value":"211302","label":"双塔区"},{"value":"211303","label":"龙城区"},{"value":"211321","label":"朝阳县"},{"value":"211322","label":"建平县"},{"value":"211324","label":"喀喇沁左翼蒙古族自治县"},{"value":"211381","label":"北票市"},{"value":"211382","label":"凌源市"}]},{"value":"211400","label":"葫芦岛市","children":[{"value":"211402","label":"连山区"},{"value":"211403","label":"龙港区"},{"value":"211404","label":"南票区"},{"value":"211421","label":"绥中县"},{"value":"211422","label":"建昌县"},{"value":"211481","label":"兴城市"}]}]},{"label":"吉林省","value":"220000","children":[{"value":"220100","label":"长春市","children":[{"value":"220102","label":"南关区"},{"value":"220103","label":"宽城区"},{"value":"220104","label":"朝阳区"},{"value":"220105","label":"二道区"},{"value":"220106","label":"绿园区"},{"value":"220112","label":"双阳区"},{"value":"220122","label":"农安县"},{"value":"220181","label":"九台市"},{"value":"220182","label":"榆树市"},{"value":"220183","label":"德惠市"},{"value":"220184","label":"高新技术产业开发区"},{"value":"220185","label":"汽车产业开发区"},{"value":"220186","label":"经济技术开发区"},{"value":"220187","label":"净月旅游开发区"}]},{"value":"220200","label":"吉林市","children":[{"value":"220202","label":"昌邑区"},{"value":"220203","label":"龙潭区"},{"value":"220204","label":"船营区"},{"value":"220211","label":"丰满区"},{"value":"220221","label":"永吉县"},{"value":"220281","label":"蛟河市"},{"value":"220282","label":"桦甸市"},{"value":"220283","label":"舒兰市"},{"value":"220284","label":"磐石市"}]},{"value":"220300","label":"四平市","children":[{"value":"220302","label":"铁西区"},{"value":"220303","label":"铁东区"},{"value":"220322","label":"梨树县"},{"value":"220323","label":"伊通满族自治县"},{"value":"220381","label":"公主岭市"},{"value":"220382","label":"双辽市"}]},{"value":"220400","label":"辽源市","children":[{"value":"220402","label":"龙山区"},{"value":"220403","label":"西安区"},{"value":"220421","label":"东丰县"},{"value":"220422","label":"东辽县"}]},{"value":"220500","label":"通化市","children":[{"value":"220502","label":"东昌区"},{"value":"220503","label":"二道江区"},{"value":"220521","label":"通化县"},{"value":"220523","label":"辉南县"},{"value":"220524","label":"柳河县"},{"value":"220581","label":"梅河口市"},{"value":"220582","label":"集安市"}]},{"value":"220600","label":"白山市","children":[{"value":"220602","label":"八道江区"},{"value":"220621","label":"抚松县"},{"value":"220622","label":"靖宇县"},{"value":"220623","label":"长白朝鲜族自治县"},{"value":"220625","label":"江源市"},{"value":"220681","label":"临江市"}]},{"value":"220700","label":"松原市","children":[{"value":"220702","label":"宁江区"},{"value":"220721","label":"前郭尔罗斯蒙古族自治县"},{"value":"220722","label":"长岭县"},{"value":"220723","label":"乾安县"},{"value":"220724","label":"扶余县"}]},{"value":"220800","label":"白城市","children":[{"value":"220802","label":"洮北区"},{"value":"220821","label":"镇赉县"},{"value":"220822","label":"通榆县"},{"value":"220881","label":"洮南市"},{"value":"220882","label":"大安市"}]},{"value":"222400","label":"延边朝鲜族自治州","children":[{"value":"222401","label":"延吉市"},{"value":"222402","label":"图们市"},{"value":"222403","label":"敦化市"},{"value":"222404","label":"珲春市"},{"value":"222405","label":"龙井市"},{"value":"222406","label":"和龙市"},{"value":"222424","label":"汪清县"},{"value":"222426","label":"安图县"}]}]},{"label":"黑龙江省","value":"230000","children":[{"value":"230100","label":"哈尔滨市","children":[{"value":"230102","label":"道里区"},{"value":"230103","label":"南岗区"},{"value":"230104","label":"道外区"},{"value":"230106","label":"香坊区"},{"value":"230107","label":"动力区"},{"value":"230108","label":"平房区"},{"value":"230109","label":"松北区"},{"value":"230111","label":"呼兰区"},{"value":"230123","label":"依兰县"},{"value":"230124","label":"方正县"},{"value":"230125","label":"宾县"},{"value":"230126","label":"巴彦县"},{"value":"230127","label":"木兰县"},{"value":"230128","label":"通河县"},{"value":"230129","label":"延寿县"},{"value":"230181","label":"阿城市"},{"value":"230182","label":"双城市"},{"value":"230183","label":"尚志市"},{"value":"230184","label":"五常市"},{"value":"230185","label":"阿城市"}]},{"value":"230200","label":"齐齐哈尔市","children":[{"value":"230202","label":"龙沙区"},{"value":"230203","label":"建华区"},{"value":"230204","label":"铁锋区"},{"value":"230205","label":"昂昂溪区"},{"value":"230206","label":"富拉尔基区"},{"value":"230207","label":"碾子山区"},{"value":"230208","label":"梅里斯达斡尔族区"},{"value":"230221","label":"龙江县"},{"value":"230223","label":"依安县"},{"value":"230224","label":"泰来县"},{"value":"230225","label":"甘南县"},{"value":"230227","label":"富裕县"},{"value":"230229","label":"克山县"},{"value":"230230","label":"克东县"},{"value":"230231","label":"拜泉县"},{"value":"230281","label":"讷河市"}]},{"value":"230300","label":"鸡西市","children":[{"value":"230302","label":"鸡冠区"},{"value":"230303","label":"恒山区"},{"value":"230304","label":"滴道区"},{"value":"230305","label":"梨树区"},{"value":"230306","label":"城子河区"},{"value":"230307","label":"麻山区"},{"value":"230321","label":"鸡东县"},{"value":"230381","label":"虎林市"},{"value":"230382","label":"密山市"}]},{"value":"230400","label":"鹤岗市","children":[{"value":"230402","label":"向阳区"},{"value":"230403","label":"工农区"},{"value":"230404","label":"南山区"},{"value":"230405","label":"兴安区"},{"value":"230406","label":"东山区"},{"value":"230407","label":"兴山区"},{"value":"230421","label":"萝北县"},{"value":"230422","label":"绥滨县"}]},{"value":"230500","label":"双鸭山市","children":[{"value":"230502","label":"尖山区"},{"value":"230503","label":"岭东区"},{"value":"230505","label":"四方台区"},{"value":"230506","label":"宝山区"},{"value":"230521","label":"集贤县"},{"value":"230522","label":"友谊县"},{"value":"230523","label":"宝清县"},{"value":"230524","label":"饶河县"}]},{"value":"230600","label":"大庆市","children":[{"value":"230602","label":"萨尔图区"},{"value":"230603","label":"龙凤区"},{"value":"230604","label":"让胡路区"},{"value":"230605","label":"红岗区"},{"value":"230606","label":"大同区"},{"value":"230621","label":"肇州县"},{"value":"230622","label":"肇源县"},{"value":"230623","label":"林甸县"},{"value":"230624","label":"杜尔伯特蒙古族自治县"}]},{"value":"230700","label":"伊春市","children":[{"value":"230702","label":"伊春区"},{"value":"230703","label":"南岔区"},{"value":"230704","label":"友好区"},{"value":"230705","label":"西林区"},{"value":"230706","label":"翠峦区"},{"value":"230707","label":"新青区"},{"value":"230708","label":"美溪区"},{"value":"230709","label":"金山屯区"},{"value":"230710","label":"五营区"},{"value":"230711","label":"乌马河区"},{"value":"230712","label":"汤旺河区"},{"value":"230713","label":"带岭区"},{"value":"230714","label":"乌伊岭区"},{"value":"230715","label":"红星区"},{"value":"230716","label":"上甘岭区"},{"value":"230722","label":"嘉荫县"},{"value":"230781","label":"铁力市"}]},{"value":"230800","label":"佳木斯市","children":[{"value":"230802","label":"永红区"},{"value":"230803","label":"向阳区"},{"value":"230804","label":"前进区"},{"value":"230805","label":"东风区"},{"value":"230811","label":"郊区"},{"value":"230822","label":"桦南县"},{"value":"230826","label":"桦川县"},{"value":"230828","label":"汤原县"},{"value":"230833","label":"抚远县"},{"value":"230881","label":"同江市"},{"value":"230882","label":"富锦市"}]},{"value":"230900","label":"七台河市","children":[{"value":"230902","label":"新兴区"},{"value":"230903","label":"桃山区"},{"value":"230904","label":"茄子河区"},{"value":"230921","label":"勃利县"}]},{"value":"231000","label":"牡丹江市","children":[{"value":"231002","label":"东安区"},{"value":"231003","label":"阳明区"},{"value":"231004","label":"爱民区"},{"value":"231005","label":"西安区"},{"value":"231024","label":"东宁县"},{"value":"231025","label":"林口县"},{"value":"231081","label":"绥芬河市"},{"value":"231083","label":"海林市"},{"value":"231084","label":"宁安市"},{"value":"231085","label":"穆棱市"}]},{"value":"231100","label":"黑河市","children":[{"value":"231102","label":"爱辉区"},{"value":"231121","label":"嫩江县"},{"value":"231123","label":"逊克县"},{"value":"231124","label":"孙吴县"},{"value":"231181","label":"北安市"},{"value":"231182","label":"五大连池市"}]},{"value":"231200","label":"绥化市","children":[{"value":"231202","label":"北林区"},{"value":"231221","label":"望奎县"},{"value":"231222","label":"兰西县"},{"value":"231223","label":"青冈县"},{"value":"231224","label":"庆安县"},{"value":"231225","label":"明水县"},{"value":"231226","label":"绥棱县"},{"value":"231281","label":"安达市"},{"value":"231282","label":"肇东市"},{"value":"231283","label":"海伦市"}]},{"value":"232700","label":"大兴安岭地区","children":[{"value":"232721","label":"呼玛县"},{"value":"232722","label":"塔河县"},{"value":"232723","label":"漠河县"},{"value":"232724","label":"加格达奇区"}]}]},{"label":"上海","value":"310000","children":[{"value":"310100","label":"上海市","children":[{"value":"310101","label":"黄浦区"},{"value":"310103","label":"卢湾区"},{"value":"310104","label":"徐汇区"},{"value":"310105","label":"长宁区"},{"value":"310106","label":"静安区"},{"value":"310107","label":"普陀区"},{"value":"310108","label":"闸北区"},{"value":"310109","label":"虹口区"},{"value":"310110","label":"杨浦区"},{"value":"310112","label":"闵行区"},{"value":"310113","label":"宝山区"},{"value":"310114","label":"嘉定区"},{"value":"310115","label":"浦东新区"},{"value":"310116","label":"金山区"},{"value":"310117","label":"松江区"},{"value":"310118","label":"青浦区"},{"value":"310119","label":"南汇区"},{"value":"310120","label":"奉贤区"},{"value":"310152","label":"川沙区"},{"value":"310230","label":"崇明县"}]}]},{"label":"江苏省","value":"320000","children":[{"value":"320100","label":"南京市","children":[{"value":"320102","label":"玄武区"},{"value":"320103","label":"白下区"},{"value":"320104","label":"秦淮区"},{"value":"320105","label":"建邺区"},{"value":"320106","label":"鼓楼区"},{"value":"320107","label":"下关区"},{"value":"320111","label":"浦口区"},{"value":"320113","label":"栖霞区"},{"value":"320114","label":"雨花台区"},{"value":"320115","label":"江宁区"},{"value":"320116","label":"六合区"},{"value":"320124","label":"溧水县"},{"value":"320125","label":"高淳县"}]},{"value":"320200","label":"无锡市","children":[{"value":"320202","label":"崇安区"},{"value":"320203","label":"南长区"},{"value":"320204","label":"北塘区"},{"value":"320205","label":"锡山区"},{"value":"320206","label":"惠山区"},{"value":"320211","label":"滨湖区"},{"value":"320281","label":"江阴市"},{"value":"320282","label":"宜兴市"},{"value":"320296","label":"新区"}]},{"value":"320300","label":"徐州市","children":[{"value":"320302","label":"鼓楼区"},{"value":"320303","label":"云龙区"},{"value":"320304","label":"九里区"},{"value":"320305","label":"贾汪区"},{"value":"320311","label":"泉山区"},{"value":"320321","label":"丰县"},{"value":"320322","label":"沛县"},{"value":"320323","label":"铜山县"},{"value":"320324","label":"睢宁县"},{"value":"320381","label":"新沂市"},{"value":"320382","label":"邳州市"}]},{"value":"320400","label":"常州市","children":[{"value":"320402","label":"天宁区"},{"value":"320404","label":"钟楼区"},{"value":"320405","label":"戚墅堰区"},{"value":"320411","label":"新北区"},{"value":"320412","label":"武进区"},{"value":"320481","label":"溧阳市"},{"value":"320482","label":"金坛市"}]},{"value":"320500","label":"苏州市","children":[{"value":"320502","label":"沧浪区"},{"value":"320503","label":"平江区"},{"value":"320504","label":"金阊区"},{"value":"320505","label":"虎丘区"},{"value":"320506","label":"吴中区"},{"value":"320507","label":"相城区"},{"value":"320581","label":"常熟市"},{"value":"320582","label":"张家港市"},{"value":"320583","label":"昆山市"},{"value":"320584","label":"吴江市"},{"value":"320585","label":"太仓市"},{"value":"320594","label":"新区"},{"value":"320595","label":"园区"}]},{"value":"320600","label":"南通市","children":[{"value":"320602","label":"崇川区"},{"value":"320611","label":"港闸区"},{"value":"320612","label":"通州区"},{"value":"320621","label":"海安县"},{"value":"320623","label":"如东县"},{"value":"320681","label":"启东市"},{"value":"320682","label":"如皋市"},{"value":"320683","label":"通州市"},{"value":"320684","label":"海门市"},{"value":"320693","label":"开发区"}]},{"value":"320700","label":"连云港市","children":[{"value":"320703","label":"连云区"},{"value":"320705","label":"新浦区"},{"value":"320706","label":"海州区"},{"value":"320721","label":"赣榆县"},{"value":"320722","label":"东海县"},{"value":"320723","label":"灌云县"},{"value":"320724","label":"灌南县"}]},{"value":"320800","label":"淮安市","children":[{"value":"320802","label":"清河区"},{"value":"320803","label":"楚州区"},{"value":"320804","label":"淮阴区"},{"value":"320811","label":"清浦区"},{"value":"320826","label":"涟水县"},{"value":"320829","label":"洪泽县"},{"value":"320830","label":"盱眙县"},{"value":"320831","label":"金湖县"}]},{"value":"320900","label":"盐城市","children":[{"value":"320902","label":"亭湖区"},{"value":"320903","label":"盐都区"},{"value":"320921","label":"响水县"},{"value":"320922","label":"滨海县"},{"value":"320923","label":"阜宁县"},{"value":"320924","label":"射阳县"},{"value":"320925","label":"建湖县"},{"value":"320981","label":"东台市"},{"value":"320982","label":"大丰市"}]},{"value":"321000","label":"扬州市","children":[{"value":"321002","label":"广陵区"},{"value":"321003","label":"邗江区"},{"value":"321011","label":"维扬区"},{"value":"321023","label":"宝应县"},{"value":"321081","label":"仪征市"},{"value":"321084","label":"高邮市"},{"value":"321088","label":"江都市"},{"value":"321092","label":"经济开发区"}]},{"value":"321100","label":"镇江市","children":[{"value":"321102","label":"京口区"},{"value":"321111","label":"润州区"},{"value":"321112","label":"丹徒区"},{"value":"321181","label":"丹阳市"},{"value":"321182","label":"扬中市"},{"value":"321183","label":"句容市"}]},{"value":"321200","label":"泰州市","children":[{"value":"321202","label":"海陵区"},{"value":"321203","label":"高港区"},{"value":"321281","label":"兴化市"},{"value":"321282","label":"靖江市"},{"value":"321283","label":"泰兴市"},{"value":"321284","label":"姜堰市"}]},{"value":"321300","label":"宿迁市","children":[{"value":"321302","label":"宿城区"},{"value":"321311","label":"宿豫区"},{"value":"321322","label":"沭阳县"},{"value":"321323","label":"泗阳县"},{"value":"321324","label":"泗洪县"}]}]},{"label":"浙江省","value":"330000","children":[{"value":"330100","label":"杭州市","children":[{"value":"330102","label":"上城区"},{"value":"330103","label":"下城区"},{"value":"330104","label":"江干区"},{"value":"330105","label":"拱墅区"},{"value":"330106","label":"西湖区"},{"value":"330108","label":"滨江区"},{"value":"330109","label":"萧山区"},{"value":"330110","label":"余杭区"},{"value":"330122","label":"桐庐县"},{"value":"330127","label":"淳安县"},{"value":"330182","label":"建德市"},{"value":"330183","label":"富阳市"},{"value":"330185","label":"临安市"}]},{"value":"330200","label":"宁波市","children":[{"value":"330203","label":"海曙区"},{"value":"330204","label":"江东区"},{"value":"330205","label":"江北区"},{"value":"330206","label":"北仑区"},{"value":"330211","label":"镇海区"},{"value":"330212","label":"鄞州区"},{"value":"330225","label":"象山县"},{"value":"330226","label":"宁海县"},{"value":"330281","label":"余姚市"},{"value":"330282","label":"慈溪市"},{"value":"330283","label":"奉化市"}]},{"value":"330300","label":"温州市","children":[{"value":"330302","label":"鹿城区"},{"value":"330303","label":"龙湾区"},{"value":"330304","label":"瓯海区"},{"value":"330322","label":"洞头县"},{"value":"330324","label":"永嘉县"},{"value":"330326","label":"平阳县"},{"value":"330327","label":"苍南县"},{"value":"330328","label":"文成县"},{"value":"330329","label":"泰顺县"},{"value":"330381","label":"瑞安市"},{"value":"330382","label":"乐清市"}]},{"value":"330400","label":"嘉兴市","children":[{"value":"330402","label":"南湖区"},{"value":"330411","label":"秀洲区"},{"value":"330421","label":"嘉善县"},{"value":"330424","label":"海盐县"},{"value":"330481","label":"海宁市"},{"value":"330482","label":"平湖市"},{"value":"330483","label":"桐乡市"}]},{"value":"330500","label":"湖州市","children":[{"value":"330502","label":"吴兴区"},{"value":"330503","label":"南浔区"},{"value":"330521","label":"德清县"},{"value":"330522","label":"长兴县"},{"value":"330523","label":"安吉县"}]},{"value":"330600","label":"绍兴市","children":[{"value":"330602","label":"越城区"},{"value":"330621","label":"绍兴县"},{"value":"330624","label":"新昌县"},{"value":"330681","label":"诸暨市"},{"value":"330682","label":"上虞市"},{"value":"330683","label":"嵊州市"}]},{"value":"330700","label":"金华市","children":[{"value":"330702","label":"婺城区"},{"value":"330703","label":"金东区"},{"value":"330723","label":"武义县"},{"value":"330726","label":"浦江县"},{"value":"330727","label":"磐安县"},{"value":"330781","label":"兰溪市"},{"value":"330782","label":"义乌市"},{"value":"330783","label":"东阳市"},{"value":"330784","label":"永康市"}]},{"value":"330800","label":"衢州市","children":[{"value":"330802","label":"柯城区"},{"value":"330803","label":"衢江区"},{"value":"330822","label":"常山县"},{"value":"330824","label":"开化县"},{"value":"330825","label":"龙游县"},{"value":"330881","label":"江山市"}]},{"value":"330900","label":"舟山市","children":[{"value":"330902","label":"定海区"},{"value":"330903","label":"普陀区"},{"value":"330921","label":"岱山县"},{"value":"330922","label":"嵊泗县"}]},{"value":"331000","label":"台州市","children":[{"value":"331002","label":"椒江区"},{"value":"331003","label":"黄岩区"},{"value":"331004","label":"路桥区"},{"value":"331021","label":"玉环县"},{"value":"331022","label":"三门县"},{"value":"331023","label":"天台县"},{"value":"331024","label":"仙居县"},{"value":"331081","label":"温岭市"},{"value":"331082","label":"临海市"}]},{"value":"331100","label":"丽水市","children":[{"value":"331102","label":"莲都区"},{"value":"331121","label":"青田县"},{"value":"331122","label":"缙云县"},{"value":"331123","label":"遂昌县"},{"value":"331124","label":"松阳县"},{"value":"331125","label":"云和县"},{"value":"331126","label":"庆元县"},{"value":"331127","label":"景宁畲族自治县"},{"value":"331181","label":"龙泉市"}]}]},{"label":"安徽省","value":"340000","children":[{"value":"340100","label":"合肥市","children":[{"value":"340102","label":"瑶海区"},{"value":"340103","label":"庐阳区"},{"value":"340104","label":"蜀山区"},{"value":"340111","label":"包河区"},{"value":"340121","label":"长丰县"},{"value":"340122","label":"肥东县"},{"value":"340123","label":"肥西县"},{"value":"340151","label":"高新区"},{"value":"340191","label":"中区"},{"value":"341400","label":"巢湖市"},{"value":"341402","label":"居巢区"},{"value":"341421","label":"庐江县"}]},{"value":"340200","label":"芜湖市","children":[{"value":"340202","label":"镜湖区"},{"value":"340203","label":"弋江区"},{"value":"340207","label":"鸠江区"},{"value":"340208","label":"三山区"},{"value":"340221","label":"芜湖县"},{"value":"340222","label":"繁昌县"},{"value":"340223","label":"南陵县"},{"value":"341422","label":"无为县"}]},{"value":"340300","label":"蚌埠市","children":[{"value":"340302","label":"龙子湖区"},{"value":"340303","label":"蚌山区"},{"value":"340304","label":"禹会区"},{"value":"340311","label":"淮上区"},{"value":"340321","label":"怀远县"},{"value":"340322","label":"五河县"},{"value":"340323","label":"固镇县"}]},{"value":"340400","label":"淮南市","children":[{"value":"340402","label":"大通区"},{"value":"340403","label":"田家庵区"},{"value":"340404","label":"谢家集区"},{"value":"340405","label":"八公山区"},{"value":"340406","label":"潘集区"},{"value":"340421","label":"凤台县"}]},{"value":"340500","label":"马鞍山市","children":[{"value":"340502","label":"金家庄区"},{"value":"340503","label":"花山区"},{"value":"340504","label":"雨山区"},{"value":"340521","label":"当涂县"},{"value":"341423","label":"含山县"},{"value":"341424","label":"和县"}]},{"value":"340600","label":"淮北市","children":[{"value":"340602","label":"杜集区"},{"value":"340603","label":"相山区"},{"value":"340604","label":"烈山区"},{"value":"340621","label":"濉溪县"}]},{"value":"340700","label":"铜陵市","children":[{"value":"340702","label":"铜官山区"},{"value":"340703","label":"狮子山区"},{"value":"340711","label":"郊区"},{"value":"340721","label":"铜陵县"}]},{"value":"340800","label":"安庆市","children":[{"value":"340802","label":"迎江区"},{"value":"340803","label":"大观区"},{"value":"340811","label":"宜秀区"},{"value":"340822","label":"怀宁县"},{"value":"340823","label":"枞阳县"},{"value":"340824","label":"潜山县"},{"value":"340825","label":"太湖县"},{"value":"340826","label":"宿松县"},{"value":"340827","label":"望江县"},{"value":"340828","label":"岳西县"},{"value":"340881","label":"桐城市"}]},{"value":"341000","label":"黄山市","children":[{"value":"341002","label":"屯溪区"},{"value":"341003","label":"黄山区"},{"value":"341004","label":"徽州区"},{"value":"341021","label":"歙县"},{"value":"341022","label":"休宁县"},{"value":"341023","label":"黟县"},{"value":"341024","label":"祁门县"}]},{"value":"341100","label":"滁州市","children":[{"value":"341102","label":"琅琊区"},{"value":"341103","label":"南谯区"},{"value":"341122","label":"来安县"},{"value":"341124","label":"全椒县"},{"value":"341125","label":"定远县"},{"value":"341126","label":"凤阳县"},{"value":"341181","label":"天长市"},{"value":"341182","label":"明光市"}]},{"value":"341200","label":"阜阳市","children":[{"value":"341202","label":"颍州区"},{"value":"341203","label":"颍东区"},{"value":"341204","label":"颍泉区"},{"value":"341221","label":"临泉县"},{"value":"341222","label":"太和县"},{"value":"341225","label":"阜南县"},{"value":"341226","label":"颍上县"},{"value":"341282","label":"界首市"}]},{"value":"341300","label":"宿州市","children":[{"value":"341302","label":"埇桥区"},{"value":"341321","label":"砀山县"},{"value":"341322","label":"萧县"},{"value":"341323","label":"灵璧县"},{"value":"341324","label":"泗县"}]},{"value":"341500","label":"六安市","children":[{"value":"341502","label":"金安区"},{"value":"341503","label":"裕安区"},{"value":"341521","label":"寿县"},{"value":"341522","label":"霍邱县"},{"value":"341523","label":"舒城县"},{"value":"341524","label":"金寨县"},{"value":"341525","label":"霍山县"}]},{"value":"341600","label":"亳州市","children":[{"value":"341602","label":"谯城区"},{"value":"341621","label":"涡阳县"},{"value":"341622","label":"蒙城县"},{"value":"341623","label":"利辛县"}]},{"value":"341700","label":"池州市","children":[{"value":"341702","label":"贵池区"},{"value":"341721","label":"东至县"},{"value":"341722","label":"石台县"},{"value":"341723","label":"青阳县"}]},{"value":"341800","label":"宣城市","children":[{"value":"341802","label":"宣州区"},{"value":"341821","label":"郎溪县"},{"value":"341822","label":"广德县"},{"value":"341823","label":"泾县"},{"value":"341824","label":"绩溪县"},{"value":"341825","label":"旌德县"},{"value":"341881","label":"宁国市"}]}]},{"label":"福建省","value":"350000","children":[{"value":"350100","label":"福州市","children":[{"value":"350102","label":"鼓楼区"},{"value":"350103","label":"台江区"},{"value":"350104","label":"仓山区"},{"value":"350105","label":"马尾区"},{"value":"350111","label":"晋安区"},{"value":"350121","label":"闽侯县"},{"value":"350122","label":"连江县"},{"value":"350123","label":"罗源县"},{"value":"350124","label":"闽清县"},{"value":"350125","label":"永泰县"},{"value":"350128","label":"平潭县"},{"value":"350181","label":"福清市"},{"value":"350182","label":"长乐市"}]},{"value":"350200","label":"厦门市","children":[{"value":"350203","label":"思明区"},{"value":"350205","label":"海沧区"},{"value":"350206","label":"湖里区"},{"value":"350211","label":"集美区"},{"value":"350212","label":"同安区"},{"value":"350213","label":"翔安区"}]},{"value":"350300","label":"莆田市","children":[{"value":"350302","label":"城厢区"},{"value":"350303","label":"涵江区"},{"value":"350304","label":"荔城区"},{"value":"350305","label":"秀屿区"},{"value":"350322","label":"仙游县"}]},{"value":"350400","label":"三明市","children":[{"value":"350402","label":"梅列区"},{"value":"350403","label":"三元区"},{"value":"350421","label":"明溪县"},{"value":"350423","label":"清流县"},{"value":"350424","label":"宁化县"},{"value":"350425","label":"大田县"},{"value":"350426","label":"尤溪县"},{"value":"350427","label":"沙县"},{"value":"350428","label":"将乐县"},{"value":"350429","label":"泰宁县"},{"value":"350430","label":"建宁县"},{"value":"350481","label":"永安市"}]},{"value":"350500","label":"泉州市","children":[{"value":"350502","label":"鲤城区"},{"value":"350503","label":"丰泽区"},{"value":"350504","label":"洛江区"},{"value":"350505","label":"泉港区"},{"value":"350521","label":"惠安县"},{"value":"350524","label":"安溪县"},{"value":"350525","label":"永春县"},{"value":"350526","label":"德化县"},{"value":"350527","label":"金门县"},{"value":"350581","label":"石狮市"},{"value":"350582","label":"晋江市"},{"value":"350583","label":"南安市"}]},{"value":"350600","label":"漳州市","children":[{"value":"350602","label":"芗城区"},{"value":"350603","label":"龙文区"},{"value":"350622","label":"云霄县"},{"value":"350623","label":"漳浦县"},{"value":"350624","label":"诏安县"},{"value":"350625","label":"长泰县"},{"value":"350626","label":"东山县"},{"value":"350627","label":"南靖县"},{"value":"350628","label":"平和县"},{"value":"350629","label":"华安县"},{"value":"350681","label":"龙海市"}]},{"value":"350700","label":"南平市","children":[{"value":"350702","label":"延平区"},{"value":"350721","label":"顺昌县"},{"value":"350722","label":"浦城县"},{"value":"350723","label":"光泽县"},{"value":"350724","label":"松溪县"},{"value":"350725","label":"政和县"},{"value":"350781","label":"邵武市"},{"value":"350782","label":"武夷山市"},{"value":"350783","label":"建瓯市"},{"value":"350784","label":"建阳市"}]},{"value":"350800","label":"龙岩市","children":[{"value":"350802","label":"新罗区"},{"value":"350821","label":"长汀县"},{"value":"350822","label":"永定县"},{"value":"350823","label":"上杭县"},{"value":"350824","label":"武平县"},{"value":"350825","label":"连城县"},{"value":"350881","label":"漳平市"}]},{"value":"350900","label":"宁德市","children":[{"value":"350902","label":"蕉城区"},{"value":"350921","label":"霞浦县"},{"value":"350922","label":"古田县"},{"value":"350923","label":"屏南县"},{"value":"350924","label":"寿宁县"},{"value":"350925","label":"周宁县"},{"value":"350926","label":"柘荣县"},{"value":"350981","label":"福安市"},{"value":"350982","label":"福鼎市"}]}]},{"label":"江西省","value":"360000","children":[{"value":"360100","label":"南昌市","children":[{"value":"360102","label":"东湖区"},{"value":"360103","label":"西湖区"},{"value":"360104","label":"青云谱区"},{"value":"360105","label":"湾里区"},{"value":"360111","label":"青山湖区"},{"value":"360121","label":"南昌县"},{"value":"360122","label":"新建县"},{"value":"360123","label":"安义县"},{"value":"360124","label":"进贤县"},{"value":"360125","label":"红谷滩新区"},{"value":"360126","label":"经济技术开发区"},{"value":"360127","label":"昌北区"}]},{"value":"360200","label":"景德镇市","children":[{"value":"360202","label":"昌江区"},{"value":"360203","label":"珠山区"},{"value":"360222","label":"浮梁县"},{"value":"360281","label":"乐平市"}]},{"value":"360300","label":"萍乡市","children":[{"value":"360302","label":"安源区"},{"value":"360313","label":"湘东区"},{"value":"360321","label":"莲花县"},{"value":"360322","label":"上栗县"},{"value":"360323","label":"芦溪县"}]},{"value":"360400","label":"九江市","children":[{"value":"360402","label":"庐山区"},{"value":"360403","label":"浔阳区"},{"value":"360421","label":"九江县"},{"value":"360423","label":"武宁县"},{"value":"360424","label":"修水县"},{"value":"360425","label":"永修县"},{"value":"360426","label":"德安县"},{"value":"360427","label":"星子县"},{"value":"360428","label":"都昌县"},{"value":"360429","label":"湖口县"},{"value":"360430","label":"彭泽县"},{"value":"360481","label":"瑞昌市"}]},{"value":"360500","label":"新余市","children":[{"value":"360502","label":"渝水区"},{"value":"360521","label":"分宜县"}]},{"value":"360600","label":"鹰潭市","children":[{"value":"360602","label":"月湖区"},{"value":"360622","label":"余江县"},{"value":"360681","label":"贵溪市"}]},{"value":"360700","label":"赣州市","children":[{"value":"360702","label":"章贡区"},{"value":"360721","label":"赣县"},{"value":"360722","label":"信丰县"},{"value":"360723","label":"大余县"},{"value":"360724","label":"上犹县"},{"value":"360725","label":"崇义县"},{"value":"360726","label":"安远县"},{"value":"360727","label":"龙南县"},{"value":"360728","label":"定南县"},{"value":"360729","label":"全南县"},{"value":"360730","label":"宁都县"},{"value":"360731","label":"于都县"},{"value":"360732","label":"兴国县"},{"value":"360733","label":"会昌县"},{"value":"360734","label":"寻乌县"},{"value":"360735","label":"石城县"},{"value":"360751","label":"黄金区"},{"value":"360781","label":"瑞金市"},{"value":"360782","label":"南康市"}]},{"value":"360800","label":"吉安市","children":[{"value":"360802","label":"吉州区"},{"value":"360803","label":"青原区"},{"value":"360821","label":"吉安县"},{"value":"360822","label":"吉水县"},{"value":"360823","label":"峡江县"},{"value":"360824","label":"新干县"},{"value":"360825","label":"永丰县"},{"value":"360826","label":"泰和县"},{"value":"360827","label":"遂川县"},{"value":"360828","label":"万安县"},{"value":"360829","label":"安福县"},{"value":"360830","label":"永新县"},{"value":"360881","label":"井冈山市"}]},{"value":"360900","label":"宜春市","children":[{"value":"360902","label":"袁州区"},{"value":"360921","label":"奉新县"},{"value":"360922","label":"万载县"},{"value":"360923","label":"上高县"},{"value":"360924","label":"宜丰县"},{"value":"360925","label":"靖安县"},{"value":"360926","label":"铜鼓县"},{"value":"360981","label":"丰城市"},{"value":"360982","label":"樟树市"},{"value":"360983","label":"高安市"}]},{"value":"361000","label":"抚州市","children":[{"value":"361002","label":"临川区"},{"value":"361021","label":"南城县"},{"value":"361022","label":"黎川县"},{"value":"361023","label":"南丰县"},{"value":"361024","label":"崇仁县"},{"value":"361025","label":"乐安县"},{"value":"361026","label":"宜黄县"},{"value":"361027","label":"金溪县"},{"value":"361028","label":"资溪县"},{"value":"361029","label":"东乡县"},{"value":"361030","label":"广昌县"}]},{"value":"361100","label":"上饶市","children":[{"value":"361102","label":"信州区"},{"value":"361121","label":"上饶县"},{"value":"361122","label":"广丰县"},{"value":"361123","label":"玉山县"},{"value":"361124","label":"铅山县"},{"value":"361125","label":"横峰县"},{"value":"361126","label":"弋阳县"},{"value":"361127","label":"余干县"},{"value":"361128","label":"鄱阳县"},{"value":"361129","label":"万年县"},{"value":"361130","label":"婺源县"},{"value":"361181","label":"德兴市"}]}]},{"label":"山东省","value":"370000","children":[{"value":"370100","label":"济南市","children":[{"value":"370102","label":"历下区"},{"value":"370103","label":"市中区"},{"value":"370104","label":"槐荫区"},{"value":"370105","label":"天桥区"},{"value":"370112","label":"历城区"},{"value":"370113","label":"长清区"},{"value":"370124","label":"平阴县"},{"value":"370125","label":"济阳县"},{"value":"370126","label":"商河县"},{"value":"370181","label":"章丘市"}]},{"value":"370200","label":"青岛市","children":[{"value":"370202","label":"市南区"},{"value":"370203","label":"市北区"},{"value":"370205","label":"四方区"},{"value":"370211","label":"黄岛区"},{"value":"370212","label":"崂山区"},{"value":"370213","label":"李沧区"},{"value":"370214","label":"城阳区"},{"value":"370251","label":"开发区"},{"value":"370281","label":"胶州市"},{"value":"370282","label":"即墨市"},{"value":"370283","label":"平度市"},{"value":"370284","label":"胶南市"},{"value":"370285","label":"莱西市"}]},{"value":"370300","label":"淄博市","children":[{"value":"370302","label":"淄川区"},{"value":"370303","label":"张店区"},{"value":"370304","label":"博山区"},{"value":"370305","label":"临淄区"},{"value":"370306","label":"周村区"},{"value":"370321","label":"桓台县"},{"value":"370322","label":"高青县"},{"value":"370323","label":"沂源县"}]},{"value":"370400","label":"枣庄市","children":[{"value":"370402","label":"市中区"},{"value":"370403","label":"薛城区"},{"value":"370404","label":"峄城区"},{"value":"370405","label":"台儿庄区"},{"value":"370406","label":"山亭区"},{"value":"370481","label":"滕州市"}]},{"value":"370500","label":"东营市","children":[{"value":"370502","label":"东营区"},{"value":"370503","label":"河口区"},{"value":"370521","label":"垦利县"},{"value":"370522","label":"利津县"},{"value":"370523","label":"广饶县"},{"value":"370589","label":"西城区"},{"value":"370590","label":"东城区"}]},{"value":"370600","label":"烟台市","children":[{"value":"370602","label":"芝罘区"},{"value":"370611","label":"福山区"},{"value":"370612","label":"牟平区"},{"value":"370613","label":"莱山区"},{"value":"370634","label":"长岛县"},{"value":"370681","label":"龙口市"},{"value":"370682","label":"莱阳市"},{"value":"370683","label":"莱州市"},{"value":"370684","label":"蓬莱市"},{"value":"370685","label":"招远市"},{"value":"370686","label":"栖霞市"},{"value":"370687","label":"海阳市"}]},{"value":"370700","label":"潍坊市","children":[{"value":"370702","label":"潍城区"},{"value":"370703","label":"寒亭区"},{"value":"370704","label":"坊子区"},{"value":"370705","label":"奎文区"},{"value":"370724","label":"临朐县"},{"value":"370725","label":"昌乐县"},{"value":"370751","label":"开发区"},{"value":"370781","label":"青州市"},{"value":"370782","label":"诸城市"},{"value":"370783","label":"寿光市"},{"value":"370784","label":"安丘市"},{"value":"370785","label":"高密市"},{"value":"370786","label":"昌邑市"}]},{"value":"370800","label":"济宁市","children":[{"value":"370802","label":"市中区"},{"value":"370811","label":"任城区"},{"value":"370826","label":"微山县"},{"value":"370827","label":"鱼台县"},{"value":"370828","label":"金乡县"},{"value":"370829","label":"嘉祥县"},{"value":"370830","label":"汶上县"},{"value":"370831","label":"泗水县"},{"value":"370832","label":"梁山县"},{"value":"370881","label":"曲阜市"},{"value":"370882","label":"兖州市"},{"value":"370883","label":"邹城市"}]},{"value":"370900","label":"泰安市","children":[{"value":"370902","label":"泰山区"},{"value":"370903","label":"岱岳区"},{"value":"370921","label":"宁阳县"},{"value":"370923","label":"东平县"},{"value":"370982","label":"新泰市"},{"value":"370983","label":"肥城市"}]},{"value":"371000","label":"威海市","children":[{"value":"371002","label":"环翠区"},{"value":"371081","label":"文登市"},{"value":"371082","label":"荣成市"},{"value":"371083","label":"乳山市"}]},{"value":"371100","label":"日照市","children":[{"value":"371102","label":"东港区"},{"value":"371103","label":"岚山区"},{"value":"371121","label":"五莲县"},{"value":"371122","label":"莒县"}]},{"value":"371200","label":"莱芜市","children":[{"value":"371202","label":"莱城区"},{"value":"371203","label":"钢城区"}]},{"value":"371300","label":"临沂市","children":[{"value":"371302","label":"兰山区"},{"value":"371311","label":"罗庄区"},{"value":"371312","label":"河东区"},{"value":"371321","label":"沂南县"},{"value":"371322","label":"郯城县"},{"value":"371323","label":"沂水县"},{"value":"371324","label":"苍山县"},{"value":"371325","label":"费县"},{"value":"371326","label":"平邑县"},{"value":"371327","label":"莒南县"},{"value":"371328","label":"蒙阴县"},{"value":"371329","label":"临沭县"}]},{"value":"371400","label":"德州市","children":[{"value":"371402","label":"德城区"},{"value":"371421","label":"陵县"},{"value":"371422","label":"宁津县"},{"value":"371423","label":"庆云县"},{"value":"371424","label":"临邑县"},{"value":"371425","label":"齐河县"},{"value":"371426","label":"平原县"},{"value":"371427","label":"夏津县"},{"value":"371428","label":"武城县"},{"value":"371451","label":"开发区"},{"value":"371481","label":"乐陵市"},{"value":"371482","label":"禹城市"}]},{"value":"371500","label":"聊城市","children":[{"value":"371502","label":"东昌府区"},{"value":"371521","label":"阳谷县"},{"value":"371522","label":"莘县"},{"value":"371523","label":"茌平县"},{"value":"371524","label":"东阿县"},{"value":"371525","label":"冠县"},{"value":"371526","label":"高唐县"},{"value":"371581","label":"临清市"}]},{"value":"371600","label":"滨州市","children":[{"value":"371602","label":"滨城区"},{"value":"371621","label":"惠民县"},{"value":"371622","label":"阳信县"},{"value":"371623","label":"无棣县"},{"value":"371624","label":"沾化县"},{"value":"371625","label":"博兴县"},{"value":"371626","label":"邹平县"}]},{"value":"371700","label":"菏泽市","children":[{"value":"371702","label":"牡丹区"},{"value":"371721","label":"曹县"},{"value":"371722","label":"单县"},{"value":"371723","label":"成武县"},{"value":"371724","label":"巨野县"},{"value":"371725","label":"郓城县"},{"value":"371726","label":"鄄城县"},{"value":"371727","label":"定陶县"},{"value":"371728","label":"东明县"}]}]},{"label":"河南省","value":"410000","children":[{"value":"410100","label":"郑州市","children":[{"value":"410102","label":"中原区"},{"value":"410103","label":"二七区"},{"value":"410104","label":"管城回族区"},{"value":"410105","label":"金水区"},{"value":"410106","label":"上街区"},{"value":"410108","label":"惠济区"},{"value":"410122","label":"中牟县"},{"value":"410181","label":"巩义市"},{"value":"410182","label":"荥阳市"},{"value":"410183","label":"新密市"},{"value":"410184","label":"新郑市"},{"value":"410185","label":"登封市"},{"value":"410186","label":"郑东新区"},{"value":"410187","label":"高新区"}]},{"value":"410200","label":"开封市","children":[{"value":"410202","label":"龙亭区"},{"value":"410203","label":"顺河回族区"},{"value":"410204","label":"鼓楼区"},{"value":"410205","label":"禹王台区"},{"value":"410211","label":"金明区"},{"value":"410221","label":"杞县"},{"value":"410222","label":"通许县"},{"value":"410223","label":"尉氏县"},{"value":"410224","label":"开封县"},{"value":"410225","label":"兰考县"}]},{"value":"410300","label":"洛阳市","children":[{"value":"410302","label":"老城区"},{"value":"410303","label":"西工区"},{"value":"410304","label":"廛河回族区"},{"value":"410305","label":"涧西区"},{"value":"410306","label":"吉利区"},{"value":"410307","label":"洛龙区"},{"value":"410322","label":"孟津县"},{"value":"410323","label":"新安县"},{"value":"410324","label":"栾川县"},{"value":"410325","label":"嵩县"},{"value":"410326","label":"汝阳县"},{"value":"410327","label":"宜阳县"},{"value":"410328","label":"洛宁县"},{"value":"410329","label":"伊川县"},{"value":"410381","label":"偃师市"},{"value":"471004","label":"高新区"}]},{"value":"410400","label":"平顶山市","children":[{"value":"410402","label":"新华区"},{"value":"410403","label":"卫东区"},{"value":"410404","label":"石龙区"},{"value":"410411","label":"湛河区"},{"value":"410421","label":"宝丰县"},{"value":"410422","label":"叶县"},{"value":"410423","label":"鲁山县"},{"value":"410425","label":"郏县"},{"value":"410481","label":"舞钢市"},{"value":"410482","label":"汝州市"}]},{"value":"410500","label":"安阳市","children":[{"value":"410502","label":"文峰区"},{"value":"410503","label":"北关区"},{"value":"410505","label":"殷都区"},{"value":"410506","label":"龙安区"},{"value":"410522","label":"安阳县"},{"value":"410523","label":"汤阴县"},{"value":"410526","label":"滑县"},{"value":"410527","label":"内黄县"},{"value":"410581","label":"林州市"}]},{"value":"410600","label":"鹤壁市","children":[{"value":"410602","label":"鹤山区"},{"value":"410603","label":"山城区"},{"value":"410611","label":"淇滨区"},{"value":"410621","label":"浚县"},{"value":"410622","label":"淇县"}]},{"value":"410700","label":"新乡市","children":[{"value":"410702","label":"红旗区"},{"value":"410703","label":"卫滨区"},{"value":"410704","label":"凤泉区"},{"value":"410711","label":"牧野区"},{"value":"410721","label":"新乡县"},{"value":"410724","label":"获嘉县"},{"value":"410725","label":"原阳县"},{"value":"410726","label":"延津县"},{"value":"410727","label":"封丘县"},{"value":"410728","label":"长垣县"},{"value":"410781","label":"卫辉市"},{"value":"410782","label":"辉县市"}]},{"value":"410800","label":"焦作市","children":[{"value":"410802","label":"解放区"},{"value":"410803","label":"中站区"},{"value":"410804","label":"马村区"},{"value":"410811","label":"山阳区"},{"value":"410821","label":"修武县"},{"value":"410822","label":"博爱县"},{"value":"410823","label":"武陟县"},{"value":"410825","label":"温县"},{"value":"410882","label":"沁阳市"},{"value":"410883","label":"孟州市"}]},{"value":"410881","label":"济源市"},{"value":"410900","label":"濮阳市","children":[{"value":"410902","label":"华龙区"},{"value":"410922","label":"清丰县"},{"value":"410923","label":"南乐县"},{"value":"410926","label":"范县"},{"value":"410927","label":"台前县"},{"value":"410928","label":"濮阳县"}]},{"value":"411000","label":"许昌市","children":[{"value":"411002","label":"魏都区"},{"value":"411023","label":"许昌县"},{"value":"411024","label":"鄢陵县"},{"value":"411025","label":"襄城县"},{"value":"411081","label":"禹州市"},{"value":"411082","label":"长葛市"}]},{"value":"411100","label":"漯河市","children":[{"value":"411102","label":"源汇区"},{"value":"411103","label":"郾城区"},{"value":"411104","label":"召陵区"},{"value":"411121","label":"舞阳县"},{"value":"411122","label":"临颍县"}]},{"value":"411200","label":"三门峡市","children":[{"value":"411202","label":"湖滨区"},{"value":"411221","label":"渑池县"},{"value":"411222","label":"陕县"},{"value":"411224","label":"卢氏县"},{"value":"411281","label":"义马市"},{"value":"411282","label":"灵宝市"}]},{"value":"411300","label":"南阳市","children":[{"value":"411302","label":"宛城区"},{"value":"411303","label":"卧龙区"},{"value":"411321","label":"南召县"},{"value":"411322","label":"方城县"},{"value":"411323","label":"西峡县"},{"value":"411324","label":"镇平县"},{"value":"411325","label":"内乡县"},{"value":"411326","label":"淅川县"},{"value":"411327","label":"社旗县"},{"value":"411328","label":"唐河县"},{"value":"411329","label":"新野县"},{"value":"411330","label":"桐柏县"},{"value":"411381","label":"邓州市"}]},{"value":"411400","label":"商丘市","children":[{"value":"411402","label":"梁园区"},{"value":"411403","label":"睢阳区"},{"value":"411421","label":"民权县"},{"value":"411422","label":"睢县"},{"value":"411423","label":"宁陵县"},{"value":"411424","label":"柘城县"},{"value":"411425","label":"虞城县"},{"value":"411426","label":"夏邑县"},{"value":"411481","label":"永城市"}]},{"value":"411500","label":"信阳市","children":[{"value":"411502","label":"浉河区"},{"value":"411503","label":"平桥区"},{"value":"411521","label":"罗山县"},{"value":"411522","label":"光山县"},{"value":"411523","label":"新县"},{"value":"411524","label":"商城县"},{"value":"411525","label":"固始县"},{"value":"411526","label":"潢川县"},{"value":"411527","label":"淮滨县"},{"value":"411528","label":"息县"}]},{"value":"411600","label":"周口市","children":[{"value":"411602","label":"川汇区"},{"value":"411621","label":"扶沟县"},{"value":"411622","label":"西华县"},{"value":"411623","label":"商水县"},{"value":"411624","label":"沈丘县"},{"value":"411625","label":"郸城县"},{"value":"411626","label":"淮阳县"},{"value":"411627","label":"太康县"},{"value":"411628","label":"鹿邑县"},{"value":"411681","label":"项城市"}]},{"value":"411700","label":"驻马店市","children":[{"value":"411702","label":"驿城区"},{"value":"411721","label":"西平县"},{"value":"411722","label":"上蔡县"},{"value":"411723","label":"平舆县"},{"value":"411724","label":"正阳县"},{"value":"411725","label":"确山县"},{"value":"411726","label":"泌阳县"},{"value":"411727","label":"汝南县"},{"value":"411728","label":"遂平县"},{"value":"411729","label":"新蔡县"}]}]},{"label":"湖北省","value":"420000","children":[{"value":"420100","label":"武汉市","children":[{"value":"420102","label":"江岸区"},{"value":"420103","label":"江汉区"},{"value":"420104","label":"硚口区"},{"value":"420105","label":"汉阳区"},{"value":"420106","label":"武昌区"},{"value":"420107","label":"青山区"},{"value":"420111","label":"洪山区"},{"value":"420112","label":"东西湖区"},{"value":"420113","label":"汉南区"},{"value":"420114","label":"蔡甸区"},{"value":"420115","label":"江夏区"},{"value":"420116","label":"黄陂区"},{"value":"420117","label":"新洲区"}]},{"value":"420200","label":"黄石市","children":[{"value":"420202","label":"黄石港区"},{"value":"420203","label":"西塞山区"},{"value":"420204","label":"下陆区"},{"value":"420205","label":"铁山区"},{"value":"420222","label":"阳新县"},{"value":"420281","label":"大冶市"}]},{"value":"420300","label":"十堰市","children":[{"value":"420302","label":"茅箭区"},{"value":"420303","label":"张湾区"},{"value":"420321","label":"郧县"},{"value":"420322","label":"郧西县"},{"value":"420323","label":"竹山县"},{"value":"420324","label":"竹溪县"},{"value":"420325","label":"房县"},{"value":"420381","label":"丹江口市"},{"value":"420382","label":"城区"}]},{"value":"420500","label":"宜昌市","children":[{"value":"420502","label":"西陵区"},{"value":"420503","label":"伍家岗区"},{"value":"420504","label":"点军区"},{"value":"420505","label":"猇亭区"},{"value":"420506","label":"夷陵区"},{"value":"420525","label":"远安县"},{"value":"420526","label":"兴山县"},{"value":"420527","label":"秭归县"},{"value":"420528","label":"长阳土家族自治县"},{"value":"420529","label":"五峰土家族自治县"},{"value":"420551","label":"葛洲坝区"},{"value":"420552","label":"开发区"},{"value":"420581","label":"宜都市"},{"value":"420582","label":"当阳市"},{"value":"420583","label":"枝江市"}]},{"value":"420600","label":"襄阳市","children":[{"value":"420602","label":"襄城区"},{"value":"420606","label":"樊城区"},{"value":"420607","label":"襄州区"},{"value":"420624","label":"南漳县"},{"value":"420625","label":"谷城县"},{"value":"420626","label":"保康县"},{"value":"420682","label":"老河口市"},{"value":"420683","label":"枣阳市"},{"value":"420684","label":"宜城市"}]},{"value":"420700","label":"鄂州市","children":[{"value":"420702","label":"梁子湖区"},{"value":"420703","label":"华容区"},{"value":"420704","label":"鄂城区"}]},{"value":"420800","label":"荆门市","children":[{"value":"420802","label":"东宝区"},{"value":"420804","label":"掇刀区"},{"value":"420821","label":"京山县"},{"value":"420822","label":"沙洋县"},{"value":"420881","label":"钟祥市"}]},{"value":"420900","label":"孝感市","children":[{"value":"420902","label":"孝南区"},{"value":"420921","label":"孝昌县"},{"value":"420922","label":"大悟县"},{"value":"420923","label":"云梦县"},{"value":"420981","label":"应城市"},{"value":"420982","label":"安陆市"},{"value":"420984","label":"汉川市"}]},{"value":"421000","label":"荆州市","children":[{"value":"421002","label":"沙市区"},{"value":"421003","label":"荆州区"},{"value":"421022","label":"公安县"},{"value":"421023","label":"监利县"},{"value":"421024","label":"江陵县"},{"value":"421081","label":"石首市"},{"value":"421083","label":"洪湖市"},{"value":"421087","label":"松滋市"}]},{"value":"421100","label":"黄冈市","children":[{"value":"421102","label":"黄州区"},{"value":"421121","label":"团风县"},{"value":"421122","label":"红安县"},{"value":"421123","label":"罗田县"},{"value":"421124","label":"英山县"},{"value":"421125","label":"浠水县"},{"value":"421126","label":"蕲春县"},{"value":"421127","label":"黄梅县"},{"value":"421181","label":"麻城市"},{"value":"421182","label":"武穴市"}]},{"value":"421200","label":"咸宁市","children":[{"value":"421202","label":"咸安区"},{"value":"421221","label":"嘉鱼县"},{"value":"421222","label":"通城县"},{"value":"421223","label":"崇阳县"},{"value":"421224","label":"通山县"},{"value":"421281","label":"赤壁市"},{"value":"421282","label":"温泉城区"}]},{"value":"421300","label":"随州市","children":[{"value":"421302","label":"曾都区"},{"value":"421321","label":"随县"},{"value":"421381","label":"广水市"}]},{"value":"422800","label":"恩施土家族苗族自治州","children":[{"value":"422801","label":"恩施市"},{"value":"422802","label":"利川市"},{"value":"422822","label":"建始县"},{"value":"422823","label":"巴东县"},{"value":"422825","label":"宣恩县"},{"value":"422826","label":"咸丰县"},{"value":"422827","label":"来凤县"},{"value":"422828","label":"鹤峰县"}]},{"value":"429004","label":"仙桃市"},{"value":"429005","label":"潜江市"},{"value":"429006","label":"天门市"},{"value":"429021","label":"神农架林区"}]},{"label":"湖南省","value":"430000","children":[{"value":"430100","label":"长沙市","children":[{"value":"430102","label":"芙蓉区"},{"value":"430103","label":"天心区"},{"value":"430104","label":"岳麓区"},{"value":"430105","label":"开福区"},{"value":"430111","label":"雨花区"},{"value":"430121","label":"长沙县"},{"value":"430122","label":"望城县"},{"value":"430124","label":"宁乡县"},{"value":"430181","label":"浏阳市"}]},{"value":"430200","label":"株洲市","children":[{"value":"430202","label":"荷塘区"},{"value":"430203","label":"芦淞区"},{"value":"430204","label":"石峰区"},{"value":"430211","label":"天元区"},{"value":"430221","label":"株洲县"},{"value":"430223","label":"攸县"},{"value":"430224","label":"茶陵县"},{"value":"430225","label":"炎陵县"},{"value":"430281","label":"醴陵市"}]},{"value":"430300","label":"湘潭市","children":[{"value":"430302","label":"雨湖区"},{"value":"430304","label":"岳塘区"},{"value":"430321","label":"湘潭县"},{"value":"430381","label":"湘乡市"},{"value":"430382","label":"韶山市"}]},{"value":"430400","label":"衡阳市","children":[{"value":"430405","label":"珠晖区"},{"value":"430406","label":"雁峰区"},{"value":"430407","label":"石鼓区"},{"value":"430408","label":"蒸湘区"},{"value":"430412","label":"南岳区"},{"value":"430421","label":"衡阳县"},{"value":"430422","label":"衡南县"},{"value":"430423","label":"衡山县"},{"value":"430424","label":"衡东县"},{"value":"430426","label":"祁东县"},{"value":"430481","label":"耒阳市"},{"value":"430482","label":"常宁市"}]},{"value":"430500","label":"邵阳市","children":[{"value":"430502","label":"双清区"},{"value":"430503","label":"大祥区"},{"value":"430511","label":"北塔区"},{"value":"430521","label":"邵东县"},{"value":"430522","label":"新邵县"},{"value":"430523","label":"邵阳县"},{"value":"430524","label":"隆回县"},{"value":"430525","label":"洞口县"},{"value":"430527","label":"绥宁县"},{"value":"430528","label":"新宁县"},{"value":"430529","label":"城步苗族自治县"},{"value":"430581","label":"武冈市"}]},{"value":"430600","label":"岳阳市","children":[{"value":"430602","label":"岳阳楼区"},{"value":"430603","label":"云溪区"},{"value":"430611","label":"君山区"},{"value":"430621","label":"岳阳县"},{"value":"430623","label":"华容县"},{"value":"430624","label":"湘阴县"},{"value":"430626","label":"平江县"},{"value":"430681","label":"汨罗市"},{"value":"430682","label":"临湘市"}]},{"value":"430700","label":"常德市","children":[{"value":"430702","label":"武陵区"},{"value":"430703","label":"鼎城区"},{"value":"430721","label":"安乡县"},{"value":"430722","label":"汉寿县"},{"value":"430723","label":"澧县"},{"value":"430724","label":"临澧县"},{"value":"430725","label":"桃源县"},{"value":"430726","label":"石门县"},{"value":"430781","label":"津市市"}]},{"value":"430800","label":"张家界市","children":[{"value":"430802","label":"永定区"},{"value":"430811","label":"武陵源区"},{"value":"430821","label":"慈利县"},{"value":"430822","label":"桑植县"}]},{"value":"430900","label":"益阳市","children":[{"value":"430902","label":"资阳区"},{"value":"430903","label":"赫山区"},{"value":"430921","label":"南县"},{"value":"430922","label":"桃江县"},{"value":"430923","label":"安化县"},{"value":"430981","label":"沅江市"}]},{"value":"431000","label":"郴州市","children":[{"value":"431002","label":"北湖区"},{"value":"431003","label":"苏仙区"},{"value":"431021","label":"桂阳县"},{"value":"431022","label":"宜章县"},{"value":"431023","label":"永兴县"},{"value":"431024","label":"嘉禾县"},{"value":"431025","label":"临武县"},{"value":"431026","label":"汝城县"},{"value":"431027","label":"桂东县"},{"value":"431028","label":"安仁县"},{"value":"431081","label":"资兴市"}]},{"value":"431100","label":"永州市","children":[{"value":"431102","label":"零陵区"},{"value":"431103","label":"冷水滩区"},{"value":"431121","label":"祁阳县"},{"value":"431122","label":"东安县"},{"value":"431123","label":"双牌县"},{"value":"431124","label":"道县"},{"value":"431125","label":"江永县"},{"value":"431126","label":"宁远县"},{"value":"431127","label":"蓝山县"},{"value":"431128","label":"新田县"},{"value":"431129","label":"江华瑶族自治县"}]},{"value":"431200","label":"怀化市","children":[{"value":"431202","label":"鹤城区"},{"value":"431221","label":"中方县"},{"value":"431222","label":"沅陵县"},{"value":"431223","label":"辰溪县"},{"value":"431224","label":"溆浦县"},{"value":"431225","label":"会同县"},{"value":"431226","label":"麻阳苗族自治县"},{"value":"431227","label":"新晃侗族自治县"},{"value":"431228","label":"芷江侗族自治县"},{"value":"431229","label":"靖州苗族侗族自治县"},{"value":"431230","label":"通道侗族自治县"},{"value":"431281","label":"洪江市"}]},{"value":"431300","label":"娄底市","children":[{"value":"431302","label":"娄星区"},{"value":"431321","label":"双峰县"},{"value":"431322","label":"新化县"},{"value":"431381","label":"冷水江市"},{"value":"431382","label":"涟源市"}]},{"value":"433100","label":"湘西土家族苗族自治州","children":[{"value":"433101","label":"吉首市"},{"value":"433122","label":"泸溪县"},{"value":"433123","label":"凤凰县"},{"value":"433124","label":"花垣县"},{"value":"433125","label":"保靖县"},{"value":"433126","label":"古丈县"},{"value":"433127","label":"永顺县"},{"value":"433130","label":"龙山县"}]}]},{"label":"广东省","value":"440000","children":[{"value":"440100","label":"广州市","children":[{"value":"440103","label":"荔湾区"},{"value":"440104","label":"越秀区"},{"value":"440105","label":"海珠区"},{"value":"440106","label":"天河区"},{"value":"440111","label":"白云区"},{"value":"440112","label":"黄埔区"},{"value":"440113","label":"番禺区"},{"value":"440114","label":"花都区"},{"value":"440115","label":"南沙区"},{"value":"440116","label":"萝岗区"},{"value":"440183","label":"增城市"},{"value":"440184","label":"从化市"},{"value":"440188","label":"东山区"}]},{"value":"440200","label":"韶关市","children":[{"value":"440203","label":"武江区"},{"value":"440204","label":"浈江区"},{"value":"440205","label":"曲江区"},{"value":"440222","label":"始兴县"},{"value":"440224","label":"仁化县"},{"value":"440229","label":"翁源县"},{"value":"440232","label":"乳源瑶族自治县"},{"value":"440233","label":"新丰县"},{"value":"440281","label":"乐昌市"},{"value":"440282","label":"南雄市"}]},{"value":"440300","label":"深圳市","children":[{"value":"440303","label":"罗湖区"},{"value":"440304","label":"福田区"},{"value":"440305","label":"南山区"},{"value":"440306","label":"宝安区"},{"value":"440307","label":"龙岗区"},{"value":"440308","label":"盐田区"},{"value":"1032697","label":"光明新区"},{"value":"1032698","label":"坪山新区"},{"value":"1032699","label":"大鹏新区"},{"value":"1032700","label":"龙华新区"}]},{"value":"440400","label":"珠海市","children":[{"value":"440402","label":"香洲区"},{"value":"440403","label":"斗门区"},{"value":"440404","label":"金湾区"},{"value":"440486","label":"金唐区"},{"value":"440487","label":"南湾区"}]},{"value":"440500","label":"汕头市","children":[{"value":"440507","label":"龙湖区"},{"value":"440511","label":"金平区"},{"value":"440512","label":"濠江区"},{"value":"440513","label":"潮阳区"},{"value":"440514","label":"潮南区"},{"value":"440515","label":"澄海区"},{"value":"440523","label":"南澳县"}]},{"value":"440600","label":"佛山市","children":[{"value":"440604","label":"禅城区"},{"value":"440605","label":"南海区"},{"value":"440606","label":"顺德区"},{"value":"440607","label":"三水区"},{"value":"440608","label":"高明区"}]},{"value":"440700","label":"江门市","children":[{"value":"440703","label":"蓬江区"},{"value":"440704","label":"江海区"},{"value":"440705","label":"新会区"},{"value":"440781","label":"台山市"},{"value":"440783","label":"开平市"},{"value":"440784","label":"鹤山市"},{"value":"440785","label":"恩平市"}]},{"value":"440800","label":"湛江市","children":[{"value":"440802","label":"赤坎区"},{"value":"440803","label":"霞山区"},{"value":"440804","label":"坡头区"},{"value":"440811","label":"麻章区"},{"value":"440823","label":"遂溪县"},{"value":"440825","label":"徐闻县"},{"value":"440881","label":"廉江市"},{"value":"440882","label":"雷州市"},{"value":"440883","label":"吴川市"}]},{"value":"440900","label":"茂名市","children":[{"value":"440902","label":"茂南区"},{"value":"440903","label":"茂港区"},{"value":"440923","label":"电白县"},{"value":"440981","label":"高州市"},{"value":"440982","label":"化州市"},{"value":"440983","label":"信宜市"}]},{"value":"441200","label":"肇庆市","children":[{"value":"441202","label":"端州区"},{"value":"441203","label":"鼎湖区"},{"value":"441223","label":"广宁县"},{"value":"441224","label":"怀集县"},{"value":"441225","label":"封开县"},{"value":"441226","label":"德庆县"},{"value":"441283","label":"高要市"},{"value":"441284","label":"四会市"}]},{"value":"441300","label":"惠州市","children":[{"value":"441302","label":"惠城区"},{"value":"441303","label":"惠阳区"},{"value":"441322","label":"博罗县"},{"value":"441323","label":"惠东县"},{"value":"441324","label":"龙门县"}]},{"value":"441400","label":"梅州市","children":[{"value":"441402","label":"梅江区"},{"value":"441421","label":"梅县"},{"value":"441422","label":"大埔县"},{"value":"441423","label":"丰顺县"},{"value":"441424","label":"五华县"},{"value":"441426","label":"平远县"},{"value":"441427","label":"蕉岭县"},{"value":"441481","label":"兴宁市"}]},{"value":"441500","label":"汕尾市","children":[{"value":"441502","label":"城区"},{"value":"441521","label":"海丰县"},{"value":"441523","label":"陆河县"},{"value":"441581","label":"陆丰市"}]},{"value":"441600","label":"河源市","children":[{"value":"441602","label":"源城区"},{"value":"441621","label":"紫金县"},{"value":"441622","label":"龙川县"},{"value":"441623","label":"连平县"},{"value":"441624","label":"和平县"},{"value":"441625","label":"东源县"}]},{"value":"441700","label":"阳江市","children":[{"value":"441702","label":"江城区"},{"value":"441721","label":"阳西县"},{"value":"441723","label":"阳东县"},{"value":"441781","label":"阳春市"}]},{"value":"441800","label":"清远市","children":[{"value":"441802","label":"清城区"},{"value":"441821","label":"佛冈县"},{"value":"441823","label":"阳山县"},{"value":"441825","label":"连山壮族瑶族自治县"},{"value":"441826","label":"连南瑶族自治县"},{"value":"441827","label":"清新县"},{"value":"441881","label":"英德市"},{"value":"441882","label":"连州市"}]},{"value":"441900","label":"东莞市"},{"value":"442000","label":"中山市"},{"value":"445100","label":"潮州市","children":[{"value":"445102","label":"湘桥区"},{"value":"445121","label":"潮安县"},{"value":"445122","label":"饶平县"},{"value":"445185","label":"枫溪区"}]},{"value":"445200","label":"揭阳市","children":[{"value":"445202","label":"榕城区"},{"value":"445221","label":"揭东县"},{"value":"445222","label":"揭西县"},{"value":"445224","label":"惠来县"},{"value":"445281","label":"普宁市"},{"value":"445284","label":"东山区"}]},{"value":"445300","label":"云浮市","children":[{"value":"445302","label":"云城区"},{"value":"445321","label":"新兴县"},{"value":"445322","label":"郁南县"},{"value":"445323","label":"云安县"},{"value":"445381","label":"罗定市"}]}]},{"label":"广西壮族自治区","value":"450000","children":[{"value":"450100","label":"南宁市","children":[{"value":"450102","label":"兴宁区"},{"value":"450103","label":"青秀区"},{"value":"450105","label":"江南区"},{"value":"450107","label":"西乡塘区"},{"value":"450108","label":"良庆区"},{"value":"450109","label":"邕宁区"},{"value":"450122","label":"武鸣县"},{"value":"450123","label":"隆安县"},{"value":"450124","label":"马山县"},{"value":"450125","label":"上林县"},{"value":"450126","label":"宾阳县"},{"value":"450127","label":"横县"}]},{"value":"450200","label":"柳州市","children":[{"value":"450202","label":"城中区"},{"value":"450203","label":"鱼峰区"},{"value":"450204","label":"柳南区"},{"value":"450205","label":"柳北区"},{"value":"450221","label":"柳江县"},{"value":"450222","label":"柳城县"},{"value":"450223","label":"鹿寨县"},{"value":"450224","label":"融安县"},{"value":"450225","label":"融水苗族自治县"},{"value":"450226","label":"三江侗族自治县"}]},{"value":"450300","label":"桂林市","children":[{"value":"450302","label":"秀峰区"},{"value":"450303","label":"叠彩区"},{"value":"450304","label":"象山区"},{"value":"450305","label":"七星区"},{"value":"450311","label":"雁山区"},{"value":"450321","label":"阳朔县"},{"value":"450322","label":"临桂县"},{"value":"450323","label":"灵川县"},{"value":"450324","label":"全州县"},{"value":"450325","label":"兴安县"},{"value":"450326","label":"永福县"},{"value":"450327","label":"灌阳县"},{"value":"450328","label":"龙胜各族自治县"},{"value":"450329","label":"资源县"},{"value":"450330","label":"平乐县"},{"value":"450331","label":"荔浦县"},{"value":"450332","label":"恭城瑶族自治县"}]},{"value":"450400","label":"梧州市","children":[{"value":"450403","label":"万秀区"},{"value":"450404","label":"蝶山区"},{"value":"450405","label":"长洲区"},{"value":"450421","label":"苍梧县"},{"value":"450422","label":"藤县"},{"value":"450423","label":"蒙山县"},{"value":"450481","label":"岑溪市"}]},{"value":"450500","label":"北海市","children":[{"value":"450502","label":"海城区"},{"value":"450503","label":"银海区"},{"value":"450512","label":"铁山港区"},{"value":"450521","label":"合浦县"}]},{"value":"450600","label":"防城港市","children":[{"value":"450602","label":"港口区"},{"value":"450603","label":"防城区"},{"value":"450621","label":"上思县"},{"value":"450681","label":"东兴市"}]},{"value":"450700","label":"钦州市","children":[{"value":"450702","label":"钦南区"},{"value":"450703","label":"钦北区"},{"value":"450721","label":"灵山县"},{"value":"450722","label":"浦北县"}]},{"value":"450800","label":"贵港市","children":[{"value":"450802","label":"港北区"},{"value":"450803","label":"港南区"},{"value":"450804","label":"覃塘区"},{"value":"450821","label":"平南县"},{"value":"450881","label":"桂平市"}]},{"value":"450900","label":"玉林市","children":[{"value":"450902","label":"玉州区"},{"value":"450921","label":"容县"},{"value":"450922","label":"陆川县"},{"value":"450923","label":"博白县"},{"value":"450924","label":"兴业县"},{"value":"450981","label":"北流市"}]},{"value":"451000","label":"百色市","children":[{"value":"451002","label":"右江区"},{"value":"451021","label":"田阳县"},{"value":"451022","label":"田东县"},{"value":"451023","label":"平果县"},{"value":"451024","label":"德保县"},{"value":"451025","label":"靖西县"},{"value":"451026","label":"那坡县"},{"value":"451027","label":"凌云县"},{"value":"451028","label":"乐业县"},{"value":"451029","label":"田林县"},{"value":"451030","label":"西林县"},{"value":"451031","label":"隆林各族自治县"}]},{"value":"451100","label":"贺州市","children":[{"value":"451102","label":"八步区"},{"value":"451121","label":"昭平县"},{"value":"451122","label":"钟山县"},{"value":"451123","label":"富川瑶族自治县"}]},{"value":"451200","label":"河池市","children":[{"value":"451202","label":"金城江区"},{"value":"451221","label":"南丹县"},{"value":"451222","label":"天峨县"},{"value":"451223","label":"凤山县"},{"value":"451224","label":"东兰县"},{"value":"451225","label":"罗城仫佬族自治县"},{"value":"451226","label":"环江毛南族自治县"},{"value":"451227","label":"巴马瑶族自治县"},{"value":"451228","label":"都安瑶族自治县"},{"value":"451229","label":"大化瑶族自治县"},{"value":"451281","label":"宜州市"}]},{"value":"451300","label":"来宾市","children":[{"value":"451302","label":"兴宾区"},{"value":"451321","label":"忻城县"},{"value":"451322","label":"象州县"},{"value":"451323","label":"武宣县"},{"value":"451324","label":"金秀瑶族自治县"},{"value":"451381","label":"合山市"}]},{"value":"451400","label":"崇左市","children":[{"value":"451402","label":"江洲区"},{"value":"451421","label":"扶绥县"},{"value":"451422","label":"宁明县"},{"value":"451423","label":"龙州县"},{"value":"451424","label":"大新县"},{"value":"451425","label":"天等县"},{"value":"451481","label":"凭祥市"}]}]},{"label":"海南省","value":"460000","children":[{"value":"460100","label":"海口市","children":[{"value":"460105","label":"秀英区"},{"value":"460106","label":"龙华区"},{"value":"460107","label":"琼山区"},{"value":"460108","label":"美兰区"}]},{"value":"460200","label":"三亚市"},{"value":"469001","label":"五指山市"},{"value":"469002","label":"琼海市"},{"value":"469003","label":"儋州市"},{"value":"469005","label":"文昌市"},{"value":"469006","label":"万宁市"},{"value":"469007","label":"东方市"},{"value":"469025","label":"定安县"},{"value":"469026","label":"屯昌县"},{"value":"469027","label":"澄迈县"},{"value":"469028","label":"临高县"},{"value":"469030","label":"白沙黎族自治县"},{"value":"469031","label":"昌江黎族自治县"},{"value":"469033","label":"乐东黎族自治县"},{"value":"469034","label":"陵水黎族自治县"},{"value":"469035","label":"保亭黎族苗族自治县"},{"value":"469036","label":"琼中黎族苗族自治县"},{"value":"469037","label":"西沙群岛"},{"value":"469038","label":"南沙群岛"},{"value":"469039","label":"中沙群岛的岛礁及其海域"}]},{"label":"重庆","value":"500000","children":[{"value":"500100","label":"重庆市","children":[{"value":"500101","label":"万州区"},{"value":"500102","label":"涪陵区"},{"value":"500103","label":"渝中区"},{"value":"500104","label":"大渡口区"},{"value":"500105","label":"江北区"},{"value":"500106","label":"沙坪坝区"},{"value":"500107","label":"九龙坡区"},{"value":"500108","label":"南岸区"},{"value":"500109","label":"北碚区"},{"value":"500110","label":"万盛区"},{"value":"500111","label":"双桥区"},{"value":"500112","label":"渝北区"},{"value":"500113","label":"巴南区"},{"value":"500114","label":"黔江区"},{"value":"500115","label":"长寿区"},{"value":"500222","label":"綦江县"},{"value":"500223","label":"潼南县"},{"value":"500224","label":"铜梁县"},{"value":"500225","label":"大足县"},{"value":"500226","label":"荣昌县"},{"value":"500227","label":"璧山县"},{"value":"500228","label":"梁平县"},{"value":"500229","label":"城口县"},{"value":"500230","label":"丰都县"},{"value":"500231","label":"垫江县"},{"value":"500232","label":"武隆县"},{"value":"500233","label":"忠县"},{"value":"500234","label":"开县"},{"value":"500235","label":"云阳县"},{"value":"500236","label":"奉节县"},{"value":"500237","label":"巫山县"},{"value":"500238","label":"巫溪县"},{"value":"500240","label":"石柱土家族自治县"},{"value":"500241","label":"秀山土家族苗族自治县"},{"value":"500242","label":"酉阳土家族苗族自治县"},{"value":"500243","label":"彭水苗族土家族自治县"},{"value":"500381","label":"江津区"},{"value":"500382","label":"合川区"},{"value":"500383","label":"永川区"},{"value":"500384","label":"南川区"}]}]},{"label":"四川省","value":"510000","children":[{"value":"510100","label":"成都市","children":[{"value":"510104","label":"锦江区"},{"value":"510105","label":"青羊区"},{"value":"510106","label":"金牛区"},{"value":"510107","label":"武侯区"},{"value":"510108","label":"成华区"},{"value":"510112","label":"龙泉驿区"},{"value":"510113","label":"青白江区"},{"value":"510114","label":"新都区"},{"value":"510115","label":"温江区"},{"value":"510121","label":"金堂县"},{"value":"510122","label":"双流县"},{"value":"510124","label":"郫县"},{"value":"510129","label":"大邑县"},{"value":"510131","label":"蒲江县"},{"value":"510132","label":"新津县"},{"value":"510181","label":"都江堰市"},{"value":"510182","label":"彭州市"},{"value":"510183","label":"邛崃市"},{"value":"510184","label":"崇州市"}]},{"value":"510300","label":"自贡市","children":[{"value":"510302","label":"自流井区"},{"value":"510303","label":"贡井区"},{"value":"510304","label":"大安区"},{"value":"510311","label":"沿滩区"},{"value":"510321","label":"荣县"},{"value":"510322","label":"富顺县"}]},{"value":"510400","label":"攀枝花市","children":[{"value":"510402","label":"东区"},{"value":"510403","label":"西区"},{"value":"510411","label":"仁和区"},{"value":"510421","label":"米易县"},{"value":"510422","label":"盐边县"}]},{"value":"510500","label":"泸州市","children":[{"value":"510502","label":"江阳区"},{"value":"510503","label":"纳溪区"},{"value":"510504","label":"龙马潭区"},{"value":"510521","label":"泸县"},{"value":"510522","label":"合江县"},{"value":"510524","label":"叙永县"},{"value":"510525","label":"古蔺县"}]},{"value":"510600","label":"德阳市","children":[{"value":"510603","label":"旌阳区"},{"value":"510623","label":"中江县"},{"value":"510626","label":"罗江县"},{"value":"510681","label":"广汉市"},{"value":"510682","label":"什邡市"},{"value":"510683","label":"绵竹市"}]},{"value":"510700","label":"绵阳市","children":[{"value":"510703","label":"涪城区"},{"value":"510704","label":"游仙区"},{"value":"510722","label":"三台县"},{"value":"510723","label":"盐亭县"},{"value":"510724","label":"安县"},{"value":"510725","label":"梓潼县"},{"value":"510726","label":"北川羌族自治县"},{"value":"510727","label":"平武县"},{"value":"510751","label":"高新区"},{"value":"510781","label":"江油市"}]},{"value":"510800","label":"广元市","children":[{"value":"510802","label":"利州区"},{"value":"510811","label":"元坝区"},{"value":"510812","label":"朝天区"},{"value":"510821","label":"旺苍县"},{"value":"510822","label":"青川县"},{"value":"510823","label":"剑阁县"},{"value":"510824","label":"苍溪县"}]},{"value":"510900","label":"遂宁市","children":[{"value":"510903","label":"船山区"},{"value":"510904","label":"安居区"},{"value":"510921","label":"蓬溪县"},{"value":"510922","label":"射洪县"},{"value":"510923","label":"大英县"}]},{"value":"511000","label":"内江市","children":[{"value":"511002","label":"市中区"},{"value":"511011","label":"东兴区"},{"value":"511024","label":"威远县"},{"value":"511025","label":"资中县"},{"value":"511028","label":"隆昌县"}]},{"value":"511100","label":"乐山市","children":[{"value":"511102","label":"市中区"},{"value":"511111","label":"沙湾区"},{"value":"511112","label":"五通桥区"},{"value":"511113","label":"金口河区"},{"value":"511123","label":"犍为县"},{"value":"511124","label":"井研县"},{"value":"511126","label":"夹江县"},{"value":"511129","label":"沐川县"},{"value":"511132","label":"峨边彝族自治县"},{"value":"511133","label":"马边彝族自治县"},{"value":"511181","label":"峨眉山市"}]},{"value":"511300","label":"南充市","children":[{"value":"511302","label":"顺庆区"},{"value":"511303","label":"高坪区"},{"value":"511304","label":"嘉陵区"},{"value":"511321","label":"南部县"},{"value":"511322","label":"营山县"},{"value":"511323","label":"蓬安县"},{"value":"511324","label":"仪陇县"},{"value":"511325","label":"西充县"},{"value":"511381","label":"阆中市"}]},{"value":"511400","label":"眉山市","children":[{"value":"511402","label":"东坡区"},{"value":"511421","label":"仁寿县"},{"value":"511422","label":"彭山县"},{"value":"511423","label":"洪雅县"},{"value":"511424","label":"丹棱县"},{"value":"511425","label":"青神县"}]},{"value":"511500","label":"宜宾市","children":[{"value":"511502","label":"翠屏区"},{"value":"511521","label":"宜宾县"},{"value":"511522","label":"南溪县"},{"value":"511523","label":"江安县"},{"value":"511524","label":"长宁县"},{"value":"511525","label":"高县"},{"value":"511526","label":"珙县"},{"value":"511527","label":"筠连县"},{"value":"511528","label":"兴文县"},{"value":"511529","label":"屏山县"}]},{"value":"511600","label":"广安市","children":[{"value":"511602","label":"广安区"},{"value":"511621","label":"岳池县"},{"value":"511622","label":"武胜县"},{"value":"511623","label":"邻水县"},{"value":"511681","label":"华蓥市"},{"value":"511682","label":"市辖区"}]},{"value":"511700","label":"达州市","children":[{"value":"511702","label":"通川区"},{"value":"511721","label":"达县"},{"value":"511722","label":"宣汉县"},{"value":"511723","label":"开江县"},{"value":"511724","label":"大竹县"},{"value":"511725","label":"渠县"},{"value":"511781","label":"万源市"}]},{"value":"511800","label":"雅安市","children":[{"value":"511802","label":"雨城区"},{"value":"511821","label":"名山县"},{"value":"511822","label":"荥经县"},{"value":"511823","label":"汉源县"},{"value":"511824","label":"石棉县"},{"value":"511825","label":"天全县"},{"value":"511826","label":"芦山县"},{"value":"511827","label":"宝兴县"}]},{"value":"511900","label":"巴中市","children":[{"value":"511902","label":"巴州区"},{"value":"511921","label":"通江县"},{"value":"511922","label":"南江县"},{"value":"511923","label":"平昌县"}]},{"value":"512000","label":"资阳市","children":[{"value":"512002","label":"雁江区"},{"value":"512021","label":"安岳县"},{"value":"512022","label":"乐至县"},{"value":"512081","label":"简阳市"}]},{"value":"513200","label":"阿坝藏族羌族自治州","children":[{"value":"513221","label":"汶川县"},{"value":"513222","label":"理县"},{"value":"513223","label":"茂县"},{"value":"513224","label":"松潘县"},{"value":"513225","label":"九寨沟县"},{"value":"513226","label":"金川县"},{"value":"513227","label":"小金县"},{"value":"513228","label":"黑水县"},{"value":"513229","label":"马尔康县"},{"value":"513230","label":"壤塘县"},{"value":"513231","label":"阿坝县"},{"value":"513232","label":"若尔盖县"},{"value":"513233","label":"红原县"}]},{"value":"513300","label":"甘孜藏族自治州","children":[{"value":"513321","label":"康定县"},{"value":"513322","label":"泸定县"},{"value":"513323","label":"丹巴县"},{"value":"513324","label":"九龙县"},{"value":"513325","label":"雅江县"},{"value":"513326","label":"道孚县"},{"value":"513327","label":"炉霍县"},{"value":"513328","label":"甘孜县"},{"value":"513329","label":"新龙县"},{"value":"513330","label":"德格县"},{"value":"513331","label":"白玉县"},{"value":"513332","label":"石渠县"},{"value":"513333","label":"色达县"},{"value":"513334","label":"理塘县"},{"value":"513335","label":"巴塘县"},{"value":"513336","label":"乡城县"},{"value":"513337","label":"稻城县"},{"value":"513338","label":"得荣县"}]},{"value":"513400","label":"凉山彝族自治州","children":[{"value":"513401","label":"西昌市"},{"value":"513422","label":"木里藏族自治县"},{"value":"513423","label":"盐源县"},{"value":"513424","label":"德昌县"},{"value":"513425","label":"会理县"},{"value":"513426","label":"会东县"},{"value":"513427","label":"宁南县"},{"value":"513428","label":"普格县"},{"value":"513429","label":"布拖县"},{"value":"513430","label":"金阳县"},{"value":"513431","label":"昭觉县"},{"value":"513432","label":"喜德县"},{"value":"513433","label":"冕宁县"},{"value":"513434","label":"越西县"},{"value":"513435","label":"甘洛县"},{"value":"513436","label":"美姑县"},{"value":"513437","label":"雷波县"}]}]},{"label":"贵州省","value":"520000","children":[{"value":"520100","label":"贵阳市","children":[{"value":"520102","label":"南明区"},{"value":"520103","label":"云岩区"},{"value":"520111","label":"花溪区"},{"value":"520112","label":"乌当区"},{"value":"520113","label":"白云区"},{"value":"520114","label":"小河区"},{"value":"520121","label":"开阳县"},{"value":"520122","label":"息烽县"},{"value":"520123","label":"修文县"},{"value":"520151","label":"金阳开发区"},{"value":"520181","label":"清镇市"}]},{"value":"520200","label":"六盘水市","children":[{"value":"520201","label":"钟山区"},{"value":"520203","label":"六枝特区"},{"value":"520221","label":"水城县"},{"value":"520222","label":"盘县"}]},{"value":"520300","label":"遵义市","children":[{"value":"520302","label":"红花岗区"},{"value":"520303","label":"汇川区"},{"value":"520321","label":"遵义县"},{"value":"520322","label":"桐梓县"},{"value":"520323","label":"绥阳县"},{"value":"520324","label":"正安县"},{"value":"520325","label":"道真仡佬族苗族自治县"},{"value":"520326","label":"务川仡佬族苗族自治县"},{"value":"520327","label":"凤冈县"},{"value":"520328","label":"湄潭县"},{"value":"520329","label":"余庆县"},{"value":"520330","label":"习水县"},{"value":"520381","label":"赤水市"},{"value":"520382","label":"仁怀市"}]},{"value":"520400","label":"安顺市","children":[{"value":"520402","label":"西秀区"},{"value":"520421","label":"平坝县"},{"value":"520422","label":"普定县"},{"value":"520423","label":"镇宁布依族苗族自治县"},{"value":"520424","label":"关岭布依族苗族自治县"},{"value":"520425","label":"紫云苗族布依族自治县"}]},{"value":"522200","label":"铜仁地区","children":[{"value":"522201","label":"铜仁市"},{"value":"522222","label":"江口县"},{"value":"522223","label":"玉屏侗族自治县"},{"value":"522224","label":"石阡县"},{"value":"522225","label":"思南县"},{"value":"522226","label":"印江土家族苗族自治县"},{"value":"522227","label":"德江县"},{"value":"522228","label":"沿河土家族自治县"},{"value":"522229","label":"松桃苗族自治县"},{"value":"522230","label":"万山特区"}]},{"value":"522300","label":"黔西南布依族苗族自治州","children":[{"value":"522301","label":"兴义市"},{"value":"522322","label":"兴仁县"},{"value":"522323","label":"普安县"},{"value":"522324","label":"晴隆县"},{"value":"522325","label":"贞丰县"},{"value":"522326","label":"望谟县"},{"value":"522327","label":"册亨县"},{"value":"522328","label":"安龙县"}]},{"value":"522400","label":"毕节地区","children":[{"value":"522401","label":"毕节市"},{"value":"522422","label":"大方县"},{"value":"522423","label":"黔西县"},{"value":"522424","label":"金沙县"},{"value":"522425","label":"织金县"},{"value":"522426","label":"纳雍县"},{"value":"522427","label":"威宁彝族回族苗族自治县"},{"value":"522428","label":"赫章县"}]},{"value":"522600","label":"黔东南苗族侗族自治州","children":[{"value":"522601","label":"凯里市"},{"value":"522622","label":"黄平县"},{"value":"522623","label":"施秉县"},{"value":"522624","label":"三穗县"},{"value":"522625","label":"镇远县"},{"value":"522626","label":"岑巩县"},{"value":"522627","label":"天柱县"},{"value":"522628","label":"锦屏县"},{"value":"522629","label":"剑河县"},{"value":"522630","label":"台江县"},{"value":"522631","label":"黎平县"},{"value":"522632","label":"榕江县"},{"value":"522633","label":"从江县"},{"value":"522634","label":"雷山县"},{"value":"522635","label":"麻江县"},{"value":"522636","label":"丹寨县"}]},{"value":"522700","label":"黔南布依族苗族自治州","children":[{"value":"522701","label":"都匀市"},{"value":"522702","label":"福泉市"},{"value":"522722","label":"荔波县"},{"value":"522723","label":"贵定县"},{"value":"522725","label":"瓮安县"},{"value":"522726","label":"独山县"},{"value":"522727","label":"平塘县"},{"value":"522728","label":"罗甸县"},{"value":"522729","label":"长顺县"},{"value":"522730","label":"龙里县"},{"value":"522731","label":"惠水县"},{"value":"522732","label":"三都水族自治县"}]}]},{"label":"云南省","value":"530000","children":[{"value":"530100","label":"昆明市","children":[{"value":"530102","label":"五华区"},{"value":"530103","label":"盘龙区"},{"value":"530111","label":"官渡区"},{"value":"530112","label":"西山区"},{"value":"530113","label":"东川区"},{"value":"530121","label":"呈贡县"},{"value":"530122","label":"晋宁县"},{"value":"530124","label":"富民县"},{"value":"530125","label":"宜良县"},{"value":"530126","label":"石林彝族自治县"},{"value":"530127","label":"嵩明县"},{"value":"530128","label":"禄劝彝族苗族自治县"},{"value":"530129","label":"寻甸回族彝族自治县"},{"value":"530181","label":"安宁市"}]},{"value":"530300","label":"曲靖市","children":[{"value":"530302","label":"麒麟区"},{"value":"530321","label":"马龙县"},{"value":"530322","label":"陆良县"},{"value":"530323","label":"师宗县"},{"value":"530324","label":"罗平县"},{"value":"530325","label":"富源县"},{"value":"530326","label":"会泽县"},{"value":"530328","label":"沾益县"},{"value":"530381","label":"宣威市"}]},{"value":"530400","label":"玉溪市","children":[{"value":"530402","label":"红塔区"},{"value":"530421","label":"江川县"},{"value":"530422","label":"澄江县"},{"value":"530423","label":"通海县"},{"value":"530424","label":"华宁县"},{"value":"530425","label":"易门县"},{"value":"530426","label":"峨山彝族自治县"},{"value":"530427","label":"新平彝族傣族自治县"},{"value":"530428","label":"元江哈尼族彝族傣族自治县"}]},{"value":"530500","label":"保山市","children":[{"value":"530502","label":"隆阳区"},{"value":"530521","label":"施甸县"},{"value":"530522","label":"腾冲县"},{"value":"530523","label":"龙陵县"},{"value":"530524","label":"昌宁县"}]},{"value":"530600","label":"昭通市","children":[{"value":"530602","label":"昭阳区"},{"value":"530621","label":"鲁甸县"},{"value":"530622","label":"巧家县"},{"value":"530623","label":"盐津县"},{"value":"530624","label":"大关县"},{"value":"530625","label":"永善县"},{"value":"530626","label":"绥江县"},{"value":"530627","label":"镇雄县"},{"value":"530628","label":"彝良县"},{"value":"530629","label":"威信县"},{"value":"530630","label":"水富县"}]},{"value":"530700","label":"丽江市","children":[{"value":"530702","label":"古城区"},{"value":"530721","label":"玉龙纳西族自治县"},{"value":"530722","label":"永胜县"},{"value":"530723","label":"华坪县"},{"value":"530724","label":"宁蒗彝族自治县"}]},{"value":"530800","label":"普洱市","children":[{"value":"530802","label":"思茅区"},{"value":"530821","label":"宁洱哈尼族彝族自治县"},{"value":"530822","label":"墨江哈尼族自治县"},{"value":"530823","label":"景东彝族自治县"},{"value":"530824","label":"景谷傣族彝族自治县"},{"value":"530825","label":"镇沅彝族哈尼族拉祜族自治县"},{"value":"530826","label":"江城哈尼族彝族自治县"},{"value":"530827","label":"孟连傣族拉祜族佤族自治县"},{"value":"530828","label":"澜沧拉祜族自治县"},{"value":"530829","label":"西盟佤族自治县"}]},{"value":"530900","label":"临沧市","children":[{"value":"530902","label":"临翔区"},{"value":"530921","label":"凤庆县"},{"value":"530922","label":"云县"},{"value":"530923","label":"永德县"},{"value":"530924","label":"镇康县"},{"value":"530925","label":"双江拉祜族佤族布朗族傣族自治县"},{"value":"530926","label":"耿马傣族佤族自治县"},{"value":"530927","label":"沧源佤族自治县"}]},{"value":"532300","label":"楚雄彝族自治州","children":[{"value":"532301","label":"楚雄市"},{"value":"532322","label":"双柏县"},{"value":"532323","label":"牟定县"},{"value":"532324","label":"南华县"},{"value":"532325","label":"姚安县"},{"value":"532326","label":"大姚县"},{"value":"532327","label":"永仁县"},{"value":"532328","label":"元谋县"},{"value":"532329","label":"武定县"},{"value":"532331","label":"禄丰县"}]},{"value":"532500","label":"红河哈尼族彝族自治州","children":[{"value":"532501","label":"个旧市"},{"value":"532502","label":"开远市"},{"value":"532522","label":"蒙自县"},{"value":"532523","label":"屏边苗族自治县"},{"value":"532524","label":"建水县"},{"value":"532525","label":"石屏县"},{"value":"532526","label":"弥勒县"},{"value":"532527","label":"泸西县"},{"value":"532528","label":"元阳县"},{"value":"532529","label":"红河县"},{"value":"532530","label":"金平苗族瑶族傣族自治县"},{"value":"532531","label":"绿春县"},{"value":"532532","label":"河口瑶族自治县"}]},{"value":"532600","label":"文山壮族苗族自治州","children":[{"value":"532621","label":"文山县"},{"value":"532622","label":"砚山县"},{"value":"532623","label":"西畴县"},{"value":"532624","label":"麻栗坡县"},{"value":"532625","label":"马关县"},{"value":"532626","label":"丘北县"},{"value":"532627","label":"广南县"},{"value":"532628","label":"富宁县"}]},{"value":"532800","label":"西双版纳傣族自治州","children":[{"value":"532801","label":"景洪市"},{"value":"532822","label":"勐海县"},{"value":"532823","label":"勐腊县"}]},{"value":"532900","label":"大理白族自治州","children":[{"value":"532901","label":"大理市"},{"value":"532922","label":"漾濞彝族自治县"},{"value":"532923","label":"祥云县"},{"value":"532924","label":"宾川县"},{"value":"532925","label":"弥渡县"},{"value":"532926","label":"南涧彝族自治县"},{"value":"532927","label":"巍山彝族回族自治县"},{"value":"532928","label":"永平县"},{"value":"532929","label":"云龙县"},{"value":"532930","label":"洱源县"},{"value":"532931","label":"剑川县"},{"value":"532932","label":"鹤庆县"}]},{"value":"533100","label":"德宏傣族景颇族自治州","children":[{"value":"533102","label":"瑞丽市"},{"value":"533103","label":"潞西市"},{"value":"533122","label":"梁河县"},{"value":"533123","label":"盈江县"},{"value":"533124","label":"陇川县"}]},{"value":"533300","label":"怒江傈僳族自治州","children":[{"value":"533321","label":"泸水县"},{"value":"533323","label":"福贡县"},{"value":"533324","label":"贡山独龙族怒族自治县"},{"value":"533325","label":"兰坪白族普米族自治县"}]},{"value":"533400","label":"迪庆藏族自治州","children":[{"value":"533421","label":"香格里拉县"},{"value":"533422","label":"德钦县"},{"value":"533423","label":"维西傈僳族自治县"}]}]},{"label":"西藏自治区","value":"540000","children":[{"value":"540100","label":"拉萨市","children":[{"value":"540102","label":"城关区"},{"value":"540121","label":"林周县"},{"value":"540122","label":"当雄县"},{"value":"540123","label":"尼木县"},{"value":"540124","label":"曲水县"},{"value":"540125","label":"堆龙德庆县"},{"value":"540126","label":"达孜县"},{"value":"540127","label":"墨竹工卡县"}]},{"value":"542100","label":"昌都地区","children":[{"value":"542121","label":"昌都县"},{"value":"542122","label":"江达县"},{"value":"542123","label":"贡觉县"},{"value":"542124","label":"类乌齐县"},{"value":"542125","label":"丁青县"},{"value":"542126","label":"察雅县"},{"value":"542127","label":"八宿县"},{"value":"542128","label":"左贡县"},{"value":"542129","label":"芒康县"},{"value":"542132","label":"洛隆县"},{"value":"542133","label":"边坝县"}]},{"value":"542200","label":"山南地区","children":[{"value":"542221","label":"乃东县"},{"value":"542222","label":"扎囊县"},{"value":"542223","label":"贡嘎县"},{"value":"542224","label":"桑日县"},{"value":"542225","label":"琼结县"},{"value":"542226","label":"曲松县"},{"value":"542227","label":"措美县"},{"value":"542228","label":"洛扎县"},{"value":"542229","label":"加查县"},{"value":"542231","label":"隆子县"},{"value":"542232","label":"错那县"},{"value":"542233","label":"浪卡子县"}]},{"value":"542300","label":"日喀则地区","children":[{"value":"542301","label":"日喀则市"},{"value":"542322","label":"南木林县"},{"value":"542323","label":"江孜县"},{"value":"542324","label":"定日县"},{"value":"542325","label":"萨迦县"},{"value":"542326","label":"拉孜县"},{"value":"542327","label":"昂仁县"},{"value":"542328","label":"谢通门县"},{"value":"542329","label":"白朗县"},{"value":"542330","label":"仁布县"},{"value":"542331","label":"康马县"},{"value":"542332","label":"定结县"},{"value":"542333","label":"仲巴县"},{"value":"542334","label":"亚东县"},{"value":"542335","label":"吉隆县"},{"value":"542336","label":"聂拉木县"},{"value":"542337","label":"萨嘎县"},{"value":"542338","label":"岗巴县"}]},{"value":"542400","label":"那曲地区","children":[{"value":"542421","label":"那曲县"},{"value":"542422","label":"嘉黎县"},{"value":"542423","label":"比如县"},{"value":"542424","label":"聂荣县"},{"value":"542425","label":"安多县"},{"value":"542426","label":"申扎县"},{"value":"542427","label":"索县"},{"value":"542428","label":"班戈县"},{"value":"542429","label":"巴青县"},{"value":"542430","label":"尼玛县"}]},{"value":"542500","label":"阿里地区","children":[{"value":"542521","label":"普兰县"},{"value":"542522","label":"札达县"},{"value":"542523","label":"噶尔县"},{"value":"542524","label":"日土县"},{"value":"542525","label":"革吉县"},{"value":"542526","label":"改则县"},{"value":"542527","label":"措勤县"}]},{"value":"542600","label":"林芝地区","children":[{"value":"542621","label":"林芝县"},{"value":"542622","label":"工布江达县"},{"value":"542623","label":"米林县"},{"value":"542624","label":"墨脱县"},{"value":"542625","label":"波密县"},{"value":"542626","label":"察隅县"},{"value":"542627","label":"朗县"}]}]},{"label":"陕西省","value":"610000","children":[{"value":"610100","label":"西安市","children":[{"value":"610102","label":"新城区"},{"value":"610103","label":"碑林区"},{"value":"610104","label":"莲湖区"},{"value":"610111","label":"灞桥区"},{"value":"610112","label":"未央区"},{"value":"610113","label":"雁塔区"},{"value":"610114","label":"阎良区"},{"value":"610115","label":"临潼区"},{"value":"610116","label":"长安区"},{"value":"610122","label":"蓝田县"},{"value":"610124","label":"周至县"},{"value":"610125","label":"户县"},{"value":"610126","label":"高陵县"}]},{"value":"610200","label":"铜川市","children":[{"value":"610202","label":"王益区"},{"value":"610203","label":"印台区"},{"value":"610204","label":"耀州区"},{"value":"610222","label":"宜君县"}]},{"value":"610300","label":"宝鸡市","children":[{"value":"610302","label":"渭滨区"},{"value":"610303","label":"金台区"},{"value":"610304","label":"陈仓区"},{"value":"610322","label":"凤翔县"},{"value":"610323","label":"岐山县"},{"value":"610324","label":"扶风县"},{"value":"610326","label":"眉县"},{"value":"610327","label":"陇县"},{"value":"610328","label":"千阳县"},{"value":"610329","label":"麟游县"},{"value":"610330","label":"凤县"},{"value":"610331","label":"太白县"}]},{"value":"610400","label":"咸阳市","children":[{"value":"610402","label":"秦都区"},{"value":"610403","label":"杨陵区"},{"value":"610404","label":"渭城区"},{"value":"610422","label":"三原县"},{"value":"610423","label":"泾阳县"},{"value":"610424","label":"乾县"},{"value":"610425","label":"礼泉县"},{"value":"610426","label":"永寿县"},{"value":"610427","label":"彬县"},{"value":"610428","label":"长武县"},{"value":"610429","label":"旬邑县"},{"value":"610430","label":"淳化县"},{"value":"610431","label":"武功县"},{"value":"610481","label":"兴平市"}]},{"value":"610500","label":"渭南市","children":[{"value":"610502","label":"临渭区"},{"value":"610521","label":"华县"},{"value":"610522","label":"潼关县"},{"value":"610523","label":"大荔县"},{"value":"610524","label":"合阳县"},{"value":"610525","label":"澄城县"},{"value":"610526","label":"蒲城县"},{"value":"610527","label":"白水县"},{"value":"610528","label":"富平县"},{"value":"610581","label":"韩城市"},{"value":"610582","label":"华阴市"}]},{"value":"610600","label":"延安市","children":[{"value":"610602","label":"宝塔区"},{"value":"610621","label":"延长县"},{"value":"610622","label":"延川县"},{"value":"610623","label":"子长县"},{"value":"610624","label":"安塞县"},{"value":"610625","label":"志丹县"},{"value":"610626","label":"吴起县"},{"value":"610627","label":"甘泉县"},{"value":"610628","label":"富县"},{"value":"610629","label":"洛川县"},{"value":"610630","label":"宜川县"},{"value":"610631","label":"黄龙县"},{"value":"610632","label":"黄陵县"}]},{"value":"610700","label":"汉中市","children":[{"value":"610702","label":"汉台区"},{"value":"610721","label":"南郑县"},{"value":"610722","label":"城固县"},{"value":"610723","label":"洋县"},{"value":"610724","label":"西乡县"},{"value":"610725","label":"勉县"},{"value":"610726","label":"宁强县"},{"value":"610727","label":"略阳县"},{"value":"610728","label":"镇巴县"},{"value":"610729","label":"留坝县"},{"value":"610730","label":"佛坪县"}]},{"value":"610800","label":"榆林市","children":[{"value":"610802","label":"榆阳区"},{"value":"610821","label":"神木县"},{"value":"610822","label":"府谷县"},{"value":"610823","label":"横山县"},{"value":"610824","label":"靖边县"},{"value":"610825","label":"定边县"},{"value":"610826","label":"绥德县"},{"value":"610827","label":"米脂县"},{"value":"610828","label":"佳县"},{"value":"610829","label":"吴堡县"},{"value":"610830","label":"清涧县"},{"value":"610831","label":"子洲县"}]},{"value":"610900","label":"安康市","children":[{"value":"610902","label":"汉滨区"},{"value":"610921","label":"汉阴县"},{"value":"610922","label":"石泉县"},{"value":"610923","label":"宁陕县"},{"value":"610924","label":"紫阳县"},{"value":"610925","label":"岚皋县"},{"value":"610926","label":"平利县"},{"value":"610927","label":"镇坪县"},{"value":"610928","label":"旬阳县"},{"value":"610929","label":"白河县"}]},{"value":"611000","label":"商洛市","children":[{"value":"611002","label":"商州区"},{"value":"611021","label":"洛南县"},{"value":"611022","label":"丹凤县"},{"value":"611023","label":"商南县"},{"value":"611024","label":"山阳县"},{"value":"611025","label":"镇安县"},{"value":"611026","label":"柞水县"}]}]},{"label":"甘肃省","value":"620000","children":[{"value":"620100","label":"兰州市","children":[{"value":"620102","label":"城关区"},{"value":"620103","label":"七里河区"},{"value":"620104","label":"西固区"},{"value":"620105","label":"安宁区"},{"value":"620111","label":"红古区"},{"value":"620121","label":"永登县"},{"value":"620122","label":"皋兰县"},{"value":"620123","label":"榆中县"}]},{"value":"620200","label":"嘉峪关市"},{"value":"620300","label":"金昌市","children":[{"value":"620302","label":"金川区"},{"value":"620321","label":"永昌县"}]},{"value":"620400","label":"白银市","children":[{"value":"620402","label":"白银区"},{"value":"620403","label":"平川区"},{"value":"620421","label":"靖远县"},{"value":"620422","label":"会宁县"},{"value":"620423","label":"景泰县"}]},{"value":"620500","label":"天水市","children":[{"value":"620502","label":"秦州区"},{"value":"620503","label":"麦积区"},{"value":"620521","label":"清水县"},{"value":"620522","label":"秦安县"},{"value":"620523","label":"甘谷县"},{"value":"620524","label":"武山县"},{"value":"620525","label":"张家川回族自治县"}]},{"value":"620600","label":"武威市","children":[{"value":"620602","label":"凉州区"},{"value":"620621","label":"民勤县"},{"value":"620622","label":"古浪县"},{"value":"620623","label":"天祝藏族自治县"}]},{"value":"620700","label":"张掖市","children":[{"value":"620702","label":"甘州区"},{"value":"620721","label":"肃南裕固族自治县"},{"value":"620722","label":"民乐县"},{"value":"620723","label":"临泽县"},{"value":"620724","label":"高台县"},{"value":"620725","label":"山丹县"}]},{"value":"620800","label":"平凉市","children":[{"value":"620802","label":"崆峒区"},{"value":"620821","label":"泾川县"},{"value":"620822","label":"灵台县"},{"value":"620823","label":"崇信县"},{"value":"620824","label":"华亭县"},{"value":"620825","label":"庄浪县"},{"value":"620826","label":"静宁县"}]},{"value":"620900","label":"酒泉市","children":[{"value":"620902","label":"肃州区"},{"value":"620921","label":"金塔县"},{"value":"620922","label":"安西县"},{"value":"620923","label":"肃北蒙古族自治县"},{"value":"620924","label":"阿克塞哈萨克族自治县"},{"value":"620981","label":"玉门市"},{"value":"620982","label":"敦煌市"}]},{"value":"621000","label":"庆阳市","children":[{"value":"621002","label":"西峰区"},{"value":"621021","label":"庆城县"},{"value":"621022","label":"环县"},{"value":"621023","label":"华池县"},{"value":"621024","label":"合水县"},{"value":"621025","label":"正宁县"},{"value":"621026","label":"宁县"},{"value":"621027","label":"镇原县"}]},{"value":"621100","label":"定西市","children":[{"value":"621102","label":"安定区"},{"value":"621121","label":"通渭县"},{"value":"621122","label":"陇西县"},{"value":"621123","label":"渭源县"},{"value":"621124","label":"临洮县"},{"value":"621125","label":"漳县"},{"value":"621126","label":"岷县"}]},{"value":"621200","label":"陇南市","children":[{"value":"621202","label":"武都区"},{"value":"621221","label":"成县"},{"value":"621222","label":"文县"},{"value":"621223","label":"宕昌县"},{"value":"621224","label":"康县"},{"value":"621225","label":"西和县"},{"value":"621226","label":"礼县"},{"value":"621227","label":"徽县"},{"value":"621228","label":"两当县"}]},{"value":"622900","label":"临夏回族自治州","children":[{"value":"622901","label":"临夏市"},{"value":"622921","label":"临夏县"},{"value":"622922","label":"康乐县"},{"value":"622923","label":"永靖县"},{"value":"622924","label":"广河县"},{"value":"622925","label":"和政县"},{"value":"622926","label":"东乡族自治县"},{"value":"622927","label":"积石山保安族东乡族撒拉族自治县"}]},{"value":"623000","label":"甘南藏族自治州","children":[{"value":"623001","label":"合作市"},{"value":"623021","label":"临潭县"},{"value":"623022","label":"卓尼县"},{"value":"623023","label":"舟曲县"},{"value":"623024","label":"迭部县"},{"value":"623025","label":"玛曲县"},{"value":"623026","label":"碌曲县"},{"value":"623027","label":"夏河县"}]}]},{"label":"青海省","value":"630000","children":[{"value":"630100","label":"西宁市","children":[{"value":"630102","label":"城东区"},{"value":"630103","label":"城中区"},{"value":"630104","label":"城西区"},{"value":"630105","label":"城北区"},{"value":"630121","label":"大通回族土族自治县"},{"value":"630122","label":"湟中县"},{"value":"630123","label":"湟源县"}]},{"value":"632100","label":"海东地区","children":[{"value":"632121","label":"平安县"},{"value":"632122","label":"民和回族土族自治县"},{"value":"632123","label":"乐都县"},{"value":"632126","label":"互助土族自治县"},{"value":"632127","label":"化隆回族自治县"},{"value":"632128","label":"循化撒拉族自治县"}]},{"value":"632200","label":"海北藏族自治州","children":[{"value":"632221","label":"门源回族自治县"},{"value":"632222","label":"祁连县"},{"value":"632223","label":"海晏县"},{"value":"632224","label":"刚察县"}]},{"value":"632300","label":"黄南藏族自治州","children":[{"value":"632321","label":"同仁县"},{"value":"632322","label":"尖扎县"},{"value":"632323","label":"泽库县"},{"value":"632324","label":"河南蒙古族自治县"}]},{"value":"632500","label":"海南藏族自治州","children":[{"value":"632521","label":"共和县"},{"value":"632522","label":"同德县"},{"value":"632523","label":"贵德县"},{"value":"632524","label":"兴海县"},{"value":"632525","label":"贵南县"}]},{"value":"632600","label":"果洛藏族自治州","children":[{"value":"632621","label":"玛沁县"},{"value":"632622","label":"班玛县"},{"value":"632623","label":"甘德县"},{"value":"632624","label":"达日县"},{"value":"632625","label":"久治县"},{"value":"632626","label":"玛多县"}]},{"value":"632700","label":"玉树藏族自治州","children":[{"value":"632721","label":"玉树县"},{"value":"632722","label":"杂多县"},{"value":"632723","label":"称多县"},{"value":"632724","label":"治多县"},{"value":"632725","label":"囊谦县"},{"value":"632726","label":"曲麻莱县"}]},{"value":"632800","label":"海西蒙古族藏族自治州","children":[{"value":"632801","label":"格尔木市"},{"value":"632802","label":"德令哈市"},{"value":"632821","label":"乌兰县"},{"value":"632822","label":"都兰县"},{"value":"632823","label":"天峻县"}]}]},{"label":"宁夏回族自治区","value":"640000","children":[{"value":"640100","label":"银川市","children":[{"value":"640104","label":"兴庆区"},{"value":"640105","label":"西夏区"},{"value":"640106","label":"金凤区"},{"value":"640121","label":"永宁县"},{"value":"640122","label":"贺兰县"},{"value":"640181","label":"灵武市"}]},{"value":"640200","label":"石嘴山市","children":[{"value":"640202","label":"大武口区"},{"value":"640205","label":"惠农区"},{"value":"640221","label":"平罗县"}]},{"value":"640300","label":"吴忠市","children":[{"value":"640302","label":"利通区"},{"value":"640303","label":"红寺堡区"},{"value":"640323","label":"盐池县"},{"value":"640324","label":"同心县"},{"value":"640381","label":"青铜峡市"}]},{"value":"640400","label":"固原市","children":[{"value":"640402","label":"原州区"},{"value":"640422","label":"西吉县"},{"value":"640423","label":"隆德县"},{"value":"640424","label":"泾源县"},{"value":"640425","label":"彭阳县"}]},{"value":"640500","label":"中卫市","children":[{"value":"640502","label":"沙坡头区"},{"value":"640521","label":"中宁县"},{"value":"640522","label":"海原县"}]}]},{"label":"新疆维吾尔自治区","value":"650000","children":[{"value":"650100","label":"乌鲁木齐市","children":[{"value":"650102","label":"天山区"},{"value":"650103","label":"沙依巴克区"},{"value":"650104","label":"新市区"},{"value":"650105","label":"水磨沟区"},{"value":"650106","label":"头屯河区"},{"value":"650107","label":"达坂城区"},{"value":"650108","label":"东山区"},{"value":"650109","label":"米东区"},{"value":"650121","label":"乌鲁木齐县"}]},{"value":"650200","label":"克拉玛依市","children":[{"value":"650202","label":"独山子区"},{"value":"650203","label":"克拉玛依区"},{"value":"650204","label":"白碱滩区"},{"value":"650205","label":"乌尔禾区"}]},{"value":"652100","label":"吐鲁番地区","children":[{"value":"652101","label":"吐鲁番市"},{"value":"652122","label":"鄯善县"},{"value":"652123","label":"托克逊县"}]},{"value":"652200","label":"哈密地区","children":[{"value":"652201","label":"哈密市"},{"value":"652222","label":"巴里坤哈萨克自治县"},{"value":"652223","label":"伊吾县"}]},{"value":"652300","label":"昌吉回族自治州","children":[{"value":"652301","label":"昌吉市"},{"value":"652302","label":"阜康市"},{"value":"652303","label":"米泉市"},{"value":"652323","label":"呼图壁县"},{"value":"652324","label":"玛纳斯县"},{"value":"652325","label":"奇台县"},{"value":"652327","label":"吉木萨尔县"},{"value":"652328","label":"木垒哈萨克自治县"}]},{"value":"652700","label":"博尔塔拉蒙古自治州","children":[{"value":"652701","label":"博乐市"},{"value":"652722","label":"精河县"},{"value":"652723","label":"温泉县"}]},{"value":"652800","label":"巴音郭楞蒙古自治州","children":[{"value":"652801","label":"库尔勒市"},{"value":"652822","label":"轮台县"},{"value":"652823","label":"尉犁县"},{"value":"652824","label":"若羌县"},{"value":"652825","label":"且末县"},{"value":"652826","label":"焉耆回族自治县"},{"value":"652827","label":"和静县"},{"value":"652828","label":"和硕县"},{"value":"652829","label":"博湖县"}]},{"value":"652900","label":"阿克苏地区","children":[{"value":"652901","label":"阿克苏市"},{"value":"652922","label":"温宿县"},{"value":"652923","label":"库车县"},{"value":"652924","label":"沙雅县"},{"value":"652925","label":"新和县"},{"value":"652926","label":"拜城县"},{"value":"652927","label":"乌什县"},{"value":"652928","label":"阿瓦提县"},{"value":"652929","label":"柯坪县"}]},{"value":"653000","label":"克孜勒苏柯尔克孜自治州","children":[{"value":"653001","label":"阿图什市"},{"value":"653022","label":"阿克陶县"},{"value":"653023","label":"阿合奇县"},{"value":"653024","label":"乌恰县"}]},{"value":"653100","label":"喀什地区","children":[{"value":"653101","label":"喀什市"},{"value":"653121","label":"疏附县"},{"value":"653122","label":"疏勒县"},{"value":"653123","label":"英吉沙县"},{"value":"653124","label":"泽普县"},{"value":"653125","label":"莎车县"},{"value":"653126","label":"叶城县"},{"value":"653127","label":"麦盖提县"},{"value":"653128","label":"岳普湖县"},{"value":"653129","label":"伽师县"},{"value":"653130","label":"巴楚县"},{"value":"653131","label":"塔什库尔干塔吉克自治县"}]},{"value":"653200","label":"和田地区","children":[{"value":"653201","label":"和田市"},{"value":"653221","label":"和田县"},{"value":"653222","label":"墨玉县"},{"value":"653223","label":"皮山县"},{"value":"653224","label":"洛浦县"},{"value":"653225","label":"策勒县"},{"value":"653226","label":"于田县"},{"value":"653227","label":"民丰县"}]},{"value":"654000","label":"伊犁哈萨克自治州","children":[{"value":"654002","label":"伊宁市"},{"value":"654003","label":"奎屯市"},{"value":"654021","label":"伊宁县"},{"value":"654022","label":"察布查尔锡伯自治县"},{"value":"654023","label":"霍城县"},{"value":"654024","label":"巩留县"},{"value":"654025","label":"新源县"},{"value":"654026","label":"昭苏县"},{"value":"654027","label":"特克斯县"},{"value":"654028","label":"尼勒克县"}]},{"value":"654200","label":"塔城地区","children":[{"value":"654201","label":"塔城市"},{"value":"654202","label":"乌苏市"},{"value":"654221","label":"额敏县"},{"value":"654223","label":"沙湾县"},{"value":"654224","label":"托里县"},{"value":"654225","label":"裕民县"},{"value":"654226","label":"和布克赛尔蒙古自治县"}]},{"value":"654300","label":"阿勒泰地区","children":[{"value":"654301","label":"阿勒泰市"},{"value":"654321","label":"布尔津县"},{"value":"654322","label":"富蕴县"},{"value":"654323","label":"福海县"},{"value":"654324","label":"哈巴河县"},{"value":"654325","label":"青河县"},{"value":"654326","label":"吉木乃县"}]},{"value":"659001","label":"石河子市"},{"value":"659002","label":"阿拉尔市"},{"value":"659003","label":"图木舒克市"},{"value":"659004","label":"五家渠市"}]},{"label":"台湾省","value":"710000","children":[{"value":"710100","label":"台北市","children":[{"value":"710101","label":"中正区"},{"value":"710102","label":"大同区"},{"value":"710103","label":"中山区"},{"value":"710104","label":"松山区"},{"value":"710105","label":"大安区"},{"value":"710106","label":"万华区"},{"value":"710107","label":"信义区"},{"value":"710108","label":"士林区"},{"value":"710109","label":"北投区"},{"value":"710110","label":"内湖区"},{"value":"710111","label":"南港区"},{"value":"710112","label":"文山区"}]},{"value":"710200","label":"高雄市","children":[{"value":"710201","label":"新兴区"},{"value":"710202","label":"前金区"},{"value":"710203","label":"芩雅区"},{"value":"710204","label":"盐埕区"},{"value":"710205","label":"鼓山区"},{"value":"710206","label":"旗津区"},{"value":"710207","label":"前镇区"},{"value":"710208","label":"三民区"},{"value":"710209","label":"左营区"},{"value":"710210","label":"楠梓区"},{"value":"710211","label":"小港区"}]},{"value":"710300","label":"台南市","children":[{"value":"710301","label":"中西区"},{"value":"710302","label":"东区"},{"value":"710303","label":"南区"},{"value":"710304","label":"北区"},{"value":"710305","label":"安平区"},{"value":"710306","label":"安南区"}]},{"value":"710400","label":"台中市","children":[{"value":"710401","label":"中区"},{"value":"710402","label":"东区"},{"value":"710403","label":"南区"},{"value":"710404","label":"西区"},{"value":"710405","label":"北区"},{"value":"710406","label":"北屯区"},{"value":"710407","label":"西屯区"},{"value":"710408","label":"南屯区"}]},{"value":"710500","label":"金门县"},{"value":"710600","label":"南投县"},{"value":"710700","label":"基隆市","children":[{"value":"710701","label":"仁爱区"},{"value":"710702","label":"信义区"},{"value":"710703","label":"中正区"},{"value":"710704","label":"中山区"},{"value":"710705","label":"安乐区"},{"value":"710706","label":"暖暖区"},{"value":"710707","label":"七堵区"}]},{"value":"710800","label":"新竹市","children":[{"value":"710801","label":"东区"},{"value":"710802","label":"北区"},{"value":"710803","label":"香山区"}]},{"value":"710900","label":"嘉义市","children":[{"value":"710901","label":"东区"},{"value":"710902","label":"西区"}]},{"value":"711100","label":"新北市"},{"value":"711200","label":"宜兰县"},{"value":"711300","label":"新竹县"},{"value":"711400","label":"桃园县"},{"value":"711500","label":"苗栗县"},{"value":"711700","label":"彰化县"},{"value":"711900","label":"嘉义县"},{"value":"712100","label":"云林县"},{"value":"712400","label":"屏东县"},{"value":"712500","label":"台东县"},{"value":"712600","label":"花莲县"},{"value":"712700","label":"澎湖县"}]},{"label":"香港特别行政区","value":"810000","children":[{"value":"810100","label":"香港岛","children":[{"value":"810101","label":"中西区"},{"value":"810102","label":"湾仔"},{"value":"810103","label":"东区"},{"value":"810104","label":"南区"}]},{"value":"810200","label":"九龙","children":[{"value":"810201","label":"九龙城区"},{"value":"810202","label":"油尖旺区"},{"value":"810203","label":"深水埗区"},{"value":"810204","label":"黄大仙区"},{"value":"810205","label":"观塘区"}]},{"value":"810300","label":"新界","children":[{"value":"810301","label":"北区"},{"value":"810302","label":"大埔区"},{"value":"810303","label":"沙田区"},{"value":"810304","label":"西贡区"},{"value":"810305","label":"元朗区"},{"value":"810306","label":"屯门区"},{"value":"810307","label":"荃湾区"},{"value":"810308","label":"葵青区"},{"value":"810309","label":"离岛区"}]}]},{"label":"澳门特别行政区","value":"820000","children":[{"value":"820100","label":"澳门半岛"},{"value":"820200","label":"离岛"}]},{"label":"海外","value":"990000","children":[{"value":"990100","label":"海外"}]}] diff --git a/src_bak/api/layout/index.ts b/src_bak/api/layout/index.ts deleted file mode 100644 index 8ee8b60..0000000 --- a/src_bak/api/layout/index.ts +++ /dev/null @@ -1,116 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult } from '@/api/index'; -import type { User } from '@/api/system/user/model'; -import type { UpdatePasswordParam } from './model'; -import type {CmsWebsite} from "@/api/cms/cmsWebsite/model"; -import {SERVER_API_URL} from "@/utils/server"; - -/** - * 获取网站信息 - */ -export async function getShopInfo() { - const res = await request.get>( - '/shop/getShopInfo' - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 获取当前登录的用户信息、菜单、权限、角色 - */ -export async function getUserInfo(): Promise { - const res = await request.get>(SERVER_API_URL + '/auth/user'); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -export async function updateUserInfo(data: User): Promise { - const res = await request.put>( - SERVER_API_URL + '/auth/user', - data - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 获取服务器时间(实时) - * @return - */ -export async function getServerTime() { - const res = await request.get>( - '/cms/website/getServerTime' - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 获取未来7天的日期 - * @return - */ -export async function getNext7day() { - const res = await request.get>( - '/cms/website/getNext7day' - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 向子模块传递token - * @param url - */ -export async function transferToken(url: string): Promise { - const res = await request.get>(url); - return Promise.reject(new Error(res.message)); -} - -/** - * 修改当前登录的用户密码 - */ -export async function updatePassword( - data: UpdatePasswordParam -): Promise { - const res = await request.put>( - '/auth/password', - data - ); - if (res.code === 0) { - return res.message ?? '修改成功'; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 获取微信小程序登录凭证 - */ - -export async function getWxOpenId(data: any) { - const res = await request.post>(SERVER_API_URL + '/wx-login/getWxOpenId',data); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - - -// 获取微信openId -export async function loginByOpenId(data: any) { - const res = await request.post>(SERVER_API_URL + '/wx-login/loginByOpenId', data); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/layout/model/index.ts b/src_bak/api/layout/model/index.ts deleted file mode 100644 index a3edbc1..0000000 --- a/src_bak/api/layout/model/index.ts +++ /dev/null @@ -1,29 +0,0 @@ - -/** - * 首页布局样式 - */ -export interface Layout { - // 内容区域的宽度 - width?: string; - // 文字颜色 - color?: string; - // 高亮颜色 - hover?: string; - // 背景颜色 - backgroundColor?: string; - headerStyle?: any; - siteNameStyle?: any; - showBanner?: boolean; - // 背景图片 - banner?: string; -} - -/** - * 修改密码参数 - */ -export interface UpdatePasswordParam { - // 新密码 - password: string; - // 原始密码 - oldPassword: string; -} diff --git a/src_bak/api/passport/login/index.ts b/src_bak/api/passport/login/index.ts deleted file mode 100644 index 0104c73..0000000 --- a/src_bak/api/passport/login/index.ts +++ /dev/null @@ -1,68 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult } from '@/api'; -import type { - LoginParam, - LoginResult, - CaptchaResult, - SmsCaptchaResult -} from './model'; -import {saveStorageByLoginUser, SERVER_API_URL} from "@/utils/server"; - -/** - * 账号密码登录 - */ -export async function login(data: LoginParam) { - const res = await request.post>( - SERVER_API_URL + '/login', - data - ); - if (res.code === 0) { - if (res.data?.user && res.data?.access_token) { - saveStorageByLoginUser(res.data.access_token, res.data.user) - } - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 获取验证码 - */ -export async function getCaptcha() { - const res = await request.get>( - SERVER_API_URL + '/captcha', - {} - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -export async function loginBySms(data: LoginParam) { - const res = await request.post>( - SERVER_API_URL + '/loginBySms', - data - ); - if (res.code === 0) { - if(res.data?.user){ - saveStorageByLoginUser(`${res.data?.access_token}`, res.data?.user) - } - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 发送短信验证码 - */ -export async function sendSmsCaptcha(data: LoginParam) { - const res = await request.post>( - SERVER_API_URL + '/sendSmsCaptcha', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/passport/login/model/index.ts b/src_bak/api/passport/login/model/index.ts deleted file mode 100644 index abdd71d..0000000 --- a/src_bak/api/passport/login/model/index.ts +++ /dev/null @@ -1,52 +0,0 @@ -import type { User } from '@/api/system/user/model'; -/** - * 登录参数 - */ -export interface LoginParam { - // 账号 - username?: string; - // 密码 - password?: string; - // 租户id - tenantId?: number; - // 是否记住密码 - remember?: boolean; - // 手机号码 - phone?: string; - // 短信验证码 - code?: string; - // 图形验证码Key - captchaKey?: string; - // 图形验证码文本 - captchaText?: string; -} - -/** - * 登录返回结果 - */ -export interface LoginResult { - // token - access_token?: string; - // 用户信息 - user?: User; -} - -/** - * 图形验证码返回结果 - */ -export interface CaptchaResult { - // 验证码Key - key?: string; - // 图形验证码base64数据 - base64: string; - // 验证码文本 - text: string; -} - -/** - * 短信验证码返回结果 - */ -export interface SmsCaptchaResult { - // 验证码文本 - text: string; -} diff --git a/src_bak/api/passport/qr-login/index.ts b/src_bak/api/passport/qr-login/index.ts deleted file mode 100644 index bc4c85c..0000000 --- a/src_bak/api/passport/qr-login/index.ts +++ /dev/null @@ -1,244 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult } from '@/api'; -import Taro from '@tarojs/taro'; -import {SERVER_API_URL} from "@/utils/server"; -import {getUserInfo} from "@/api/layout"; - -/** - * 扫码登录相关接口 - */ - -// 生成扫码token请求参数 -export interface GenerateQRTokenParam { - // 客户端类型:web, app, wechat - clientType?: string; - // 设备信息 - deviceInfo?: string; - // 过期时间(分钟) - expireMinutes?: number; -} - -// 生成扫码token响应 -export interface GenerateQRTokenResult { - // 扫码token - token: string; - // 二维码内容(通常是包含token的URL或JSON) - qrContent: string; - // 过期时间戳 - expireTime: number; - // 二维码图片URL(可选) - qrImageUrl?: string; -} - -// 扫码状态枚举 -export enum QRLoginStatus { - PENDING = 'pending', // 等待扫码 - SCANNED = 'scanned', // 已扫码,等待确认 - CONFIRMED = 'confirmed', // 已确认登录 - EXPIRED = 'expired', // 已过期 - CANCELLED = 'cancelled' // 已取消 -} - -// 检查扫码状态响应 -export interface QRLoginStatusResult { - // 当前状态 - status: QRLoginStatus; - // 状态描述 - message?: string; - // 如果已确认登录,返回JWT token - accessToken?: string; - // 用户信息 - userInfo?: { - userId: number; - nickname?: string; - avatar?: string; - phone?: string; - }; - // 剩余有效时间(秒) - remainingTime?: number; -} - -// 确认登录请求参数 -export interface ConfirmLoginParam { - // 扫码token - token: string; - // 用户ID - userId: number; - // 登录平台:web, app, wechat - platform?: string; - // 微信用户信息(当platform为wechat时) - wechatInfo?: { - openid?: string; - unionid?: string; - nickname?: string; - avatar?: string; - gender?: string; - }; - // 设备信息 - deviceInfo?: string; -} - -// 确认登录响应 -export interface ConfirmLoginResult { - // 是否成功 - success: boolean; - // 消息 - message: string; - // 登录用户信息 - userInfo?: { - userId: number; - nickname?: string; - avatar?: string; - phone?: string; - }; -} - -/** - * 生成扫码登录token - */ -export async function generateQRToken(data?: GenerateQRTokenParam) { - const res = await request.post>( - SERVER_API_URL + '/qr-login/generate', - { - clientType: 'wechat', - expireMinutes: 5, - ...data - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 检查扫码登录状态 - */ -export async function checkQRLoginStatus(token: string) { - const res = await request.get>( - SERVER_API_URL + `/qr-login/status/${token}` - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 确认扫码登录(通用接口) - */ -export async function confirmQRLogin(data: ConfirmLoginParam) { - const res = await request.post>( - SERVER_API_URL + '/qr-login/confirm', - data - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 微信小程序扫码登录确认(便捷接口) - */ -export async function confirmWechatQRLogin(token: string, userId: number) { - try { - // 获取微信用户信息 - const userInfo = await getUserInfo(); - - const data: ConfirmLoginParam = { - token, - userId, - platform: 'wechat', - wechatInfo: { - nickname: userInfo?.nickname, - avatar: userInfo?.avatar, - gender: userInfo?.sex - }, - deviceInfo: await getDeviceInfo() - }; - - const res = await request.post>( - SERVER_API_URL + '/qr-login/confirm', - data - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); - } catch (error: any) { - return Promise.reject(new Error(error.message || '确认登录失败')); - } -} - -/** - * 获取设备信息 - */ -async function getDeviceInfo() { - return new Promise((resolve) => { - Taro.getSystemInfo({ - success: (res) => { - const deviceInfo = { - platform: res.platform, - system: res.system, - version: res.version, - model: res.model, - brand: res.brand, - screenWidth: res.screenWidth, - screenHeight: res.screenHeight - }; - resolve(JSON.stringify(deviceInfo)); - }, - fail: () => { - resolve('unknown'); - } - }); - }); -} - -/** - * 解析二维码内容,提取token - */ -export function parseQRContent(qrContent: string): string | null { - try { - // 尝试解析JSON格式 - if (qrContent.startsWith('{')) { - const parsed = JSON.parse(qrContent); - return parsed.token || parsed.qrCodeKey || null; - } - - // 尝试解析URL格式 - if (qrContent.includes('http')) { - const url = new URL(qrContent); - // 支持多种参数名 - return url.searchParams.get('token') || - url.searchParams.get('qrCodeKey') || - url.searchParams.get('qr_code_key') || - null; - } - - // 尝试解析简单的key=value格式 - if (qrContent.includes('=')) { - const params = new URLSearchParams(qrContent); - return params.get('token') || - params.get('qrCodeKey') || - params.get('qr_code_key') || - null; - } - - // 如果是以qr-login:开头的格式 - if (qrContent.startsWith('qr-login:')) { - return qrContent.replace('qr-login:', ''); - } - - // 直接返回内容作为token(如果是32位以上的字符串) - if (qrContent.length >= 32) { - return qrContent; - } - - return null; - } catch (error) { - console.error('解析二维码内容失败:', error); - return null; - } -} diff --git a/src_bak/api/shop/shopActivity/index.ts b/src_bak/api/shop/shopActivity/index.ts deleted file mode 100644 index db90974..0000000 --- a/src_bak/api/shop/shopActivity/index.ts +++ /dev/null @@ -1,110 +0,0 @@ -import request from '@/utils/request' -import type { ApiResult, PageResult } from '@/api' -import type { - ShopActivity, - ShopActivityParam, - ActivitySignUpParams, - ActivityStats, -} from './model' -import { normalizeActivity } from './model' - -export type { ShopActivity, ActivityStatus, ActivityType } from './model' - -/** - * 分页查询活动 - */ -export async function pageShopActivity(params: ShopActivityParam) { - const res = await request.get>>( - '/shop/shop-activity/page', - params - ) - if (res.code === 0 && res.data) { - return { - ...res.data, - list: (res.data.list || []).map(normalizeActivity), - } - } - return Promise.reject(new Error(res.message)) -} - -/** - * 查询活动列表 - */ -export async function listShopActivity(params?: ShopActivityParam) { - const res = await request.get>( - '/shop/shop-activity', - params - ) - if (res.code === 0 && res.data) { - return res.data.map(normalizeActivity) - } - return Promise.reject(new Error(res.message)) -} - -/** - * 根据ID查询活动 - */ -export async function getShopActivity(id: number) { - const res = await request.get>( - '/shop/shop-activity/' + id - ) - if (res.code === 0 && res.data) { - return normalizeActivity(res.data) - } - return Promise.reject(new Error(res.message)) -} - -/** - * 报名活动 - */ -export async function signUpActivity(params: ActivitySignUpParams) { - const res = await request.post>( - '/shop/shop-activity/sign-up', - params - ) - if (res.code === 0) { - return res.message - } - return Promise.reject(new Error(res.message)) -} - -/** - * 取消报名 - */ -export async function cancelSignUpActivity(activityId: number) { - const res = await request.post>( - '/shop/shop-activity/cancel-sign-up', - { activityId } - ) - if (res.code === 0) { - return res.message - } - return Promise.reject(new Error(res.message)) -} - -/** - * 获取活动报名状态 - */ -export async function getSignUpStatus(activityId: number) { - const res = await request.get>( - '/shop/shop-activity/sign-up-status', - { activityId } - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message)) -} - -/** - * 获取活动统计 - */ -export async function getActivityStats() { - const res = await request.get>( - '/shop/shop-activity/stats' - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message)) -} diff --git a/src_bak/api/shop/shopActivity/model/index.ts b/src_bak/api/shop/shopActivity/model/index.ts deleted file mode 100644 index b67d7de..0000000 --- a/src_bak/api/shop/shopActivity/model/index.ts +++ /dev/null @@ -1,89 +0,0 @@ -/** - * 活动模型 - */ - -// 活动类型(前端语义化) -export type ActivityType = 'discount' | 'full_reduction' | 'seckill' | 'group_buy' | 'flash_sale' - -// 活动状态(前端语义化) -export type ActivityStatus = 'upcoming' | 'ongoing' | 'ended' | 'cancelled' - -// 活动数据(与后端字段对齐) -export interface ShopActivity { - id: number - name: string - image: string - banner?: string - startTime: string - endTime: string - /** 后端返回整数: 0=未开始 1=进行中 2=已结束,前端通过 normalizeActivity 转为语义化字符串 */ - status: ActivityStatus | number - /** 后端返回整数: 1=满减 2=折扣 3=秒杀 4=拼团 */ - type: ActivityType | number - typeName?: string - description: string - participants?: number - maxParticipants?: number - discountRate?: number - reductionAmount?: number - minAmount?: number - rules?: string - tenantId?: number - createTime: string - updateTime?: string -} - -// 活动查询参数 -export interface ShopActivityParam { - page?: number - limit?: number - status?: number | ActivityStatus - type?: number | ActivityType - keywords?: string -} - -// 活动报名参数 -export interface ActivitySignUpParams { - activityId: number - userId?: number - contactPhone?: string - remark?: string -} - -// 活动统计 -export interface ActivityStats { - total: number - ongoing: number - upcoming: number - ended: number - totalParticipants: number -} - -// 后端整数状态 → 前端语义化状态 -export function normalizeActivityStatus(status: number | ActivityStatus): ActivityStatus { - if (typeof status === 'string') return status - const map: Record = { 0: 'upcoming', 1: 'ongoing', 2: 'ended' } - return map[status] ?? 'ended' -} - -// 后端整数类型 → 前端语义化类型 -export function normalizeActivityType(type: number | ActivityType): ActivityType { - if (typeof type === 'string') return type - const map: Record = { - 1: 'full_reduction', - 2: 'discount', - 3: 'seckill', - 4: 'group_buy', - } - return map[type] ?? 'discount' -} - -// 规范化活动对象(处理后端整数字段) -export function normalizeActivity(a: ShopActivity): ShopActivity & { status: ActivityStatus; type: ActivityType } { - return { - ...a, - participants: a.participants ?? 0, - status: normalizeActivityStatus(a.status as number), - type: normalizeActivityType(a.type as number), - } -} diff --git a/src_bak/api/shop/shopAfterSale/index.ts b/src_bak/api/shop/shopAfterSale/index.ts deleted file mode 100644 index 2820d18..0000000 --- a/src_bak/api/shop/shopAfterSale/index.ts +++ /dev/null @@ -1,154 +0,0 @@ -import request from '@/utils/request' -import type { ApiResult, PageResult } from '@/api' - -// 售后类型 -export type AfterSaleType = 'refund' | 'return' | 'exchange' | 'repair' - -// 售后状态 -export type AfterSaleStatus = - | 'pending' // 待审核 - | 'approved' // 已同意 - | 'rejected' // 已拒绝 - | 'processing' // 处理中 - | 'completed' // 已完成 - | 'cancelled' // 已取消 - -// 售后进度记录 -export interface ProgressRecord { - id: string - time: string - status: string - description: string - operator?: string - remark?: string -} - -// 售后详情 -export interface AfterSaleDetail { - id: string - orderId: string - orderNo: string - goodsName?: string - type: AfterSaleType - status: AfterSaleStatus - reason: string - description: string - amount: number - applyTime: string - processTime?: string - completeTime?: string - rejectReason?: string - contactPhone?: string - evidenceImages: string[] - progressRecords: ProgressRecord[] -} - -// 售后申请参数 -export interface AfterSaleApplyParams { - orderId: string - type: AfterSaleType - reason: string - description?: string - amount?: number - contactPhone?: string - evidenceImages?: string[] - goodsItems?: Array<{ goodsId: string; quantity: number }> -} - -// 售后列表查询参数 -export interface AfterSaleListParams { - page?: number - pageSize?: number - status?: AfterSaleStatus - type?: AfterSaleType -} - -// 售后类型映射 -export const AFTER_SALE_TYPE_MAP: Record = { - refund: '退款', - return: '退货', - exchange: '换货', - repair: '维修', -} - -// 售后状态映射 -export const AFTER_SALE_STATUS_MAP: Record = { - pending: '待审核', - approved: '已同意', - rejected: '已拒绝', - processing: '处理中', - completed: '已完成', - cancelled: '已取消', -} - -// 格式化售后状态 -export const formatAfterSaleStatus = (status: AfterSaleStatus): { - text: string - color: string - icon: string -} => { - const statusMap: Record = { - pending: { text: '待审核', color: 'text-orange-500', icon: '⏳' }, - approved: { text: '已同意', color: 'text-green-500', icon: '✅' }, - rejected: { text: '已拒绝', color: 'text-red-500', icon: '❌' }, - processing: { text: '处理中', color: 'text-blue-500', icon: '🔄' }, - completed: { text: '已完成', color: 'text-green-500', icon: '✅' }, - cancelled: { text: '已取消', color: 'text-gray-400', icon: '⭕' }, - } - return statusMap[status] || { text: status, color: 'text-gray-400', icon: '📋' } -} - -/** - * 申请售后 - */ -export async function applyAfterSale(data: AfterSaleApplyParams) { - const res = await request.post>( - '/shop/shop-after-sale/apply', - data - ) - if (res.code === 0) { - return res.data - } - return Promise.reject(new Error(res.message)) -} - -/** - * 分页查询售后列表 - */ -export async function pageAfterSaleList(params: AfterSaleListParams) { - const res = await request.get>>( - '/shop/shop-after-sale/page', - params - ) - if (res.code === 0) { - return res.data - } - return Promise.reject(new Error(res.message)) -} - -/** - * 查询售后详情 - */ -export async function getAfterSaleDetail(id: string) { - const res = await request.get>( - '/shop/shop-after-sale/' + id - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message)) -} - -/** - * 撤销售后申请 - */ -export async function cancelAfterSale(id: string) { - const res = await request.post>( - '/shop/shop-after-sale/cancel', - { id } - ) - if (res.code === 0) { - return res.message - } - return Promise.reject(new Error(res.message)) -} diff --git a/src_bak/api/shop/shopArticle/index.ts b/src_bak/api/shop/shopArticle/index.ts deleted file mode 100644 index 68fb5c5..0000000 --- a/src_bak/api/shop/shopArticle/index.ts +++ /dev/null @@ -1,101 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopArticle, ShopArticleParam } from './model'; - -/** - * 分页查询商品文章 - */ -export async function pageShopArticle(params: ShopArticleParam) { - const res = await request.get>>( - '/shop/shop-article/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询商品文章列表 - */ -export async function listShopArticle(params?: ShopArticleParam) { - const res = await request.get>( - '/shop/shop-article', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加商品文章 - */ -export async function addShopArticle(data: ShopArticle) { - const res = await request.post>( - '/shop/shop-article', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改商品文章 - */ -export async function updateShopArticle(data: ShopArticle) { - const res = await request.put>( - '/shop/shop-article', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除商品文章 - */ -export async function removeShopArticle(id?: number) { - const res = await request.del>( - '/shop/shop-article/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除商品文章 - */ -export async function removeBatchShopArticle(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-article/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询商品文章 - */ -export async function getShopArticle(id: number) { - const res = await request.get>( - '/shop/shop-article/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopArticle/model/index.ts b/src_bak/api/shop/shopArticle/model/index.ts deleted file mode 100644 index 18e7b58..0000000 --- a/src_bak/api/shop/shopArticle/model/index.ts +++ /dev/null @@ -1,123 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 商品文章 - */ -export interface ShopArticle { - // 文章ID - articleId?: number; - // 文章标题 - title?: string; - // 文章类型 0常规 1视频 - type?: number; - // 模型 - model?: string; - // 详情页模板 - detail?: string; - // 文章分类ID - categoryId?: number; - // 上级id, 0是顶级 - parentId?: number; - // 话题 - topic?: string; - // 标签 - tags?: string; - // 封面图 - image?: string; - // 封面图宽 - imageWidth?: number; - // 封面图高 - imageHeight?: number; - // 付费金额 - price?: string; - // 开始时间 - startTime?: string; - // 结束时间 - endTime?: string; - // 来源 - source?: string; - // 产品概述 - overview?: string; - // 虚拟阅读量(仅用作展示) - virtualViews?: number; - // 实际阅读量 - actualViews?: number; - // 评分 - rate?: string; - // 列表显示方式(10小图展示 20大图展示) - showType?: number; - // 访问密码 - password?: string; - // 可见类型 0所有人 1登录可见 2密码可见 - permission?: number; - // 发布来源客户端 (APP、H5、小程序等) - platform?: string; - // 文章附件 - files?: string; - // 视频地址 - video?: string; - // 接受的文件类型 - accept?: string; - // 经度 - longitude?: string; - // 纬度 - latitude?: string; - // 所在省份 - province?: string; - // 所在城市 - city?: string; - // 所在辖区 - region?: string; - // 街道地址 - address?: string; - // 点赞数 - likes?: number; - // 评论数 - commentNumbers?: number; - // 提醒谁看 - toUsers?: string; - // 作者 - author?: string; - // 推荐 - recommend?: number; - // 报名人数 - bmUsers?: number; - // 用户ID - userId?: number; - // 项目ID - projectId?: number; - // 语言 - lang?: string; - // 关联默认语言的文章ID - langArticleId?: number; - // 是否自动翻译 - translation?: string; - // 编辑器类型 0 Markdown编辑器 1 富文本编辑器 - editor?: string; - // pdf文件地址 - pdfUrl?: string; - // 版本号 - version?: number; - // 排序(数字越小越靠前) - sortNumber?: number; - // 备注 - comments?: string; - // 状态, 0已发布, 1待审核 2已驳回 3违规内容 - status?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 商品文章搜索条件 - */ -export interface ShopArticleParam extends PageParam { - articleId?: number; - keywords?: string; -} diff --git a/src_bak/api/shop/shopBooking/index.ts b/src_bak/api/shop/shopBooking/index.ts deleted file mode 100644 index 2c003e5..0000000 --- a/src_bak/api/shop/shopBooking/index.ts +++ /dev/null @@ -1,121 +0,0 @@ -import request from '@/utils/request' -import type { ApiResult, PageResult } from '@/api' -import type { - ShopBooking, - ShopBookingParam, - ShopBookingParams, - BookingStats, -} from './model' - -/** - * 分页查询预约订单 - */ -export async function pageShopBooking(params: ShopBookingParam) { - const res = await request.get>>( - '/shop/shop-booking/page', - params - ) - if (res.code === 0) { - return res.data - } - return Promise.reject(new Error(res.message)) -} - -/** - * 查询预约订单列表 - */ -export async function listShopBooking(params?: ShopBookingParam) { - const res = await request.get>( - '/shop/shop-booking', - params - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message)) -} - -/** - * 根据ID查询预约订单 - */ -export async function getShopBooking(id: string) { - const res = await request.get>( - '/shop/shop-booking/' + id - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message)) -} - -/** - * 创建预约订单 - */ -export async function createShopBooking(data: ShopBookingParams) { - const res = await request.post>( - '/shop/shop-booking', - data - ) - if (res.code === 0) { - return res.message - } - return Promise.reject(new Error(res.message)) -} - -/** - * 修改预约订单 - */ -export async function updateShopBooking(data: ShopBookingParams) { - const res = await request.put>( - '/shop/shop-booking', - data - ) - if (res.code === 0) { - return res.message - } - return Promise.reject(new Error(res.message)) -} - -/** - * 取消预约订单 - */ -export async function cancelShopBooking(id?: string) { - const res = await request.del>( - '/shop/shop-booking/' + id - ) - if (res.code === 0) { - return res.message - } - return Promise.reject(new Error(res.message)) -} - -/** - * 改签预约订单 - */ -export async function rescheduleShopBooking(data: { - bookingId: string - newDate: string - newTime: string -}) { - const res = await request.post>( - '/shop/shop-booking/reschedule', - data - ) - if (res.code === 0) { - return res.message - } - return Promise.reject(new Error(res.message)) -} - -/** - * 获取预约统计 - */ -export async function getBookingStats() { - const res = await request.get>( - '/shop/shop-booking/stats' - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message)) -} diff --git a/src_bak/api/shop/shopBooking/model/index.ts b/src_bak/api/shop/shopBooking/model/index.ts deleted file mode 100644 index 79d5be4..0000000 --- a/src_bak/api/shop/shopBooking/model/index.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * 预约订单模型 - */ - -// 预约状态 -export type BookingStatus = 'pending' | 'confirmed' | 'in_progress' | 'completed' | 'cancelled' | 'rescheduled' - -// 预约订单数据 -export interface ShopBooking { - id: number | string - bookingNo: string // 预约编号 - storeId: number // 店铺ID - storeName: string // 店铺名称 - storePhone?: string // 门店服务电话 - serviceId: number // 服务ID - serviceName: string // 服务名称 - bookingDate: string // 预约日期 - bookingTime: string // 预约时间段 - status: BookingStatus // 预约状态 - price: number // 价格 - createTime: string // 创建时间 - updateTime?: string // 更新时间 - remark?: string // 备注 - contactName?: string // 联系人 - contactPhone?: string // 联系电话 - address?: string // 地址 -} - -// 预约查询参数 -export interface ShopBookingParam { - page?: number - limit?: number - status?: BookingStatus // 按状态筛选 - storeId?: number // 按店铺筛选 - startDate?: string // 预约日期范围-起始 - endDate?: string // 预约日期范围-结束 - keywords?: string // 关键词搜索 - sortBy?: string // 排序方式(createTime, bookingDate) -} - -// 创建/更新预约参数 -export interface ShopBookingParams extends ShopBooking {} - -// 预约统计 -export interface BookingStats { - total: number // 总预约数 - pending: number // 待服务 - confirmed: number // 已确认 - inProgress: number // 进行中 - completed: number // 已完成 - cancelled: number // 已取消 - rescheduled: number // 已改签 -} diff --git a/src_bak/api/shop/shopCart/index.ts b/src_bak/api/shop/shopCart/index.ts deleted file mode 100644 index 16ac413..0000000 --- a/src_bak/api/shop/shopCart/index.ts +++ /dev/null @@ -1,153 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult } from '@/api'; -import type { ShopCart, ShopCartParam, AddToCartParam, UpdateCartNumParam } from './model'; - -/** - * 获取购物车列表 - */ -export async function listShopCart(params?: ShopCartParam) { - const res = await request.get>( - '/shop/shop-cart', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 获取购物车分页列表 - */ -export async function pageShopCart(params: ShopCartParam) { - const res = await request.get>( - '/shop/shop-cart/page', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 获取购物车数量 - */ -export async function getShopCartCount() { - const res = await request.get>( - '/shop/shop-cart/count' - ); - if (res.code === 0 && res.data) { - return res.data.count; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加商品到购物车 - */ -export async function addToCart(data: AddToCartParam) { - const res = await request.post>( - '/shop/shop-cart', - data - ); - if (res.code === 0) { - return res.message || '添加成功'; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 更新购物车商品数量 - */ -export async function updateCartNum(data: UpdateCartNumParam) { - const res = await request.put>( - '/shop/shop-cart/' + data.id, - { quantity: data.num } - ); - if (res.code === 0) { - return res.message || '更新成功'; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 更新购物车商品选中状态 - */ -export async function updateCartChecked(id: number, checked: boolean) { - const res = await request.put>( - '/shop/shop-cart/' + id, - { selected: checked } - ); - if (res.code === 0) { - return res.message || '更新成功'; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 全选/取消全选购物车 - */ -export async function updateCartAllChecked(checked: boolean) { - const res = await request.put>( - '/shop/shop-cart/selected', - { selected: checked } - ); - if (res.code === 0) { - return res.message || '更新成功'; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除购物车商品 - */ -export async function removeShopCart(id: number) { - const res = await request.del>( - '/shop/shop-cart/' + id - ); - if (res.code === 0) { - return res.message || '删除成功'; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除购物车商品 - */ -export async function removeBatchShopCart(ids: number[]) { - const res = await request.del>( - '/shop/shop-cart/batch', - { ids } - ); - if (res.code === 0) { - return res.message || '删除成功'; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 清空购物车 - */ -export async function clearShopCart() { - const res = await request.del>( - '/shop/shop-cart/clear' - ); - if (res.code === 0) { - return res.message || '清空成功'; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 获取购物车详情 - */ -export async function getShopCart(id: number) { - const res = await request.get>( - '/shop/shop-cart/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopCart/model/index.ts b/src_bak/api/shop/shopCart/model/index.ts deleted file mode 100644 index b8ed1ad..0000000 --- a/src_bak/api/shop/shopCart/model/index.ts +++ /dev/null @@ -1,74 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 购物车项 - */ -export interface ShopCart { - // 主键ID - id?: number; - // 用户ID - userId?: number; - // 商品ID - goodsId?: number; - // SKU ID - skuId?: number; - // 数量 - num?: number; - // 商品名称 - goodsName?: string; - // 商品图片 - goodsImage?: string; - // SKU价格 - skuPrice?: string; - // SKU规格 - skuSpec?: string; - // 库存 - stock?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 更新时间 - updateTime?: string; -} - -/** - * 购物车项扩展(包含选中状态,用于前端展示) - */ -export interface ShopCartItem extends ShopCart { - // 是否选中 - checked?: boolean; - // 商品详情 - product?: any; - // SKU详情 - sku?: any; -} - -/** - * 添加到购物车参数 - */ -export interface AddToCartParam { - // 商品ID - goodsId: number; - // SKU ID(单规格可不传) - skuId?: number; - // 数量 - num: number; -} - -/** - * 更新购物车数量参数 - */ -export interface UpdateCartNumParam { - // 购物车ID - id: number; - // 数量 - num: number; -} - -/** - * 购物车搜索条件 - */ -export interface ShopCartParam extends PageParam { - userId?: number; -} diff --git a/src_bak/api/shop/shopChatConversation/index.ts b/src_bak/api/shop/shopChatConversation/index.ts deleted file mode 100644 index 6a5ba5b..0000000 --- a/src_bak/api/shop/shopChatConversation/index.ts +++ /dev/null @@ -1,101 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopChatConversation, ShopChatConversationParam } from './model'; - -/** - * 分页查询聊天会话表 - */ -export async function pageShopChatConversation(params: ShopChatConversationParam) { - const res = await request.get>>( - '/shop/shop-chat-conversation/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询聊天会话表列表 - */ -export async function listShopChatConversation(params?: ShopChatConversationParam) { - const res = await request.get>( - '/shop/shop-chat-conversation', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加聊天会话表 - */ -export async function addShopChatConversation(data: ShopChatConversation) { - const res = await request.post>( - '/shop/shop-chat-conversation', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改聊天会话表 - */ -export async function updateShopChatConversation(data: ShopChatConversation) { - const res = await request.put>( - '/shop/shop-chat-conversation', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除聊天会话表 - */ -export async function removeShopChatConversation(id?: number) { - const res = await request.del>( - '/shop/shop-chat-conversation/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除聊天会话表 - */ -export async function removeShopBatchChatConversation(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-chat-conversation/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询聊天会话表 - */ -export async function getShopChatConversation(id: number) { - const res = await request.get>( - '/shop/shop-chat-conversation/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopChatConversation/model/index.ts b/src_bak/api/shop/shopChatConversation/model/index.ts deleted file mode 100644 index ea6a9b3..0000000 --- a/src_bak/api/shop/shopChatConversation/model/index.ts +++ /dev/null @@ -1,37 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 聊天消息表 - */ -export interface ShopChatConversation { - // 自增ID - id?: number; - // 用户ID - userId?: number; - // 好友ID - friendId?: number; - // 消息类型 - type?: number; - // 消息内容 - content?: string; - // 未读消息 - unRead?: number; - // 状态, 0未读, 1已读 - status?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 注册时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 聊天消息表搜索条件 - */ -export interface ShopChatConversationParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/shop/shopChatMessage/index.ts b/src_bak/api/shop/shopChatMessage/index.ts deleted file mode 100644 index 4667ce7..0000000 --- a/src_bak/api/shop/shopChatMessage/index.ts +++ /dev/null @@ -1,115 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopChatMessage, ShopChatMessageParam } from './model'; - -/** - * 分页查询聊天消息表 - */ -export async function pageShopChatMessage(params: ShopChatMessageParam) { - const res = await request.get>>( - '/shop/shop-chat-message/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询聊天消息表列表 - */ -export async function listShopChatMessage(params?: ShopChatMessageParam) { - const res = await request.get>( - '/shop/shop-chat-message', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加聊天消息表 - */ -export async function addShopChatMessage(data: ShopChatMessage) { - const res = await request.post>( - '/shop/shop-chat-message', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加聊天消息表 - */ -export async function addShopBatchChatMessage(data: ShopChatMessage[]) { - const res = await request.post>( - '/shop/shop-chat-message/batch', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改聊天消息表 - */ -export async function updateShopChatMessage(data: ShopChatMessage) { - const res = await request.put>( - '/shop/shop-chat-message', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除聊天消息表 - */ -export async function removeShopChatMessage(id?: number) { - const res = await request.del>( - '/shop/shop-chat-message/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除聊天消息表 - */ -export async function removeShopBatchChatMessage(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-chat-message/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询聊天消息表 - */ -export async function getShopChatMessage(id: number) { - const res = await request.get>( - '/shop/shop-chat-message/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopChatMessage/model/index.ts b/src_bak/api/shop/shopChatMessage/model/index.ts deleted file mode 100644 index 411d45c..0000000 --- a/src_bak/api/shop/shopChatMessage/model/index.ts +++ /dev/null @@ -1,63 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 聊天消息表 - */ -export interface ShopChatMessage { - // 自增ID - id?: number; - // 发送人ID - formUserId?: number; - // 发送人名称 - formUserName?: string; - // 发送人头像 - formUserAvatar?: string; - // 发送人手机号 - formUserPhone?: string; - // 发送人别名 - formUserAlias?: string; - // 接收人ID - toUserId?: number; - // 接收人名称 - toUserName?: string; - // 接收人头像 - toUserAvatar?: string; - // 接收人手机号 - toUserPhone?: string; - // 接收人别名 - toUserAlias?: string; - // 消息类型 - type?: string; - // 消息内容 - content?: string; - // 屏蔽接收方 - sideTo?: number; - // 屏蔽发送方 - sideFrom?: number; - // 是否撤回 - withdraw?: number; - // 文件信息 - fileInfo?: string; - // 批量发送 - toUserIds?: any[]; - // 存在联系方式 - hasContact?: number; - // 状态, 0未读, 1已读 - status?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 注册时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 聊天消息表搜索条件 - */ -export interface ShopChatMessageParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/shop/shopCommissionRecord.ts b/src_bak/api/shop/shopCommissionRecord.ts deleted file mode 100644 index 350851a..0000000 --- a/src_bak/api/shop/shopCommissionRecord.ts +++ /dev/null @@ -1,29 +0,0 @@ -import request from '@/utils/request'; - -/** - * 获取我的佣金记录 - */ -export function getMyCommissionList(params: any) { - return request.get('/shop/shop-commission-record/my/list', params); -} - -/** - * 获取佣金统计 - */ -export function getCommissionStats() { - return request.get('/shop/shop-commission-record/my/stats'); -} - -/** - * 获取佣金记录列表(管理员) - */ -export function getCommissionList(params: any) { - return request.get('/shop/shop-commission-record/page', params); -} - -/** - * 手动触发佣金结算(管理员) - */ -export function settleCommission() { - return request.post('/shop/shop-commission-record/settle'); -} diff --git a/src_bak/api/shop/shopCommissionRole/index.ts b/src_bak/api/shop/shopCommissionRole/index.ts deleted file mode 100644 index 07a2b6c..0000000 --- a/src_bak/api/shop/shopCommissionRole/index.ts +++ /dev/null @@ -1,101 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopCommissionRole, ShopCommissionRoleParam } from './model'; - -/** - * 分页查询分红角色 - */ -export async function pageShopCommissionRole(params: ShopCommissionRoleParam) { - const res = await request.get>>( - '/shop/shop-commission-role/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询分红角色列表 - */ -export async function listShopCommissionRole(params?: ShopCommissionRoleParam) { - const res = await request.get>( - '/shop/shop-commission-role', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加分红角色 - */ -export async function addShopCommissionRole(data: ShopCommissionRole) { - const res = await request.post>( - '/shop/shop-commission-role', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改分红角色 - */ -export async function updateShopCommissionRole(data: ShopCommissionRole) { - const res = await request.put>( - '/shop/shop-commission-role', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除分红角色 - */ -export async function removeShopCommissionRole(id?: number) { - const res = await request.del>( - '/shop/shop-commission-role/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除分红角色 - */ -export async function removeBatchShopCommissionRole(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-commission-role/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询分红角色 - */ -export async function getShopCommissionRole(id: number) { - const res = await request.get>( - '/shop/shop-commission-role/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopCommissionRole/model/index.ts b/src_bak/api/shop/shopCommissionRole/model/index.ts deleted file mode 100644 index 2881941..0000000 --- a/src_bak/api/shop/shopCommissionRole/model/index.ts +++ /dev/null @@ -1,35 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 分红角色 - */ -export interface ShopCommissionRole { - // - id?: number; - // - title?: string; - // - provinceId?: number; - // - cityId?: number; - // - regionId?: number; - // 状态, 0正常, 1异常 - status?: number; - // 备注 - comments?: string; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // - sortNumber?: number; -} - -/** - * 分红角色搜索条件 - */ -export interface ShopCommissionRoleParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/shop/shopCoupon/index.ts b/src_bak/api/shop/shopCoupon/index.ts deleted file mode 100644 index be92c82..0000000 --- a/src_bak/api/shop/shopCoupon/index.ts +++ /dev/null @@ -1,115 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopCoupon, ShopCouponParam, ShopCouponWithTake } from './model'; - -/** - * 分页查询优惠券 - */ -export async function pageShopCoupon(params: ShopCouponParam) { - const res = await request.get>>( - '/shop/shop-coupon/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询优惠券列表 - */ -export async function listShopCoupon(params?: ShopCouponParam) { - const res = await request.get>( - '/shop/shop-coupon', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加优惠券 - */ -export async function addShopCoupon(data: ShopCoupon) { - const res = await request.post>( - '/shop/shop-coupon', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改优惠券 - */ -export async function updateShopCoupon(data: ShopCoupon) { - const res = await request.put>( - '/shop/shop-coupon', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除优惠券 - */ -export async function removeShopCoupon(id?: number) { - const res = await request.del>( - '/shop/shop-coupon/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除优惠券 - */ -export async function removeBatchShopCoupon(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-coupon/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询优惠券 - */ -export async function getShopCoupon(id: number) { - const res = await request.get>( - '/shop/shop-coupon/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 领券中心-查询可领取优惠券列表(含是否已领取状态) - */ -export async function listCouponCenter(params?: ShopCouponParam) { - const res = await request.post>( - '/shop/shop-coupon/list', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopCoupon/model/index.ts b/src_bak/api/shop/shopCoupon/model/index.ts deleted file mode 100644 index 9fb4401..0000000 --- a/src_bak/api/shop/shopCoupon/model/index.ts +++ /dev/null @@ -1,97 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 优惠券 - */ -export interface ShopCoupon { - // id - id?: number; - // 优惠券名称 - name?: string; - // 优惠券描述 - description?: string; - // 优惠券类型(10满减券 20折扣券 30免费券 40无门槛券 50场地使用券) - type?: number; - // 满减券-减免金额 - reducePrice?: string; - // 折扣券-折扣率(0-100) - discount?: number; - // 最低消费金额 - minPrice?: string; - // 到期类型(10领取后生效 20固定时间) - expireType?: number; - // 领取后生效-有效天数 - expireDay?: number; - // 有效期开始时间 - startTime?: string; - // 有效期结束时间 - endTime?: string; - // 适用范围(10全部商品 20指定商品 30指定分类) - applyRange?: number; - // 适用范围配置(json格式) - applyRangeConfig?: string; - // 是否过期(0未过期 1已过期) - isExpire?: number; - // 排序(数字越小越靠前) - sortNumber?: number; - // 状态, 0正常, 1禁用 - status?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 创建用户ID - userId?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; - // 发放总数量(-1表示无限制) - totalCount?: number; - // 已发放数量 - issuedCount?: number; - // 每人限领数量(-1表示无限制) - limitPerUser?: number; - // 是否启用(0禁用 1启用) - enabled?: string; - // 发放对象(0全部用户 1仅会员 2仅非会员 3指定用户) - receiveTarget?: number; - // 指定用户ID列表(JSON数组格式),receiveTarget=3时使用 - receiveUserIds?: string; - // 场地使用券-场地类型 - venueType?: number; - // 场地使用券-指定场地ID - venueId?: number; - // 场地使用券-可用次数(-1表示无限制) - useCount?: number; - // 场地使用券-使用时长(分钟) - useDuration?: number; - sortBy?: string; -} - -/** - * 优惠券搜索条件 - */ -export interface ShopCouponParam extends PageParam { - id?: number; - status?: number; - isExpire?: number; - sortBy?: string; - sortOrder?: 'asc' | 'desc'; - keywords?: string; - enabled?: number; - type?: number; - minAmount?: number; -} - -/** - * 领券中心优惠券(含是否已领取) - */ -export interface ShopCouponWithTake extends ShopCoupon { - // 是否已领取 - hasTake?: boolean; - // 用户已领取数量 - userTakeNum?: number; - // 用户已使用数量 - userUseNum?: number; -} diff --git a/src_bak/api/shop/shopCustomerService/index.ts b/src_bak/api/shop/shopCustomerService/index.ts deleted file mode 100644 index 251739f..0000000 --- a/src_bak/api/shop/shopCustomerService/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -import request from '@/utils/request' -import type { CustomerServiceInfo } from './model' - -/** 获取客服信息 */ -export function getCustomerServiceInfo() { - return request.post('/shopCustomerService/getInfo', {}) -} - -/** 发送消息 */ -export function sendMessage(data: { content: string; type: 'text' | 'image' }) { - return request.post<{ success: boolean }>('/shopCustomerService/sendMessage', data) -} - -/** 获取聊天记录 */ -export function getChatHistory(params: { page?: number; pageSize?: number } = {}) { - return request.post<{ items: any[]; total: number }>('/shopCustomerService/getHistory', params) -} diff --git a/src_bak/api/shop/shopCustomerService/model.ts b/src_bak/api/shop/shopCustomerService/model.ts deleted file mode 100644 index 9a3f2a3..0000000 --- a/src_bak/api/shop/shopCustomerService/model.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** 客服消息 */ -export interface CustomerServiceMessage { - id: number - userId: number - content: string - type: 'text' | 'image' - isFromUser: boolean - createTime: string -} - -/** 客服会话 */ -export interface CustomerServiceSession { - id: number - userId: number - status: number - createTime: string - messages?: CustomerServiceMessage[] -} - -/** 客服信息 */ -export interface CustomerServiceInfo { - online: boolean - onlineHours: string - hotline: string - wechat: string -} diff --git a/src_bak/api/shop/shopDealerApply/index.ts b/src_bak/api/shop/shopDealerApply/index.ts deleted file mode 100644 index c974214..0000000 --- a/src_bak/api/shop/shopDealerApply/index.ts +++ /dev/null @@ -1,155 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopDealerApply, ShopDealerApplyParam } from './model'; - -/** - * 分页查询分销商申请记录表 - */ -export async function pageShopDealerApply(params: ShopDealerApplyParam) { - const res = await request.get>>( - '/shop/shop-dealer-apply/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询分销商申请记录表列表 - */ -export async function listShopDealerApply(params?: ShopDealerApplyParam) { - const res = await request.get>( - '/shop/shop-dealer-apply', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加分销商申请记录表 - */ -export async function addShopDealerApply(data: ShopDealerApply) { - try { - const res = await request.post>( - '/shop/shop-dealer-apply', - data - ); - if (res.code === 0) { - return res.message || '提交成功'; - } - // 直接抛出包含服务器错误信息的错误 - const error = new Error(res.message || '提交失败'); - (error as any).code = res.code; - (error as any).data = res.data; - throw error; - } catch (error: any) { - // 如果已经是我们处理过的错误,直接抛出 - if (error.message && error.code !== undefined) { - throw error; - } - - // 处理网络错误或其他异常 - console.error('添加分销商申请失败:', error); - - // 尝试从响应中提取错误信息 - if (error.response?.data) { - const responseData = error.response.data; - if (responseData.message) { - const newError = new Error(responseData.message); - (newError as any).code = responseData.code; - throw newError; - } - } - - // 默认错误处理 - throw new Error(error.message || '网络错误,请重试'); - } -} - -/** - * 修改分销商申请记录表 - */ -export async function updateShopDealerApply(data: ShopDealerApply) { - try { - const res = await request.put>( - '/shop/shop-dealer-apply', - data - ); - if (res.code === 0) { - return res.message || '修改成功'; - } - // 直接抛出包含服务器错误信息的错误 - const error = new Error(res.message || '修改失败'); - (error as any).code = res.code; - (error as any).data = res.data; - throw error; - } catch (error: any) { - // 如果已经是我们处理过的错误,直接抛出 - if (error.message && error.code !== undefined) { - throw error; - } - - // 处理网络错误或其他异常 - console.error('修改分销商申请失败:', error); - - // 尝试从响应中提取错误信息 - if (error.response?.data) { - const responseData = error.response.data; - if (responseData.message) { - const newError = new Error(responseData.message); - (newError as any).code = responseData.code; - throw newError; - } - } - - // 默认错误处理 - throw new Error(error.message || '网络错误,请重试'); - } -} - -/** - * 删除分销商申请记录表 - */ -export async function removeShopDealerApply(id?: number) { - const res = await request.del>( - '/shop/shop-dealer-apply/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除分销商申请记录表 - */ -export async function removeBatchShopDealerApply(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-dealer-apply/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询分销商申请记录表 - */ -export async function getShopDealerApply(id: number) { - const res = await request.get>( - '/shop/shop-dealer-apply/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopDealerApply/model/index.ts b/src_bak/api/shop/shopDealerApply/model/index.ts deleted file mode 100644 index 8ea27cc..0000000 --- a/src_bak/api/shop/shopDealerApply/model/index.ts +++ /dev/null @@ -1,43 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 分销商申请记录表 - */ -export interface ShopDealerApply { - // 主键ID - applyId?: number; - // 用户ID - userId?: number; - // 姓名 - realName?: string; - // 手机号 - mobile?: string; - // 推荐人用户ID - refereeId?: number; - // 申请方式(10需后台审核 20无需审核) - applyType?: number; - // 申请时间 - applyTime?: number; - // 审核状态 (10待审核 20审核通过 30驳回) - applyStatus?: number; - // 审核时间 - auditTime?: number; - // 驳回原因 - rejectReason?: string; - // 商城ID - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 分销商申请记录表搜索条件 - */ -export interface ShopDealerApplyParam extends PageParam { - applyId?: number; - mobile?: string; - userId?: number; - keywords?: string; -} diff --git a/src_bak/api/shop/shopDealerCapital/index.ts b/src_bak/api/shop/shopDealerCapital/index.ts deleted file mode 100644 index 4c4b112..0000000 --- a/src_bak/api/shop/shopDealerCapital/index.ts +++ /dev/null @@ -1,101 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopDealerCapital, ShopDealerCapitalParam } from './model'; - -/** - * 分页查询分销商资金明细表 - */ -export async function pageShopDealerCapital(params: ShopDealerCapitalParam) { - const res = await request.get>>( - '/shop/shop-dealer-capital/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询分销商资金明细表列表 - */ -export async function listShopDealerCapital(params?: ShopDealerCapitalParam) { - const res = await request.get>( - '/shop/shop-dealer-capital', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加分销商资金明细表 - */ -export async function addShopDealerCapital(data: ShopDealerCapital) { - const res = await request.post>( - '/shop/shop-dealer-capital', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改分销商资金明细表 - */ -export async function updateShopDealerCapital(data: ShopDealerCapital) { - const res = await request.put>( - '/shop/shop-dealer-capital', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除分销商资金明细表 - */ -export async function removeShopDealerCapital(id?: number) { - const res = await request.del>( - '/shop/shop-dealer-capital/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除分销商资金明细表 - */ -export async function removeBatchShopDealerCapital(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-dealer-capital/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询分销商资金明细表 - */ -export async function getShopDealerCapital(id: number) { - const res = await request.get>( - '/shop/shop-dealer-capital/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopDealerCapital/model.ts b/src_bak/api/shop/shopDealerCapital/model.ts deleted file mode 100644 index ad4b293..0000000 --- a/src_bak/api/shop/shopDealerCapital/model.ts +++ /dev/null @@ -1,109 +0,0 @@ -/** - * 分销商资金明细表 - */ -export interface ShopDealerCapital { - /** 主键ID */ - id?: number; - /** 分销商用户ID */ - userId?: number; - /** 分销商昵称 */ - nickName?: string; - /** 订单编号 */ - orderNo?: string; - /** 订单状态 */ - orderStatus?: number; - /** 资金流动类型 (10佣金收入 20提现支出 30转账支出 40转账收入 50佣金解冻 60配送奖励) */ - flowType?: number; - /** 金额 */ - money?: number; - /** 描述 */ - comments?: string; - /** 对方用户ID */ - toUserId?: number; - /** 对方昵称 */ - toNickName?: string; - /** 结算月份 */ - month?: string; - /** 商城ID */ - tenantId?: number; - /** 创建时间 */ - createTime?: string; - /** 修改时间 */ - updateTime?: string; -} - -/** - * 分销商资金明细表查询参数 - */ -export interface ShopDealerCapitalParam { - /** 主键ID */ - id?: number; - /** 分销商用户ID */ - userId?: number; - /** 订单编号 */ - orderNo?: string; - /** 资金流动类型 (10佣金收入 20提现支出 30转账支出 40转账收入 50佣金解冻) */ - flowType?: number; - /** 金额 */ - money?: number; - /** 描述 */ - comments?: string; - /** 对方用户ID */ - toUserId?: number; - /** 月份 */ - month?: string; - /** 第几页 */ - page?: number; - /** 每页多少条 */ - limit?: number; - /** 排序字段 */ - sort?: string; - /** 排序方式, asc升序, desc降序 */ - order?: string; - /** 起始时间 */ - createTimeStart?: string; - /** 结束时间 */ - createTimeEnd?: string; -} - -/** - * 资金流动类型枚举 - */ -export enum FlowTypeEnum { - /** 佣金收入 */ - COMMISSION_INCOME = 10, - /** 提现支出 */ - WITHDRAW_OUT = 20, - /** 转账支出 */ - TRANSFER_OUT = 30, - /** 转账收入 */ - TRANSFER_IN = 40, - /** 佣金解冻 */ - COMMISSION_UNFREEZE = 50, - /** 配送奖励 */ - DELIVERY_REWARD = 60, -} - -/** - * 返利记录类型 - */ -export type RebateRecordType = 'register' | 'order'; - -/** - * 返利记录状态 - */ -export type RebateRecordStatus = 'pending' | 'settled'; - -/** - * 返利记录(前端展示用) - */ -export interface RebateRecord { - id: number; - type: RebateRecordType; - title: string; - amount: number; - status: RebateRecordStatus; - date: string; - orderNo?: string; - comments?: string; -} diff --git a/src_bak/api/shop/shopDealerCapital/model/index.ts b/src_bak/api/shop/shopDealerCapital/model/index.ts deleted file mode 100644 index 00d29a7..0000000 --- a/src_bak/api/shop/shopDealerCapital/model/index.ts +++ /dev/null @@ -1,41 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 分销商资金明细表 - */ -export interface ShopDealerCapital { - // 主键ID - id?: number; - // 分销商用户ID - userId?: number; - // 订单ID - orderId?: number; - // 资金流动类型 (10佣金收入 20提现支出 30转账支出 40转账收入) - flowType?: number; - // 金额 - money?: string; - // 描述 - describe?: string; - // 对方用户ID - toUserId?: number; - // 商城ID - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 分销商资金明细表搜索条件 - */ -export interface ShopDealerCapitalParam extends PageParam { - id?: number; - // 仅查询当前分销商的收益/资金明细 - userId?: number; - // 可选:按订单过滤 - orderId?: number; - // 可选:资金流动类型过滤 - flowType?: number; - keywords?: string; -} diff --git a/src_bak/api/shop/shopDealerOrder/index.ts b/src_bak/api/shop/shopDealerOrder/index.ts deleted file mode 100644 index d29f0d8..0000000 --- a/src_bak/api/shop/shopDealerOrder/index.ts +++ /dev/null @@ -1,101 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopDealerOrder, ShopDealerOrderParam } from './model'; - -/** - * 分页查询分销商订单记录表 - */ -export async function pageShopDealerOrder(params: ShopDealerOrderParam) { - const res = await request.get>>( - '/shop/shop-dealer-order/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询分销商订单记录表列表 - */ -export async function listShopDealerOrder(params?: ShopDealerOrderParam) { - const res = await request.get>( - '/shop/shop-dealer-order', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加分销商订单记录表 - */ -export async function addShopDealerOrder(data: ShopDealerOrder) { - const res = await request.post>( - '/shop/shop-dealer-order', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改分销商订单记录表 - */ -export async function updateShopDealerOrder(data: ShopDealerOrder) { - const res = await request.put>( - '/shop/shop-dealer-order', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除分销商订单记录表 - */ -export async function removeShopDealerOrder(id?: number) { - const res = await request.del>( - '/shop/shop-dealer-order/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除分销商订单记录表 - */ -export async function removeBatchShopDealerOrder(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-dealer-order/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询分销商订单记录表 - */ -export async function getShopDealerOrder(id: number) { - const res = await request.get>( - '/shop/shop-dealer-order/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopDealerOrder/model/index.ts b/src_bak/api/shop/shopDealerOrder/model/index.ts deleted file mode 100644 index 03c9512..0000000 --- a/src_bak/api/shop/shopDealerOrder/model/index.ts +++ /dev/null @@ -1,60 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 分销商订单记录表 - */ -export interface ShopDealerOrder { - // 主键ID - id?: number; - // 买家用户ID - userId?: number; - nickname?: string; - // 订单编号(部分接口会直接返回订单号字符串) - orderNo?: string; - // 订单ID - orderId?: number; - // 订单总金额(不含运费) - orderPrice?: string; - // 分销商用户id(一级) - firstUserId?: number; - // 分销商用户id(二级) - secondUserId?: number; - // 分销商用户id(三级) - thirdUserId?: number; - // 分销佣金(一级) - firstMoney?: string; - // 分销佣金(二级) - secondMoney?: string; - // 分销佣金(三级) - thirdMoney?: string; - // 订单是否失效(0未失效 1已失效) - isInvalid?: number; - // 佣金结算(0未结算 1已结算) - isSettled?: number; - // 佣金解冻(0未解冻 1已解冻) - isUnfreeze?: number; - // 订单状态 - orderStatus?: number; - // 结算时间 - settleTime?: number; - // 商城ID - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 分销商订单记录表搜索条件 - */ -export interface ShopDealerOrderParam extends PageParam { - id?: number; - firstUserId?: number; - secondUserId?: number; - thirdUserId?: number; - userId?: number; - // 数据权限/资源ID(通常传当前登录用户ID) - resourceId?: number; - keywords?: string; -} diff --git a/src_bak/api/shop/shopDealerReferee/index.ts b/src_bak/api/shop/shopDealerReferee/index.ts deleted file mode 100644 index 949794f..0000000 --- a/src_bak/api/shop/shopDealerReferee/index.ts +++ /dev/null @@ -1,101 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopDealerReferee, ShopDealerRefereeParam } from './model'; - -/** - * 分页查询分销商推荐关系表 - */ -export async function pageShopDealerReferee(params: ShopDealerRefereeParam) { - const res = await request.get>>( - '/shop/shop-dealer-referee/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询分销商推荐关系表列表 - */ -export async function listShopDealerReferee(params?: ShopDealerRefereeParam) { - const res = await request.get>( - '/shop/shop-dealer-referee', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加分销商推荐关系表 - */ -export async function addShopDealerReferee(data: ShopDealerReferee) { - const res = await request.post>( - '/shop/shop-dealer-referee', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改分销商推荐关系表 - */ -export async function updateShopDealerReferee(data: ShopDealerReferee) { - const res = await request.put>( - '/shop/shop-dealer-referee', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除分销商推荐关系表 - */ -export async function removeShopDealerReferee(id?: number) { - const res = await request.del>( - '/shop/shop-dealer-referee/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除分销商推荐关系表 - */ -export async function removeBatchShopDealerReferee(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-dealer-referee/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询分销商推荐关系表 - */ -export async function getShopDealerReferee(id: number) { - const res = await request.get>( - '/shop/shop-dealer-referee/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopDealerReferee/model/index.ts b/src_bak/api/shop/shopDealerReferee/model/index.ts deleted file mode 100644 index 044a77d..0000000 --- a/src_bak/api/shop/shopDealerReferee/model/index.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 分销商推荐关系表 - */ -export interface ShopDealerReferee { - // 主键ID - id?: number; - // 分销商用户ID - dealerId?: number; - // 用户id(被推荐人) - userId?: number; - // 推荐关系层级(1,2,3) - level?: number; - // 商城ID - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 分销商推荐关系表搜索条件 - */ -export interface ShopDealerRefereeParam extends PageParam { - id?: number; - dealerId?: number; - keywords?: string; - deleted?: number; -} diff --git a/src_bak/api/shop/shopDealerSetting/index.ts b/src_bak/api/shop/shopDealerSetting/index.ts deleted file mode 100644 index b6b457b..0000000 --- a/src_bak/api/shop/shopDealerSetting/index.ts +++ /dev/null @@ -1,101 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopDealerSetting, ShopDealerSettingParam } from './model'; - -/** - * 分页查询分销商设置表 - */ -export async function pageShopDealerSetting(params: ShopDealerSettingParam) { - const res = await request.get>>( - '/shop/shop-dealer-setting/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询分销商设置表列表 - */ -export async function listShopDealerSetting(params?: ShopDealerSettingParam) { - const res = await request.get>( - '/shop/shop-dealer-setting', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加分销商设置表 - */ -export async function addShopDealerSetting(data: ShopDealerSetting) { - const res = await request.post>( - '/shop/shop-dealer-setting', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改分销商设置表 - */ -export async function updateShopDealerSetting(data: ShopDealerSetting) { - const res = await request.put>( - '/shop/shop-dealer-setting', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除分销商设置表 - */ -export async function removeShopDealerSetting(id?: number) { - const res = await request.del>( - '/shop/shop-dealer-setting/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除分销商设置表 - */ -export async function removeBatchShopDealerSetting(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-dealer-setting/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询分销商设置表 - */ -export async function getShopDealerSetting(id: number) { - const res = await request.get>( - '/shop/shop-dealer-setting/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopDealerSetting/model/index.ts b/src_bak/api/shop/shopDealerSetting/model/index.ts deleted file mode 100644 index 12126c3..0000000 --- a/src_bak/api/shop/shopDealerSetting/model/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 分销商设置表 - */ -export interface ShopDealerSetting { - // 设置项标示 - key?: string; - // 设置项描述 - describe?: string; - // 设置内容(json格式) - values?: string; - // 商城ID - tenantId?: number; - // 更新时间 - updateTime?: number; -} - -/** - * 分销商设置表搜索条件 - */ -export interface ShopDealerSettingParam extends PageParam { - key?: number; - keywords?: string; -} diff --git a/src_bak/api/shop/shopDealerUser/index.ts b/src_bak/api/shop/shopDealerUser/index.ts deleted file mode 100644 index df82b27..0000000 --- a/src_bak/api/shop/shopDealerUser/index.ts +++ /dev/null @@ -1,103 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopDealerUser, ShopDealerUserParam } from './model'; - -/** - * 分页查询分销商用户记录表 - */ -export async function pageShopDealerUser(params: ShopDealerUserParam) { - // 使用新的request方法,它会自动处理错误并返回完整的ApiResult - const res = await request.get>>( - '/shop/shop-dealer-user/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询分销商用户记录表列表 - */ -export async function listShopDealerUser(params?: ShopDealerUserParam) { - const res = await request.get>( - '/shop/shop-dealer-user', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加分销商用户记录表 - */ -export async function addShopDealerUser(data: ShopDealerUser) { - const res = await request.post>( - '/shop/shop-dealer-user', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改分销商用户记录表 - */ -export async function updateShopDealerUser(data: ShopDealerUser) { - const res = await request.put>( - '/shop/shop-dealer-user', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除分销商用户记录表 - */ -export async function removeShopDealerUser(id?: number) { - const res = await request.del>( - '/shop/shop-dealer-user/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除分销商用户记录表 - */ -export async function removeBatchShopDealerUser(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-dealer-user/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据userId查询分销商用户记录表 - */ -export async function getShopDealerUser(userId: number) { - const res = await request.get>( - '/shop/shop-dealer-user/' + userId - ); - if (res.code === 0) { - // 未注册为分销商时,后端可能返回 data=null,这里用 null 表示“没有分销商信息” - return res.data || null; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopDealerUser/model/index.ts b/src_bak/api/shop/shopDealerUser/model/index.ts deleted file mode 100644 index beda51c..0000000 --- a/src_bak/api/shop/shopDealerUser/model/index.ts +++ /dev/null @@ -1,53 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 分销商用户记录表 - */ -export interface ShopDealerUser { - // 主键ID - id?: number; - // 自增ID - userId?: number; - // 姓名 - realName?: string; - // 手机号 - mobile?: string; - // 支付密码 - payPassword?: string; - // 当前可提现佣金 - money?: string; - // 已冻结佣金 - freezeMoney?: string; - // 累积提现佣金 - totalMoney?: string; - // 推荐人用户ID - refereeId?: number; - // 成员数量(一级) - firstNum?: number; - // 成员数量(二级) - secondNum?: number; - // 成员数量(三级) - thirdNum?: number; - // 专属二维码 - qrcode?: string; - // 是否删除 - isDelete?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; - // 分销商等级:0-普通用户 1-超级管理员 2-合伙人(总店) 3-合伙人(分店) - dealerLevel?: number; -} - -/** - * 分销商用户记录表搜索条件 - */ -export interface ShopDealerUserParam extends PageParam { - id?: number; - phone?: string; - userId?: number; - keywords?: string; -} diff --git a/src_bak/api/shop/shopDealerWithdraw/index.ts b/src_bak/api/shop/shopDealerWithdraw/index.ts deleted file mode 100644 index 398b9be..0000000 --- a/src_bak/api/shop/shopDealerWithdraw/index.ts +++ /dev/null @@ -1,145 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopDealerWithdraw, ShopDealerWithdrawParam } from './model'; - -// WeChat transfer v3: backend may return `package_info` for MiniProgram to open the -// "confirm receipt" page via `wx.requestMerchantTransfer`. -export type ShopDealerWithdrawCreateResult = - | string - | { - package_info?: string; - packageInfo?: string; - [k: string]: any; - } - | null - | undefined; - -// When applyStatus=20, user can "receive" (WeChat confirm receipt flow). -export type ShopDealerWithdrawReceiveResult = ShopDealerWithdrawCreateResult; - -/** - * 分页查询分销商提现明细表 - */ -export async function pageShopDealerWithdraw(params: ShopDealerWithdrawParam) { - const res = await request.get>>( - '/shop/shop-dealer-withdraw/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询分销商提现明细表列表 - */ -export async function listShopDealerWithdraw(params?: ShopDealerWithdrawParam) { - const res = await request.get>( - '/shop/shop-dealer-withdraw', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加分销商提现明细表 - */ -export async function addShopDealerWithdraw(data: ShopDealerWithdraw): Promise { - const res = await request.post>( - '/shop/shop-dealer-withdraw', - data - ); - if (res.code === 0) { - // Some backends return `message`, while WeChat transfer flow returns `data.package_info`. - return res.data ?? res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 用户领取(仅当 applyStatus=20 时)- 后台返回 package_info 供小程序调起确认收款页 - */ -export async function receiveShopDealerWithdraw(id: number): Promise { - const res = await request.post>( - '/shop/shop-dealer-withdraw/receive/' + id, - {} - ); - if (res.code === 0) { - return res.data ?? res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 领取成功回调:前端确认收款后通知后台把状态置为 applyStatus=40 - */ -export async function receiveSuccessShopDealerWithdraw(id: number) { - const res = await request.post>( - '/shop/shop-dealer-withdraw/receive-success/' + id, - {} - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改分销商提现明细表 - */ -export async function updateShopDealerWithdraw(data: ShopDealerWithdraw) { - const res = await request.put>( - '/shop/shop-dealer-withdraw', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除分销商提现明细表 - */ -export async function removeShopDealerWithdraw(id?: number) { - const res = await request.del>( - '/shop/shop-dealer-withdraw/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除分销商提现明细表 - */ -export async function removeBatchShopDealerWithdraw(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-dealer-withdraw/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询分销商提现明细表 - */ -export async function getShopDealerWithdraw(id: number) { - const res = await request.get>( - '/shop/shop-dealer-withdraw/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopDealerWithdraw/model/index.ts b/src_bak/api/shop/shopDealerWithdraw/model/index.ts deleted file mode 100644 index d53db44..0000000 --- a/src_bak/api/shop/shopDealerWithdraw/model/index.ts +++ /dev/null @@ -1,48 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 分销商提现明细表 - */ -export interface ShopDealerWithdraw { - // 主键ID - id?: number; - // 分销商用户ID - userId?: number; - // 提现金额 - money?: string; - // 打款方式 (10微信 20支付宝 30银行卡) - payType?: number; - // 支付宝姓名 - alipayName?: string; - // 支付宝账号 - alipayAccount?: string; - // 开户行名称 - bankName?: string; - // 银行开户名 - bankAccount?: string; - // 银行卡号 - bankCard?: string; - // 申请状态 (10待审核 20审核通过 30驳回 40已打款) - applyStatus?: number; - // 审核时间 - auditTime?: number; - // 驳回原因 - rejectReason?: string; - // 来源客户端(APP、H5、小程序等) - platform?: string; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 分销商提现明细表搜索条件 - */ -export interface ShopDealerWithdrawParam extends PageParam { - id?: number; - userId?: number; - keywords?: string; -} diff --git a/src_bak/api/shop/shopEvaluation/index.ts b/src_bak/api/shop/shopEvaluation/index.ts deleted file mode 100644 index b46e13a..0000000 --- a/src_bak/api/shop/shopEvaluation/index.ts +++ /dev/null @@ -1,119 +0,0 @@ -import request from '@/utils/request' -import type { ApiResult, PageResult } from '@/api' -import type { - ShopEvaluation, - ShopEvaluationParam, - CreateEvaluationParams, - LikeEvaluationParams, - EvaluationStats, -} from './model' - -/** - * 分页查询评价 - */ -export async function pageShopEvaluation(params: ShopEvaluationParam) { - const res = await request.get>>( - '/shop/shop-evaluation/page', - params - ) - if (res.code === 0) { - return res.data - } - return Promise.reject(new Error(res.message)) -} - -/** - * 查询评价列表 - */ -export async function listShopEvaluation(params?: ShopEvaluationParam) { - const res = await request.get>( - '/shop/shop-evaluation', - params - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message)) -} - -/** - * 根据ID查询评价 - */ -export async function getShopEvaluation(id: number) { - const res = await request.get>( - '/shop/shop-evaluation/' + id - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message)) -} - -/** - * 创建评价 - */ -export async function createShopEvaluation(data: CreateEvaluationParams) { - const res = await request.post>( - '/shop/shop-evaluation', - data - ) - if (res.code === 0) { - return res.message - } - return Promise.reject(new Error(res.message)) -} - -/** - * 删除评价 - */ -export async function removeShopEvaluation(id?: number) { - const res = await request.del>( - '/shop/shop-evaluation/' + id - ) - if (res.code === 0) { - return res.message - } - return Promise.reject(new Error(res.message)) -} - -/** - * 点赞/取消点赞评价 - */ -export async function likeShopEvaluation(params: LikeEvaluationParams) { - const res = await request.post>( - '/shop/shop-evaluation/like', - params - ) - if (res.code === 0) { - return res.message - } - return Promise.reject(new Error(res.message)) -} - -/** - * 获取商品评价统计 - */ -export async function getEvaluationStats(goodsId: number) { - const res = await request.get>( - '/shop/shop-evaluation/stats', - { goodsId } - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message)) -} - -/** - * 获取订单的评价信息(用于判断是否已评价) - */ -export async function getOrderEvaluationStatus(orderId: number) { - const res = await request.get>( - '/shop/shop-evaluation/order-status', - { orderId } - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message)) -} diff --git a/src_bak/api/shop/shopEvaluation/model/index.ts b/src_bak/api/shop/shopEvaluation/model/index.ts deleted file mode 100644 index d74b52e..0000000 --- a/src_bak/api/shop/shopEvaluation/model/index.ts +++ /dev/null @@ -1,77 +0,0 @@ -/** - * 商品评价模型 - */ - -// 评价维度 -export interface EvaluationDimension { - name: string // 维度名称(如:质量、服务、物流) - score: number // 维度评分(1-5) -} - -// 评价数据 -export interface ShopEvaluation { - id: number - goodsId: number // 商品ID - goodsName: string // 商品名称 - goodsImage: string // 商品图片 - orderId: number // 订单ID - userId: number // 用户ID - userName: string // 用户名(脱敏) - userAvatar?: string // 用户头像 - score: number // 总评分(1-5) - dimensions?: EvaluationDimension[] // 评价维度 - content: string // 评价内容 - images: string[] // 评价图片 - isAnonymous: boolean // 是否匿名 - likes: number // 点赞数 - isLiked: boolean // 当前用户是否点赞 - reply?: string // 商家回复 - replyTime?: string // 回复时间 - createTime: string // 评价时间 - updateTime?: string // 更新时间 -} - -// 评价查询参数 -export interface ShopEvaluationParam { - page?: number - limit?: number - goodsId?: number // 按商品查询 - userId?: number // 按用户查询 - orderId?: number // 按订单查询 - minScore?: number // 最低评分 - maxScore?: number // 最高评分 - hasImages?: boolean // 是否有图 - isLiked?: boolean // 是否点赞过 - sortBy?: string // 排序方式(newest, mostLiked) - keywords?: string // 关键词搜索 -} - -// 创建评价参数 -export interface CreateEvaluationParams { - orderId: number - goodsId: number - score: number - dimensions?: EvaluationDimension[] - content: string - images?: string[] - isAnonymous: boolean -} - -// 点赞/取消点赞参数 -export interface LikeEvaluationParams { - evaluationId: number - isLiked: boolean -} - -// 评价统计 -export interface EvaluationStats { - total: number // 总评价数 - averageScore: number // 平均评分 - scoreDistribution: { // 评分分布 - [key: number]: number - } - imageCount: number // 有图评价数 - positiveCount: number // 好评数(4-5星) - neutralCount: number // 中评数(3星) - negativeCount: number // 差评数(1-2星) -} diff --git a/src_bak/api/shop/shopEvent/index.ts b/src_bak/api/shop/shopEvent/index.ts deleted file mode 100644 index 237fe7b..0000000 --- a/src_bak/api/shop/shopEvent/index.ts +++ /dev/null @@ -1,80 +0,0 @@ -import request from '@/utils/request' -import type { ApiResult, PageResult } from '@/api' -import type { - ShopEvent, - ShopEventParam, - EventRegisterParams, - EventRegistration, - RegistrationStatus, -} from './model' - -export type { ShopEvent, EventRegistration, RegistrationStatus, EventStatus, EventFormField } from './model' -export { getEventStatusLabel, getPayStatusLabel } from './model' - -/** - * 分页查询赛事 - */ -export async function pageShopEvent(params: ShopEventParam) { - const res = await request.get>>( - '/shop/shop-event/page', - params - ) - if (res.code === 0 && res.data) return res.data - return Promise.reject(new Error(res.message)) -} - -/** - * 赛事详情 - */ -export async function getShopEvent(id: number) { - const res = await request.get>(`/shop/shop-event/${id}`) - if (res.code === 0 && res.data) return res.data - return Promise.reject(new Error(res.message)) -} - -/** - * 提交报名(免费返回 {success,free},收费返回微信支付参数) - */ -export async function registerEvent(data: EventRegisterParams) { - const res = await request.post>>( - '/shop/shop-event/register', - data - ) - if (res.code === 0 && res.data) return res.data - return Promise.reject(new Error(res.message)) -} - -/** - * 重新发起支付 - */ -export async function payEventRegistration(registrationId: number) { - const res = await request.post>>( - '/shop/shop-event/pay', - { registrationId } - ) - if (res.code === 0 && res.data) return res.data - return Promise.reject(new Error(res.message)) -} - -/** - * 查询报名状态 - */ -export async function getRegistrationStatus(eventId: number) { - const res = await request.get>( - '/shop/shop-event/registration-status', - { eventId } - ) - if (res.code === 0 && res.data) return res.data - return Promise.reject(new Error(res.message)) -} - -/** - * 我的报名记录 - */ -export async function getMyRegistrations() { - const res = await request.get>( - '/shop/shop-event/my-registrations' - ) - if (res.code === 0 && res.data) return res.data - return Promise.reject(new Error(res.message)) -} diff --git a/src_bak/api/shop/shopEvent/model/index.ts b/src_bak/api/shop/shopEvent/model/index.ts deleted file mode 100644 index bfde609..0000000 --- a/src_bak/api/shop/shopEvent/model/index.ts +++ /dev/null @@ -1,96 +0,0 @@ -/** - * 赛事模型 - */ - -export type EventStatus = 'upcoming' | 'registering' | 'closed' | 'ended' - -/** 动态报名表单字段配置 */ -export interface EventFormField { - /** 字段唯一标识 */ - key: string - /** 显示名称(后台可自定义) */ - label: string - /** 字段类型:text-文本 number-数字 idcard-身份证 phone-手机号 select-下拉选择 radio-单选 */ - type: 'text' | 'number' | 'idcard' | 'phone' | 'select' | 'radio' - /** 是否必填 1=必填 0=选填 */ - required: number - /** 选项列表(type=select/radio时有效) */ - options?: string[] - /** 占位提示文字 */ - placeholder?: string - /** 排序号 */ - sort: number -} - -export interface ShopEvent { - id: number - name: string - description: string - image?: string - banner?: string - eventDate: string - location?: string - maxParticipants: number - entryFee: number - /** 动态表单字段配置(JSON字符串或数组) */ - formFields?: string | EventFormField[] - status: number | EventStatus - isHot: number - tenantId?: number - createTime: string - paidCount: number -} - -export interface ShopEventParam { - page?: number - limit?: number - status?: number - isHot?: number - tenantId?: number -} - -export interface EventRegisterParams { - eventId: number - /** 动态表单数据,key-value 形式 */ - formData?: Record -} - -export interface EventRegistration { - id: number - eventId: number - userId: number - /** 动态表单提交的数据 */ - formData?: string | Record - entryFee: number - payStatus: number // 0=待缴费 1=已缴费 2=已取消 - orderNo?: string - paidAt?: string - createTime: string - eventName?: string -} - -export interface RegistrationStatus { - registered: boolean - payStatus: number | null - registrationId?: number -} - -// 状态映射 -export function getEventStatusLabel(status: number): { label: string; color: string } { - const map: Record = { - 0: { label: '未开始', color: 'text-blue-500' }, - 1: { label: '报名中', color: 'text-green-500' }, - 2: { label: '已截止', color: 'text-orange-400' }, - 3: { label: '已结束', color: 'text-gray-400' }, - } - return map[status] ?? { label: '未知', color: 'text-gray-400' } -} - -export function getPayStatusLabel(payStatus: number): { label: string; color: string } { - const map: Record = { - 0: { label: '待缴费', color: 'text-orange-500' }, - 1: { label: '已缴费', color: 'text-green-500' }, - 2: { label: '已取消', color: 'text-gray-400' }, - } - return map[payStatus] ?? { label: '未知', color: 'text-gray-400' } -} diff --git a/src_bak/api/shop/shopExpress/index.ts b/src_bak/api/shop/shopExpress/index.ts deleted file mode 100644 index abfcf46..0000000 --- a/src_bak/api/shop/shopExpress/index.ts +++ /dev/null @@ -1,101 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopExpress, ShopExpressParam } from './model'; - -/** - * 分页查询物流公司 - */ -export async function pageShopExpress(params: ShopExpressParam) { - const res = await request.get>>( - '/shop/shop-express/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询物流公司列表 - */ -export async function listShopExpress(params?: ShopExpressParam) { - const res = await request.get>( - '/shop/shop-express', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加物流公司 - */ -export async function addShopExpress(data: ShopExpress) { - const res = await request.post>( - '/shop/shop-express', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改物流公司 - */ -export async function updateShopExpress(data: ShopExpress) { - const res = await request.put>( - '/shop/shop-express', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除物流公司 - */ -export async function removeShopExpress(id?: number) { - const res = await request.del>( - '/shop/shop-express/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除物流公司 - */ -export async function removeBatchShopExpress(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-express/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询物流公司 - */ -export async function getShopExpress(id: number) { - const res = await request.get>( - '/shop/shop-express/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopExpress/model/index.ts b/src_bak/api/shop/shopExpress/model/index.ts deleted file mode 100644 index 378a652..0000000 --- a/src_bak/api/shop/shopExpress/model/index.ts +++ /dev/null @@ -1,35 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 物流公司 - */ -export interface ShopExpress { - // 物流公司ID - expressId?: number; - // 物流公司名称 - expressName?: string; - // 物流公司编码 (微信) - wxCode?: string; - // 物流公司编码 (快递100) - kuaidi100Code?: string; - // 物流公司编码 (快递鸟) - kdniaoCode?: string; - // 排序号 - sortNumber?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 物流公司搜索条件 - */ -export interface ShopExpressParam extends PageParam { - expressId?: number; - keywords?: string; -} diff --git a/src_bak/api/shop/shopExpressTemplate/index.ts b/src_bak/api/shop/shopExpressTemplate/index.ts deleted file mode 100644 index b056f1f..0000000 --- a/src_bak/api/shop/shopExpressTemplate/index.ts +++ /dev/null @@ -1,101 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopExpressTemplate, ShopExpressTemplateParam } from './model'; - -/** - * 分页查询运费模板 - */ -export async function pageShopExpressTemplate(params: ShopExpressTemplateParam) { - const res = await request.get>>( - '/shop/shop-express-template/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询运费模板列表 - */ -export async function listShopExpressTemplate(params?: ShopExpressTemplateParam) { - const res = await request.get>( - '/shop/shop-express-template', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加运费模板 - */ -export async function addShopExpressTemplate(data: ShopExpressTemplate) { - const res = await request.post>( - '/shop/shop-express-template', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改运费模板 - */ -export async function updateShopExpressTemplate(data: ShopExpressTemplate) { - const res = await request.put>( - '/shop/shop-express-template', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除运费模板 - */ -export async function removeShopExpressTemplate(id?: number) { - const res = await request.del>( - '/shop/shop-express-template/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除运费模板 - */ -export async function removeBatchShopExpressTemplate(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-express-template/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询运费模板 - */ -export async function getShopExpressTemplate(id: number) { - const res = await request.get>( - '/shop/shop-express-template/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopExpressTemplate/model/index.ts b/src_bak/api/shop/shopExpressTemplate/model/index.ts deleted file mode 100644 index 5700987..0000000 --- a/src_bak/api/shop/shopExpressTemplate/model/index.ts +++ /dev/null @@ -1,41 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 运费模板 - */ -export interface ShopExpressTemplate { - // - id?: number; - // - type?: string; - // - title?: string; - // 收件价格 - firstAmount?: string; - // 续件价格 - extraAmount?: string; - // 状态, 0已发布, 1待审核 2已驳回 3违规内容 - status?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; - // - sortNumber?: number; - // 首件数量/重量 - firstNum?: string; - // 续件数量/重量 - extraNum?: string; -} - -/** - * 运费模板搜索条件 - */ -export interface ShopExpressTemplateParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/shop/shopExpressTemplateDetail/index.ts b/src_bak/api/shop/shopExpressTemplateDetail/index.ts deleted file mode 100644 index 783a53e..0000000 --- a/src_bak/api/shop/shopExpressTemplateDetail/index.ts +++ /dev/null @@ -1,101 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopExpressTemplateDetail, ShopExpressTemplateDetailParam } from './model'; - -/** - * 分页查询运费模板 - */ -export async function pageShopExpressTemplateDetail(params: ShopExpressTemplateDetailParam) { - const res = await request.get>>( - '/shop/shop-express-template-detail/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询运费模板列表 - */ -export async function listShopExpressTemplateDetail(params?: ShopExpressTemplateDetailParam) { - const res = await request.get>( - '/shop/shop-express-template-detail', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加运费模板 - */ -export async function addShopExpressTemplateDetail(data: ShopExpressTemplateDetail) { - const res = await request.post>( - '/shop/shop-express-template-detail', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改运费模板 - */ -export async function updateShopExpressTemplateDetail(data: ShopExpressTemplateDetail) { - const res = await request.put>( - '/shop/shop-express-template-detail', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除运费模板 - */ -export async function removeShopExpressTemplateDetail(id?: number) { - const res = await request.del>( - '/shop/shop-express-template-detail/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除运费模板 - */ -export async function removeBatchShopExpressTemplateDetail(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-express-template-detail/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询运费模板 - */ -export async function getShopExpressTemplateDetail(id: number) { - const res = await request.get>( - '/shop/shop-express-template-detail/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopExpressTemplateDetail/model/index.ts b/src_bak/api/shop/shopExpressTemplateDetail/model/index.ts deleted file mode 100644 index 84e2dc8..0000000 --- a/src_bak/api/shop/shopExpressTemplateDetail/model/index.ts +++ /dev/null @@ -1,45 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 运费模板 - */ -export interface ShopExpressTemplateDetail { - // - id?: number; - // - templateId?: number; - // 0按件 - type?: string; - // - provinceId?: number; - // - cityId?: number; - // 首件数量/重量 - firstNum?: string; - // 收件价格 - firstAmount?: string; - // 续件价格 - extraAmount?: string; - // 续件数量/重量 - extraNum?: string; - // 状态, 0已发布, 1待审核 2已驳回 3违规内容 - status?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; - // - sortNumber?: number; -} - -/** - * 运费模板搜索条件 - */ -export interface ShopExpressTemplateDetailParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/shop/shopGift/index.ts b/src_bak/api/shop/shopGift/index.ts deleted file mode 100644 index 9afda93..0000000 --- a/src_bak/api/shop/shopGift/index.ts +++ /dev/null @@ -1,260 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import {ShopGift, ShopGiftParam, GiftRedeemParam, GiftUseParam, QRCodeParam} from './model'; - -/** - * 分页查询礼品卡 - */ -export async function pageShopGift(params: ShopGiftParam) { - const res = await request.get>>( - '/shop/shop-gift/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询礼品卡列表 - */ -export async function listShopGift(params?: ShopGiftParam) { - const res = await request.get>( - '/shop/shop-gift', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加礼品卡 - */ -export async function addShopGift(data: ShopGift) { - const res = await request.post>( - '/shop/shop-gift', - data - ); - if (res.code === 0) { - return res.message; - } -} - -/** - * 生成礼品卡 - */ -export async function makeShopGift(data: ShopGift) { - const res = await request.post>( - '/shop/shop-gift/make', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改礼品卡 - */ -export async function updateShopGift(data: ShopGift) { - const res = await request.put>( - '/shop/shop-gift', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除礼品卡 - */ -export async function removeShopGift(id?: number) { - const res = await request.del>( - '/shop/shop-gift/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除礼品卡 - */ -export async function removeBatchShopGift(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-gift/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询礼品卡 - */ -export async function getShopGift(id: number) { - const res = await request.get>( - '/shop/shop-gift/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据code查询礼品卡 - * @param code - */ -export async function getShopGiftByCode(code: string) { - const res = await request.get>( - '/shop/shop-gift/by-code/' + code - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - - - -/** - * 兑换礼品卡 - */ -export async function redeemGift(params: GiftRedeemParam) { - const res = await request.post>( - '/shop/shop-gift/redeem', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 使用礼品卡 - */ -export async function useGift(params: GiftUseParam) { - const res = await request.post>( - '/shop/shop-gift/use', - params - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 获取用户的礼品卡列表 - */ -export async function getUserGifts(params: ShopGiftParam) { - const res = await request.get>>( - '/shop/shop-gift/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 验证礼品卡兑换码 - */ -export async function validateGiftCode(code: string) { - const res = await request.get>( - `/shop/shop-gift/validate/${code}` - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -export async function exportShopGift(ids?: number[]) { - const res = await request.post>( - '/shop/shop-gift/export', - ids - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 生成礼品卡核销码(可用) - */ -export async function generateVerificationCode(data: QRCodeParam) { - const res = await request.post>( - '/qr-code/create-encrypted-qr-code', - data - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 验证核销码 - */ -export async function verifyGiftCard(params: { verificationCode?: string; giftCode?: string }) { - const res = await request.post>( - '/shop/shop-gift/verify', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 完成礼品卡核销 - */ -export async function completeVerification(params: { - giftId: number; - verificationCode: string; - storeId?: number; - storeName?: string; - operatorId?: number; - operatorName?: string; -}) { - const res = await request.post>( - '/shop/shop-gift/complete-verification', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 解密二维码数据 - */ -export async function decryptQrData(params: { token: string; encryptedData: string }) { - const res = await request.post>( - '/qr-code/decrypt-qr-data', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - diff --git a/src_bak/api/shop/shopGift/model/index.ts b/src_bak/api/shop/shopGift/model/index.ts deleted file mode 100644 index f3c7450..0000000 --- a/src_bak/api/shop/shopGift/model/index.ts +++ /dev/null @@ -1,127 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 水票 - */ -export interface ShopGift { - // 礼品卡ID - id?: number; - // 礼品卡名称 - name?: string; - // 礼品卡描述 - description?: string; - // 礼品卡兑换码 - code?: string; - // 关联商品ID - goodsId?: number; - // 商品名称 - goodsName?: string; - // 商品图片 - goodsImage?: string; - // 礼品卡面值 - faceValue?: string; - // 礼品卡类型 (10实物礼品卡 20虚拟礼品卡 30服务礼品卡) - type?: number; - // 领取时间 - takeTime?: string; - // 过期时间 - expireTime?: string; - // 有效期天数 - validDays?: number; - // 操作人 - operatorUserId?: number; - // 操作人名称 - operatorUserName?: string; - // 是否展示 - isShow?: string; - // 状态 (0未使用 1已使用 2已过期 3已失效) - status?: number; - // 备注 - comments?: string; - // 使用说明 - instructions?: string; - // 排序号 - sortNumber?: number; - // 拥有者用户ID - userId?: number; - // 发放者用户ID - issuerUserId?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; - // 数量 - num?: number; - // 已发放数量 - issuedCount?: number; - // 总发放数量 - totalCount?: number; - // 使用门店/地址 - useLocation?: string; - // 客服联系方式 - contactInfo?: string; - // 核销时间 - verificationTime?: string; -} - -/** - * 礼品卡搜索条件 - */ -export interface ShopGiftParam extends PageParam { - id?: number; - keywords?: string; - code?: string; - // 礼品卡类型筛选 - type?: number; - // 状态筛选 (0未使用 1已使用 2失效) - status?: number; - // 用户ID筛选 - userId?: number; - // 商品ID筛选 - goodsId?: number; - // 是否过期筛选 - isExpired?: boolean; - // 排序字段 - sortBy?: 'createTime' | 'expireTime' | 'faceValue' | 'takeTime'; - // 排序方向 - sortOrder?: 'asc' | 'desc'; -} - -/** - * 礼品卡兑换参数 - */ -export interface GiftRedeemParam { - // 兑换码 - code: string; - // 用户ID - userId?: number; -} - -/** - * 礼品卡使用参数 - */ -export interface GiftUseParam { - // 礼品卡ID - giftId?: number; - // 使用地址/门店 - useLocation?: string; - // 使用备注 - useNote?: string; -} - -export interface QRCodeParam { - // 二维码数据 - data?: string; - // 二维码尺寸 - width?: number; - // 二维码高度 - height?: number; - // 二维码过期时间 - expireMinutes?: number; - // 业务类型 - businessType?: string; -} diff --git a/src_bak/api/shop/shopGiftCard/index.ts b/src_bak/api/shop/shopGiftCard/index.ts deleted file mode 100644 index 8136bb5..0000000 --- a/src_bak/api/shop/shopGiftCard/index.ts +++ /dev/null @@ -1,21 +0,0 @@ -import request from '@/utils/request' -import type { ShopGiftCard } from './model' - -/** 获取我的礼品卡列表 */ -export function listMyGiftCards() { - return request.get<{ code: number; data: ShopGiftCard[] }>('/shop/shop-gift/my') -} - -/** 绑定/兑换礼品卡 - * @param code - 礼品卡代码 - */ -export function bindGiftCard(code: string) { - return request.post<{ code: number; message: string }>('/shop/shop-gift/bind', { - code, - }) -} - -/** 获取礼品卡余额(从用户卡包统计中获取) */ -export function getGiftCardBalance() { - return request.get<{ code: number; data: { giftCards: number } }>('/user/card/stats') -} diff --git a/src_bak/api/shop/shopGiftCard/model.ts b/src_bak/api/shop/shopGiftCard/model.ts deleted file mode 100644 index f16c42e..0000000 --- a/src_bak/api/shop/shopGiftCard/model.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** 礼品卡 */ -export interface ShopGiftCard { - id: number - /** 卡号 */ - cardNo: string - /** 密码 */ - password?: string - /** 面额 */ - faceValue: number - /** 余额 */ - balance: number - /** 状态:0-未激活 1-正常 2-已用完 3-已过期 */ - status: number - /** 有效期 */ - expireTime: string - /** 创建时间 */ - createTime: string -} - -/** 礼品卡购买参数 */ -export interface GiftCardPurchaseParams { - amount: number - paymentMethod: number -} - -/** 礼品卡兑换参数 */ -export interface GiftCardExchangeParams { - code: string -} diff --git a/src_bak/api/shop/shopGoods/index.ts b/src_bak/api/shop/shopGoods/index.ts deleted file mode 100644 index 9b3a3a9..0000000 --- a/src_bak/api/shop/shopGoods/index.ts +++ /dev/null @@ -1,112 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopGoods, ShopGoodsParam } from './model'; - - -/** - * 分页查询商品 - */ -export async function pageShopGoods(params: ShopGoodsParam) { - const res = await request.get>>( - '/shop/shop-goods/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询商品列表 - */ -export async function listShopGoods(params?: ShopGoodsParam) { - const res = await request.get>( - '/shop/shop-goods', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加商品 - */ -export async function addShopGoods(data: ShopGoods) { - const res = await request.post>( - '/shop/shop-goods', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改商品 - */ -export async function updateShopGoods(data: ShopGoods) { - const res = await request.put>( - '/shop/shop-goods', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除商品 - */ -export async function removeShopGoods(id?: number) { - const res = await request.del>( - '/shop/shop-goods/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除商品 - */ -export async function removeBatchShopGoods(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-goods/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询商品 - */ -export async function getShopGoods(id: number) { - const res = await request.get>( - '/shop/shop-goods/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -export async function getCount(params: ShopGoodsParam) { - const res = await request.get>('/shop/shop-goods/data', { - params - }); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopGoods/model/index.ts b/src_bak/api/shop/shopGoods/model/index.ts deleted file mode 100644 index fe12790..0000000 --- a/src_bak/api/shop/shopGoods/model/index.ts +++ /dev/null @@ -1,158 +0,0 @@ -import type { PageParam } from '@/api/index'; -import { ShopGoodsSpec } from '@/api/shop/shopGoodsSpec/model'; -import { ShopGoodsSku } from '@/api/shop/shopGoodsSku/model'; -import { ShopGoodsRoleCommission } from '@/api/shop/shopGoodsRoleCommission/model'; - -export interface GoodsCount { - totalNum: number; - totalNum2: number; - totalNum3: number; - totalNum4: number; -} -/** - * 商品记录表 - */ -export interface ShopGoods { - // 自增ID - goodsId?: number; - // 类型 1实物商品 2虚拟商品 - type?: number; - // 商品编码 - code?: string; - // 商品名称 - name?: string; - // 商品标题 - goodsName?: string; - // 商品封面图 - image?: string; - video?: string; - // 商品详情 - content?: string; - canExpress?: number; - // 商品分类 - category?: string; - // 商品分类ID - categoryId?: number; - parentName?: string; - categoryName?: string; - // 一级分类 - categoryParent?: string; - // 二级分类 - categoryChildren?: string; - // 商品规格 0单规格 1多规格 - specs?: number; - commissionRole?: number; - // 货架 - position?: string; - // 进货价 - buyingPrice?: string; - // 商品价格 - price?: string; - originPrice?: string; - // 销售价格 - salePrice?: string; - chainStorePrice?: string; - chainStoreRate?: string; - memberStoreRate?: string; - memberMarketRate?: string; - memberStoreCommission?: string; - supplierCommission?: string; - coopCommission?: string; - memberStorePrice?: string; - memberMarketPrice?: string; - // 经销商价格 - dealerPrice?: string; - // 有赠品 - buyingGift?: boolean; - // 有赠品 - priceGift?: boolean; - // 有赠品 - dealerGift?: boolean; - buyingGiftNum?: number; - priceGiftNum?: number; - priceGiftName?: string; - dealerGiftNum?: number; - // 库存计算方式(10下单减库存 20付款减库存) - deductStockType?: number; - // 封面图 - files?: string; - // 销量 - sales?: number; - isNew?: number; - // 库存 - stock?: number; - // 步长 - step?: number; - // 商品重量 - goodsWeight?: number; - // 消费赚取积分 - gainIntegral?: number; - // 推荐 - recommend?: number; - // 商户ID - merchantId?: number; - // 商户名称 - merchantName?: string; - supplierMerchantId?: number; - supplierName?: string; - // 状态(0:未上架,1:上架) - isShow?: number; - // 状态, 0上架 1待上架 2待审核 3审核不通过 - status?: number; - // 备注 - comments?: string; - // 排序号 - sortNumber?: number; - // 用户ID - userId?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; - // 显示规格名 - specName?: string; - // 商品规格 - goodsSpecs?: ShopGoodsSpec[]; - goodsRoleCommission?: ShopGoodsRoleCommission[]; - // 商品sku列表 - goodsSkus?: ShopGoodsSku[]; - // 单位名称 - unitName?: string; - expressTemplateId?: number; - canUseDate?: string; - ensureTag?: string; - expiredDay?: number; - // 可购买数量 - canBuyNumber?: number; - // 活动方式:0全平台 1新用户专享 - activityType?: number; - // 配送方式:0送上门 1限自提 - deliveryMode?: number; -} - -export interface BathSet { - price?: number; - salePrice?: number; - stock?: number; - skuNo?: string; -} - -/** - * 商品记录表搜索条件 - */ -export interface ShopGoodsParam extends PageParam { - parentId?: number; - categoryId?: number; - goodsId?: number; - goodsName?: string; - isShow?: number; - stock?: number; - keywords?: string; - recommend?: number; - // 0上架 1下架(以实际后端约定为准) - status?: number; -} diff --git a/src_bak/api/shop/shopGoodsCategory/index.ts b/src_bak/api/shop/shopGoodsCategory/index.ts deleted file mode 100644 index 3df88c0..0000000 --- a/src_bak/api/shop/shopGoodsCategory/index.ts +++ /dev/null @@ -1,101 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopGoodsCategory, ShopGoodsCategoryParam } from './model'; - -/** - * 分页查询商品分类 - */ -export async function pageShopGoodsCategory(params: ShopGoodsCategoryParam) { - const res = await request.get>>( - '/shop/shop-goods-category/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询商品分类列表 - */ -export async function listShopGoodsCategory(params?: ShopGoodsCategoryParam) { - const res = await request.get>( - '/shop/shop-goods-category', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加商品分类 - */ -export async function addShopGoodsCategory(data: ShopGoodsCategory) { - const res = await request.post>( - '/shop/shop-goods-category', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改商品分类 - */ -export async function updateShopGoodsCategory(data: ShopGoodsCategory) { - const res = await request.put>( - '/shop/shop-goods-category', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除商品分类 - */ -export async function removeShopGoodsCategory(id?: number) { - const res = await request.del>( - '/shop/shop-goods-category/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除商品分类 - */ -export async function removeBatchShopGoodsCategory(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-goods-category/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询商品分类 - */ -export async function getShopGoodsCategory(id: number) { - const res = await request.get>( - '/shop/shop-goods-category/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopGoodsCategory/model/index.ts b/src_bak/api/shop/shopGoodsCategory/model/index.ts deleted file mode 100644 index c56c8b1..0000000 --- a/src_bak/api/shop/shopGoodsCategory/model/index.ts +++ /dev/null @@ -1,64 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 商品分类 - */ -export interface ShopGoodsCategory { - // 商品分类ID - categoryId?: number; - // 分类标识 - categoryCode?: string; - // 分类名称 - title?: string; - // 类型 0商城分类 1外卖分类 - type?: number; - // 分类图片 - image?: string; - // 上级分类ID - parentId?: number; - // 路由/链接地址 - path?: string; - // 组件路径 - component?: string; - // 绑定的页面 - pageId?: number; - // 用户ID - userId?: number; - // 商品数量 - count?: number; - // 排序(数字越小越靠前) - sortNumber?: number; - // 备注 - comments?: string; - // 是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单) - hide?: number; - // 是否推荐 - recommend?: number; - // 是否显示在首页 - showIndex?: number; - // 商铺ID - merchantId?: number; - // 状态, 0正常, 1禁用 - status?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 注册时间 - createTime?: string; - // 修改时间 - updateTime?: string; - // 子菜单 - children?: ShopGoodsCategory[]; - key?: number; - value?: number; - label?: string; -} - -/** - * 商品分类搜索条件 - */ -export interface ShopGoodsCategoryParam extends PageParam { - categoryId?: number; - keywords?: string; -} diff --git a/src_bak/api/shop/shopGoodsComment/index.ts b/src_bak/api/shop/shopGoodsComment/index.ts deleted file mode 100644 index 2f29fb6..0000000 --- a/src_bak/api/shop/shopGoodsComment/index.ts +++ /dev/null @@ -1,69 +0,0 @@ -import request from '@/utils/request' -import type { ShopGoodsComment, SubmitCommentParams, CommentPageParams } from './model' - -/** - * 提交商品评价 - * @desc 对接 Java 后端 /api/shop/shopGoodsComment - */ -export function submitGoodsComment(data: SubmitCommentParams) { - return request.post<{ code: number; message: string }>('/shop/shopGoodsComment', { - goodsId: data.goodsId, - oid: data.oid || data.orderId, - unique: data.unique, - replyType: data.replyType, - goodsScore: data.goodsScore, - serviceScore: data.serviceScore || 5, - comment: data.comment || data.content, - pics: data.pics || data.images?.join(','), - }) -} - -/** - * 分页查询商品评价 - * @desc 对接 Java 后端 /api/shop/shopGoodsComment/page - */ -export function pageGoodsComment(params: CommentPageParams = {}) { - return request.get<{ - code: number - data: { - records: ShopGoodsComment[] - total: number - size: number - current: number - } - }>('/shop/shopGoodsComment/page', { - params: { - page: params.page || 1, - size: params.pageSize || 10, - goodsId: params.goodsId, - oid: params.oid || params.orderId, - }, - }) -} - -/** - * 查询我的评价列表 - * @desc 对接 Java 后端 /api/shop/shopGoodsComment - */ -export function myGoodsComment(params: { page?: number; pageSize?: number } = {}) { - return request.get<{ - code: number - data: { - records: ShopGoodsComment[] - total: number - } - }>('/shop/shopGoodsComment', { - params: { - page: params.page || 1, - size: params.pageSize || 10, - }, - }) -} - -/** - * 获取评价详情 - * @desc 对接 Java 后端 /api/shop/shopGoodsComment/{id} - */ -export function getGoodsComment(id: number) { - return request.get<{ code: number; data: ShopGoodsComment }>(`/shop/shopGoodsComment/${id}`) -} diff --git a/src_bak/api/shop/shopGoodsComment/model.ts b/src_bak/api/shop/shopGoodsComment/model.ts deleted file mode 100644 index f0e4d00..0000000 --- a/src_bak/api/shop/shopGoodsComment/model.ts +++ /dev/null @@ -1,77 +0,0 @@ -/** 商品评价 - 对接 Java 后端 /api/shop/shopGoodsComment */ -export interface ShopGoodsComment { - /** 评论ID */ - id: number - /** 用户ID */ - uid?: number - userId?: number - /** 订单ID */ - oid?: number - orderId?: number - /** 商品唯一标识 */ - unique?: string - /** 商品ID */ - goodsId?: number - /** 商品类型(普通商品、秒杀商品) */ - replyType?: string - /** 商品分数 */ - goodsScore?: boolean | number - /** 服务分数 */ - serviceScore?: boolean | number - /** 评论内容 */ - comment?: string - content?: string - /** 评论图片(逗号分隔) */ - pics?: string - images?: string[] - /** 商家回复内容 */ - merchantReplyContent?: string - reply?: string - /** 商家回复时间 */ - merchantReplyTime?: number - replyTime?: number - /** 用户名称 */ - nickname?: string - /** 用户头像 */ - avatar?: string - /** 商品规格属性值 */ - sku?: string - /** 状态: 0正常, 1冻结 */ - status?: number - /** 创建时间 */ - createTime?: string -} - -/** 提交评价参数 - 对接 Java 后端 */ -export interface SubmitCommentParams { - /** 订单ID */ - oid?: number - orderId?: number - /** 商品ID */ - goodsId: number - /** 商品唯一标识 */ - unique?: string - /** 商品类型 */ - replyType?: string - /** 商品分数 (1-5) */ - goodsScore: number - /** 服务分数 (1-5) */ - serviceScore?: number - /** 评论内容 */ - comment: string - content?: string - /** 评论图片(逗号分隔) */ - pics?: string - images?: string[] -} - -/** 评价分页参数 */ -export interface CommentPageParams { - page?: number - pageSize?: number - /** 商品ID筛选 */ - goodsId?: number - /** 订单ID筛选 */ - oid?: number - orderId?: number -} diff --git a/src_bak/api/shop/shopGoodsEvaluate/index.ts b/src_bak/api/shop/shopGoodsEvaluate/index.ts deleted file mode 100644 index 3c73131..0000000 --- a/src_bak/api/shop/shopGoodsEvaluate/index.ts +++ /dev/null @@ -1,22 +0,0 @@ -import request from '@/utils/request' -import type { ShopGoodsEvaluate, SubmitEvaluateParams, EvaluatePageParams } from './model' - -/** 提交商品评价 */ -export function submitGoodsEvaluate(data: SubmitEvaluateParams) { - return request.post('/shopGoodsEvaluate/submit', data) -} - -/** 获取商品评价列表 */ -export function pageGoodsEvaluate(params: EvaluatePageParams = {}) { - return request.post<{ items: ShopGoodsEvaluate[]; total: number }>('/shopGoodsEvaluate/page', params) -} - -/** 获取我的评价列表 */ -export function myGoodsEvaluate(params: { page?: number; pageSize?: number } = {}) { - return request.post<{ items: ShopGoodsEvaluate[]; total: number }>('/shopGoodsEvaluate/myList', params) -} - -/** 获取评价详情 */ -export function getGoodsEvaluate(id: number) { - return request.post('/shopGoodsEvaluate/get', { id }) -} diff --git a/src_bak/api/shop/shopGoodsEvaluate/model.ts b/src_bak/api/shop/shopGoodsEvaluate/model.ts deleted file mode 100644 index 5846ae9..0000000 --- a/src_bak/api/shop/shopGoodsEvaluate/model.ts +++ /dev/null @@ -1,39 +0,0 @@ -/** 商品评价 */ -export interface ShopGoodsEvaluate { - id: number - orderId: number - orderGoodsId: number - goodsId: number - goodsName?: string - goodsImage?: string - userId: number - nickname: string - avatar?: string - rating: number - content: string - images?: string[] - isAnonymous: boolean - createTime: string - /** 商家回复 */ - reply?: string - replyTime?: string -} - -/** 提交评价参数 */ -export interface SubmitEvaluateParams { - orderId: number - orderGoodsId: number - goodsId: number - rating: number - content: string - images?: string[] - isAnonymous?: boolean -} - -/** 分页参数 */ -export interface EvaluatePageParams { - page?: number - pageSize?: number - goodsId?: number - orderId?: number -} diff --git a/src_bak/api/shop/shopGoodsFavorite/index.ts b/src_bak/api/shop/shopGoodsFavorite/index.ts deleted file mode 100644 index fbb77b9..0000000 --- a/src_bak/api/shop/shopGoodsFavorite/index.ts +++ /dev/null @@ -1,44 +0,0 @@ -import request from '@/utils/request' -import type { ShopGoodsFavorite, ShopGoodsFavoriteParam } from './model' - -/** - * 解包 API 响应 - * request 工具默认 returnRaw=true,返回完整 {code, message, data} 包装 - * 此函数提取内层 data 字段,兼容 data 为 null/undefined 的情况 - */ -function unwrap(res: any): T { - if (res && typeof res === 'object' && 'data' in res) { - return res.data as T - } - return res as T -} - -// 添加收藏 -export async function addShopGoodsFavorite(data: { goodsId: number }) { - const res = await request.post('/shop/goods/favorite/add', data) - return unwrap(res) -} - -// 取消收藏 -export async function removeShopGoodsFavorite(data: { goodsId: number }) { - const res = await request.post('/shop/goods/favorite/remove', data) - return unwrap(res) -} - -// 查询收藏状态(返回 boolean:true=已收藏, false=未收藏) -export async function getShopGoodsFavoriteStatus(params: { goodsId: number }) { - const res = await request.get('/shop/goods/favorite/status', params) - return !!unwrap(res) // 确保返回纯布尔值 -} - -// 收藏列表 -export async function listShopGoodsFavorite(params: ShopGoodsFavoriteParam) { - const res = await request.get('/shop/goods/favorite/list', params) - return unwrap(res) || [] -} - -// 收藏列表(分页) -export async function pageShopGoodsFavorite(params: ShopGoodsFavoriteParam) { - const res = await request.get('/shop/goods/favorite/page', params) - return unwrap<{ list: ShopGoodsFavorite[]; total: number }>(res) || { list: [], total: 0 } -} diff --git a/src_bak/api/shop/shopGoodsFavorite/model.ts b/src_bak/api/shop/shopGoodsFavorite/model.ts deleted file mode 100644 index 2a89dac..0000000 --- a/src_bak/api/shop/shopGoodsFavorite/model.ts +++ /dev/null @@ -1,15 +0,0 @@ -export interface ShopGoodsFavorite { - favoriteId?: number - userId?: number - goodsId?: number - createTime?: string - goodsName?: string - goodsImage?: string - salePrice?: string -} - -export interface ShopGoodsFavoriteParam { - page?: number - limit?: number - userId?: number -} diff --git a/src_bak/api/shop/shopGoodsRoleCommission/index.ts b/src_bak/api/shop/shopGoodsRoleCommission/index.ts deleted file mode 100644 index c047baf..0000000 --- a/src_bak/api/shop/shopGoodsRoleCommission/index.ts +++ /dev/null @@ -1,101 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import { ShopGoodsRoleCommission, ShopGoodsRoleCommissionParam } from '@/api/shop/shopGoodsRoleCommission/model'; - -/** - * 分页查询商品绑定角色的分润金额 - */ -export async function pageShopGoodsRoleCommission(params: ShopGoodsRoleCommissionParam) { - const res = await request.get>>( - '/shop/shop-goods-role-commission/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询商品绑定角色的分润金额列表 - */ -export async function listShopGoodsRoleCommission(params?: ShopGoodsRoleCommissionParam) { - const res = await request.get>( - '/shop/shop-goods-role-commission', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加商品绑定角色的分润金额 - */ -export async function addShopGoodsRoleCommission(data: ShopGoodsRoleCommission) { - const res = await request.post>( - '/shop/shop-goods-role-commission', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改商品绑定角色的分润金额 - */ -export async function updateShopGoodsRoleCommission(data: ShopGoodsRoleCommission) { - const res = await request.put>( - '/shop/shop-goods-role-commission', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除商品绑定角色的分润金额 - */ -export async function removeShopGoodsRoleCommission(id?: number) { - const res = await request.del>( - '/shop/shop-goods-role-commission/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除商品绑定角色的分润金额 - */ -export async function removeBatchShopGoodsRoleCommission(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-goods-role-commission/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询商品绑定角色的分润金额 - */ -export async function getShopGoodsRoleCommission(id: number) { - const res = await request.get>( - '/shop/shop-goods-role-commission/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopGoodsRoleCommission/model/index.ts b/src_bak/api/shop/shopGoodsRoleCommission/model/index.ts deleted file mode 100644 index 6db1178..0000000 --- a/src_bak/api/shop/shopGoodsRoleCommission/model/index.ts +++ /dev/null @@ -1,35 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 商品绑定角色的分润金额 - */ -export interface ShopGoodsRoleCommission { - // - id?: number; - // - roleId?: number; - // - goodsId?: number; - // - sku?: string; - // - amount?: string; - // 状态, 0正常, 1异常 - status?: number; - // 备注 - comments?: string; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // - sortNumber?: number; -} - -/** - * 商品绑定角色的分润金额搜索条件 - */ -export interface ShopGoodsRoleCommissionParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/shop/shopGoodsSku/index.ts b/src_bak/api/shop/shopGoodsSku/index.ts deleted file mode 100644 index 8458fcb..0000000 --- a/src_bak/api/shop/shopGoodsSku/index.ts +++ /dev/null @@ -1,113 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import { ShopGoodsSpec } from '@/api/shop/shopGoodsSpec/model'; -import { ShopGoodsSku, ShopGoodsSkuParam } from '@/api/shop/shopGoodsSku/model'; - -export async function generateGoodsSku(data: ShopGoodsSpec) { - const res = await request.post>( - '/shop/goods-sku/generateGoodsSku', - data - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 分页查询商品sku列表 - */ -export async function pageShopGoodsSku(params: ShopGoodsSkuParam) { - const res = await request.get>>( - '/shop/shop-goods-sku/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询商品sku列表列表 - */ -export async function listShopGoodsSku(params?: ShopGoodsSkuParam) { - const res = await request.get>( - '/shop/shop-goods-sku', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加商品sku列表 - */ -export async function addShopGoodsSku(data: ShopGoodsSku) { - const res = await request.post>( - '/shop/shop-goods-sku', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改商品sku列表 - */ -export async function updateShopGoodsSku(data: ShopGoodsSku) { - const res = await request.put>( - '/shop/shop-goods-sku', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除商品sku列表 - */ -export async function removeShopGoodsSku(id?: number) { - const res = await request.del>( - '/shop/shop-goods-sku/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除商品sku列表 - */ -export async function removeBatchShopGoodsSku(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-goods-sku/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询商品sku列表 - */ -export async function getShopGoodsSku(id: number) { - const res = await request.get>( - '/shop/shop-goods-sku/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopGoodsSku/model/index.ts b/src_bak/api/shop/shopGoodsSku/model/index.ts deleted file mode 100644 index 0880d7f..0000000 --- a/src_bak/api/shop/shopGoodsSku/model/index.ts +++ /dev/null @@ -1,50 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 商品sku列表 - */ -export interface ShopGoodsSku { - // 主键ID - id?: number; - // 商品ID - goodsId?: number; - // 商品属性索引值 (attr_value|attr_value[|....]) - sku?: string; - // 商品图片 - image?: string; - // 商品价格 - price?: string; - // 市场价格 - salePrice?: string; - // 成本价 - cost?: string; - // 库存 - stock?: number; - // sku编码 - skuNo?: string; - // 商品条码 - barCode?: string; - // 重量 - weight?: string; - // 体积 - volume?: string; - // 唯一值 - uuid?: string; - // 状态, 0正常, 1异常 - status?: number; - // 备注 - comments?: string; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - images?: string; -} - -/** - * 商品sku列表搜索条件 - */ -export interface ShopGoodsSkuParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/shop/shopGoodsSpec/index.ts b/src_bak/api/shop/shopGoodsSpec/index.ts deleted file mode 100644 index 5dde057..0000000 --- a/src_bak/api/shop/shopGoodsSpec/index.ts +++ /dev/null @@ -1,101 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopGoodsSpec, ShopGoodsSpecParam } from './model'; - -/** - * 分页查询商品多规格 - */ -export async function pageShopGoodsSpec(params: ShopGoodsSpecParam) { - const res = await request.get>>( - '/shop/shop-goods-spec/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询商品多规格列表 - */ -export async function listShopGoodsSpec(params?: ShopGoodsSpecParam) { - const res = await request.get>( - '/shop/shop-goods-spec', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加商品多规格 - */ -export async function addShopGoodsSpec(data: ShopGoodsSpec) { - const res = await request.post>( - '/shop/shop-goods-spec', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改商品多规格 - */ -export async function updateShopGoodsSpec(data: ShopGoodsSpec) { - const res = await request.put>( - '/shop/shop-goods-spec', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除商品多规格 - */ -export async function removeShopGoodsSpec(id?: number) { - const res = await request.del>( - '/shop/shop-goods-spec/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除商品多规格 - */ -export async function removeBatchShopGoodsSpec(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-goods-spec/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询商品多规格 - */ -export async function getShopGoodsSpec(id: number) { - const res = await request.get>( - '/shop/shop-goods-spec/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopGoodsSpec/model/index.ts b/src_bak/api/shop/shopGoodsSpec/model/index.ts deleted file mode 100644 index 44a6644..0000000 --- a/src_bak/api/shop/shopGoodsSpec/model/index.ts +++ /dev/null @@ -1,29 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 商品多规格 - */ -export interface ShopGoodsSpec { - // 主键 - id?: number; - // 商品ID - goodsId?: number; - // 规格ID - specId?: number; - // 规格名称 - specName?: string; - // 规格值 - specValue?: string; - // 活动类型 0=商品,1=秒杀,2=砍价,3=拼团 - type?: string; - // 租户id - tenantId?: number; -} - -/** - * 商品多规格搜索条件 - */ -export interface ShopGoodsSpecParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/shop/shopGroupBuy/index.ts b/src_bak/api/shop/shopGroupBuy/index.ts deleted file mode 100644 index a7be827..0000000 --- a/src_bak/api/shop/shopGroupBuy/index.ts +++ /dev/null @@ -1,36 +0,0 @@ -import request from '@/utils/request' -import type { - ShopGroupBuy, - ShopGroupBuyRecord, - ShopGroupBuyPageParams, -} from './model' - -/** 获取拼团商品列表 */ -export function pageShopGroupBuy(params: ShopGroupBuyPageParams = {}) { - return request.post<{ items: ShopGroupBuy[]; total: number }>('/shopGroupBuy/page', params) -} - -/** 获取拼团商品详情 */ -export function getShopGroupBuy(id: number) { - return request.post('/shopGroupBuy/get', { id }) -} - -/** 获取进行中的拼团记录(可参团) */ -export function listShopGroupBuyRecords(groupBuyId: number) { - return request.post('/shopGroupBuy/listRecords', { groupBuyId }) -} - -/** 发起拼团 */ -export function createGroupBuy(data: { groupBuyId: number; goodsId: number; skuId: number; quantity: number }) { - return request.post('/shopGroupBuy/create', data) -} - -/** 参与拼团 */ -export function joinGroupBuy(data: { recordId: number; goodsId: number; skuId: number; quantity: number }) { - return request.post('/shopGroupBuy/join', data) -} - -/** 获取我的拼团记录 */ -export function myGroupBuyRecords(params: { page?: number; pageSize?: number } = {}) { - return request.post<{ items: ShopGroupBuyRecord[]; total: number }>('/shopGroupBuy/myRecords', params) -} diff --git a/src_bak/api/shop/shopGroupBuy/model.ts b/src_bak/api/shop/shopGroupBuy/model.ts deleted file mode 100644 index 162af4a..0000000 --- a/src_bak/api/shop/shopGroupBuy/model.ts +++ /dev/null @@ -1,61 +0,0 @@ -/** 拼团活动 */ -export interface ShopGroupBuy { - id: number - goodsId: number - goodsName?: string - goodsImage?: string - /** 拼团价格 */ - groupPrice: number - /** 成团人数 */ - groupSize: number - /** 已参团人数 */ - currentSize: number - /** 开始时间 */ - startTime: string - /** 结束时间 */ - endTime: string - /** 状态:0-未开始 1-进行中 2-已结束 */ - status: number - /** 商品详情 */ - product?: { - id: number - name: string - image: string - price: number - } -} - -/** 拼团记录 */ -export interface ShopGroupBuyRecord { - id: number - groupBuyId: number - userId: number - /** 团长ID */ - leaderId: number - /** 是否团长 */ - isLeader: boolean - /** 参团人数 */ - memberCount: number - /** 状态:0-待成团 1-已成团 2-已失败 */ - status: number - /** 过期时间 */ - expireTime: string - /** 成员列表 */ - members?: ShopGroupBuyMember[] -} - -/** 拼团成员 */ -export interface ShopGroupBuyMember { - id: number - userId: number - nickname: string - avatar: string - joinTime: string -} - -/** 分页参数 */ -export interface ShopGroupBuyPageParams { - page?: number - pageSize?: number - status?: number -} diff --git a/src_bak/api/shop/shopInvite/index.ts b/src_bak/api/shop/shopInvite/index.ts deleted file mode 100644 index ba38f75..0000000 --- a/src_bak/api/shop/shopInvite/index.ts +++ /dev/null @@ -1,278 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import { BaseUrl } from '@/config/app'; - -/** - * 小程序码生成参数 - */ -export interface MiniProgramCodeParam { - // 小程序页面路径 - page?: string; - // 场景值,最大32个可见字符 - scene: string; - // 二维码宽度,单位 px,最小 280px,最大 1280px - width?: number; - // 是否检查页面是否存在 - checkPath?: boolean; - // 环境版本 - envVersion?: 'release' | 'trial' | 'develop'; -} - -/** - * 邀请关系参数 - */ -export interface InviteRelationParam { - // 邀请人ID - inviterId: number; - // 被邀请人ID - inviteeId: number; - // 邀请来源 - source: string; - // 场景值 - scene?: string; - // 邀请时间 - inviteTime?: string; -} - -/** - * 绑定推荐关系参数 - */ -export interface BindRefereeParam { - // 推荐人ID - dealerId: number; - // 被推荐人ID (可选,如果不传则使用当前登录用户) - userId?: number; - // 推荐来源 - source?: string; - // 场景值 - scene?: string; -} - -/** - * 邀请统计数据 - */ -export interface InviteStats { - // 总邀请数 - totalInvites: number; - // 成功注册数 - successfulRegistrations: number; - // 转化率 - conversionRate: number; - // 今日邀请数 - todayInvites: number; - // 本月邀请数 - monthlyInvites: number; - // 邀请来源统计 - sourceStats: InviteSourceStat[]; -} - -/** - * 邀请来源统计 - */ -export interface InviteSourceStat { - source: string; - count: number; - successCount: number; - conversionRate: number; -} - -/** - * 邀请记录 - */ -export interface InviteRecord { - id?: number; - inviterId?: number; - inviteeId?: number; - inviterName?: string; - inviteeName?: string; - source?: string; - scene?: string; - status?: 'pending' | 'registered' | 'activated'; - inviteTime?: string; - registerTime?: string; - activateTime?: string; -} - -/** - * 邀请记录查询参数 - */ -export interface InviteRecordParam { - page?: number; - limit?: number; - inviterId?: number; - status?: string; - source?: string; - startTime?: string; - endTime?: string; -} - -/** - * 生成小程序码 - */ -export async function generateMiniProgramCode(data: MiniProgramCodeParam) { - try { - const url = '/wx-login/getOrderQRCodeUnlimited/' + data.scene; - // 由于接口直接返回图片buffer,我们直接构建完整的URL - return `${BaseUrl}${url}`; - } catch (error: any) { - throw new Error(error.message || '生成小程序码失败'); - } -} - -/** - * 生成邀请小程序码 - */ -export async function generateInviteCode(inviterId: number) { - const scene = `uid_${inviterId}`; - - return generateMiniProgramCode({ - page: 'pages/index/index', - scene: scene, - width: 180, - checkPath: true, - envVersion: 'trial' - }); -} - -/** - * 建立邀请关系 (旧接口,保留兼容性) - */ -export async function createInviteRelation(data: InviteRelationParam) { - const res = await request.post>( - '/invite/create-relation', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 绑定推荐关系 (新接口) - */ -export async function bindRefereeRelation(data: BindRefereeParam) { - try { - const res = await request.post>( - '/shop/shop-dealer-referee', - { - dealerId: data.dealerId, - userId: data.userId, - source: data.source || 'qrcode', - scene: data.scene - } - ); - - if (res.code === 0) { - return res.data; - } - - throw new Error(res.message || '绑定推荐关系失败'); - } catch (error: any) { - console.error('绑定推荐关系API调用失败:', error); - throw new Error(error.message || '绑定推荐关系失败'); - } -} - -/** - * 处理邀请场景值 - */ -export async function processInviteScene(scene: string, userId: number) { - const res = await request.post>( - '/invite/process-scene', - { scene, userId } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 获取邀请统计数据 - */ -export async function getInviteStats(inviterId: number) { - const res = await request.get>( - `/invite/stats/${inviterId}` - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 分页查询邀请记录 - */ -export async function pageInviteRecords(params: InviteRecordParam) { - const res = await request.get>>( - '/invite/records/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 获取我的邀请记录 - */ -export async function getMyInviteRecords(params: InviteRecordParam) { - const res = await request.get>>( - '/invite/my-records', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 验证邀请码有效性 - */ -export async function validateInviteCode(scene: string) { - const res = await request.post>( - '/invite/validate-code', - { scene } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 更新邀请状态 - */ -export async function updateInviteStatus(inviteId: number, status: 'registered' | 'activated') { - const res = await request.put>( - `/invite/update-status/${inviteId}`, - { status } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 获取邀请排行榜 - */ -export async function getInviteRanking(params?: { limit?: number; period?: 'day' | 'week' | 'month' }) { - const res = await request.get>>( - '/invite/ranking', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopInvite/model/index.ts b/src_bak/api/shop/shopInvite/model/index.ts deleted file mode 100644 index 11aada9..0000000 --- a/src_bak/api/shop/shopInvite/model/index.ts +++ /dev/null @@ -1,279 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 邀请记录表 - */ -export interface InviteRecord { - // 主键ID - id?: number; - // 邀请人ID - inviterId?: number; - // 被邀请人ID - inviteeId?: number; - // 邀请人姓名 - inviterName?: string; - // 被邀请人姓名 - inviteeName?: string; - // 邀请来源 (qrcode, link, share等) - source?: string; - // 场景值 - scene?: string; - // 邀请状态: pending-待注册, registered-已注册, activated-已激活 - status?: 'pending' | 'registered' | 'activated'; - // 邀请时间 - inviteTime?: string; - // 注册时间 - registerTime?: string; - // 激活时间 - activateTime?: string; - // 备注 - comments?: string; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 邀请统计表 - */ -export interface InviteStats { - // 主键ID - id?: number; - // 邀请人ID - inviterId?: number; - // 统计日期 - statDate?: string; - // 总邀请数 - totalInvites?: number; - // 成功注册数 - successfulRegistrations?: number; - // 激活用户数 - activatedUsers?: number; - // 转化率 - conversionRate?: number; - // 今日邀请数 - todayInvites?: number; - // 本周邀请数 - weeklyInvites?: number; - // 本月邀请数 - monthlyInvites?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 邀请来源统计表 - */ -export interface InviteSourceStats { - // 主键ID - id?: number; - // 邀请人ID - inviterId?: number; - // 来源类型 - source?: string; - // 来源名称 - sourceName?: string; - // 邀请数量 - inviteCount?: number; - // 成功数量 - successCount?: number; - // 转化率 - conversionRate?: number; - // 统计日期 - statDate?: string; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 小程序码记录表 - */ -export interface MiniProgramCode { - // 主键ID - id?: number; - // 邀请人ID - inviterId?: number; - // 场景值 - scene?: string; - // 小程序码URL - codeUrl?: string; - // 页面路径 - pagePath?: string; - // 二维码宽度 - width?: number; - // 环境版本 - envVersion?: string; - // 过期时间 - expireTime?: string; - // 使用次数 - useCount?: number; - // 最后使用时间 - lastUseTime?: string; - // 状态: active-有效, expired-过期, disabled-禁用 - status?: 'active' | 'expired' | 'disabled'; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 邀请记录搜索条件 - */ -export interface InviteRecordParam extends PageParam { - // 邀请人ID - inviterId?: number; - // 被邀请人ID - inviteeId?: number; - // 邀请状态 - status?: string; - // 邀请来源 - source?: string; - // 开始时间 - startTime?: string; - // 结束时间 - endTime?: string; - // 关键词搜索 - keywords?: string; -} - -/** - * 邀请统计搜索条件 - */ -export interface InviteStatsParam extends PageParam { - // 邀请人ID - inviterId?: number; - // 统计开始日期 - startDate?: string; - // 统计结束日期 - endDate?: string; -} - -/** - * 邀请来源统计搜索条件 - */ -export interface InviteSourceStatsParam extends PageParam { - // 邀请人ID - inviterId?: number; - // 来源类型 - source?: string; - // 统计开始日期 - startDate?: string; - // 统计结束日期 - endDate?: string; -} - -/** - * 小程序码搜索条件 - */ -export interface MiniProgramCodeParam extends PageParam { - // 邀请人ID - inviterId?: number; - // 状态 - status?: string; - // 场景值 - scene?: string; -} - -/** - * 邀请排行榜数据 - */ -export interface InviteRanking { - // 邀请人ID - inviterId?: number; - // 邀请人姓名 - inviterName?: string; - // 邀请人头像 - inviterAvatar?: string; - // 邀请数量 - inviteCount?: number; - // 成功数量 - successCount?: number; - // 转化率 - conversionRate?: number; - // 排名 - rank?: number; - // 奖励金额 - rewardAmount?: number; -} - -/** - * 邀请奖励配置 - */ -export interface InviteRewardConfig { - // 主键ID - id?: number; - // 奖励类型: register-注册奖励, activate-激活奖励, order-订单奖励 - rewardType?: string; - // 奖励名称 - rewardName?: string; - // 奖励金额 - rewardAmount?: number; - // 奖励积分 - rewardPoints?: number; - // 奖励优惠券ID - couponId?: number; - // 是否启用 - enabled?: boolean; - // 生效时间 - effectTime?: string; - // 失效时间 - expireTime?: string; - // 备注 - comments?: string; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 邀请奖励记录 - */ -export interface InviteRewardRecord { - // 主键ID - id?: number; - // 邀请记录ID - inviteRecordId?: number; - // 邀请人ID - inviterId?: number; - // 被邀请人ID - inviteeId?: number; - // 奖励类型 - rewardType?: string; - // 奖励金额 - rewardAmount?: number; - // 奖励积分 - rewardPoints?: number; - // 优惠券ID - couponId?: number; - // 发放状态: pending-待发放, issued-已发放, failed-发放失败 - status?: 'pending' | 'issued' | 'failed'; - // 发放时间 - issueTime?: string; - // 失败原因 - failReason?: string; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} diff --git a/src_bak/api/shop/shopInvoiceTitle/index.ts b/src_bak/api/shop/shopInvoiceTitle/index.ts deleted file mode 100644 index f2509c5..0000000 --- a/src_bak/api/shop/shopInvoiceTitle/index.ts +++ /dev/null @@ -1,166 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopInvoiceTitle, ShopInvoiceTitleParam, ShopInvoiceRecord, ShopInvoiceRecordParam, InvoiceApplyRequest } from './model'; - -/** - * 分页查询发票抬头 - */ -export async function pageShopInvoiceTitle(params: ShopInvoiceTitleParam) { - const res = await request.get>>( - '/shop/shop-invoice-title/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询发票抬头列表 - */ -export async function listShopInvoiceTitle(params?: ShopInvoiceTitleParam) { - const res = await request.get>( - '/shop/shop-invoice-title', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加发票抬头 - */ -export async function addShopInvoiceTitle(data: ShopInvoiceTitle) { - const res = await request.post>( - '/shop/shop-invoice-title', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改发票抬头 - */ -export async function updateShopInvoiceTitle(data: ShopInvoiceTitle) { - const res = await request.put>( - '/shop/shop-invoice-title', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除发票抬头 - */ -export async function removeShopInvoiceTitle(id?: number) { - const res = await request.del>( - '/shop/shop-invoice-title/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询发票抬头 - */ -export async function getShopInvoiceTitle(id: number) { - const res = await request.get>( - '/shop/shop-invoice-title/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 设置默认发票抬头 - */ -export async function setDefaultInvoiceTitle(id: number) { - const res = await request.put>( - '/shop/shop-invoice-title/set-default/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 分页查询发票记录 - */ -export async function pageShopInvoiceRecord(params: ShopInvoiceRecordParam) { - const res = await request.get>>( - '/shop/shop-invoice-record/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询发票记录列表 - */ -export async function listShopInvoiceRecord(params?: ShopInvoiceRecordParam) { - const res = await request.get>( - '/shop/shop-invoice-record', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 申请发票 - */ -export async function applyInvoice(data: InvoiceApplyRequest) { - const res = await request.post>( - '/shop/shop-invoice-record/apply', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询发票记录 - */ -export async function getShopInvoiceRecord(id: number) { - const res = await request.get>( - '/shop/shop-invoice-record/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 获取用户可开票订单列表 - */ -export async function listInvoiceableOrders() { - const res = await request.get>( - '/shop/shop-invoice-record/invoiceable-orders' - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopInvoiceTitle/model.ts b/src_bak/api/shop/shopInvoiceTitle/model.ts deleted file mode 100644 index 88330bf..0000000 --- a/src_bak/api/shop/shopInvoiceTitle/model.ts +++ /dev/null @@ -1,155 +0,0 @@ -/** - * 发票抬头表 - */ -export interface ShopInvoiceTitle { - /** 主键ID */ - id?: number; - /** 用户ID */ - userId?: number; - /** 抬头类型: personal-个人, company-企业 */ - type?: 'personal' | 'company'; - /** 发票抬头名称 */ - name?: string; - /** 税号(企业必填) */ - taxNumber?: string; - /** 注册地址 */ - address?: string; - /** 注册电话 */ - phone?: string; - /** 开户银行 */ - bankName?: string; - /** 银行账号 */ - bankAccount?: string; - /** 接收邮箱 */ - email?: string; - /** 是否默认: 0-否, 1-是 */ - isDefault?: number; - /** 商城ID */ - tenantId?: number; - /** 创建时间 */ - createTime?: string; - /** 修改时间 */ - updateTime?: string; -} - -/** - * 发票抬头查询参数 - */ -export interface ShopInvoiceTitleParam { - /** 主键ID */ - id?: number; - /** 用户ID */ - userId?: number; - /** 抬头类型 */ - type?: string; - /** 是否默认 */ - isDefault?: number; - /** 第几页 */ - page?: number; - /** 每页多少条 */ - limit?: number; - /** 排序字段 */ - sort?: string; - /** 排序方式 */ - order?: string; -} - -/** - * 发票申请记录 - */ -export interface ShopInvoiceRecord { - /** 主键ID */ - id?: number; - /** 用户ID */ - userId?: number; - /** 用户昵称 */ - userNickName?: string; - /** 订单ID */ - orderId?: number; - /** 订单编号 */ - orderNo?: string; - /** 发票抬头ID */ - titleId?: number; - /** 发票类型: normal-普通发票, vat-增值税发票 */ - invoiceType?: 'normal' | 'vat'; - /** 发票抬头 */ - titleName?: string; - /** 税号 */ - taxNumber?: string; - /** 发票金额 */ - amount?: number; - /** 发票状态: 0-待处理, 1-开票中, 2-已开票, 3-开票失败 */ - status?: number; - /** 发票流水号 */ - invoiceNo?: string; - /** 发票URL */ - invoiceUrl?: string; - /** 申请时间 */ - applyTime?: string; - /** 开票时间 */ - invoiceTime?: string; - /** 商城ID */ - tenantId?: number; - /** 创建时间 */ - createTime?: string; - /** 修改时间 */ - updateTime?: string; -} - -/** - * 发票申请参数 - */ -export interface ShopInvoiceRecordParam { - /** 主键ID */ - id?: number; - /** 用户ID */ - userId?: number; - /** 订单ID */ - orderId?: number; - /** 发票抬头ID */ - titleId?: number; - /** 发票类型 */ - invoiceType?: string; - /** 发票状态 */ - status?: number; - /** 第几页 */ - page?: number; - /** 每页多少条 */ - limit?: number; - /** 排序字段 */ - sort?: string; - /** 排序方式 */ - order?: string; - /** 起始时间 */ - createTimeStart?: string; - /** 结束时间 */ - createTimeEnd?: string; -} - -/** - * 发票申请请求 - */ -export interface InvoiceApplyRequest { - /** 订单ID */ - orderId: number; - /** 发票抬头ID */ - titleId: number; - /** 发票类型 */ - invoiceType?: 'normal' | 'vat'; - /** 接收邮箱(电子发票) */ - email?: string; -} - -/** - * 发票状态枚举 - */ -export enum InvoiceStatusEnum { - /** 待处理 */ - PENDING = 0, - /** 开票中 */ - PROCESSING = 1, - /** 已开票 */ - COMPLETED = 2, - /** 开票失败 */ - FAILED = 3, -} diff --git a/src_bak/api/shop/shopLogistics/index.ts b/src_bak/api/shop/shopLogistics/index.ts deleted file mode 100644 index 97ccd93..0000000 --- a/src_bak/api/shop/shopLogistics/index.ts +++ /dev/null @@ -1,258 +0,0 @@ -import { request } from '@/utils/request' - -// 物流信息接口 -export interface LogisticsInfo { - expressCompany: string // 快递公司代码 - expressCompanyName: string // 快递公司名称 - expressNo: string // 快递单号 - status: string // 物流状态 - updateTime: string // 更新时间 - estimatedTime?: string // 预计送达时间 - currentLocation?: string // 当前位置 - senderInfo?: { - name: string - phone: string - address: string - } - receiverInfo?: { - name: string - phone: string - address: string - } -} - -// 物流跟踪记录 -export interface LogisticsTrack { - time: string - location: string - status: string - description: string - isCompleted: boolean -} - -// 物流查询响应 -export interface LogisticsResponse { - success: boolean - data: { - logisticsInfo: LogisticsInfo - trackList: LogisticsTrack[] - } - message?: string -} - -// 支持的快递公司 -export const EXPRESS_COMPANIES = { - 'SF': '顺丰速运', - 'YTO': '圆通速递', - 'ZTO': '中通快递', - 'STO': '申通快递', - 'YD': '韵达速递', - 'HTKY': '百世快递', - 'JD': '京东物流', - 'EMS': '中国邮政', - 'YUNDA': '韵达快递', - 'JTSD': '极兔速递', - 'DBKD': '德邦快递', - 'UC': '优速快递' -} - -// 查询物流信息 -export const queryLogistics = async (params: { - orderId?: string - expressNo: string - expressCompany: string -}): Promise => { - try { - // 调用真实的物流查询API - const response = await request({ - url: '/logistics/query', - method: 'POST', - data: params - }) - - return response - } catch (error) { - console.error('查询物流信息失败:', error) - // 抛出错误而不是返回 Mock 数据 - throw error - } -} - -/** - * @deprecated 已弃用 - Mock 数据仅用于开发调试 - * 生产环境应删除此函数 - */ -const getMockLogisticsData = (params: { - orderId?: string - expressNo: string - expressCompany: string -}): LogisticsResponse => { - const now = new Date() - const yesterday = new Date(now.getTime() - 24 * 60 * 60 * 1000) - const twoDaysAgo = new Date(now.getTime() - 2 * 24 * 60 * 60 * 1000) - const threeDaysAgo = new Date(now.getTime() - 3 * 24 * 60 * 60 * 1000) - - const mockData: LogisticsResponse = { - success: true, - data: { - logisticsInfo: { - expressCompany: params.expressCompany, - expressCompanyName: EXPRESS_COMPANIES[params.expressCompany] || params.expressCompany, - expressNo: params.expressNo, - status: '运输中', - updateTime: now.toISOString(), - estimatedTime: new Date(now.getTime() + 24 * 60 * 60 * 1000).toISOString(), - currentLocation: '北京市朝阳区', - senderInfo: { - name: '商家仓库', - phone: '400-123-4567', - address: '上海市浦东新区张江高科技园区' - }, - receiverInfo: { - name: '张三', - phone: '138****5678', - address: '北京市朝阳区三里屯街道' - } - }, - trackList: [ - { - time: now.toISOString(), - location: '北京市朝阳区', - status: '运输中', - description: '快件正在运输途中,预计今日送达,请保持手机畅通', - isCompleted: false - }, - { - time: new Date(now.getTime() - 2 * 60 * 60 * 1000).toISOString(), - location: '北京转运中心', - status: '已发出', - description: '快件已从北京转运中心发出,正在派送途中', - isCompleted: true - }, - { - time: new Date(now.getTime() - 6 * 60 * 60 * 1000).toISOString(), - location: '北京转运中心', - status: '已到达', - description: '快件已到达北京转运中心,正在进行分拣', - isCompleted: true - }, - { - time: yesterday.toISOString(), - location: '天津转运中心', - status: '已发出', - description: '快件已从天津转运中心发出', - isCompleted: true - }, - { - time: new Date(yesterday.getTime() - 4 * 60 * 60 * 1000).toISOString(), - location: '天津转运中心', - status: '已到达', - description: '快件已到达天津转运中心', - isCompleted: true - }, - { - time: twoDaysAgo.toISOString(), - location: '上海转运中心', - status: '已发出', - description: '快件已从上海转运中心发出', - isCompleted: true - }, - { - time: new Date(twoDaysAgo.getTime() - 2 * 60 * 60 * 1000).toISOString(), - location: '上海转运中心', - status: '已到达', - description: '快件已到达上海转运中心,正在进行分拣', - isCompleted: true - }, - { - time: threeDaysAgo.toISOString(), - location: '上海市浦东新区', - status: '已发货', - description: '商家已发货,快件已交给快递公司', - isCompleted: true - } - ] - } - } - - return mockData -} - -// 获取快递公司列表 -export const getExpressCompanies = () => { - return Object.entries(EXPRESS_COMPANIES).map(([code, name]) => ({ - code, - name - })) -} - -// 根据快递单号自动识别快递公司 -export const detectExpressCompany = (expressNo: string): string => { - // 这里可以根据快递单号的规则来自动识别快递公司 - // 实际项目中可以使用第三方服务的自动识别API - - if (expressNo.startsWith('SF')) return 'SF' - if (expressNo.startsWith('YT')) return 'YTO' - if (expressNo.startsWith('ZT')) return 'ZTO' - if (expressNo.startsWith('ST')) return 'STO' - if (expressNo.startsWith('YD')) return 'YD' - if (expressNo.startsWith('JD')) return 'JD' - if (expressNo.startsWith('EMS')) return 'EMS' - - // 默认返回顺丰 - return 'SF' -} - -// 格式化物流状态 -export const formatLogisticsStatus = (status: string): { - text: string - color: string - icon: string -} => { - const statusMap = { - '已发货': { text: '已发货', color: '#1890ff', icon: '📦' }, - '运输中': { text: '运输中', color: '#52c41a', icon: '🚚' }, - '派送中': { text: '派送中', color: '#faad14', icon: '🏃' }, - '已签收': { text: '已签收', color: '#52c41a', icon: '✅' }, - '异常': { text: '异常', color: '#ff4d4f', icon: '⚠️' }, - '退回': { text: '退回', color: '#ff4d4f', icon: '↩️' } - } - - return statusMap[status] || { text: status, color: '#666', icon: '📋' } -} - -// 计算预计送达时间 -export const calculateEstimatedTime = ( - sendTime: string, - expressCompany: string, - distance?: number -): string => { - const sendDate = new Date(sendTime) - let estimatedDays = 3 // 默认3天 - - // 根据快递公司调整预计时间 - switch (expressCompany) { - case 'SF': - estimatedDays = 1 // 顺丰次日达 - break - case 'JD': - estimatedDays = 1 // 京东次日达 - break - case 'YTO': - case 'ZTO': - case 'STO': - estimatedDays = 2 // 三通一达2天 - break - default: - estimatedDays = 3 - } - - // 根据距离调整(如果有距离信息) - if (distance) { - if (distance > 2000) estimatedDays += 1 // 超过2000公里加1天 - if (distance > 3000) estimatedDays += 1 // 超过3000公里再加1天 - } - - const estimatedDate = new Date(sendDate.getTime() + estimatedDays * 24 * 60 * 60 * 1000) - return estimatedDate.toISOString() -} diff --git a/src_bak/api/shop/shopMemberBenefit.ts b/src_bak/api/shop/shopMemberBenefit.ts deleted file mode 100644 index 83ce19d..0000000 --- a/src_bak/api/shop/shopMemberBenefit.ts +++ /dev/null @@ -1,29 +0,0 @@ -import request from '@/utils/request'; - -/** 获取可用权益包列表 */ -export function getBenefitPackageList() { - return request.get('/shop/shop-member-benefit-package/list'); -} - -/** 获取权益包详情 */ -export function getBenefitPackageDetail(id: number) { - return request.get(`/shop/shop-member-benefit-package/${id}`); -} - -/** 申请兑换 */ -export function exchangeBenefitPackage(data: { - packageId: number; - addressId?: number; -}) { - return request.post('/shop/shop-member-benefit-exchange/exchange', data); -} - -/** 我的兑换记录 */ -export function getMyExchangeList(params?: any) { - return request.get('/shop/shop-member-benefit-exchange/my/list', params); -} - -/** 取消兑换 */ -export function cancelExchange(id: number) { - return request.post(`/shop/shop-member-benefit-exchange/cancel/${id}`); -} diff --git a/src_bak/api/shop/shopMemberCenter.ts b/src_bak/api/shop/shopMemberCenter.ts deleted file mode 100644 index 66c4793..0000000 --- a/src_bak/api/shop/shopMemberCenter.ts +++ /dev/null @@ -1,113 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult } from '@/api'; - -/** - * 会员中心数据 - 整合分销商相关信息 - */ -export interface MemberCenterData { - // 基本信息 - memberLevel: string; // 会员等级名称 - memberLevelId: number; // 会员等级ID - isDealer: boolean; // 是否是分销商 - // 佣金信息 - commission: number; // 可提现佣金 - totalCommission: number; // 累计佣金 - frozenCommission: number; // 冻结佣金 - // 团队信息 - teamCount: number; // 团队人数 - activeCount: number; // 活跃人数 - memberCount: number; // 会员人数 - // 推广信息 - inviteCode: string; // 邀请码 - qrCode: string; // 推广二维码 -} - -/** - * 佣金明细记录 - */ -export interface CommissionRecord { - id: number; - type: number; // 1=佣金收入, 2=佣金提现, 3=佣金退回 - amount: number; // 金额 - status: number; // 状态: 0=待审核, 10=审核通过, 20=待收款, 30=已拒绝, 40=已完成 - remark: string; // 备注 - createTime: string; // 创建时间 - updateTime: string; // 更新时间 -} - -/** - * 获取会员中心数据 - */ -export async function getMemberCenterData() { - const res = await request.get>('/shop/shop-dealer-user/info'); - if (res.code === 0 && res.data) { - return res.data; - } - // 如果接口不存在,返回默认数据 - return { - memberLevel: '普通会员', - memberLevelId: 0, - isDealer: false, - commission: 0, - totalCommission: 0, - frozenCommission: 0, - teamCount: 0, - activeCount: 0, - memberCount: 0, - inviteCode: '', - qrCode: '', - }; -} - -/** - * 获取佣金明细列表 - */ -export async function listCommissionRecord(params?: { page?: number; limit?: number }) { - const res = await request.get>('/shop/shop-commission-record/page', params); - if (res.code === 0 && res.data) { - return res.data; - } - return { list: [], total: 0 }; -} - -/** - * 获取分销商资金信息 - */ -export async function getDealerCapital() { - const res = await request.get>('/shop/shop-dealer-capital/summary'); - if (res.code === 0 && res.data) { - return res.data; - } - return { - balance: 0, - totalEarning: 0, - frozenAmount: 0, - withdrawAmount: 0, - }; -} - -/** - * 获取分销设置信息(用于会员升级) - */ -export async function getDealerSetting() { - const res = await request.get>('/shop/shop-commission-role/list'); - if (res.code === 0 && res.data) { - return res.data; - } - return []; -} diff --git a/src_bak/api/shop/shopMemberRegister.ts b/src_bak/api/shop/shopMemberRegister.ts deleted file mode 100644 index 299449f..0000000 --- a/src_bak/api/shop/shopMemberRegister.ts +++ /dev/null @@ -1,108 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult } from '@/api'; - -/** - * 会员注册记录相关API - */ - -/** - * 会员注册记录 - */ -export interface MemberRegister { - id: number; - dealerId: number; - dealerName?: string; - dealerPhone?: string; - phone: string; - realName?: string; - memberFee: number; - memberFeeStatus: number; - registerFee: number; - registerFeeStatus: number; - userId?: number; - nickName?: string; - status: number; - comments?: string; - createTime: string; -} - -/** - * 注册费支付信息 - */ -export interface RegisterPayInfo { - id: number; - phone: string; - realName?: string; - registerFee: number; - dealerName?: string; - dealerPhone?: string; -} - -/** - * 获取我的下级注册列表 - */ -export async function getMyRegisterList(params?: { page?: number; limit?: number }) { - const res = await request.get>('/shop/shop-member-register/my/list', params); - return res.data || []; -} - -/** - * 录入下级 - */ -export async function addSubordinate(data: { phone: string; realName?: string }) { - const res = await request.post>('/shop/shop-member-register/add', data); - return res; -} - -/** - * 修改下级信息 - */ -export async function updateSubordinate(data: { id: number; phone?: string; realName?: string }) { - const res = await request.put>('/shop/shop-member-register/update', data); - return res; -} - -/** - * 检查手机号是否可注册 - */ -export async function checkPhone(phone: string) { - const res = await request.get>('/shop/shop-member-register/check', { phone }); - return res.data; -} - -/** - * 获取注册费支付信息 - */ -export async function getRegisterPayInfo(phone: string) { - const res = await request.get>('/shop/shop-member-register/pay/info', { phone }); - return res.data; -} - -/** - * 获取当前用户的注册状态 - */ -export async function getMyRegisterStatus() { - const res = await request.get>('/shop/shop-member-register/my/status'); - return res.data; -} - -/** - * 获取会员配置信息 - */ -export async function getMemberConfig() { - const res = await request.get>('/shop/shop-member-register/config'); - return res.data; -} diff --git a/src_bak/api/shop/shopMerchant/index.ts b/src_bak/api/shop/shopMerchant/index.ts deleted file mode 100644 index 6a855bf..0000000 --- a/src_bak/api/shop/shopMerchant/index.ts +++ /dev/null @@ -1,101 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopMerchant, ShopMerchantParam } from './model'; - -/** - * 分页查询商户 - */ -export async function pageShopMerchant(params: ShopMerchantParam) { - const res = await request.get>>( - '/shop/shop-merchant/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询商户列表 - */ -export async function listShopMerchant(params?: ShopMerchantParam) { - const res = await request.get>( - '/shop/shop-merchant', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加商户 - */ -export async function addShopMerchant(data: ShopMerchant) { - const res = await request.post>( - '/shop/shop-merchant', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改商户 - */ -export async function updateShopMerchant(data: ShopMerchant) { - const res = await request.put>( - '/shop/shop-merchant', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除商户 - */ -export async function removeShopMerchant(id?: number) { - const res = await request.del>( - '/shop/shop-merchant/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除商户 - */ -export async function removeBatchShopMerchant(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-merchant/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询商户 - */ -export async function getShopMerchant(id: number) { - const res = await request.get>( - '/shop/shop-merchant/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopMerchant/model/index.ts b/src_bak/api/shop/shopMerchant/model/index.ts deleted file mode 100644 index 4074c0d..0000000 --- a/src_bak/api/shop/shopMerchant/model/index.ts +++ /dev/null @@ -1,95 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 商户 - */ -export interface ShopMerchant { - // ID - merchantId?: number; - // 商户名称 - merchantName?: string; - // 商户编号 - merchantCode?: string; - // 商户类型 - type?: number; - // 商户图标 - image?: string; - // 商户手机号 - phone?: string; - // 商户姓名 - realName?: string; - // 店铺类型 - shopType?: string; - // 项目分类 - itemType?: string; - // 商户分类 - category?: string; - // 商户经营分类 - merchantCategoryId?: number; - // 商户分类 - merchantCategoryTitle?: string; - // 经纬度 - lngAndLat?: string; - // - lng?: string; - // - lat?: string; - // 所在省份 - province?: string; - // 所在城市 - city?: string; - // 所在辖区 - region?: string; - // 详细地址 - address?: string; - // 手续费 - commission?: string; - // 关键字 - keywords?: string; - // 资质图片 - files?: string; - // 营业时间 - businessTime?: string; - // 文章内容 - content?: string; - // 每小时价格 - price?: string; - // 是否自营 - ownStore?: number; - // 是否可以快递 - canExpress?: string; - // 是否推荐 - recommend?: number; - // 是否营业 - isOn?: number; - // - startTime?: string; - // - endTime?: string; - // 是否需要审核 - goodsReview?: number; - // 管理入口 - adminUrl?: string; - // 备注 - comments?: string; - // 所有人 - userId?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 状态 - status?: number; - // 排序号 - sortNumber?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; -} - -/** - * 商户搜索条件 - */ -export interface ShopMerchantParam extends PageParam { - merchantId?: number; - keywords?: string; -} diff --git a/src_bak/api/shop/shopMerchantAccount/index.ts b/src_bak/api/shop/shopMerchantAccount/index.ts deleted file mode 100644 index eaa94f2..0000000 --- a/src_bak/api/shop/shopMerchantAccount/index.ts +++ /dev/null @@ -1,101 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopMerchantAccount, ShopMerchantAccountParam } from './model'; - -/** - * 分页查询商户账号 - */ -export async function pageShopMerchantAccount(params: ShopMerchantAccountParam) { - const res = await request.get>>( - '/shop/shop-merchant-account/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询商户账号列表 - */ -export async function listShopMerchantAccount(params?: ShopMerchantAccountParam) { - const res = await request.get>( - '/shop/shop-merchant-account', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加商户账号 - */ -export async function addShopMerchantAccount(data: ShopMerchantAccount) { - const res = await request.post>( - '/shop/shop-merchant-account', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改商户账号 - */ -export async function updateShopMerchantAccount(data: ShopMerchantAccount) { - const res = await request.put>( - '/shop/shop-merchant-account', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除商户账号 - */ -export async function removeShopMerchantAccount(id?: number) { - const res = await request.del>( - '/shop/shop-merchant-account/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除商户账号 - */ -export async function removeBatchShopMerchantAccount(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-merchant-account/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询商户账号 - */ -export async function getShopMerchantAccount(id: number) { - const res = await request.get>( - '/shop/shop-merchant-account/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopMerchantAccount/model/index.ts b/src_bak/api/shop/shopMerchantAccount/model/index.ts deleted file mode 100644 index 8dc79db..0000000 --- a/src_bak/api/shop/shopMerchantAccount/model/index.ts +++ /dev/null @@ -1,39 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 商户账号 - */ -export interface ShopMerchantAccount { - // ID - id?: number; - // 商户手机号 - phone?: string; - // 真实姓名 - realName?: string; - // 商户ID - merchantId?: number; - // 角色ID - roleId?: number; - // 角色名称 - roleName?: string; - // 用户ID - userId?: number; - // 备注 - comments?: string; - // 状态 - status?: number; - // 排序号 - sortNumber?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; -} - -/** - * 商户账号搜索条件 - */ -export interface ShopMerchantAccountParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/shop/shopMerchantApply/index.ts b/src_bak/api/shop/shopMerchantApply/index.ts deleted file mode 100644 index 151f6aa..0000000 --- a/src_bak/api/shop/shopMerchantApply/index.ts +++ /dev/null @@ -1,115 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopMerchantApply, ShopMerchantApplyParam } from './model'; - -/** - * 分页查询商户入驻申请 - */ -export async function pageShopMerchantApply(params: ShopMerchantApplyParam) { - const res = await request.get>>( - '/shop/shop-merchant-apply/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询商户入驻申请列表 - */ -export async function listShopMerchantApply(params?: ShopMerchantApplyParam) { - const res = await request.get>( - '/shop/shop-merchant-apply', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加商户入驻申请 - */ -export async function addShopMerchantApply(data: ShopMerchantApply) { - const res = await request.post>( - '/shop/shop-merchant-apply', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改商户入驻申请 - */ -export async function updateShopMerchantApply(data: ShopMerchantApply) { - const res = await request.put>( - '/shop/shop-merchant-apply', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -// 审核通过 -export async function checkShopMerchantApply(data: ShopMerchantApply) { - const res = await request.put>( - '/shop/shop-merchant-apply/check', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除商户入驻申请 - */ -export async function removeShopMerchantApply(id?: number) { - const res = await request.del>( - '/shop/shop-merchant-apply/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除商户入驻申请 - */ -export async function removeBatchShopMerchantApply( - data: (number | undefined)[] -) { - const res = await request.del>( - '/shop/shop-merchant-apply/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询商户入驻申请 - */ -export async function getShopMerchantApply(id: number) { - const res = await request.get>( - '/shop/shop-merchant-apply/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopMerchantApply/model/index.ts b/src_bak/api/shop/shopMerchantApply/model/index.ts deleted file mode 100644 index ba14a2e..0000000 --- a/src_bak/api/shop/shopMerchantApply/model/index.ts +++ /dev/null @@ -1,72 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 商户入驻申请 - */ -export interface ShopMerchantApply { - // ID - applyId?: number; - // 类型 - type?: number; - // 主体名称 - merchantName?: string; - // 证件号码 - merchantCode?: string; - // 商户图标 - image?: string; - // 商户手机号 - phone?: string; - // 商户姓名 - realName?: string; - // 身份证号码 - idCard?: string; - // 店铺类型 - shopType?: string; - // 商户分类 - category?: string; - // 手续费 - commission?: string; - // 关键字 - keywords?: string; - // 营业执照 - yyzz?: string; - // 身份证正面 - sfz1?: string; - // 身份证反面 - sfz2?: string; - // 资质图片 - files?: string; - // 所有人 - userId?: number; - // 是否自营 - ownStore?: number; - // 是否推荐 - recommend?: number; - // 是否需要审核 - goodsReview?: number; - // 工作负责人 - name2?: string; - // 驳回原因 - reason?: string; - // 备注 - comments?: string; - // 状态 - status?: number; - // 排序号 - sortNumber?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; -} - -/** - * 商户入驻申请搜索条件 - */ -export interface ShopMerchantApplyParam extends PageParam { - applyId?: number; - userId?: number; - shopType?: string; - phone?: string; - keywords?: string; -} diff --git a/src_bak/api/shop/shopMerchantCount/index.ts b/src_bak/api/shop/shopMerchantCount/index.ts deleted file mode 100644 index feef797..0000000 --- a/src_bak/api/shop/shopMerchantCount/index.ts +++ /dev/null @@ -1,103 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopMerchantCount, ShopMerchantCountParam } from './model'; - -/** - * 分页查询门店销售统计表 - */ -export async function pageShopMerchantCount(params: ShopMerchantCountParam) { - const res = await request.get>>( - '/shop/shop-merchant-count/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询门店销售统计表列表 - */ -export async function listShopMerchantCount(params?: ShopMerchantCountParam) { - const res = await request.get>( - '/shop/shop-merchant-count', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加门店销售统计表 - */ -export async function addShopMerchantCount(data: ShopMerchantCount) { - const res = await request.post>( - '/shop/shop-merchant-count', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改门店销售统计表 - */ -export async function updateShopMerchantCount(data: ShopMerchantCount) { - const res = await request.put>( - '/shop/shop-merchant-count', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除门店销售统计表 - */ -export async function removeShopMerchantCount(id?: number) { - const res = await request.del>( - '/shop/shop-merchant-count/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除门店销售统计表 - */ -export async function removeBatchShopMerchantCount( - data: (number | undefined)[] -) { - const res = await request.del>( - '/shop/shop-merchant-count/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询门店销售统计表 - */ -export async function getShopMerchantCount(id: number) { - const res = await request.get>( - '/shop/shop-merchant-count/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopMerchantCount/model/index.ts b/src_bak/api/shop/shopMerchantCount/model/index.ts deleted file mode 100644 index cc136f3..0000000 --- a/src_bak/api/shop/shopMerchantCount/model/index.ts +++ /dev/null @@ -1,29 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 门店销售统计表 - */ -export interface ShopMerchantCount { - // ID - id?: number; - // 店铺名称 - name?: string; - // 店铺说明 - comments?: string; - // 状态 - status?: number; - // 排序号 - sortNumber?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; -} - -/** - * 门店销售统计表搜索条件 - */ -export interface ShopMerchantCountParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/shop/shopMerchantType/index.ts b/src_bak/api/shop/shopMerchantType/index.ts deleted file mode 100644 index 4bf8b4e..0000000 --- a/src_bak/api/shop/shopMerchantType/index.ts +++ /dev/null @@ -1,103 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopMerchantType, ShopMerchantTypeParam } from './model'; - -/** - * 分页查询商户类型 - */ -export async function pageShopMerchantType(params: ShopMerchantTypeParam) { - const res = await request.get>>( - '/shop/shop-merchant-type/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询商户类型列表 - */ -export async function listShopMerchantType(params?: ShopMerchantTypeParam) { - const res = await request.get>( - '/shop/shop-merchant-type', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加商户类型 - */ -export async function addShopMerchantType(data: ShopMerchantType) { - const res = await request.post>( - '/shop/shop-merchant-type', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改商户类型 - */ -export async function updateShopMerchantType(data: ShopMerchantType) { - const res = await request.put>( - '/shop/shop-merchant-type', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除商户类型 - */ -export async function removeShopMerchantType(id?: number) { - const res = await request.del>( - '/shop/shop-merchant-type/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除商户类型 - */ -export async function removeBatchShopMerchantType( - data: (number | undefined)[] -) { - const res = await request.del>( - '/shop/shop-merchant-type/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询商户类型 - */ -export async function getShopMerchantType(id: number) { - const res = await request.get>( - '/shop/shop-merchant-type/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopMerchantType/model/index.ts b/src_bak/api/shop/shopMerchantType/model/index.ts deleted file mode 100644 index 522d081..0000000 --- a/src_bak/api/shop/shopMerchantType/model/index.ts +++ /dev/null @@ -1,30 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 商户类型 - */ -export interface ShopMerchantType { - // ID - id?: number; - // 店铺类型 - name?: string; - // 店铺入驻条件 - comments?: string; - // 状态 - status?: number; - // 排序号 - sortNumber?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - value?: string; -} - -/** - * 商户类型搜索条件 - */ -export interface ShopMerchantTypeParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/shop/shopMessage/index.ts b/src_bak/api/shop/shopMessage/index.ts deleted file mode 100644 index f8c4d8f..0000000 --- a/src_bak/api/shop/shopMessage/index.ts +++ /dev/null @@ -1,37 +0,0 @@ -import request from '@/utils/request' -import type { ShopMessage } from './model' - -/** 获取消息列表 */ -export function listShopMessage(params?: { - page?: number - limit?: number - type?: string - isRead?: boolean -}) { - return request.get<{ code: number; data: { list: ShopMessage[]; total: number } }>('/user/message/list', params) -} - -/** 获取消息详情 */ -export function getShopMessage(id: string) { - return request.get<{ code: number; data: ShopMessage }>(`/user/message/${id}`) -} - -/** 标记消息已读 */ -export function readShopMessage(id: string) { - return request.put<{ code: number }>(`/user/message/read/${id}`) -} - -/** 删除消息 */ -export function deleteShopMessage(id: string) { - return request.del<{ code: number }>(`/user/message/${id}`) -} - -/** 全部标记已读 */ -export function readAllShopMessage() { - return request.put<{ code: number }>('/user/message/read-all') -} - -/** 获取未读消息数量 */ -export function getUnreadMessageCount() { - return request.get<{ code: number; data: { count: number } }>('/user/message/unread-count') -} diff --git a/src_bak/api/shop/shopMessage/model/index.ts b/src_bak/api/shop/shopMessage/model/index.ts deleted file mode 100644 index 65f40cb..0000000 --- a/src_bak/api/shop/shopMessage/model/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** 消息类型 */ -export type MessageType = 'system' | 'order' | 'activity' - -/** 消息 */ -export interface ShopMessage { - /** 消息ID */ - id: string - /** 消息类型 */ - type: MessageType - /** 消息标题 */ - title: string - /** 消息内容 */ - content: string - /** 是否已读 */ - isRead: boolean - /** 创建时间 */ - createdAt: string - /** 相关链接(可选) */ - link?: string -} diff --git a/src_bak/api/shop/shopNotification/index.ts b/src_bak/api/shop/shopNotification/index.ts deleted file mode 100644 index d4a1eee..0000000 --- a/src_bak/api/shop/shopNotification/index.ts +++ /dev/null @@ -1,140 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopNotification, ShopNotificationParam } from './model'; - -/** - * 分页查询消息通知 - */ -export async function pageShopNotification(params: ShopNotificationParam) { - const res = await request.get>>( - '/shop/shop-notification/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询全部消息通知 - */ -export async function listShopNotification(params?: ShopNotificationParam) { - const res = await request.get>( - '/shop/shop-notification', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询消息通知 - */ -export async function getShopNotification(id: number) { - const res = await request.get>( - '/shop/shop-notification/' + id - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加消息通知 - */ -export async function addShopNotification(data: ShopNotification) { - const res = await request.post>( - '/shop/shop-notification', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改消息通知 - */ -export async function updateShopNotification(data: ShopNotification) { - const res = await request.put>( - '/shop/shop-notification', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除消息通知 - */ -export async function removeShopNotification(id?: number) { - const res = await request.del>( - '/shop/shop-notification/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 获取用户消息列表 - */ -export async function getShopNotificationByUserId(userId: number) { - const res = await request.get>( - '/shop/shop-notification/user/' + userId - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 标记消息已读 - */ -export async function markShopNotificationAsRead(id: number, userId: number) { - const res = await request.put>( - '/shop/shop-notification/read/' + id + '?userId=' + userId, - null - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 标记全部已读 - */ -export async function markAllShopNotificationAsRead(userId: number) { - const res = await request.put>( - '/shop/shop-notification/read-all?userId=' + userId, - null - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 获取未读消息数量 - */ -export async function getShopNotificationUnreadCount(userId: number) { - const res = await request.get>( - '/shop/shop-notification/unread-count', - { userId } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopNotification/model/index.ts b/src_bak/api/shop/shopNotification/model/index.ts deleted file mode 100644 index ce330d7..0000000 --- a/src_bak/api/shop/shopNotification/model/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -export interface ShopNotification { - id?: number; - userId?: number; - type?: number; // 1系统通知 2订单消息 3优惠活动 4物流通知 - title?: string; - content?: string; - relationId?: number; - relationType?: string; - isRead?: number; // 0未读 1已读 - readTime?: string; - tenantId?: number; - createTime?: string; -} - -export interface ShopNotificationParam { - id?: number; - userId?: number; - type?: number; - title?: string; - isRead?: number; - tenantId?: number; - keywords?: string; - createTimeStart?: string; - createTimeEnd?: string; -} diff --git a/src_bak/api/shop/shopOrder/index.ts b/src_bak/api/shop/shopOrder/index.ts deleted file mode 100644 index 95fdd26..0000000 --- a/src_bak/api/shop/shopOrder/index.ts +++ /dev/null @@ -1,194 +0,0 @@ -import request, { ErrorType, RequestError } from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopOrder, ShopOrderParam, OrderCreateRequest } from './model'; - -/** - * 分页查询订单 - */ -export async function pageShopOrder(params: ShopOrderParam) { - const res = await request.get>>( - '/shop/shop-order/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询订单列表 - */ -export async function listShopOrder(params?: ShopOrderParam) { - const res = await request.get>( - '/shop/shop-order', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加订单 - */ -export async function addShopOrder(data: ShopOrder) { - const res = await request.post>( - '/shop/shop-order', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改订单 - */ -export async function updateShopOrder(data: ShopOrder) { - const res = await request.put>( - '/shop/shop-order', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除订单 - */ -export async function removeShopOrder(id?: number) { - const res = await request.del>( - '/shop/shop-order/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除订单 - */ -export async function removeBatchShopOrder(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-order/batch', - { ids: data.filter(Boolean) } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询订单 - */ -export async function getShopOrder(id: number) { - const res = await request.get>( - '/shop/shop-order/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 微信支付返回数据 - */ -export interface WxPayResult { - prepayId: string; - orderNo: string; - timeStamp: string; - nonceStr: string; - package: string; - signType: string; - paySign: string; -} - -/** - * 订单重新发起支付(对"已创建但未支付"的订单生成新的预支付参数,不应重复创建订单) - * - * 说明:不同后端版本可能暴露不同路径,这里做兼容探测;若全部失败,调用方可自行降级处理。 - */ -export interface OrderPrepayRequest { - orderId: number; - payType: number; -} - -export async function prepayShopOrder(data: OrderPrepayRequest) { - const urls = [ - '/shop/shop-order/pay', - '/shop/shop-order/prepay', - '/shop/shop-order/repay' - ]; - - let lastError: unknown; - let businessError: unknown; - for (const url of urls) { - try { - const res = await request.post>(url, data, { showError: false }); - // request.ts 在 code!=0 时会直接 throw;走到这里通常都是 code===0 - if (res.code === 0) return res.data; - } catch (e) { - // 若已命中"业务错误"(例如订单已取消/已支付),优先保留该错误用于向上提示; - // 不要被后续的 404/网络错误覆盖掉,避免调用方误判为"不支持该接口"而降级走创建订单。 - if (!businessError && e instanceof RequestError && e.type === ErrorType.BUSINESS_ERROR) { - businessError = e; - } else { - lastError = e; - } - } - } - - return Promise.reject(businessError || lastError || new Error('发起支付失败')); -} - -/** - * 创建订单 - */ -export async function createOrder(data: OrderCreateRequest) { - // Java 后端期望 camelCase 字段,直接传 - const res = await request.post>( - '/shop/shop-order', - data - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修复订单支付状态 - */ -export async function repairOrder(data: ShopOrder) { - const res = await request.put>( - '/shop/shop-order/repair', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - - -/** - * 申请|同意退款 - */ -export async function refundShopOrder(data: ShopOrder) { - const res = await request.put>( - '/shop/shop-order/refund', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopOrder/model/index.ts b/src_bak/api/shop/shopOrder/model/index.ts deleted file mode 100644 index 2b8d177..0000000 --- a/src_bak/api/shop/shopOrder/model/index.ts +++ /dev/null @@ -1,231 +0,0 @@ -import type { PageParam } from '@/api/index'; -import type { ShopOrderGoods } from '@/api/shop/shopOrderGoods/model'; - -/** - * 订单 - */ -export interface ShopOrder { - // 订单号 - orderId?: number; - // 订单编号 - orderNo?: string; - // 订单类型,0商城订单 1预定订单/外卖 2会员卡 - type?: number; - // 标题 - title?: string; - // 快递/自提 - deliveryType?: number; - // 下单渠道,0小程序预定 1俱乐部训练场 3活动订场 - channel?: number; - // 微信支付订单号 - transactionId?: string; - // 微信退款订单号 - refundOrder?: string; - // 商户ID - merchantId?: number; - // 商户名称 - merchantName?: string; - // 商户编号 - merchantCode?: string; - // 归属门店ID(shop_store.id) - storeId?: number; - // 归属门店名称 - storeName?: string; - // 配送员用户ID(优先级派单) - riderId?: number; - // 发货仓库ID - warehouseId?: number; - // 使用的优惠券id - couponId?: number; - // 使用的会员卡id - cardId?: string; - // 关联管理员id - adminId?: number; - // 核销管理员id - confirmId?: number; - // IC卡号 - icCard?: string; - // 头像 - avatar?: string; - // 真实姓名 - realName?: string; - // 手机号码 - phone?: string; - // 手机号码(脱敏) - mobile?: string; - // 关联收货地址 - addressId?: number; - // 收货地址 - address?: string; - // - addressLat?: string; - // - addressLng?: string; - // 自提店铺id - selfTakeMerchantId?: number; - // 自提店铺 - selfTakeMerchantName?: string; - // 配送开始时间 - sendStartTime?: string; - // 配送结束时间 - sendEndTime?: string; - // 配送员送达拍照(选填) - sendEndImg?: string; - // 发货店铺id - expressMerchantId?: number; - // 发货店铺 - expressMerchantName?: string; - // 订单总额 - totalPrice?: string; - // 减少的金额,使用VIP会员折扣、优惠券抵扣、优惠券折扣后减去的价格 - reducePrice?: string; - // 实际付款 - payPrice?: string; - // 用于统计 - price?: string; - // 价钱,用于积分赠送 - money?: string; - // 退款金额 - refundMoney?: string; - // 教练价格 - coachPrice?: string; - // 购买数量 - totalNum?: number; - // 教练id - coachId?: number; - // 商品ID - formId?: number; - // 支付的用户id - payUserId?: number; - // 0余额支付, 1微信支付,102微信Native,2会员卡支付,3支付宝,4现金,5POS机,6VIP月卡,7VIP年卡,8VIP次卡,9IC月卡,10IC年卡,11IC次卡,12免费,13VIP充值卡,14IC充值卡,15积分支付,16VIP季卡,17IC季卡,18代付 - payType?: number; - // 代付支付方式,0余额支付, 1微信支付,102微信Native,2会员卡支付,3支付宝,4现金,5POS机,6VIP月卡,7VIP年卡,8VIP次卡,9IC月卡,10IC年卡,11IC次卡,12免费,13VIP充值卡,14IC充值卡,15积分支付,16VIP季卡,17IC季卡,18代付 - friendPayType?: number; - // 0未付款,1已付款 - payStatus?: boolean; - // 0未使用,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款 - orderStatus?: number; - // 发货状态(10未发货 20已发货 30部分发货) - deliveryStatus?: number; - // 发货时间 - deliveryTime?: string; - // 优惠类型:0无、1抵扣优惠券、2折扣优惠券、3、VIP月卡、4VIP年卡,5VIP次卡、6VIP会员卡、7IC月卡、8IC年卡、9IC次卡、10IC会员卡、11免费订单、12VIP充值卡、13IC充值卡、14VIP季卡、15IC季卡 - couponType?: number; - // 优惠说明 - couponDesc?: string; - // 二维码地址,保存订单号,支付成功后才生成 - qrcode?: string; - // vip月卡年卡、ic月卡年卡回退次数 - returnNum?: number; - // vip充值回退金额 - returnMoney?: string; - // 预约详情开始时间数组 - startTime?: string; - // 是否已开具发票:0未开发票,1已开发票,2不能开具发票 - isInvoice?: number; - // 发票流水号 - invoiceNo?: string; - // 支付时间 - payTime?: string; - // 退款时间 - refundTime?: string; - // 申请退款时间 - refundApplyTime?: string; - // 过期时间 - expirationTime?: string; - // 对账情况:0=未对账;1=已对账;3=已对账,金额对不上;4=未查询到该订单 - checkBill?: number; - // 订单是否已结算(0未结算 1已结算) - isSettled?: number; - // 系统版本号 0当前版本 value=其他版本 - version?: number; - // 用户id - userId?: number; - // 备注 - comments?: string; - // 排序号 - sortNumber?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 修改时间 - updateTime?: string; - // 创建时间 - createTime?: string; - // 自提码 - selfTakeCode?: string; - // 是否已收到赠品 - hasTakeGift?: string; - // 订单商品项 - orderGoods?: ShopOrderGoods[]; -} - -/** - * 订单商品项 - */ -export interface OrderGoodsItem { - goodsId: number; - quantity: number; - skuId?: number; - specInfo?: string; -} - -/** - * 创建订单请求 - */ -export interface OrderCreateRequest { - // 商品信息列表 - goodsItems: OrderGoodsItem[]; - // 归属门店ID(shop_store.id) - storeId?: number; - // 归属门店名称(可选) - storeName?: string; - // 配送员用户ID(优先级派单) - riderId?: number; - // 发货仓库ID - warehouseId?: number; - // 收货地址ID - addressId?: number; - // 支付方式 - payType: number; - // 优惠券ID - couponId?: number; - // 备注 - comments?: string; - // 配送开始时间(用于预约/配送时间) - sendStartTime?: string; - // 配送方式 0快递 1自提 - deliveryType?: number; - // 自提店铺ID - selfTakeMerchantId?: number; - // 订单标题(可选,后端会自动生成) - title?: string; - // 配送方式:elevator(电梯) / stairs(步梯) / groundFloor(一楼商铺/其他) - deliveryMethod?: string; - // 楼层(步梯+送上楼时有值,从2开始) - deliveryFloor?: number; -} - -/** - * 订单搜索条件 - */ -export interface ShopOrderParam extends PageParam { - orderId?: number; - orderNo?: string; - phone?: string; - payStatus?: number; - orderStatus?: number; - payType?: number; - isInvoice?: boolean; - userId?: number; - // 归属门店ID(shop_store.id) - storeId?: number; - // 配送员用户ID - riderId?: number; - // 发货仓库ID - warehouseId?: number; - keywords?: string; - deliveryStatus?: number; - statusFilter?: number; -} diff --git a/src_bak/api/shop/shopOrderGoods/index.ts b/src_bak/api/shop/shopOrderGoods/index.ts deleted file mode 100644 index e12d634..0000000 --- a/src_bak/api/shop/shopOrderGoods/index.ts +++ /dev/null @@ -1,30 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult } from '@/api'; -import type { ShopOrderGoods } from '@/api/shop/shopOrderGoods/model'; - -/** - * 根据订单ID查询订单商品列表 - */ -export async function listShopOrderGoodsByOrderId(orderId: number) { - const res = await request.get>( - '/shop/shop-order-goods', - { orderId } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据ID查询订单商品 - */ -export async function getShopOrderGoods(id: number) { - const res = await request.get>( - '/shop/shop-order-goods/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopOrderGoods/model/index.ts b/src_bak/api/shop/shopOrderGoods/model/index.ts deleted file mode 100644 index a4034de..0000000 --- a/src_bak/api/shop/shopOrderGoods/model/index.ts +++ /dev/null @@ -1,70 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 商品信息 - */ -export interface ShopOrderGoods { - // 自增ID - id?: number; - // 关联订单表id - orderId?: number; - // 订单标识 - orderCode?: string; - // 关联商户ID - merchantId?: number; - // 商户名称 - merchantName?: string; - // 商品封面图 - image?: string; - // 关联商品id - goodsId?: number; - // 商品名称 - goodsName?: string; - // 商品规格 - spec?: string; - // - skuId?: number; - // 单价 - price?: string; - // 购买数量 - totalNum?: number; - // 0 未付款 1已付款,2无需付款或占用状态 - payStatus?: number; - // 0未使用,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款 - orderStatus?: number; - // 是否免费:0收费、1免费 - isFree?: string; - // 系统版本 0当前版本 其他版本 - version?: number; - // 预约时间段 - timePeriod?: string; - // 预定日期 - dateTime?: string; - // 开场时间 - startTime?: string; - // 结束时间 - endTime?: string; - // 毫秒时间戳 - timeFlag?: string; - // 过期时间 - expirationTime?: string; - // 备注 - comments?: string; - // 用户id - userId?: number; - // 租户id - tenantId?: number; - // 更新时间 - updateTime?: string; - // 创建时间 - createTime?: string; -} - -/** - * 商品信息搜索条件 - */ -export interface ShopOrderGoodsParam extends PageParam { - id?: number; - orderId?: number; - keywords?: string; -} diff --git a/src_bak/api/shop/shopOrderRefund/index.ts b/src_bak/api/shop/shopOrderRefund/index.ts deleted file mode 100644 index c36b12b..0000000 --- a/src_bak/api/shop/shopOrderRefund/index.ts +++ /dev/null @@ -1,52 +0,0 @@ -import request from '@/utils/request' - -export interface RefundDetail { - orderNo: string; - refundMoney: string; - reason: string; - status: number; - statusText: string; - time: string; - steps: RefundStep[]; -} - -export interface RefundStep { - title: string; - desc: string; - time: string; - done: boolean; -} - -/** - * 获取退款详情 - * @param orderId 订单ID - * @returns 退款详情 - */ -export async function getRefundDetail(orderId: string): Promise { - try { - const res = await request.get('/order/refund/detail', { - params: { orderId } - }); - return res.data; - } catch (error) { - console.error('获取退款详情失败', error); - throw error; - } -} - -/** - * 取消退款申请 - * @param orderId 订单ID - * @returns 是否成功 - */ -export async function cancelRefund(orderId: string): Promise { - try { - const res = await request.post('/order/refund/cancel', { - data: { orderId } - }); - return res.code === 0; - } catch (error) { - console.error('取消退款失败', error); - throw error; - } -} diff --git a/src_bak/api/shop/shopPointsOrder/index.ts b/src_bak/api/shop/shopPointsOrder/index.ts deleted file mode 100644 index ece68f6..0000000 --- a/src_bak/api/shop/shopPointsOrder/index.ts +++ /dev/null @@ -1,66 +0,0 @@ -import request from '@/utils/request' -import type { ApiResult, PageResult } from '@/api' -import type { ShopPointsOrder, PointsOrderStatus, CreatePointsOrderParams } from './model' - -export type { ShopPointsOrder, PointsOrderStatus, CreatePointsOrderParams } from './model' - -/** 查询积分订单列表参数 */ -export interface ListShopPointsOrderParams { - page?: number - limit?: number - status?: PointsOrderStatus -} - -/** - * 查询积分订单列表 - */ -export async function listShopPointsOrder(params?: ListShopPointsOrderParams) { - const res = await request.get>>( - '/shop/shop-points-order/page', - params - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message)) -} - -/** - * 获取积分订单详情 - */ -export async function getShopPointsOrder(id: string) { - const res = await request.get>( - '/shop/shop-points-order/' + id - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message)) -} - -/** - * 创建积分兑换订单 - */ -export async function createPointsOrder(data: CreatePointsOrderParams) { - const res = await request.post>( - '/shop/shop-points-order', - data - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message)) -} - -/** - * 取消积分订单 - */ -export async function cancelShopPointsOrder(id: string) { - const res = await request.put>( - '/shop/shop-points-order/cancel/' + id - ) - if (res.code === 0) { - return true - } - return Promise.reject(new Error(res.message)) -} diff --git a/src_bak/api/shop/shopPointsOrder/model/index.ts b/src_bak/api/shop/shopPointsOrder/model/index.ts deleted file mode 100644 index c556be9..0000000 --- a/src_bak/api/shop/shopPointsOrder/model/index.ts +++ /dev/null @@ -1,62 +0,0 @@ -/** 积分订单状态 */ -export type PointsOrderStatus = 'pending' | 'paid' | 'shipped' | 'completed' | 'cancelled' - -/** 积分订单商品 */ -export interface PointsOrderItem { - /** 商品ID */ - goodsId: string - /** 商品名称 */ - goodsName: string - /** 商品图片 */ - goodsImage: string - /** 兑换积分 */ - points: number - /** 补差价金额 */ - moneyAmount?: string - /** 数量 */ - quantity: number -} - -/** 积分订单 */ -export interface ShopPointsOrder { - /** 订单ID */ - id: string - /** 订单号 */ - orderNo: string - /** 订单状态 */ - status: PointsOrderStatus - /** 总积分 */ - totalPoints: number - /** 补差价金额 */ - moneyAmount?: string - /** 支付方式: 1微信 0余额 */ - payType?: number - /** 商品列表 */ - items: PointsOrderItem[] - /** 收货人 */ - receiverName?: string - /** 收货电话 */ - receiverPhone?: string - /** 收货地址 */ - address: string - /** 物流单号 */ - trackingNo?: string - /** 物流公司 */ - trackingCompany?: string - /** 创建时间 */ - createdAt: string - /** 更新时间 */ - updatedAt?: string -} - -/** 创建积分订单参数 */ -export interface CreatePointsOrderParams { - /** 商品ID */ - productId: number - /** 数量 */ - quantity?: number - /** 收货地址ID(实物商品必填) */ - addressId?: number - /** 支付方式: 1微信 0余额(补差价时必填) */ - payType?: number -} diff --git a/src_bak/api/shop/shopPointsProduct/index.ts b/src_bak/api/shop/shopPointsProduct/index.ts deleted file mode 100644 index a9053b6..0000000 --- a/src_bak/api/shop/shopPointsProduct/index.ts +++ /dev/null @@ -1,44 +0,0 @@ -import request from '@/utils/request' -import type { ApiResult, PageResult } from '@/api' -import type { ShopPointsProduct, ShopPointsProductParam } from './model' - -/** - * 分页查询积分兑换商品表 - */ -export async function pageShopPointsProduct(params: ShopPointsProductParam) { - const res = await request.get>>( - '/shop/shop-points-product/page', - params - ) - if (res.code === 0) { - return res.data - } - return Promise.reject(new Error(res.message)) -} - -/** - * 查询积分兑换商品表列表 - */ -export async function listShopPointsProduct(params?: ShopPointsProductParam) { - const res = await request.get>( - '/shop/shop-points-product', - params - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message)) -} - -/** - * 根据id查询积分兑换商品详情 - */ -export async function getShopPointsProduct(id: number) { - const res = await request.get>( - '/shop/shop-points-product/' + id - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message)) -} diff --git a/src_bak/api/shop/shopPointsProduct/model/index.ts b/src_bak/api/shop/shopPointsProduct/model/index.ts deleted file mode 100644 index d027ad1..0000000 --- a/src_bak/api/shop/shopPointsProduct/model/index.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * 积分兑换商品表 - */ -export interface ShopPointsProduct { - /** ID */ - id?: number - /** 商品名称 */ - productName?: string - /** 商品图片 */ - productImage?: string - /** 商品类型: 0实物 1优惠券 2虚拟商品 */ - productType?: number - /** 优惠券ID(商品类型为优惠券时) */ - couponId?: number - /** 兑换所需积分 */ - pointsPrice?: number - /** 补差价金额 */ - moneyPrice?: string - /** 库存 */ - stock?: number - /** 兑换量 */ - sales?: number - /** 商品描述 */ - description?: string - /** 是否热门: 0否 1是 */ - isHot?: number - /** 状态: 0下架 1上架 */ - status?: number - /** 排序号 */ - sortNumber?: number - /** 创建时间 */ - createTime?: string -} - -/** - * 积分兑换商品搜索条件 - */ -export interface ShopPointsProductParam { - /** 页码 */ - page?: number - /** 每页数量 */ - limit?: number - /** ID */ - id?: number - /** 关键词 */ - keywords?: string - /** 是否热门 */ - isHot?: number - /** 状态 */ - status?: number -} diff --git a/src_bak/api/shop/shopRecharge/index.ts b/src_bak/api/shop/shopRecharge/index.ts deleted file mode 100644 index d9be40c..0000000 --- a/src_bak/api/shop/shopRecharge/index.ts +++ /dev/null @@ -1,35 +0,0 @@ -import request from '@/utils/request' -import type { ApiResult } from '@/api' -import type { UserRecharge, RechargeRequest } from './model' - -export type { UserRecharge, RechargeRequest } - -/** - * 创建用户充值订单 - * 注意:后端可能需要实现此接口 - */ -export async function createUserRecharge(data: RechargeRequest): Promise { - const res = await request.post>( - '/shop/shop-recharge/create', - data - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message)) -} - -/** - * 发起充值支付 - * 注意:后端可能需要实现此接口 - */ -export async function payUserRecharge(rechargeId: number): Promise { - const res = await request.post>( - '/shop/shop-recharge/pay', - { rechargeId } - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message)) -} diff --git a/src_bak/api/shop/shopRecharge/model/index.ts b/src_bak/api/shop/shopRecharge/model/index.ts deleted file mode 100644 index b17aa40..0000000 --- a/src_bak/api/shop/shopRecharge/model/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * 用户充值类型定义 - */ - -export interface UserRecharge { - rechargeId?: number - orderNo?: string - amount?: string - payType?: number - payStatus?: number - createTime?: string -} - -export interface RechargeRequest { - amount: string - payType: number -} diff --git a/src_bak/api/shop/shopRechargeCode/index.ts b/src_bak/api/shop/shopRechargeCode/index.ts deleted file mode 100644 index 04d86d8..0000000 --- a/src_bak/api/shop/shopRechargeCode/index.ts +++ /dev/null @@ -1,48 +0,0 @@ -import request from '@/utils/request' -import type { ApiResult, PageResult } from '@/api' -import type { ShopRechargeCode, ShopRechargeCodeParam } from './model' - -/** - * 使用兑换码充值 - */ -export async function useRechargeCode(code: string) { - const res = await request.post>( - '/shop/recharge-code/use', - { code } - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message)) -} - -/** - * 获取兑换码信息 - */ -export async function getRechargeCodeInfo(code: string) { - const res = await request.get>( - '/shop/recharge-code/info', - { code } - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message)) -} - -/** - * 分页查询用户兑换记录 - */ -export async function pageRechargeCodeRecords(params: { - page?: number - limit?: number -}) { - const res = await request.get>>( - '/shop/recharge-code/records', - params - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message)) -} diff --git a/src_bak/api/shop/shopRechargeCode/model/index.ts b/src_bak/api/shop/shopRechargeCode/model/index.ts deleted file mode 100644 index b8aa00a..0000000 --- a/src_bak/api/shop/shopRechargeCode/model/index.ts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * 充值兑换码类型定义 - */ - -export interface ShopRechargeCode { - id: number - code: string - amount: string - userId?: number - status: number // 0-未使用, 1-已使用, 2-已过期 - generateType: number // 1-管理员生成, 2-批量生成 - batchNo?: string - expireTime?: string - usedAt?: string - balanceBefore?: string - balanceAfter?: string - createTime: string - updateTime: string -} - -export interface ShopRechargeCodeParam { - page?: number - limit?: number - code?: string - status?: number - batchNo?: string - userId?: number -} diff --git a/src_bak/api/shop/shopRechargeOrder.ts b/src_bak/api/shop/shopRechargeOrder.ts deleted file mode 100644 index b479610..0000000 --- a/src_bak/api/shop/shopRechargeOrder.ts +++ /dev/null @@ -1,40 +0,0 @@ -import request from '@/utils/request' -import type { ApiResult, PageResult } from '@/api' - -/** - * 充值订单类型 - */ -export interface RechargeOrder { - orderId?: number - orderNo?: string - userId?: number - rechargeType?: number // 充值方式(10自定义金额 20套餐充值) - payPrice?: string // 支付金额 - giftMoney?: string // 赠送金额 - actualMoney?: string // 实际到账金额 - balance?: string // 用户可用余额 - payMethod?: string // 支付方式 - payStatus?: number // 支付状态(10待支付 20已支付) - payTime?: number // 付款时间戳 - platform?: string // 来源平台 - comments?: string // 备注 - createTime?: string // 创建时间 - updateTime?: string // 更新时间 -} - -/** - * 分页查询充值记录 - */ -export async function pageUserRechargeOrder(params: { - page?: number - limit?: number -}): Promise> { - const res = await request.get>>( - '/shop/shop-recharge-order/page', - params - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message || '获取充值记录失败')) -} diff --git a/src_bak/api/shop/shopSeckill/index.ts b/src_bak/api/shop/shopSeckill/index.ts deleted file mode 100644 index ccf4140..0000000 --- a/src_bak/api/shop/shopSeckill/index.ts +++ /dev/null @@ -1,31 +0,0 @@ -import request from '@/utils/request' -import type { - ShopSeckill, - ShopSeckillOrder, - ShopSeckillPageParams, -} from './model' - -/** 获取秒杀商品列表 */ -export function pageShopSeckill(params: ShopSeckillPageParams = {}) { - return request.post<{ items: ShopSeckill[]; total: number }>('/shopSeckill/page', params) -} - -/** 获取秒杀商品详情 */ -export function getShopSeckill(id: number) { - return request.post('/shopSeckill/get', { id }) -} - -/** 创建秒杀订单 */ -export function createSeckillOrder(data: { seckillId: number; goodsId: number; skuId: number; quantity: number }) { - return request.post('/shopSeckill/createOrder', data) -} - -/** 获取我的秒杀订单 */ -export function mySeckillOrders(params: { page?: number; pageSize?: number } = {}) { - return request.post<{ items: ShopSeckillOrder[]; total: number }>('/shopSeckill/myOrders', params) -} - -/** 获取秒杀时间段(场次) */ -export function getSeckillTimeSlots() { - return request.post>('/shopSeckill/timeSlots', {}) -} diff --git a/src_bak/api/shop/shopSeckill/model.ts b/src_bak/api/shop/shopSeckill/model.ts deleted file mode 100644 index 5ee0b05..0000000 --- a/src_bak/api/shop/shopSeckill/model.ts +++ /dev/null @@ -1,48 +0,0 @@ -/** 秒杀活动 */ -export interface ShopSeckill { - id: number - goodsId: number - goodsName?: string - goodsImage?: string - /** 秒杀价格 */ - seckillPrice: number - /** 开始时间 */ - startTime: string - /** 结束时间 */ - endTime: string - /** 秒杀库存 */ - stock: number - /** 已售数量 */ - soldCount: number - /** 状态:0-未开始 1-进行中 2-已结束 */ - status: number - /** 限购数量 */ - limitPerUser: number - /** 商品详情 */ - product?: { - id: number - name: string - image: string - price: number - originalPrice?: number - } -} - -/** 秒杀订单 */ -export interface ShopSeckillOrder { - id: number - seckillId: number - userId: number - goodsId: number - quantity: number - price: number - status: number - createTime: string -} - -/** 分页参数 */ -export interface ShopSeckillPageParams { - page?: number - pageSize?: number - status?: number -} diff --git a/src_bak/api/shop/shopSetting/index.ts b/src_bak/api/shop/shopSetting/index.ts deleted file mode 100644 index 92a3ffb..0000000 --- a/src_bak/api/shop/shopSetting/index.ts +++ /dev/null @@ -1,138 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopSetting, ShopSettingParam } from './model'; - -/** - * 分页查询设置 - */ -export async function pageShopSetting(params: ShopSettingParam) { - const res = await request.get>>( - '/shop/shop-setting/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询设置列表 - */ -export async function listShopSetting(params?: ShopSettingParam) { - const res = await request.get>( - '/shop/shop-setting', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据分类获取设置列表 - */ -export async function getShopSettingByCategory(category: string) { - const res = await request.get>( - `/shop/shop-setting/category/${category}` - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 获取分类设置值(Map格式) - */ -export async function getShopSettingCategoryValues(category: string) { - const res = await request.get>>( - `/shop/shop-setting/category/${category}/values` - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据key获取设置值 - */ -export async function getShopSettingValue(key: string) { - const res = await request.get>( - `/shop/shop-setting/key/${key}` - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据key获取完整设置 - */ -export async function getShopSettingByKey(key: string) { - const res = await request.get>( - `/shop/shop-setting/info/${key}` - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 保存或更新设置 - */ -export async function saveShopSetting(data: ShopSetting) { - const res = await request.post>( - '/shop/shop-setting', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 更新设置 - */ -export async function updateShopSetting(data: ShopSetting) { - const res = await request.put>( - '/shop/shop-setting', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量保存分类设置 - */ -export async function batchSaveShopSetting(category: string, values: Record) { - const res = await request.post>( - `/shop/shop-setting/batch/${category}`, - values - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除设置 - */ -export async function removeShopSetting(settingId: number) { - const res = await request.del>( - `/shop/shop-setting/${settingId}` - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopSetting/model/index.ts b/src_bak/api/shop/shopSetting/model/index.ts deleted file mode 100644 index e476bac..0000000 --- a/src_bak/api/shop/shopSetting/model/index.ts +++ /dev/null @@ -1,43 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 商城设置 - */ -export interface ShopSetting { - // 设置ID - settingId?: number; - // 设置分类: basic/payment/notify/order/points/dealer - category?: string; - // 设置项标识 - settingKey?: string; - // 设置项名称 - settingName?: string; - // 设置值(JSON格式) - settingValue?: string; - // 设置类型: string/number/boolean/json - valueType?: string; - // 设置说明 - description?: string; - // 排序号 - sortNumber?: number; - // 是否启用 0否 1是 - isEnabled?: number; - // 是否公开(前端可读)0否 1是 - isPublic?: number; - // 租户id - tenantId?: number; - // 创建时间 - createdTime?: number; - // 更新时间 - updatedTime?: number; -} - -/** - * 商城设置搜索条件 - */ -export interface ShopSettingParam extends PageParam { - settingId?: number; - category?: string; - settingKey?: string; - keywords?: string; -} diff --git a/src_bak/api/shop/shopSigninConfig/index.ts b/src_bak/api/shop/shopSigninConfig/index.ts deleted file mode 100644 index 73f9d43..0000000 --- a/src_bak/api/shop/shopSigninConfig/index.ts +++ /dev/null @@ -1,31 +0,0 @@ -import request from '@/utils/request' -import type { ApiResult } from '@/api' -import type { ShopSigninConfig, ShopSigninConfigParam } from './model' - -/** - * 分页查询签到积分配置表 - */ -export async function pageShopSigninConfig(params: ShopSigninConfigParam) { - const res = await request.get>( - '/shop/shop-signin-config/page', - params - ) - if (res.code === 0) { - return res.data - } - return Promise.reject(new Error(res.message)) -} - -/** - * 查询签到积分配置表列表 - */ -export async function listShopSigninConfig(params?: ShopSigninConfigParam) { - const res = await request.get>( - '/shop/shop-signin-config', - params - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message)) -} diff --git a/src_bak/api/shop/shopSigninConfig/model/index.ts b/src_bak/api/shop/shopSigninConfig/model/index.ts deleted file mode 100644 index 07de101..0000000 --- a/src_bak/api/shop/shopSigninConfig/model/index.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * 签到积分配置表 - */ -export interface ShopSigninConfig { - /** 配置ID */ - configId?: number - /** 第几天(1-7循环) */ - dayNumber?: number - /** 获得积分数 */ - points?: number - /** 是否删除: 0否 1是 */ - deleted?: number - /** 租户ID */ - tenantId?: string -} - -/** - * 签到积分配置表搜索条件 - */ -export interface ShopSigninConfigParam { - /** 页码 */ - page?: number - /** 每页数量 */ - limit?: number - /** 配置ID */ - configId?: number - /** 关键词 */ - keywords?: string -} diff --git a/src_bak/api/shop/shopSigninRecord/index.ts b/src_bak/api/shop/shopSigninRecord/index.ts deleted file mode 100644 index 0f0d359..0000000 --- a/src_bak/api/shop/shopSigninRecord/index.ts +++ /dev/null @@ -1,58 +0,0 @@ -import request from '@/utils/request' -import type { ApiResult, PageResult } from '@/api' -import type { ShopSigninRecord, ShopSigninRecordParam } from './model' - -/** - * 分页查询签到记录表 - */ -export async function pageShopSigninRecord(params: ShopSigninRecordParam) { - const res = await request.get>>( - '/shop/shop-signin-record/page', - params - ) - if (res.code === 0) { - return res.data - } - return Promise.reject(new Error(res.message)) -} - -/** - * 查询签到记录表列表 - */ -export async function listShopSigninRecord(params?: ShopSigninRecordParam) { - const res = await request.get>( - '/shop/shop-signin-record', - params - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message)) -} - -/** - * 添加签到记录表 - */ -export async function addShopSigninRecord(data: Partial) { - const res = await request.post>( - '/shop/shop-signin-record', - data - ) - if (res.code === 0) { - return res.message - } - return Promise.reject(new Error(res.message)) -} - -/** - * 删除签到记录表 - */ -export async function removeShopSigninRecord(id?: number) { - const res = await request.del>( - '/shop/shop-signin-record/' + id - ) - if (res.code === 0) { - return res.message - } - return Promise.reject(new Error(res.message)) -} diff --git a/src_bak/api/shop/shopSigninRecord/model/index.ts b/src_bak/api/shop/shopSigninRecord/model/index.ts deleted file mode 100644 index 343df1f..0000000 --- a/src_bak/api/shop/shopSigninRecord/model/index.ts +++ /dev/null @@ -1,33 +0,0 @@ -/** - * 签到记录表 - */ -export interface ShopSigninRecord { - /** 记录ID */ - recordId?: number - /** 用户ID */ - userId?: number - /** 签到日期 */ - signinDate?: string - /** 获得积分 */ - points?: number - /** 连续签到天数 */ - continuousDays?: number - /** 租户ID */ - tenantId?: string - /** 创建时间 */ - createTime?: string -} - -/** - * 签到记录搜索条件 - */ -export interface ShopSigninRecordParam { - /** 页码 */ - page?: number - /** 每页数量 */ - limit?: number - /** 记录ID */ - recordId?: number - /** 关键词 */ - keywords?: string -} diff --git a/src_bak/api/shop/shopSpec/index.ts b/src_bak/api/shop/shopSpec/index.ts deleted file mode 100644 index a4d9b29..0000000 --- a/src_bak/api/shop/shopSpec/index.ts +++ /dev/null @@ -1,101 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import { ShopSpec, ShopSpecParam } from '@/api/shop/shopSpec/model'; - -/** - * 分页查询规格 - */ -export async function pageShopSpec(params: ShopSpecParam) { - const res = await request.get>>( - '/shop/shop-spec/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询规格列表 - */ -export async function listShopSpec(params?: ShopSpecParam) { - const res = await request.get>( - '/shop/shop-spec', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加规格 - */ -export async function addShopSpec(data: ShopSpec) { - const res = await request.post>( - '/shop/shop-spec', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改规格 - */ -export async function updateShopSpec(data: ShopSpec) { - const res = await request.put>( - '/shop/shop-spec', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除规格 - */ -export async function removeShopSpec(id?: number) { - const res = await request.del>( - '/shop/shop-spec/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除规格 - */ -export async function removeBatchShopSpec(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-spec/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询规格 - */ -export async function getShopSpec(id: number) { - const res = await request.get>( - '/shop/shop-spec/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopSpec/model/index.ts b/src_bak/api/shop/shopSpec/model/index.ts deleted file mode 100644 index b85d062..0000000 --- a/src_bak/api/shop/shopSpec/model/index.ts +++ /dev/null @@ -1,38 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 规格 - */ -export interface ShopSpec { - // 规格ID - specId?: number; - // 规格名称 - specName?: string; - // 规格值 - specValue?: string; - // 商户ID - merchantId?: number; - // 创建用户 - userId?: number; - // 更新者 - updater?: number; - // 备注 - comments?: string; - // 状态, 0正常, 1待修,2异常已修,3异常未修 - status?: number; - // 排序号 - sortNumber?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - value?: string; -} - -/** - * 规格搜索条件 - */ -export interface ShopSpecParam extends PageParam { - specId?: number; - keywords?: string; -} diff --git a/src_bak/api/shop/shopSpecValue/index.ts b/src_bak/api/shop/shopSpecValue/index.ts deleted file mode 100644 index a765b28..0000000 --- a/src_bak/api/shop/shopSpecValue/index.ts +++ /dev/null @@ -1,101 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopSpecValue, ShopSpecValueParam } from './model'; - -/** - * 分页查询规格值 - */ -export async function pageShopSpecValue(params: ShopSpecValueParam) { - const res = await request.get>>( - '/shop/shop-spec-value/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询规格值列表 - */ -export async function listShopSpecValue(params?: ShopSpecValueParam) { - const res = await request.get>( - '/shop/shop-spec-value', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加规格值 - */ -export async function addShopSpecValue(data: ShopSpecValue) { - const res = await request.post>( - '/shop/shop-spec-value', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改规格值 - */ -export async function updateShopSpecValue(data: ShopSpecValue) { - const res = await request.put>( - '/shop/shop-spec-value', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除规格值 - */ -export async function removeShopSpecValue(id?: number) { - const res = await request.del>( - '/shop/shop-spec-value/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除规格值 - */ -export async function removeBatchShopSpecValue(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-spec-value/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询规格值 - */ -export async function getShopSpecValue(id: number) { - const res = await request.get>( - '/shop/shop-spec-value/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopSpecValue/model/index.ts b/src_bak/api/shop/shopSpecValue/model/index.ts deleted file mode 100644 index 8980f3b..0000000 --- a/src_bak/api/shop/shopSpecValue/model/index.ts +++ /dev/null @@ -1,29 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 规格值 - */ -export interface ShopSpecValue { - // 规格值ID - specValueId?: number; - // 规格组ID - specId?: number; - // 规格值 - specValue?: string; - // 备注 - comments?: string; - // 排序号 - sortNumber?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; -} - -/** - * 规格值搜索条件 - */ -export interface ShopSpecValueParam extends PageParam { - specValueId?: number; - keywords?: string; -} diff --git a/src_bak/api/shop/shopStore/index.ts b/src_bak/api/shop/shopStore/index.ts deleted file mode 100644 index 7a9915e..0000000 --- a/src_bak/api/shop/shopStore/index.ts +++ /dev/null @@ -1,130 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopStore, ShopStoreParam, StoreLoginResult } from './model'; - -/** - * 分页查询门店 - */ -export async function pageShopStore(params: ShopStoreParam) { - const res = await request.get>>( - '/shop/shop-store/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询门店列表 - */ -export async function listShopStore(params?: ShopStoreParam) { - const res = await request.get>( - '/shop/shop-store', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加门店 - */ -export async function addShopStore(data: ShopStore) { - const res = await request.post>( - '/shop/shop-store', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改门店 - */ -export async function updateShopStore(data: ShopStore) { - const res = await request.put>( - '/shop/shop-store', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除门店 - */ -export async function removeShopStore(id?: number) { - const res = await request.del>( - '/shop/shop-store/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除门店 - */ -export async function removeBatchShopStore(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-store/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询门店 - */ -export async function getShopStore(id: number) { - const res = await request.get>( - '/shop/shop-store/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 门店账号密码登录 - */ -export async function storeLogin(data: { phone: string; password: string }) { - const res = await request.post>( - '/shop/shop-store/store-login', - data - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询当前用户的门店关联信息 - * 返回门店用户关联记录(含 roleType、storeName 等) - */ -export async function getMyStore() { - const res = await request.get>( - '/shop/shop-store/my-store' - ); - if (res.code === 0 && res.data) { - return res.data; - } - // 非门店用户返回 null 而非 reject,方便调用方判断 - return null; -} diff --git a/src_bak/api/shop/shopStore/model/index.ts b/src_bak/api/shop/shopStore/model/index.ts deleted file mode 100644 index 1c9e689..0000000 --- a/src_bak/api/shop/shopStore/model/index.ts +++ /dev/null @@ -1,81 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 门店 - */ -export interface ShopStore { - // 自增ID - id?: number; - // 店铺名称 - name?: string; - // 门店地址 - address?: string; - // 手机号码 - phone?: string; - // 邮箱 - email?: string; - // 门店经理 - managerName?: string; - // 门店banner - shopBanner?: string; - // 所在省份 - province?: string; - // 所在城市 - city?: string; - // 所在辖区 - region?: string; - // 经度和纬度 - lngAndLat?: string; - // 位置 - location?:string; - // 区域 - district?: string; - // 轮廓 - points?: string; - // 用户ID - userId?: number; - // 默认仓库ID(shop_warehouse.id) - warehouseId?: number; - // 默认仓库名称(可选) - warehouseName?: string; - // 营业时间 - businessHours?: string; - // 状态 - status?: number; - // 备注 - comments?: string; - // 排序号 - sortNumber?: number; - // 距离(km,前端计算填充) - distance?: number; - // 是否删除 - isDelete?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; - // 登录密码(虚拟字段,不入库) - password?: string; - // 用户名(虚拟字段,不入库) - username?: string; -} - -/** - * 门店搜索条件 - */ -export interface ShopStoreParam extends PageParam { - id?: number; - keywords?: string; - phone?: string; - password?: string; -} - -/** - * 门店登录结果 - */ -export interface StoreLoginResult { - access_token: string; - user: any; -} diff --git a/src_bak/api/shop/shopStoreFence/index.ts b/src_bak/api/shop/shopStoreFence/index.ts deleted file mode 100644 index 609defa..0000000 --- a/src_bak/api/shop/shopStoreFence/index.ts +++ /dev/null @@ -1,101 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api/index'; -import type { ShopStoreFence, ShopStoreFenceParam } from './model'; - -/** - * 分页查询黄家明_电子围栏 - */ -export async function pageShopStoreFence(params: ShopStoreFenceParam) { - const res = await request.get>>( - '/shop/shop-store-fence/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询黄家明_电子围栏列表 - */ -export async function listShopStoreFence(params?: ShopStoreFenceParam) { - const res = await request.get>( - '/shop/shop-store-fence', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加黄家明_电子围栏 - */ -export async function addShopStoreFence(data: ShopStoreFence) { - const res = await request.post>( - '/shop/shop-store-fence', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改黄家明_电子围栏 - */ -export async function updateShopStoreFence(data: ShopStoreFence) { - const res = await request.put>( - '/shop/shop-store-fence', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除黄家明_电子围栏 - */ -export async function removeShopStoreFence(id?: number) { - const res = await request.del>( - '/shop/shop-store-fence/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除黄家明_电子围栏 - */ -export async function removeBatchShopStoreFence(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-store-fence/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询黄家明_电子围栏 - */ -export async function getShopStoreFence(id: number) { - const res = await request.get>( - '/shop/shop-store-fence/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopStoreFence/model/index.ts b/src_bak/api/shop/shopStoreFence/model/index.ts deleted file mode 100644 index 99c20dd..0000000 --- a/src_bak/api/shop/shopStoreFence/model/index.ts +++ /dev/null @@ -1,43 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 黄家明_电子围栏 - */ -export interface ShopStoreFence { - // 自增ID - id?: number; - // 围栏名称 - name?: string; - // 类型 0圆形 1方形 - type?: number; - // 定位 - location?: string; - // 经度 - longitude?: string; - // 纬度 - latitude?: string; - // 区域 - district?: string; - // 电子围栏轮廓 - points?: string; - // 排序(数字越小越靠前) - sortNumber?: number; - // 备注 - comments?: string; - // 状态, 0正常, 1冻结 - status?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 黄家明_电子围栏搜索条件 - */ -export interface ShopStoreFenceParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/shop/shopStoreRider/index.ts b/src_bak/api/shop/shopStoreRider/index.ts deleted file mode 100644 index c411aef..0000000 --- a/src_bak/api/shop/shopStoreRider/index.ts +++ /dev/null @@ -1,101 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopStoreRider, ShopStoreRiderParam } from './model'; - -/** - * 分页查询配送员 - */ -export async function pageShopStoreRider(params: ShopStoreRiderParam) { - const res = await request.get>>( - '/shop/shop-store-rider/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询配送员列表 - */ -export async function listShopStoreRider(params?: ShopStoreRiderParam) { - const res = await request.get>( - '/shop/shop-store-rider', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加配送员 - */ -export async function addShopStoreRider(data: ShopStoreRider) { - const res = await request.post>( - '/shop/shop-store-rider', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改配送员 - */ -export async function updateShopStoreRider(data: ShopStoreRider) { - const res = await request.put>( - '/shop/shop-store-rider', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除配送员 - */ -export async function removeShopStoreRider(id?: number) { - const res = await request.del>( - '/shop/shop-store-rider/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除配送员 - */ -export async function removeBatchShopStoreRider(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-store-rider/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询配送员 - */ -export async function getShopStoreRider(id: number) { - const res = await request.get>( - '/shop/shop-store-rider/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopStoreRider/model/index.ts b/src_bak/api/shop/shopStoreRider/model/index.ts deleted file mode 100644 index 0b7ed68..0000000 --- a/src_bak/api/shop/shopStoreRider/model/index.ts +++ /dev/null @@ -1,71 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 配送员 - */ -export interface ShopStoreRider { - // 主键ID - id?: string; - // 配送点ID(shop_dealer.id) - dealerId?: number; - // 骑手编号(可选) - riderNo?: string; - // 姓名 - realName?: string; - // 手机号 - mobile?: string; - // 头像 - avatar?: string; - // 身份证号(可选) - idCardNo?: string; - // 状态:1启用;0禁用 - status?: number; - // 接单状态:0休息/下线;1在线;2忙碌 - workStatus?: number; - // 是否开启自动派单:1是;0否 - autoDispatchEnabled?: number; - // 派单优先级(同小区多骑手时可用,值越大越优先) - dispatchPriority?: number; - // 最大同时配送单数(0表示不限制) - maxOnhandOrders?: number; - // 是否计算工资(提成):1计算;0不计算(如三方配送点可设0) - commissionCalcEnabled?: number; - // 水每桶提成金额(元/桶) - waterBucketUnitFee?: string; - // 其他商品提成方式:1按订单固定金额;2按订单金额比例;3按商品规则(另表) - otherGoodsCommissionType?: number; - // 其他商品提成值:固定金额(元)或比例(%) - otherGoodsCommissionValue?: string; - // 用户ID - userId?: number; - // 经度(配送员当前位置) - longitude?: string; - // 纬度(配送员当前位置) - latitude?: string; - // 备注 - comments?: string; - // 排序号 - sortNumber?: number; - // 是否删除 - isDelete?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 配送员搜索条件 - */ -export interface ShopStoreRiderParam extends PageParam { - id?: number; - keywords?: string; - // 配送点/门店ID(后端可能用 dealerId 或 storeId) - dealerId?: number; - storeId?: number; - status?: number; - workStatus?: number; - autoDispatchEnabled?: number; -} diff --git a/src_bak/api/shop/shopStoreUser/index.ts b/src_bak/api/shop/shopStoreUser/index.ts deleted file mode 100644 index df33349..0000000 --- a/src_bak/api/shop/shopStoreUser/index.ts +++ /dev/null @@ -1,116 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopStoreUser, ShopStoreUserParam } from './model'; - -/** - * 分页查询店员 - */ -export async function pageShopStoreUser(params: ShopStoreUserParam) { - const res = await request.get>>( - '/shop/shop-store-user/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询店员列表 - */ -export async function listShopStoreUser(params?: ShopStoreUserParam) { - const res = await request.get>( - '/shop/shop-store-user', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加店员 - */ -export async function addShopStoreUser(data: ShopStoreUser) { - const res = await request.post>( - '/shop/shop-store-user', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改店员 - */ -export async function updateShopStoreUser(data: ShopStoreUser) { - const res = await request.put>( - '/shop/shop-store-user', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除店员 - */ -export async function removeShopStoreUser(id?: number) { - const res = await request.del>( - '/shop/shop-store-user/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除店员 - */ -export async function removeBatchShopStoreUser(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-store-user/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询店员 - */ -export async function getShopStoreUser(id: number) { - const res = await request.get>( - '/shop/shop-store-user/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询当前登录用户的店员信息 - * 用于小程序端判断当前用户是否为门店经理/店员 - * 返回店员记录(含 storeName 等关联字段),非店员返回 null - */ -export async function getMyClerk() { - const res = await request.get>( - '/shop/shop-store-user/my' - ); - if (res.code === 0 && res.data) { - return res.data; - } - return null; -} diff --git a/src_bak/api/shop/shopStoreUser/model/index.ts b/src_bak/api/shop/shopStoreUser/model/index.ts deleted file mode 100644 index 46151f5..0000000 --- a/src_bak/api/shop/shopStoreUser/model/index.ts +++ /dev/null @@ -1,36 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 店员 - */ -export interface ShopStoreUser { - // 主键ID - id?: number; - // 配送点ID(shop_dealer.id) - storeId?: number; - // 用户ID - userId?: number; - // 备注 - comments?: string; - // 排序号 - sortNumber?: number; - // 是否删除 - isDelete?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 店员搜索条件 - */ -export interface ShopStoreUserParam extends PageParam { - id?: number; - keywords?: string; - storeId?: number; - userId?: number; - isDelete?: number; -} diff --git a/src_bak/api/shop/shopStoreWarehouse/index.ts b/src_bak/api/shop/shopStoreWarehouse/index.ts deleted file mode 100644 index 898e7b9..0000000 --- a/src_bak/api/shop/shopStoreWarehouse/index.ts +++ /dev/null @@ -1,101 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api/index'; -import type { ShopStoreWarehouse, ShopStoreWarehouseParam } from './model'; - -/** - * 分页查询仓库 - */ -export async function pageShopStoreWarehouse(params: ShopStoreWarehouseParam) { - const res = await request.get>>( - '/shop/shop-store-warehouse/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询仓库列表 - */ -export async function listShopStoreWarehouse(params?: ShopStoreWarehouseParam) { - const res = await request.get>( - '/shop/shop-store-warehouse', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加仓库 - */ -export async function addShopStoreWarehouse(data: ShopStoreWarehouse) { - const res = await request.post>( - '/shop/shop-store-warehouse', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改仓库 - */ -export async function updateShopStoreWarehouse(data: ShopStoreWarehouse) { - const res = await request.put>( - '/shop/shop-store-warehouse', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除仓库 - */ -export async function removeShopStoreWarehouse(id?: number) { - const res = await request.del>( - '/shop/shop-store-warehouse/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除仓库 - */ -export async function removeBatchShopStoreWarehouse(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-store-warehouse/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询仓库 - */ -export async function getShopStoreWarehouse(id: number) { - const res = await request.get>( - '/shop/shop-store-warehouse/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopStoreWarehouse/model/index.ts b/src_bak/api/shop/shopStoreWarehouse/model/index.ts deleted file mode 100644 index 90d5d84..0000000 --- a/src_bak/api/shop/shopStoreWarehouse/model/index.ts +++ /dev/null @@ -1,53 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 仓库 - */ -export interface ShopStoreWarehouse { - // 自增ID - id?: number; - // 仓库名称 - name?: string; - // 唯一标识 - code?: string; - // 类型 中心仓,区域仓,门店仓 - type?: string; - // 仓库地址 - address?: string; - // 真实姓名 - realName?: string; - // 联系电话 - phone?: string; - // 所在省份 - province?: string; - // 所在城市 - city?: string; - // 所在辖区 - region?: string; - // 经纬度 - lngAndLat?: string; - // 用户ID - userId?: number; - // 状态 - status?: number; - // 备注 - comments?: string; - // 排序号 - sortNumber?: number; - // 是否删除 - isDelete?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 仓库搜索条件 - */ -export interface ShopStoreWarehouseParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/shop/shopUserAddress.ts b/src_bak/api/shop/shopUserAddress.ts deleted file mode 100644 index b33a2f2..0000000 --- a/src_bak/api/shop/shopUserAddress.ts +++ /dev/null @@ -1,75 +0,0 @@ -import request from '@/utils/request'; -import type { ShopUserAddress } from './shopUserAddress/model'; - -/** - * 解析地址列表响应 - * 兼容多种后端返回格式: - * 1. 直接数组 ShopUserAddress[] - * 2. 标准包装 { code, message, data: ShopUserAddress[] } - * 3. 标准包装 + 分页 { code, message, data: { list: [], count } } - * 4. code 为 0 或 200 都视为成功 - */ -function parseAddressList(res: any): ShopUserAddress[] { - if (Array.isArray(res)) { - return res as ShopUserAddress[]; - } - if (res && typeof res === 'object') { - const code = (res as any).code; - if (code === 0 || code === 200) { - const data = (res as any).data; - if (Array.isArray(data)) { - return data as ShopUserAddress[]; - } - if (data && Array.isArray(data.list)) { - return data.list as ShopUserAddress[]; - } - // code 成功但 data 为空 - return []; - } - } - return []; -} - -/** 收货地址列表 */ -export async function listShopUserAddress(params?: any) { - const res: any = await request.get('/shop/shop-user-address', params); - // 调试日志:微信开发者工具 console 可见,便于核对返回结构 - // eslint-disable-next-line no-console - console.log('[listShopUserAddress] raw response:', JSON.stringify(res)?.substring(0, 500)); - return parseAddressList(res); -} - -/** 获取收货地址详情 */ -export function getShopUserAddress(id: number) { - return request.get(`/shop/shop-user-address/${id}`); -} - -/** 添加收货地址 */ -export function addShopUserAddress(data: any) { - return request.post('/shop/shop-user-address', data); -} - -/** 更新收货地址 */ -export function updateShopUserAddress(data: any) { - return request.put('/shop/shop-user-address', data); -} - -/** 删除收货地址 */ -export function removeShopUserAddress(id: number) { - return request.delete(`/shop/shop-user-address/${id}`); -} - -/** 批量删除收货地址 */ -export function removeBatchShopUserAddress(ids: number[]) { - return request.post('/shop/shop-user-address/batch-delete', { ids }); -} - -/** 设置默认收货地址 */ -export function setDefaultAddress(id: number) { - return request.post(`/shop/shop-user-address/set-default/${id}`); -} - -/** 获取默认收货地址 */ -export function getDefaultAddress() { - return request.get('/shop/shop-user-address/default'); -} diff --git a/src_bak/api/shop/shopUserAddress/index.ts b/src_bak/api/shop/shopUserAddress/index.ts deleted file mode 100644 index 35d7b45..0000000 --- a/src_bak/api/shop/shopUserAddress/index.ts +++ /dev/null @@ -1,132 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopUserAddress, ShopUserAddressParam } from './model'; - -/** - * 分页查询收货地址 - */ -export async function pageShopUserAddress(params: ShopUserAddressParam) { - const res = await request.get>>( - '/shop/shop-user-address/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询收货地址列表 - */ -export async function listShopUserAddress(params?: ShopUserAddressParam) { - const res = await request.get>( - '/shop/shop-user-address', - params - ); - console.log('[listShopUserAddress] raw response:', JSON.stringify(res)?.substring(0, 300)) - // 兼容多种响应格式 - // 1. 直接返回数组 - if (Array.isArray(res)) { - return res as ShopUserAddress[]; - } - // 2. 标准包装 { code, data, message } - if (res && typeof res === 'object') { - // 兼容 code: 0 和 code: 200 - const isSuccess = res.code === 0 || res.code === 200 - if (isSuccess) { - // data 是数组 - if (Array.isArray(res.data)) { - return res.data; - } - // data 是分页对象 { list, count } - if (res.data && Array.isArray((res.data as any).list)) { - return (res.data as any).list as ShopUserAddress[]; - } - // data 为 null/undefined 但 code 成功,返回空数组 - return []; - } - } - return Promise.reject(new Error((res as any)?.message || '获取地址列表失败')); -} - -/** - * 添加收货地址 - */ -export async function addShopUserAddress(data: ShopUserAddress) { - const res = await request.post>( - '/shop/shop-user-address', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改收货地址 - */ -export async function updateShopUserAddress(data: ShopUserAddress) { - const res = await request.put>( - '/shop/shop-user-address/' + data.id, - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除收货地址 - */ -export async function removeShopUserAddress(id?: number) { - const res = await request.del>( - '/shop/shop-user-address/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 设置默认收货地址 - */ -export async function setDefaultAddress(id: number) { - const res = await request.put>( - '/shop/shop-user-address/set-default/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除收货地址 - */ -export async function removeBatchShopUserAddress(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-user-address/batch', - { ids: data.filter(Boolean) } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询收货地址 - */ -export async function getShopUserAddress(id: number) { - const res = await request.get>( - '/shop/shop-user-address/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopUserAddress/model/index.ts b/src_bak/api/shop/shopUserAddress/model/index.ts deleted file mode 100644 index 85696b9..0000000 --- a/src_bak/api/shop/shopUserAddress/model/index.ts +++ /dev/null @@ -1,53 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 收货地址 - */ -export interface ShopUserAddress { - // 主键ID - id?: number; - // 姓名 - name?: string; - // 手机号码 - phone?: string; - // 所在国家 - country?: string; - // 所在省份 - province?: string; - // 所在城市 - city?: string; - // 所在辖区 - region?: string; - // 收货地址 - address?: string; - // 收货地址 - fullAddress?: string; - // - lat?: string; - // - lng?: string; - // 1先生 2女士 - gender?: number; - // 家、公司、学校 - type?: string; - // 默认收货地址 - isDefault?: boolean; - // 用户ID - userId?: number; - // 租户id - tenantId?: number; - // 注册时间 - createTime?: string; - // 更新时间 - updateTime?: string; -} - -/** - * 收货地址搜索条件 - */ -export interface ShopUserAddressParam extends PageParam { - id?: number; - userId?: number; - isDefault?: boolean; - keywords?: string; -} diff --git a/src_bak/api/shop/shopUserCard/index.ts b/src_bak/api/shop/shopUserCard/index.ts deleted file mode 100644 index 254d12e..0000000 --- a/src_bak/api/shop/shopUserCard/index.ts +++ /dev/null @@ -1,57 +0,0 @@ -import request from '@/utils/request' -import type { ApiResult } from '@/api' -import type { UserCardStats, UserOrderStats } from './model' - -/** - * 获取用户卡片统计(余额/积分/优惠券/礼品卡) - * 后端聚合接口:/api/user/card/stats(60s 缓存) - * 余额数据来源:后端跨库读取 gxwebsoft_core.sys_user - */ -export async function getUserCardStats(): Promise { - try { - const res = await request.get>('/user/card/stats') - if (res.code === 0 && res.data) { - const d = res.data - return { - balance: d.balance != null ? String(d.balance) : '0.00', - points: d.points || 0, - coupons: d.coupons || 0, - giftCards: d.giftCards || 0, - } - } - } catch (e) { - console.error('[CardStats] /user/card/stats 请求失败:', e) - } - return { - balance: '0.00', - points: 0, - coupons: 0, - giftCards: 0, - } -} - -/** - * 获取用户订单统计 - * 后端接口:/api/user/orders/stats(60s 缓存) - */ -export async function getUserOrderStats(): Promise { - try { - const res = await request.get>('/user/orders/stats') - if (res.code === 0 && res.data) { - return { - pending: res.data.pending || 0, - paid: res.data.paid || 0, - shipped: res.data.shipped || 0, - completed: res.data.completed || 0, - } - } - } catch (e) { - console.error('获取订单统计失败:', e) - } - return { - pending: 0, - paid: 0, - shipped: 0, - completed: 0, - } -} diff --git a/src_bak/api/shop/shopUserCard/model/index.ts b/src_bak/api/shop/shopUserCard/model/index.ts deleted file mode 100644 index 3cc0554..0000000 --- a/src_bak/api/shop/shopUserCard/model/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * 用户卡片统计类型定义 - */ - -export interface UserCardStats { - balance: string - points: number - coupons: number - giftCards: number -} - -export interface UserOrderStats { - pending: number // 待付款 - paid: number // 待发货 - shipped: number // 待收货 - completed: number // 已完成 -} diff --git a/src_bak/api/shop/shopUserCoupon/index.ts b/src_bak/api/shop/shopUserCoupon/index.ts deleted file mode 100644 index 0aa346a..0000000 --- a/src_bak/api/shop/shopUserCoupon/index.ts +++ /dev/null @@ -1,155 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopUserCoupon, ShopUserCouponParam } from './model'; - -/** - * 分页查询用户优惠券 - */ -export async function pageShopUserCoupon(params: ShopUserCouponParam) { - const res = await request.get>>( - '/shop/shop-user-coupon/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询用户优惠券列表 - */ -export async function listShopUserCoupon(params?: ShopUserCouponParam) { - const res = await request.get>( - '/shop/shop-user-coupon', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加用户优惠券 - */ -export async function addShopUserCoupon(data: ShopUserCoupon) { - const res = await request.post>( - '/shop/shop-user-coupon', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改用户优惠券 - */ -export async function updateShopUserCoupon(data: ShopUserCoupon) { - const res = await request.put>( - '/shop/shop-user-coupon', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除用户优惠券 - */ -export async function removeShopUserCoupon(id?: number) { - const res = await request.del>( - '/shop/shop-user-coupon/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除用户优惠券 - */ -export async function removeBatchShopUserCoupon(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-user-coupon/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询用户优惠券 - */ -export async function getShopUserCoupon(id: number) { - const res = await request.get>( - '/shop/shop-user-coupon/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 获取我的可用优惠券 - */ -export async function getMyAvailableCoupons() { - const res = await request.get>( - '/shop/shop-user-coupon/my/available' - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 获取我的已使用优惠券 - */ -export async function getMyUsedCoupons() { - const res = await request.get>( - '/shop/shop-user-coupon/my/used' - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 获取我的已过期优惠券 - */ -export async function getMyExpiredCoupons() { - const res = await request.get>( - '/shop/shop-user-coupon/my/expired' - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - - -/** - * 领取优惠券 - */ -export async function takeCoupon(couponId: number) { - const res = await request.post>( - '/shop/shop-user-coupon/take', - { couponId } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopUserCoupon/model/index.ts b/src_bak/api/shop/shopUserCoupon/model/index.ts deleted file mode 100644 index f0f77e3..0000000 --- a/src_bak/api/shop/shopUserCoupon/model/index.ts +++ /dev/null @@ -1,84 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 用户优惠券 - */ -export interface ShopUserCoupon { - // id - id?: string; - // 优惠券模板ID - couponId?: number; - // 用户ID - userId?: number; - // 优惠券名称 - name?: string; - // 优惠券描述 - description?: string; - // 优惠券类型(10满减券 20折扣券 30免费劵) - type?: number; - // 满减券-减免金额 - reducePrice?: string; - // 折扣券-折扣率(0-100) - discount?: number; - // 最低消费金额 - minPrice?: string; - // 适用范围(10全部商品 20指定商品 30指定分类) - applyRange?: number; - // 适用范围配置(json格式) - applyRangeConfig?: string; - // 有效期开始时间 - startTime?: string; - // 有效期结束时间 - endTime?: string; - // 使用状态(0未使用 1已使用 2已过期) - status?: number; - // 状态文本描述 - statusText?: string; - // 是否过期, 0否, 1是 - isExpire?: number; - // 是否即将过期(后端计算) - isExpiringSoon?: boolean; - // 剩余天数(后端计算) - daysRemaining?: number; - // 剩余小时数(后端计算) - hoursRemaining?: number; - // 使用时间 - takeTime?: string; - // 使用订单ID - orderId?: string; - // 使用订单号 - orderNo?: string; - // 获取方式(10主动领取 20系统发放 30活动赠送) - obtainType?: number; - // 获取来源描述 - obtainSource?: string; - // 是否删除, 0否, 1是 - deleted?: string; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 用户优惠券搜索条件 - */ -export interface ShopUserCouponParam extends PageParam { - id?: number; - userId?: number; - status?: number; - isExpire?: number; - sortBy?: string; - sortOrder?: string; - // 仅查询有效的优惠券 - validOnly?: boolean; - // 仅查询已过期的优惠券 - expired?: boolean; - // 查询即将过期的优惠券 - expiringSoon?: boolean; - // 当前时间(用于测试) - currentTime?: string; - keywords?: string; -} diff --git a/src_bak/api/shop/shopUserReferee/index.ts b/src_bak/api/shop/shopUserReferee/index.ts deleted file mode 100644 index 5f7cc55..0000000 --- a/src_bak/api/shop/shopUserReferee/index.ts +++ /dev/null @@ -1,101 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ShopUserReferee, ShopUserRefereeParam } from './model'; - -/** - * 分页查询用户推荐关系表 - */ -export async function pageShopUserReferee(params: ShopUserRefereeParam) { - const res = await request.get>>( - '/shop/shop-user-referee/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询用户推荐关系表列表 - */ -export async function listShopUserReferee(params?: ShopUserRefereeParam) { - const res = await request.get>( - '/shop/shop-user-referee', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加用户推荐关系表 - */ -export async function addShopUserReferee(data: ShopUserReferee) { - const res = await request.post>( - '/shop/shop-user-referee', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改用户推荐关系表 - */ -export async function updateShopUserReferee(data: ShopUserReferee) { - const res = await request.put>( - '/shop/shop-user-referee', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除用户推荐关系表 - */ -export async function removeShopUserReferee(id?: number) { - const res = await request.del>( - '/shop/shop-user-referee/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除用户推荐关系表 - */ -export async function removeBatchShopUserReferee(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-user-referee/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询用户推荐关系表 - */ -export async function getShopUserReferee(id: number) { - const res = await request.get>( - '/shop/shop-user-referee/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/shop/shopUserReferee/model/index.ts b/src_bak/api/shop/shopUserReferee/model/index.ts deleted file mode 100644 index 910692c..0000000 --- a/src_bak/api/shop/shopUserReferee/model/index.ts +++ /dev/null @@ -1,33 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 用户推荐关系表 - */ -export interface ShopUserReferee { - // 主键ID - id?: number; - // 推荐人ID - dealerId?: number; - // 用户id(被推荐人) - userId?: number; - // 推荐关系层级(1,2,3) - level?: number; - // 备注 - comments?: string; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 用户推荐关系表搜索条件 - */ -export interface ShopUserRefereeParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/shop/shopWithdrawRecord.ts b/src_bak/api/shop/shopWithdrawRecord.ts deleted file mode 100644 index 0426731..0000000 --- a/src_bak/api/shop/shopWithdrawRecord.ts +++ /dev/null @@ -1,50 +0,0 @@ -import request from '@/utils/request'; - -/** - * 获取我的提现记录 - */ -export function getMyWithdrawList(params: any) { - return request.get('/shop/shop-withdraw-record/my/list', params); -} - -/** - * 获取提现统计 - */ -export function getWithdrawStats() { - return request.get('/shop/shop-withdraw-record/my/stats'); -} - -/** - * 获取提现配置 - */ -export function getWithdrawConfig() { - return request.get('/shop/shop-withdraw-record/config'); -} - -/** - * 申请提现 - */ -export function applyWithdraw(data: any) { - return request.post('/shop/shop-withdraw-record/apply', data); -} - -/** - * 获取提现记录列表(管理员) - */ -export function getWithdrawList(params: any) { - return request.get('/shop/shop-withdraw-record/page', params); -} - -/** - * 审核提现申请 - */ -export function auditWithdraw(id: number, data: any) { - return request.post(`/shop/shop-withdraw-record/audit/${id}`, data); -} - -/** - * 确认打款 - */ -export function confirmTransfer(id: number, data: any) { - return request.post(`/shop/shop-withdraw-record/transfer/${id}`, data); -} diff --git a/src_bak/api/system/access-key/index.ts b/src_bak/api/system/access-key/index.ts deleted file mode 100644 index a2863a3..0000000 --- a/src_bak/api/system/access-key/index.ts +++ /dev/null @@ -1,59 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult } from '@/api/index'; -import type { AccessKey, AccessKeyParam } from './model'; -import { PageResult } from '@/api/index'; -import {SERVER_API_URL} from "@/utils/server"; -/** - * 查询AccessKey列表 - */ -export async function pageAccessKey(params: AccessKeyParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/access-key/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加AccessKey - */ -export async function addAccessKey(data: AccessKey) { - const res = await request.post>( - SERVER_API_URL + '/system/access-key', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改AccessKey - */ -export async function updateAccessKey(data: AccessKey) { - const res = await request.put>( - SERVER_API_URL + '/system/access-key', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除AccessKey - */ -export async function removeAccessKey(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/access-key/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/access-key/model/index.ts b/src_bak/api/system/access-key/model/index.ts deleted file mode 100644 index 376b577..0000000 --- a/src_bak/api/system/access-key/model/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * AccessKey - */ -export interface AccessKey { - id?: number; - phone?: string; - accessKey?: string; - accessSecret?: string; - createTime?: string; - tenantId?: number; - code?: number; -} - -/** - * AccessKey搜索条件 - */ -export interface AccessKeyParam { - id?: number; - accessKey?: string; -} diff --git a/src_bak/api/system/appstore/index.ts b/src_bak/api/system/appstore/index.ts deleted file mode 100644 index 4acad48..0000000 --- a/src_bak/api/system/appstore/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -// json数据 -export function appstoreType() { - return [ - { value: '0', label: '全部', text: '全部', comments: '' }, - { value: '1', label: '系统管理', text: '系统管理', comments: '' }, - { value: '2', label: '内容管理', text: '内容管理', comments: '' }, - { value: '3', label: '第三方应用', text: '第三方应用', comments: '' }, - { value: '4', label: '办公协同', text: '办公协同', comments: '' }, - { value: '5', label: '商城模块', text: '商城模块', comments: '' } - ]; -} diff --git a/src_bak/api/system/appstore/model/index.ts b/src_bak/api/system/appstore/model/index.ts deleted file mode 100644 index c3c9c45..0000000 --- a/src_bak/api/system/appstore/model/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * 消息 - */ -export interface Appstore { - // 消息id - id?: number; - // 标题 - title?: string; - // 时间 - time?: string; - // 状态 - status?: number; -} diff --git a/src_bak/api/system/cache/index.ts b/src_bak/api/system/cache/index.ts deleted file mode 100644 index 0fd5813..0000000 --- a/src_bak/api/system/cache/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult } from '@/api/index'; -import type { Cache, CacheParam } from './model'; -import {SERVER_API_URL} from "@/utils/server"; - -/** - * 查询缓存数据 - */ -export async function listCache(params?: CacheParam) { - const res = await request.get>( - SERVER_API_URL + '/system/cache', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 获取缓存数据 - * @param key - */ -export async function getCache(key: string) { - const res = await request.get>( - SERVER_API_URL + '/system/cache/' + key - ); - if (res.code === 0) { - return res.data; - } -} - -/** - * 更新缓存数据 - * @param cache - */ -export async function updateCache(cache: Cache) { - const res = await request.post>( - SERVER_API_URL + '/system/cache', - cache - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除缓存数据 - * @param key - */ -export async function removeCache(key?: string) { - const res = await request.del>( - SERVER_API_URL + '/system/cache/' + key - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 更新缓存数据 - * @param cache - */ -export async function updateCacheTheme(cache: Cache) { - const res = await request.post>( - SERVER_API_URL + '/system/cache/theme', - cache - ); - if (res.code === 0) { - return res.message; - } -} diff --git a/src_bak/api/system/cache/model/index.ts b/src_bak/api/system/cache/model/index.ts deleted file mode 100644 index dc28d00..0000000 --- a/src_bak/api/system/cache/model/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 缓存管理 - */ -export interface Cache { - key?: string; - content?: string; - uploadMethod?: any; - expireTime?: number; // 过期时间(秒) -} - -/** - * 搜索条件 - */ -export interface CacheParam extends PageParam { - key?: string; -} diff --git a/src_bak/api/system/chat/index.ts b/src_bak/api/system/chat/index.ts deleted file mode 100644 index e7b9e79..0000000 --- a/src_bak/api/system/chat/index.ts +++ /dev/null @@ -1,157 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { - ChatConversation, - ChatConversationParam, - ChatMessage, - ChatMessageParam -} from '@/api/system/chat/model'; -import {SERVER_API_URL} from "@/utils/server"; - -/** - * 查询聊天列表 - */ -export async function pageChatConversation(params: ChatConversationParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/chat-conversation/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询聊天列表 - */ -export async function pageChatMessage(params: ChatMessageParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/chat-message/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} -/** - * 查询日志列表 - */ -export async function listChatConversation(params?: ChatConversationParam) { - const res = await request.get>( - SERVER_API_URL + '/system/chat-conversation', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加日志 - */ -export async function addChatMessage(data: ChatMessage) { - const res = await request.post>( - SERVER_API_URL + '/system/chat-message', - data - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加日志 - */ -export async function addChatConversation(data: ChatConversation) { - const res = await request.post>( - SERVER_API_URL + '/system/chat-conversation', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改日志 - */ -export async function updateChatConversation(data: any) { - const res = await request.put>( - SERVER_API_URL + '/system/chat-conversation', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 绑定日志 - */ -export async function bindChatConversation(data: ChatConversation) { - const res = await request.put>( - SERVER_API_URL + '/system/chat-conversation/bind', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量添加 - */ -export async function addBatchChatConversation(data: ChatConversation[]) { - const res = await request.post>( - SERVER_API_URL + '/system/chat-conversation/batch', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除日志 - */ -export async function removeChatConversation(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/chat-conversation/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除日志 - */ -export async function removeBatchChatConversation( - data: (number | undefined)[] -) { - const res = await request.del>( - SERVER_API_URL + '/system/chat-conversation/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/chat/model/index.ts b/src_bak/api/system/chat/model/index.ts deleted file mode 100644 index 5ead20e..0000000 --- a/src_bak/api/system/chat/model/index.ts +++ /dev/null @@ -1,49 +0,0 @@ -import type { PageParam } from '@/api'; -import type { User } from '@/api/system/user/model'; - -export interface ChatConversation { - id?: number; - userId?: number; - friendId?: number; - userInfo?: User; - friendInfo?: User; - content: string; - messages: ChatMessage[]; - unRead: number; - createTime?: string; - updateTime: string | number | Date; -} - -export interface ChatMessage { - id?: number; - formUserId?: number; - formUserInfo?: User; - toUserInfo?: User; - toUserId?: number; - type: string; - content: string; - status?: number; - createTime?: number; - updateTime?: number; -} - -/** - * 搜索条件 - */ -export interface ChatConversationParam extends PageParam { - userId?: number; - status: number; - onlyFake: boolean; - keywords: string; -} - -/** - * 搜索条件 - */ -export interface ChatMessageParam extends PageParam { - formUserId?: number; - toUserId?: number; - type?: string; - status?: number; - keywords: string; -} diff --git a/src_bak/api/system/chatConversation/index.ts b/src_bak/api/system/chatConversation/index.ts deleted file mode 100644 index 2b75eec..0000000 --- a/src_bak/api/system/chatConversation/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ChatConversation, ChatConversationParam } from './model'; - - -/** - * 分页查询聊天消息表 - */ -export async function pageChatConversation(params: ChatConversationParam) { - const res = await request.get>>( - '/shop/chat-conversation/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询聊天消息表列表 - */ -export async function listChatConversation(params?: ChatConversationParam) { - const res = await request.get>( - '/shop/chat-conversation', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加聊天消息表 - */ -export async function addChatConversation(data: ChatConversation) { - const res = await request.post>( - '/shop/chat-conversation', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改聊天消息表 - */ -export async function updateChatConversation(data: ChatConversation) { - const res = await request.put>( - '/shop/chat-conversation', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除聊天消息表 - */ -export async function removeChatConversation(id?: number) { - const res = await request.del>( - '/shop/chat-conversation/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除聊天消息表 - */ -export async function removeBatchChatConversation(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/chat-conversation/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询聊天消息表 - */ -export async function getChatConversation(id: number) { - const res = await request.get>( - '/shop/chat-conversation/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/chatConversation/model/index.ts b/src_bak/api/system/chatConversation/model/index.ts deleted file mode 100644 index 110806d..0000000 --- a/src_bak/api/system/chatConversation/model/index.ts +++ /dev/null @@ -1,37 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 聊天消息表 - */ -export interface ChatConversation { - // 自增ID - id?: number; - // 用户ID - userId?: number; - // 好友ID - friendId?: number; - // 消息类型 - type?: number; - // 消息内容 - content?: string; - // 未读消息 - unRead?: number; - // 状态, 0未读, 1已读 - status?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 注册时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 聊天消息表搜索条件 - */ -export interface ChatConversationParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/system/chatMessage/index.ts b/src_bak/api/system/chatMessage/index.ts deleted file mode 100644 index 5526ebf..0000000 --- a/src_bak/api/system/chatMessage/index.ts +++ /dev/null @@ -1,120 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { ChatMessage, ChatMessageParam } from './model'; -import {SERVER_API_URL} from "@/utils/server"; - -/** - * 分页查询聊天消息表 - */ -export async function pageChatMessage(params: ChatMessageParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/chat-message/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询聊天消息表列表 - */ -export async function listChatMessage(params?: ChatMessageParam) { - const res = await request.get>( - SERVER_API_URL + '/system/chat-message', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加聊天消息表 - */ -export async function addChatMessage(data: ChatMessage) { - const res = await request.post>( - SERVER_API_URL + '/system/chat-message', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加聊天消息表 - */ -export async function addBatchChatMessage(data: ChatMessage[]) { - const res = await request.post>( - SERVER_API_URL + '/system/chat-message/batch', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改聊天消息表 - */ -export async function updateChatMessage(data: ChatMessage) { - const res = await request.put>( - SERVER_API_URL + '/system/chat-message', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除聊天消息表 - */ -export async function removeChatMessage(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/chat-message/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除聊天消息表 - */ -export async function removeBatchChatMessage(data: (number | undefined)[]) { - const res = await request.del>( - SERVER_API_URL + '/system/chat-message/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询聊天消息表 - */ -export async function getChatMessage(id: number) { - const res = await request.get>( - SERVER_API_URL + '/system/chat-message/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/chatMessage/model/index.ts b/src_bak/api/system/chatMessage/model/index.ts deleted file mode 100644 index 4352a3f..0000000 --- a/src_bak/api/system/chatMessage/model/index.ts +++ /dev/null @@ -1,49 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 聊天消息表 - */ -export interface ChatMessage { - // 自增ID - id?: number; - // 发送人ID - formUserId?: number; - // 接收人ID - toUserId?: number; - // 消息类型 - type?: string; - // 消息内容 - content?: string; - // 屏蔽接收方 - sideTo?: number; - // 屏蔽发送方 - sideFrom?: number; - // 是否撤回 - withdraw?: number; - // 文件信息 - fileInfo?: string; - toUserName?: any; - formUserName?: string; - // 批量发送 - toUserIds?: any[]; - // 存在联系方式 - hasContact?: number; - // 状态, 0未读, 1已读 - status?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 注册时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 聊天消息表搜索条件 - */ -export interface ChatMessageParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/system/company/index.ts b/src_bak/api/system/company/index.ts deleted file mode 100644 index 56738c2..0000000 --- a/src_bak/api/system/company/index.ts +++ /dev/null @@ -1,161 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult } from '@/api/index'; -import type { Company, CompanyParam } from './model'; -import { PageResult } from '@/api/index'; -import {SERVER_API_URL} from "@/utils/server"; - -/** - * 查询企业资料 - */ -export async function getCompany(params?: CompanyParam) { - const res = await request.get>( - SERVER_API_URL + '/system/company/profile', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询企业资料不限租户 - */ -export async function getCompanyAll(companyId: number) { - const res = await request.get>( - SERVER_API_URL + '/system/company/profileAll/' + companyId - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询Company列表 - */ -export async function pageCompany(params: CompanyParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/company/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询Company列表不限租户 - */ -export async function pageCompanyAll(params: CompanyParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/company/pageAll', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加Company - */ -export async function addCompany(data: Company) { - const res = await request.post>( - SERVER_API_URL + '/system/company', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改Company - */ -export async function updateCompany(data: Company) { - const res = await request.put>( - SERVER_API_URL + '/system/company', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改CompanyAll - */ -export async function updateCompanyAll(data: Company) { - const res = await request.put>( - SERVER_API_URL + '/system/company/updateCompanyAll', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除Company - */ -export async function removeCompany(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/company/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -// 销毁租户 -export async function destructionTenant(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/company/destruction/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除Company - */ -export async function removeBatchCompany(data: (number | undefined)[]) { - const res = await request.del>( - SERVER_API_URL + '/system/company/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -export async function checkExistence( - field: string, - value: string, - id?: number -) { - const res = await request.get>( - SERVER_API_URL + '/system/company/existence', - { - params: { field, value, id } - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/company/model/index.ts b/src_bak/api/system/company/model/index.ts deleted file mode 100644 index c804858..0000000 --- a/src_bak/api/system/company/model/index.ts +++ /dev/null @@ -1,120 +0,0 @@ -import type { PageParam } from '@/api'; -import type {CompanyParameter} from "~/api/system/companyParameter/model"; -import type {CompanyUrl} from "~/api/system/companyUrl/model"; -import type {CompanyGit} from "~/api/system/companyGit/model"; - -/** - * 企业信息 - */ -export interface Company { - companyId?: number; - type?: number; - menuId?: number; - shortName?: string; - companyName?: string; - companyType?: number; - companyTypeMultiple?: string; - appType?: string; - companyLogo?: string; - image?: string; - content?: string; - files?: any; - companyCode?: string; - domain?: string; - phone?: string; - tel?: string; - email?: string; - InvoiceHeader?: string; - startTime?: string; - expirationTime?: string; - version?: number; - versionName?: string; - versionCode?: string; - members?: number; - storage?: string; - storageMax?: string; - buys?: number; - clicks?: number; - users?: number; - departments?: number; - industryParent?: string; - industryChild?: string; - country?: string; - province?: string; - city?: string; - region?: string; - address?: string; - latitude?: string; - longitude?: string; - businessEntity?: string; - comments?: any; - authentication?: number; - industryId?: number; - industryName?: string; - status?: number; - userId?: number; - official?: boolean; - price?: number; - chargingMethod?: number; - planId?: number; - sortNumber?: number; - authoritative?: boolean; - merchantId?: number; - tenantId?: number; - tenantName?: string; - tenantCode?: string; - modules?: string; - requestUrl?: string; - socketUrl?: string; - serverUrl?: string; - modulesUrl?: string; - merchantUrl?: string; - websiteUrl?: string; - mpWeixinCode?: string; - mpAlipayCode?: string; - h5Code?: string; - androidUrl?: string; - iosUrl?: string; - avatar?: string; - nickname?: string; - code?: number; - createTime?: string; - updateTime?: string; - password?: string; - password2?: string; - collection?: boolean; - recommend?: boolean; - title?: string; - parentName?: string; - categoryName?: string; - rate?: number; - isBuy?: boolean; - installed?: boolean; - parameters?: CompanyParameter[]; - links?: CompanyUrl[]; - accounts?: CompanyUrl[]; - gits?: CompanyGit[]; -} - -/** - * 企业信息搜索条件 - */ -export interface CompanyParam extends PageParam { - companyId?: number; - type?: number; - official?: boolean; - shortName?: string; - companyName?: string; - domain?: string; - authoritative?: number; - authentication?: number; - industryParent?: string; - industryChild?: string; - province?: string; - city?: string; - region?: string; - version?: number; - status?: number; - recommend?: boolean; - collection?: boolean; -} diff --git a/src_bak/api/system/companyComment/index.ts b/src_bak/api/system/companyComment/index.ts deleted file mode 100644 index 5b2cf41..0000000 --- a/src_bak/api/system/companyComment/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type {ApiResult, PageResult} from '@/api'; -import type {CompanyComment, CompanyCommentParam} from './model'; -import {SERVER_API_URL} from "@/utils/server"; - -/** - * 分页查询应用评论 - */ -export async function pageCompanyComment(params: CompanyCommentParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/company-comment/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询应用评论列表 - */ -export async function listCompanyComment(params?: CompanyCommentParam) { - const res = await request.get>( - SERVER_API_URL + '/system/company-comment', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加应用评论 - */ -export async function addCompanyComment(data: CompanyComment) { - const res = await request.post>( - SERVER_API_URL + '/system/company-comment', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改应用评论 - */ -export async function updateCompanyComment(data: CompanyComment) { - const res = await request.put>( - SERVER_API_URL + '/system/company-comment', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除应用评论 - */ -export async function removeCompanyComment(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/company-comment/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除应用评论 - */ -export async function removeBatchCompanyComment(data: (number | undefined)[]) { - const res = await request.del>( - SERVER_API_URL + '/system/company-comment/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询应用评论 - */ -export async function getCompanyComment(id: number) { - const res = await request.get>( - SERVER_API_URL + '/system/company-comment/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/companyComment/model/index.ts b/src_bak/api/system/companyComment/model/index.ts deleted file mode 100644 index 45d4b6c..0000000 --- a/src_bak/api/system/companyComment/model/index.ts +++ /dev/null @@ -1,43 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 应用评论 - */ -export interface CompanyComment { - // ID - id?: number; - // 父级ID - parentId?: number; - // 用户ID - userId?: number; - // 企业ID - companyId?: number; - // 评分 - rate?: number; - // 排序(数字越小越靠前) - sortNumber?: number; - // 评论内容 - comments?: string; - // 状态 - status?: number; - // 租户id - tenantId?: number; - // 租户名称 - tenantName?: string; - // 企业 - logo?: string; - // 创建时间 - createTime?: string; - // 子列表 - children?: CompanyComment[]; -} - -/** - * 应用评论搜索条件 - */ -export interface CompanyCommentParam extends PageParam { - id?: number; - userId?: number; - tenantId?: number; - keywords?: string; -} diff --git a/src_bak/api/system/companyContent/index.ts b/src_bak/api/system/companyContent/index.ts deleted file mode 100644 index adaf3cb..0000000 --- a/src_bak/api/system/companyContent/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CompanyContent, CompanyContentParam } from './model'; -import {SERVER_API_URL} from "@/utils/server"; - -/** - * 分页查询应用详情 - */ -export async function pageCompanyContent(params: CompanyContentParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/company-content/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询应用详情列表 - */ -export async function listCompanyContent(params?: CompanyContentParam) { - const res = await request.get>( - SERVER_API_URL + '/system/company-content', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加应用详情 - */ -export async function addCompanyContent(data: CompanyContent) { - const res = await request.post>( - SERVER_API_URL + '/system/company-content', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改应用详情 - */ -export async function updateCompanyContent(data: CompanyContent) { - const res = await request.put>( - SERVER_API_URL + '/system/company-content', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除应用详情 - */ -export async function removeCompanyContent(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/company-content/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除应用详情 - */ -export async function removeBatchCompanyContent(data: (number | undefined)[]) { - const res = await request.del>( - SERVER_API_URL + '/system/company-content/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询应用详情 - */ -export async function getCompanyContent(id: number) { - const res = await request.get>( - SERVER_API_URL + '/system/company-content/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/companyContent/model/index.ts b/src_bak/api/system/companyContent/model/index.ts deleted file mode 100644 index 226f513..0000000 --- a/src_bak/api/system/companyContent/model/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 应用详情 - */ -export interface CompanyContent { - // - id?: number; - // 企业ID - companyId?: number; - // 详细内容 - content?: string; - // 租户id - tenantId?: number; - // 创建时间 - createTime?: string; -} - -/** - * 应用详情搜索条件 - */ -export interface CompanyContentParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/system/companyGit/index.ts b/src_bak/api/system/companyGit/index.ts deleted file mode 100644 index ab05987..0000000 --- a/src_bak/api/system/companyGit/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CompanyGit, CompanyGitParam } from './model'; -import { SERVER_API_URL } from '@/config/index'; - -/** - * 分页查询代码仓库 - */ -export async function pageCompanyGit(params: CompanyGitParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/company-git/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询代码仓库列表 - */ -export async function listCompanyGit(params?: CompanyGitParam) { - const res = await request.get>( - SERVER_API_URL + '/system/company-git', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加代码仓库 - */ -export async function addCompanyGit(data: CompanyGit) { - const res = await request.post>( - SERVER_API_URL + '/system/company-git', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改代码仓库 - */ -export async function updateCompanyGit(data: CompanyGit) { - const res = await request.put>( - SERVER_API_URL + '/system/company-git', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除代码仓库 - */ -export async function removeCompanyGit(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/company-git/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除代码仓库 - */ -export async function removeBatchCompanyGit(data: (number | undefined)[]) { - const res = await request.del>( - SERVER_API_URL + '/system/company-git/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询代码仓库 - */ -export async function getCompanyGit(id: number) { - const res = await request.get>( - SERVER_API_URL + '/system/company-git/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/companyGit/model/index.ts b/src_bak/api/system/companyGit/model/index.ts deleted file mode 100644 index 901a7cd..0000000 --- a/src_bak/api/system/companyGit/model/index.ts +++ /dev/null @@ -1,41 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 代码仓库 - */ -export interface CompanyGit { - // 自增ID - id?: number; - // 仓库名称 - title?: string; - // 厂商 0私有仓库 1github 2gitee 3其他 - brand?: string; - // 语言 - language?: string; - // 企业ID - companyId?: number; - // 仓库地址 - domain?: string; - // 账号 - account?: string; - // 密码 - password?: string; - // 仓库描述 - comments?: string; - // 排序(数字越小越靠前) - sortNumber?: number; - // 状态, 0正常, 1待确认 - status?: number; - // 创建时间 - createTime?: string; - // 租户id - tenantId?: number; -} - -/** - * 代码仓库搜索条件 - */ -export interface CompanyGitParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/system/companyParameter/index.ts b/src_bak/api/system/companyParameter/index.ts deleted file mode 100644 index a981a35..0000000 --- a/src_bak/api/system/companyParameter/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CompanyParameter, CompanyParameterParam } from './model'; -import {SERVER_API_URL} from '@/utils/server'; - -/** - * 分页查询应用参数 - */ -export async function pageCompanyParameter(params: CompanyParameterParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/company-parameter/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询应用参数列表 - */ -export async function listCompanyParameter(params?: CompanyParameterParam) { - const res = await request.get>( - SERVER_API_URL + '/system/company-parameter', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加应用参数 - */ -export async function addCompanyParameter(data: CompanyParameter) { - const res = await request.post>( - SERVER_API_URL + '/system/company-parameter', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改应用参数 - */ -export async function updateCompanyParameter(data: CompanyParameter) { - const res = await request.put>( - SERVER_API_URL + '/system/company-parameter', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除应用参数 - */ -export async function removeCompanyParameter(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/company-parameter/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除应用参数 - */ -export async function removeBatchCompanyParameter(data: (number | undefined)[]) { - const res = await request.del>( - SERVER_API_URL + '/system/company-parameter/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询应用参数 - */ -export async function getCompanyParameter(id: number) { - const res = await request.get>( - SERVER_API_URL + '/system/company-parameter/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/companyParameter/model/index.ts b/src_bak/api/system/companyParameter/model/index.ts deleted file mode 100644 index bf608d8..0000000 --- a/src_bak/api/system/companyParameter/model/index.ts +++ /dev/null @@ -1,33 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 应用参数 - */ -export interface CompanyParameter { - // 自增ID - id?: number; - // 参数名称 - name?: string; - // 参数内容 - value?: string; - // 企业ID - companyId?: number; - // 备注 - comments?: string; - // 排序(数字越小越靠前) - sortNumber?: number; - // 状态, 0正常, 1待确认 - status?: number; - // 创建时间 - createTime?: string; - // 租户id - tenantId?: number; -} - -/** - * 应用参数搜索条件 - */ -export interface CompanyParameterParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/system/companyUrl/index.ts b/src_bak/api/system/companyUrl/index.ts deleted file mode 100644 index 3b74b53..0000000 --- a/src_bak/api/system/companyUrl/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { CompanyUrl, CompanyUrlParam } from './model'; -import {SERVER_API_URL} from '@/utils/server'; - -/** - * 分页查询应用域名 - */ -export async function pageCompanyUrl(params: CompanyUrlParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/company-url/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询应用域名列表 - */ -export async function listCompanyUrl(params?: CompanyUrlParam) { - const res = await request.get>( - SERVER_API_URL + '/system/company-url', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加应用域名 - */ -export async function addCompanyUrl(data: CompanyUrl) { - const res = await request.post>( - SERVER_API_URL + '/system/company-url', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改应用域名 - */ -export async function updateCompanyUrl(data: CompanyUrl) { - const res = await request.put>( - SERVER_API_URL + '/system/company-url', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除应用域名 - */ -export async function removeCompanyUrl(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/company-url/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除应用域名 - */ -export async function removeBatchCompanyUrl(data: (number | undefined)[]) { - const res = await request.del>( - SERVER_API_URL + '/system/company-url/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询应用域名 - */ -export async function getCompanyUrl(id: number) { - const res = await request.get>( - SERVER_API_URL + '/system/company-url/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/companyUrl/model/index.ts b/src_bak/api/system/companyUrl/model/index.ts deleted file mode 100644 index ddccc6b..0000000 --- a/src_bak/api/system/companyUrl/model/index.ts +++ /dev/null @@ -1,39 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 应用域名 - */ -export interface CompanyUrl { - // 自增ID - id?: number; - // 域名类型 - type?: string; - // 企业ID - companyId?: number; - // 域名 - domain?: string; - // 账号 - account?: string; - // 密码 - password?: string; - // 二维码 - qrcode?: string; - // 备注 - comments?: string; - // 排序(数字越小越靠前) - sortNumber?: number; - // 状态, 0正常, 1待确认 - status?: number; - // 创建时间 - createTime?: string; - // 租户id - tenantId?: number; -} - -/** - * 应用域名搜索条件 - */ -export interface CompanyUrlParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/system/dict-data/index.ts b/src_bak/api/system/dict-data/index.ts deleted file mode 100644 index b8c9e26..0000000 --- a/src_bak/api/system/dict-data/index.ts +++ /dev/null @@ -1,87 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { DictData, DictDataParam } from './model'; -import {SERVER_API_URL} from "@/utils/server"; - -/** - * 分页查询字典数据 - */ -export async function pageDictData(params: DictDataParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/dict-data/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询字典数据列表 - */ -export async function listDictData(params: DictDataParam) { - const res = await request.get>( - SERVER_API_URL + '/system/dict-data', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加字典数据 - */ -export async function addDictData(data: DictData) { - const res = await request.post>( - SERVER_API_URL + '/system/dict-data', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改字典数据 - */ -export async function updateDictData(data: DictData) { - const res = await request.put>( - SERVER_API_URL + '/system/dict-data', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除字典数据 - */ -export async function removeDictData(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/dict-data/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除字典数据 - */ -export async function removeDictDataBatch(data: (number | undefined)[]) { - const res = await request.del>( - SERVER_API_URL + '/system/dict-data/batch', - { data } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/dict-data/model/index.ts b/src_bak/api/system/dict-data/model/index.ts deleted file mode 100644 index b39b71c..0000000 --- a/src_bak/api/system/dict-data/model/index.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { PageParam } from '@/api/index'; - -/** - * 字典数据 - */ -export interface DictData { - // 字典数据id - dictDataId?: number; - // 字典id - dictId?: number; - // 字典名称 - dictName?: string; - // 字典数据标识 - dictDataCode?: string; - // 字典数据名称 - dictDataName?: string; - // 字典标识 - dictCode?: string; - // 排序号 - sortNumber?: any; - // 备注 - comments?: string; - // 创建时间 - createTime?: string; - tenantId?: number; - label?: string; - value?: string; - text?: string; -} - -/** - * 字典数据搜索条件 - */ -export interface DictDataParam extends PageParam { - // 关键字 - keywords?: string; - // 字典标识 - dictCode?: string; - // 字典id - dictId?: number; - // - value?: number; - // - label?: string; - dictDataId?: number; -} diff --git a/src_bak/api/system/dict/index.ts b/src_bak/api/system/dict/index.ts deleted file mode 100644 index 0076c39..0000000 --- a/src_bak/api/system/dict/index.ts +++ /dev/null @@ -1,61 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult } from '@/api/index'; -import type { Dict, DictParam } from './model'; -import {SERVER_API_URL} from "@/utils/server"; - -/** - * 查询字典列表 - */ -export async function listDictionaries(params?: DictParam) { - const res = await request.get>( - SERVER_API_URL + '/system/dict', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加字典 - */ -export async function addDict(data: Dict) { - const res = await request.post>( - SERVER_API_URL + '/system/dict', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改字典 - */ -export async function updateDict(data: Dict) { - const res = await request.put>( - SERVER_API_URL + '/system/dict', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除字典 - */ -export async function removeDict(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/dict/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/dict/model/index.ts b/src_bak/api/system/dict/model/index.ts deleted file mode 100644 index 575cb35..0000000 --- a/src_bak/api/system/dict/model/index.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * 字典 - */ -export interface Dict { - // 字典id - dictId?: number; - // 字典标识 - dictCode?: string; - // 字典名称 - dictName?: string; - // 排序号 - sortNumber?: number; - // 备注 - comments?: string; - // 创建时间 - createTime?: string; - type?: number; - tenantId?: number; -} - -/** - * 字典搜索条件 - */ -export interface DictParam { - dictCode?: string; - dictName?: string; - type?: number; - tenantId?: number; -} diff --git a/src_bak/api/system/dictionary-data/index.ts b/src_bak/api/system/dictionary-data/index.ts deleted file mode 100644 index a72b89f..0000000 --- a/src_bak/api/system/dictionary-data/index.ts +++ /dev/null @@ -1,87 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { DictionaryData, DictionaryDataParam } from './model'; -import {SERVER_API_URL} from "@/utils/server"; - -/** - * 分页查询字典数据 - */ -export async function pageDictionaryData(params: DictionaryDataParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/dict-data/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询字典数据列表 - */ -export async function listDictionaryData(params: DictionaryDataParam) { - const res = await request.get>( - SERVER_API_URL + '/system/dict-data', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加字典数据 - */ -export async function addDictionaryData(data: DictionaryData) { - const res = await request.post>( - SERVER_API_URL + '/system/dict-data', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改字典数据 - */ -export async function updateDictionaryData(data: DictionaryData) { - const res = await request.put>( - SERVER_API_URL + '/system/dict-data', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除字典数据 - */ -export async function removeDictionaryData(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/dict-data/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除字典数据 - */ -export async function removeDictionaryDataBatch(data: (number | undefined)[]) { - const res = await request.del>( - SERVER_API_URL + '/system/dict-data/batch', - { data } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/dictionary-data/model/index.ts b/src_bak/api/system/dictionary-data/model/index.ts deleted file mode 100644 index e1301bd..0000000 --- a/src_bak/api/system/dictionary-data/model/index.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { PageParam } from '@/api'; - -/** - * 字典数据 - */ -export interface DictionaryData { - // 字典数据id - dictDataId?: number; - // 字典id - dictId?: number; - // 字典数据标识 - dictDataCode?: string; - // 字典数据名称 - dictDataName?: string; - // 排序号 - sortNumber?: string; - // 备注 - comments?: string; - // 创建时间 - createTime?: string; -} - -/** - * 字典数据搜索条件 - */ -export interface DictionaryDataParam extends PageParam { - // 关键字 - keywords?: string; - // 字典标识 - dictCode?: string; - // 字典id - dictId?: number; -} diff --git a/src_bak/api/system/dictionary/index.ts b/src_bak/api/system/dictionary/index.ts deleted file mode 100644 index 6fb9aa4..0000000 --- a/src_bak/api/system/dictionary/index.ts +++ /dev/null @@ -1,61 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult } from '@/api/index'; -import type { Dictionary, DictionaryParam } from './model'; -import {SERVER_API_URL} from "@/utils/server"; - -/** - * 查询字典列表 - */ -export async function listDictionaries(params?: DictionaryParam) { - const res = await request.get>( - SERVER_API_URL + '/system/dictionary', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加字典 - */ -export async function addDictionary(data: Dictionary) { - const res = await request.post>( - SERVER_API_URL + '/system/dictionary', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改字典 - */ -export async function updateDictionary(data: Dictionary) { - const res = await request.put>( - SERVER_API_URL + '/system/dictionary', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除字典 - */ -export async function removeDictionary(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/dictionary/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/dictionary/model/index.ts b/src_bak/api/system/dictionary/model/index.ts deleted file mode 100644 index d72e7c2..0000000 --- a/src_bak/api/system/dictionary/model/index.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * 字典 - */ -export interface Dictionary { - // 字典id - dictId?: number; - // 字典标识 - dictCode?: string; - // 字典名称 - dictName?: string; - // 排序号 - sortNumber?: number; - // 备注 - comments?: string; - // 创建时间 - createTime?: string; - type?: number; - tenantId?: number; -} - -/** - * 字典搜索条件 - */ -export interface DictionaryParam { - dictCode?: string; - dictName?: string; - type?: number; - tenantId?: number; -} diff --git a/src_bak/api/system/environment/index.ts b/src_bak/api/system/environment/index.ts deleted file mode 100644 index e7a2919..0000000 --- a/src_bak/api/system/environment/index.ts +++ /dev/null @@ -1,125 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { Environment, EnvironmentParam } from './model/index'; -import {SERVER_API_URL} from "@/utils/server"; - -/** - * 分页查询应用 - */ -export async function pageEnvironment(params?: EnvironmentParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/environment/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询应用列表 - */ -export async function listEnvironment(params?: EnvironmentParam) { - const res = await request.get>( - SERVER_API_URL + '/system/environment', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询应用 - */ -export async function getEnvironment(id: number) { - const res = await request.get>( - SERVER_API_URL + '/system/environment/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改应用 - */ -export async function updateEnvironment(data: Environment) { - const res = await request.put>( - SERVER_API_URL + '/system/environment', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -// 排行榜 -export async function ranking(params?: EnvironmentParam) { - const res = await request.get>( - SERVER_API_URL + '/system/environment/ranking', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 检查IP是否存在 - */ -export async function checkExistence( - field: string, - value: string, - id?: number -) { - const res = await request.get>( - SERVER_API_URL + '/system/environment/existence', - { - params: { field, value, id } - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -// 搜索历史 -export async function searchHistory(params?: string) { - const res = await request.get>( - SERVER_API_URL + '/system/environment/search-history', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 制作插件 - */ -export async function createEnvironment(data: Environment) { - const res = await request.post>( - SERVER_API_URL + '/system/environment/environment', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/environment/model/index.ts b/src_bak/api/system/environment/model/index.ts deleted file mode 100644 index daa916b..0000000 --- a/src_bak/api/system/environment/model/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 插件 - */ -export interface Environment { - id?: number; - environmentName?: string; - environmentCode?: string; - brand?: string; - serverIp?: string; - modulesUrl?: string; - modulesApi?: string; - sortNumber?: number; - comments?: string; - status?: number; -} - -/** - * 插件搜索条件 - */ -export interface EnvironmentParam extends PageParam { - id: number; - environmentName: string; -} diff --git a/src_bak/api/system/file/index.ts b/src_bak/api/system/file/index.ts deleted file mode 100644 index b392097..0000000 --- a/src_bak/api/system/file/index.ts +++ /dev/null @@ -1,99 +0,0 @@ -import request from '@/utils/request'; -import Taro from '@tarojs/taro' -import dayjs from 'dayjs'; -import crypto from 'crypto-js'; -import {Base64} from 'js-base64'; -import {FileRecord} from "@/api/system/file/model"; -import {TenantId} from "@/config/app"; - -export async function uploadOssByPath(filePath: string) { - return new Promise(async (resolve) => { - const date = new Date(); - date.setMinutes(date.getMinutes() + 1); - const policyText = { - expiration: date.toISOString(), // 设置policy过期时间。 - conditions: [ - // 限制上传大小。 - ["content-length-range", 0, 1024 * 1024 * 1024], - ], - }; - let sts = Taro.getStorageSync('sts'); - const stsExpired = Taro.getStorageSync('stsExpiredAt'); - if (!sts || (stsExpired && dayjs().isBefore(dayjs(stsExpired)))) { - // @ts-ignore - const {data: {data: {credentials}}} = await request.get(`https://shop-api.websoft.top/api/oss/getSTSToken`) - Taro.setStorageSync('sts', credentials) - Taro.setStorageSync('stsExpiredAt', credentials.expiration) - sts = credentials - } - - const [filename, ext] = filePath.split('.') - const key = `headers/${filename + (Math.random() * 100000)}.${ext}` - const policy = Base64.encode(JSON.stringify(policyText)) - const signature = computeSignature(sts.accessKeySecret, policy) - Taro.uploadFile({ - url: 'https://oss.wsdns.cn', - name: 'file', - filePath, - formData: { - key, - policy, - OSSAccessKeyId: sts.accessKeyId, - signature, - 'x-oss-security-token': sts.securityToken - }, - success: () => { - resolve(`https://oss.wsdns.cn/${key}`) - } - }) - }) -} - -const computeSignature = (accessKeySecret: string, canonicalString: string): string => { - return crypto.enc.Base64.stringify(crypto.HmacSHA1(canonicalString, accessKeySecret)); -} - -/** - * 上传阿里云OSS - */ -export async function uploadFile() { - return new Promise(async (resolve: (result: FileRecord) => void, reject) => { - Taro.chooseImage({ - count: 1, - sizeType: ['compressed'], - sourceType: ['album', 'camera'], - success: async (res) => { - const tempFilePath = res.tempFilePaths[0]; - // 上传图片到OSS - Taro.uploadFile({ - url: 'https://shop-api.websoft.top/api/oss/upload', - filePath: tempFilePath, - name: 'file', - header: { - 'content-type': 'application/json', - TenantId - }, - success: (res) => { - try { - const data = JSON.parse(res.data); - if (data.code === 0) { - resolve(data.data) - } else { - reject(new Error(data.message || '上传失败')) - } - } catch (error) { - reject(new Error('解析响应数据失败')) - } - }, - fail: (err) => { - reject(new Error('上传请求失败')) - } - }) - }, - fail: (err) => { - reject(new Error('选择图片失败')) - } - }); - }) - -} diff --git a/src_bak/api/system/file/model/index.ts b/src_bak/api/system/file/model/index.ts deleted file mode 100644 index 95d276d..0000000 --- a/src_bak/api/system/file/model/index.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { PageParam } from '@/api/index'; - -/** - * 文件上传记录 - */ -export interface FileRecord { - // id - id: number; - // 文件名称 - name?: string; - // 文件存储路径 - path?: string; - // 文件大小 - length?: number; - // 文件类型 - contentType?: string; - // 上传人id - createUserId?: number; - // 分组ID - groupId?: number; - groupName?: string; - // 上传时间 - createTime?: string; - // 描述 - comments?: string; - // 文件访问地址 - url?: string; - // 文件缩略图访问地址 - thumbnail?: string; - // 文件下载地址 - downloadUrl?: string; - // 上传人账号 - createUsername?: string; - // 上传人名称 - createNickname?: string; - // 是否编辑状态 - isUpdate?: boolean; - // 商品SKU索引 - index?: any; -} - -/** - * 文件上传记录查询参数 - */ -export interface FileRecordParam extends PageParam { - name?: string; - path?: string; - contentType?: string; - createNickname?: string; - groupId?: number; - groupName?: string; - count?: number; - page?: number; -} diff --git a/src_bak/api/system/login-record/index.ts b/src_bak/api/system/login-record/index.ts deleted file mode 100644 index 613363d..0000000 --- a/src_bak/api/system/login-record/index.ts +++ /dev/null @@ -1,32 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { LoginRecord, LoginRecordParam } from './model'; -import {SERVER_API_URL} from "@/utils/server"; - -/** - * 分页查询登录日志 - */ -export async function pageLoginRecords(params: LoginRecordParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/login-record/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询登录日志列表 - */ -export async function listLoginRecords(params?: LoginRecordParam) { - const res = await request.get>( - SERVER_API_URL + '/system/login-record', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/login-record/model/index.ts b/src_bak/api/system/login-record/model/index.ts deleted file mode 100644 index 0836eb5..0000000 --- a/src_bak/api/system/login-record/model/index.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { PageParam } from '@/api'; - -/** - * 登录日志 - */ -export interface LoginRecord { - // 登录日志id - id: number; - // 用户账号 - username: string; - // 操作系统 - os: string; - // 设备名称 - device: string; - // 浏览器类型 - browser: string; - // ip地址 - ip: string; - // 操作类型, 0登录成功, 1登录失败, 2退出登录, 3续签token - loginType: number; - // 备注 - comments: string; - // 操作时间 - createTime: string; - // 用户昵称 - nickname: string; -} - -/** - * 登录日志搜索条件 - */ -export interface LoginRecordParam extends PageParam { - username?: string; - nickname?: string; - createTimeStart?: string; - createTimeEnd?: string; - loginType?: number; -} diff --git a/src_bak/api/system/menu/index.ts b/src_bak/api/system/menu/index.ts deleted file mode 100644 index 2e1e8bc..0000000 --- a/src_bak/api/system/menu/index.ts +++ /dev/null @@ -1,98 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult } from '@/api/index'; -import type { Menu, MenuParam } from './model'; -import {SERVER_API_URL} from "@/utils/server"; - -/** - * 查询菜单列表 - */ -export async function listMenus(params: MenuParam) { - const res = await request.get>( - SERVER_API_URL + '/system/menu', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加菜单 - */ -export async function addMenu(data: Menu) { - const res = await request.post>( - SERVER_API_URL + '/system/menu', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改菜单 - */ -export async function updateMenu(data: Menu) { - const res = await request.put>( - SERVER_API_URL + '/system/menu', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除菜单 - */ -export async function removeMenu(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/menu/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -// 菜单克隆 -export async function clone(data: Menu) { - const res = await request.post>( - SERVER_API_URL + '/system/menu/clone', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 制作插件 - */ -export async function createPlug(data: Menu) { - const res = await request.post>( - SERVER_API_URL + '/system/menu/plug', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -// 安装插件 -export async function installPlug(id?: number) { - const res = await request.get>( - SERVER_API_URL + '/system/menu/install/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/menu/model/index.ts b/src_bak/api/system/menu/model/index.ts deleted file mode 100644 index 4b52e95..0000000 --- a/src_bak/api/system/menu/model/index.ts +++ /dev/null @@ -1,67 +0,0 @@ -/** - * 菜单 - */ -export interface Menu { - // 菜单id - menuId?: number; - // 上级id, 0是顶级 - parentId?: number; - // 菜单名称 - title: string; - // 菜单路由地址 - path: string; - // 菜单组件地址 - component: string; - // 模块API - modulesUrl?: string; - // 模块ID - modules?: string; - // 菜单类型, 0菜单, 1按钮 - menuType?: number; - // 排序号 - sortNumber?: number; - // 权限标识 - authority?: string; - // 菜单图标 - icon?: string; - // 是否隐藏, 0否,1是(仅注册路由不显示左侧菜单) - hide?: number; - // 路由元信息 - meta?: string; - // 创建时间 - createTime?: string; - // 子菜单 - children?: Menu[]; - // 权限树回显选中状态, 0未选中, 1选中 - checked?: boolean; - // - key?: number; - // - value?: number; - // - parentIds?: number[]; - // - openType?: number; - disabled?: boolean; - // - appId?: number; - // - tenantId?: number; - tenantName?: string; - companyId?: number; - // 插件Api - plugUrl?: string; - label?: string; -} - -/** - * 菜单搜索参数 - */ -export interface MenuParam { - title?: string; - path?: string; - authority?: string; - parentId?: number; - menuType?: number; - hide?: number; -} diff --git a/src_bak/api/system/modules/index.ts b/src_bak/api/system/modules/index.ts deleted file mode 100644 index f121b92..0000000 --- a/src_bak/api/system/modules/index.ts +++ /dev/null @@ -1,118 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { Modules, ModulesParam } from './model'; -import {SERVER_API_URL} from "@/utils/server"; - -/** - * 分页查询角色module - */ -export async function pageModules(params) { - const res = await request.get>>( - SERVER_API_URL + '/system/modules/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询角色列表 - */ -export async function listModules(params?: ModulesParam) { - const res = await request.get>( - SERVER_API_URL + '/system/modules', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加角色 - */ -export async function addModules(data: Modules) { - const res = await request.post>( - SERVER_API_URL + '/system/modules', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改角色 - */ -export async function updateModules(data: Modules) { - const res = await request.put>( - SERVER_API_URL + '/system/modules', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除角色 - */ -export async function removeModules(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/modules/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除角色 - */ -export async function removeModulesBath(data: (number | undefined)[]) { - const res = await request.del>( - SERVER_API_URL + '/system/modules/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 获取角色分配的菜单 - */ -export async function listModulesMenus(modulesId?: number) { - const res = await request.get>( - SERVER_API_URL + '/system/modules-menu/' + modulesId - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改角色菜单 - */ -export async function updateModulesMenus(modulesId?: number, data?: number[]) { - const res = await request.put>( - SERVER_API_URL + '/system/modules-menu/' + modulesId, - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/modules/model/index.ts b/src_bak/api/system/modules/model/index.ts deleted file mode 100644 index a1cda9b..0000000 --- a/src_bak/api/system/modules/model/index.ts +++ /dev/null @@ -1,22 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 插件 - */ -export interface Modules { - id?: number; - modules?: string; - modulesUrl?: string; - sortNumber?: number; - comments?: string; - status?: number; -} - -/** - * 插件搜索条件 - */ -export interface ModulesParam extends PageParam { - id: number; - modules: string; - modulesUrl?: string; -} diff --git a/src_bak/api/system/operation-record/index.ts b/src_bak/api/system/operation-record/index.ts deleted file mode 100644 index 3a7ce76..0000000 --- a/src_bak/api/system/operation-record/index.ts +++ /dev/null @@ -1,32 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { OperationRecord, OperationRecordParam } from './model'; -import {SERVER_API_URL} from "@/utils/server"; - -/** - * 分页查询操作日志 - */ -export async function pageOperationRecords(params: OperationRecordParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/operation-record/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询操作日志列表 - */ -export async function listOperationRecords(params?: OperationRecordParam) { - const res = await request.get>( - SERVER_API_URL + '/system/operation-record', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/operation-record/model/index.ts b/src_bak/api/system/operation-record/model/index.ts deleted file mode 100644 index fc1425e..0000000 --- a/src_bak/api/system/operation-record/model/index.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { PageParam } from '@/api'; - -/** - * 操作日志 - */ -export interface OperationRecord { - // 操作日志id - id?: number; - // 用户id - userId?: number; - // 操作模块 - module: string; - // 操作功能 - description: string; - // 请求地址 - url: string; - // 请求方式 - requestMethod: string; - // 调用方法 - method: string; - // 请求参数 - params: string; - // 返回结果 - result: string; - // 异常信息 - error: string; - // 消耗时间, 单位毫秒 - spendTime: number; - // 操作系统 - os: string; - // 设备名称 - device: string; - // 浏览器类型 - browser: string; - // ip地址 - ip: string; - // 状态, 0成功, 1异常 - status: number; - // 操作时间 - createTime: string; - // 用户昵称 - nickname: string; - // 用户账号 - username: string; -} - -/** - * 操作日志搜索条件 - */ -export interface OperationRecordParam extends PageParam { - username?: string; - module?: string; - createTimeStart?: string; - createTimeEnd?: string; - status?: number; -} diff --git a/src_bak/api/system/order/index.ts b/src_bak/api/system/order/index.ts deleted file mode 100644 index c0237d6..0000000 --- a/src_bak/api/system/order/index.ts +++ /dev/null @@ -1,105 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { Order, OrderParam } from './model'; - -/** - * 分页查询订单 - */ -export async function pageOrder(params: OrderParam) { - const res = await request.get>>( - '/system/order/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询订单列表 - */ -export async function listOrder(params?: OrderParam) { - const res = await request.get>( - '/system/order', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加订单 - */ -export async function addOrder(data: Order) { - const res = await request.post>( - '/system/order', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改订单 - */ -export async function updateOrder(data: Order) { - const res = await request.put>( - '/system/order', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除订单 - */ -export async function removeOrder(id?: number) { - const res = await request.del>( - '/system/order/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除订单 - */ -export async function removeBatchOrder(data: (number | undefined)[]) { - const res = await request.del>( - '/system/order/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询订单 - */ -export async function getOrder(id: number) { - const res = await request.get>( - '/system/order/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/order/model/index.ts b/src_bak/api/system/order/model/index.ts deleted file mode 100644 index d403932..0000000 --- a/src_bak/api/system/order/model/index.ts +++ /dev/null @@ -1,93 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 订单 - */ -export interface Order { - // 订单号 - orderId?: number; - // 订单编号 - orderNo?: string; - // 订单类型,0产品 1插件 - type?: number; - // 下单渠道,0网站 1小程序 2其他 - channel?: number; - // 微信支付订单号 - transactionId?: string; - // 微信退款订单号 - refundOrder?: string; - // 使用的优惠券id - couponId?: number; - // 真实姓名 - realName?: string; - // 手机号码 - phone?: string; - // 订单总额 - totalPrice?: string; - // 减少的金额,使用VIP会员折扣、优惠券抵扣、优惠券折扣后减去的价格 - reducePrice?: string; - // 实际付款 - payPrice?: string; - // 用于统计 - price?: string; - // 价钱,用于积分赠送 - money?: string; - // 退款金额 - refundMoney?: string; - // 购买数量 - totalNum?: number; - // 0余额支付, 1微信支付,102微信Native,2会员卡支付,3支付宝,4现金,5POS机 - payType?: number; - // 0未付款,1已付款 - payStatus?: string; - // 0未完成,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款 - orderStatus?: number; - // 优惠类型:0无、1抵扣优惠券、2折扣优惠券、3、VIP月卡、4VIP年卡,5VIP次卡、6VIP会员卡、7IC月卡、8IC年卡、9IC次卡、10IC会员卡、11免费订单、12VIP充值卡、13IC充值卡、14VIP季卡、15IC季卡 - couponType?: number; - // 优惠说明 - couponDesc?: string; - // 二维码地址,保存订单号,支付成功后才生成 - qrcode?: string; - // 预约详情开始时间数组 - startTime?: string; - // 是否已开具发票:0未开发票,1已开发票,2不能开具发票 - isInvoice?: string; - // 发票流水号 - invoiceNo?: string; - // 支付时间 - payTime?: string; - // 退款时间 - refundTime?: string; - // 申请退款时间 - refundApplyTime?: string; - // 过期时间 - expirationTime?: string; - // 对账情况:0=未对账;1=已对账;3=已对账,金额对不上;4=未查询到该订单 - checkBill?: number; - // 订单是否已结算(0未结算 1已结算) - isSettled?: number; - // 系统版本号 0当前版本 value=其他版本 - version?: number; - // 用户id - userId?: number; - // 备注 - comments?: string; - // 排序号 - sortNumber?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 修改时间 - updateTime?: string; - // 创建时间 - createTime?: string; -} - -/** - * 订单搜索条件 - */ -export interface OrderParam extends PageParam { - orderId?: number; - keywords?: string; -} diff --git a/src_bak/api/system/orderGoods/index.ts b/src_bak/api/system/orderGoods/index.ts deleted file mode 100644 index e486800..0000000 --- a/src_bak/api/system/orderGoods/index.ts +++ /dev/null @@ -1,115 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { OrderGoods, OrderGoodsParam } from './model'; - -/** - * 分页查询订单商品 - */ -export async function pageOrderGoods(params: OrderGoodsParam) { - const res = await request.get>>( - '/shop/shop-goods/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询订单商品列表 - */ -export async function listOrderGoods(params?: OrderGoodsParam) { - const res = await request.get>( - '/shop/shop-goods', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加订单商品 - */ -export async function addOrderGoods(data: OrderGoods) { - const res = await request.post>( - '/shop/shop-goods', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改订单商品 - */ -export async function updateOrderGoods(data: OrderGoods) { - const res = await request.put>( - '/shop/shop-goods', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除订单商品 - */ -export async function removeOrderGoods(id?: number) { - const res = await request.del>( - '/shop/shop-goods/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除订单商品 - */ -export async function removeBatchOrderGoods(data: (number | undefined)[]) { - const res = await request.del>( - '/shop/shop-goods/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询订单商品 - */ -export async function getOrderGoods(id: number) { - const res = await request.get>( - '/shop/shop-goods/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量添加订单商品 - */ -export async function addBatchOrderGoods(data: OrderGoods[]) { - const res = await request.post>( - '/shop/shop-goods/batch', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/orderGoods/model/index.ts b/src_bak/api/system/orderGoods/model/index.ts deleted file mode 100644 index 948d932..0000000 --- a/src_bak/api/system/orderGoods/model/index.ts +++ /dev/null @@ -1,58 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 订单商品 - */ -export interface OrderGoods { - // 订单号 - id?: number; - // 订单类型,0商城 1应用插件 - type?: number; - // 订单ID - orderId?: number; - // 项目ID - itemId?: number; - // 商品ID - goodsId?: number; - // 实际付款 - payPrice?: string; - // 购买数量 - totalNum?: number; - // 0未付款,1已付款 - payStatus?: string; - // 0未完成,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款 - orderStatus?: number; - // 预约详情开始时间数组 - startTime?: string; - // 是否已开具发票:0未开发票,1已开发票,2不能开具发票 - isInvoice?: string; - // 发票流水号 - invoiceNo?: string; - // 支付时间 - payTime?: string; - // 过期时间 - expirationTime?: string; - // 用户id - userId?: number; - // 备注 - comments?: string; - // 排序号 - sortNumber?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 修改时间 - updateTime?: string; - // 创建时间 - createTime?: string; -} - -/** - * 订单商品搜索条件 - */ -export interface OrderGoodsParam extends PageParam { - id?: number; - orderId?: number; // 添加 orderId 属性 - keywords?: string; -} diff --git a/src_bak/api/system/organization/index.ts b/src_bak/api/system/organization/index.ts deleted file mode 100644 index 4a1f4af..0000000 --- a/src_bak/api/system/organization/index.ts +++ /dev/null @@ -1,86 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { Organization, OrganizationParam } from './model'; -import {SERVER_API_URL} from "@/utils/server"; - -/** - * 分页查询机构 - */ -export async function pageOrganizations(params: OrganizationParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/organization/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询机构列表 - */ -export async function listOrganizations(params?: OrganizationParam) { - const res = await request.get>( - SERVER_API_URL + '/system/organization', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加机构 - */ -export async function addOrganization(data: Organization) { - const res = await request.post>( - SERVER_API_URL + '/system/organization', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改机构 - */ -export async function updateOrganization(data: Organization) { - const res = await request.put>( - SERVER_API_URL + '/system/organization', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除机构 - */ -export async function removeOrganization(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/organization/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询机构 - */ -export async function getOrganization(id: number) { - const res = await request.get>( - SERVER_API_URL + '/system/organization/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/organization/model/index.ts b/src_bak/api/system/organization/model/index.ts deleted file mode 100644 index 1f9deaa..0000000 --- a/src_bak/api/system/organization/model/index.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { PageParam } from '@/api'; - -/** - * 机构 - */ -export interface Organization { - // 机构id - organizationId?: number; - // 上级id, 0是顶级 - parentId?: number; - // 机构名称 - organizationName?: string; - // 机构全称 - organizationFullName?: string; - // 机构代码 - organizationCode?: string; - // 机构类型(字典) - organizationType?: string; - // 排序号 - sortNumber?: number; - // 备注 - comments?: string; - // 创建时间 - createTime?: string; - // 机构类型名称 - organizationTypeName?: string; - // - key?: number; - // - value?: number; - // - title?: string; - children?: Organization[]; -} - -/** - * 机构搜索条件 - */ -export interface OrganizationParam extends PageParam { - organizationName?: string; - parentId?: number; -} diff --git a/src_bak/api/system/parameter/index.ts b/src_bak/api/system/parameter/index.ts deleted file mode 100644 index 52e206e..0000000 --- a/src_bak/api/system/parameter/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { Parameter, ParameterParam } from './model'; -import {SERVER_API_URL} from "@/utils/server"; - -/** - * 分页查询应用参数 - */ -export async function pageParameter(params: ParameterParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/parameter/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询应用参数列表 - */ -export async function listParameter(params?: ParameterParam) { - const res = await request.get>( - SERVER_API_URL + '/system/parameter', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加应用参数 - */ -export async function addParameter(data: Parameter) { - const res = await request.post>( - SERVER_API_URL + '/system/parameter', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改应用参数 - */ -export async function updateParameter(data: Parameter) { - const res = await request.put>( - SERVER_API_URL + '/system/parameter', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除应用参数 - */ -export async function removeParameter(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/parameter/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除应用参数 - */ -export async function removeBatchParameter(data: (number | undefined)[]) { - const res = await request.del>( - SERVER_API_URL + '/system/parameter/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询应用参数 - */ -export async function getParameter(id: number) { - const res = await request.get>( - SERVER_API_URL + '/system/parameter/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/parameter/model/index.ts b/src_bak/api/system/parameter/model/index.ts deleted file mode 100644 index ae3d159..0000000 --- a/src_bak/api/system/parameter/model/index.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 应用参数 - */ -export interface Parameter { - // 自增ID - id?: number; - // 参数名称 - name?: string; - // 参数内容 - value?: string; - // 备注 - comments?: string; - // 排序(数字越小越靠前) - sortNumber?: number; - // 状态, 0正常, 1待确认 - status?: number; - // 创建时间 - createTime?: string; - // 租户id - tenantId?: number; -} - -/** - * 应用参数搜索条件 - */ -export interface ParameterParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/system/payment/index.ts b/src_bak/api/system/payment/index.ts deleted file mode 100644 index 98fd2d4..0000000 --- a/src_bak/api/system/payment/index.ts +++ /dev/null @@ -1,144 +0,0 @@ -import request from '@/utils/request'; -import type {ApiResult, PageResult} from '@/api/index'; -import type {Payment, PaymentParam} from './model'; -import type {ShopOrder} from '@/api/shop/shopOrder/model'; - -/** - * 分页查询支付方式 - */ -export async function pagePayment(params: PaymentParam) { - const res = await request.get>>( - '/system/payment/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询支付方式列表 - */ -export async function listPayment(params?: PaymentParam) { - const res = await request.get>( - '/system/payment', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加支付方式 - */ -export async function addPayment(data: Payment) { - const res = await request.post>( - '/system/payment', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改支付方式 - */ -export async function updatePayment(data: Payment) { - const res = await request.put>( - '/system/payment', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除支付方式 - */ -export async function removePayment(id?: number) { - const res = await request.del>( - '/system/payment/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除支付方式 - */ -export async function removeBatchPayment(data: (number | undefined)[]) { - const res = await request.del>( - '/system/payment/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询支付方式 - */ -export async function getPayment(id: number) { - const res = await request.get>( - '/system/payment/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 生成支付二维码(微信native) - */ -export async function getNativeCode(data: ShopOrder) { - const res = await request.post>( - '/system/wx-native-pay/codeUrl', - data - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 使用余额支付 - */ -export async function payByBalance(data: ShopOrder) { - const res = await request.post>( - '/system/payment/balancePay', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 选择支付方式 - */ -export async function selectPayment(params?: PaymentParam) { - const res = await request.get>( - '/system/payment/select', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/payment/model/index.ts b/src_bak/api/system/payment/model/index.ts deleted file mode 100644 index 6a4ecfe..0000000 --- a/src_bak/api/system/payment/model/index.ts +++ /dev/null @@ -1,55 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 支付方式 - */ -export interface Payment { - // ID - id?: number; - // 支付方式 - name?: string; - // 支付类型 - type?: number; - // 标识 - code?: string; - // 支付图标 - image?: string; - // 微信商户号类型 1普通商户2子商户 - wechatType?: number; - // 应用ID - appId?: string; - // 商户号 - mchId?: string; - // 设置APIv3密钥 - apiKey?: string; - // 证书文件 (CERT) - apiclientCert?: string; - // 证书文件 (KEY) - apiclientKey?: string; - // 商户证书序列号 - merchantSerialNumber?: string; - // 支付结果通过 - notifyUrl?: string; - // 备注 - comments?: string; - // 文章排序(数字越小越靠前) - sortNumber?: number; - // 状态, 0启用, 1禁用 - status?: boolean; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 注册时间 - createTime?: string; - // 修改时间 - updateTime?: string; -} - -/** - * 支付方式搜索条件 - */ -export interface PaymentParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/system/plug/index.ts b/src_bak/api/system/plug/index.ts deleted file mode 100644 index 997736d..0000000 --- a/src_bak/api/system/plug/index.ts +++ /dev/null @@ -1,125 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { Plug, PlugParam } from './model/index'; -import {SERVER_API_URL} from "@/utils/server"; - -/** - * 分页查询应用 - */ -export async function pagePlug(params: PlugParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/plug/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询应用列表 - */ -export async function listPlug(params?: PlugParam) { - const res = await request.get>( - SERVER_API_URL + '/system/plug', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询应用 - */ -export async function getPlug(id: number) { - const res = await request.get>( - SERVER_API_URL + '/system/plug/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改应用 - */ -export async function updatePlug(data: Plug) { - const res = await request.put>( - SERVER_API_URL + '/system/plug', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -// 排行榜 -export async function ranking(params?: PlugParam) { - const res = await request.get>( - SERVER_API_URL + '/system/plug/ranking', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 检查IP是否存在 - */ -export async function checkExistence( - field: string, - value: string, - id?: number -) { - const res = await request.get>( - SERVER_API_URL + '/system/plug/existence', - { - params: { field, value, id } - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -// 搜索历史 -export async function searchHistory(params?: string) { - const res = await request.get>( - SERVER_API_URL + '/system/plug/search-history', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 制作插件 - */ -export async function createPlug(data: Plug) { - const res = await request.post>( - SERVER_API_URL + '/system/plug/plug', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/plug/model/index.ts b/src_bak/api/system/plug/model/index.ts deleted file mode 100644 index e67242f..0000000 --- a/src_bak/api/system/plug/model/index.ts +++ /dev/null @@ -1,67 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 插件 - */ -export interface Plug { - plugId?: number; - plugName?: string; - plugCode?: string; - // 菜单id - menuId?: number; - // 上级id, 0是顶级 - parentId?: number; - // 菜单名称 - title?: string; - // 菜单路由地址 - path?: string; - // 菜单组件地址 - component?: string; - // 菜单类型, 0菜单, 1按钮 - menuType?: number; - // 排序号 - sortNumber?: number; - // 权限标识 - authority?: string; - // 菜单图标 - icon?: string; - // 是否隐藏, 0否,1是(仅注册路由不显示左侧菜单) - hide?: number; - // 路由元信息 - meta?: string; - score?: number; - price?: number; - // 创建时间 - createTime?: string; - // 子菜单 - children?: Plug[]; - // 权限树回显选中状态, 0未选中, 1选中 - checked?: boolean; - shortName?: string; - comments?: string; - content?: string; - // - key?: number; - // - value?: number; - // - parentIds?: number[]; - // - openType?: number; - // - userId?: number; - // - appId?: number; - status?: number; - tenantId?: number; -} - -/** - * 插件搜索条件 - */ -export interface PlugParam extends PageParam { - title?: string; - path?: string; - authority?: string; - parentId?: number; -} diff --git a/src_bak/api/system/role/index.ts b/src_bak/api/system/role/index.ts deleted file mode 100644 index 9cadf52..0000000 --- a/src_bak/api/system/role/index.ts +++ /dev/null @@ -1,119 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { Role, RoleParam } from './model'; -import type { Menu } from '../menu/model'; -import {SERVER_API_URL} from "@/utils/server"; - -/** - * 分页查询角色 - */ -export async function pageRoles(params: RoleParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/role/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询角色列表 - */ -export async function listRoles(params?: RoleParam) { - const res = await request.get>( - SERVER_API_URL + '/system/role', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加角色 - */ -export async function addRole(data: Role) { - const res = await request.post>( - SERVER_API_URL + '/system/role', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改角色 - */ -export async function updateRole(data: Role) { - const res = await request.put>( - SERVER_API_URL + '/system/role', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除角色 - */ -export async function removeRole(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/role/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除角色 - */ -export async function removeRoles(data: (number | undefined)[]) { - const res = await request.del>( - SERVER_API_URL + '/system/role/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 获取角色分配的菜单 - */ -export async function listRoleMenus(roleId?: number) { - const res = await request.get>( - SERVER_API_URL + '/system/role-menu/' + roleId - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改角色菜单 - */ -export async function updateRoleMenus(roleId?: number, data?: number[]) { - const res = await request.put>( - SERVER_API_URL + '/system/role-menu/' + roleId, - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/role/model/index.ts b/src_bak/api/system/role/model/index.ts deleted file mode 100644 index d4c9a50..0000000 --- a/src_bak/api/system/role/model/index.ts +++ /dev/null @@ -1,27 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 角色 - */ -export interface Role { - // 角色id - roleId?: number; - // 角色标识 - roleCode?: string; - // 角色名称 - roleName?: string; - sortNumber?: any; - // 备注 - comments?: any; - // 创建时间 - createTime?: string; -} - -/** - * 角色搜索条件 - */ -export interface RoleParam extends PageParam { - roleName?: string; - roleCode?: string; - comments?: string; -} diff --git a/src_bak/api/system/setting/index.ts b/src_bak/api/system/setting/index.ts deleted file mode 100644 index 3719833..0000000 --- a/src_bak/api/system/setting/index.ts +++ /dev/null @@ -1,126 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { Setting, SettingParam } from './model'; -import {SERVER_API_URL} from "@/utils/server"; - -/** - * 分页查询设置 - */ -export async function pageSetting(params: SettingParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/setting/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询设置列表 - */ -export async function listSetting(params?: SettingParam) { - const res = await request.get>( - SERVER_API_URL + '/system/setting', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询 - */ -export async function getSetting(id: number) { - const res = await request.get>( - SERVER_API_URL + '/system/setting/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加设置 - */ -export async function addSetting(data: Setting) { - const res = await request.post>( - SERVER_API_URL + '/system/setting', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改设置 - */ -export async function updateSetting(data: Setting) { - const res = await request.put>( - SERVER_API_URL + '/system/setting', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除设置 - */ -export async function removeSetting(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/setting/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除设置 - */ -export async function removeBatchSetting(data: (number | undefined)[]) { - const res = await request.del>( - SERVER_API_URL + '/system/setting/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 检查IP是否存在 - */ -export async function checkExistence( - field: string, - value: string, - id?: number -) { - const res = await request.get>( - SERVER_API_URL + '/system/setting/existence', - { - params: { field, value, id } - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/setting/model/index.ts b/src_bak/api/system/setting/model/index.ts deleted file mode 100644 index 879a9e9..0000000 --- a/src_bak/api/system/setting/model/index.ts +++ /dev/null @@ -1,127 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 系统设置 - */ -export interface Setting { - // 公共字段 - settingId?: number; - settingKey?: string; - content?: string; - comments?: string; - tenantName?: string; - tenantId?: string | null; - - // 设置信息 - siteName?: string; - fullName?: string; - tenantCode?: string; - domain?: string; - remarks?: string; - icp?: string; - copyright?: string; - keyword?: string; - phone?: string; - company?: string; - address?: string; - email?: string; - support?: string; - logo?: string; - - // 注册设置 - roleId?: number; - openWxAuth?: number; - openWxBindPhone?: number; - openWxofficialAuth?: number; - openWxofficialBindPhone?: number; - tokenExpireTime?: number; - - // 短信设置 - type?: number; - accessKeyId?: string; - accessKeySecret?: string; - sign?: string; - isNoticeUser?: string; - userTemplateId?: string; - merchantTemplateId?: string; - isNoticeMerchant?: string; - merchantMobiles?: string; - - // 支付设置 - payMethod?: string; - signMode?: string; - alipayAppId?: string; - signType?: string; - appCertPublicKey?: string; - alipayCertPublicKey?: string; - alipayRootCert?: string; - alipayPublicKey?: string; - privateKey?: string; - decryptKey?: string; - balanceIsEnable?: boolean; - wechatIsEnable?: boolean; - alipayIsEnable?: boolean; - wechatType?: string; - mchId?: number; - wechatAppId?: string; - wechatApiKey?: string; - apiclientCert?: string; - apiclientKey?: string; - spAppId?: string; - spMchId?: string; - spApiKey?: string; - spSubAppId?: string; - spSubMchId?: string; - spApiclientCert?: string; - spApiclientKey?: string; - merchantSerialNumber?: string; - - // 微信公众号/小程序设置 - appId?: string; - appSecret?: string; - wxOfficialAccount?: string; - originalId?: string; - - // 企业微信参数 - suiteId?: string; - secret?: string; - corpId?: string; - token?: string; - encodingAESKey?: string; - - // 打印设置 - isOpenPrinter?: string; - printerType?: string; - printerStatus?: string; - printerUser?: string; - printerUserKey?: string; - printerCode?: string; - printerKey?: string; - printerTimes?: string; - - // chatGPT - chatKey?: string; - - // 清除缓存 - clearCache?: string; - - // 主题 - theme?: string; - - // 云存储 - uploadMethod?: any; - fileUrl?: string; - bucketName?: string; - bucketEndpoint?: string; - bucketDomain?: string; - // accessKeyId?: string; 引用上面的 - // accessKeySecret?: string; 引用上面的 -} - -/** - * 系统设置搜索条件 - */ -export interface SettingParam extends PageParam { - settingId?: number; - settingKey?: string; -} diff --git a/src_bak/api/system/tenant/index.ts b/src_bak/api/system/tenant/index.ts deleted file mode 100644 index 1d54bf4..0000000 --- a/src_bak/api/system/tenant/index.ts +++ /dev/null @@ -1,178 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { Tenant, TenantParam } from './model'; -import { Menu } from '@/api/system/menu/model'; -import {SERVER_API_URL} from "@/utils/server"; - -/** - * 分页查询租户 - */ -export async function pageTenant(params: TenantParam) { - // 租户列表查询需要传一个key - // params.tenantCode = 'ZAcxbdmDQFwUKC3e'; - const res = await request.get>>( - SERVER_API_URL + '/system/tenant/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询租户资料 - */ -export async function profile(params?: TenantParam) { - const res = await request.get>( - SERVER_API_URL + '/system/tenant/profile', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询租户列表 - */ -export async function listTenant(params?: TenantParam) { - const res = await request.get>( - SERVER_API_URL + '/system/tenant', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询 - */ -export async function getTenant(id: number) { - const res = await request.get>( - SERVER_API_URL + '/system/tenant/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加租户 - */ -export async function addTenant(data: Tenant) { - const res = await request.post>( - SERVER_API_URL + '/system/tenant', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改租户 - */ -export async function updateTenant(data: Tenant) { - const res = await request.put>( - SERVER_API_URL + '/system/tenant', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除租户 - */ -export async function removeTenant(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/tenant/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除租户 - */ -export async function removeBatchTenant(data: (number | undefined)[]) { - const res = await request.del>( - SERVER_API_URL + '/system/tenant/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 重置用户密码 - */ -export async function updateTenantPassword( - tenantId?: number, - password?: string -) { - const res = await request.put>( - SERVER_API_URL + '/system/tenant/password', - { - tenantId, - password - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 检查IP是否存在 - */ -export async function checkExistence( - field: string, - value: string, - id?: number -) { - const res = await request.get>( - SERVER_API_URL + '/system/tenant/existence', - { - params: { field, value, id } - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 租户初始化 - */ -export async function initialization(roleId?: number) { - const res = await request.get>( - SERVER_API_URL + '/system/tenant/role-menu/' + roleId - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/tenant/model/index.ts b/src_bak/api/system/tenant/model/index.ts deleted file mode 100644 index de007b2..0000000 --- a/src_bak/api/system/tenant/model/index.ts +++ /dev/null @@ -1,46 +0,0 @@ -import type { PageParam } from '@/api'; -import { Company } from '@/api/system/company/model'; - -/** - * 租户 - */ -export interface Tenant { - // 租户id - tenantId?: number; - // 租户名称 - tenantName?: string; - // 应用ID - appId?: string; - // 应用秘钥 - appSecret?: string; - // logo - logo?: string; - // 企业名称 - companyName?: string; - // 关联客户ID - companyId?: string; - // 备注 - comments?: string; - // 创建时间 - createTime?: string; - // 状态 - status?: number; - // - password?: string; - // 企业信息 - company?: Company | null; -} - -/** - * 租户搜索条件 - */ -export interface TenantParam extends PageParam { - tenantName?: string; - appId?: string; - companyId?: number; - companyName?: string; - version?: string; - province?: string; - city?: string; - tenantCode?: string; -} diff --git a/src_bak/api/system/url/index.ts b/src_bak/api/system/url/index.ts deleted file mode 100644 index c1724ec..0000000 --- a/src_bak/api/system/url/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { Url, UrlParam } from './model'; -import {SERVER_API_URL} from '@/utils/server'; - -/** - * 分页查询应用域名 - */ -export async function pageUrl(params: UrlParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/url/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询应用域名列表 - */ -export async function listUrl(params?: UrlParam) { - const res = await request.get>( - SERVER_API_URL + '/system/url', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加应用域名 - */ -export async function addUrl(data: Url) { - const res = await request.post>( - SERVER_API_URL + '/system/url', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改应用域名 - */ -export async function updateUrl(data: Url) { - const res = await request.put>( - SERVER_API_URL + '/system/url', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除应用域名 - */ -export async function removeUrl(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/url/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除应用域名 - */ -export async function removeBatchUrl(data: (number | undefined)[]) { - const res = await request.del>( - SERVER_API_URL + '/system/url/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询应用域名 - */ -export async function getUrl(id: number) { - const res = await request.get>( - SERVER_API_URL + '/system/url/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/url/model/index.ts b/src_bak/api/system/url/model/index.ts deleted file mode 100644 index 1564067..0000000 --- a/src_bak/api/system/url/model/index.ts +++ /dev/null @@ -1,37 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 应用域名 - */ -export interface Url { - // 自增ID - id?: number; - // 域名类型 - type?: string; - // 域名 - domain?: string; - // 账号 - account?: string; - // 密码 - password?: string; - // 二维码 - qrcode?: string; - // 备注 - comments?: string; - // 排序(数字越小越靠前) - sortNumber?: number; - // 状态, 0正常, 1待确认 - status?: number; - // 创建时间 - createTime?: string; - // 租户id - tenantId?: number; -} - -/** - * 应用域名搜索条件 - */ -export interface UrlParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/system/user-collection/index.ts b/src_bak/api/system/user-collection/index.ts deleted file mode 100644 index 1459927..0000000 --- a/src_bak/api/system/user-collection/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { UserCollection, UserCollectionParam } from './model'; -import {SERVER_API_URL} from "@/utils/server"; - -/** - * 分页查询我的收藏 - */ -export async function pageUserCollection(params: UserCollectionParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/user-collection/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询我的收藏列表 - */ -export async function listUserCollection(params?: UserCollectionParam) { - const res = await request.get>( - SERVER_API_URL + '/system/user-collection', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加我的收藏 - */ -export async function addUserCollection(data: UserCollection) { - const res = await request.post>( - SERVER_API_URL + '/system/user-collection', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改我的收藏 - */ -export async function updateUserCollection(data: UserCollection) { - const res = await request.put>( - SERVER_API_URL + '/system/user-collection', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除我的收藏 - */ -export async function removeUserCollection(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/user-collection/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除我的收藏 - */ -export async function removeBatchUserCollection(data: (number | undefined)[]) { - const res = await request.del>( - SERVER_API_URL + '/system/user-collection/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询我的收藏 - */ -export async function getUserCollection(id: number) { - const res = await request.get>( - SERVER_API_URL + '/system/user-collection/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/user-collection/model/index.ts b/src_bak/api/system/user-collection/model/index.ts deleted file mode 100644 index ebd88c9..0000000 --- a/src_bak/api/system/user-collection/model/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 我的收藏 - */ -export interface UserCollection { - // 主键ID - id?: number; - // 租户ID - tid?: number; - // 用户ID - userId?: number; - // 租户id - tenantId?: number; - // 注册时间 - createTime?: string; -} - -/** - * 我的收藏搜索条件 - */ -export interface UserCollectionParam extends PageParam { - id?: number; - keywords?: string; -} diff --git a/src_bak/api/system/user-file/index.ts b/src_bak/api/system/user-file/index.ts deleted file mode 100644 index cff199a..0000000 --- a/src_bak/api/system/user-file/index.ts +++ /dev/null @@ -1,89 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { UserFile, UserFileParam } from './model'; -import {SERVER_API_URL} from "@/utils/server"; - -/** - * 分页查询用户文件 - */ -export async function pageUserFiles(params: UserFileParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/user-file/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询用户文件列表 - */ -export async function listUserFiles(params: UserFileParam) { - const res = await request.get>( - SERVER_API_URL + '/system/user-file', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加用户文件 - */ -export async function addUserFile(data: UserFile) { - const res = await request.post>( - SERVER_API_URL + '/system/user-file', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改用户文件 - */ -export async function updateUserFile(data: UserFile) { - const res = await request.put>( - SERVER_API_URL + '/system/user-file', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除用户文件 - */ -export async function removeUserFile(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/user-file/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除用户文件 - */ -export async function removeUserFiles(data: (number | undefined)[]) { - const res = await request.del>( - SERVER_API_URL + '/system/user-file/batch', - { data } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/user-file/model/index.ts b/src_bak/api/system/user-file/model/index.ts deleted file mode 100644 index ca51256..0000000 --- a/src_bak/api/system/user-file/model/index.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { PageParam } from '@/api'; - -/** - * 用户文件 - */ -export interface UserFile { - // id - id?: number; - // 用户id - userId?: number; - // 文件名称 - name?: string; - // 是否是文件夹, 0否, 1是 - isDirectory?: number; - // 上级id - parentId?: number; - // 文件存储路径 - path?: string; - // 文件大小 - length?: number; - // 文件类型 - contentType?: string; - // 上传时间 - createTime?: string; - // 文件访问地址 - url?: string; - // 文件缩略图访问地址 - thumbnail?: string; - // 文件下载地址 - downloadUrl?: string; -} - -/** - * 用户文件查询参数 - */ -export interface UserFileParam extends PageParam { - name?: string; - parentId?: number; -} diff --git a/src_bak/api/system/user-group/index.ts b/src_bak/api/system/user-group/index.ts deleted file mode 100644 index 004db57..0000000 --- a/src_bak/api/system/user-group/index.ts +++ /dev/null @@ -1,120 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { Group, GroupParam } from '@/api/system/user-group/model'; -import {SERVER_API_URL} from "@/utils/server"; -/** - * 分页查询仓库 - */ -export async function pageGroup(params: GroupParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/user-group/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询仓库列表 - */ -export async function listGroup(params?: GroupParam) { - const res = await request.get>( - SERVER_API_URL + '/system/user-group', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加仓库 - */ -export async function addGroup(data: Group) { - const res = await request.post>( - SERVER_API_URL + '/system/user-group', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改仓库 - */ -export async function updateGroup(data: Group) { - const res = await request.put>( - SERVER_API_URL + '/system/user-group', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 绑定仓库 - */ -export async function bindGroup(data: Group) { - const res = await request.put>( - SERVER_API_URL + '/system/user-group/bind', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量添加设备 - */ -export async function addBatchGroup(data: Group[]) { - const res = await request.post>( - SERVER_API_URL + '/system/user-group/batch', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除仓库 - */ -export async function removeGroup(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/user-group/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除仓库 - */ -export async function removeBatchGroup(data: (number | undefined)[]) { - const res = await request.del>( - SERVER_API_URL + '/system/user-group/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/user-group/model/index.ts b/src_bak/api/system/user-group/model/index.ts deleted file mode 100644 index dc858cb..0000000 --- a/src_bak/api/system/user-group/model/index.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { PageParam } from '@/api'; - -export interface Group { - groupId?: number; - name?: string; - status?: number; - comments?: any; - sortNumber?: number; - deleted?: number; - tenantId?: number; - createTime?: string; - updateTime?: string; -} - -/** - * 搜索条件 - */ -export interface GroupParam extends PageParam { - groupId?: number; - name?: string; - status?: number; - keywords?: string; -} diff --git a/src_bak/api/system/user/balance-log/index.ts b/src_bak/api/system/user/balance-log/index.ts deleted file mode 100644 index e8c7a57..0000000 --- a/src_bak/api/system/user/balance-log/index.ts +++ /dev/null @@ -1,31 +0,0 @@ -import request from '@/utils/request' -import type { ApiResult, PageResult } from '@/api' -import type { UserBalanceLog, UserBalanceLogParam } from './model' - -/** - * 分页查询用户余额日志 - */ -export async function pageUserBalanceLog(params?: UserBalanceLogParam): Promise> { - const res = await request.get>>( - '/shop/shop-user-balance-log/page', - params - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message)) -} - -/** - * 查询全部用户余额日志 - */ -export async function listUserBalanceLog(params?: UserBalanceLogParam): Promise { - const res = await request.get>( - '/shop/shop-user-balance-log', - params - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message)) -} diff --git a/src_bak/api/system/user/balance-log/model/index.ts b/src_bak/api/system/user/balance-log/model/index.ts deleted file mode 100644 index 29ea8db..0000000 --- a/src_bak/api/system/user/balance-log/model/index.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * 用户余额日志类型定义 - */ - -export interface UserBalanceLog { - logId: number - userId: number - scene: number - money: string - balance: string - orderNo: string - describe?: string - comments?: string - remark?: string - createTime: string -} - -export interface UserBalanceLogParam { - page?: number - limit?: number - userId?: number - scene?: number -} diff --git a/src_bak/api/system/user/balance.ts b/src_bak/api/system/user/balance.ts deleted file mode 100644 index 0d47240..0000000 --- a/src_bak/api/system/user/balance.ts +++ /dev/null @@ -1,23 +0,0 @@ -import request from '@/utils/request' -import type { ApiResult } from '@/api' -import type { UserBalance } from './model' - -/** - * 获取当前用户余额信息(跨库读取 gxwebsoft_core.sys_user) - * 通过 paopao-api 本地 /auth/user-balance 接口,无需跨域请求 core 系统 - */ -export async function getUserBalance(): Promise { - const res = await request.get>( - '/auth/user-balance' - ) - if (res.code === 0 && res.data) { - const data = res.data - return { - balance: data.balance != null ? String(data.balance) : '0', - frozenBalance: '0', - totalIncome: '0', - totalExpense: '0', - } - } - return Promise.reject(new Error(res.message || '获取余额失败')) -} diff --git a/src_bak/api/system/user/index.ts b/src_bak/api/system/user/index.ts deleted file mode 100644 index 05a8e02..0000000 --- a/src_bak/api/system/user/index.ts +++ /dev/null @@ -1,261 +0,0 @@ -import request from '@/utils/request'; -import type {ApiResult, PageResult} from '@/api'; -import type {User, UserParam} from './model'; -import type { UserBalance } from './model'; -import {SERVER_API_URL} from "@/utils/server"; - -// 导出用户余额相关 -export * from './balance'; -export * from './balance-log'; -export * from './points'; -export * from './withdraw'; - -// 用户余额类型 -export type { UserBalance }; - -/** - * 分页查询用户 - */ -export async function pageUsers(params: UserParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/user/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询用户列表 - */ -export async function listUsers(params?: UserParam) { - const res = await request.get>( - SERVER_API_URL + '/system/user', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询用户列表 - */ -export async function getStaffs(params?: UserParam) { - const res = await request.get>( - SERVER_API_URL + '/system/user', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询用户列表 - */ -export async function getCompanyList(params?: UserParam) { - const res = await request.get>( - SERVER_API_URL + '/system/user', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询用户 - */ -export async function getUser(id: number) { - const res = await request.get>( - SERVER_API_URL + '/system/user/' + id, - {} - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加用户 - */ -export async function addUser(data: User) { - const res = await request.post>( - SERVER_API_URL + '/system/user', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改用户 - */ -export async function updateUser(data: User) { - const res = await request.put>( - SERVER_API_URL + '/system/user', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除用户 - */ -export async function removeUser(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/user/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除用户 - */ -export async function removeUsers(data: (number | undefined)[]) { - const res = await request.del>( - SERVER_API_URL + '/system/user/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改用户状态 - */ -export async function updateUserStatus(userId?: number, status?: number) { - const res = await request.put>( - SERVER_API_URL + '/system/user/status', - { - userId, - status - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改推荐状态 - */ -export async function updateUserRecommend(form:any) { - const res = await request.put>( - SERVER_API_URL + '/system/user/recommend', - form - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 重置用户密码 - */ -export async function updateUserPassword(userId?: number, password = '123456') { - const res = await request.put>( - SERVER_API_URL + '/system/user/password', - { - userId, - password - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 导入用户 - */ -export async function importUsers(file: File) { - const formData = new FormData(); - formData.append('file', file); - const res = await request.post>( - SERVER_API_URL + '/system/user/import', - formData - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 检查用户是否存在 - */ -export async function checkExistence( - field: string, - value: string, - id?: number -) { - const res = await request.get>( - SERVER_API_URL + '/system/user/existence', - { - params: {field, value, id} - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 统计用户余额(使用 paopao-api) - */ -export async function countUserBalance(params?: UserParam) { - const res = await request.get>( - SERVER_API_URL + '/system/user/countUserBalance', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - - -/** - * 选择管理员账号登录 - * @param params - */ -export async function listAdminsByPhoneAll(params?: UserParam) { - const res = await request.get>( - SERVER_API_URL + '/system/user/listAdminsByPhoneAll', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/user/model/count.ts b/src_bak/api/system/user/model/count.ts deleted file mode 100644 index 3b0ef49..0000000 --- a/src_bak/api/system/user/model/count.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 用户 - */ -export interface Count { - balance?: string; -} - -/** - * 用户搜索条件 - */ -export interface UserParam extends PageParam { - organizationId?: number; -} diff --git a/src_bak/api/system/user/model/index.ts b/src_bak/api/system/user/model/index.ts deleted file mode 100644 index 378472b..0000000 --- a/src_bak/api/system/user/model/index.ts +++ /dev/null @@ -1,35 +0,0 @@ -/** - * 用户余额类型定义 - */ - -export interface UserBalance { - balance: string - frozenBalance: string - totalIncome: string - totalExpense: string -} - -/** - * 用户信息(来自 core 系统 sys_user 表) - */ -export interface User { - userId?: number - id?: number - username?: string - realName?: string - nickname?: string - avatar?: string - phone?: string - mobile?: string - email?: string - gender?: number - balance?: string | number - points?: number - memberLevelId?: number - memberLevelName?: string - status?: number - createTime?: string - updateTime?: string - /** 扩展字段,兼容后端返回的额外属性 */ - [key: string]: unknown -} diff --git a/src_bak/api/system/user/points/index.ts b/src_bak/api/system/user/points/index.ts deleted file mode 100644 index 468a671..0000000 --- a/src_bak/api/system/user/points/index.ts +++ /dev/null @@ -1,44 +0,0 @@ -import request from '@/utils/request' -import type { ApiResult, PageResult } from '@/api' -import type { UserPointsLog } from './model' - -/** - * 用户积分统计数据 - */ -export interface UserPointsInfo { - points: number // 当前积分 - totalEarned: number // 累计获得 - totalUsed: number // 累计使用 - expiringSoon: number // 即将过期 -} - -/** - * 获取用户积分信息(包含汇总统计) - */ -export async function getUserPointsInfo(): Promise { - const res = await request.get>( - '/user/points' - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message)) -} - -/** - * 分页查询用户积分日志 - */ -export async function pageUserPointsLog(params?: { - page?: number - limit?: number - type?: number -}): Promise> { - const res = await request.get>>( - '/shop/shop-user-points-log/page', - params - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message)) -} diff --git a/src_bak/api/system/user/points/model/index.ts b/src_bak/api/system/user/points/model/index.ts deleted file mode 100644 index 8c2a809..0000000 --- a/src_bak/api/system/user/points/model/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * 用户积分类型定义 - */ - -export interface UserPointsLog { - logId: number - userId: number - points: number - type: number // 1-获得, 2-消费, 3-过期, 4-调整 - reason?: string - orderId?: number - createTime: string -} diff --git a/src_bak/api/system/user/withdraw/index.ts b/src_bak/api/system/user/withdraw/index.ts deleted file mode 100644 index 08d471c..0000000 --- a/src_bak/api/system/user/withdraw/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -import request from '@/utils/request' -import type { ApiResult } from '@/api' -import type { UserWithdraw, WithdrawRequest } from './model' - -/** - * 创建用户提现申请 - * 注意:后端可能需要实现此接口 - */ -export async function createUserWithdraw(data: WithdrawRequest): Promise { - const res = await request.post>( - '/shop/shop-user-withdraw/create', - data - ) - if (res.code === 0 && res.data) { - return res.data - } - return Promise.reject(new Error(res.message)) -} diff --git a/src_bak/api/system/user/withdraw/model/index.ts b/src_bak/api/system/user/withdraw/model/index.ts deleted file mode 100644 index 29aa100..0000000 --- a/src_bak/api/system/user/withdraw/model/index.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * 用户提现类型定义 - */ - -export interface UserWithdraw { - id?: number - userId?: number - amount?: string - withdrawType?: number // 0-微信零钱, 1-银行卡, 2-支付宝 - accountInfo?: string - status?: number - createTime?: string -} - -export interface WithdrawRequest { - amount: string - withdrawType: number - accountInfo?: string -} diff --git a/src_bak/api/system/userRole/index.ts b/src_bak/api/system/userRole/index.ts deleted file mode 100644 index ecaefcc..0000000 --- a/src_bak/api/system/userRole/index.ts +++ /dev/null @@ -1,47 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult } from '@/api/index'; -import type { UserRole, UserRoleParam } from './model'; -import {SERVER_API_URL} from "@/utils/server"; - -/** - * 查询用户角色 - */ -export async function listUserRole(params?: UserRoleParam) { - const res = await request.get>( - SERVER_API_URL + '/system/user-role', - params - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改用户角色 - */ -export async function updateUserRole(data: UserRole) { - const res = await request.put>( - SERVER_API_URL + '/system/user-role', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 新增用户角色 - * 说明:部分后端实现为 POST 新增、PUT 修改;这里补齐 API 以便新用户无角色时可以创建默认角色。 - */ -export async function addUserRole(data: UserRole) { - const res = await request.post>( - SERVER_API_URL + '/system/user-role', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/userRole/model/index.ts b/src_bak/api/system/userRole/model/index.ts deleted file mode 100644 index 835bbae..0000000 --- a/src_bak/api/system/userRole/model/index.ts +++ /dev/null @@ -1,30 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 用户 - */ -export interface UserRole { - id?: number; - // 用户id - userId?: number; - // 角色ID - roleId?: number; - // 创建时间 - createTime?: string; - // 修改时间 - updateTime?: string; - // 角色名称 - roleName?: string; - // 角色标识 - roleCode?: string; - // 租户ID - tenantId?: number; -} - -/** - * 用户搜索条件 - */ -export interface UserRoleParam extends PageParam { - keywords?: any; - userId?: number; -} diff --git a/src_bak/api/system/userVerify/index.ts b/src_bak/api/system/userVerify/index.ts deleted file mode 100644 index 21416e7..0000000 --- a/src_bak/api/system/userVerify/index.ts +++ /dev/null @@ -1,130 +0,0 @@ -import request from '@/utils/request'; -import type {ApiResult, PageResult} from '@/api/index'; -import type {UserVerify, UserVerifyParam} from './model'; -import {SERVER_API_URL} from "@/utils/server"; - -export async function myUserVerify(params: UserVerifyParam) { - const res = await request.get>( - SERVER_API_URL + '/system/user-verify/myUserVerify', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 分页查询实名认证 - */ -export async function pageUserVerify(params: UserVerifyParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/user-verify/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询实名认证列表 - */ -export async function listUserVerify(params?: UserVerifyParam) { - const res = await request.get>( - SERVER_API_URL + '/system/user-verify', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加实名认证 - */ -export async function addUserVerify(data: UserVerify) { - const res = await request.post>( - SERVER_API_URL + '/system/user-verify', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改实名认证 - */ -export async function updateUserVerify(data: UserVerify) { - const res = await request.put>( - SERVER_API_URL + '/system/user-verify', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除实名认证 - */ -export async function removeUserVerify(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/user-verify/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除实名认证 - */ -export async function removeBatchUserVerify(data: (number | undefined)[]) { - const res = await request.del>( - SERVER_API_URL + '/system/user-verify/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询实名认证 - */ -export async function getUserVerify(id: number) { - const res = await request.get>( - SERVER_API_URL + '/system/user-verify/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 提交实名认证申请 - * @param data - */ -export async function submit(data: UserVerify) { - const res = await request.put>( - SERVER_API_URL + '/system/user-verify/submit', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/userVerify/model/index.ts b/src_bak/api/system/userVerify/model/index.ts deleted file mode 100644 index 2d52441..0000000 --- a/src_bak/api/system/userVerify/model/index.ts +++ /dev/null @@ -1,58 +0,0 @@ -import type { PageParam } from '@/api/index'; - -/** - * 实名认证 - */ -export interface UserVerify { - // 自增ID - id?: number; - // 用户ID - userId?: number; - // 认证类型, 0个人, 1企业 - type?: any; - // 主体名称 - name?: string; - // 真实姓名 - realName?: string; - // 手机号码 - phone?: string; - // 头像 - avatar?: string; - // 证件号码 - idCard?: string; - // 出生日期 - birthday?: string; - // 正面 - sfz1?: string; - // 反面 - sfz2?: string; - // 企业名称 - company?: string; - // 营业执照号码 - zzCode?: string; - // 营业执照 - zzImg?: string; - // 备注 - comments?: string; - // 状态, 0在线, 1离线 - status?: number; - // 是否删除, 0否, 1是 - deleted?: number; - // 租户id - tenantId?: number; - // 注册时间 - createTime?: string; - // 修改时间 - updateTime?: string; - // 状态名称 - statusText?: string; -} - -/** - * 实名认证搜索条件 - */ -export interface UserVerifyParam extends PageParam { - id?: number; - status?: number; - keywords?: string; -} diff --git a/src_bak/api/system/version/index.ts b/src_bak/api/system/version/index.ts deleted file mode 100644 index fdca9dc..0000000 --- a/src_bak/api/system/version/index.ts +++ /dev/null @@ -1,119 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { Version, VersionParam } from './model'; -import type { Menu } from '../menu/model'; -import {SERVER_API_URL} from "@/utils/server"; - -/** - * 分页查询角色 - */ -export async function pageVersion(params: VersionParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/version/page', - params - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询角色列表 - */ -export async function listVersion(params?: VersionParam) { - const res = await request.get>( - SERVER_API_URL + '/system/version', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加角色 - */ -export async function addVersion(data: Version) { - const res = await request.post>( - SERVER_API_URL + '/system/version', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改角色 - */ -export async function updateVersion(data: Version) { - const res = await request.put>( - SERVER_API_URL + '/system/version', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除角色 - */ -export async function removeVersion(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/version/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除角色 - */ -export async function removeVersions(data: (number | undefined)[]) { - const res = await request.del>( - SERVER_API_URL + '/system/version/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 获取角色分配的菜单 - */ -export async function listVersionMenus(versionId?: number) { - const res = await request.get>( - SERVER_API_URL + '/system/version-menu/' + versionId - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改角色菜单 - */ -export async function updateVersionMenus(versionId?: number, data?: number[]) { - const res = await request.put>( - SERVER_API_URL + '/system/version-menu/' + versionId, - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/version/model/index.ts b/src_bak/api/system/version/model/index.ts deleted file mode 100644 index 8899e2f..0000000 --- a/src_bak/api/system/version/model/index.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { PageParam } from '@/api'; - -export interface Version { - id?: number; - versionName?: string; - versionCode?: string; - vueDownloadUrl?: string; - androidDownloadUrl?: string; - iosDownloadUrl?: string; - updateInfo?: any; - isHard?: boolean; - isHot?: boolean; - status?: number; - comments?: string; - tenantId?: number; - createTime?: string; -} - -/** - * 角色搜索条件 - */ -export interface VersionParam extends PageParam { - versionName?: string; - versionCode?: string; - comments?: string; -} diff --git a/src_bak/api/system/white-domain/index.ts b/src_bak/api/system/white-domain/index.ts deleted file mode 100644 index fc68e9f..0000000 --- a/src_bak/api/system/white-domain/index.ts +++ /dev/null @@ -1,146 +0,0 @@ -import request from '@/utils/request'; -import type { ApiResult, PageResult } from '@/api'; -import type { WhiteDomain, WhiteDomainParam } from './model'; -import {SERVER_API_URL} from "@/utils/server"; - -/** - * 分页查询服务器白名单 - */ -export async function pageWhiteDomain(params: WhiteDomainParam) { - const res = await request.get>>( - SERVER_API_URL + '/system/white-domain/page', - { - params - } - ); - if (res.code === 0) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 查询服务器白名单列表 - */ -export async function listWhiteDomain(params?: WhiteDomainParam) { - const res = await request.get>( - SERVER_API_URL + '/system/white-domain', - { - params - } - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 添加服务器白名单 - */ -export async function addWhiteDomain(data: WhiteDomain) { - const res = await request.post>( - SERVER_API_URL + '/system/white-domain', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改服务器白名单 - */ -export async function updateWhiteDomain(data: WhiteDomain) { - const res = await request.put>( - SERVER_API_URL + '/system/white-domain', - data - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 删除服务器白名单 - */ -export async function removeWhiteDomain(id?: number) { - const res = await request.del>( - SERVER_API_URL + '/system/white-domain/' + id - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 批量删除服务器白名单 - */ -export async function removeBatchWhiteDomain(data: (number | undefined)[]) { - const res = await request.del>( - SERVER_API_URL + '/system/white-domain/batch', - { - data - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 修改用户状态 - */ -export async function updateWhiteDomainStatus( - docsId?: number, - status?: number -) { - const res = await request.put>( - SERVER_API_URL + '/system/white-domain/status', - { - docsId, - status - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 根据id查询服务器白名单 - */ -export async function getWhiteDomain(id: number) { - const res = await request.get>( - SERVER_API_URL + '/system/white-domain/' + id - ); - if (res.code === 0 && res.data) { - return res.data; - } - return Promise.reject(new Error(res.message)); -} - -/** - * 检查IP是否存在 - */ -export async function checkExistence( - field: string, - value: string, - id?: number -) { - const res = await request.get>( - SERVER_API_URL + '/system/white-domain/existence', - { - params: { field, value, id } - } - ); - if (res.code === 0) { - return res.message; - } - return Promise.reject(new Error(res.message)); -} diff --git a/src_bak/api/system/white-domain/model/index.ts b/src_bak/api/system/white-domain/model/index.ts deleted file mode 100644 index 8a231df..0000000 --- a/src_bak/api/system/white-domain/model/index.ts +++ /dev/null @@ -1,27 +0,0 @@ -import type { PageParam } from '@/api'; - -/** - * 服务器白名单 - */ -export interface WhiteDomain { - // 自增ID - id?: number; - // 域名 - domain?: string; - // 排序 - sortNumber?: number; - // 备注 - comments?: string; - // 状态 - status?: number; - // 创建时间 - createTime?: string; -} - -/** - * 服务器白名单搜索条件 - */ -export interface WhiteDomainParam extends PageParam { - id?: number; - domain?: string; -} diff --git a/src_bak/app.config.ts b/src_bak/app.config.ts deleted file mode 100644 index da941a2..0000000 --- a/src_bak/app.config.ts +++ /dev/null @@ -1,168 +0,0 @@ -export default { - pages: [ - // TabBar 页面 - 'pages/index/index', - 'pages/shop/index', - 'pages/points/index', - 'pages/user/user', - // 认证页面 - 'passport/login', - 'passport/register', - 'passport/sms-login', - 'passport/forget', - 'passport/agreement', - 'passport/setting', - 'passport/qr-login/index', - 'passport/qr-confirm/index', - 'passport/unified-qr/index', - // 首页子页面 - 'pages/index/search', - 'pages/index/notification', - 'pages/index/article-detail', - 'pages/index/article-list', - 'pages/index/coupon-center/index', - // 商城子页面 - 'pages/shop/category', - 'pages/shop/product-detail', - 'pages/shop/cart', - 'pages/shop/checkout', - 'pages/shop/group-buy-list/index', - 'pages/shop/group-buy-detail/index', - 'pages/shop/seckill-list/index', - 'pages/shop/seckill-detail/index', - // 积分子页面 - 'pages/points/signin', - 'pages/points/product-detail', - 'pages/points/product-list/index', - 'pages/points/exchange/index', - 'pages/points/points-rules/index', - 'pages/order-list', - // 用户子页面 - 'pages/user/profile', - 'pages/user/wallet', - 'pages/user/recharge', - 'pages/user/recharge-record/index', - 'pages/user/withdraw/index', - 'pages/user/balance-log/index', - 'pages/user/coupon-list', - 'pages/user/points-record', - 'pages/user/address-list', - 'pages/user/address-edit', - 'pages/user/setting', - 'pages/user/shop-setting/index', - 'pages/user/member/index', - 'pages/user/member-upgrade/index', - 'pages/user/invite-subordinate/index', - 'pages/user/register-pay/index', - 'pages/user/promotion/index', - 'pages/user/commission/index', - // 'pages/user/withdraw-list/index', - 'pages/user/team/index', - 'pages/user/invite-record/index', - 'pages/user/favorite-list/index', - 'pages/user/history-list/index', - 'pages/user/help-center/index', - 'pages/user/help-detail/index', - 'pages/user/customer-service/index', - 'pages/user/redeem/index', - // 会员权益包页面 - 'pages/user/benefit-packages/index', - 'pages/user/benefit-exchange-confirm/index', - 'pages/user/benefit-exchange-list/index', - // 订单页面 - 'pages/order/list', - 'pages/order/detail', - 'pages/order/refund', - 'pages/order/refund-detail', - 'pages/order/after-sale-apply', - 'pages/order/after-sale-list', - 'pages/order/after-sale-detail', - 'pages/order/logistics', - 'pages/order/evaluate/index', - 'pages/order/evaluate-list/index', - 'pages/order/evaluate-detail/index', - // 门店页面 - 'pages/store/list/index', - 'pages/store/booking/index', - // 售后页面 - 'pages/after-sale/apply/index', - 'pages/after-sale/progress/index', - 'pages/after-sale/list/index', - // 活动页面 - 'pages/activity/list/index', - 'pages/activity/detail/index', - // 赛事报名页面 - 'pages/event/list/index', - 'pages/event/detail/index', - 'pages/event/register/index', - 'pages/event/my/index', - // 预约订单页面 - 'pages/booking/list/index', - 'pages/booking/detail/index', - 'pages/booking/reschedule/index', - // 消息页面 - 'pages/message/list/index', - 'pages/message/detail/index', - // 礼品卡页面 - 'pages/gift-card/purchase/index', - 'pages/gift-card/exchange/index', - 'pages/gift-card/balance/index', - // 发票页面 - 'pages/invoice/title/index', - 'pages/invoice/apply/index', - 'pages/invoice/records/index', - // 分享返利页面 - 'pages/share/index', - 'pages/rebate/records/index', - // 'pages/rebate/withdraw/index', - // 数据统计页面 - 'pages/statistics/dashboard/index', - 'pages/statistics/sales/index', - 'pages/statistics/users/index', - ], - window: { - backgroundTextStyle: 'light', - navigationBarBackgroundColor: '#fff', - navigationBarTitleText: 'Paopao Taro', - navigationBarTextStyle: 'black', - backgroundColor: '#f8f8f8', - }, - permission: { - 'scope.userLocation': { - desc: '用于获取您的位置,按距离展示附近门店和选择收货地址定位', - }, - }, - requiredPrivateInfos: ['getLocation', 'chooseLocation'], - tabBar: { - custom: false, - color: '#8a8a8a', - selectedColor: '#0e932e', - backgroundColor: '#ffffff', - list: [ - { - pagePath: 'pages/index/index', - iconPath: 'assets/tabbar/home.png', - selectedIconPath: 'assets/tabbar/home-active.png', - text: '首页', - }, - { - pagePath: 'pages/shop/index', - iconPath: 'assets/tabbar/category.png', - selectedIconPath: 'assets/tabbar/category-active.png', - text: '分类', - }, - { - pagePath: 'pages/order/list', - iconPath: 'assets/tabbar/order.png', - selectedIconPath: 'assets/tabbar/order-active.png', - text: '订单', - }, - { - pagePath: 'pages/user/user', - iconPath: 'assets/tabbar/user.png', - selectedIconPath: 'assets/tabbar/user-active.png', - text: '我的', - }, - ], - }, -} diff --git a/src_bak/app.scss b/src_bak/app.scss deleted file mode 100644 index 5122105..0000000 --- a/src_bak/app.scss +++ /dev/null @@ -1,80 +0,0 @@ -// 全局样式 - -// 导入 NutUI 样式(必须在其他规则之前) -@use '@nutui/nutui-react-taro/dist/styles/theme-default.scss'; - -// TailwindCSS 指令 -@tailwind base; // noinspection TailwindCssInclude -@tailwind components; // noinspection TailwindCssInclude -@tailwind utilities; // noinspection TailwindCssInclude - -// 自定义样式变量 -:root { - --primary-color: #1890ff; - --secondary-color: #52c41a; - --text-color: #333333; - --bg-color: #ffffff; - --border-color: #e8e8e8; -} - -// 暗黑模式 -.dark { - --primary-color: #177ddc; - --text-color: #ffffff; - --bg-color: #141414; - --border-color: #303030; - - background-color: var(--bg-color); - color: var(--text-color); -} - -// 全局重置样式 -page { - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', - 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', - sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-size: 28px; - color: var(--text-color); - background-color: var(--bg-color); -} - -// 安全区域适配(小程序不支持 env(),使用固定值) -.safe-area-bottom { - padding-bottom: 20px; -} - -// 通用工具类 -.flex-center { - display: flex; - align-items: center; - justify-content: center; -} - -.flex-between { - display: flex; - align-items: center; - justify-content: space-between; -} - -.text-ellipsis { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.text-ellipsis-2 { - overflow: hidden; - text-overflow: ellipsis; - display: -webkit-box; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; -} - -// 加载旋转动画(Loading组件使用) -@keyframes spin { - from { transform: rotate(0deg); } - to { transform: rotate(360deg); } -} - diff --git a/src_bak/app.tsx b/src_bak/app.tsx deleted file mode 100644 index 2cdb97e..0000000 --- a/src_bak/app.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import React, { useState } from 'react' -import Taro, { useLaunch, useDidShow, useDidHide, getSystemInfoSync } from '@tarojs/taro' -import { View } from '@tarojs/components' -import { ConfigProvider } from '@nutui/nutui-react-taro' -import zhCN from '@nutui/nutui-react-taro/dist/locales/zh-CN' -import AppContext from './contexts/AppContext' -import { UserProvider } from './contexts/UserContext' -import { CartProvider } from './contexts/CartContext' -import ErrorBoundary from './components/ErrorBoundary' -import './app.scss' - -type AppProps = { - children?: React.ReactNode -} - -function App(props: AppProps) { - const [theme, setTheme] = useState<'light' | 'dark'>('light') - - useLaunch(() => { - const systemInfo = getSystemInfoSync() - const savedTheme = Taro.getStorageSync('app_theme') - if (savedTheme === 'light' || savedTheme === 'dark') { - setTheme(savedTheme) - } - }) - - useDidShow(() => {}) - - useDidHide(() => {}) - - const toggleTheme = () => { - setTheme(prev => { - const next = prev === 'light' ? 'dark' : 'light' - try { Taro.setStorageSync('app_theme', next) } catch { /* ignore */ } - return next - }) - } - - return ( - - - - - - - {props.children} - - - - - - - ) -} - -export default App diff --git a/src_bak/assets/logo.png b/src_bak/assets/logo.png deleted file mode 100644 index 2069978..0000000 Binary files a/src_bak/assets/logo.png and /dev/null differ diff --git a/src_bak/assets/tabbar/README.md b/src_bak/assets/tabbar/README.md deleted file mode 100644 index 5ace688..0000000 --- a/src_bak/assets/tabbar/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# TabBar 图标目录 - -请将以下图标文件放置在此目录下: - -## 必需图标 - -1. **home.png** - 首页图标(未选中) -2. **home-active.png** - 首页图标(选中) -3. **user.png** - 我的图标(未选中) -4. **user-active.png** - 我的图标(选中) - -## 图标规范 - -- 尺寸: 81px × 81px(推荐) -- 格式: PNG -- 背景: 透明 -- 未选中状态: 灰色(#999999) -- 选中状态: 主题色(#1890ff) - -## 临时解决方案 - -在获取正式图标前,可以使用在线工具生成或使用简单的占位图标。 - -推荐图标库: -- [Iconfont](https://www.iconfont.cn/) -- [Flaticon](https://www.flaticon.com/) -- [Feather Icons](https://feathericons.com/) diff --git a/src_bak/assets/tabbar/category-active.png b/src_bak/assets/tabbar/category-active.png deleted file mode 100644 index febc745..0000000 Binary files a/src_bak/assets/tabbar/category-active.png and /dev/null differ diff --git a/src_bak/assets/tabbar/category.png b/src_bak/assets/tabbar/category.png deleted file mode 100644 index 987e3dd..0000000 Binary files a/src_bak/assets/tabbar/category.png and /dev/null differ diff --git a/src_bak/assets/tabbar/home-active.png b/src_bak/assets/tabbar/home-active.png deleted file mode 100644 index 474e4bd..0000000 Binary files a/src_bak/assets/tabbar/home-active.png and /dev/null differ diff --git a/src_bak/assets/tabbar/home.png b/src_bak/assets/tabbar/home.png deleted file mode 100644 index 5b916e5..0000000 Binary files a/src_bak/assets/tabbar/home.png and /dev/null differ diff --git a/src_bak/assets/tabbar/order-active.png b/src_bak/assets/tabbar/order-active.png deleted file mode 100644 index 96f4277..0000000 Binary files a/src_bak/assets/tabbar/order-active.png and /dev/null differ diff --git a/src_bak/assets/tabbar/order.png b/src_bak/assets/tabbar/order.png deleted file mode 100644 index ca7a067..0000000 Binary files a/src_bak/assets/tabbar/order.png and /dev/null differ diff --git a/src_bak/assets/tabbar/points-active.png b/src_bak/assets/tabbar/points-active.png deleted file mode 100644 index bccaf3e..0000000 Binary files a/src_bak/assets/tabbar/points-active.png and /dev/null differ diff --git a/src_bak/assets/tabbar/points.png b/src_bak/assets/tabbar/points.png deleted file mode 100644 index 6e0e6e3..0000000 Binary files a/src_bak/assets/tabbar/points.png and /dev/null differ diff --git a/src_bak/assets/tabbar/user-active.png b/src_bak/assets/tabbar/user-active.png deleted file mode 100644 index c132039..0000000 Binary files a/src_bak/assets/tabbar/user-active.png and /dev/null differ diff --git a/src_bak/assets/tabbar/user.png b/src_bak/assets/tabbar/user.png deleted file mode 100644 index 4692e10..0000000 Binary files a/src_bak/assets/tabbar/user.png and /dev/null differ diff --git a/src_bak/components/ErrorBoundary.scss b/src_bak/components/ErrorBoundary.scss deleted file mode 100644 index bf8371c..0000000 --- a/src_bak/components/ErrorBoundary.scss +++ /dev/null @@ -1,87 +0,0 @@ -.error-boundary { - min-height: 100vh; - display: flex; - align-items: center; - justify-content: center; - padding: 32px; - background: linear-gradient(180deg, #f8fafc 0%, #eef2ff 100%); -} - -.error-boundary__container { - width: 100%; - max-width: 560px; - padding: 32px 24px; - border-radius: 24px; - background: #ffffff; - box-shadow: 0 18px 50px rgba(15, 23, 42, 0.08); - text-align: center; -} - -.error-boundary__icon { - width: 72px; - height: 72px; - margin: 0 auto 16px; - border-radius: 999px; - background: #fee2e2; - color: #dc2626; - font-size: 32px; - line-height: 72px; - font-weight: 700; -} - -.error-boundary__title { - display: block; - margin-bottom: 12px; - font-size: 32px; - font-weight: 600; - color: #0f172a; -} - -.error-boundary__message { - display: block; - color: #475569; - line-height: 1.6; -} - -.error-boundary__details { - margin-top: 20px; - padding: 16px; - text-align: left; - border-radius: 16px; - background: #f8fafc; -} - -.error-boundary__error-title { - display: block; - margin-bottom: 8px; - font-size: 24px; - font-weight: 600; - color: #0f172a; -} - -.error-boundary__error-message { - display: block; - word-break: break-word; - color: #b91c1c; - font-size: 22px; -} - -.error-boundary__actions { - display: flex; - gap: 16px; - margin-top: 24px; -} - -.error-boundary__button { - flex: 1; -} - -.error-boundary__button--primary { - color: #fff; - background: #2563eb; -} - -.error-boundary__button--secondary { - color: #0f172a; - background: #e2e8f0; -} diff --git a/src_bak/components/ErrorBoundary.tsx b/src_bak/components/ErrorBoundary.tsx deleted file mode 100644 index 011d660..0000000 --- a/src_bak/components/ErrorBoundary.tsx +++ /dev/null @@ -1,75 +0,0 @@ -import React, { Component, type ReactNode } from 'react' -import Taro from '@tarojs/taro' -import { View, Text, Button } from '@tarojs/components' -import './ErrorBoundary.scss' - -interface ErrorBoundaryState { - hasError: boolean - error?: Error - errorInfo?: React.ErrorInfo -} - -interface ErrorBoundaryProps { - children: ReactNode - fallback?: ReactNode - onError?: (error: Error, errorInfo: React.ErrorInfo) => void -} - -class ErrorBoundary extends Component { - constructor(props: ErrorBoundaryProps) { - super(props) - this.state = { hasError: false } - } - - static getDerivedStateFromError(error: Error): ErrorBoundaryState { - return { hasError: true, error } - } - - componentDidCatch(error: Error, errorInfo: React.ErrorInfo) { - this.setState({ error, errorInfo }) - this.props.onError?.(error, errorInfo) - console.error('ErrorBoundary caught an error:', error, errorInfo) - } - - private handleReset = () => { - this.setState({ hasError: false, error: undefined, errorInfo: undefined }) - } - - private handleReload = () => { - Taro.reLaunch({ url: '/pages/index/index' }) - } - - render() { - if (this.state.hasError) { - if (this.props.fallback) return this.props.fallback - - return ( - - - ! - 页面出现了问题 - 请稍后重试,或返回首页继续使用。 - {process.env.NODE_ENV === 'development' && ( - - 错误详情 - {this.state.error?.message} - - )} - - - - - - - ) - } - - return this.props.children - } -} - -export default ErrorBoundary diff --git a/src_bak/components/NavBar/index.tsx b/src_bak/components/NavBar/index.tsx deleted file mode 100644 index 2ba723f..0000000 --- a/src_bak/components/NavBar/index.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { View, Text } from '@tarojs/components'; -import { useNavigate } from '@tarojs/taro'; - -interface NavBarProps { - title: string; - onBack?: () => void; - rightText?: string; - onRightClick?: () => void; -} - -export default function NavBar({ title, onBack, rightText, onRightClick }: NavBarProps) { - const navigate = useNavigate(); - - const handleBack = () => { - if (onBack) { - onBack(); - } else { - navigate(-1); - } - }; - - return ( - - - - {title} - - {rightText && ( - - {rightText} - - )} - - ); -} diff --git a/src_bak/components/QRLoginScanner.tsx b/src_bak/components/QRLoginScanner.tsx deleted file mode 100644 index aad6bd7..0000000 --- a/src_bak/components/QRLoginScanner.tsx +++ /dev/null @@ -1,135 +0,0 @@ -import React, { useState } from 'react' -import { View, Text } from '@tarojs/components' -import { Button, Loading } from '@nutui/nutui-react-taro' -import { Failure, Scan, Success } from '@nutui/icons-react-taro' -import Taro from '@tarojs/taro' -import { confirmWechatQRLogin, parseQRContent } from '@/api/passport/qr-login' - -export interface QRLoginScannerProps { - onSuccess?: (result: any) => void - onError?: (error: string) => void - className?: string - buttonText?: string - showStatus?: boolean -} - -type ScanState = 'idle' | 'scanning' | 'confirming' | 'success' | 'error' - -const QRLoginScanner: React.FC = ({ - onSuccess, - onError, - className = '', - buttonText = '开始扫码登录', - showStatus = true, -}) => { - const [state, setState] = useState('idle') - const [error, setError] = useState('') - const [result, setResult] = useState(null) - - const reset = () => { - setState('idle') - setError('') - setResult(null) - } - - const startScan = async () => { - try { - setState('scanning') - setError('') - - const scanRes = await Taro.scanCode({ onlyFromCamera: false, scanType: ['qrCode'] }) - const rawContent = scanRes.result || '' - const token = parseQRContent(rawContent) - const userId = Number(Taro.getStorageSync('UserId')) - - if (!token) { - throw new Error('未识别到有效的登录二维码') - } - - if (!userId) { - throw new Error('当前用户未登录') - } - - setState('confirming') - const confirmRes = await confirmWechatQRLogin(token, userId) - setResult(confirmRes) - setState('success') - onSuccess?.(confirmRes) - } catch (err: any) { - const message = err?.errMsg?.includes('cancel') - ? '已取消扫码' - : err?.message || '扫码登录失败' - setError(message) - setState('error') - onError?.(message) - } - } - - const renderStatus = () => { - switch (state) { - case 'scanning': - return ( - - - 请扫描登录二维码... - - ) - case 'confirming': - return ( - - - 正在确认登录... - - ) - case 'success': - return ( - - - 登录确认成功 - - ) - case 'error': - return ( - - - {error || '扫码登录失败'} - - ) - default: - return null - } - } - - const loading = state === 'scanning' || state === 'confirming' - - return ( - - - - {showStatus && {renderStatus()}} - - {state === 'success' && result && ( - - 扫码登录已确认,请返回网页端查看登录结果。 - - )} - - {state === 'idle' && ( - - 扫描网页端展示的登录二维码,即可完成登录确认。 - - )} - - ) -} - -export default QRLoginScanner diff --git a/src_bak/components/business/AddressCard/index.tsx b/src_bak/components/business/AddressCard/index.tsx deleted file mode 100644 index 9eea2a2..0000000 --- a/src_bak/components/business/AddressCard/index.tsx +++ /dev/null @@ -1,121 +0,0 @@ -import React from 'react' -import { View, Text } from '@tarojs/components' -import type { ShopUserAddress } from '@/api/shop/shopUserAddress/model' - -interface AddressCardProps { - address: ShopUserAddress - /** 是否选中状态(用于选择地址场景,如结算页) */ - selected?: boolean - /** 是否为选择模式(显示radio圆圈) */ - selectMode?: boolean - onClick?: () => void - showActions?: boolean - onEdit?: () => void - onDelete?: () => void - onDefault?: () => void -} - -const AddressCard: React.FC = ({ - address, - selected = false, - selectMode = false, - onClick, - showActions = false, - onEdit, - onDelete, - onDefault, -}) => { - const fullAddress = [address.province, address.city, address.region, address.address].filter(Boolean).join(' ') - - return ( - - - {/* 选择模式下的radio圈 */} - {selectMode && ( - - - {selected && ( - - - - )} - - - )} - - - {/* 姓名 + 手机号 + 默认标签 */} - - {address.name} - {address.phone} - {address.isDefault && ( - - 默认 - - )} - - - {/* 完整地址 */} - - {fullAddress || address.fullAddress || address.address || '暂无地址'} - - - - - {/* 操作栏 */} - {showActions && ( - - {/* 默认地址切换 */} - { e.stopPropagation(); onDefault?.() }} - > - - {address.isDefault && ( - - - - )} - - 默认地址 - - - {/* 编辑/删除 */} - - {onEdit && ( - { e.stopPropagation(); onEdit?.() }} - > - 编辑 - - )} - | - {onDelete && ( - { e.stopPropagation(); onDelete?.() }} - > - 删除 - - )} - - - )} - - ) -} - -export default AddressCard diff --git a/src_bak/components/business/CouponCard/index.tsx b/src_bak/components/business/CouponCard/index.tsx deleted file mode 100644 index fcc37f7..0000000 --- a/src_bak/components/business/CouponCard/index.tsx +++ /dev/null @@ -1,113 +0,0 @@ -import React from 'react' -import { View, Text } from '@tarojs/components' -import type { ShopUserCoupon } from '@/api/shop/shopUserCoupon/model' -import { getCouponTypeText, formatCouponValue, isExpiringSoon } from '@/hooks/useCoupon' - -interface CouponCardProps { - coupon: ShopUserCoupon - disabled?: boolean - onClick?: () => void - showDelete?: boolean - onDelete?: () => void -} - -const CouponCard: React.FC = ({ - coupon, - disabled = false, - onClick, - showDelete = false, - onDelete, -}) => { - const isUsed = coupon.status === 1 - const isExpired = coupon.status === 2 || coupon.isExpire === 1 - const expiringSoon = isExpiringSoon(coupon) - - const getValidTime = () => { - if (coupon.startTime && coupon.endTime) { - return `${coupon.startTime.slice(0, 10)} - ${coupon.endTime.slice(0, 10)}` - } - return '永久有效' - } - - const getRangeText = () => { - switch (coupon.applyRange) { - case 10: return '全场通用' - case 20: return '指定商品' - case 30: return '指定分类' - default: return '全场通用' - } - } - - return ( - - - {/* 左侧金额区域 */} - - {formatCouponValue(coupon)} - {(() => { - if (coupon.type === 50) { - // 场地使用券 - const parts: string[] = [] - if (coupon.useDuration && coupon.useDuration > 0) parts.push(`${coupon.useDuration}分钟`) - return parts.length > 0 ? ( - {parts.join(' | ')} - ) : null - } - if (coupon.type === 40 || !coupon.minPrice || Number(coupon.minPrice) <= 0) return null - return 满{coupon.minPrice}可用 - })()} - - - {/* 右侧信息区域 */} - - - - - {coupon.name || getCouponTypeText(coupon.type)} - {expiringSoon && !isUsed && !isExpired && ( - 即将过期 - )} - - {getRangeText()} - {getValidTime()} - {coupon.description && ( - {coupon.description} - )} - - - {/* 状态标签 */} - - {isUsed && ( - 已使用 - )} - {isExpired && ( - 已过期 - )} - {!isUsed && !isExpired && ( - - )} - - - - {/* 删除按钮 */} - {showDelete && (isUsed || isExpired) && ( - - { e.stopPropagation(); onDelete?.() }}> - 删除 - - - )} - - - - ) -} - -export default CouponCard diff --git a/src_bak/components/business/CouponSelect/index.tsx b/src_bak/components/business/CouponSelect/index.tsx deleted file mode 100644 index b63db2b..0000000 --- a/src_bak/components/business/CouponSelect/index.tsx +++ /dev/null @@ -1,185 +0,0 @@ -import React, { useEffect, useMemo } from 'react' -import { View, Text, ScrollView } from '@tarojs/components' -import type { ShopUserCoupon } from '@/api/shop/shopUserCoupon/model' - -interface CouponSelectProps { - visible: boolean - coupons: ShopUserCoupon[] - minAmount?: number - selectedCouponId?: string - onClose: () => void - onSelect: (coupon: ShopUserCoupon | null) => void -} - -const CouponSelect: React.FC = ({ - visible, - coupons, - minAmount = 0, - selectedCouponId, - onClose, - onSelect, -}) => { - const [showOverlay, setShowOverlay] = React.useState(false) - const [slideUp, setSlideUp] = React.useState(false) - - // 控制动画 - React.useEffect(() => { - if (visible) { - setShowOverlay(true) - setTimeout(() => setSlideUp(true), 10) - } else { - setSlideUp(false) - setTimeout(() => setShowOverlay(false), 300) - } - }, [visible]) - - const handleClose = () => { - setSlideUp(false) - setTimeout(() => { - setShowOverlay(false) - onClose() - }, 300) - } - - const handleSelect = (coupon: ShopUserCoupon | null) => { - handleClose() - onSelect(coupon) - } - - const availableCoupons = useMemo(() => { - return coupons.filter(c => { - if (c.status !== 0 && c.status !== undefined) return false - if (c.endTime && new Date(c.endTime) < new Date()) return false - return (Number(c.minPrice) || 0) <= minAmount - }) - }, [coupons, minAmount]) - - if (!showOverlay) return null - - return ( - - {/* 遮罩层 */} - - - {/* 弹窗内容 */} - - - {/* 关闭按钮 */} - - - × - - - - - 选择优惠券 - handleSelect(null)} - > - 不使用优惠券 - - - - {availableCoupons.length === 0 ? ( - - 暂无可用优惠券 - - ) : ( - - {availableCoupons.map((coupon) => { - const isSelected = selectedCouponId === coupon.id - return ( - handleSelect(coupon)} - > - - {coupon.type === 20 ? ( - - - {coupon.discount || 0}折 - - - {coupon.minPrice && Number(coupon.minPrice) > 0 ? `满${coupon.minPrice}可用` : '无门槛'} - - - ) : coupon.type === 50 ? ( - - - {coupon.useCount && coupon.useCount > 0 ? `${coupon.useCount}次` : '不限次'} - - - {coupon.useDuration && coupon.useDuration > 0 ? `${coupon.useDuration}分钟` : '场地使用'} - - - ) : ( - - ¥ - - {coupon.reducePrice || 0} - - - {coupon.type === 40 ? '无门槛' : - (coupon.minPrice && Number(coupon.minPrice) > 0 ? `满${coupon.minPrice}可用` : '无门槛')} - - - )} - - - - - {coupon.name || coupon.description || '优惠券'} - - - {coupon.startTime?.slice(0, 10)} ~ {coupon.endTime?.slice(0, 10)} - - - - {isSelected && ( - - {'✓'} - - )} - - ) - })} - - )} - - - - ) -} - -export default CouponSelect diff --git a/src_bak/components/business/MemberBadge/index.tsx b/src_bak/components/business/MemberBadge/index.tsx deleted file mode 100644 index a0e67a3..0000000 --- a/src_bak/components/business/MemberBadge/index.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import React from 'react' -import { View, Text } from '@tarojs/components' - -interface MemberBadgeProps { - levelName?: string - size?: 'small' | 'normal' -} - -const MemberBadge: React.FC = ({ levelName, size = 'normal' }) => { - if (!levelName) return null - - const sizeClass = size === 'small' ? 'text-xs px-1 py-0' : 'text-sm px-2 py-1' - - return ( - - {levelName} - - ) -} - -export default MemberBadge diff --git a/src_bak/components/business/PayModal/index.tsx b/src_bak/components/business/PayModal/index.tsx deleted file mode 100644 index 4bf390f..0000000 --- a/src_bak/components/business/PayModal/index.tsx +++ /dev/null @@ -1,123 +0,0 @@ -import React, { useState, useEffect } from 'react' -import { View, Text } from '@tarojs/components' -import Price from '@/components/common/Price' - -interface PayModalProps { - visible: boolean - amount: string - onClose: () => void - onConfirm: (payType: number) => void -} - -const PAY_TYPES = [ - { id: 1, name: '微信支付', desc: '推荐使用', icon: 'pay-wechat' }, - { id: 0, name: '货到付款', desc: '使用账户余额', icon: 'pay-balance' }, -] - -const PayModal: React.FC = ({ visible, amount, onClose, onConfirm }) => { - const [selected, setSelected] = useState(1) - const [showOverlay, setShowOverlay] = useState(false) - const [slideUp, setSlideUp] = useState(false) - - // 控制动画 - useEffect(() => { - if (visible) { - setShowOverlay(true) - setTimeout(() => setSlideUp(true), 10) - } else { - setSlideUp(false) - setTimeout(() => setShowOverlay(false), 300) - } - }, [visible]) - - const handleClose = () => { - setSlideUp(false) - setTimeout(() => { - setShowOverlay(false) - onClose() - }, 300) - } - - const handleConfirm = () => { - handleClose() - onConfirm(selected) - } - - if (!showOverlay) return null - - return ( - - {/* 遮罩层 */} - - - {/* 弹窗内容 */} - - - {/* 关闭按钮 */} - - - × - - - - - 选择支付方式 - - - - - - - {PAY_TYPES.map((item) => ( - setSelected(item.id)} - > - - - - {item.id === 1 ? '微' : '余'} - - - - {item.name} - {item.desc} - - - - {selected === item.id && ( - - )} - - - ))} - - - - 确认支付 - - - - - ) -} - -export default PayModal diff --git a/src_bak/components/business/SkuSelector/index.tsx b/src_bak/components/business/SkuSelector/index.tsx deleted file mode 100644 index e9c9ee0..0000000 --- a/src_bak/components/business/SkuSelector/index.tsx +++ /dev/null @@ -1,346 +0,0 @@ -import React, { useState, useEffect, useMemo } from 'react' -import { View, Text, Image, ScrollView } from '@tarojs/components' -import Taro from '@tarojs/taro' -import type { ShopGoods, ShopGoodsSku } from '@/api/shop/shopGoods/model' -import type { ShopGoodsSpec } from '@/api/shop/shopGoodsSpec/model' -import Price from '@/components/common/Price' - -interface SkuSelectorProps { - visible: boolean - product: ShopGoods | null - mode?: 'cart' | 'buy' - onClose: () => void - onConfirm: (sku: ShopGoodsSku, quantity: number) => void -} - -// 将平铺的规格值列表转换为按规格ID分组的格式 -interface SpecGroup { - specId: number - specName: string - values: Array<{ specValueId: number; specValue: string }> -} - -// 解析可能为JSON字符串的规格值 -const parseSpecValue = (value: string | undefined): string => { - if (!value) return '' - const trimmed = value.trim() - // 处理带引号的JSON字符串,如 "红色" -> 红色 - if (trimmed.startsWith('"') && trimmed.endsWith('"') && trimmed.length >= 2) { - try { - return JSON.parse(trimmed) - } catch { - return trimmed.slice(1, -1) - } - } - return trimmed -} - -const SkuSelector: React.FC = ({ - visible, - product, - mode = 'cart', - onClose, - onConfirm, -}) => { - const [selectedSpecs, setSelectedSpecs] = useState>({}) - const [selectedSku, setSelectedSku] = useState(null) - const [quantity, setQuantity] = useState(1) - const [showOverlay, setShowOverlay] = useState(false) - const [slideUp, setSlideUp] = useState(false) - - // 控制动画 - useEffect(() => { - if (visible) { - setShowOverlay(true) - // 延迟一帧触发滑入动画 - setTimeout(() => setSlideUp(true), 10) - } else { - setSlideUp(false) - setTimeout(() => setShowOverlay(false), 300) - } - }, [visible]) - - // 将平铺的goodsSpecs转换为按规格分组的格式 - const specGroups = useMemo(() => { - if (!product?.goodsSpecs?.length) return [] - - const groupMap = new Map() - - product.goodsSpecs.forEach((spec: ShopGoodsSpec, idx: number) => { - if (!groupMap.has(spec.specId!)) { - groupMap.set(spec.specId!, { - specId: spec.specId!, - specName: spec.specName || `规格${groupMap.size + 1}`, - values: [] - }) - } - groupMap.get(spec.specId!)!.values.push({ - specValueId: spec.id || idx, // 优先使用规格值ID,否则用索引 - specValue: parseSpecValue(spec.specValue) - }) - }) - - return Array.from(groupMap.values()) - }, [product?.goodsSpecs]) - - // 当弹窗重新打开时,重置状态 - useEffect(() => { - if (visible) { - setSelectedSpecs({}) - setSelectedSku(null) - setQuantity(1) - } - }, [visible]) - - // 根据已选规格查找匹配的 SKU - useEffect(() => { - if (!product?.goodsSkus?.length) { - // 单规格商品,使用商品本身的价格 - setSelectedSku(null) - return - } - - const specValues = Object.values(selectedSpecs) - const specCount = specGroups.length - - if (specValues.length < specCount) { - setSelectedSku(null) - return - } - - // 根据选中的 specValueId 找到对应的中文值,拼接后排序匹配 - const selectedValues: string[] = [] - specGroups.forEach(group => { - const valueId = selectedSpecs[group.specId] - if (valueId !== undefined) { - const value = group.values.find(v => v.specValueId === valueId) - if (value) selectedValues.push(value.specValue) - } - }) - const selectedStr = selectedValues.sort().join('|') - - const matched = product.goodsSkus.find(sku => { - const skuValue = sku.sku || '' - const skuParts = skuValue.split('|').map(s => parseSpecValue(s.trim())) - const skuStr = skuParts.sort().join('|') - return skuStr === selectedStr - }) - - setSelectedSku(matched || null) - }, [selectedSpecs, product, specGroups]) - - const handleSpecClick = (specId: number, valueId: number) => { - setSelectedSpecs(prev => { - const next = { ...prev } - if (next[specId] === valueId) { - delete next[specId] - } else { - next[specId] = valueId - } - return next - }) - setQuantity(1) - } - - const handleClose = () => { - setSlideUp(false) - setTimeout(() => { - setShowOverlay(false) - onClose() - }, 300) - } - - const handleConfirm = () => { - try { - // 单规格商品(无SKU列表 或 SKU列表为空数组) - if ((!product?.goodsSkus || product.goodsSkus.length === 0) && product) { - const fakeSku: ShopGoodsSku = { - id: 0, - goodsId: product.goodsId!, - price: product.price || product.salePrice, - salePrice: product.salePrice || product.price, - stock: product.stock, - image: product.image, - } - handleClose() - onConfirm(fakeSku, quantity) - return - } - - // 多规格商品 - 必须已选择 SKU - if (selectedSku) { - handleClose() - onConfirm(selectedSku, quantity) - return - } - - // 有规格但未选择完整 - if (specGroups.length > 0) { - Taro.showToast({ title: '请选择完整的规格', icon: 'none' }) - return - } - - // 其他情况 - Taro.showToast({ title: '无法添加商品', icon: 'none' }) - } catch (err) { - Taro.showToast({ title: '操作失败', icon: 'none' }) - } - } - - // 价格优先级:SKU售价 > SKU原价 > 商品售价 > 商品原价 > 0 - // 注意:ShopGoods 模型中 price=商品价格(低), salePrice=销售/市场价(高) - // ShopGoodsSku 模型中 price=商品价格, salePrice=市场价格(高) - // 统一以 price 为准,salePrice 仅作兜底展示 - const currentPrice = selectedSku?.price || selectedSku?.salePrice || product?.price || product?.salePrice || '0' - const currentStock = selectedSku?.stock ?? product?.stock ?? 0 - const currentImage = selectedSku?.image || product?.image || (product?.files?.split(',')[0]) || '' - - // 单规格商品可以确认,或者多规格商品已选择了 SKU - const canConfirm = (!product?.goodsSkus || product.goodsSkus.length === 0) || selectedSku !== null - - // 获取未选择完整的规格提示 - const getUnselectedSpec = () => { - if (specGroups.length === 0) return null - const unselected = specGroups.find( - spec => !selectedSpecs[spec.specId] - ) - return unselected?.specName - } - - // 获取选中的规格文字描述 - const getSelectedText = () => { - const selected: string[] = [] - specGroups.forEach(group => { - const valueId = selectedSpecs[group.specId] - if (valueId !== undefined) { - const value = group.values.find(v => v.specValueId === valueId) - if (value) selected.push(value.specValue) - } - }) - return selected.length > 0 ? selected.join(', ') : '默认' - } - - // 如果不需要显示,直接返回null - if (!showOverlay) return null - - return ( - - {/* 遮罩层 */} - - - {/* 弹窗内容 */} - - - {/* 关闭按钮 */} - - - × - - - - {/* 商品信息 */} - - - - - 库存: {currentStock} - - 已选: {getSelectedText()} - - - - - {/* 规格选择 */} - - {specGroups.map((group) => ( - - - {group.specName} - - - {group.values.map((value) => { - const isActive = selectedSpecs[group.specId] === value.specValueId - return ( - handleSpecClick(group.specId, value.specValueId)} - > - {value.specValue} - - ) - })} - - - ))} - - {/* 无规格时显示提示 */} - {specGroups.length === 0 && product?.goodsSkus?.length === 0 && ( - - 单规格商品 - - )} - - - {/* 数量 */} - - 数量 - - quantity > 1 && setQuantity(prev => prev - 1)} - > - - - - {quantity} - = currentStock ? 'border-gray-200 text-gray-300' : 'border-gray-300 text-gray-500' - }`} - onClick={() => quantity < currentStock && setQuantity(prev => prev + 1)} - > - = currentStock ? 'text-gray-300' : 'text-gray-500'}>+ - - - - - {/* 确认按钮 */} - - - - {getUnselectedSpec() ? `请选择${getUnselectedSpec()}` : (mode === 'cart' ? '加入购物车' : '立即购买')} - - - - - - - ) -} - -export default SkuSelector diff --git a/src_bak/components/common/BottomButton/index.scss b/src_bak/components/common/BottomButton/index.scss deleted file mode 100644 index 2f93925..0000000 --- a/src_bak/components/common/BottomButton/index.scss +++ /dev/null @@ -1,59 +0,0 @@ -/* 底部悬浮按钮样式 */ - -.bottom-button-container { - position: fixed; - bottom: 0; - left: 0; - right: 0; - z-index: 999; - background-color: #ffffff; - padding: 12PX 16PX; - padding-bottom: 24PX; - border-top: 1PX solid #f0f0f0; -} - -.bottom-btn-subtitle { - text-align: center; - margin-bottom: 8px; -} - -.subtitle-text { - font-size: 14px; - color: #666666; -} - -.subtitle-price { - color: #ff6600; - font-weight: 500; -} - -.bottom-btn { - width: 100%; - height: 88rpx; - background-color: #0e932e; - color: #ffffff; - font-size: 32rpx; - font-weight: 500; - border-radius: 44rpx; - border: none; - margin: 0; - padding: 0; - display: flex; - align-items: center; - justify-content: center; - line-height: 88rpx; -} - -.bottom-btn::after { - border: none; -} - -.bottom-btn[disabled] { - background-color: #cccccc; - color: #ffffff; -} - -.bottom-btn[loading] { - background-color: #0e932e; - opacity: 0.8; -} diff --git a/src_bak/components/common/BottomButton/index.tsx b/src_bak/components/common/BottomButton/index.tsx deleted file mode 100644 index c52d1af..0000000 --- a/src_bak/components/common/BottomButton/index.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import React from 'react' -import { View, Button, Text } from '@tarojs/components' -import styles from './index.scss' - -interface BottomButtonProps { - text?: string - onClick?: () => void - disabled?: boolean - loading?: boolean - color?: string - subtitle?: string -} - -const BottomButton: React.FC = ({ - text = '确认', - onClick, - disabled = false, - loading = false, - color = '#0e932e', - subtitle -}) => { - return ( - - {subtitle && ( - - {subtitle} - - )} - - - ) -} - -export default BottomButton diff --git a/src_bak/components/common/EmptyState/index.tsx b/src_bak/components/common/EmptyState/index.tsx deleted file mode 100644 index 4da086e..0000000 --- a/src_bak/components/common/EmptyState/index.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import React from 'react' -import { View, Text } from '@tarojs/components' -import { Button } from '@nutui/nutui-react-taro' - -interface EmptyStateProps { - image?: string - text?: string - description?: string - actionText?: string - onAction?: () => void -} - -const DEFAULT_IMAGE = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgZmlsbD0iI2Y1ZjVmNSIvPjx0ZXh0IHg9IjUwJSIgeT0iNTAlIiBkb21pbmFudC1iYXNlbGluZT0ibWlkZGxlIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE0IiBmaWxsPSIjY2NjIj7or77nqIvliY3liIY8L3RleHQ+PC9zdmc+' - -const EmptyState: React.FC = ({ - image = DEFAULT_IMAGE, - text = '暂无数据', - description, - actionText, - onAction, -}) => { - return ( - - - - - {text} - {description && ( - {description} - )} - {actionText && onAction && ( - - )} - - ) -} - -export default EmptyState diff --git a/src_bak/components/common/FixedButton/index.tsx b/src_bak/components/common/FixedButton/index.tsx deleted file mode 100644 index f0686bb..0000000 --- a/src_bak/components/common/FixedButton/index.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import React from 'react' -import { View } from '@tarojs/components' -import { Button } from '@nutui/nutui-react-taro' - -interface FixedButtonProps { - text?: string - onClick?: () => void - icon?: React.ReactNode - disabled?: boolean - background?: string -} - -/** - * 底部固定按钮组件 - * 用于地址列表"新增地址"、地址编辑"保存"等底部固定操作 - */ -const FixedButton: React.FC = ({ text, onClick, icon, disabled, background }) => { - return ( - <> - {/* 底部安全区域占位 */} - - - - - - ) -} - -export default FixedButton diff --git a/src_bak/components/common/LazyImage/index.tsx b/src_bak/components/common/LazyImage/index.tsx deleted file mode 100644 index 39c093c..0000000 --- a/src_bak/components/common/LazyImage/index.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import { View, Image, Text } from '@tarojs/components'; -import { useState, useEffect } from 'react'; -import { useIntersectionObserver } from '@tarojs/taro'; - -interface LazyImageProps { - src: string; - placeholder?: string; - className?: string; - style?: React.CSSProperties; - mode?: 'scaleToFill' | 'aspectFit' | 'aspectFill' | 'widthFix' | 'heightFix' | 'top' | 'bottom' | 'center' | 'left' | 'right' | 'top left' | 'top right' | 'bottom left' | 'bottom right'; -} - -export default function LazyImage({ src, placeholder, className, style, mode = 'aspectFill' }: LazyImageProps) { - const [loaded, setLoaded] = useState(false); - const [inView, setInView] = useState(false); - const { intersectionObserver } = useIntersectionObserver(); - - useEffect(() => { - if (!intersectionObserver) return; - - intersectionObserver.relativeToViewport(); - intersectionObserver.observe({ - type: 'relativeToViewport', - success: (res) => { - if (res.intersectionRatio > 0) { - setInView(true); - } - } - }); - - return () => { - intersectionObserver.disconnect(); - }; - }, [intersectionObserver]); - - return ( - - {!loaded && ( - - {placeholder ? ( - - ) : ( - 加载中... - )} - - )} - {(inView || loaded) && ( - setLoaded(true)} - /> - )} - - ); -} diff --git a/src_bak/components/common/LoadMore/index.tsx b/src_bak/components/common/LoadMore/index.tsx deleted file mode 100644 index 8c3e11e..0000000 --- a/src_bak/components/common/LoadMore/index.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import React from 'react' -import { View, Text } from '@tarojs/components' - -interface LoadMoreProps { - loading?: boolean - finished?: boolean -} - -const LoadMore: React.FC = ({ loading = false, finished = false }) => { - if (finished) { - return ( - - - 没有更多了 - - - ) - } - - if (loading) { - return ( - - 加载中... - - ) - } - - return null -} - -export default LoadMore diff --git a/src_bak/components/common/Loading/index.tsx b/src_bak/components/common/Loading/index.tsx deleted file mode 100644 index 15d2396..0000000 --- a/src_bak/components/common/Loading/index.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import React from 'react' -import { View, Text } from '@tarojs/components' - -interface LoadingProps { - /** 提示文字,默认"加载中..." */ - text?: string - /** 是否全屏居中显示 */ - fullscreen?: boolean - /** 自定义样式类名 */ - className?: string -} - -/** - * 统一加载状态组件 - * - 小程序兼容(无 CSS transition / animation 依赖) - * - 支持内嵌和全屏两种模式 - */ -const Loading: React.FC = ({ - text = '加载中...', - fullscreen = false, - className = '', -}) => { - const content = ( - - {/* 简单的旋转加载指示器 */} - - {text} - - ) - - // 全屏模式需要外层容器 - if (fullscreen) { - return <>{content} - } - - return content -} - -export default Loading diff --git a/src_bak/components/common/OrderCard/index.tsx b/src_bak/components/common/OrderCard/index.tsx deleted file mode 100644 index 0b8c057..0000000 --- a/src_bak/components/common/OrderCard/index.tsx +++ /dev/null @@ -1,137 +0,0 @@ -import React from 'react' -import { View, Text, Image } from '@tarojs/components' -import Taro from '@tarojs/taro' -import type { ShopOrder } from '@/api/shop/shopOrder/model' -import Price from '../Price' - -interface OrderCardProps { - order: ShopOrder - onClick?: () => void -} - -/** 综合 payStatus + deliveryStatus + orderStatus 计算列表卡片状态文案 */ -const getCardStatus = (order: ShopOrder): { text: string; color: string } => { - const { payStatus, deliveryStatus, orderStatus } = order - - if (orderStatus === 2) return { text: '已取消', color: '#999' } - if (orderStatus === 3) return { text: '取消中', color: '#ff7d00' } - if (orderStatus === 6) return { text: '已退款', color: '#999' } - if (orderStatus === 4 || orderStatus === 7) return { text: '退款申请中', color: '#ee0a24' } - if (orderStatus === 5) return { text: '退款被拒绝', color: '#ee0a24' } - - if (!payStatus) return { text: '待付款', color: '#ee0a24' } - if (deliveryStatus === 10) return { text: '待发货', color: '#4b9cf5' } - if (deliveryStatus === 20 || deliveryStatus === 30) return { text: '待收货', color: '#4b9cf5' } - if (orderStatus === 1) return { text: '已完成', color: '#0e932e' } - - return { text: '已付款', color: '#0e932e' } -} - -const OrderCard: React.FC = ({ order, onClick }) => { - const handleClick = () => { - if (onClick) { - onClick() - return - } - Taro.navigateTo({ url: `/pages/order/detail?id=${order.orderId}` }) - } - - const { text: statusText, color: statusColor } = getCardStatus(order) - - // 获取首个商品图片作为封面,或显示默认占位 - const coverImage = order.orderGoods?.[0]?.image || '' - const hasGoods = (order.orderGoods?.length || 0) > 0 - - return ( - - {/* 头部:订单号 + 状态 */} - - - 订单号: {order.orderNo} - - - {statusText} - - - - {/* 商品信息区域 */} - {hasGoods ? ( - - {order.orderGoods?.map((item, idx) => ( - - {/* 商品缩略图 */} - - {item.image ? ( - - ) : ( - - 暂无图片 - - )} - - - {/* 商品信息 */} - - - - {item.goodsName || '未知商品'} - - {item.spec ? ( - - 规格: {item.spec} - - ) : null} - - - - - x{item.totalNum || 1} - - - - - ))} - - ) : ( - /* 无商品信息时的 fallback */ - - - {coverImage ? ( - - ) : ( - 暂无图片 - )} - - - - {order.title || '订单商品'} - - - 共{order.totalNum || 0}件 - - - - )} - - {/* 底部:日期 + 金额汇总 */} - - - {order.createTime?.slice(0, 10)} - - - - 共{order.totalNum || order.orderGoods?.reduce((sum, g) => sum + (g.totalNum || 1), 0) || 0}件 - - 实付 - - - - - ) -} - -export default OrderCard diff --git a/src_bak/components/common/Price/index.tsx b/src_bak/components/common/Price/index.tsx deleted file mode 100644 index 5e020bf..0000000 --- a/src_bak/components/common/Price/index.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import React from 'react' -import { View, Text } from '@tarojs/components' -import { isGuest } from '@/utils/auth' - -interface PriceProps { - price: string | number - original?: string | number - size?: 'small' | 'normal' | 'large' - color?: string - symbol?: string - /** - * 游客脱敏模式: - * - 当用户未登录时,**不显示价格**,改成"登录后查看"占位文案 - * - 用于过微信审核:游客可浏览商品列表/详情,但价格需登录后可见 - * - 不传则维持原行为(游客也显示价格) - */ - loginMask?: boolean - /** - * 自定义脱敏文案(仅在 loginMask=true 且游客态下生效) - */ - maskText?: string -} - -const Price: React.FC = ({ - price, - original, - size = 'normal', - color = '#ee0a24', - symbol = '¥', - loginMask = false, - maskText = '登录后查看价格', -}) => { - const fmt = (p: string | number) => { - const num = typeof p === 'string' ? parseFloat(p) : p - return isNaN(num) ? '0.00' : num.toFixed(2) - } - - const sizeMap = { - small: { mask: 'text-xs', symbol: 'text-xs', integer: 'text-sm font-medium', decimal: 'text-xs' }, - normal: { mask: 'text-sm', symbol: 'text-sm', integer: 'text-lg font-bold', decimal: 'text-sm' }, - large: { mask: 'text-base', symbol: 'text-lg', integer: 'text-2xl font-bold', decimal: 'text-lg' }, - } - - const cls = sizeMap[size] - - // 游客态 + 开启脱敏 -> 显示占位文案 - if (loginMask && isGuest()) { - return ( - - {maskText} - - ) - } - - return ( - - {symbol} - {fmt(price).split('.')[0]} - .{fmt(price).split('.')[1]} - {original && ( - ¥{fmt(original)} - )} - - ) -} - -export default Price diff --git a/src_bak/components/common/ProductCard/index.tsx b/src_bak/components/common/ProductCard/index.tsx deleted file mode 100644 index 5f52ae2..0000000 --- a/src_bak/components/common/ProductCard/index.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import React from 'react' -import { View, Text, Image } from '@tarojs/components' -import Taro from '@tarojs/taro' -import Price from '../Price' -import { isGuest } from '@/utils/auth' -import type { ShopGoods } from '@/api/shop/shopGoods/model' - -interface ProductCardProps { - product: ShopGoods - onClick?: () => void -} - -const ProductCard: React.FC = ({ product, onClick }) => { - const handleClick = () => { - if (onClick) { - onClick() - return - } - Taro.navigateTo({ url: `/pages/shop/product-detail?id=${product.goodsId}` }) - } - - return ( - - - - - - - {product.name || product.goodsName} - - - - - {product.salePrice && product.salePrice !== product.price && ( - isGuest() ? null : ( - - ¥{product.salePrice} - - ) - )} - - {product.sales !== undefined && product.sales > 0 && ( - - 已售{product.sales} - - )} - - - - ) -} - -export default ProductCard diff --git a/src_bak/components/common/VirtualList/index.tsx b/src_bak/components/common/VirtualList/index.tsx deleted file mode 100644 index 792be17..0000000 --- a/src_bak/components/common/VirtualList/index.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import { View, ScrollView } from '@tarojs/components'; -import { useState, useEffect, useRef, useCallback } from 'react'; - -interface VirtualListProps { - data: T[]; - itemHeight: number; - containerHeight: number; - renderItem: (item: T, index: number) => JSX.Element; - keyExtractor: (item: T, index: number) => string | number; - onEndReached?: () => void; - onEndReachedThreshold?: number; -} - -export default function VirtualList({ - data, - itemHeight, - containerHeight, - renderItem, - keyExtractor, - onEndReached, - onEndReachedThreshold = 0 -}: VirtualListProps) { - const [startIndex, setStartIndex] = useState(0); - const [endIndex, setEndIndex] = useState(Math.ceil(containerHeight / itemHeight) + 5); - const scrollViewRef = useRef(null); - - const visibleItemCount = Math.ceil(containerHeight / itemHeight) + 10; - const offsetY = startIndex * itemHeight; - - const handleScroll = useCallback((e: any) => { - const scrollTop = e.detail.scrollTop; - const newStartIndex = Math.floor(scrollTop / itemHeight); - const newEndIndex = newStartIndex + visibleItemCount; - - setStartIndex(Math.max(0, newStartIndex - 5)); - setEndIndex(Math.min(data.length, newEndIndex + 5)); - - // 触底加载 - if (onEndReached && onEndReachedThreshold > 0) { - const { scrollHeight, clientHeight } = e.detail; - if (scrollHeight - scrollTop - clientHeight < onEndReachedThreshold) { - onEndReached(); - } - } - }, [itemHeight, visibleItemCount, data.length, onEndReached, onEndReachedThreshold]); - - const visibleData = data.slice(startIndex, endIndex); - - return ( - - - - {visibleData.map((item, index) => ( - - {renderItem(item, startIndex + index)} - - ))} - - - - ); -} diff --git a/src_bak/config/app.ts b/src_bak/config/app.ts deleted file mode 100644 index 6b18c33..0000000 --- a/src_bak/config/app.ts +++ /dev/null @@ -1 +0,0 @@ -export * from '../../config/app' diff --git a/src_bak/contexts/AppContext.tsx b/src_bak/contexts/AppContext.tsx deleted file mode 100644 index 3528475..0000000 --- a/src_bak/contexts/AppContext.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { createContext, useContext } from 'react' - -export interface AppContextType { - theme: 'light' | 'dark' - toggleTheme: () => void -} - -const AppContext = createContext({ - theme: 'light', - toggleTheme: () => {} -}) - -export const useAppContext = () => useContext(AppContext) - -export default AppContext diff --git a/src_bak/contexts/CartContext.tsx b/src_bak/contexts/CartContext.tsx deleted file mode 100644 index 78639eb..0000000 --- a/src_bak/contexts/CartContext.tsx +++ /dev/null @@ -1,233 +0,0 @@ -import React, { createContext, useContext, useState, useCallback, type ReactNode } from 'react' -import Taro from '@tarojs/taro' -import { listShopCart, addToCart, updateCartNum, removeShopCart, removeBatchShopCart, updateCartAllChecked } from '@/api/shop/shopCart' -import type { ShopGoods, ShopGoodsSku } from '@/api/shop/shopGoods/model' - -export interface CartItem { - id?: number - goodsId: number - skuId?: number - quantity: number - product?: ShopGoods - sku?: ShopGoodsSku - checked?: boolean - // 后端返回的字段 - goodsName?: string - goodsImage?: string - skuPrice?: string - skuSpec?: string - stock?: number -} - -interface CartContextType { - items: CartItem[] - totalCount: number - totalPrice: string - selectedItems: CartItem[] - selectedCount: number - selectedPrice: string - loading: boolean - refresh: () => Promise - addItem: (product: ShopGoods, sku?: ShopGoodsSku, quantity?: number) => Promise - removeItem: (goodsId: number, skuId?: number) => Promise - updateQuantity: (goodsId: number, skuId: number | undefined, quantity: number) => Promise - toggleSelect: (goodsId: number, skuId: number | undefined) => Promise - selectAll: (checked: boolean) => Promise - clearCart: () => Promise - getItemQuantity: (goodsId: number, skuId?: number) => number - // 删除选中的商品 - removeSelected: () => Promise -} - -const CartContext = createContext(undefined) - -export const CartProvider: React.FC<{ children: ReactNode }> = ({ children }) => { - const [items, setItems] = useState([]) - const [loading, setLoading] = useState(false) - - // 刷新购物车数据 - const refresh = useCallback(async () => { - setLoading(true) - try { - const data = await listShopCart() - // 防御性检查:确保返回的是数组 - const safeData = Array.isArray(data) ? data : [] - // 转换为前端格式,默认都选中 - const mappedItems: CartItem[] = safeData.map(item => ({ - id: item.id, - goodsId: item.goodsId!, - skuId: item.skuId, - quantity: item.num || 1, - goodsName: item.goodsName, - goodsImage: item.goodsImage, - skuPrice: item.skuPrice, - skuSpec: item.skuSpec, - stock: item.stock, - checked: true, - })) - setItems(mappedItems) - } catch (err) { - console.error('刷新购物车失败', err) - setItems([]) - } finally { - setLoading(false) - } - }, []) - - // 添加商品到购物车 - const addItem = useCallback(async (product: ShopGoods, sku?: ShopGoodsSku, quantity = 1) => { - try { - const params = { - goodsId: product.goodsId!, - num: quantity, - } as Record - // 只有多规格商品才传 skuId,且不能为 0 - if (sku?.id && sku.id > 0) { - params.skuId = sku.id - } - await addToCart(params) - Taro.showToast({ title: '已加入购物车', icon: 'success' }) - // 刷新购物车 - await refresh() - } catch (err: any) { - console.error('[CartContext] 添加失败:', err) - Taro.showToast({ title: err.message || '添加失败', icon: 'none' }) - throw err - } - }, [refresh]) - - // 删除商品 - const removeItem = useCallback(async (goodsId: number, skuId?: number) => { - const item = items.find(i => i.goodsId === goodsId && i.skuId === skuId) - if (!item?.id) return - - try { - await removeShopCart(item.id) - // 本地更新 - setItems(prev => prev.filter(i => !(i.goodsId === goodsId && i.skuId === skuId))) - } catch (err: any) { - Taro.showToast({ title: err.message || '删除失败', icon: 'none' }) - } - }, [items]) - - // 更新数量 - const updateQuantity = useCallback(async (goodsId: number, skuId: number | undefined, quantity: number) => { - if (quantity <= 0) { - await removeItem(goodsId, skuId) - return - } - - const item = items.find(i => i.goodsId === goodsId && i.skuId === skuId) - if (!item?.id) return - - try { - await updateCartNum({ id: item.id, num: quantity }) - // 本地更新 - setItems(prev => prev.map(i => - (i.goodsId === goodsId && i.skuId === skuId) ? { ...i, quantity } : i - )) - } catch (err: any) { - Taro.showToast({ title: err.message || '更新失败', icon: 'none' }) - } - }, [items, removeItem]) - - // 切换选中状态 - const toggleSelect = useCallback(async (goodsId: number, skuId: number | undefined) => { - const item = items.find(i => i.goodsId === goodsId && i.skuId === skuId) - if (!item || !item.id) return - - const newChecked = !item.checked - // 本地立即更新 - setItems(prev => prev.map(i => - (i.goodsId === goodsId && i.skuId === skuId) ? { ...i, checked: newChecked } : i - )) - - // 同步到后端 - try { - await updateCartChecked(item.id, newChecked) - } catch (err) { - // API失败时回滚本地状态 - setItems(prev => prev.map(i => - (i.goodsId === goodsId && i.skuId === skuId) ? { ...i, checked: !newChecked } : i - )) - console.error('更新选中状态失败', err) - } - }, [items]) - - // 全选/取消全选 - const selectAll = useCallback(async (checked: boolean) => { - // 本地立即更新 - setItems(prev => prev.map(i => ({ ...i, checked }))) - // 尝试调用API - try { - await updateCartAllChecked(checked) - } catch (err) { - // API失败时静默处理,本地状态已更新 - } - }, []) - - // 清空购物车 - const clearCart = useCallback(async () => { - try { - await removeBatchShopCart(items.map(i => i.id!).filter(Boolean)) - setItems([]) - } catch (err: any) { - Taro.showToast({ title: err.message || '清空失败', icon: 'none' }) - } - }, [items]) - - // 删除选中的商品 - const removeSelected = useCallback(async () => { - const selected = items.filter(i => i.checked && i.id) - if (selected.length === 0) return - - try { - await removeBatchShopCart(selected.map(i => i.id!)) - setItems(prev => prev.filter(i => !i.checked)) - Taro.showToast({ title: `已删除${selected.length}件商品`, icon: 'success' }) - } catch (err: any) { - Taro.showToast({ title: err.message || '删除失败', icon: 'none' }) - } - }, [items]) - - const getItemQuantity = useCallback((goodsId: number, skuId?: number): number => { - return items.find(i => i.goodsId === goodsId && i.skuId === skuId)?.quantity || 0 - }, [items]) - - const calcPrice = (list: CartItem[]) => - list.reduce((sum, i) => sum + Number(i.skuPrice || i.sku?.price || i.product?.salePrice || i.product?.price || 0) * i.quantity, 0).toFixed(2) - - const selectedItems = items.filter(i => i.checked) - const selectedCount = selectedItems.reduce((s, i) => s + i.quantity, 0) - - return ( - s + i.quantity, 0), - totalPrice: calcPrice(items), - selectedItems, - selectedCount, - selectedPrice: calcPrice(selectedItems), - loading, - refresh, - addItem, - removeItem, - updateQuantity, - toggleSelect, - selectAll, - clearCart, - getItemQuantity, - removeSelected, - }} - > - {children} - - ) -} - -export const useCartContext = (): CartContextType => { - const context = useContext(CartContext) - if (!context) throw new Error('useCartContext must be used within CartProvider') - return context -} diff --git a/src_bak/contexts/UserContext.tsx b/src_bak/contexts/UserContext.tsx deleted file mode 100644 index a4d9864..0000000 --- a/src_bak/contexts/UserContext.tsx +++ /dev/null @@ -1,135 +0,0 @@ -import React, { createContext, useContext, useState, useEffect, type ReactNode } from 'react' -import Taro from '@tarojs/taro' -import type { User } from '@/api/system/user/model' -import { getUserInfo, loginByOpenId } from '@/api/layout' -import { saveStorageByLoginUser, clearStorageByLoginUser } from '@/utils/server' -import { TenantId } from '@/config/app' - -interface UserContextType { - user: User | null - isLoggedIn: boolean - loading: boolean - loginUser: (token: string, userInfo: User) => void - logoutUser: () => void - refreshUser: () => Promise - syncFromStorage: () => boolean -} - -const UserContext = createContext(undefined) - -export const UserProvider: React.FC<{ children: ReactNode }> = ({ children }) => { - const [user, setUser] = useState(null) - const [loading, setLoading] = useState(true) - - useEffect(() => { - const init = async () => { - const token = Taro.getStorageSync('access_token') - const userData = Taro.getStorageSync('User') - - // 情况1: 有本地token和用户数据,直接使用 - if (token && userData) { - const parsed = typeof userData === 'string' ? JSON.parse(userData) : userData - setUser(parsed as User) - setLoading(false) - return - } - - // 情况2: 有token但没有用户数据,尝试从接口获取 - if (token) { - try { - const userInfo = await getUserInfo() - setUser(userInfo) - setLoading(false) - return - } catch { - // token无效,清除并尝试静默登录 - clearStorageByLoginUser() - } - } - - // 情况3: 没有本地token,尝试静默登录(老用户自动登录) - try { - const loginResult = await new Promise<{ access_token?: string; user?: User }>((resolve, reject) => { - Taro.login({ - success: (res) => { - if (res.code) { - loginByOpenId({ code: res.code, tenantId: TenantId }) - .then(resolve) - .catch(reject) - } else { - reject(new Error('no code')) - } - }, - fail: reject, - }) - }) - // 静默登录成功(老用户),自动完成登录 - if (loginResult?.access_token && loginResult?.user) { - saveStorageByLoginUser(loginResult.access_token, loginResult.user) - setUser(loginResult.user) - } - } catch { - // 静默登录失败(非老用户或网络问题),保持未登录状态 - } - - setLoading(false) - } - init() - }, []) - - const loginUser = (token: string, userInfo: User) => { - saveStorageByLoginUser(token, userInfo) - setUser(userInfo) - } - - const logoutUser = () => { - clearStorageByLoginUser() - setUser(null) - } - - /** 从 storage 快速同步用户状态(无需网络请求),供页面 useDidShow 调用 */ - const syncFromStorage = (): boolean => { - const token = Taro.getStorageSync('access_token') - const userData = Taro.getStorageSync('User') - if (token && userData) { - const parsed = typeof userData === 'string' ? JSON.parse(userData) : userData - setUser(parsed as User) - return true - } - if (!token) { - setUser(null) - } - return false - } - - const refreshUser = async (): Promise => { - if (!Taro.getStorageSync('access_token')) return null - try { - const userInfo = await getUserInfo() - const token = Taro.getStorageSync('access_token') - if (token) { - saveStorageByLoginUser(token, userInfo) - } - setUser(userInfo) - return userInfo - } catch { - return null - } - } - - return ( - - {children} - - ) -} - -export const useUserContext = (): UserContextType => { - const context = useContext(UserContext) - if (!context) { - throw new Error('useUserContext must be used within UserProvider') - } - return context -} diff --git a/src_bak/hooks/index.ts b/src_bak/hooks/index.ts deleted file mode 100644 index 4f2ea4e..0000000 --- a/src_bak/hooks/index.ts +++ /dev/null @@ -1,28 +0,0 @@ -// Context Hooks -export { useAppContext } from './useAppContext' -export { useUser } from './useUser' -export { useCartContext } from '../contexts/CartContext' - -// Theme -export { useTheme } from './useTheme' - -// Utility Hooks -export { useCountDown } from './useCountDown' -export type { CountDownResult } from './useCountDown' - -export { useCountUp } from './useCountUp' -export type { CountUpResult, CountUpOptions } from './useCountUp' - -export { useRequest } from './useRequest' -export type { - RequestState, - UseRequestOptions, - UseRequestReturn, -} from './useRequest' - -// Feature Hooks -export { useAddress } from './useAddress' -export { useCoupon } from './useCoupon' -export { usePagination } from './usePagination' -export { usePayment } from './usePayment' -export { useScrollHeight } from './useScrollHeight' diff --git a/src_bak/hooks/useAddress.ts b/src_bak/hooks/useAddress.ts deleted file mode 100644 index d408c36..0000000 --- a/src_bak/hooks/useAddress.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { useState, useCallback } from 'react' -import { - listShopUserAddress, - getShopUserAddress, - addShopUserAddress, - updateShopUserAddress, - removeShopUserAddress, - setDefaultAddress, -} from '@/api/shop/shopUserAddress' -import type { ShopUserAddress } from '@/api/shop/shopUserAddress/model' - -interface UseAddressReturn { - addresses: ShopUserAddress[] - loading: boolean - defaultAddress: ShopUserAddress | null - loadAddresses: () => Promise - getAddress: (id: number) => Promise - addAddress: (data: Partial) => Promise - updateAddress: (data: ShopUserAddress) => Promise - deleteAddress: (id: number) => Promise - setDefault: (id: number) => Promise -} - -export function useAddress(): UseAddressReturn { - const [addresses, setAddresses] = useState([]) - const [loading, setLoading] = useState(false) - - const loadAddresses = useCallback(async () => { - setLoading(true) - try { - const list = await listShopUserAddress() - // 调试日志:可看到解析后的地址数量与首项 - // eslint-disable-next-line no-console - console.log('[useAddress] loaded addresses:', Array.isArray(list) ? list.length : 0, - list && (list as any[]).length > 0 ? JSON.stringify(list[0])?.substring(0, 200) : '(empty)') - setAddresses(Array.isArray(list) ? list : []) - } catch (error: any) { - // eslint-disable-next-line no-console - console.error('[useAddress] Load addresses error:', error?.message || error) - setAddresses([]) - } finally { - setLoading(false) - } - }, []) - - /** 根据 ID 获取单个地址 */ - const getAddress = useCallback(async (id: number): Promise => { - try { - return await getShopUserAddress(id) - } catch { - return null - } - }, []) - - const addAddress = useCallback(async (data: Partial): Promise => { - try { - await addShopUserAddress(data as any) - await loadAddresses() - return true - } catch { - return false - } - }, [loadAddresses]) - - const updateAddress = useCallback(async (data: ShopUserAddress): Promise => { - try { - await updateShopUserAddress(data) - await loadAddresses() - return true - } catch { - return false - } - }, [loadAddresses]) - - const deleteAddress = useCallback(async (id: number): Promise => { - try { - await removeShopUserAddress(id) - setAddresses(prev => prev.filter(a => a.id !== id)) - return true - } catch { - return false - } - }, []) - - const setDefault = useCallback(async (id: number): Promise => { - try { - await setDefaultAddress(id) - await loadAddresses() - return true - } catch { - return false - } - }, [loadAddresses]) - - const defaultAddress = addresses.find(a => a.isDefault) || addresses[0] || null - - return { addresses, loading, defaultAddress, loadAddresses, getAddress, addAddress, updateAddress, deleteAddress, setDefault } -} diff --git a/src_bak/hooks/useAppContext.ts b/src_bak/hooks/useAppContext.ts deleted file mode 100644 index 279c7fb..0000000 --- a/src_bak/hooks/useAppContext.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { useContext } from 'react' -import AppContext from '@/contexts/AppContext' - -export const useAppContext = () => { - const context = useContext(AppContext) - - if (!context) { - throw new Error('useAppContext 必须在 AppContext.Provider 内使用') - } - - return context -} diff --git a/src_bak/hooks/useCountDown.ts b/src_bak/hooks/useCountDown.ts deleted file mode 100644 index 3924c1c..0000000 --- a/src_bak/hooks/useCountDown.ts +++ /dev/null @@ -1,145 +0,0 @@ -import { useState, useEffect, useCallback, useRef } from 'react' - -export interface CountDownResult { - /** 剩余秒数 */ - seconds: number - /** 剩余分钟 */ - minutes: number - /** 剩余小时 */ - hours: number - /** 剩余天数 */ - days: number - /** 总剩余秒数 */ - totalSeconds: number - /** 是否在运行 */ - isRunning: boolean - /** 是否已结束 */ - isExpired: boolean - /** 格式化后的字符串 */ - formatted: string - /** 暂停 */ - pause: () => void - /** 继续 */ - resume: () => void - /** 重置 */ - reset: (newTargetDate?: number) => void -} - -/** - * 倒计时 Hook - * @param targetDate 目标时间戳(毫秒),0 表示立即结束 - * @param options 配置选项 - */ -export function useCountDown( - targetDate: number, - options: { - /** 触发间隔(毫秒),默认 1000 */ - interval?: number - /** 结束时的回调 */ - onComplete?: () => void - /** 是否自动开始,默认 true */ - autoStart?: boolean - /** 格式化函数,默认返回 HH:MM:SS 或 DD天HH:MM:SS */ - format?: (result: Pick) => string - } = {} -): CountDownResult { - const { interval = 1000, onComplete, autoStart = true, format } = options - - const targetRef = useRef(targetDate) - const onCompleteRef = useRef(onComplete) - const intervalRef = useRef | null>(null) - - const [state, setState] = useState(() => calculateTimeLeft(targetDate)) - const [isRunning, setIsRunning] = useState(autoStart) - - // 更新回调引用 - useEffect(() => { - onCompleteRef.current = onComplete - }, [onComplete]) - - // 更新目标时间 - useEffect(() => { - targetRef.current = targetDate - setState(calculateTimeLeft(targetDate)) - }, [targetDate]) - - // 计算剩余时间 - function calculateTimeLeft(target: number) { - const now = Date.now() - const diff = Math.max(0, Math.floor((target - now) / 1000)) - return { - totalSeconds: diff, - days: Math.floor(diff / 86400), - hours: Math.floor((diff % 86400) / 3600), - minutes: Math.floor((diff % 3600) / 60), - seconds: diff % 60, - } - } - - // 默认格式化 - const defaultFormat = useCallback((r: Pick) => { - const pad = (n: number) => String(n).padStart(2, '0') - if (r.days > 0) { - return `${r.days}天${pad(r.hours)}:${pad(r.minutes)}:${pad(r.seconds)}` - } - return `${pad(r.hours)}:${pad(r.minutes)}:${pad(r.seconds)}` - }, []) - - // 启动定时器 - const startInterval = useCallback(() => { - if (intervalRef.current) clearInterval(intervalRef.current) - intervalRef.current = setInterval(() => { - const left = calculateTimeLeft(targetRef.current) - setState(left) - if (left.totalSeconds <= 0) { - if (intervalRef.current) clearInterval(intervalRef.current) - setIsRunning(false) - onCompleteRef.current?.() - } - }, interval) - }, [interval]) - - // 控制定时器 - useEffect(() => { - if (isRunning) { - // 立即执行一次 - const left = calculateTimeLeft(targetRef.current) - setState(left) - if (left.totalSeconds <= 0) { - setIsRunning(false) - onCompleteRef.current?.() - } else { - startInterval() - } - } else { - if (intervalRef.current) { - clearInterval(intervalRef.current) - intervalRef.current = null - } - } - return () => { - if (intervalRef.current) clearInterval(intervalRef.current) - } - }, [isRunning, startInterval]) - - const pause = useCallback(() => setIsRunning(false), []) - const resume = useCallback(() => { - if (state.totalSeconds > 0) setIsRunning(true) - }, [state.totalSeconds]) - const reset = useCallback((newTarget?: number) => { - const target = newTarget ?? targetDate - targetRef.current = target - setState(calculateTimeLeft(target)) - setIsRunning(true) - }, [targetDate]) - - return { - ...state, - isRunning, - isExpired: state.totalSeconds <= 0, - formatted: (format ?? defaultFormat)(state), - pause, - resume, - reset, - } -} diff --git a/src_bak/hooks/useCountUp.ts b/src_bak/hooks/useCountUp.ts deleted file mode 100644 index 35401ba..0000000 --- a/src_bak/hooks/useCountUp.ts +++ /dev/null @@ -1,130 +0,0 @@ -import { useState, useEffect, useCallback, useRef } from 'react' - -export interface CountUpResult { - /** 当前秒数 */ - seconds: number - /** 当前分钟 */ - minutes: number - /** 当前小时 */ - hours: number - /** 总秒数 */ - totalSeconds: number - /** 是否在运行 */ - isRunning: boolean - /** 格式化后的字符串 */ - formatted: string - /** 暂停 */ - pause: () => void - /** 继续 */ - resume: () => void - /** 重置 */ - reset: (newStartFrom?: number) => void -} - -export interface CountUpOptions { - /** 起始值(秒),默认 0 */ - startFrom?: number - /** 触发间隔(毫秒),默认 1000 */ - interval?: number - /** 最大值,超出后停止 */ - maxValue?: number - /** 格式化函数 */ - format?: (result: Pick) => string -} - -/** - * 正向计时 Hook - * @param options 配置选项 - */ -export function useCountUp(options: CountUpOptions = {}): CountUpResult { - const { startFrom = 0, interval = 1000, maxValue, format } = options - - const startRef = useRef(startFrom) - const maxRef = useRef(maxValue) - const intervalRef = useRef | null>(null) - - const [totalSeconds, setTotalSeconds] = useState(startFrom) - const [isRunning, setIsRunning] = useState(false) - - // 计算时分秒 - const calcTime = useCallback((total: number) => ({ - totalSeconds: total, - hours: Math.floor(total / 3600), - minutes: Math.floor((total % 3600) / 60), - seconds: total % 60, - }), []) - - const [time, setTime] = useState(() => calcTime(startFrom)) - - // 默认格式化 - const defaultFormat = useCallback((r: Pick) => { - const pad = (n: number) => String(n).padStart(2, '0') - return `${pad(r.hours)}:${pad(r.minutes)}:${pad(r.seconds)}` - }, []) - - const startInterval = useCallback(() => { - if (intervalRef.current) clearInterval(intervalRef.current) - intervalRef.current = setInterval(() => { - setTotalSeconds(prev => { - const next = prev + Math.floor(interval / 1000) - const max = maxRef.current - if (max !== undefined && next >= max) { - if (intervalRef.current) clearInterval(intervalRef.current) - setIsRunning(false) - return max - } - return next - }) - }, interval) - }, [interval]) - - // 更新 refs - useEffect(() => { - startRef.current = startFrom - setTotalSeconds(startFrom) - setTime(calcTime(startFrom)) - }, [startFrom, calcTime]) - - useEffect(() => { - maxRef.current = maxValue - }, [maxValue]) - - // 同步 totalSeconds 到 time - useEffect(() => { - setTime(calcTime(totalSeconds)) - }, [totalSeconds, calcTime]) - - // 控制定时器 - useEffect(() => { - if (isRunning) { - startInterval() - } else { - if (intervalRef.current) { - clearInterval(intervalRef.current) - intervalRef.current = null - } - } - return () => { - if (intervalRef.current) clearInterval(intervalRef.current) - } - }, [isRunning, startInterval]) - - const pause = useCallback(() => setIsRunning(false), []) - const resume = useCallback(() => setIsRunning(true), []) - const reset = useCallback((newStart?: number) => { - const start = newStart ?? startFrom - startRef.current = start - setTotalSeconds(start) - setTime(calcTime(start)) - setIsRunning(true) - }, [startFrom, calcTime]) - - return { - ...time, - isRunning, - formatted: (format ?? defaultFormat)(time), - pause, - resume, - reset, - } -} diff --git a/src_bak/hooks/useCoupon.ts b/src_bak/hooks/useCoupon.ts deleted file mode 100644 index f927293..0000000 --- a/src_bak/hooks/useCoupon.ts +++ /dev/null @@ -1,104 +0,0 @@ -import { useState, useCallback } from 'react' -import { - listShopUserCoupon, - pageShopUserCoupon, - removeShopUserCoupon, - getMyAvailableCoupons, - getMyUsedCoupons, - getMyExpiredCoupons, -} from '@/api/shop/shopUserCoupon' -import type { ShopUserCoupon } from '@/api/shop/shopUserCoupon/model' - -export type CouponTab = 'available' | 'used' | 'expired' - -interface UseCouponReturn { - coupons: ShopUserCoupon[] - loading: boolean - tab: CouponTab - setTab: (tab: CouponTab) => void - loadCoupons: () => Promise - deleteCoupon: (id: string) => Promise -} - -export function useCoupon(): UseCouponReturn { - const [coupons, setCoupons] = useState([]) - const [loading, setLoading] = useState(false) - const [tab, setTab] = useState('available') - - const loadCoupons = useCallback(async () => { - setLoading(true) - try { - let list: ShopUserCoupon[] = [] - switch (tab) { - case 'available': - list = await getMyAvailableCoupons() - break - case 'used': - list = await getMyUsedCoupons() - break - case 'expired': - list = await getMyExpiredCoupons() - break - } - setCoupons(list || []) - } catch (error) { - console.error('Load coupons error:', error) - } finally { - setLoading(false) - } - }, [tab]) - - const deleteCoupon = useCallback(async (id: string): Promise => { - try { - await removeShopUserCoupon(Number(id)) - setCoupons(prev => prev.filter(c => c.id !== id)) - return true - } catch { - return false - } - }, []) - - return { coupons, loading, tab, setTab, loadCoupons, deleteCoupon } -} - -// 获取优惠券类型文本 -export function getCouponTypeText(type?: number): string { - switch (type) { - case 10: return '满减券' - case 20: return '折扣券' - case 30: return '免费券' - case 40: return '无门槛券' - case 50: return '场地使用券' - default: return '优惠券' - } -} - -// 获取优惠券状态文本 -export function getCouponStatusText(coupon: ShopUserCoupon): string { - if (coupon.status === 1) return '已使用' - if (coupon.status === 2 || coupon.isExpire === 1) return '已过期' - return '未使用' -} - -// 格式化优惠券金额 -export function formatCouponValue(coupon: ShopUserCoupon): string { - switch (coupon.type) { - case 20: - // 折扣券 - return `${coupon.discount || 0}折` - case 40: - // 无门槛券 - return `¥${coupon.reducePrice || '0'}` - case 50: - // 场地使用券 - return coupon.useCount && coupon.useCount > 0 ? `${coupon.useCount}次` : '不限次' - default: - // 满减券/免费券 - return `¥${coupon.reducePrice || '0'}` - } -} - -// 检查优惠券是否即将过期(3天内) -export function isExpiringSoon(coupon: ShopUserCoupon): boolean { - return coupon.isExpiringSoon === true || (coupon.daysRemaining !== undefined && coupon.daysRemaining <= 3) -} diff --git a/src_bak/hooks/usePagination.ts b/src_bak/hooks/usePagination.ts deleted file mode 100644 index d004e1d..0000000 --- a/src_bak/hooks/usePagination.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { useState, useCallback } from 'react' -import type { PageParam, PageResult } from '@/api/index' - -interface UsePaginationOptions { - api: (params: PageParam) => Promise> - defaultParams?: Partial - pageSize?: number - immediate?: boolean -} - -interface UsePaginationReturn { - list: T[] - loading: boolean - refreshing: boolean - loadingMore: boolean - finished: boolean - total: number - params: PageParam - run: (extraParams?: Record) => Promise - refresh: () => Promise - loadMore: () => Promise - reset: () => void - setParams: (params: Partial) => void -} - -export function usePagination(options: UsePaginationOptions): UsePaginationReturn { - const { api, defaultParams = {}, pageSize = 10, immediate = false } = options - - const [list, setList] = useState([]) - const [loading, setLoading] = useState(false) - const [refreshing, setRefreshing] = useState(false) - const [loadingMore, setLoadingMore] = useState(false) - const [finished, setFinished] = useState(false) - const [total, setTotal] = useState(0) - const [params, setParamsState] = useState({ - page: 1, - limit: pageSize, - ...defaultParams, - }) - - const setParams = (newParams: Partial) => { - setParamsState(prev => ({ ...prev, ...newParams })) - } - - const fetchData = useCallback(async (page: number, extraParams?: Record) => { - const result = await api({ ...params, ...extraParams, page, limit: pageSize }) - setList(result?.list || []) - setTotal(result?.count || 0) - setFinished((result?.list || []).length < pageSize) - return result - }, [api, params, pageSize]) - - const run = useCallback(async (extraParams?: Record) => { - setLoading(true) - try { - await fetchData(1, extraParams) - setParamsState(prev => ({ ...prev, page: 1 })) - } catch (error) { - console.error('Pagination run error:', error) - } finally { - setLoading(false) - } - }, [fetchData]) - - const refresh = useCallback(async () => { - if (refreshing) return - setRefreshing(true) - setFinished(false) - try { - await fetchData(1) - setParamsState(prev => ({ ...prev, page: 1 })) - } catch (error) { - console.error('Refresh error:', error) - } finally { - setRefreshing(false) - } - }, [fetchData, refreshing]) - - const loadMore = useCallback(async () => { - if (loadingMore || finished) return - setLoadingMore(true) - try { - const nextPage = (params.page || 1) + 1 - const result = await api({ ...params, page: nextPage, limit: pageSize }) - const newList = result?.list || [] - setList(prev => [...prev, ...newList]) - setTotal(result?.count || 0) - setFinished(newList.length < pageSize) - setParamsState(prev => ({ ...prev, page: nextPage })) - } catch (error) { - console.error('LoadMore error:', error) - } finally { - setLoadingMore(false) - } - }, [api, params, pageSize, loadingMore, finished]) - - const reset = useCallback(() => { - setList([]) - setFinished(false) - setTotal(0) - setParamsState(prev => ({ ...prev, page: 1 })) - }, []) - - // 立即执行 - if (immediate && list.length === 0 && !loading && !refreshing) { - run() - } - - return { list, loading, refreshing, loadingMore, finished, total, params, run, refresh, loadMore, reset, setParams } -} diff --git a/src_bak/hooks/usePayment.ts b/src_bak/hooks/usePayment.ts deleted file mode 100644 index 6c90aab..0000000 --- a/src_bak/hooks/usePayment.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { useState, useCallback } from 'react' -import Taro from '@tarojs/taro' - -interface UsePaymentOptions { - onSuccess?: (orderNo: string) => void - onFail?: (error: any) => void -} - -interface UsePaymentReturn { - loading: boolean - error: string | null - requestPayment: (payParams: { - timeStamp: string - nonceStr: string - package: string - signType: string - paySign: string - orderNo?: string - }) => Promise - createAndPay: (createOrderFn: () => Promise) => Promise -} - -export function usePayment(options: UsePaymentOptions = {}): UsePaymentReturn { - const { onSuccess, onFail } = options - const [loading, setLoading] = useState(false) - const [error, setError] = useState(null) - - const requestPayment = useCallback(async (payParams: { - timeStamp: string - nonceStr: string - package: string - signType: string - paySign: string - orderNo?: string - }): Promise => { - setLoading(true) - setError(null) - try { - await Taro.requestPayment({ - timeStamp: payParams.timeStamp, - nonceStr: payParams.nonceStr, - package: payParams.package, - signType: payParams.signType as any, - paySign: payParams.paySign, - }) - payParams.orderNo && onSuccess?.(payParams.orderNo) - return true - } catch (err: any) { - if (err.errMsg?.includes('cancel')) { - setError('支付已取消') - } else { - setError(err.errMsg || '支付失败') - onFail?.(err) - } - return false - } finally { - setLoading(false) - } - }, [onSuccess, onFail]) - - const createAndPay = useCallback(async (createOrderFn: () => Promise): Promise => { - setLoading(true) - setError(null) - try { - const result = await createOrderFn() - return await requestPayment(result) - } catch (err: any) { - setError(err.message || '创建订单失败') - onFail?.(err) - return false - } finally { - setLoading(false) - } - }, [requestPayment, onFail]) - - return { loading, error, requestPayment, createAndPay } -} diff --git a/src_bak/hooks/useRequest.ts b/src_bak/hooks/useRequest.ts deleted file mode 100644 index d3866b3..0000000 --- a/src_bak/hooks/useRequest.ts +++ /dev/null @@ -1,325 +0,0 @@ -import { useState, useEffect, useCallback, useRef } from 'react' - -/** 简易 AbortSignal 替代(兼容小程序环境) */ -class SimpleAbortSignal { - private _aborted = false - get aborted() { return this._aborted } - abort() { this._aborted = true } -} -class SimpleAbortController { - signal = new SimpleAbortSignal() - abort() { this.signal.abort() } -} - -export interface RequestState { - /** 请求结果数据 */ - data: T | null - /** 是否加载中 */ - loading: boolean - /** 错误信息 */ - error: Error | null - /** 是否首次加载完成(不管成功或失败) */ - initialized: boolean -} - -export interface UseRequestOptions { - /** 手动触发模式下需要调用 run 执行 */ - manual?: boolean - /** 初始数据 */ - defaultData?: T - /** 请求函数 */ - service?: (...args: P) => Promise - /** 成功回调 */ - onSuccess?: (data: T, params: P) => void - /** 失败回调 */ - onError?: (error: Error, params: P) => void - /** 轮询间隔(毫秒),设置后自动轮询 */ - pollingInterval?: number - /** 轮询在页面隐藏时暂停,默认 true */ - pollingWhenHidden?: boolean - /** 防抖延迟(毫秒) */ - debounceInterval?: number - /** 依赖变化时自动重新请求 */ - refreshDeps?: unknown[] - /** 请求节流间隔(毫秒) */ - throttleInterval?: number - /** 缓存 key,相同 key 的请求结果会被缓存 */ - cacheKey?: string - /** 缓存有效期(毫秒) */ - cacheTime?: number - /** 重新请求尝试次数 */ - retryCount?: number - /** 重试延迟(毫秒),默认 1000 */ - retryInterval?: number -} - -export interface UseRequestReturn { - /** 当前状态 */ - state: RequestState - /** 请求结果数据(state.data 的快捷访问) */ - data: T | null - /** 是否加载中(state.loading 的快捷访问) */ - loading: boolean - /** 错误信息(state.error 的快捷访问) */ - error: Error | null - /** 是否首次加载完成(state.initialized 的快捷访问) */ - initialized: boolean - /** 触发请求(manual 模式下) */ - run: (...params: P) => Promise - /** 带 loading 的运行 */ - runLoading: (...params: P) => Promise - /** 取消请求 */ - cancel: () => void - /** 刷新(使用上次参数) */ - refresh: () => void - /** 修改 data(不发起请求) */ - mutate: (data: T | ((prev: T | null) => T)) => void - /** 当前参数 */ - params: P -} - -// 简单缓存 -const cache = new Map() - -function getCache(key: string): T | null { - const item = cache.get(key) - if (!item) return null - if (Date.now() > item.expireAt) { - cache.delete(key) - return null - } - return item.data as T -} - -function setCache(key: string, data: T, cacheTime: number) { - cache.set(key, { data, expireAt: Date.now() + cacheTime }) -} - -/** - * 请求封装 Hook - * @param service 请求函数 - * @param options 配置选项 - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export function useRequest( - service: (...args: P) => Promise, - options: UseRequestOptions = {} -): UseRequestReturn - -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export function useRequest( - service: undefined, - options: UseRequestOptions = {} -): UseRequestReturn - -export function useRequest( - service: ((...args: P) => Promise) | undefined, - options: UseRequestOptions = {} -): UseRequestReturn { - const { - manual = false, - defaultData, - onSuccess, - onError, - pollingInterval, - pollingWhenHidden = true, - debounceInterval, - refreshDeps = [], - throttleInterval, - cacheKey, - cacheTime = 5 * 60 * 1000, - retryCount = 0, - retryInterval = 1000, - } = options - - const [state, setState] = useState>({ - data: defaultData ?? null, - loading: false, - error: null, - initialized: !!defaultData, - }) - - const [params, setParams] = useState

([] as unknown as P) - - const serviceRef = useRef(service) - const onSuccessRef = useRef(onSuccess) - const onErrorRef = useRef(onError) - const pollingTimerRef = useRef | null>(null) - const abortControllerRef = useRef(null) - const isMountedRef = useRef(true) - const debounceTimerRef = useRef | null>(null) - const throttleLastRunRef = useRef(0) - - // 更新 refs - useEffect(() => { - serviceRef.current = service - }, [service]) - useEffect(() => { onSuccessRef.current = onSuccess }, [onSuccess]) - useEffect(() => { onErrorRef.current = onError }, [onError]) - - // 清理 - useEffect(() => { - isMountedRef.current = true - return () => { - isMountedRef.current = false - if (pollingTimerRef.current) clearInterval(pollingTimerRef.current) - if (debounceTimerRef.current) clearTimeout(debounceTimerRef.current) - abortControllerRef.current?.abort() - } - }, []) - - // 页面可见性处理(使用 Taro 生命周期,兼容小程序环境) - useEffect(() => { - if (!pollingInterval || !pollingWhenHidden) return - // 在小程序中,Taro.useDidShow / useDidHide 仅可在页面组件中使用 - // useRequest 作为通用 hook 无法直接使用这些,因此跳过 - // 如需轮询暂停/恢复能力,可在页面组件中手动调用 cancel / refresh - }, [pollingInterval, pollingWhenHidden]) - - // 依赖刷新 - 使用 useRef 避免闭包过期 - const refreshDepsRef = useRef(refreshDeps) - refreshDepsRef.current = refreshDeps - - useEffect(() => { - if (!manual && refreshDepsRef.current.length > 0) { - refresh() - } - }, [...refreshDeps]) // eslint-disable-line - - const run = useCallback(async (...p: P): Promise => { - // 防抖 - if (debounceInterval) { - if (debounceTimerRef.current) clearTimeout(debounceTimerRef.current) - return new Promise((resolve) => { - debounceTimerRef.current = setTimeout(async () => { - const result = await doRequest(...p) - resolve(result) - }, debounceInterval) - }) - } - - // 节流 - if (throttleInterval) { - const now = Date.now() - if (now - throttleLastRunRef.current < throttleInterval) { - return - } - throttleLastRunRef.current = now - } - - return doRequest(...p) - }, [debounceInterval, throttleInterval]) // eslint-disable-line - - const doRequest = useCallback(async (...p: P): Promise => { - if (!serviceRef.current) return - - setParams(p) - abortControllerRef.current?.abort() - abortControllerRef.current = new SimpleAbortController() - - // 检查缓存 - if (cacheKey) { - const cached = getCache(cacheKey) - if (cached !== null) { - setState({ data: cached, loading: false, error: null, initialized: true }) - return cached - } - } - - setState(prev => ({ ...prev, loading: true, error: null })) - - try { - let result!: T - let attempt = 0 - const maxAttempts = retryCount + 1 - - while (attempt < maxAttempts) { - try { - result = await serviceRef.current(...p) - break - } catch (err: unknown) { - attempt++ - const isAbortError = err instanceof Error && err.message.includes('abort') - if (attempt >= maxAttempts || isAbortError) { - throw err - } - await new Promise(r => setTimeout(r, retryInterval * attempt)) - } - } - - if (!isMountedRef.current) return - - // 缓存 - if (cacheKey) { - setCache(cacheKey, result, cacheTime) - } - - setState({ data: result, loading: false, error: null, initialized: true }) - onSuccessRef.current?.(result, p) - - // 轮询 - if (pollingInterval && !pollingTimerRef.current) { - pollingTimerRef.current = setInterval(() => { - doRequest(...p) - }, pollingInterval) - } - - return result - } catch (err: unknown) { - if (!isMountedRef.current) return - const error = err instanceof Error ? err : new Error(String(err)) - setState({ data: null, loading: false, error, initialized: true }) - onErrorRef.current?.(error, p) - return undefined - } - }, [cacheKey, cacheTime, pollingInterval, pollingWhenHidden, retryCount, retryInterval]) // eslint-disable-line - - const runLoading = useCallback(async (...p: P) => { - if (!serviceRef.current) return - setParams(p) - return doRequest(...p) - }, [doRequest]) - - const cancel = useCallback(() => { - if (pollingTimerRef.current) { - clearInterval(pollingTimerRef.current) - pollingTimerRef.current = null - } - abortControllerRef.current?.abort() - setState(prev => ({ ...prev, loading: false })) - }, []) - - const refresh = useCallback(() => { - if (params.length > 0) { - run(...params) - } - }, [params, run]) - - const mutate = useCallback((data: T | ((prev: T | null) => T)) => { - setState(prev => ({ - ...prev, - data: typeof data === 'function' ? (data as (prev: T | null) => T)(prev.data) : data, - })) - }, []) - - // 自动执行 - useEffect(() => { - if (!manual && service) { - run(...([] as unknown as P)) - } - }, []) // eslint-disable-line - - return { - state, - data: state.data, - loading: state.loading, - error: state.error, - initialized: state.initialized, - run, - runLoading, - cancel, - refresh, - mutate, - params, - } -} diff --git a/src_bak/hooks/useScrollHeight.ts b/src_bak/hooks/useScrollHeight.ts deleted file mode 100644 index 1dd2274..0000000 --- a/src_bak/hooks/useScrollHeight.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { useState, useEffect } from 'react' -import Taro from '@tarojs/taro' - -/** - * 获取可滚动区域高度,替代 calc(100vh - Npx) - * 小程序不支持 vh/vw 单位,此 hook 动态计算可用高度 - * @param minus 需要减去的高度(rpx 或 px),默认 0 - */ -export function useScrollHeight(minus: number = 0) { - const [height, setHeight] = useState('100vh') - - useEffect(() => { - try { - const systemInfo = Taro.getSystemInfoSync() - // windowHeight 已经减去了导航栏等系统 UI - const available = systemInfo.windowHeight - minus - setHeight(`${available}px`) - } catch { - setHeight('100vh') - } - }, [minus]) - - return height -} diff --git a/src_bak/hooks/useTheme.ts b/src_bak/hooks/useTheme.ts deleted file mode 100644 index d128779..0000000 --- a/src_bak/hooks/useTheme.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { useContext } from 'react' -import AppContext from '@/contexts/AppContext' - -export interface ThemeConfig { - /** 当前主题 */ - theme: 'light' | 'dark' - /** 是否为深色模式 */ - isDark: boolean - /** 是否为浅色模式 */ - isLight: boolean - /** 切换主题 */ - toggleTheme: () => void - /** 设置为浅色主题 */ - setLight: () => void - /** 设置为深色主题 */ - setDark: () => void -} - -/** - * 主题 Hook - * 从 AppContext 获取主题状态和切换函数 - */ -export const useTheme = (): ThemeConfig => { - const { theme, toggleTheme } = useContext(AppContext) - - const setLight = () => { - if (theme !== 'light') toggleTheme() - } - - const setDark = () => { - if (theme !== 'dark') toggleTheme() - } - - return { - theme, - isDark: theme === 'dark', - isLight: theme === 'light', - toggleTheme, - setLight, - setDark, - } -} diff --git a/src_bak/hooks/useUser.ts b/src_bak/hooks/useUser.ts deleted file mode 100644 index c91c2ea..0000000 --- a/src_bak/hooks/useUser.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { useUserContext } from '@/contexts/UserContext' -import { useEffect, useState } from 'react' -import Taro from '@tarojs/taro' -import type { User } from '@/api/system/user/model' -import { loginByOpenId } from '@/api/layout' -import { TenantId } from '@/config/app' - -/** - * useUser - 兼容性 Hook - * 优先使用 UserContext,在未包裹 UserProvider 时降级为本地状态 - */ -export const useUser = () => { - try { - const ctx = useUserContext() - return ctx - } catch { - // 未在 UserProvider 中,使用降级逻辑 - return useUserFallback() - } -} - -/** 降级方案:不依赖 Context 的本地用户状态 */ -const useUserFallback = () => { - const [user, setUser] = useState(null) - const [loading, setLoading] = useState(true) - - const loadFromStorage = () => { - const token = Taro.getStorageSync('access_token') - const userData = Taro.getStorageSync('User') - if (token && userData) { - const parsed = typeof userData === 'string' ? JSON.parse(userData) : userData - setUser(parsed as User) - return true - } - return !!token - } - - const loginUser = (token: string, userInfo: User) => { - Taro.setStorageSync('access_token', token) - Taro.setStorageSync('User', userInfo) - setUser(userInfo) - } - - const logoutUser = () => { - Taro.removeStorageSync('access_token') - Taro.removeStorageSync('User') - setUser(null) - } - - const refreshUser = async () => { - // 降级方案不自动刷新 - return user - } - - const syncFromStorage = (): boolean => { - return loadFromStorage() - } - - useEffect(() => { - const init = async () => { - const hasLocal = loadFromStorage() - if (!hasLocal) { - try { - const data = await new Promise((resolve, reject) => { - Taro.login({ - success: (res) => loginByOpenId({ code: res.code, tenantId: TenantId }).then(resolve).catch(reject), - fail: reject, - }) - }) - if (data?.access_token && data?.user) { - loginUser(data.access_token, data.user) - } - } catch { /* ignore */ } - } - setLoading(false) - } - init() - }, []) - - return { user, isLoggedIn: !!user, loading, loginUser, logoutUser, refreshUser, syncFromStorage } -} diff --git a/src_bak/index.html b/src_bak/index.html deleted file mode 100644 index c1d7b6c..0000000 --- a/src_bak/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - Paopao Taro - <% if (typeof script !== 'undefined' && script) { %><% } %> - - -

- - diff --git a/src_bak/pages/activity/detail/index.config.ts b/src_bak/pages/activity/detail/index.config.ts deleted file mode 100644 index 2fd54bd..0000000 --- a/src_bak/pages/activity/detail/index.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - navigationBarTitleText: '活动详情', -} diff --git a/src_bak/pages/activity/detail/index.tsx b/src_bak/pages/activity/detail/index.tsx deleted file mode 100644 index 9b0c765..0000000 --- a/src_bak/pages/activity/detail/index.tsx +++ /dev/null @@ -1,245 +0,0 @@ -import React, { useState, useEffect } from 'react' -import { View, Text, ScrollView, Image } from '@tarojs/components' -import Taro from '@tarojs/taro' -import { getShopActivity, signUpActivity, cancelSignUpActivity, getSignUpStatus } from '@/api/shop/shopActivity' -import type { ShopActivity, ActivityStatus } from '@/api/shop/shopActivity/model' - -definePageConfig({ - navigationBarTitleText: '活动详情', -}) - -const ActivityDetailPage: React.FC = () => { - const { id } = Taro.getCurrentInstance().router?.params || {} - const [activity, setActivity] = useState(null) - const [loading, setLoading] = useState(true) - const [signedUp, setSignedUp] = useState(false) - const [submitting, setSubmitting] = useState(false) - - useEffect(() => { - if (id) { - fetchDetail(Number(id)) - fetchSignUpStatus(Number(id)) - } - }, [id]) - - const fetchDetail = async (activityId: number) => { - try { - const data = await getShopActivity(activityId) - setActivity(data) - } catch (err: any) { - Taro.showToast({ title: err.message || '加载失败', icon: 'none' }) - } finally { - setLoading(false) - } - } - - const fetchSignUpStatus = async (activityId: number) => { - try { - const res = await getSignUpStatus(activityId) - setSignedUp(res.signedUp) - } catch { - // 未登录或接口不可用时忽略 - } - } - - // 报名活动 - const handleSignUp = () => { - if (!activity) return - Taro.showModal({ - title: '确认报名', - content: '确定报名参加该活动吗?', - confirmColor: '#0e932e', - success: async (res) => { - if (res.confirm) { - setSubmitting(true) - try { - await signUpActivity({ activityId: activity.id, userId: 0 }) - setSignedUp(true) - setActivity(prev => prev ? { ...prev, participants: prev.participants + 1 } : prev) - Taro.showToast({ title: '报名成功', icon: 'success' }) - } catch (err: any) { - Taro.showToast({ title: err.message || '报名失败', icon: 'none' }) - } finally { - setSubmitting(false) - } - } - } - }) - } - - // 取消报名 - const handleCancelSignUp = () => { - if (!activity) return - Taro.showModal({ - title: '取消报名', - content: '确定取消报名吗?', - confirmColor: '#ef4444', - success: async (res) => { - if (res.confirm) { - setSubmitting(true) - try { - await cancelSignUpActivity(activity.id) - setSignedUp(false) - setActivity(prev => prev ? { ...prev, participants: Math.max(0, prev.participants - 1) } : prev) - Taro.showToast({ title: '已取消报名', icon: 'success' }) - } catch (err: any) { - Taro.showToast({ title: err.message || '取消失败', icon: 'none' }) - } finally { - setSubmitting(false) - } - } - } - }) - } - - // 分享活动 - const handleShare = () => { - Taro.showToast({ title: '分享功能开发中', icon: 'none' }) - } - - // 获取状态标签 - const getStatusLabel = (status: ActivityStatus) => { - const map: Record = { - upcoming: { label: '未开始', color: 'text-blue-500' }, - ongoing: { label: '进行中', color: 'text-green-500' }, - ended: { label: '已结束', color: 'text-gray-400' }, - cancelled: { label: '已取消', color: 'text-gray-400' }, - } - return map[status] || { label: '未知', color: 'text-gray-400' } - } - - // 格式化时间 - const formatTime = (timeStr: string) => { - const date = new Date(timeStr) - return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')} ${String(date.getHours()).padStart(2, '0')}:${String(date.getMinutes()).padStart(2, '0')}` - } - - if (loading) { - return ( - - 加载中... - - ) - } - - if (!activity) { - return ( - - 活动不存在 - - ) - } - - const statusInfo = getStatusLabel(activity.status) - - return ( - - - {/* 活动头图 */} - {activity.image ? ( - - ) : ( - - 🎉 - - )} - - {/* 活动信息 */} - - - {activity.name} - - {statusInfo.label} - - - - - - 📅 - {formatTime(activity.startTime)} - - - 👥 - {activity.participants}人参与 - - {activity.maxParticipants && ( - - 🔢 - 限{activity.maxParticipants}人 - - )} - - - - {activity.typeName || activity.type} - {activity.description.split('\n')[0]} - - - - {/* 活动详情 */} - - 活动详情 - - {activity.description} - - - - {/* 活动规则 */} - {activity.rules && ( - - 活动规则 - - {activity.rules} - - - )} - - - - - {/* 底部操作栏 */} - - - 分享 - - - {activity.status === 'ongoing' && !signedUp && ( - - {submitting ? '处理中...' : '立即报名'} - - )} - - {activity.status === 'ongoing' && signedUp && ( - - {submitting ? '处理中...' : '取消报名'} - - )} - - {activity.status === 'upcoming' && ( - - 即将开始 - - )} - - {(activity.status === 'ended' || activity.status === 'cancelled') && ( - - 已结束 - - )} - - - ) -} - -export default ActivityDetailPage diff --git a/src_bak/pages/activity/list/index.config.ts b/src_bak/pages/activity/list/index.config.ts deleted file mode 100644 index 6b10e16..0000000 --- a/src_bak/pages/activity/list/index.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - navigationBarTitleText: '活动列表', -} diff --git a/src_bak/pages/activity/list/index.tsx b/src_bak/pages/activity/list/index.tsx deleted file mode 100644 index c6e4efe..0000000 --- a/src_bak/pages/activity/list/index.tsx +++ /dev/null @@ -1,220 +0,0 @@ -import React, { useState, useEffect } from 'react' -import { View, Text, ScrollView } from '@tarojs/components' -import Taro from '@tarojs/taro' -import { pageShopActivity, signUpActivity } from '@/api/shop/shopActivity' -import type { ShopActivity, ActivityStatus, ActivityType } from '@/api/shop/shopActivity' -import EmptyState from '@/components/common/EmptyState' -import LoadMore from '@/components/common/LoadMore' - -definePageConfig({ - navigationBarTitleText: '活动列表', -}) - -const ActivityListPage: React.FC = () => { - const [activeTab, setActiveTab] = useState(0) - const [activities, setActivities] = useState([]) - const [loading, setLoading] = useState(false) - const [finished, setFinished] = useState(false) - const [page, setPage] = useState(1) - - useEffect(() => { - setActivities([]) - setPage(1) - setFinished(false) - loadList(1) - }, [activeTab]) - - const loadList = async (p: number) => { - if (loading) return - setLoading(true) - - try { - // 根据 tab 筛选状态 - let status: ActivityStatus | undefined - if (activeTab === 1) status = 'ongoing' - else if (activeTab === 2) status = 'upcoming' - else if (activeTab === 3) status = 'ended' - - const res = await pageShopActivity({ - page: p, - limit: 10, - status, - }) - - if (res?.list) { - if (p === 1) { - setActivities(res.list) - } else { - setActivities(prev => [...prev, ...res.list]) - } - setFinished(res.list.length < 10) - setPage(p) - } - } catch (err) { - console.error('加载活动列表失败', err) - Taro.showToast({ title: '加载失败', icon: 'none' }) - } finally { - setLoading(false) - } - } - - // 加载更多 - const handleLoadMore = () => { - if (!finished && !loading) { - loadList(page + 1) - } - } - - // 报名活动 - const handleSignUp = async (id: number) => { - Taro.showModal({ - title: '确认报名', - content: '确定报名参加该活动吗?', - confirmColor: '#0e932e', - success: async (res) => { - if (res.confirm) { - try { - await signUpActivity({ activityId: id, userId: 0 }) - Taro.showToast({ title: '报名成功', icon: 'success' }) - } catch (err) { - console.error('报名失败', err) - Taro.showToast({ title: '报名失败', icon: 'none' }) - } - } - } - }) - } - - // 获取状态标签 - const getStatusLabel = (status: ActivityStatus) => { - const map: Record = { - 'upcoming': { label: '未开始', color: 'text-blue-500' }, - 'ongoing': { label: '进行中', color: 'text-green-500' }, - 'ended': { label: '已结束', color: 'text-gray-400' }, - 'cancelled': { label: '已取消', color: 'text-gray-400' }, - } - return map[status] || { label: '未知', color: 'text-gray-400' } - } - - // 获取活动类型名称 - const getTypeLabel = (type: ActivityType) => { - const map: Record = { - 'discount': '限时折扣', - 'full_reduction': '满减活动', - 'seckill': '秒杀活动', - 'group_buy': '团购活动', - 'flash_sale': '闪购活动', - } - return map[type] || '其他' - } - - // 格式化时间 - const formatTime = (timeStr: string) => { - const date = new Date(timeStr) - const month = (date.getMonth() + 1).toString().padStart(2, '0') - const day = date.getDate().toString().padStart(2, '0') - const hour = date.getHours().toString().padStart(2, '0') - const minute = date.getMinutes().toString().padStart(2, '0') - return `${month}-${day} ${hour}:${minute}` - } - - return ( - - {/* Tab 栏 */} - - {['全部', '进行中', '未开始', '已结束'].map((tab, index) => ( - setActiveTab(index)} - > - {tab} - {activeTab === index && ( - - )} - - ))} - - - {/* 活动列表 */} - - - {activities.length === 0 && !loading ? ( - - ) : ( - activities.map(activity => ( - (() => { - const statusInfo = getStatusLabel(activity.status) - return ( - Taro.navigateTo({ url: `/pages/activity/detail/index?id=${activity.id}` })}> - {/* 活动图片 */} - - 🎉 - - - {/* 活动信息 */} - - - {activity.name} - - {statusInfo.label} - - - {activity.description} - - - - 📅 - {formatTime(activity.startTime)} - - - 👥 - {activity.participants}人参与 - - - - - {/* 活动类型标签 */} - - - {getTypeLabel(activity.type)} - - - {activity.status === 'ongoing' && ( - handleSignUp(activity.id)} - > - 立即报名 - - )} - {activity.status === 'upcoming' && ( - Taro.navigateTo({ url: `/pages/activity/detail/index?id=${activity.id}` })} - > - 查看详情 - - )} - - - ) - })() - )) - )} - - - - - - ) -} - -export default ActivityListPage diff --git a/src_bak/pages/after-sale/apply/index.config.ts b/src_bak/pages/after-sale/apply/index.config.ts deleted file mode 100644 index 716b532..0000000 --- a/src_bak/pages/after-sale/apply/index.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default { - navigationBarTitleText: '申请售后', -} diff --git a/src_bak/pages/after-sale/apply/index.tsx b/src_bak/pages/after-sale/apply/index.tsx deleted file mode 100644 index 593e9f4..0000000 --- a/src_bak/pages/after-sale/apply/index.tsx +++ /dev/null @@ -1,251 +0,0 @@ -import React, { useState } from 'react' -import { View, Text, Textarea, ScrollView, Radio, RadioGroup, Checkbox, Input } from '@tarojs/components' -import Taro from '@tarojs/taro' -import { applyAfterSale } from '@/api/shop/shopAfterSale' -import type { AfterSaleType } from '@/api/shop/shopAfterSale' - -definePageConfig({ - navigationBarTitleText: '申请售后', -}) - -const AfterSaleApplyPage: React.FC = () => { - const params = Taro.getCurrentInstance().router?.params || {} - const orderId = params.orderId || '' - const [orderGoods, setOrderGoods] = useState>([]) - const [saleType, setSaleType] = useState(1) // 1:退款, 2:退货退款, 3:换货 - const [submitting, setSubmitting] = useState(false) - const [reason, setReason] = useState('') - const [amount, setAmount] = useState('') - const [description, setDescription] = useState('') - const [images, setImages] = useState([]) - - // 退款原因选项 - const refundReasons = ['商品质量问题', '商品与描述不符', '商品破损/缺陷', '物流问题', '其他'] - const returnReasons = ['商品质量问题', '商品与描述不符', '商品破损/缺陷', '尺码/颜色不合适', '不喜欢/不想要', '其他'] - const exchangeReasons = ['商品质量问题', '商品与描述不符', '商品破损/缺陷', '尺码/颜色不合适', '其他'] - - // 获取当前原因列表 - const getCurrentReasons = () => { - if (saleType === 1) return refundReasons - if (saleType === 2) return returnReasons - return exchangeReasons - } - - // 处理商品选择 - const handleGoodsCheck = (id: number) => { - setOrderGoods(prev => - prev.map(g => g.id === id ? { ...g, checked: !g.checked } : g) - ) - } - - // 选择图片 - const handleChooseImage = () => { - if (images.length >= 6) { - Taro.showToast({ title: '最多上传6张图片', icon: 'none' }) - return - } - Taro.chooseImage({ - count: 6 - images.length, - success: (res) => { - setImages(prev => [...prev, ...res.tempFilePaths]) - } - }) - } - - // 删除图片 - const handleDeleteImage = (index: number) => { - setImages(prev => prev.filter((_, i) => i !== index)) - } - - // 提交申请 - const handleSubmit = () => { - const checkedGoods = orderGoods.filter(g => g.checked) - if (!reason) { - Taro.showToast({ title: '请选择原因', icon: 'none' }) - return - } - if (saleType === 1 && !amount) { - Taro.showToast({ title: '请输入退款金额', icon: 'none' }) - return - } - - const typeMap: Record = { - 1: 'refund', - 2: 'return', - 3: 'exchange', - } - - Taro.showModal({ - title: '确认提交', - content: '确定提交售后申请吗?', - confirmColor: '#0e932e', - success: async (res) => { - if (res.confirm) { - setSubmitting(true) - Taro.showLoading({ title: '提交中...' }) - try { - await applyAfterSale({ - orderId, - type: typeMap[saleType], - reason, - description, - amount: saleType === 1 ? Number(amount) : undefined, - evidenceImages: images, - goodsItems: checkedGoods.map(g => ({ goodsId: String(g.id), quantity: g.num })), - }) - Taro.hideLoading() - Taro.showToast({ title: '提交成功', icon: 'success' }) - setTimeout(() => Taro.navigateBack(), 1500) - } catch (err: any) { - Taro.hideLoading() - Taro.showToast({ title: err.message || '提交失败', icon: 'none' }) - } finally { - setSubmitting(false) - } - } - } - }) - } - - return ( - - - {/* 订单商品 */} - - 选择商品 - {orderGoods.map(goods => ( - handleGoodsCheck(goods.id)} - > - - - 🛍️ - - - {goods.name} - ¥{goods.price} × {goods.num} - - - ))} - - - {/* 售后类型 */} - - 售后类型 - setSaleType(parseInt(e.detail.value))}> - - - - 仅退款 - - - - 退货退款 - - - - 换货 - - - - - - {/* 退款金额 */} - {saleType === 1 && ( - - 退款金额 - - ¥ - setAmount(e.detail.value)} - placeholder='请输入退款金额' - className='flex-1' - /> - - 最多可退 ¥134.00 - - )} - - {/* 售后原因 */} - - 售后原因 - - {getCurrentReasons().map((r, index) => ( - setReason(r)} - > - - {r} - - - ))} - - - - {/* 问题描述 */} - - 问题描述 -