uniIdUsers.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /**
  2. * 数据库操作
  3. */
  4. const dbName = require("./config");
  5. let db = uniCloud.database();
  6. let _ = db.command;
  7. let $ = _.aggregate;
  8. class Dao {
  9. async count(whereJson) {
  10. let dbRes = await db.collection(dbName.uniIdUsers).where(whereJson).count()
  11. return dbRes && dbRes.total ? dbRes.total : 0;
  12. }
  13. async countNewUserOrder(obj) {
  14. let {
  15. whereJson,
  16. status
  17. } = obj;
  18. let dbRes = await db.collection(dbName.uniIdUsers).aggregate()
  19. .match(whereJson)
  20. .lookup({
  21. from: dbName.uniPayOrders,
  22. let: {
  23. user_id: '$_id',
  24. },
  25. pipeline: $.pipeline()
  26. .match(_.expr($.and([
  27. $.eq(['$user_id', '$$user_id']),
  28. $.in(['$status', status])
  29. ])))
  30. .limit(1)
  31. .done(),
  32. as: 'order',
  33. })
  34. .unwind({
  35. path: '$order',
  36. })
  37. .group({
  38. _id: null,
  39. count: {
  40. $addToSet: '$_id'
  41. },
  42. })
  43. .addFields({
  44. count: {
  45. $size: '$count'
  46. }
  47. })
  48. .end()
  49. try {
  50. return dbRes.data[0].count;
  51. } catch (err) {
  52. return 0;
  53. }
  54. }
  55. }
  56. module.exports = new Dao();