integral.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. 'use strict';
  2. const assert = require('assert');
  3. const Service = require('egg').Service;
  4. class integralService extends Service {
  5. constructor(ctx) {
  6. super(ctx);
  7. this.model = this.ctx.model.Integral;
  8. }
  9. async create({ openid, name, integral }) {
  10. assert(name, '姓名不存在');
  11. assert(openid, 'openid不存在');
  12. assert(integral, '积分不存在');
  13. try {
  14. const res = await this.model.create({ openid, name, integral });
  15. return { errcode: 0, errmsg: 'ok', data: res };
  16. } catch (error) {
  17. throw error;
  18. }
  19. }
  20. async update({ id, openid, name, integral }) {
  21. assert(id, 'id不存在');
  22. try {
  23. await this.model.updateOne({ _id: id }, { openid, name, integral });
  24. return { errcode: 0, errmsg: 'ok', data: '' };
  25. } catch (error) {
  26. throw error;
  27. }
  28. }
  29. async delete({ id }) {
  30. assert(id, 'id不存在');
  31. try {
  32. await this.model.deleteOne({ _id: id });
  33. return { errcode: 0, errmsg: 'ok', data: '' };
  34. } catch (error) {
  35. throw error;
  36. }
  37. }
  38. async query({ skip, limit, openid, name, integral }) {
  39. const filter = {};
  40. const arr = { openid, name, integral };
  41. for (const e in arr) {
  42. const data = `{ "${e}": { "$regex": "${arr[e]}" } }`;
  43. if (arr[e]) {
  44. filter.$or = [];
  45. filter.$or.push(JSON.parse(data));
  46. }
  47. }
  48. try {
  49. const total = await this.model.find({ ...filter });
  50. let res;
  51. if (skip && limit) {
  52. res = await this.model.find({ ...filter }).skip(Number(skip) * Number(limit)).limit(Number(limit));
  53. } else {
  54. res = await this.model.find({ ...filter });
  55. }
  56. return { errcode: 0, errmsg: 'ok', data: res, total: total.length };
  57. } catch (error) {
  58. throw error;
  59. }
  60. }
  61. async increase({ openid, name, integral }) {
  62. assert(openid, 'openid不存在');
  63. assert(name, '姓名不存在');
  64. assert(integral, '积分不存在');
  65. try {
  66. await this.service.integralLog.create({ openid, name, integral });
  67. const one = await this.model.findOne({ openid });
  68. if (one) {
  69. const total = Number(integral) + Number(one.integral);
  70. await this.model.updateOne({ openid }, { integral: total });
  71. return { errcode: 0, errmsg: 'ok', data: '' };
  72. }
  73. await this.model.create({ openid, name, integral });
  74. return { errcode: 0, errmsg: 'ok', data: '' };
  75. } catch (error) {
  76. throw error;
  77. }
  78. }
  79. async reduce({ openid, name, integral }) {
  80. assert(openid, 'openid不存在');
  81. assert(name, '姓名不存在');
  82. assert(integral, '积分不存在');
  83. try {
  84. const one = await this.model.findOne({ openid });
  85. if (one) {
  86. const total = Number(one.integral) - Number(integral);
  87. await this.model.updateOne({ openid }, { integral: total });
  88. await this.service.integralLog.create({ openid, name, integral });
  89. return { errcode: 0, errmsg: 'ok', data: '' };
  90. }
  91. return { errcode: -1001, errmsg: '未查询到用户', data: '' };
  92. } catch (error) {
  93. throw error;
  94. }
  95. }
  96. }
  97. module.exports = integralService;