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