Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
dgr6878
Tcb-house云开发租房微信小程序
提交
8080adc1
T
Tcb-house云开发租房微信小程序
项目概览
dgr6878
/
Tcb-house云开发租房微信小程序
与 Fork 源项目一致
Fork自
小森森LiangSenCheng / Tcb-house云开发租房微信小程序
通知
7
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Tcb-house云开发租房微信小程序
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
8080adc1
编写于
6月 10, 2020
作者:
小
小森森
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修改云函数环境ID
上级
50606988
变更
22
隐藏空白更改
内联
并排
Showing
22 changed file
with
1862 addition
and
41 deletion
+1862
-41
.history/Readme_20200604123350.md
.history/Readme_20200604123350.md
+125
-0
.history/Readme_20200610101931.md
.history/Readme_20200610101931.md
+127
-0
.history/Readme_20200610102106.md
.history/Readme_20200610102106.md
+134
-0
.history/cloudfunctions/AdminManage/index_20191231205327.js
.history/cloudfunctions/AdminManage/index_20191231205327.js
+193
-0
.history/cloudfunctions/AdminManage/index_20200610101745.js
.history/cloudfunctions/AdminManage/index_20200610101745.js
+206
-0
.history/cloudfunctions/Entrust/index_20191230201707.js
.history/cloudfunctions/Entrust/index_20191230201707.js
+102
-0
.history/cloudfunctions/Entrust/index_20200610101753.js
.history/cloudfunctions/Entrust/index_20200610101753.js
+105
-0
.history/cloudfunctions/HouseInfo/index_20191230171048.js
.history/cloudfunctions/HouseInfo/index_20191230171048.js
+156
-0
.history/cloudfunctions/HouseInfo/index_20200610101803.js
.history/cloudfunctions/HouseInfo/index_20200610101803.js
+156
-0
.history/cloudfunctions/InitInfo/index_20191230222115.js
.history/cloudfunctions/InitInfo/index_20191230222115.js
+37
-0
.history/cloudfunctions/InitInfo/index_20200610101808.js
.history/cloudfunctions/InitInfo/index_20200610101808.js
+37
-0
.history/cloudfunctions/Manager/index_20200101114055.js
.history/cloudfunctions/Manager/index_20200101114055.js
+77
-0
.history/cloudfunctions/Manager/index_20200610101814.js
.history/cloudfunctions/Manager/index_20200610101814.js
+77
-0
.history/cloudfunctions/PublishEntrust/index_20191231143827.js
...ory/cloudfunctions/PublishEntrust/index_20191231143827.js
+126
-0
.history/cloudfunctions/PublishEntrust/index_20200610101822.js
...ory/cloudfunctions/PublishEntrust/index_20200610101822.js
+132
-0
Readme.md
Readme.md
+10
-1
cloudfunctions/AdminManage/index.js
cloudfunctions/AdminManage/index.js
+20
-7
cloudfunctions/Entrust/index.js
cloudfunctions/Entrust/index.js
+16
-13
cloudfunctions/HouseInfo/index.js
cloudfunctions/HouseInfo/index.js
+6
-6
cloudfunctions/InitInfo/index.js
cloudfunctions/InitInfo/index.js
+4
-4
cloudfunctions/Manager/index.js
cloudfunctions/Manager/index.js
+5
-5
cloudfunctions/PublishEntrust/index.js
cloudfunctions/PublishEntrust/index.js
+11
-5
未找到文件。
.history/Readme_20200604123350.md
0 → 100644
浏览文件 @
8080adc1
# 基于微信云开发-租房小程序-带管理员后台
[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
.history/Readme_20200610101931.md
0 → 100644
浏览文件 @
8080adc1
# 基于微信云开发-租房小程序-带管理员后台
[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
.history/Readme_20200610102106.md
0 → 100644
浏览文件 @
8080adc1
# 基于微信云开发-租房小程序-带管理员后台
[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
.history/cloudfunctions/AdminManage/index_20191231205327.js
0 → 100644
浏览文件 @
8080adc1
// 云函数入口文件
// 云函数入口文件
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
.history/cloudfunctions/AdminManage/index_20200610101745.js
0 → 100644
浏览文件 @
8080adc1
// 云函数入口文件
// 云函数入口文件
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
.history/cloudfunctions/Entrust/index_20191230201707.js
0 → 100644
浏览文件 @
8080adc1
// 云函数入口文件
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
.history/cloudfunctions/Entrust/index_20200610101753.js
0 → 100644
浏览文件 @
8080adc1
// 云函数入口文件
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
.history/cloudfunctions/HouseInfo/index_20191230171048.js
0 → 100644
浏览文件 @
8080adc1
// 云函数入口文件
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
.history/cloudfunctions/HouseInfo/index_20200610101803.js
0 → 100644
浏览文件 @
8080adc1
// 云函数入口文件
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
.history/cloudfunctions/InitInfo/index_20191230222115.js
0 → 100644
浏览文件 @
8080adc1
// 云函数入口文件
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
.history/cloudfunctions/InitInfo/index_20200610101808.js
0 → 100644
浏览文件 @
8080adc1
// 云函数入口文件
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
.history/cloudfunctions/Manager/index_20200101114055.js
0 → 100644
浏览文件 @
8080adc1
// 云函数入口文件
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
.history/cloudfunctions/Manager/index_20200610101814.js
0 → 100644
浏览文件 @
8080adc1
// 云函数入口文件
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
.history/cloudfunctions/PublishEntrust/index_20191231143827.js
0 → 100644
浏览文件 @
8080adc1
// 云函数入口文件
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
.history/cloudfunctions/PublishEntrust/index_20200610101822.js
0 → 100644
浏览文件 @
8080adc1
// 云函数入口文件
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
Readme.md
浏览文件 @
8080adc1
...
...
@@ -108,7 +108,16 @@
7.
上传
`cloudfunctions`
文件夹下所有的云函数,上传时选择
`上传并部署:云端安装依赖`
;
8.
编译运行。
8.
修改
`app.js`
大约第8行的代码,如下:
```
javascript
wx
.
cloud
.
init
({
env
:
'
(填写你自己云环境的ID)
'
,
traceUser
:
true
,
})
```
9.
编译运行。
## 界面预览
...
...
cloudfunctions/AdminManage/index.js
浏览文件 @
8080adc1
...
...
@@ -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
cloudfunctions/Entrust/index.js
浏览文件 @
8080adc1
...
...
@@ -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
}
...
...
cloudfunctions/HouseInfo/index.js
浏览文件 @
8080adc1
...
...
@@ -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
cloudfunctions/InitInfo/index.js
浏览文件 @
8080adc1
...
...
@@ -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
()
}
...
...
cloudfunctions/Manager/index.js
浏览文件 @
8080adc1
...
...
@@ -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
...
...
cloudfunctions/PublishEntrust/index.js
浏览文件 @
8080adc1
...
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录