小程序端:

相关参数:

  • allList:全部商品列表
  • askBuyList:求购商品列表
  • sellLis:出售商品列表

开发思路如下:

物品列表拉取:
  1. 默认获取全部所有的商品list用于初始化加载页面
  2. 滑动一级分类,确认一级分类type类型
    1. Type = 转卖
      1. 初始化
        1. 默认转卖一级分类的所有商品列表
        2. 滑动到二级分类,根据二级分类类型对应的categoryBid拉取列表
      2. 下拉刷新
        1. 若为一级分类的所有商品列表,categoryBid = null
        2. 若具体到二级分类的具体类型,categoryBid = 对应的二级分类bid
      3. 上滑加载
        1. 根据一级分类和二级分类(categoryBid )的类别确定获取什么类型的list并且赋值到allList/sellList/askBuyList
    2. Type = 求购
      1. 初始化
        1. 默认求购一级分类的所有商品列表
        2. 滑动到二级分类,根据二级分类类型对应的categoryBid拉取列表
      2. 下拉刷新
        1. 若为一级分类的所有商品列表,categoryBid = null
        2. 若具体到二级分类的具体类型,categoryBid = 对应的二级分类bid
      3. 上滑加载
        1. 根据一级分类和二级分类的类别确定获取什么类型的list并且赋值到allList/sellList/askBuyList
    3. 一级分类切换的时候由于默认的是一级分类的所有商品列表拉取,所以一级分类切换的时候,修改对应的二级分类bid为空,不然切换的时候就相当于执行了select * from hand where type = '***' and categoryBid = '***' order by id desc;

发布、删除、编辑操作,根据接口以及业务场景传递对应的参数即可。其中可能需要对部分参数进行参数校验、长度限制等,前后端都会做限制。

物品详情:

物品名、物品介绍、物品照片、物品价格、交易地址、物品数量、物品类型、其他联系方式:QQ/微信

Java后端:

表结构设计:(仅展示部分必要字段,可根据自己的需求自定义设计其他字段)

512ac4e3ee94e9c20c6b7733cfdc8e9

开发思路:

获取商品列表/详情(都是封装在一个接口,根据根据不同场景,前端传的参数不一样,获取不同的查询结果):
  1. 校验用户身份,主要是从userBid、schoolBid以及token是否被篡改方向进行校验。
  2. 根据条件筛选结果。
    1. 全部商品:根据id进行倒序分页查询,主要参数:商品主键id
    2. 根据type类型(确定是转卖/求购)
      1. 二级分类查询:使用andCategoryBidsEqualTo方法实现匹配,分页返回list,主要参数:type(求购/转卖)+categorybid(二级分类类别id)
    3. 查询某物品的详情:根据targetBid字段,进行where子句查询,获取返回结果,参数:targetBid(需要查询的物品的主键id)
    4. 关键字模糊查询:根据传过来的关键字进行左右模糊查询,但是因为索引遇到左右模糊查询的时候会出现索引失效,所以后面可能需要通过es组件优化模糊查询速率。
    5. 查询自己发布过的商品:根据用户id进行where子句查询,获取返回结果,主要参数:tagetUserBid
  3. 返回操作码以及结果
添加商品
  1. 校验用户身份。
  2. 身份校验成功,进行添加操作:
    1. 判断必传参数:type、地址、联系方式、物品的名字、二级分类类别id、出售/求购价格、物品描述、是否同步到说说(后续可以改成异步操作防止主线程阻塞)、物品数量
    2. 可选择性传递参数:物品照片url
  3. 存入数据库
  4. 返回操作码以及状态
删除商品
  1. 校验用户身份。
  2. 判断传递参数是否有效:
    1. 判断商品id是否为空
    2. 判断商品是否存在
    3. 判断是不是本人操作
  3. 进行软删操作,即设置isdelete=1并更新数据库
  4. 返回操作码及结果
更新商品信息:
  1. 校验用户信息
  2. 判断参数是否有效
    1. 判断请求参数是否为空
    2. 判断是否有此商品信息
    3. 判断是不是本人操作
  3. 进行相关参数更新操作
  4. 返回操作码及结果
联系他人:

联系他人涉及:扣除发起者能量值、