Giter Site home page Giter Site logo

mayroom's People

Contributors

ytche avatar

Watchers

 avatar  avatar  avatar

mayroom's Issues

接口设计和一些疑问

小程序后端功能接口拆分

概述

服务器提供一组接口,分别用于以下功能,具体考虑了以下,可以参考RESTful风格,但是不适合完全做成那样,后端也是有一些业务逻辑的:

通信加密

  • 保证对外http接口实现https;
  • 考虑第二层加密? 暂不考虑

登录和绑定数据

登录时前端和后端通过VX或其他机制获得一个session-id,登录状态基于这个session-id维护。

普通用户登录

  • 首次登录时以open-id为主键之一,在表里为这个用户生成初始数据;
  • 首次登录时,前端获取到用户手机号之后,带上手机号发给前端,也作为主键之一
  • 非首次登录基于open-id查询到用户数据,进行黑名单验证等逻辑执行;
  • 每次登录时会以open-id和token去VX服务器验证用户;
  • 登陆时前端应当发来openGid,微信群的id,具体逻辑如下:
    • 后端缓存维护一个集合,当某用户在某个群里登录成功时,把该群的openGid加入该集合,并刷新失效时间;
    • 如果某普通用户登陆时的openGid不在该集合里,登录失败;
    • 如果某指定用户登录时的openGid不在该集合里,登录成功,并把该openGid加入该集合,并设置失效时间;
    • 如果一个群长时间没有人登录,需要指定用户登录下,这样别人就可以登录;
    • openGid的失效时间是不是必要的,可以避免指定用户的误登录

管理员登陆

  • 管理员由其他高权限用户创建;
  • 登陆时通过用户ID/密码验证身份;
  • session-id由前端或后端生成,前端存储。

新增房源

  • 用户可以添加房源,初始房源会标记为未审核状态;

查看房源

  • 已通过审核用户登录后可以拉取已审核通过的房源数据(GET)(分页);

修改用户/管理员/房源信息

  • 用户可以修改自己的信息(PATCH);
  • 用户可以修改自己添加的房源的信息(PATCH);
  • 某些信息被修改后是否应该将用户或房源置为二次审核状态?

申请入群

  • 用户在补充完自己的一些信息后可以申请入群,此时会生成一条审核任务(POST);
  • 服务器维护这个用户是否被拉黑,拉黑后的用户无法登录

审核入群申请和房源

  • 管理员登录成功后可以拉取审核任务数据(GET)(分页);
  • 管理员可以查看某个审核任务详细数据,并作出以下觉得:
    • 审核状态标记,如通过/未通过,
    • 基于用户的审核提交记录(GET)、用户信息(GET)等数据,标记用户为黑名单状态(PATCH);
  • 入群申请审核通过后由管理员把他加入群

拉黑和从黑名单移除

  • 管理员可以把用户标为黑名单状态(PATCH);
  • 管理员可以把用户标为非黑名单状态(PATCH);

部分需求需要明确

  • 后期是否统计图表?
  • 权限需求需要明确?
  • 是否需要登录日志、操作日志相关的审计功能。

有一些问题需要在开发之前就达成共识的

在进行开发之前需要达成共识的一些问题,主要需要考虑的是开发人员的技术栈,需求次之。
抛砖引玉,大家开发过程中有什么问题或者需要共享的东西还是推荐用issue交流。
群里讨论的结果也应该以wiki或者issue的形式落地,不然可能刷过去也就刷过去了。

  • 技术选型
    • 语言:Java;
    • JDK版本:个人推荐OpenJDK_11;
    • 框架: 基于SpringBoot和一些其他的小程序SDK;
    • 数据库:MySQL;
    • 数据库的使用:MyBatis;
    • 缓存和中间件:待定;
    • 架构:基于SpringBoot的微服务架构;
  • 流程和规范
    • 开发流程(参考):
      • 获得需求
      • 功能切分(切分出来的功能和需求以issue的形式放在github上)
      • 接口分割(互不耦合的内部接口也独立作为issue)
      • 任务选取(谁有空闲就把issue指给自己,做完之后通过issue创建一个pr即可)
      • 切分支
      • 功能开发
      • 单元测试
      • 接口自测
      • 提交pr(把issue链到该pr,最好有一些说明性文字)
      • 其他人review
      • 合并代码到主分支;
    • 代码规范:阿里的Java代码规范即可;

以下是一些推荐和几个值得考虑一下的点:

  • 技术可以稍微激进一点,但是代码要可维护性高,高内聚低耦合并不是废话;
  • 配置管理推荐一下Spring Cloud Config;
  • 如果对技术选型有什么想法尽快提,等开始开发就不好改了,比如maven是不是应该改gradle;
  • 如果是纯提供接口的服务,mvc是不是必要的;
  • 提供一个参考的项目

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.