Skip to content

springlethargy/night_cat

 
 

Repository files navigation

夜猫修复铺 - 微信小程序

本项目是一个提供商品展示、购买及后台管理的微信小程序。

一、已实现功能

1. 核心框架

- 小程序基本结构 (`app.json`, `app.js`, `app.wxss`)
- TabBar 导航:首页(home)、社区(community)、商城(mall)、订单(order)、我的(profile)
- 云开发环境初始化 (ID: `cloud1-3gcpcfarccae8906`)

2. 用户模块 (前端 + 云函数)

- **登录/注册 (`pages/login/login`)**
    - 微信授权登录
    - 用户信息获取与存储(支持用户选择是否使用微信昵称头像)
    - 自动生成昵称(若用户不使用微信昵称或微信昵称为空)
    - 云函数 `checkUserLogin`: 检查用户注册状态,返回用户信息。
    - 云函数 `doLogin`:处理登录和注册逻辑,记录 `isAdmin` 状态。
- **我的页面 (`pages/profile/profile`)**
    - 显示用户头像、昵称
    - "我的资料"入口
    - "退出登录"功能
    - 管理员入口:"进入后台"(仅管理员可见)
- **资料修改 (`pages/profile-edit/profile-edit`)**
    - 修改头像(从相册选择、上传到云存储 `user_avatars/OPENID/`)
    - 修改昵称
    - 云函数 `updateUserProfile`: 更新用户信息,处理旧头像删除。

3. 商城模块 (前端 + 云函数)

- **商城首页 (`pages/mall/mall`)**
    - **数据加载**:
        - 从云函数 `adminGetCarouselList` 加载并显示轮播图 (仅 `isActive: true`,按 `sortOrder` 排序)。
        - 从云函数 `adminGetProductList` 加载并显示商品列表 (仅 `isActive: true`,支持分页)。
    - **交互功能**:
        - 下拉刷新:重新加载轮播图和商品列表。
        - 上拉加载更多:加载下一页商品。
        - 搜索栏:可输入搜索关键词,按商品名称模糊搜索(依赖云函数支持正则)。
        - 轮播图点击跳转:根据后台配置的链接类型 (`product`, `page`, `external`, `category`, `none`) 执行相应跳转。
        - 商品卡片点击跳转到商品详情页。
        - "加入购物车"按钮:将商品(ID、名称、主图、价格、数量1、库存)添加到本地存储的购物车。
        - 购物车浮动按钮:显示购物车中商品总数角标,点击跳转到购物车页面。
- **商品详情页 (`pages/product-detail/product-detail`)**
    - **数据加载**:
        - 根据 `productId` 从云函数 `adminGetProductList` (临时方案,按 `_id` 和 `isActive:true` 筛选) 加载商品详细信息。
        - 显示商品轮播图、名称、价格、原价(可选)、标签、销量、库存、简短描述。
        - 显示服务承诺、物流信息、售后政策(若后台未提供则使用前端默认值)。
        - 商品长描述 (`longDescription`) 支持富文本展示。
        - 商品详情图片列表展示。
    - **交互功能**:
        - 图片轮播及当前页码指示。
        - 点击图片可预览大图(商品轮播图和详情图)。
        - 数量加减与手动输入(校验库存)。
        - "商品详情"与"累计评价"Tab切换(评价内容暂未实现)。
        - 收藏/取消收藏功能(基于本地存储)。
        - "加入购物车"按钮:将当前商品和选择的数量加入本地购物车,有库存校验。
        - "立即购买"按钮:将当前商品信息存入本地存储 `orderProducts`,并尝试跳转到订单确认页 (`/pages/order-confirm/order-confirm`)。
        - "购物车"图标按钮:跳转到购物车 Tab 页。
        - "客服"图标按钮:目前为提示"功能暂未开放"。
        - 分享给好友/朋友圈功能。
        - 商品不存在或已下架时的提示及返回按钮。
- **购物车页面 (`pages/cart/cart`)**
    - 从本地存储加载购物车商品列表。
    - 显示商品图片、名称、规格(暂未完全实现)、价格、数量。
    - 增/减商品数量(减到0提示删除,有库存校验)。
    - 手动输入商品数量。
    - 单个商品删除。
    - 计算合计金额和总数量。
    - "去结算"按钮(功能开发中)。
    - "清空购物车"按钮。
    - 空购物车状态显示(图片、提示、去逛逛按钮)。
    - 返回商城首页/商品详情页时,尝试调用对应页面的 `updateCartItemCount` (商城首页已实现)。

4. 后台管理模块 (前端 + 云函数)

- **后台入口 (`pages/admin/dashboard/dashboard`)**
    - 管理员权限检查 (`checkAdminAccess`),非管理员跳转。
    - 功能入口按钮:用户管理、商品管理、订单管理、轮播图管理、系统设置 (部分为开发中提示)。
- **商品管理 (云函数)**
    - `adminGetProductList`: 获取商品列表(支持分页、按名称/isActive/categoryId筛选)。
    - `adminAddProduct`: 添加新商品(包含图片上传到云存储 `product_images/`)。
    - `adminUpdateProduct`: 更新商品信息(包含图片更新与旧图删除)。
    - `adminDeleteProduct`: 删除商品(包含云存储图片删除)。
    - *以上云函数均包含管理员权限校验。*
- **商品管理 (前端 `pages/admin/product-manage/` 和 `pages/admin/product-edit/`)**
    - **列表页 (`product-manage`)**:
        - 显示商品列表(图片、名称、价格、库存、状态)。
        - "添加商品"按钮。
        - 搜索框(暂未对接后端筛选)。
        - 下拉刷新、上拉加载更多。
        - 操作:编辑、删除(调用云函数)、上/下架(调用云函数)。
    - **编辑/添加页 (`product-edit`)**:
        - 表单包含:名称、价格、原价、库存、分类ID(TODO)、标签、主图(单图)、轮播图(多图)、简短描述、详细描述(TODO:富文本)、详情图(多图)、是否上架、排序值。
        - 图片选择、预览、删除、上传到云存储。
        - 编辑模式下加载商品数据。
        - 表单提交与校验,调用相应云函数,成功后通知列表页刷新。
        - 编辑模式下删除被替换的旧云存储图片。
- **轮播图管理 (云函数)**
    - `adminGetCarouselList`: 获取轮播图列表(支持按isActive筛选、按sortOrder/createdAt排序)。
    - `adminAddCarousel`: 添加新轮播图(包含图片上传到云存储 `carousel_images/`)。
    - `adminUpdateCarousel`: 更新轮播图信息(包含图片更新与旧图删除)。
    - `adminDeleteCarousel`: 删除轮播图(包含云存储图片删除)。
    - *以上云函数均包含管理员权限校验。*
- **轮播图管理 (前端 `pages/admin/carousel-manage/` 和 `pages/admin/carousel-edit/`)**
    - **列表页 (`carousel-manage`)**:
        - 显示轮播图列表(图片、标题、链接类型、目标、状态、排序)。
        - "添加轮播图"按钮。
        - 下拉刷新、上拉加载更多。
        - 操作:编辑、删除(调用云函数)、启用/禁用(调用云函数)。
    - **编辑/添加页 (`carousel-edit`)**:
        - 表单包含:轮播图片(单图)、标题、描述、链接类型(picker)、链接目标、是否启用、排序值、生效起止日期。
        - 图片选择、预览、删除、上传。
        - 链接类型选择后动态更新链接目标输入框 placeholder。
        - 编辑模式下加载数据。
        - 表单提交与校验,调用相应云函数,成功后通知列表页刷新。
        - 编辑模式下替换图片会删除旧图。

5. 数据库集合

- `users`: 存储用户信息,包含 `isAdmin` 字段。
- `products`: 存储商品信息。
- `carousels`: 存储轮播图信息。

二、需要测试的功能

1. 用户模块

- [ ] 登录流程:首次授权、已注册用户直接登录、拒绝授权。
- [ ] 微信昵称/头像使用选择:用户选择使用/不使用微信资料的场景。
- [ ] 随机昵称生成:不使用微信昵称或微信昵称为空时的昵称生成。
- [ ] 资料修改:头像上传、昵称修改、旧头像是否正确删除。
- [ ] 退出登录:清除本地缓存、跳转到登录页。
- [ ] 管理员识别:`isAdmin` 字段在登录和资料更新后是否正确。

2. 商城模块 - 首页 (pages/mall/mall)

- [ ] **云函数权限**:`adminGetCarouselList` 和 `adminGetProductList` 是否设置为所有用户可读。
- [ ] 轮播图加载与显示:是否能正确拉取并展示 `isActive:true` 的轮播图,排序是否正确。
- [ ] 轮播图点击跳转:
    - [ ] 跳转商品详情页 (`linkType: 'product'`)。
    - [ ] 跳转小程序内页 (`linkType: 'page'`),包括 Tab 页和非 Tab 页。
    - [ ] 跳转 H5 (`linkType: 'external'`),是否有正确提示。
    - [ ] 跳转分类聚合页 (`linkType: 'category'`) (需对应页面创建后测试)。
    - [ ] 无链接 (`linkType: 'none'`) 是否无操作。
- [ ] 商品列表加载:首次加载、上拉加载更多、数据为空(无商品)的显示。
- [ ] 下拉刷新:数据是否正确刷新,加载动画是否正常。
- [ ] 商品搜索:根据商品名称搜索商品,结果是否正确。
- [ ] 加入购物车:商品信息是否正确添加到本地存储,购物车角标是否更新。
- [ ] 购物车浮动按钮:角标是否正确,点击是否跳转到购物车。
- [ ] 商品图片加载失败:`onProductImageError` 是否能正确替换为默认图。

3. 商城模块 - 商品详情页 (pages/product-detail/product-detail)

- [ ] **云函数权限**:`adminGetProductList` 用于获取单品详情的权限。
- [ ] 商品数据加载:根据 ID 是否能正确加载已上架商品信息。
- [ ] 商品信息显示:名称、价格、图片、描述、标签、库存、销量等是否与后台数据一致。
- [ ] 默认图片显示:当商品图片缺失时,是否显示默认占位图。
- [ ] 图片预览功能。
- [ ] 数量加减与输入:是否能正确操作,是否有库存校验。
- [ ] Tab 切换。
- [ ] 收藏/取消收藏:功能是否正常,本地存储是否更新,图标状态是否正确。
- [ ] 加入购物车:商品信息是否正确添加,数量是否正确,库存校验。
- [ ] 立即购买:是否能正确携带商品信息跳转到订单确认页(需订单确认页存在)。
- [ ] 分享功能。
- [ ] 商品不存在或下架的提示和返回按钮。

4. 商城模块 - 购物车页 (pages/cart/cart)

- [ ] 购物车数据显示:从本地存储读取数据显示是否正确。
- [ ] 商品数量操作:增、减、手动输入,库存校验。
- [ ] 商品删除。
- [ ] 总价计算。
- [ ] 清空购物车。
- [ ] 空购物车显示及"去逛逛"跳转。

5. 后台管理 - 商品管理

- [ ] 商品列表加载、分页、刷新。
- [ ] 添加商品:所有字段填写、图片上传、云函数调用是否成功。
- [ ] 编辑商品:数据回填、字段修改、图片替换(旧图删除)、云函数调用。
- [ ] 删除商品:云函数调用、云存储图片是否删除。
- [ ] 上/下架商品。

6. 后台管理 - 轮播图管理

- [ ] 轮播图列表加载、分页、刷新。
- [ ] 添加轮播图:所有字段填写、图片上传、云函数调用。
- [ ] 编辑轮播图:数据回填、字段修改、图片替换(旧图删除)、云函数调用。
- [ ] 删除轮播图:云函数调用、云存储图片是否删除。
- [ ] 启用/禁用轮播图。

7. 静态资源

- [ ] 检查所有页面引用的本地图片 (`/images/`) 是否都存在且路径正确。

三、数据集合与权限设置

1. 核心数据集合

users 集合

  • 用途:存储用户信息和管理员标识
  • 关键字段
    • _openid: 用户的微信 OpenID(自动生成)
    • nickName: 用户昵称
    • avatarUrl: 用户头像 URL
    • isAdmin: 管理员标识(布尔值)
    • createTime: 用户创建时间
    • updateTime: 用户信息更新时间
  • 权限设置
    • 创建:所有用户可创建(仅自己的记录)
    • 读取:仅创建者可读取自己的记录,管理员可读取所有记录
    • 更新:仅创建者可更新自己的记录
    • 删除:仅管理员可删除

products 集合

  • 用途:存储商品信息
  • 关键字段
    • name: 商品名称
    • price: 商品价格
    • originalPrice: 商品原价(可选)
    • stock: 库存数量
    • salesCount: 销售数量
    • categoryId: 分类 ID
    • tags: 商品标签(数组)
    • mainImage: 主图 URL
    • images: 轮播图 URL 数组
    • detailImages: 详情图 URL 数组
    • shortDescription: 简短描述
    • longDescription: 详细描述
    • isActive: 是否上架(布尔值)
    • sortOrder: 排序值
    • createdAt: 创建时间
    • updatedAt: 更新时间
  • 权限设置
    • 创建:仅管理员可创建
    • 读取:所有用户可读取
    • 更新:仅管理员可更新
    • 删除:仅管理员可删除

carousels 集合

  • 用途:存储首页轮播图信息
  • 关键字段
    • imageUrl: 轮播图片 URL
    • title: 轮播图标题
    • description: 轮播图描述
    • linkType: 链接类型(product, page, external, category, none)
    • linkTarget: 链接目标
    • isActive: 是否启用(布尔值)
    • sortOrder: 排序值
    • startDate: 生效开始日期(可选)
    • endDate: 生效结束日期(可选)
    • createdAt: 创建时间
    • updatedAt: 更新时间
  • 权限设置
    • 创建:仅管理员可创建
    • 读取:所有用户可读取
    • 更新:仅管理员可更新
    • 删除:仅管理员可删除

categories 集合

  • 用途:存储商品分类信息
  • 关键字段
    • name: 分类名称
    • icon: 分类图标 URL(可选)
    • description: 分类描述(可选)
    • parentId: 父分类 ID(可选,用于多级分类)
    • isActive: 是否启用(布尔值)
    • sortOrder: 排序值
    • createdAt: 创建时间
    • updatedAt: 更新时间
  • 权限设置
    • 创建:仅管理员可创建
    • 读取:所有用户可读取
    • 更新:仅管理员可更新
    • 删除:仅管理员可删除

userAddress 集合

  • 用途:存储用户收货地址
  • 关键字段
    • _openid: 用户的微信 OpenID(自动生成)
    • name: 收货人姓名
    • phone: 收货人电话
    • province: 省份
    • city: 城市
    • district: 区/县
    • detail: 详细地址
    • isDefault: 是否默认地址(布尔值)
    • createTime: 创建时间
  • 权限设置
    • 创建:所有用户可创建(仅自己的记录)
    • 读取:仅创建者可读取自己的记录
    • 更新:仅创建者可更新自己的记录
    • 删除:仅创建者可删除自己的记录

2. 待实现的数据集合

orders 集合

  • 用途:存储用户订单信息
  • 关键字段
    • _openid: 用户的微信 OpenID(自动生成)
    • orderNo: 订单编号(唯一)
    • status: 订单状态(待付款、待发货、待收货、已完成、已取消等)
    • totalAmount: 订单总金额
    • products: 订单商品信息数组(包含商品ID、名称、价格、数量等)
    • addressId: 收货地址ID
    • addressInfo: 收货地址信息快照(避免地址被删除后订单地址丢失)
    • paymentMethod: 支付方式
    • paymentTime: 支付时间
    • shipmentTime: 发货时间
    • completionTime: 完成时间
    • cancelTime: 取消时间
    • remark: 订单备注
    • createdAt: 创建时间
    • updatedAt: 更新时间
  • 权限设置
    • 创建:所有用户可创建(仅自己的记录)
    • 读取:仅创建者可读取自己的记录,管理员可读取所有记录
    • 更新:创建者可更新部分字段(如取消订单),管理员可更新所有字段
    • 删除:仅管理员可删除(通常不建议删除订单,而是通过状态管理)

repairOrders 集合

  • 用途:存储维修订单信息
  • 关键字段
    • _openid: 用户的微信 OpenID(自动生成)
    • orderNo: 维修单号(唯一)
    • status: 维修状态(待接单、维修中、待验收、已完成、已取消等)
    • deviceType: 设备类型
    • deviceBrand: 设备品牌
    • deviceModel: 设备型号
    • problemDescription: 问题描述
    • images: 问题图片 URL 数组
    • estimatedPrice: 预估价格
    • finalPrice: 最终价格
    • addressId: 上门地址ID(如果提供上门服务)
    • technicianId: 技术员ID(可选)
    • repairNotes: 维修记录
    • createdAt: 创建时间
    • updatedAt: 更新时间
  • 权限设置
    • 创建:所有用户可创建(仅自己的记录)
    • 读取:仅创建者可读取自己的记录,管理员可读取所有记录
    • 更新:创建者可更新部分字段,管理员可更新所有字段
    • 删除:仅管理员可删除(通常不建议删除维修单,而是通过状态管理)

comments 集合

  • 用途:存储商品评价
  • 关键字段
    • _openid: 用户的微信 OpenID(自动生成)
    • productId: 商品ID
    • orderId: 订单ID
    • rating: 评分(1-5)
    • content: 评价内容
    • images: 评价图片 URL 数组
    • isAnonymous: 是否匿名评价
    • replyContent: 商家回复内容
    • replyTime: 商家回复时间
    • createdAt: 创建时间
    • updatedAt: 更新时间
  • 权限设置
    • 创建:所有用户可创建(仅自己的记录且必须购买过该商品)
    • 读取:所有用户可读取
    • 更新:仅创建者可更新自己的评价,管理员可添加回复
    • 删除:创建者可删除自己的评价,管理员可删除任何评价

3. 云存储权限设置

用户头像 (user_avatars/)

  • 权限设置
    • 上传:仅创建者可上传到自己的目录
    • 读取:所有用户可读取(用于显示头像)
    • 删除:仅创建者可删除自己的头像

商品图片 (product_images/)

  • 权限设置
    • 上传:仅管理员可上传
    • 读取:所有用户可读取
    • 删除:仅管理员可删除

轮播图 (carousel_images/)

  • 权限设置
    • 上传:仅管理员可上传
    • 读取:所有用户可读取
    • 删除:仅管理员可删除

评价图片 (comment_images/)

  • 权限设置
    • 上传:所有用户可上传到自己的评价目录
    • 读取:所有用户可读取
    • 删除:仅创建者和管理员可删除

维修单图片 (repair_images/)

  • 权限设置
    • 上传:所有用户可上传到自己的维修单目录
    • 读取:创建者和管理员可读取
    • 删除:仅创建者和管理员可删除

四、未实现/待优化功能

1. 用户模块

- [ ] 用户地址管理。
- [ ] 绑定手机号功能。
- [ ] 账户安全(修改密码等,如果后续有非微信登录方式)。

2. 商城模块

- **分类功能 (`pages/mall/mall`)**
    - [ ] 后台创建 `categories` 集合及管理界面。
    - [ ] 云函数:`getCategoryList` (前台调用)、`adminAddCategory`, `adminUpdateCategory`, `adminDeleteCategory` (后台调用)。
    - [ ] 商城首页加载并显示分类导航。
    - [ ] 商城首页按分类筛选商品。
    - [ ] 轮播图跳转到分类商品列表页 (`/pages/category-products/category-products`),需创建此页面。
- **商品规格 (SKU) 功能 (`pages/product-detail/product-detail`)**
    - [ ] 后台商品数据结构支持 SKU(独立价格、库存、图片等)。
    - [ ] 后台商品编辑页支持 SKU 管理。
    - [ ] 商品详情页 SKU 选择器界面与交互逻辑。
    - [ ] 根据所选 SKU 更新价格、库存显示。
    - [ ] 加入购物车/立即购买时传递所选 SKU 信息。
- **商品评价功能 (`pages/product-detail/product-detail`)**
    - [ ] 后台创建 `reviews` 集合(关联商品、用户、订单)。
    - [ ] 云函数:`addReview` (用户提交评价)、`getProductReviews` (获取商品评价列表)。
    - [ ] 订单完成后,用户可以发表评价(文字、图片)。
    - [ ] 商品详情页加载并显示评价列表。
- **订单模块 (`pages/order/order`, `pages/order-confirm/order-confirm`, `pages/order-detail/order-detail`)**
    - [ ] **订单确认页 (`pages/order-confirm/order-confirm`)**:
        - 从购物车或立即购买接收商品数据。
        - 选择/新增收货地址。
        - 显示商品信息、总价、优惠(待实现)。
        - 提交订单(调用云函数 `createOrder`)。
    - [ ] 云函数 `createOrder`: 创建订单、扣减商品库存、清空购物车对应商品(可选)。
    - [ ] 支付功能对接(微信支付)。
    - [ ] **订单列表页 (`pages/order/order`)**:
        - 按状态(待付款、待发货、待收货、待评价、已完成、已取消)筛选订单。
        - 显示订单概要信息。
        - 操作:取消订单、付款、确认收货、查看详情、评价、删除订单。
    - [ ] 云函数:`getOrderList`, `getOrderDetail`, `cancelOrder`, `confirmReceipt` 等。
    - [ ] **订单详情页 (`pages/order-detail/order-detail`)**:
        - 显示订单详细信息、商品列表、物流信息(待实现)。
- **优惠券/促销活动模块**
    - [ ] 优惠券领取与使用。
    - [ ] 促销活动展示与应用。
- **搜索功能优化**
    - [ ] 后台支持更复杂的搜索条件(如价格区间、多关键词)。
    - [ ] 搜索历史、热门搜索。
- **收藏功能云端同步**
    - [ ] 将收藏状态同步到云端数据库。

3. 后台管理模块

- **用户管理界面**
    - [ ] 查看用户列表。
    - [ ] 冻结/解冻用户。
    - [ ] 设置/取消管理员。
- **订单管理界面**
    - [ ] 查看订单列表、详情。
    - [ ] 修改订单状态(如发货、处理退款)。
- **分类管理界面** (对应商城分类功能)。
- **系统设置界面**
    - [ ] 如运费模板、支付配置等。
- **Dashboard 数据统计**
    - [ ] 显示关键运营数据。
- **后台商品编辑页**
    - [ ] 分类ID字段改为选择器,从分类数据中选择。
    - [ ] 详细描述字段改为富文本编辑器。

4. 通用优化

- [ ] **代码优化**:
    - 为商品详情页创建专用的 `getProductDetailsById` 云函数,而不是复用 `adminGetProductList`。
    - 统一错误处理和提示。
    - 组件化:将可复用的UI片段(如商品卡片)封装成自定义组件。
- [ ] **性能优化**:
    - 图片懒加载、CDN 使用(如果图片量大)。
    - 云函数冷启动优化。
    - 分包加载。
- [ ] **UI/UX 优化**:
    - 统一设计风格。
    - 优化加载动画和用户反馈。
    - 更精细的权限控制和提示。
- [ ] **安全性**:
    - 输入校验(前端和云函数端)。
    - 敏感操作权限校验。

四、资源文件说明

  • /images/ 目录下存放了项目所需的各类静态图片资源,包括默认图、图标等。请确保在测试和部署前,相关图片文件已按需放置。
    • default_avatar.png
    • default_product.png
    • default_carousel.png
    • empty_cart.png
    • empty_box.png (用于列表为空)
    • empty_comment.png
    • loading_spinner.gif
    • /images/icons/ (各种小图标)
    • /images/category_icons/ (分类图标)

此 README 最后更新时间: {{CURRENT_DATE_TIME}} 请根据项目进展持续更新此文档。

About

night_cat

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%