diff --git a/.history/Readme_20200604123350.md b/.history/Readme_20200604123350.md
new file mode 100644
index 0000000000000000000000000000000000000000..515758c247acc04ff3d5d72970cf7bec42b3ebd4
--- /dev/null
+++ b/.history/Readme_20200604123350.md
@@ -0,0 +1,125 @@
+# 基于微信云开发-租房小程序-带管理员后台
+[TOC]
+
+![image](https://img.shields.io/badge/TAG-云开发-blue.svg) ![image](https://img.shields.io/badge/TAG-租房-blue.svg) ![image](https://img.shields.io/badge/TAG-微信小程序-blue.svg) ![image](https://img.shields.io/badge/TAG-带管理后台-blue.svg)
+
+[![image](https://img.shields.io/badge/author-lx164-orange.svg)](https://github.com/lx164/) [![image](https://img.shields.io/badge/CSDN-lx9625_鹤鹤-orange.svg)](https://blog.csdn.net/github_38967228) [![image](https://img.shields.io/badge/博客园-LiangSenCheng小森森-orange.svg)](https://www.cnblogs.com/LiangSenCheng/)
+
+
+项目地址:https://github.com/lx164/house
+
+> 发现有问题?欢迎加我微信一起探讨,或者直接提Issues
+> 无法下载或者下载太慢?可以直接找我要安装包;
+>
+> 联系方式在这里的首页:https://www.cnblogs.com/LiangSenCheng/p/11083714.html
+
+## 项目简介
+
+本项目是2019年12月份左右的产物,花了大概一个月时间做完之后一直遗忘在了硬盘里,这几天才想起来,故顺便整理一下开源了。
+
+> 项目虽然没有做的很完整,但是整体的数据架构还算是可以的,可以很容易进行功能完善和添加新功能。里面还有很多可以完善的地方,比如 `公司资质` 页面可以做的更加精细一些,`房子详情页` 可以添加地图之类的内容等。
+
+原本是别人找我帮一家中介小店些的一个租房小程序,对方没给设计图、也没有提具体需求,只是让我凭感觉来做。由于没有写过这方面的小程序,也没有很好的规划页面布局,所以UI方面稍微差了点。在项目快完成的时候,介绍的那个人跑路了,所以就没有后续了,想着与其直接删除还不如开源分享给大家一起讨论学习。
+
+这个项目的经历也让我明白了一些事情,就是如果别人委托自己帮做项目的时候,不管项目的规模如何,在接受委托前一定要考虑清楚。特别是没有付定金的这种委托,一定要谨慎,不要期望那种说你先做着后面再谈钱,哪怕是跟你认识的人也是一样要谨慎。还有就是不提明确需求的也不要轻易接受,这种人很容易中途变卦的。如果不想清楚的话,机会浪费时间又浪费精力。
+
+> 本程序已经经过测试,拿来按照说明简单配置就可以直接使用,界面可以自己进行修改。本人热爱小程序,目前上线并维护的有两个,后面看情况再找时间进行开源。
+由于本人的能力有限,还有很多地方没法完善,望指正!
+
+## 目录结构
+
+```
+|--|-- cloudfunctions 云函数
+|--|--|--|-- AdminManage
+|--|--|--|-- Entrust
+|--|--|--|-- HouseInfo
+|--|--|--|-- InitInfo
+|--|--|--|-- Manager
+|--|--|--|-- PublishEntrust
+|--|-- miniprogram 小程序页面
+|--|--|--Adminpackage 管理员后台(分包)
+|--|--|--|--略
+|--|--|--CalculatorPackage 房贷计算器(分包)
+|--|--|--|--略
+|--|--|--Companypackage 主要页面(分包)
+|--|--|--|--略
+|--|--|--dist 一些用到的组件,只用到了一小部分
+|--|--|--pages 主包(主要是底部NaviBar页面)
+|--|--|--|--略
+|--|--其他页面略
+|--README.md
+```
+
+## 功能说明
+
+1. 新房、租房、二手房
+2. 房贷计算器
+3. 公司介绍
+4. 公告
+5. 管理员
+
+> 1-4 点都没啥好说的,下面主要介绍一下 `管理员后台的实现`
+
+`管理员后台集成在了小程序端`,入口隐藏在 `个人中心` 页面 `连续点击5次` 头像名字那里,就可以进入到管理员后台,进入后台的时候会在 `云函数AdminManage`进行管理员鉴权:
+
+- 如果不是管理员,会跳转到扫码加入管理员;
+- 如果是管理员,那就跳转到管理员后台;
+
+> 由于管理员数据库设置了权限为 `所有用户不可读写` ,因此鉴权是只能在云函数里面进行,这是第一道防线;后面在管理员后台的操作都是在云函数完成的,即使是小程序被反编译了,也不可能突破权限,安全性上还是经得住考验的。
+
+## 配置过程
+
+1. 直接下载源码,源码地址:https://github.com/lx164/house
+或者clone项目 git clone https://github.com/lx164/house.git
+
+2. 打开微信开发者工具,导入项目(导入的时候请选择 APP 文件夹);
+
+3. 填写APPID;
+
+4. 开通云开发环境(请参考官方文档);
+
+5. 新建以下数据库集合,一行为一个集合名(不要写错):
+
+```
+ AdminStator
+ Collections
+ CompanyInfo
+ ContactList
+ Entrust
+ NewHouse
+ Recommend
+ RentingHouse
+ SecondHouse
+ TempCllection
+ UserList
+```
+「注意」: 集合`AdminStator`权限设置为`所有用户不可读写`,其余的集合权限修改为:`所有用户可读,仅创建者可读写`。
+
+6. 设置管理员信息,在 `AdminStator` 新建一条记录,把以下的字段内容添加到该记录中,下面()里的内容根据你的实际情况填写:
+
+```json
+ "level":0,
+ "avatarUrl":"(头像)",
+ "updatetime":"(2020/06/01 06:01:18)",
+ "_openid":"(管理员的openid)",
+ "name":"(管理员名字)",
+ "phone":"(管理员手机)"
+```
+
+7. 上传 `cloudfunctions` 文件夹下所有的云函数,上传时选择 `上传并部署:云端安装依赖`;
+
+8. 编译运行。
+
+## 界面预览
+
+
+
+
+## 结语
+
+欢迎一起探讨,如果你觉得还可以,您可以给我点一个start,或者赞赏我
+![zanshang](https://blog-static.cnblogs.com/files/LiangSenCheng/zanshang.gif)
+
+## 参考文档
+
+- [微信小程序云开发文档](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html)
\ No newline at end of file
diff --git a/.history/Readme_20200610101931.md b/.history/Readme_20200610101931.md
new file mode 100644
index 0000000000000000000000000000000000000000..95daa02c05e38b9977a4dc32a79f07823ea1bcf9
--- /dev/null
+++ b/.history/Readme_20200610101931.md
@@ -0,0 +1,127 @@
+# 基于微信云开发-租房小程序-带管理员后台
+[TOC]
+
+![image](https://img.shields.io/badge/TAG-云开发-blue.svg) ![image](https://img.shields.io/badge/TAG-租房-blue.svg) ![image](https://img.shields.io/badge/TAG-微信小程序-blue.svg) ![image](https://img.shields.io/badge/TAG-带管理后台-blue.svg)
+
+[![image](https://img.shields.io/badge/author-lx164-orange.svg)](https://github.com/lx164/) [![image](https://img.shields.io/badge/CSDN-lx9625_鹤鹤-orange.svg)](https://blog.csdn.net/github_38967228) [![image](https://img.shields.io/badge/博客园-LiangSenCheng小森森-orange.svg)](https://www.cnblogs.com/LiangSenCheng/)
+
+
+项目地址:https://github.com/lx164/house
+
+> 发现有问题?欢迎加我微信一起探讨,或者直接提Issues
+> 无法下载或者下载太慢?可以直接找我要安装包;
+>
+> 联系方式在这里的首页:https://www.cnblogs.com/LiangSenCheng/p/11083714.html
+
+## 项目简介
+
+本项目是2019年12月份左右的产物,花了大概一个月时间做完之后一直遗忘在了硬盘里,这几天才想起来,故顺便整理一下开源了。
+
+> 项目虽然没有做的很完整,但是整体的数据架构还算是可以的,可以很容易进行功能完善和添加新功能。里面还有很多可以完善的地方,比如 `公司资质` 页面可以做的更加精细一些,`房子详情页` 可以添加地图之类的内容等。
+
+原本是别人找我帮一家中介小店些的一个租房小程序,对方没给设计图、也没有提具体需求,只是让我凭感觉来做。由于没有写过这方面的小程序,也没有很好的规划页面布局,所以UI方面稍微差了点。在项目快完成的时候,介绍的那个人跑路了,所以就没有后续了,想着与其直接删除还不如开源分享给大家一起讨论学习。
+
+这个项目的经历也让我明白了一些事情,就是如果别人委托自己帮做项目的时候,不管项目的规模如何,在接受委托前一定要考虑清楚。特别是没有付定金的这种委托,一定要谨慎,不要期望那种说你先做着后面再谈钱,哪怕是跟你认识的人也是一样要谨慎。还有就是不提明确需求的也不要轻易接受,这种人很容易中途变卦的。如果不想清楚的话,机会浪费时间又浪费精力。
+
+> 本程序已经经过测试,拿来按照说明简单配置就可以直接使用,界面可以自己进行修改。本人热爱小程序,目前上线并维护的有两个,后面看情况再找时间进行开源。
+由于本人的能力有限,还有很多地方没法完善,望指正!
+
+## 目录结构
+
+```
+|--|-- cloudfunctions 云函数
+|--|--|--|-- AdminManage
+|--|--|--|-- Entrust
+|--|--|--|-- HouseInfo
+|--|--|--|-- InitInfo
+|--|--|--|-- Manager
+|--|--|--|-- PublishEntrust
+|--|-- miniprogram 小程序页面
+|--|--|--Adminpackage 管理员后台(分包)
+|--|--|--|--略
+|--|--|--CalculatorPackage 房贷计算器(分包)
+|--|--|--|--略
+|--|--|--Companypackage 主要页面(分包)
+|--|--|--|--略
+|--|--|--dist 一些用到的组件,只用到了一小部分
+|--|--|--pages 主包(主要是底部NaviBar页面)
+|--|--|--|--略
+|--|--其他页面略
+|--README.md
+```
+
+## 功能说明
+
+1. 新房、租房、二手房
+2. 房贷计算器
+3. 公司介绍
+4. 公告
+5. 管理员
+
+> 1-4 点都没啥好说的,下面主要介绍一下 `管理员后台的实现`
+
+`管理员后台集成在了小程序端`,入口隐藏在 `个人中心` 页面 `连续点击5次` 头像名字那里,就可以进入到管理员后台,进入后台的时候会在 `云函数AdminManage`进行管理员鉴权:
+
+- 如果不是管理员,会跳转到扫码加入管理员;
+- 如果是管理员,那就跳转到管理员后台;
+
+> 由于管理员数据库设置了权限为 `所有用户不可读写` ,因此鉴权是只能在云函数里面进行,这是第一道防线;后面在管理员后台的操作都是在云函数完成的,即使是小程序被反编译了,也不可能突破权限,安全性上还是经得住考验的。
+
+## 配置过程
+
+1. 直接下载源码,源码地址:https://github.com/lx164/house
+或者clone项目 git clone https://github.com/lx164/house.git
+
+2. 打开微信开发者工具,导入项目(导入的时候请选择 APP 文件夹);
+
+3. 填写APPID;
+
+4. 开通云开发环境(请参考官方文档);
+
+5. 新建以下数据库集合,一行为一个集合名(不要写错):
+
+```
+ AdminStator
+ Collections
+ CompanyInfo
+ ContactList
+ Entrust
+ NewHouse
+ Recommend
+ RentingHouse
+ SecondHouse
+ TempCllection
+ UserList
+```
+「注意」: 集合`AdminStator`权限设置为`所有用户不可读写`,其余的集合权限修改为:`所有用户可读,仅创建者可读写`。
+
+6. 设置管理员信息,在 `AdminStator` 新建一条记录,把以下的字段内容添加到该记录中,下面()里的内容根据你的实际情况填写:
+
+```json
+ "level":0,
+ "avatarUrl":"(头像)",
+ "updatetime":"(2020/06/01 06:01:18)",
+ "_openid":"(管理员的openid)",
+ "name":"(管理员名字)",
+ "phone":"(管理员手机)"
+```
+
+7. 上传 `cloudfunctions` 文件夹下所有的云函数,上传时选择 `上传并部署:云端安装依赖`;
+
+8. 修改 `app.js`
+
+9. 编译运行。
+
+## 界面预览
+
+
+
+
+## 结语
+
+欢迎一起探讨,如果你觉得还可以,您可以给我点一个start,或者赞赏我
+![zanshang](https://blog-static.cnblogs.com/files/LiangSenCheng/zanshang.gif)
+
+## 参考文档
+
+- [微信小程序云开发文档](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html)
\ No newline at end of file
diff --git a/.history/Readme_20200610102106.md b/.history/Readme_20200610102106.md
new file mode 100644
index 0000000000000000000000000000000000000000..d9381cf18be10fb50f6843aa601addbd005099b1
--- /dev/null
+++ b/.history/Readme_20200610102106.md
@@ -0,0 +1,134 @@
+# 基于微信云开发-租房小程序-带管理员后台
+[TOC]
+
+![image](https://img.shields.io/badge/TAG-云开发-blue.svg) ![image](https://img.shields.io/badge/TAG-租房-blue.svg) ![image](https://img.shields.io/badge/TAG-微信小程序-blue.svg) ![image](https://img.shields.io/badge/TAG-带管理后台-blue.svg)
+
+[![image](https://img.shields.io/badge/author-lx164-orange.svg)](https://github.com/lx164/) [![image](https://img.shields.io/badge/CSDN-lx9625_鹤鹤-orange.svg)](https://blog.csdn.net/github_38967228) [![image](https://img.shields.io/badge/博客园-LiangSenCheng小森森-orange.svg)](https://www.cnblogs.com/LiangSenCheng/)
+
+
+项目地址:https://github.com/lx164/house
+
+> 发现有问题?欢迎加我微信一起探讨,或者直接提Issues
+> 无法下载或者下载太慢?可以直接找我要安装包;
+>
+> 联系方式在这里的首页:https://www.cnblogs.com/LiangSenCheng/p/11083714.html
+
+## 项目简介
+
+本项目是2019年12月份左右的产物,花了大概一个月时间做完之后一直遗忘在了硬盘里,这几天才想起来,故顺便整理一下开源了。
+
+> 项目虽然没有做的很完整,但是整体的数据架构还算是可以的,可以很容易进行功能完善和添加新功能。里面还有很多可以完善的地方,比如 `公司资质` 页面可以做的更加精细一些,`房子详情页` 可以添加地图之类的内容等。
+
+原本是别人找我帮一家中介小店些的一个租房小程序,对方没给设计图、也没有提具体需求,只是让我凭感觉来做。由于没有写过这方面的小程序,也没有很好的规划页面布局,所以UI方面稍微差了点。在项目快完成的时候,介绍的那个人跑路了,所以就没有后续了,想着与其直接删除还不如开源分享给大家一起讨论学习。
+
+这个项目的经历也让我明白了一些事情,就是如果别人委托自己帮做项目的时候,不管项目的规模如何,在接受委托前一定要考虑清楚。特别是没有付定金的这种委托,一定要谨慎,不要期望那种说你先做着后面再谈钱,哪怕是跟你认识的人也是一样要谨慎。还有就是不提明确需求的也不要轻易接受,这种人很容易中途变卦的。如果不想清楚的话,机会浪费时间又浪费精力。
+
+> 本程序已经经过测试,拿来按照说明简单配置就可以直接使用,界面可以自己进行修改。本人热爱小程序,目前上线并维护的有两个,后面看情况再找时间进行开源。
+由于本人的能力有限,还有很多地方没法完善,望指正!
+
+## 目录结构
+
+```
+|--|-- cloudfunctions 云函数
+|--|--|--|-- AdminManage
+|--|--|--|-- Entrust
+|--|--|--|-- HouseInfo
+|--|--|--|-- InitInfo
+|--|--|--|-- Manager
+|--|--|--|-- PublishEntrust
+|--|-- miniprogram 小程序页面
+|--|--|--Adminpackage 管理员后台(分包)
+|--|--|--|--略
+|--|--|--CalculatorPackage 房贷计算器(分包)
+|--|--|--|--略
+|--|--|--Companypackage 主要页面(分包)
+|--|--|--|--略
+|--|--|--dist 一些用到的组件,只用到了一小部分
+|--|--|--pages 主包(主要是底部NaviBar页面)
+|--|--|--|--略
+|--|--其他页面略
+|--README.md
+```
+
+## 功能说明
+
+1. 新房、租房、二手房
+2. 房贷计算器
+3. 公司介绍
+4. 公告
+5. 管理员
+
+> 1-4 点都没啥好说的,下面主要介绍一下 `管理员后台的实现`
+
+`管理员后台集成在了小程序端`,入口隐藏在 `个人中心` 页面 `连续点击5次` 头像名字那里,就可以进入到管理员后台,进入后台的时候会在 `云函数AdminManage`进行管理员鉴权:
+
+- 如果不是管理员,会跳转到扫码加入管理员;
+- 如果是管理员,那就跳转到管理员后台;
+
+> 由于管理员数据库设置了权限为 `所有用户不可读写` ,因此鉴权是只能在云函数里面进行,这是第一道防线;后面在管理员后台的操作都是在云函数完成的,即使是小程序被反编译了,也不可能突破权限,安全性上还是经得住考验的。
+
+## 配置过程
+
+1. 直接下载源码,源码地址:https://github.com/lx164/house
+或者clone项目 git clone https://github.com/lx164/house.git
+
+2. 打开微信开发者工具,导入项目(导入的时候请选择 APP 文件夹);
+
+3. 填写APPID;
+
+4. 开通云开发环境(请参考官方文档);
+
+5. 新建以下数据库集合,一行为一个集合名(不要写错):
+
+```
+ AdminStator
+ Collections
+ CompanyInfo
+ ContactList
+ Entrust
+ NewHouse
+ Recommend
+ RentingHouse
+ SecondHouse
+ TempCllection
+ UserList
+```
+「注意」: 集合`AdminStator`权限设置为`所有用户不可读写`,其余的集合权限修改为:`所有用户可读,仅创建者可读写`。
+
+6. 设置管理员信息,在 `AdminStator` 新建一条记录,把以下的字段内容添加到该记录中,下面()里的内容根据你的实际情况填写:
+
+```json
+ "level":0,
+ "avatarUrl":"(头像)",
+ "updatetime":"(2020/06/01 06:01:18)",
+ "_openid":"(管理员的openid)",
+ "name":"(管理员名字)",
+ "phone":"(管理员手机)"
+```
+
+7. 上传 `cloudfunctions` 文件夹下所有的云函数,上传时选择 `上传并部署:云端安装依赖`;
+
+8. 修改 `app.js` 大约第8行的代码,如下:
+
+```javascript
+ wx.cloud.init({
+ env: '(填写你自己云环境的ID)',
+ traceUser: true,
+ })
+```
+
+9. 编译运行。
+
+## 界面预览
+
+
+
+
+## 结语
+
+欢迎一起探讨,如果你觉得还可以,您可以给我点一个start,或者赞赏我
+![zanshang](https://blog-static.cnblogs.com/files/LiangSenCheng/zanshang.gif)
+
+## 参考文档
+
+- [微信小程序云开发文档](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html)
\ No newline at end of file
diff --git a/.history/cloudfunctions/AdminManage/index_20191231205327.js b/.history/cloudfunctions/AdminManage/index_20191231205327.js
new file mode 100644
index 0000000000000000000000000000000000000000..09ff6d250a2227e402b4deeaac4d2198824b2cf5
--- /dev/null
+++ b/.history/cloudfunctions/AdminManage/index_20191231205327.js
@@ -0,0 +1,193 @@
+// 云函数入口文件
+// 云函数入口文件
+const cloud = require('wx-server-sdk')
+const {
+ MD5
+} = require("./MD5.js")
+
+
+cloud.init({
+ env: 'dev-house-0tiax',
+ traceUser: true,
+})
+const db = cloud.database()
+
+// 云函数入口函数
+exports.main = async (event, context) => {
+ const wxContext = cloud.getWXContext()
+ const openId = wxContext.OPENID
+
+ // 获取管理员权限级别
+ if (event.type === 'adminInfo') {
+ let res = await db.collection('AdminStator').where({ '_openid': openId }).field({ 'name': true, 'level': true }).get()
+ return res
+ }
+
+ // 获取管理员列表
+ if (event.type === 'AdminList') {
+ let count = await db.collection('AdminStator').where({ '_openid': openId }).count()
+ // 再次验证是否为管理员
+ if (count.total) {
+ var res = await db.collection('AdminStator').orderBy('level', 'asc').get()
+ } else {
+ var res = {
+ 'data': []
+ }
+ }
+ return res
+ }
+
+ // 添加管理员
+ if (event.type === 'add-admin') {
+ let data = event.data
+ let name = event.name
+ let phone = event.phone
+ let avatarUrl = event.avatarUrl
+ let updatetime = event.updatetime
+ // 修改状态
+ let ChangeStats = await db.collection('TempCllection')
+ .where({
+ _id: data.id
+ })
+ .update({
+ data: {
+ stats: true
+ }
+ })
+ // let total = await db.collection('AdminStator').where({ '_openid': openId }).count()
+ // 更新成功,添加管理员
+ if (ChangeStats.stats.updated) {
+ // 添加管理员
+ let add = await db.collection('AdminStator')
+ .add({
+ data: {
+ _openid: openId,
+ name: name,
+ phone: phone,
+ level: 1,
+ avatarUrl: avatarUrl,
+ updatetime: updatetime
+ }
+ })
+
+ if (add.errMsg == "collection.add:ok") {
+ // 删除记录
+ let remove = await db.collection('TempCllection').doc(data.id).remove()
+ if (remove.stats.removed) {
+ // 完成
+ var res = {
+ 'code': 200,
+ 'errMsg': 'ok'
+ }
+ } else {
+ // 失败
+ var res = {
+ 'code': 400,
+ 'errMsg': 'err'
+ }
+ }
+ } else {
+ // 失败
+ var res = {
+ 'code': 400,
+ 'errMsg': 'err'
+ }
+ }
+ } else {
+ // 失败
+ var res = {
+ 'code': 400,
+ 'errMsg': 'err'
+ }
+ }
+ return res
+ }
+
+ // 删除管理员
+ if (event.type === 'delete-admin') {
+ let info = await db.collection('AdminStator').where({ '_openid': openId }).get()
+ // 再次验证是否为超级管理员
+ if (info.data[0].level === 0) {
+ // 检查需要删除的管理员的openid是否与自己的相同
+ if (event.openid != openId) {
+ var remove = await db.collection('AdminStator')
+ .where({
+ _id: event.ID,
+ _openid: event.openid,
+ name: event.name,
+ phone: event.phone
+ }).remove()
+ var res = {
+ 'stats': remove.stats.removed,
+ 'errMsg': 'collection.remove:ok'
+ }
+ } else {
+ // 提示不能删除自己
+ var res = {
+ 'stats': -999,
+ 'errMsg': 'collection.remove:ok'
+ }
+ }
+ } else {
+ var res = {
+ 'stats': -100,
+ 'errMsg': 'collection.remove:ok'
+ }
+ }
+ return res
+ }
+
+ // 获取二维码
+ if (event.type === 'qrcode') {
+ let info = await db.collection('AdminStator').where({ '_openid': openId }).get()
+ // 再次验证是否为超级管理员
+ if (info.data[0].level === 0) {
+ // 生成随机码
+ // 生成10位的随机数字符串
+ let chars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
+ let str = "";
+ let n = 25
+ for (var i = 0; i < n; i++) {
+ var id = Math.ceil(Math.random() * 35);
+ str += chars[id];
+ }
+ // 对字符串MD5加密
+ let md5 = MD5(str)
+ let code = str + md5.toUpperCase() + str
+ // var res = await db.collection('AdminStator').orderBy('level','asc').get()
+ var add = await db.collection('TempCllection')
+ .add({
+ data: {
+ 'stats': false,
+ 'code': code,
+ 'updatetime': event.updatetime
+ }
+ })
+ // 数据写入成功
+ if (add.errMsg == 'collection.add:ok') {
+ var res = {
+ 'id': add._id,
+ 'stats': false,
+ 'code': code,
+ 'updatetime': event.updatetime
+ }
+ } else {
+ var res = {
+ 'id': '',
+ 'stats': '',
+ 'code': '',
+ 'updatetime': event.updatetime
+ }
+ }
+ } else {
+ var res = {
+ 'id': '',
+ 'stats': false,
+ 'code': '',
+ 'updatetime': event.updatetime
+ }
+ }
+ return { 'data': res }
+ }
+
+}
\ No newline at end of file
diff --git a/.history/cloudfunctions/AdminManage/index_20200610101745.js b/.history/cloudfunctions/AdminManage/index_20200610101745.js
new file mode 100644
index 0000000000000000000000000000000000000000..f882d42c5242bd194abd857a6b56807481ac7fb3
--- /dev/null
+++ b/.history/cloudfunctions/AdminManage/index_20200610101745.js
@@ -0,0 +1,206 @@
+// 云函数入口文件
+// 云函数入口文件
+const cloud = require('wx-server-sdk')
+const {
+ MD5
+} = require("./MD5.js")
+
+
+cloud.init({
+ env: cloud.DYNAMIC_CURRENT_ENV,
+ traceUser: true
+})
+const db = cloud.database()
+
+// 云函数入口函数
+exports.main = async (event, context) => {
+ const wxContext = cloud.getWXContext()
+ const openId = wxContext.OPENID
+
+ // 获取管理员权限级别
+ if (event.type === 'adminInfo') {
+ let res = await db.collection('AdminStator').where({
+ '_openid': openId
+ }).field({
+ 'name': true,
+ 'level': true
+ }).get()
+ return res
+ }
+
+ // 获取管理员列表
+ if (event.type === 'AdminList') {
+ let count = await db.collection('AdminStator').where({
+ '_openid': openId
+ }).count()
+ // 再次验证是否为管理员
+ if (count.total) {
+ var res = await db.collection('AdminStator').orderBy('level', 'asc').get()
+ } else {
+ var res = {
+ 'data': []
+ }
+ }
+ return res
+ }
+
+ // 添加管理员
+ if (event.type === 'add-admin') {
+ let data = event.data
+ let name = event.name
+ let phone = event.phone
+ let avatarUrl = event.avatarUrl
+ let updatetime = event.updatetime
+ // 修改状态
+ let ChangeStats = await db.collection('TempCllection')
+ .where({
+ _id: data.id
+ })
+ .update({
+ data: {
+ stats: true
+ }
+ })
+ // let total = await db.collection('AdminStator').where({ '_openid': openId }).count()
+ // 更新成功,添加管理员
+ if (ChangeStats.stats.updated) {
+ // 添加管理员
+ let add = await db.collection('AdminStator')
+ .add({
+ data: {
+ _openid: openId,
+ name: name,
+ phone: phone,
+ level: 1,
+ avatarUrl: avatarUrl,
+ updatetime: updatetime
+ }
+ })
+
+ if (add.errMsg == "collection.add:ok") {
+ // 删除记录
+ let remove = await db.collection('TempCllection').doc(data.id).remove()
+ if (remove.stats.removed) {
+ // 完成
+ var res = {
+ 'code': 200,
+ 'errMsg': 'ok'
+ }
+ } else {
+ // 失败
+ var res = {
+ 'code': 400,
+ 'errMsg': 'err'
+ }
+ }
+ } else {
+ // 失败
+ var res = {
+ 'code': 400,
+ 'errMsg': 'err'
+ }
+ }
+ } else {
+ // 失败
+ var res = {
+ 'code': 400,
+ 'errMsg': 'err'
+ }
+ }
+ return res
+ }
+
+ // 删除管理员
+ if (event.type === 'delete-admin') {
+ let info = await db.collection('AdminStator').where({
+ '_openid': openId
+ }).get()
+ // 再次验证是否为超级管理员
+ if (info.data[0].level === 0) {
+ // 检查需要删除的管理员的openid是否与自己的相同
+ if (event.openid != openId) {
+ var remove = await db.collection('AdminStator')
+ .where({
+ _id: event.ID,
+ _openid: event.openid,
+ name: event.name,
+ phone: event.phone
+ }).remove()
+ var res = {
+ 'stats': remove.stats.removed,
+ 'errMsg': 'collection.remove:ok'
+ }
+ } else {
+ // 提示不能删除自己
+ var res = {
+ 'stats': -999,
+ 'errMsg': 'collection.remove:ok'
+ }
+ }
+ } else {
+ var res = {
+ 'stats': -100,
+ 'errMsg': 'collection.remove:ok'
+ }
+ }
+ return res
+ }
+
+ // 获取二维码
+ if (event.type === 'qrcode') {
+ let info = await db.collection('AdminStator').where({
+ '_openid': openId
+ }).get()
+ // 再次验证是否为超级管理员
+ if (info.data[0].level === 0) {
+ // 生成随机码
+ // 生成10位的随机数字符串
+ let chars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
+ let str = "";
+ let n = 25
+ for (var i = 0; i < n; i++) {
+ var id = Math.ceil(Math.random() * 35);
+ str += chars[id];
+ }
+ // 对字符串MD5加密
+ let md5 = MD5(str)
+ let code = str + md5.toUpperCase() + str
+ // var res = await db.collection('AdminStator').orderBy('level','asc').get()
+ var add = await db.collection('TempCllection')
+ .add({
+ data: {
+ 'stats': false,
+ 'code': code,
+ 'updatetime': event.updatetime
+ }
+ })
+ // 数据写入成功
+ if (add.errMsg == 'collection.add:ok') {
+ var res = {
+ 'id': add._id,
+ 'stats': false,
+ 'code': code,
+ 'updatetime': event.updatetime
+ }
+ } else {
+ var res = {
+ 'id': '',
+ 'stats': '',
+ 'code': '',
+ 'updatetime': event.updatetime
+ }
+ }
+ } else {
+ var res = {
+ 'id': '',
+ 'stats': false,
+ 'code': '',
+ 'updatetime': event.updatetime
+ }
+ }
+ return {
+ 'data': res
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/.history/cloudfunctions/Entrust/index_20191230201707.js b/.history/cloudfunctions/Entrust/index_20191230201707.js
new file mode 100644
index 0000000000000000000000000000000000000000..1f4c24c0219dda153e0624fedc053e0f0fb34623
--- /dev/null
+++ b/.history/cloudfunctions/Entrust/index_20191230201707.js
@@ -0,0 +1,102 @@
+// 云函数入口文件
+const cloud = require('wx-server-sdk')
+
+cloud.init({
+ env: 'dev-house-0tiax',
+ traceUser: true,
+})
+const db = cloud.database()
+
+// 云函数入口函数
+exports.main = async (event, context) => {
+ const wxContext = cloud.getWXContext()
+ const openId = wxContext.OPENID
+ const dbname = 'Entrust'
+
+ // 用户保存自己的委托
+ if (event.type === 'add') {
+ let EntrustType = event.EntrustType
+ let FormData = event.FormData
+ let photoInfo = event.photoInfo
+ let updateTime = event.updateTime
+ FormData['totalPrice'] = parseInt(FormData['totalPrice'])
+
+ return await db.collection(dbname).add({
+ data: {
+ _openid: openId,
+ photoInfo: photoInfo,
+ FormData: FormData,
+ EntrustType: EntrustType,
+ publish: false,
+ publishTime: '',
+ checkedBy: '',
+ checkedTime: '',
+ title:'',
+ plate: '',
+ publishPlate:'',
+ charge:{'name': '','phone':'' },
+ updateTime: updateTime,
+ recommendData: {
+ "Isrecommend": false,
+ "recommender": "",
+ "updatetime": ""
+ }
+ }
+ })
+ }
+
+ // 用户查看自己的委托
+ if (event.type === 'MyEntrust') {
+ const EntrustList = await db.collection(dbname).orderBy('updateTime', 'desc').where({
+ '_openid': openId,
+ 'EntrustType': event.key
+ }).field({
+ _id: true,
+ EntrustType: true,
+ checkedBy: true,
+ checkedTime: true,
+ publish: true,
+ publishTime: true,
+ updateTime: true,
+ title:true,
+ 'FormData.detailLocation': true,
+ 'FormData.houseStyle': true
+ }).get()
+ return EntrustList
+ }
+
+ // 管理员获取用户的委托
+ if (event.type === 'AllEntrust') {
+ let IsPublish = event.IsPublish
+ const EntrustList = await db.collection(dbname).orderBy('updateTime', 'desc').where({
+ 'publish': IsPublish
+ }).field({
+ _id: true,
+ plate:true,
+ publishPlate:true,
+ EntrustType: true,
+ checkedBy: true,
+ checkedTime: true,
+ publish: true,
+ publishTime: true,
+ updateTime: true,
+ title:true,
+ 'FormData.detailLocation': true,
+ 'FormData.name': true,
+ 'FormData.phonenumber': true
+ }).get()
+ return EntrustList
+ }
+
+ // 详细信息
+ if (event.type === 'EntrustDetail') {
+ let id = event.id
+ const EntrustList = await db.collection(dbname)
+ .orderBy('updateTime', 'desc')
+ .where({
+ '_id': id
+ }).get()
+ return EntrustList
+ }
+
+}
\ No newline at end of file
diff --git a/.history/cloudfunctions/Entrust/index_20200610101753.js b/.history/cloudfunctions/Entrust/index_20200610101753.js
new file mode 100644
index 0000000000000000000000000000000000000000..6c84839ba238dea8faa8436afaea60c1c1bff157
--- /dev/null
+++ b/.history/cloudfunctions/Entrust/index_20200610101753.js
@@ -0,0 +1,105 @@
+// 云函数入口文件
+const cloud = require('wx-server-sdk')
+
+cloud.init({
+ env: cloud.DYNAMIC_CURRENT_ENV,
+ traceUser: true
+})
+const db = cloud.database()
+
+// 云函数入口函数
+exports.main = async (event, context) => {
+ const wxContext = cloud.getWXContext()
+ const openId = wxContext.OPENID
+ const dbname = 'Entrust'
+
+ // 用户保存自己的委托
+ if (event.type === 'add') {
+ let EntrustType = event.EntrustType
+ let FormData = event.FormData
+ let photoInfo = event.photoInfo
+ let updateTime = event.updateTime
+ FormData['totalPrice'] = parseInt(FormData['totalPrice'])
+
+ return await db.collection(dbname).add({
+ data: {
+ _openid: openId,
+ photoInfo: photoInfo,
+ FormData: FormData,
+ EntrustType: EntrustType,
+ publish: false,
+ publishTime: '',
+ checkedBy: '',
+ checkedTime: '',
+ title: '',
+ plate: '',
+ publishPlate: '',
+ charge: {
+ 'name': '',
+ 'phone': ''
+ },
+ updateTime: updateTime,
+ recommendData: {
+ "Isrecommend": false,
+ "recommender": "",
+ "updatetime": ""
+ }
+ }
+ })
+ }
+
+ // 用户查看自己的委托
+ if (event.type === 'MyEntrust') {
+ const EntrustList = await db.collection(dbname).orderBy('updateTime', 'desc').where({
+ '_openid': openId,
+ 'EntrustType': event.key
+ }).field({
+ _id: true,
+ EntrustType: true,
+ checkedBy: true,
+ checkedTime: true,
+ publish: true,
+ publishTime: true,
+ updateTime: true,
+ title: true,
+ 'FormData.detailLocation': true,
+ 'FormData.houseStyle': true
+ }).get()
+ return EntrustList
+ }
+
+ // 管理员获取用户的委托
+ if (event.type === 'AllEntrust') {
+ let IsPublish = event.IsPublish
+ const EntrustList = await db.collection(dbname).orderBy('updateTime', 'desc').where({
+ 'publish': IsPublish
+ }).field({
+ _id: true,
+ plate: true,
+ publishPlate: true,
+ EntrustType: true,
+ checkedBy: true,
+ checkedTime: true,
+ publish: true,
+ publishTime: true,
+ updateTime: true,
+ title: true,
+ 'FormData.detailLocation': true,
+ 'FormData.name': true,
+ 'FormData.phonenumber': true
+ }).get()
+ return EntrustList
+ }
+
+ // 详细信息
+ if (event.type === 'EntrustDetail') {
+ let id = event.id
+ const EntrustList = await db.collection(dbname)
+ .orderBy('updateTime', 'desc')
+ .where({
+ '_id': id
+ }).get()
+ return EntrustList
+ }
+
+}
\ No newline at end of file
diff --git a/.history/cloudfunctions/HouseInfo/index_20191230171048.js b/.history/cloudfunctions/HouseInfo/index_20191230171048.js
new file mode 100644
index 0000000000000000000000000000000000000000..d1449f9a058a155b2858484870155d18a3f9c98d
--- /dev/null
+++ b/.history/cloudfunctions/HouseInfo/index_20191230171048.js
@@ -0,0 +1,156 @@
+// 云函数入口文件
+const cloud = require('wx-server-sdk')
+
+cloud.init({
+ env: 'dev-house-0tiax',
+ traceUser: true,
+})
+const db = cloud.database()
+const _ = db.command
+const $ = _.aggregate
+
+// 云函数入口函数
+exports.main = async (event, context) => {
+ const wxContext = cloud.getWXContext()
+ const openId = wxContext.OPENID
+
+ // 查询房子
+ if (event.type === 'query') {
+ let limit = 10
+ let dbname = event.key
+ let page = event.page
+
+ let res = await db.collection(dbname).aggregate()
+ .skip(page)
+ .limit(limit)
+ .sort({
+ updateTime: -1
+ })
+ .lookup({
+ from: 'Entrust',
+ localField: 'ID',
+ foreignField: '_id',
+ as: 'EntrustInfo',
+ })
+ .match({
+ 'EntrustInfo.publish':true
+ })
+ .project({
+ 'ID': true,
+ 'updateTime': true,
+ 'EntrustInfo.title': true,
+ 'EntrustInfo.FormData.houseStyle': true,
+ 'EntrustInfo.FormData.roomStyle': true,
+ 'EntrustInfo.FormData.area': true,
+ 'EntrustInfo.FormData.location': true,
+ 'EntrustInfo.FormData.Tags': true,
+ 'EntrustInfo.FormData.averagePrice': true,
+ 'EntrustInfo.FormData.totalPrice': true,
+ 'EntrustInfo.photoInfo': true
+ })
+ .replaceRoot({
+ newRoot: $.mergeObjects([$.arrayElemAt(['$EntrustInfo', 0]), '$$ROOT'])
+ })
+ .project({
+ '_id': false,
+ 'EntrustInfo': false
+ })
+ .end()
+ return res
+ }
+
+ // 房型筛选
+ if (event.type == 'housetype') {
+ let limit = 10
+ let dbname = event.key
+ let page = event.page
+ let RoomStyle = event.RoomStyle
+ let res = await db.collection(dbname).aggregate()
+ .skip(page)
+ .limit(limit)
+ .sort({
+ updateTime: -1
+ })
+ .lookup({
+ from: 'Entrust',
+ localField: 'ID',
+ foreignField: '_id',
+ as: 'EntrustInfo',
+ })
+ .match({
+ 'EntrustInfo.publish':true,
+ 'EntrustInfo.FormData.roomStyle': RoomStyle
+ })
+ .project({
+ 'ID': true,
+ 'updateTime': true,
+ 'EntrustInfo.title': true,
+ 'EntrustInfo.FormData.houseStyle': true,
+ 'EntrustInfo.FormData.roomStyle': true,
+ 'EntrustInfo.FormData.area': true,
+ 'EntrustInfo.FormData.location': true,
+ 'EntrustInfo.FormData.Tags': true,
+ 'EntrustInfo.FormData.averagePrice': true,
+ 'EntrustInfo.FormData.totalPrice': true,
+ 'EntrustInfo.photoInfo': true
+ })
+ .replaceRoot({
+ newRoot: $.mergeObjects([$.arrayElemAt(['$EntrustInfo', 0]), '$$ROOT'])
+ })
+ .project({
+ '_id': false,
+ 'EntrustInfo': false
+ })
+ .end()
+ return res
+ }
+
+ // 价格筛选
+ if (event.type == 'houseprice') {
+ let limit = 10
+ let page = 0
+ let dbname = event.key
+ let min = parseInt(event.min)
+ let max = parseInt(event.max)
+
+ let res = await db.collection(dbname).aggregate()
+ .skip(page)
+ .limit(limit)
+ .sort({
+ updateTime: -1
+ })
+ .lookup({
+ from: 'Entrust',
+ localField: 'ID',
+ foreignField: '_id',
+ as: 'EntrustInfo',
+ })
+ .match({
+ 'EntrustInfo.publish':true,
+ 'EntrustInfo.FormData.totalPrice': _.gte(min).lte(max)
+ })
+ .project({
+ 'ID': true,
+ 'updateTime': true,
+ 'EntrustInfo.title': true,
+ 'EntrustInfo.FormData.houseStyle': true,
+ 'EntrustInfo.FormData.roomStyle': true,
+ 'EntrustInfo.FormData.area': true,
+ 'EntrustInfo.FormData.location': true,
+ 'EntrustInfo.FormData.Tags': true,
+ 'EntrustInfo.FormData.averagePrice': true,
+ 'EntrustInfo.FormData.totalPrice': true,
+ 'EntrustInfo.photoInfo': true
+ })
+ .replaceRoot({
+ newRoot: $.mergeObjects([$.arrayElemAt(['$EntrustInfo', 0]), '$$ROOT'])
+ })
+ .project({
+ '_id': false,
+ 'EntrustInfo': false
+ })
+ .end()
+ return res
+ }
+
+}
\ No newline at end of file
diff --git a/.history/cloudfunctions/HouseInfo/index_20200610101803.js b/.history/cloudfunctions/HouseInfo/index_20200610101803.js
new file mode 100644
index 0000000000000000000000000000000000000000..2b9c16fb0f61993d12ce7c4e7ad05a5bd32a131a
--- /dev/null
+++ b/.history/cloudfunctions/HouseInfo/index_20200610101803.js
@@ -0,0 +1,156 @@
+// 云函数入口文件
+const cloud = require('wx-server-sdk')
+
+cloud.init({
+ env: cloud.DYNAMIC_CURRENT_ENV,
+ traceUser: true
+})
+const db = cloud.database()
+const _ = db.command
+const $ = _.aggregate
+
+// 云函数入口函数
+exports.main = async (event, context) => {
+ const wxContext = cloud.getWXContext()
+ const openId = wxContext.OPENID
+
+ // 查询房子
+ if (event.type === 'query') {
+ let limit = 10
+ let dbname = event.key
+ let page = event.page
+
+ let res = await db.collection(dbname).aggregate()
+ .skip(page)
+ .limit(limit)
+ .sort({
+ updateTime: -1
+ })
+ .lookup({
+ from: 'Entrust',
+ localField: 'ID',
+ foreignField: '_id',
+ as: 'EntrustInfo',
+ })
+ .match({
+ 'EntrustInfo.publish': true
+ })
+ .project({
+ 'ID': true,
+ 'updateTime': true,
+ 'EntrustInfo.title': true,
+ 'EntrustInfo.FormData.houseStyle': true,
+ 'EntrustInfo.FormData.roomStyle': true,
+ 'EntrustInfo.FormData.area': true,
+ 'EntrustInfo.FormData.location': true,
+ 'EntrustInfo.FormData.Tags': true,
+ 'EntrustInfo.FormData.averagePrice': true,
+ 'EntrustInfo.FormData.totalPrice': true,
+ 'EntrustInfo.photoInfo': true
+ })
+ .replaceRoot({
+ newRoot: $.mergeObjects([$.arrayElemAt(['$EntrustInfo', 0]), '$$ROOT'])
+ })
+ .project({
+ '_id': false,
+ 'EntrustInfo': false
+ })
+ .end()
+ return res
+ }
+
+ // 房型筛选
+ if (event.type == 'housetype') {
+ let limit = 10
+ let dbname = event.key
+ let page = event.page
+ let RoomStyle = event.RoomStyle
+ let res = await db.collection(dbname).aggregate()
+ .skip(page)
+ .limit(limit)
+ .sort({
+ updateTime: -1
+ })
+ .lookup({
+ from: 'Entrust',
+ localField: 'ID',
+ foreignField: '_id',
+ as: 'EntrustInfo',
+ })
+ .match({
+ 'EntrustInfo.publish': true,
+ 'EntrustInfo.FormData.roomStyle': RoomStyle
+ })
+ .project({
+ 'ID': true,
+ 'updateTime': true,
+ 'EntrustInfo.title': true,
+ 'EntrustInfo.FormData.houseStyle': true,
+ 'EntrustInfo.FormData.roomStyle': true,
+ 'EntrustInfo.FormData.area': true,
+ 'EntrustInfo.FormData.location': true,
+ 'EntrustInfo.FormData.Tags': true,
+ 'EntrustInfo.FormData.averagePrice': true,
+ 'EntrustInfo.FormData.totalPrice': true,
+ 'EntrustInfo.photoInfo': true
+ })
+ .replaceRoot({
+ newRoot: $.mergeObjects([$.arrayElemAt(['$EntrustInfo', 0]), '$$ROOT'])
+ })
+ .project({
+ '_id': false,
+ 'EntrustInfo': false
+ })
+ .end()
+ return res
+ }
+
+ // 价格筛选
+ if (event.type == 'houseprice') {
+ let limit = 10
+ let page = 0
+ let dbname = event.key
+ let min = parseInt(event.min)
+ let max = parseInt(event.max)
+
+ let res = await db.collection(dbname).aggregate()
+ .skip(page)
+ .limit(limit)
+ .sort({
+ updateTime: -1
+ })
+ .lookup({
+ from: 'Entrust',
+ localField: 'ID',
+ foreignField: '_id',
+ as: 'EntrustInfo',
+ })
+ .match({
+ 'EntrustInfo.publish': true,
+ 'EntrustInfo.FormData.totalPrice': _.gte(min).lte(max)
+ })
+ .project({
+ 'ID': true,
+ 'updateTime': true,
+ 'EntrustInfo.title': true,
+ 'EntrustInfo.FormData.houseStyle': true,
+ 'EntrustInfo.FormData.roomStyle': true,
+ 'EntrustInfo.FormData.area': true,
+ 'EntrustInfo.FormData.location': true,
+ 'EntrustInfo.FormData.Tags': true,
+ 'EntrustInfo.FormData.averagePrice': true,
+ 'EntrustInfo.FormData.totalPrice': true,
+ 'EntrustInfo.photoInfo': true
+ })
+ .replaceRoot({
+ newRoot: $.mergeObjects([$.arrayElemAt(['$EntrustInfo', 0]), '$$ROOT'])
+ })
+ .project({
+ '_id': false,
+ 'EntrustInfo': false
+ })
+ .end()
+ return res
+ }
+
+}
\ No newline at end of file
diff --git a/.history/cloudfunctions/InitInfo/index_20191230222115.js b/.history/cloudfunctions/InitInfo/index_20191230222115.js
new file mode 100644
index 0000000000000000000000000000000000000000..59bded22a659420bb5135532bd22d36a1ea209c5
--- /dev/null
+++ b/.history/cloudfunctions/InitInfo/index_20191230222115.js
@@ -0,0 +1,37 @@
+// 云函数入口文件
+const cloud = require('wx-server-sdk')
+
+cloud.init({
+ env: 'dev-house-0tiax',
+ traceUser: true,
+})
+const db = cloud.database()
+
+// 云函数入口函数
+exports.main = async (event, context) => {
+ const wxContext = cloud.getWXContext()
+ const openId = wxContext.OPENID
+
+ // 用户保存自己的委托
+ if (event.type === 'INIT') {
+ const dbname = 'UserList'
+ return await db.collection(dbname).where({
+ '_openid': openId
+ }).field({
+ _openid: true,
+ name: true,
+ phone: true,
+ address:true,
+ manager:true
+ }).get()
+ }
+
+ // 查询是否为管理员
+ if (event.type == 'ADMIN') {
+ const dbname = 'AdminStator'
+ return await db.collection(dbname).where({
+ '_openid': openId
+ }).count()
+ }
+
+}
\ No newline at end of file
diff --git a/.history/cloudfunctions/InitInfo/index_20200610101808.js b/.history/cloudfunctions/InitInfo/index_20200610101808.js
new file mode 100644
index 0000000000000000000000000000000000000000..9f208fdb2240b7f85f0f2d09ced081d12e486a9f
--- /dev/null
+++ b/.history/cloudfunctions/InitInfo/index_20200610101808.js
@@ -0,0 +1,37 @@
+// 云函数入口文件
+const cloud = require('wx-server-sdk')
+
+cloud.init({
+ env: cloud.DYNAMIC_CURRENT_ENV,
+ traceUser: true
+})
+const db = cloud.database()
+
+// 云函数入口函数
+exports.main = async (event, context) => {
+ const wxContext = cloud.getWXContext()
+ const openId = wxContext.OPENID
+
+ // 用户保存自己的委托
+ if (event.type === 'INIT') {
+ const dbname = 'UserList'
+ return await db.collection(dbname).where({
+ '_openid': openId
+ }).field({
+ _openid: true,
+ name: true,
+ phone: true,
+ address: true,
+ manager: true
+ }).get()
+ }
+
+ // 查询是否为管理员
+ if (event.type == 'ADMIN') {
+ const dbname = 'AdminStator'
+ return await db.collection(dbname).where({
+ '_openid': openId
+ }).count()
+ }
+
+}
\ No newline at end of file
diff --git a/.history/cloudfunctions/Manager/index_20200101114055.js b/.history/cloudfunctions/Manager/index_20200101114055.js
new file mode 100644
index 0000000000000000000000000000000000000000..d8ab056b334da11621a896b5f2bfae29ba6dac52
--- /dev/null
+++ b/.history/cloudfunctions/Manager/index_20200101114055.js
@@ -0,0 +1,77 @@
+// 云函数入口文件
+const cloud = require('wx-server-sdk')
+
+cloud.init({
+ env: 'dev-house-0tiax',
+ traceUser: true,
+})
+const db = cloud.database()
+
+// 云函数入口函数
+exports.main = async (event, context) => {
+ const wxContext = cloud.getWXContext()
+
+ // 添加员工
+ if (event.type === 'add-staff') {
+ let dbname = 'ContactList'
+ return await db.collection(dbname)
+ .add({
+ data: {
+ name: event.name,
+ phone: event.phone,
+ updatetime: event.updatetime
+ }
+ })
+
+ }
+
+ // 修改员工
+ if (event.type === 'edit-staff') {
+ let dbname = 'ContactList'
+ return await db.collection(dbname)
+ .where({
+ _id: event.ID
+ })
+ .update({
+ data: {
+ name: event.name,
+ phone: event.phone,
+ updatetime: event.updatetime
+ }
+ })
+
+ }
+
+ // 删除员工
+ if (event.type === 'delete-staff') {
+ let dbname = 'ContactList'
+ try {
+ return await db.collection(dbname)
+ .where({
+ _id: event.ID,
+ name: event.name,
+ phone: event.phone
+ }).remove()
+ } catch (e) {
+ console.error(e)
+ }
+ }
+
+ // 更新公司信息
+ if(event.type==='update-company'){
+ let dbname = 'CompanyInfo'
+ return await db.collection(dbname)
+ .where({
+ _id: event.ID
+ })
+ .update({
+ data: {
+ introduce:event.introduce,
+ notice:event.notice,
+ editer: event.editer,
+ phone: event.phone,
+ updatetime: event.updatetime
+ }
+ })
+ }
+}
\ No newline at end of file
diff --git a/.history/cloudfunctions/Manager/index_20200610101814.js b/.history/cloudfunctions/Manager/index_20200610101814.js
new file mode 100644
index 0000000000000000000000000000000000000000..a41dcd43c52b23fa13f7cfd9fb10c33e4d1e8da2
--- /dev/null
+++ b/.history/cloudfunctions/Manager/index_20200610101814.js
@@ -0,0 +1,77 @@
+// 云函数入口文件
+const cloud = require('wx-server-sdk')
+
+cloud.init({
+ env: cloud.DYNAMIC_CURRENT_ENV,
+ traceUser: true
+})
+const db = cloud.database()
+
+// 云函数入口函数
+exports.main = async (event, context) => {
+ const wxContext = cloud.getWXContext()
+
+ // 添加员工
+ if (event.type === 'add-staff') {
+ let dbname = 'ContactList'
+ return await db.collection(dbname)
+ .add({
+ data: {
+ name: event.name,
+ phone: event.phone,
+ updatetime: event.updatetime
+ }
+ })
+
+ }
+
+ // 修改员工
+ if (event.type === 'edit-staff') {
+ let dbname = 'ContactList'
+ return await db.collection(dbname)
+ .where({
+ _id: event.ID
+ })
+ .update({
+ data: {
+ name: event.name,
+ phone: event.phone,
+ updatetime: event.updatetime
+ }
+ })
+
+ }
+
+ // 删除员工
+ if (event.type === 'delete-staff') {
+ let dbname = 'ContactList'
+ try {
+ return await db.collection(dbname)
+ .where({
+ _id: event.ID,
+ name: event.name,
+ phone: event.phone
+ }).remove()
+ } catch (e) {
+ console.error(e)
+ }
+ }
+
+ // 更新公司信息
+ if (event.type === 'update-company') {
+ let dbname = 'CompanyInfo'
+ return await db.collection(dbname)
+ .where({
+ _id: event.ID
+ })
+ .update({
+ data: {
+ introduce: event.introduce,
+ notice: event.notice,
+ editer: event.editer,
+ phone: event.phone,
+ updatetime: event.updatetime
+ }
+ })
+ }
+}
\ No newline at end of file
diff --git a/.history/cloudfunctions/PublishEntrust/index_20191231143827.js b/.history/cloudfunctions/PublishEntrust/index_20191231143827.js
new file mode 100644
index 0000000000000000000000000000000000000000..f47eac6cc61b4b2fe320be5265c0e71b1127c2a9
--- /dev/null
+++ b/.history/cloudfunctions/PublishEntrust/index_20191231143827.js
@@ -0,0 +1,126 @@
+// 云函数入口文件
+const cloud = require('wx-server-sdk')
+
+cloud.init({
+ env: 'dev-house-0tiax',
+ traceUser: true,
+})
+const db = cloud.database()
+
+// 云函数入口函数
+exports.main = async (event, context) => {
+ const wxContext = cloud.getWXContext()
+ const openId = wxContext.OPENID
+
+ // 管理员发布委托
+ if (event.type === 'add') {
+ let ID = event.ID
+ let publishTime = event.updateTime
+ let checkedBy = event.checkedBy
+ let checkedTime = event.checkedTime
+ let title = event.title
+ let updateTime = event.updateTime
+ let dbname = event.publishPlate
+ let plate = event.plate
+ let publishPlate = event.publishPlate
+ let charge = event.charge
+
+ let res = await db.collection(dbname).add({
+ data: {
+ _openid: openId,
+ ID: ID,
+ updateTime: updateTime
+ }
+ }).then(res => {
+ return res;
+ })
+
+ // 更新委托信息
+ let task = await db.collection('Entrust')
+ .doc(event.ID)
+ .update({
+ data: {
+ plate: plate,
+ publishPlate: publishPlate,
+ charge: charge,
+ publish: true,
+ publishTime: publishTime,
+ checkedBy: checkedBy,
+ checkedTime: checkedTime,
+ title: title
+ }
+ })
+ // await task;
+ // await res;
+ return res;
+ }
+
+ // 修改已经审核发布的委托信息
+ if (event.type === 'changeEntrust') {
+ // 删除已发布到不同平台的数据
+ let dbname = event.publishPlate
+ let del = await db.collection(dbname).where({ ID: event.ID }).remove()
+ // 设置为未发布的状态
+ let res = await db.collection('Entrust')
+ .where({
+ _id: event.ID
+ })
+ .update({
+ data: {
+ checkedBy: '',
+ charge: {
+ 'name': '',
+ 'phone': ''
+ },
+ checkedTime: '',
+ plate: '',
+ publish: false,
+ publishTime: '',
+ publishPlate: '',
+ recommendData: {
+ 'Isrecommend': false,
+ 'recommender': '',
+ 'updatetime': '',
+ 'weight': 0
+ }
+ }
+ })
+ return res
+ }
+
+
+ // 删除已经审核发布的委托信息
+ if (event.type === 'deleteEntrust') {
+ // 删除已发布到不同平台的数据
+ let dbname = event.publishPlate
+ let del = await db.collection(dbname).where({ ID: event.ID }).remove()
+ // 删除本体数据
+ let res = await db.collection('Entrust').where({ _id: event.ID }).remove()
+ return res
+ }
+
+
+ // 添加首页推荐
+ if (event.type === 'recommend') {
+ let ID = event.ID
+ let updateTime = event.updateTime
+ let weight = parseInt(event.weight)
+ let recommender = event.recommender
+ let Isrecommend = event.Isrecommend
+
+ let res = await db.collection('Entrust')
+ .doc(ID)
+ .update({
+ data: {
+ recommendData: {
+ "Isrecommend": Isrecommend,
+ "weight": weight,
+ "recommender": recommender,
+ "updatetime": updateTime
+ }
+ }
+ })
+ return res;
+ }
+
+}
\ No newline at end of file
diff --git a/.history/cloudfunctions/PublishEntrust/index_20200610101822.js b/.history/cloudfunctions/PublishEntrust/index_20200610101822.js
new file mode 100644
index 0000000000000000000000000000000000000000..77d650484ba7a8d91eac87a62ac7fbc3bb6b600c
--- /dev/null
+++ b/.history/cloudfunctions/PublishEntrust/index_20200610101822.js
@@ -0,0 +1,132 @@
+// 云函数入口文件
+const cloud = require('wx-server-sdk')
+
+cloud.init({
+ env: cloud.DYNAMIC_CURRENT_ENV,
+ traceUser: true
+})
+const db = cloud.database()
+
+// 云函数入口函数
+exports.main = async (event, context) => {
+ const wxContext = cloud.getWXContext()
+ const openId = wxContext.OPENID
+
+ // 管理员发布委托
+ if (event.type === 'add') {
+ let ID = event.ID
+ let publishTime = event.updateTime
+ let checkedBy = event.checkedBy
+ let checkedTime = event.checkedTime
+ let title = event.title
+ let updateTime = event.updateTime
+ let dbname = event.publishPlate
+ let plate = event.plate
+ let publishPlate = event.publishPlate
+ let charge = event.charge
+
+ let res = await db.collection(dbname).add({
+ data: {
+ _openid: openId,
+ ID: ID,
+ updateTime: updateTime
+ }
+ }).then(res => {
+ return res;
+ })
+
+ // 更新委托信息
+ let task = await db.collection('Entrust')
+ .doc(event.ID)
+ .update({
+ data: {
+ plate: plate,
+ publishPlate: publishPlate,
+ charge: charge,
+ publish: true,
+ publishTime: publishTime,
+ checkedBy: checkedBy,
+ checkedTime: checkedTime,
+ title: title
+ }
+ })
+ // await task;
+ // await res;
+ return res;
+ }
+
+ // 修改已经审核发布的委托信息
+ if (event.type === 'changeEntrust') {
+ // 删除已发布到不同平台的数据
+ let dbname = event.publishPlate
+ let del = await db.collection(dbname).where({
+ ID: event.ID
+ }).remove()
+ // 设置为未发布的状态
+ let res = await db.collection('Entrust')
+ .where({
+ _id: event.ID
+ })
+ .update({
+ data: {
+ checkedBy: '',
+ charge: {
+ 'name': '',
+ 'phone': ''
+ },
+ checkedTime: '',
+ plate: '',
+ publish: false,
+ publishTime: '',
+ publishPlate: '',
+ recommendData: {
+ 'Isrecommend': false,
+ 'recommender': '',
+ 'updatetime': '',
+ 'weight': 0
+ }
+ }
+ })
+ return res
+ }
+
+
+ // 删除已经审核发布的委托信息
+ if (event.type === 'deleteEntrust') {
+ // 删除已发布到不同平台的数据
+ let dbname = event.publishPlate
+ let del = await db.collection(dbname).where({
+ ID: event.ID
+ }).remove()
+ // 删除本体数据
+ let res = await db.collection('Entrust').where({
+ _id: event.ID
+ }).remove()
+ return res
+ }
+
+
+ // 添加首页推荐
+ if (event.type === 'recommend') {
+ let ID = event.ID
+ let updateTime = event.updateTime
+ let weight = parseInt(event.weight)
+ let recommender = event.recommender
+ let Isrecommend = event.Isrecommend
+
+ let res = await db.collection('Entrust')
+ .doc(ID)
+ .update({
+ data: {
+ recommendData: {
+ "Isrecommend": Isrecommend,
+ "weight": weight,
+ "recommender": recommender,
+ "updatetime": updateTime
+ }
+ }
+ })
+ return res;
+ }
+
+}
\ No newline at end of file
diff --git a/Readme.md b/Readme.md
index 515758c247acc04ff3d5d72970cf7bec42b3ebd4..d9381cf18be10fb50f6843aa601addbd005099b1 100644
--- a/Readme.md
+++ b/Readme.md
@@ -108,7 +108,16 @@
7. 上传 `cloudfunctions` 文件夹下所有的云函数,上传时选择 `上传并部署:云端安装依赖`;
-8. 编译运行。
+8. 修改 `app.js` 大约第8行的代码,如下:
+
+```javascript
+ wx.cloud.init({
+ env: '(填写你自己云环境的ID)',
+ traceUser: true,
+ })
+```
+
+9. 编译运行。
## 界面预览
diff --git a/cloudfunctions/AdminManage/index.js b/cloudfunctions/AdminManage/index.js
index 09ff6d250a2227e402b4deeaac4d2198824b2cf5..f882d42c5242bd194abd857a6b56807481ac7fb3 100755
--- a/cloudfunctions/AdminManage/index.js
+++ b/cloudfunctions/AdminManage/index.js
@@ -7,8 +7,8 @@ const {
cloud.init({
- env: 'dev-house-0tiax',
- traceUser: true,
+ env: cloud.DYNAMIC_CURRENT_ENV,
+ traceUser: true
})
const db = cloud.database()
@@ -19,13 +19,20 @@ exports.main = async (event, context) => {
// 获取管理员权限级别
if (event.type === 'adminInfo') {
- let res = await db.collection('AdminStator').where({ '_openid': openId }).field({ 'name': true, 'level': true }).get()
+ let res = await db.collection('AdminStator').where({
+ '_openid': openId
+ }).field({
+ 'name': true,
+ 'level': true
+ }).get()
return res
}
// 获取管理员列表
if (event.type === 'AdminList') {
- let count = await db.collection('AdminStator').where({ '_openid': openId }).count()
+ let count = await db.collection('AdminStator').where({
+ '_openid': openId
+ }).count()
// 再次验证是否为管理员
if (count.total) {
var res = await db.collection('AdminStator').orderBy('level', 'asc').get()
@@ -105,7 +112,9 @@ exports.main = async (event, context) => {
// 删除管理员
if (event.type === 'delete-admin') {
- let info = await db.collection('AdminStator').where({ '_openid': openId }).get()
+ let info = await db.collection('AdminStator').where({
+ '_openid': openId
+ }).get()
// 再次验证是否为超级管理员
if (info.data[0].level === 0) {
// 检查需要删除的管理员的openid是否与自己的相同
@@ -139,7 +148,9 @@ exports.main = async (event, context) => {
// 获取二维码
if (event.type === 'qrcode') {
- let info = await db.collection('AdminStator').where({ '_openid': openId }).get()
+ let info = await db.collection('AdminStator').where({
+ '_openid': openId
+ }).get()
// 再次验证是否为超级管理员
if (info.data[0].level === 0) {
// 生成随机码
@@ -187,7 +198,9 @@ exports.main = async (event, context) => {
'updatetime': event.updatetime
}
}
- return { 'data': res }
+ return {
+ 'data': res
+ }
}
}
\ No newline at end of file
diff --git a/cloudfunctions/Entrust/index.js b/cloudfunctions/Entrust/index.js
index 1f4c24c0219dda153e0624fedc053e0f0fb34623..6c84839ba238dea8faa8436afaea60c1c1bff157 100755
--- a/cloudfunctions/Entrust/index.js
+++ b/cloudfunctions/Entrust/index.js
@@ -2,8 +2,8 @@
const cloud = require('wx-server-sdk')
cloud.init({
- env: 'dev-house-0tiax',
- traceUser: true,
+ env: cloud.DYNAMIC_CURRENT_ENV,
+ traceUser: true
})
const db = cloud.database()
@@ -31,10 +31,13 @@ exports.main = async (event, context) => {
publishTime: '',
checkedBy: '',
checkedTime: '',
- title:'',
+ title: '',
plate: '',
- publishPlate:'',
- charge:{'name': '','phone':'' },
+ publishPlate: '',
+ charge: {
+ 'name': '',
+ 'phone': ''
+ },
updateTime: updateTime,
recommendData: {
"Isrecommend": false,
@@ -58,7 +61,7 @@ exports.main = async (event, context) => {
publish: true,
publishTime: true,
updateTime: true,
- title:true,
+ title: true,
'FormData.detailLocation': true,
'FormData.houseStyle': true
}).get()
@@ -72,15 +75,15 @@ exports.main = async (event, context) => {
'publish': IsPublish
}).field({
_id: true,
- plate:true,
- publishPlate:true,
+ plate: true,
+ publishPlate: true,
EntrustType: true,
checkedBy: true,
checkedTime: true,
publish: true,
publishTime: true,
updateTime: true,
- title:true,
+ title: true,
'FormData.detailLocation': true,
'FormData.name': true,
'FormData.phonenumber': true
@@ -92,10 +95,10 @@ exports.main = async (event, context) => {
if (event.type === 'EntrustDetail') {
let id = event.id
const EntrustList = await db.collection(dbname)
- .orderBy('updateTime', 'desc')
- .where({
- '_id': id
- }).get()
+ .orderBy('updateTime', 'desc')
+ .where({
+ '_id': id
+ }).get()
return EntrustList
}
diff --git a/cloudfunctions/HouseInfo/index.js b/cloudfunctions/HouseInfo/index.js
index d1449f9a058a155b2858484870155d18a3f9c98d..2b9c16fb0f61993d12ce7c4e7ad05a5bd32a131a 100755
--- a/cloudfunctions/HouseInfo/index.js
+++ b/cloudfunctions/HouseInfo/index.js
@@ -2,8 +2,8 @@
const cloud = require('wx-server-sdk')
cloud.init({
- env: 'dev-house-0tiax',
- traceUser: true,
+ env: cloud.DYNAMIC_CURRENT_ENV,
+ traceUser: true
})
const db = cloud.database()
const _ = db.command
@@ -33,7 +33,7 @@ exports.main = async (event, context) => {
as: 'EntrustInfo',
})
.match({
- 'EntrustInfo.publish':true
+ 'EntrustInfo.publish': true
})
.project({
'ID': true,
@@ -78,7 +78,7 @@ exports.main = async (event, context) => {
as: 'EntrustInfo',
})
.match({
- 'EntrustInfo.publish':true,
+ 'EntrustInfo.publish': true,
'EntrustInfo.FormData.roomStyle': RoomStyle
})
.project({
@@ -126,7 +126,7 @@ exports.main = async (event, context) => {
as: 'EntrustInfo',
})
.match({
- 'EntrustInfo.publish':true,
+ 'EntrustInfo.publish': true,
'EntrustInfo.FormData.totalPrice': _.gte(min).lte(max)
})
.project({
@@ -150,7 +150,7 @@ exports.main = async (event, context) => {
'EntrustInfo': false
})
.end()
- return res
+ return res
}
}
\ No newline at end of file
diff --git a/cloudfunctions/InitInfo/index.js b/cloudfunctions/InitInfo/index.js
index 59bded22a659420bb5135532bd22d36a1ea209c5..9f208fdb2240b7f85f0f2d09ced081d12e486a9f 100755
--- a/cloudfunctions/InitInfo/index.js
+++ b/cloudfunctions/InitInfo/index.js
@@ -2,8 +2,8 @@
const cloud = require('wx-server-sdk')
cloud.init({
- env: 'dev-house-0tiax',
- traceUser: true,
+ env: cloud.DYNAMIC_CURRENT_ENV,
+ traceUser: true
})
const db = cloud.database()
@@ -21,8 +21,8 @@ exports.main = async (event, context) => {
_openid: true,
name: true,
phone: true,
- address:true,
- manager:true
+ address: true,
+ manager: true
}).get()
}
diff --git a/cloudfunctions/Manager/index.js b/cloudfunctions/Manager/index.js
index d8ab056b334da11621a896b5f2bfae29ba6dac52..a41dcd43c52b23fa13f7cfd9fb10c33e4d1e8da2 100755
--- a/cloudfunctions/Manager/index.js
+++ b/cloudfunctions/Manager/index.js
@@ -2,8 +2,8 @@
const cloud = require('wx-server-sdk')
cloud.init({
- env: 'dev-house-0tiax',
- traceUser: true,
+ env: cloud.DYNAMIC_CURRENT_ENV,
+ traceUser: true
})
const db = cloud.database()
@@ -58,7 +58,7 @@ exports.main = async (event, context) => {
}
// 更新公司信息
- if(event.type==='update-company'){
+ if (event.type === 'update-company') {
let dbname = 'CompanyInfo'
return await db.collection(dbname)
.where({
@@ -66,8 +66,8 @@ exports.main = async (event, context) => {
})
.update({
data: {
- introduce:event.introduce,
- notice:event.notice,
+ introduce: event.introduce,
+ notice: event.notice,
editer: event.editer,
phone: event.phone,
updatetime: event.updatetime
diff --git a/cloudfunctions/PublishEntrust/index.js b/cloudfunctions/PublishEntrust/index.js
index f47eac6cc61b4b2fe320be5265c0e71b1127c2a9..77d650484ba7a8d91eac87a62ac7fbc3bb6b600c 100755
--- a/cloudfunctions/PublishEntrust/index.js
+++ b/cloudfunctions/PublishEntrust/index.js
@@ -2,8 +2,8 @@
const cloud = require('wx-server-sdk')
cloud.init({
- env: 'dev-house-0tiax',
- traceUser: true,
+ env: cloud.DYNAMIC_CURRENT_ENV,
+ traceUser: true
})
const db = cloud.database()
@@ -59,7 +59,9 @@ exports.main = async (event, context) => {
if (event.type === 'changeEntrust') {
// 删除已发布到不同平台的数据
let dbname = event.publishPlate
- let del = await db.collection(dbname).where({ ID: event.ID }).remove()
+ let del = await db.collection(dbname).where({
+ ID: event.ID
+ }).remove()
// 设置为未发布的状态
let res = await db.collection('Entrust')
.where({
@@ -93,9 +95,13 @@ exports.main = async (event, context) => {
if (event.type === 'deleteEntrust') {
// 删除已发布到不同平台的数据
let dbname = event.publishPlate
- let del = await db.collection(dbname).where({ ID: event.ID }).remove()
+ let del = await db.collection(dbname).where({
+ ID: event.ID
+ }).remove()
// 删除本体数据
- let res = await db.collection('Entrust').where({ _id: event.ID }).remove()
+ let res = await db.collection('Entrust').where({
+ _id: event.ID
+ }).remove()
return res
}