index.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. 'use strict';
  2. const uniID = require('uni-id-common')
  3. const success = { success: true }
  4. const fail = { success: false }
  5. const checkVersion = require('./checkVersion')
  6. async function checkPermission(uniIDIns, uniIdToken, permission) {
  7. const checkTokenRes = await uniIDIns.checkToken(uniIdToken)
  8. if (checkTokenRes.errCode === 0) {
  9. if (checkTokenRes.permission.indexOf(permission) > -1 || checkTokenRes.role.indexOf('admin') > -1) {
  10. return true
  11. } else {
  12. return Object.assign({ errMsg: '权限不足' }, fail)
  13. }
  14. } else {
  15. return Object.assign({}, checkTokenRes, { errMsg: checkTokenRes.message }, fail)
  16. }
  17. }
  18. exports.main = async (event, context) => {
  19. //event为客户端上传的参数
  20. const db = uniCloud.database()
  21. const appListDBName = 'opendb-app-list'
  22. const appVersionDBName = 'opendb-app-versions'
  23. const uniIDIns = uniID.createInstance({ context: context })
  24. let res = {};
  25. if (event.headers) {
  26. try {
  27. if (event.httpMethod.toLocaleLowerCase() === 'get') {
  28. event = event.queryStringParameters;
  29. } else {
  30. event = JSON.parse(event.body);
  31. }
  32. } catch (e) {
  33. return {
  34. code: 500,
  35. msg: '请求错误'
  36. };
  37. }
  38. }
  39. let params = event.data || event.params;
  40. switch (event.action) {
  41. case 'checkVersion':
  42. res = await checkVersion(event, context)
  43. break;
  44. case 'deleteFile':
  45. let checkDeletePermission = await checkPermission(uniIDIns, event.uniIdToken, 'DELETE_OPENDB_APP_VERSIONS')
  46. if (checkDeletePermission === true) {
  47. res = await uniCloud.deleteFile({ fileList: params.fileList })
  48. } else {
  49. return checkDeletePermission
  50. }
  51. break;
  52. case 'setNewAppData':
  53. let checkUpdatePermission = await checkPermission(uniIDIns, event.uniIdToken, 'UPDATE_OPENDB_APP_LIST')
  54. if (checkUpdatePermission === true) {
  55. params.value.create_date = Date.now()
  56. res = await db.collection(appListDBName).doc(params.id).set(params.value)
  57. } else {
  58. return checkUpdatePermission
  59. }
  60. break;
  61. case 'getAppInfo':
  62. let dbAppList
  63. try {
  64. dbAppList = db.collection(appListDBName)
  65. } catch (e) {}
  66. if (!dbAppList) return fail;
  67. const dbAppListRecord = await dbAppList.where({
  68. appid: params.appid
  69. }).get()
  70. if (dbAppListRecord && dbAppListRecord.data.length)
  71. return Object.assign({}, success, dbAppListRecord.data[0])
  72. //返回数据给客户端
  73. return fail
  74. break;
  75. case 'getAppVersionInfo':
  76. let dbVersionList
  77. try {
  78. dbVersionList = db.collection(appVersionDBName)
  79. } catch (e) {}
  80. if (!dbVersionList) return fail;
  81. const dbVersionListrecord = await dbVersionList.where({
  82. appid: params.appid,
  83. platform: params.platform,
  84. type: "native_app",
  85. stable_publish: true
  86. })
  87. .orderBy('create_date', 'desc')
  88. .get();
  89. if (dbVersionListrecord && dbVersionListrecord.data && dbVersionListrecord.data.length > 0)
  90. return Object.assign({}, dbVersionListrecord.data[0], success)
  91. return fail
  92. break;
  93. }
  94. //返回数据给客户端
  95. return res
  96. };