# BUAA士嘉小程序文档 **Repository Path**: duchenhong/buaa-scarlett-applet-document ## Basic Information - **Project Name**: BUAA士嘉小程序文档 - **Description**: 北京航空航天大学士嘉书院小程序文档 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-02-16 - **Last Updated**: 2021-02-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # BUAA士嘉小程序文档 #### 介绍 北京航空航天大学士嘉书院小程序文档 #### 软件架构 前端使用微信小程序,后端使用ASP.NETCORE 5 # 前端 ## 功能 - 使用微信登录认证 - 内容查看发布 - 对内容评价 评论 - 讨论区 - 小程序反馈 ## 目录结构 ``` |-- miniprogram |-- images (静态图片资源) |-- pages (页面, 用index举例创建Page) |-- index |-- index.js |-- index.json |-- index.wxml |-- index.wxss |-- tools |-- average |-- average.js |-- average.json |-- average.wxml |-- average.wxss |-- utils (放一些通用的js实现模块化) |-- app.js (全局app的js) |-- app.json (app的全局配置文件) |-- app.wxss (全局样式文件) |-- common.wxml (模板文件, 可以没有, 也可以做成Components) |-- common.wxs (wxml渲染辅助文件, 例如wxml中不能使用indexOf函数作为条件, 可以用wxs辅助) |-- sitemap.json (允许微信搜索爬虫配置文件) |-- theme.json (darkMode的变量文件) ``` `wxml`模板:[**微信官方文档**](https://developers.weixin.qq.com/miniprogram/dev/reference/wxml/template.html) 小程序js模块化:[**微信官方文档**](https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/module.html) 关于小程序的路由:[**微信官方文档**](https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/route.html) `sitemap.json` 的解释:[**微信官方文档**](https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html) `theme.json` DarkMode适配指南:[**微信官方文档**](https://developers.weixin.qq.com/miniprogram/dev/framework/ability/darkmode.html) ## UI设计规范 UI设计要所有前端统一一个基本样式(如卡片、输入框一类),并且把这个通用的页面样式写到`app.wxss`中。 强烈建议使用`vant-weapp`组件库,避免重复造轮子。虽然有的时候这组件有坑。[**文档传送门**](https://youzan.github.io/vant-weapp) 使用微信官方的`WeUI`也不错。 图标可以到`iconfont`上找,[**传送门**](https://www.iconfont.cn/collections/index?spm=a313x.7781069.1998910419.4&type=1) DarkMode可以考虑不做,但也很简单不是吗。仅需使用`theme.json`,添加一个全局字段,再使用几个三元表达式、`css`媒体查询就可以做出高大上的深色模式啦。(赶时间的话以后再做也无妨) # 后端 ## 零.代码规范 0. 编写C#代码总体原则 后端组能看懂 其他人尽力看懂 1. 变量名一律小写.非必要首字符为'_';命名可以用英文和拼音 2. 函数 属性 类(含记录类型) 接口 结构 枚举 命名空间 每个单词首字母大写 不能有特殊字符 3. 通用的方法写到StaticMethods内部 4. lambda表达式 多行的`(args)=>{;;}`
单行的`(args)=>args`()括号不省略 5. 控制器 - 命名模板:`XxxController`均继承ControllerBase类 可以由默认模板(新建->API控制器)创建 - 控制器打标签`[ApiController]`和路由`[Route("api/[controller]")]` - 所有函数必须打标签,指示路由`[Route("path")]`及HTTP请求方式`[HttpGet]`,`[HttpPost]` - IO等耗时长的操作建议放到异步函数 - 返回值 `IActionResult`(同步) `Task`(异步) ## 一.数据库 mongodb为BSON(也可理解为binary json)文档数据库. 使用Csharp驱动库 MongoDB.Driver,MongoDB.Bson 每个文档必然有`_id`字段. ```csharp public abstract class BaseEntity{ T _id{get;set;} } ``` ## 1.用户 ```csharp public class UserInfo:BaseEntity{ public string username;//用户名,默认为昵称;使用微信openid作为_id public string sid;//学号 public int usertype;//用户类别,枚举型 //其他用户信息... } ``` ## 2.内容 支持CRUD操作. ```csharp public class ContentInfo:BaseEntity{//使用内置ObjectId作_id public string title,content;//标题和内容 public int props;//储存一个32位枚举值表示文章属性 } ``` ## 3.文章评论 ## 4.讨论区 ## 5.反馈 ## 二.控制器 ## 1.用户 ### 登录 - url: `/api/user/login` - method:POST - request body: ```json { "code":"一个标记", "detail":{"country":"国籍","avatarUrl":"头像的地址","nickname":"昵称/姓名",...} } ``` - response: ```json { "token":"登录token(凭证)", "code":"0为成功 非0为失败" } ``` ### 修改信息 ## 2.内容 ### 获取内容列表 ### 获取文章 ### 获取评论列表 ### 发评论 ### 上传图片 - 需要登录 - url: `/api/content/upimg` - method:POST - request body:(multipart form;file) - response ```json { "uuid":"图片的uuid" } ``` ## 3.讨论区 ### 获取讨论列表 ### 部分用户有权限开一个新的讨论 ### 跟贴 ## 4.反馈 ## 5.管理员 ### 发布内容 ### 修改内容(设置展示状态 置顶状态等) ### 删除内容 ### 管理评论 ### 讨论区