diff --git a/cloudfunctions/getExp/config.json b/cloudfunctions/getExp/config.json
new file mode 100644
index 0000000..5ecc33e
--- /dev/null
+++ b/cloudfunctions/getExp/config.json
@@ -0,0 +1,6 @@
+{
+ "permissions": {
+ "openapi": [
+ ]
+ }
+}
\ No newline at end of file
diff --git a/cloudfunctions/getExp/index.js b/cloudfunctions/getExp/index.js
new file mode 100644
index 0000000..58fa5e9
--- /dev/null
+++ b/cloudfunctions/getExp/index.js
@@ -0,0 +1,41 @@
+// 云函数入口文件
+const cloud = require('wx-server-sdk')
+cloud.init()
+const db = cloud.database()
+const _ = db.command
+const $ = _.aggregate
+
+// 云函数入口函数
+exports.main = async (event, context) => {
+ const wxContext = cloud.getWXContext()
+
+ return db.collection('experiment').aggregate()
+ .lookup({
+ from: 'order',
+ localField: '_id',
+ foreignField: 'expId',
+ as: 'orderInfo'
+ })
+ .match({
+ isActive: true,
+ orderInfo: _.or($.cond([
+ _.elemMatch({
+ examineeId: wxContext.OPENID
+ }),
+ false,
+ true
+ ],
+ ),_.size(0))
+ })
+ .project({
+ orderInfo: 0
+ })
+ .end({
+ success: function (res) {
+ return res
+ },
+ fail: function (err) {
+ return err
+ }
+ })
+}
\ No newline at end of file
diff --git a/cloudfunctions/getExp/package-lock.json b/cloudfunctions/getExp/package-lock.json
new file mode 100644
index 0000000..9d0e650
--- /dev/null
+++ b/cloudfunctions/getExp/package-lock.json
@@ -0,0 +1,822 @@
+{
+ "name": "getExp",
+ "version": "1.0.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@cloudbase/database": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/@cloudbase/database/-/database-1.2.2.tgz",
+ "integrity": "sha512-14GPoD0vdVnfdN+4rHlMmpkxAekFklt4X2gi33iCuoZUDC62p5LWS7OuTjoronnZ4QPsZPCKm+WsjE8mVD+Hmw==",
+ "requires": {
+ "bson": "^4.0.3",
+ "lodash.clonedeep": "4.5.0",
+ "lodash.set": "4.3.2",
+ "lodash.unset": "4.5.2"
+ }
+ },
+ "@cloudbase/node-sdk": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/@cloudbase/node-sdk/-/node-sdk-2.3.4.tgz",
+ "integrity": "sha512-qk8DpZDILWjL3X97UGKPb4p/9AD8+iP26eOfegE+mtW9rhUNtWPSKI0MIQyuxlkey+9G3rquw0jsCqX/SYpGSw==",
+ "requires": {
+ "@cloudbase/database": "1.2.2",
+ "@cloudbase/signature-nodejs": "1.0.0-beta.0",
+ "@types/retry": "^0.12.0",
+ "is-regex": "^1.0.4",
+ "jsonwebtoken": "^8.5.1",
+ "lodash.merge": "^4.6.1",
+ "request": "^2.87.0",
+ "request-promise": "^4.2.5",
+ "retry": "^0.12.0",
+ "ts-node": "^8.10.2",
+ "xml2js": "^0.4.19"
+ }
+ },
+ "@cloudbase/signature-nodejs": {
+ "version": "1.0.0-beta.0",
+ "resolved": "https://registry.npmjs.org/@cloudbase/signature-nodejs/-/signature-nodejs-1.0.0-beta.0.tgz",
+ "integrity": "sha512-gpKqwsVk/D2PzvFamYNReymXSdvRSY90eZ1ARf+1wZ8oT6OpK9kr6nmevGykMxN1n17Gn92hBbWqAxU9o3+kAQ==",
+ "requires": {
+ "@types/clone": "^0.1.30",
+ "clone": "^2.1.2",
+ "is-stream": "^2.0.0",
+ "url": "^0.11.0"
+ }
+ },
+ "@protobufjs/aspromise": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
+ "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78="
+ },
+ "@protobufjs/base64": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
+ "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="
+ },
+ "@protobufjs/codegen": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
+ "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="
+ },
+ "@protobufjs/eventemitter": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
+ "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A="
+ },
+ "@protobufjs/fetch": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
+ "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=",
+ "requires": {
+ "@protobufjs/aspromise": "^1.1.1",
+ "@protobufjs/inquire": "^1.1.0"
+ }
+ },
+ "@protobufjs/float": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
+ "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E="
+ },
+ "@protobufjs/inquire": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
+ "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik="
+ },
+ "@protobufjs/path": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
+ "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0="
+ },
+ "@protobufjs/pool": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
+ "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q="
+ },
+ "@protobufjs/utf8": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
+ "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA="
+ },
+ "@types/clone": {
+ "version": "0.1.30",
+ "resolved": "https://registry.npmjs.org/@types/clone/-/clone-0.1.30.tgz",
+ "integrity": "sha1-5zZWSMG0ITalnH1QQGN7O1yDthQ="
+ },
+ "@types/long": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz",
+ "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w=="
+ },
+ "@types/node": {
+ "version": "10.17.49",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.49.tgz",
+ "integrity": "sha512-PGaJNs5IZz5XgzwJvL/1zRfZB7iaJ5BydZ8/Picm+lUNYoNO9iVTQkVy5eUh0dZDrx3rBOIs3GCbCRmMuYyqwg=="
+ },
+ "@types/retry": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz",
+ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA=="
+ },
+ "ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "arg": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
+ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA=="
+ },
+ "asn1": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+ "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+ "requires": {
+ "safer-buffer": "~2.1.0"
+ }
+ },
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
+ },
+ "aws-sign2": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
+ },
+ "aws4": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
+ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA=="
+ },
+ "base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+ "requires": {
+ "tweetnacl": "^0.14.3"
+ }
+ },
+ "bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
+ },
+ "bson": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/bson/-/bson-4.2.2.tgz",
+ "integrity": "sha512-9fX257PVHAUpiRGmY3356RVWKQxLA73BgjA/x5MGuJkTEMeG7yzjuBrsiFB67EXRJnFVKrbJY9t/M+oElKYktQ==",
+ "requires": {
+ "buffer": "^5.6.0"
+ }
+ },
+ "buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "requires": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "buffer-equal-constant-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+ "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
+ },
+ "buffer-from": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
+ },
+ "clone": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+ "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18="
+ },
+ "combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
+ },
+ "diff": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
+ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A=="
+ },
+ "ecc-jsbn": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+ "requires": {
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.1.0"
+ }
+ },
+ "ecdsa-sig-formatter": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ },
+ "extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
+ },
+ "fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
+ },
+ "form-data": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
+ "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
+ }
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "har-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
+ },
+ "har-validator": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
+ "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
+ "requires": {
+ "ajv": "^6.12.3",
+ "har-schema": "^2.0.0"
+ }
+ },
+ "has-symbols": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
+ "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg=="
+ },
+ "http-signature": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
+ }
+ },
+ "ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
+ },
+ "is-regex": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz",
+ "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==",
+ "requires": {
+ "has-symbols": "^1.0.1"
+ }
+ },
+ "is-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
+ "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw=="
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
+ },
+ "jsonwebtoken": {
+ "version": "8.5.1",
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
+ "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
+ "requires": {
+ "jws": "^3.2.2",
+ "lodash.includes": "^4.3.0",
+ "lodash.isboolean": "^3.0.3",
+ "lodash.isinteger": "^4.0.4",
+ "lodash.isnumber": "^3.0.3",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.isstring": "^4.0.1",
+ "lodash.once": "^4.0.0",
+ "ms": "^2.1.1",
+ "semver": "^5.6.0"
+ }
+ },
+ "jsprim": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.2.3",
+ "verror": "1.10.0"
+ }
+ },
+ "jwa": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
+ "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
+ "requires": {
+ "buffer-equal-constant-time": "1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "jws": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
+ "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
+ "requires": {
+ "jwa": "^1.4.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "lodash": {
+ "version": "4.17.20",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
+ "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
+ },
+ "lodash.clonedeep": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+ "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8="
+ },
+ "lodash.includes": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
+ "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8="
+ },
+ "lodash.isboolean": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
+ "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY="
+ },
+ "lodash.isinteger": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
+ "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M="
+ },
+ "lodash.isnumber": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
+ "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w="
+ },
+ "lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
+ },
+ "lodash.isstring": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
+ "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE="
+ },
+ "lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
+ },
+ "lodash.once": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
+ "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
+ },
+ "lodash.set": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz",
+ "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM="
+ },
+ "lodash.unset": {
+ "version": "4.5.2",
+ "resolved": "https://registry.npmjs.org/lodash.unset/-/lodash.unset-4.5.2.tgz",
+ "integrity": "sha1-Nw0dPoW3Kn4bDN8tJyEhMG8j5O0="
+ },
+ "long": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
+ "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
+ },
+ "make-error": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
+ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
+ },
+ "mime-db": {
+ "version": "1.44.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
+ "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg=="
+ },
+ "mime-types": {
+ "version": "2.1.27",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
+ "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
+ "requires": {
+ "mime-db": "1.44.0"
+ }
+ },
+ "ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
+ "oauth-sign": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
+ },
+ "performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
+ },
+ "protobufjs": {
+ "version": "6.8.8",
+ "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.8.tgz",
+ "integrity": "sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw==",
+ "requires": {
+ "@protobufjs/aspromise": "^1.1.2",
+ "@protobufjs/base64": "^1.1.2",
+ "@protobufjs/codegen": "^2.0.4",
+ "@protobufjs/eventemitter": "^1.1.0",
+ "@protobufjs/fetch": "^1.1.0",
+ "@protobufjs/float": "^1.0.2",
+ "@protobufjs/inquire": "^1.1.0",
+ "@protobufjs/path": "^1.1.2",
+ "@protobufjs/pool": "^1.1.0",
+ "@protobufjs/utf8": "^1.1.0",
+ "@types/long": "^4.0.0",
+ "@types/node": "^10.1.0",
+ "long": "^4.0.0"
+ }
+ },
+ "psl": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
+ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
+ },
+ "punycode": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+ "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0="
+ },
+ "qs": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
+ },
+ "querystring": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+ "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA="
+ },
+ "request": {
+ "version": "2.88.2",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
+ "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
+ "requires": {
+ "aws-sign2": "~0.7.0",
+ "aws4": "^1.8.0",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.6",
+ "extend": "~3.0.2",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.3.2",
+ "har-validator": "~5.1.3",
+ "http-signature": "~1.2.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.19",
+ "oauth-sign": "~0.9.0",
+ "performance-now": "^2.1.0",
+ "qs": "~6.5.2",
+ "safe-buffer": "^5.1.2",
+ "tough-cookie": "~2.5.0",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.3.2"
+ }
+ },
+ "request-promise": {
+ "version": "4.2.6",
+ "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.6.tgz",
+ "integrity": "sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ==",
+ "requires": {
+ "bluebird": "^3.5.0",
+ "request-promise-core": "1.1.4",
+ "stealthy-require": "^1.1.1",
+ "tough-cookie": "^2.3.3"
+ }
+ },
+ "request-promise-core": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz",
+ "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==",
+ "requires": {
+ "lodash": "^4.17.19"
+ }
+ },
+ "retry": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
+ "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs="
+ },
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "source-map-support": {
+ "version": "0.5.19",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
+ "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "sshpk": {
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
+ "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
+ "requires": {
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "bcrypt-pbkdf": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.0.2",
+ "tweetnacl": "~0.14.0"
+ }
+ },
+ "stealthy-require": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
+ "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks="
+ },
+ "tcb-admin-node": {
+ "version": "1.23.0",
+ "resolved": "https://registry.npmjs.org/tcb-admin-node/-/tcb-admin-node-1.23.0.tgz",
+ "integrity": "sha512-SAbjTqMsSi63SId1BJ4kWdyGJzhxh9Tjvy3YXxcsoaAC2PtASn4UIYsBsiNEUfcn58QEn2tdvCvvf69WLLjjrg==",
+ "requires": {
+ "@cloudbase/database": "0.9.15",
+ "@cloudbase/signature-nodejs": "^1.0.0-beta.0",
+ "is-regex": "^1.0.4",
+ "jsonwebtoken": "^8.5.1",
+ "lodash.merge": "^4.6.1",
+ "request": "^2.87.0",
+ "xml2js": "^0.4.19"
+ },
+ "dependencies": {
+ "@cloudbase/database": {
+ "version": "0.9.15",
+ "resolved": "https://registry.npmjs.org/@cloudbase/database/-/database-0.9.15.tgz",
+ "integrity": "sha512-63e7iIl+van41B39Tw4ScNe9TRCt+5GHjc7q6i8NzkWBLC3U3KlbWo79YHsUHUPI79POpQ8UMlMVo7HXIAO3dg==",
+ "requires": {
+ "bson": "^4.0.2",
+ "lodash.clonedeep": "4.5.0",
+ "lodash.set": "4.3.2",
+ "lodash.unset": "4.5.2"
+ }
+ }
+ }
+ },
+ "tough-cookie": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
+ "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
+ "requires": {
+ "psl": "^1.1.28",
+ "punycode": "^2.1.1"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
+ }
+ }
+ },
+ "ts-node": {
+ "version": "8.10.2",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz",
+ "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==",
+ "requires": {
+ "arg": "^4.1.0",
+ "diff": "^4.0.1",
+ "make-error": "^1.1.1",
+ "source-map-support": "^0.5.17",
+ "yn": "3.1.1"
+ }
+ },
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
+ },
+ "uri-js": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz",
+ "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==",
+ "requires": {
+ "punycode": "^2.1.0"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
+ }
+ }
+ },
+ "url": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
+ "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+ "requires": {
+ "punycode": "1.3.2",
+ "querystring": "0.2.0"
+ }
+ },
+ "uuid": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
+ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
+ },
+ "verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "^1.2.0"
+ }
+ },
+ "wx-server-sdk": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/wx-server-sdk/-/wx-server-sdk-2.3.2.tgz",
+ "integrity": "sha512-xtOah5ZdQVxZ7iZdkL6swGUqSToM1/Uy8bloEHktsLXIoIqB0uVvqeQH7sgKokZBBLZnzMOVModE2/ctR+tp7g==",
+ "requires": {
+ "@cloudbase/node-sdk": "2.3.4",
+ "protobufjs": "6.8.8",
+ "tcb-admin-node": "^1.23.0",
+ "tslib": "^1.9.3"
+ }
+ },
+ "xml2js": {
+ "version": "0.4.23",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
+ "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
+ "requires": {
+ "sax": ">=0.6.0",
+ "xmlbuilder": "~11.0.0"
+ }
+ },
+ "xmlbuilder": {
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="
+ },
+ "yn": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
+ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q=="
+ }
+ }
+}
diff --git a/cloudfunctions/getExp/package.json b/cloudfunctions/getExp/package.json
new file mode 100644
index 0000000..6897742
--- /dev/null
+++ b/cloudfunctions/getExp/package.json
@@ -0,0 +1,14 @@
+{
+ "name": "getExp",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "author": "",
+ "license": "ISC",
+ "dependencies": {
+ "wx-server-sdk": "^2.3.2"
+ }
+}
diff --git a/pages/expInfo1/expInfo1.js b/pages/expInfo1/expInfo1.js
index f69b8d5..58c6710 100644
--- a/pages/expInfo1/expInfo1.js
+++ b/pages/expInfo1/expInfo1.js
@@ -71,45 +71,62 @@ Page({
});
}
else{
- db.collection('order').add({
- data:{
- expId: this.data.id,
- examineeId: app.globalData.openid,
- isAccepted: 0,
- contact: this.data.examineeContact,
- others: this.data.examineeOthers,
- examinerId: this.data.examinerId
- }
- })
- db.collection('user').where({
- _openid: app.globalData.openid
- })
- .update({
- data:{
- joinedExp: _.push(this.data.id)
- },
+ db.collection('order').where({
+ expId: this.data.id,
+ examineeId: app.globalData.openid
+ }).get({
success: res=>{
- wx.showModal({ //弹出提示框
- title: '提示',
- content: '申请提交成功',
- showCancel: false,
- confirmText: '返回',
- success: function (res) {
- if (res.confirm) {
- wx.navigateBack({
- delta: 1
+ if(res.data.length){
+ wx.showToast({
+ title: '您已经申请过该实验,请勿重复申请',
+ icon: 'none',
+ duration: 2000,
+ mask: true
+ });
+ }
+ else{
+ db.collection('order').add({
+ data:{
+ expId: this.data.id,
+ examineeId: app.globalData.openid,
+ isAccepted: 0,
+ contact: this.data.examineeContact,
+ others: this.data.examineeOthers,
+ examinerId: this.data.examinerId
+ }
+ })
+ db.collection('user').where({
+ _openid: app.globalData.openid
+ })
+ .update({
+ data:{
+ joinedExp: _.push(this.data.id)
+ },
+ success: res=>{
+ wx.showModal({ //弹出提示框
+ title: '提示',
+ content: '申请提交成功',
+ showCancel: false,
+ confirmText: '返回',
+ success: res=> {
+ if (res.confirm) {
+ wx.navigateBack({
+ delta: 1
+ })
+ }
+ }
+ });
+ },
+ fail: res=>{
+ wx.showModal({
+ title: '注意',
+ content: '提交失败,请重试',
+ showCancel: false,
+ confirmText: '重试'
})
}
- }
- });
- },
- fail: res=>{
- wx.showModal({
- title: '注意',
- content: '提交失败,请重试',
- showCancel: false,
- confirmText: '重试'
- })
+ })
+ }
}
})
}
diff --git a/pages/home/home.js b/pages/home/home.js
index a37e98c..a608aab 100644
--- a/pages/home/home.js
+++ b/pages/home/home.js
@@ -30,7 +30,7 @@ Page({
console.log(res.result.openid)
app.globalData.openid = res.result.openid
wx.getSetting({
- success: function (res) {
+ success: res=> {
if (res.authSetting['scope.userInfo']) { //如果已经授权
wx.getUserInfo({
success: res => {
@@ -39,7 +39,7 @@ Page({
_openid: app.globalData.openid
})
.get({
- success: function (res) {
+ success: res => {
if (!res.data.length) { //openid不在数据库中
wx.redirectTo({ //跳转到注册页面
url: '../../pages/register/register',
@@ -78,7 +78,7 @@ Page({
_openid: app.globalData.openid
})
.get({
- success: function (res) {
+ success: res=>{
app.globalData.userDetail = res.data[0]
}
})
diff --git a/pages/home/home.wxml b/pages/home/home.wxml
index f265b88..eb4b5b5 100644
--- a/pages/home/home.wxml
+++ b/pages/home/home.wxml
@@ -20,10 +20,10 @@
\ No newline at end of file
diff --git a/pages/order/get.json b/pages/order/get.json
index 43ffbb2..6d1d01f 100644
--- a/pages/order/get.json
+++ b/pages/order/get.json
@@ -1,5 +1,6 @@
{
"usingComponents": {
"Tabs":"../../components/Tabs/Tabs"
- }
+ },
+ "navigationBarTitleText": "我领取的实验"
}
\ No newline at end of file
diff --git a/pages/order/released.json b/pages/order/released.json
index 43ffbb2..90925d1 100644
--- a/pages/order/released.json
+++ b/pages/order/released.json
@@ -1,5 +1,6 @@
{
"usingComponents": {
"Tabs":"../../components/Tabs/Tabs"
- }
+ },
+ "navigationBarTitleText": "我发布的实验"
}
\ No newline at end of file
diff --git a/pages/register/register.js b/pages/register/register.js
index 7662c30..272880c 100644
--- a/pages/register/register.js
+++ b/pages/register/register.js
@@ -107,39 +107,55 @@ Page({
mask: true
});
} else {
- db.collection('user').add({ //向数据库中插入数据
- data: {
- name: submitName,
- stuNumber: submitStuNumber,
- gender: submitGender,
- isExaminer: false,
- createdExp: [],
- joinedExp: []
- },
- success: function (res) { //插入成功
- wx.showModal({ //弹出提示框
- title: '提示',
- content: '个人信息完善成功',
- showCancel: false,
- confirmText: '回到首页',
- success: function (res) {
- if (res.confirm) {
- wx.switchTab({
- url: '../../pages/home/home',
- })
- }
+ db.collection('user').where({
+ _openid: app.globalData.openid
+ })
+ .get({
+ success: res => {
+ if (!res.data.length) {
+ db.collection('user').add({ //向数据库中插入数据
+ data: {
+ name: submitName,
+ stuNumber: submitStuNumber,
+ gender: submitGender,
+ isExaminer: false,
+ createdExp: [],
+ joinedExp: []
+ },
+ success: res => { //插入成功
+ wx.showModal({ //弹出提示框
+ title: '提示',
+ content: '个人信息完善成功',
+ showCancel: false,
+ confirmText: '回到首页',
+ success: function (res) {
+ if (res.confirm) {
+ wx.switchTab({
+ url: '../../pages/home/home',
+ })
+ }
+ }
+ });
+ },
+ fail: res => { //插入失败,弹出提示框
+ wx.showModal({
+ title: '注意',
+ content: '提交失败,请重试',
+ showCancel: false,
+ confirmText: '重试'
+ })
+ }
+ })
+ } else {
+ wx.showToast({
+ title: '您已经注册,请勿重复提交',
+ icon: 'none',
+ duration: 2000,
+ mask: true
+ });
}
- });
- },
- fail: function (res) { //插入失败,弹出提示框
- wx.showModal({
- title: '注意',
- content: '提交失败,请重试',
- showCancel: false,
- confirmText: '重试'
- })
- }
- })
+ }
+ })
}
}
})
\ No newline at end of file
diff --git a/pages/release/release.js b/pages/release/release.js
index d824193..7c5c3b3 100644
--- a/pages/release/release.js
+++ b/pages/release/release.js
@@ -2,7 +2,6 @@
const db = wx.cloud.database()
const _ = db.command
const app = getApp()
-var currentCreatedExp = null
Page({
data: {
@@ -15,7 +14,7 @@ Page({
duration: 0,
money: 0,
contact: "",
- others: ""
+ others: "",
},
onLoad: function () {
db.collection('user').where({
@@ -94,7 +93,7 @@ Page({
submitTap: function () {
var submitName = this.data.name;
var submitGender = this.data.sex[this.data.index_sex];
- var submitDate = new Date(this.data.date + ' ' + this.data.time + ':00')
+ var submitDate = new Date((this.data.date).replace(/-/g, "/") + ' ' + this.data.time + ':00')
var submitDuration = parseInt(this.data.duration)
var submitLocation = this.data.address;
var submitMoney = parseInt(this.data.money);
diff --git a/pages/release/release.wxml b/pages/release/release.wxml
index bf248a4..d45afbe 100644
--- a/pages/release/release.wxml
+++ b/pages/release/release.wxml
@@ -13,15 +13,14 @@
实验日期
-
+
{{date}}
实验时间
-
+
{{time}}
diff --git a/pages/search/search.js b/pages/search/search.js
index 93ffc8b..b86cc68 100644
--- a/pages/search/search.js
+++ b/pages/search/search.js
@@ -1,19 +1,50 @@
const app = getApp()
+const db = wx.cloud.database()
+const _ = db.command
+var formater=require("../../utils/formatTime")
+
Page({
data: {
- tabTxt: ['性别','酬劳','时长'],
- tab: [true,true,true],
+ /*
+ tabTxt: ['性别', '酬劳', '时长'],
+ tab: [true, true, true],
gender_id: 0,
gender_txt: '',
price_id: 0,
price_txt: '',
time_id: 0,
time_txt: '',
- time_min:0,
- time_max:1000,
- price_min:0,
- price_max:1000,
+ */
+ expList: null,
+ },
+ onLoad: function() {
+
+ },
+ onShow: function () {
+ var currentDate=new Date()
+ db.collection('experiment').where({
+ isActive: true,
+ date: _.gt(currentDate)
+ })
+ .get({
+ success: res=>{
+ var myExpList=new Array()
+ for(var item of res.data){
+ item.date=formater.formatTime(item.date,'Y-M-D h:m')
+ myExpList.push(item)
+ }
+ this.setData({
+ expList: myExpList
+ })
+ }
+ })
},
+ cardTap(e){
+ wx.navigateTo({
+ url: '../../pages/expInfo1/expInfo1?id='+this.data.expList[e.currentTarget.id]._id
+ })
+ }
+ /*
release: function () {
wx.navigateTo({
url: "../../pages/release/release"
@@ -52,7 +83,7 @@ Page({
},
filterTab: function (e) {
var data = [true, true, true],
- index = e.currentTarget.dataset.index;
+ index = e.currentTarget.dataset.index;
data[index] = !this.data.tab[index];
this.setData({
tab: data
@@ -62,9 +93,9 @@ Page({
//筛选项点击操作
filter: function (e) {
var self = this,
- id = e.currentTarget.dataset.id,
- txt = e.currentTarget.dataset.txt,
- tabTxt = this.data.tabTxt;
+ id = e.currentTarget.dataset.id,
+ txt = e.currentTarget.dataset.txt,
+ tabTxt = this.data.tabTxt;
switch (e.currentTarget.dataset.index) {
case '0':
tabTxt[0] = txt;
@@ -100,6 +131,7 @@ Page({
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
+ /*
onPullDownRefresh: function () {
//调用刷新时将执行的方法
this.onRefresh();
@@ -113,94 +145,81 @@ Page({
//var time_min;
//var time_max;
var sex_tag;
- if(this.data.gender_id==='0'){
+ if (this.data.gender_id === '0') {
sex_tag = '不限';
- }
- else if(this.data.gender_id==='1'){
+ } else if (this.data.gender_id === '1') {
sex_tag = '男';
- }
- else if(this.data.gender_id==='2'){
+ } else if (this.data.gender_id === '2') {
sex_tag = '女';
- }
- else
- //价钱的上下限,从id转换
- if(this.data.price_id==='0'){
- this.data.price_min = 0;
- this.data.price_max = 1000;
- }
- else if(this.data.price_id==='1'){
+ } else
+ //价钱的上下限,从id转换
+ if (this.data.price_id === '0') {
+ this.data.price_min = 0;
+ this.data.price_max = 1000;
+ }
+ else if (this.data.price_id === '1') {
this.data.price_min = 0;
this.data.price_max = 30;
- }
- else if(this.data.price_id==='2'){
+ } else if (this.data.price_id === '2') {
this.data.price_min = 31;
this.data.price_max = 60;
- }
- else if(this.data.price_id==='3'){
+ } else if (this.data.price_id === '3') {
this.data.price_min = 61;
this.data.price_max = 90;
- }
- else if(this.data.price_id==='4'){
+ } else if (this.data.price_id === '4') {
this.data.price_min = 91;
this.data.price_max = 1000;
- }
- else{
+ } else {
this.data.price_min = 0;
this.data.price_max = 1000;
}
//设定时间上下限
- if(this.data.time_id==='0'){
+ if (this.data.time_id === '0') {
this.data.price_min = 0;
this.data.price_max = 1000;
- }
- else if(this.data.time_id==='1'){
+ } else if (this.data.time_id === '1') {
this.data.time_min = 0;
this.data.time_max = 30;
- }
- else if(this.data.time_id==='2'){
+ } else if (this.data.time_id === '2') {
this.data.time_min = 31;
this.data.time_max = 60;
- }
- else if(this.data.time_id==='3'){
+ } else if (this.data.time_id === '3') {
this.data.time_min = 61;
this.data.time_max = 90;
- }
- else if(this.data.time_id==='4'){
+ } else if (this.data.time_id === '4') {
this.data.time_min = 91;
this.data.time_max = 1000;
- }
- else{
+ } else {
this.data.time_min = 0;
this.data.time_max = 1000;
}
- if(this.data.gender_id==='0'){
+ if (this.data.gender_id === '0') {
db.collection('experiment').where({
- //sex: sex_tag,
- //money:_.gte(90).and(_.lte(1000))
- money: _.gte(this.data.price_min).and(_.lte(this.data.price_max)),
- time: _.gte(this.data.time_min).and(_.lte(this.data.time_max))
- })
- .get({
- success: function(res) {
- // res.data 是包含以上定义的两条记录的数组
-
- }
- })
+ //sex: sex_tag,
+ //money:_.gte(90).and(_.lte(1000))
+ money: _.gte(this.data.price_min).and(_.lte(this.data.price_max)),
+ time: _.gte(this.data.time_min).and(_.lte(this.data.time_max))
+ })
+ .get({
+ success: function (res) {
+ // res.data 是包含以上定义的两条记录的数组
+
+ }
+ })
+ } else {
+ db.collection('experiment').where({
+ sex: sex_tag,
+ //money:_.gte(90).and(_.lte(1000))
+ money: _.gte(this.data.price_min).and(_.lte(this.data.price_max)),
+ time: _.gte(this.data.time_min).and(_.lte(this.data.time_max))
+ })
+ .get({
+ success: function (res) {
+ // res.data 是包含以上定义的两条记录的数组
+ console.log(res.data)
+ }
+ })
}
- else{
- db.collection('experiment').where({
- sex: sex_tag,
- //money:_.gte(90).and(_.lte(1000))
- money: _.gte(this.data.price_min).and(_.lte(this.data.price_max)),
- time: _.gte(this.data.time_min).and(_.lte(this.data.time_max))
- })
- .get({
- success: function(res) {
- // res.data 是包含以上定义的两条记录的数组
- console.log(res.data)
- }
- })
}
- }
-
+ */
})
\ No newline at end of file
diff --git a/pages/search/search.json b/pages/search/search.json
index 66ab717..a97367d 100644
--- a/pages/search/search.json
+++ b/pages/search/search.json
@@ -1,4 +1,3 @@
{
- "usingComponents": {},
- "enablePullDownRefresh": true
+ "usingComponents": {}
}
diff --git a/pages/search/search.wxml b/pages/search/search.wxml
index 1fec372..3ea8048 100644
--- a/pages/search/search.wxml
+++ b/pages/search/search.wxml
@@ -1,3 +1,4 @@
+
-
-
-
-
\r\n
-
-
-
-
- 实验名称1
-
-
- 实验时间
+-->
+
+
+
+
+ {{item.name}}
+ {{item.money}}元
+
+ {{item.date}}
+ 地点:{{item.location}}
-
- 实验地点
- 实验money
-
-
-
-
- 实验名称2
-
-
- 实验时间
-
- 实验地点
- 实验money
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/pages/search/search.wxss b/pages/search/search.wxss
index 951a6eb..ce2e004 100644
--- a/pages/search/search.wxss
+++ b/pages/search/search.wxss
@@ -80,22 +80,50 @@
display: block;
}
-.topcard{
- margin-bottom:25rpx;
- padding:15rpx;
- border-bottom:10rpx solid #BBBBBB;
- border-top:2rpx #dedede solid;
- margin-top:25rpx;
- padding-top:10rpx;
+.card {
+ height: 120rpx;
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+
+ border-radius: 20rpx;
+
+ /* 边 */
+ border: 3rpx solid #E0E3DA;
+ box-shadow:5rpx 5rpx 5rpx 5rpx #E0E3DA;
+
+ background-color: #ffffff;
+ margin: 30rpx;
+
+ /* padding使得文字和图片不至于贴着边框 */
+ padding: 30rpx;
+}
+
+/* 图片 */
+
+.cardimage {
+ width: 100rpx;
+ height: 100rpx;
+}
+
+/* 包裹两行文字 */
+
+.textframe {
+ width: 100%;
+ margin-left: 25rpx;
+ display: flex;
+ flex-direction: column;
}
-.card{
- margin-bottom:25rpx;
- padding:15rpx;
- border-bottom:10rpx solid #BBBBBB;
+/* 小字 */
+.minitext {
+ font-size: 30rpx;
+ word-break: break-all;
+ color: #7a7878;
+ margin-top: 10rpx
}
-.cardlist{
+.statusframe{
display:flex;
- flex-direction:column;
+ justify-content:space-between;
}
\ No newline at end of file
diff --git a/project.config.json b/project.config.json
index 3c56630..5893038 100644
--- a/project.config.json
+++ b/project.config.json
@@ -83,7 +83,7 @@
},
{
"name": "pages/release/release",
- "pathName": "pages/order/release",
+ "pathName": "pages/release/release",
"query": "",
"scene": null
},