提交 8080adc1 编写于 作者: 小森森

修改云函数环境ID

上级 50606988
# 基于微信云开发-租房小程序-带管理员后台
[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. 编译运行。
## 界面预览
<img src="https://s1.ax1x.com/2020/06/03/twik8g.jpg" style="" width = "50%" alt="首页" align=center><img src="https://s1.ax1x.com/2020/06/03/twiZKs.jpg" width = "50%" alt="业主委托" align=center><img src="https://s1.ax1x.com/2020/06/03/twiern.jpg" width = "50%" alt="我的" align=center><img src="https://s1.ax1x.com/2020/06/03/twAA2D.jpg" width = "50%" alt="房子列表" align=center><img src="https://s1.ax1x.com/2020/06/03/twitq1.jpg" width = "50%" alt="房子详情" align=center><img src="https://s1.ax1x.com/2020/06/03/twiaa6.jpg" width = "50%" alt="房子详情-联系中介" align=center>
<img src="https://s1.ax1x.com/2020/06/03/twidIK.png" width = "50%" alt="发布委托" align=center><img src="https://s1.ax1x.com/2020/06/03/twi0PO.jpg" width = "50%" alt="设置首页推荐" align=center><img src="https://s1.ax1x.com/2020/06/03/twi324.jpg" width = "50%" alt="房贷计算器" align=center><img src="https://s1.ax1x.com/2020/06/03/twiDRe.jpg" width = "50%" alt="设置员工信息" align=center><img src="https://s1.ax1x.com/2020/06/04/t0AX40.jpg" width = "50%" alt="添加管理员" align=center><img src="https://s1.ax1x.com/2020/06/03/twiFPS.jpg" width = "50%" alt="添加管理员二维码" align=center><img src="https://s1.ax1x.com/2020/06/03/twihi8.jpg" width = "50%" alt="新管理员扫描二维码" align=center><img src="https://s1.ax1x.com/2020/06/03/twi9VP.jpg" width = "50%" alt="房源管理" align=center><img src="https://s1.ax1x.com/2020/06/03/twPXgH.jpg" width = "50%" alt="发布委托的状态" align=center>
## 结语
欢迎一起探讨,如果你觉得还可以,您可以给我点一个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
# 基于微信云开发-租房小程序-带管理员后台
[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. 编译运行。
## 界面预览
<img src="https://s1.ax1x.com/2020/06/03/twik8g.jpg" style="" width = "50%" alt="首页" align=center><img src="https://s1.ax1x.com/2020/06/03/twiZKs.jpg" width = "50%" alt="业主委托" align=center><img src="https://s1.ax1x.com/2020/06/03/twiern.jpg" width = "50%" alt="我的" align=center><img src="https://s1.ax1x.com/2020/06/03/twAA2D.jpg" width = "50%" alt="房子列表" align=center><img src="https://s1.ax1x.com/2020/06/03/twitq1.jpg" width = "50%" alt="房子详情" align=center><img src="https://s1.ax1x.com/2020/06/03/twiaa6.jpg" width = "50%" alt="房子详情-联系中介" align=center>
<img src="https://s1.ax1x.com/2020/06/03/twidIK.png" width = "50%" alt="发布委托" align=center><img src="https://s1.ax1x.com/2020/06/03/twi0PO.jpg" width = "50%" alt="设置首页推荐" align=center><img src="https://s1.ax1x.com/2020/06/03/twi324.jpg" width = "50%" alt="房贷计算器" align=center><img src="https://s1.ax1x.com/2020/06/03/twiDRe.jpg" width = "50%" alt="设置员工信息" align=center><img src="https://s1.ax1x.com/2020/06/04/t0AX40.jpg" width = "50%" alt="添加管理员" align=center><img src="https://s1.ax1x.com/2020/06/03/twiFPS.jpg" width = "50%" alt="添加管理员二维码" align=center><img src="https://s1.ax1x.com/2020/06/03/twihi8.jpg" width = "50%" alt="新管理员扫描二维码" align=center><img src="https://s1.ax1x.com/2020/06/03/twi9VP.jpg" width = "50%" alt="房源管理" align=center><img src="https://s1.ax1x.com/2020/06/03/twPXgH.jpg" width = "50%" alt="发布委托的状态" align=center>
## 结语
欢迎一起探讨,如果你觉得还可以,您可以给我点一个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
# 基于微信云开发-租房小程序-带管理员后台
[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. 编译运行。
## 界面预览
<img src="https://s1.ax1x.com/2020/06/03/twik8g.jpg" style="" width = "50%" alt="首页" align=center><img src="https://s1.ax1x.com/2020/06/03/twiZKs.jpg" width = "50%" alt="业主委托" align=center><img src="https://s1.ax1x.com/2020/06/03/twiern.jpg" width = "50%" alt="我的" align=center><img src="https://s1.ax1x.com/2020/06/03/twAA2D.jpg" width = "50%" alt="房子列表" align=center><img src="https://s1.ax1x.com/2020/06/03/twitq1.jpg" width = "50%" alt="房子详情" align=center><img src="https://s1.ax1x.com/2020/06/03/twiaa6.jpg" width = "50%" alt="房子详情-联系中介" align=center>
<img src="https://s1.ax1x.com/2020/06/03/twidIK.png" width = "50%" alt="发布委托" align=center><img src="https://s1.ax1x.com/2020/06/03/twi0PO.jpg" width = "50%" alt="设置首页推荐" align=center><img src="https://s1.ax1x.com/2020/06/03/twi324.jpg" width = "50%" alt="房贷计算器" align=center><img src="https://s1.ax1x.com/2020/06/03/twiDRe.jpg" width = "50%" alt="设置员工信息" align=center><img src="https://s1.ax1x.com/2020/06/04/t0AX40.jpg" width = "50%" alt="添加管理员" align=center><img src="https://s1.ax1x.com/2020/06/03/twiFPS.jpg" width = "50%" alt="添加管理员二维码" align=center><img src="https://s1.ax1x.com/2020/06/03/twihi8.jpg" width = "50%" alt="新管理员扫描二维码" align=center><img src="https://s1.ax1x.com/2020/06/03/twi9VP.jpg" width = "50%" alt="房源管理" align=center><img src="https://s1.ax1x.com/2020/06/03/twPXgH.jpg" width = "50%" alt="发布委托的状态" align=center>
## 结语
欢迎一起探讨,如果你觉得还可以,您可以给我点一个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
// 云函数入口文件
// 云函数入口文件
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
// 云函数入口文件
// 云函数入口文件
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
// 云函数入口文件
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
// 云函数入口文件
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
// 云函数入口文件
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
// 云函数入口文件
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
// 云函数入口文件
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
// 云函数入口文件
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
// 云函数入口文件
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
// 云函数入口文件
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
// 云函数入口文件
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
// 云函数入口文件
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
......@@ -108,7 +108,16 @@
7. 上传 `cloudfunctions` 文件夹下所有的云函数,上传时选择 `上传并部署:云端安装依赖`
8. 编译运行。
8. 修改 `app.js` 大约第8行的代码,如下:
```javascript
wx.cloud.init({
env: '(填写你自己云环境的ID)',
traceUser: true,
})
```
9. 编译运行。
## 界面预览
......
......@@ -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
......@@ -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
}
......
......@@ -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
......@@ -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()
}
......
......@@ -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
......
......@@ -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
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册