review.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. /**
  2. * 评价模型
  3. */
  4. define(['base', '$', 'api'], function (base, $, api) {
  5. var Review = function () {
  6. if (typeof Review.instance === 'object') {
  7. return Review.instance;
  8. }
  9. Review.instance = this;
  10. this.storagePrefix = 'review_';
  11. this.reviewDatas = {};
  12. this.techCommentData = {};
  13. }
  14. var defultReviewData = {
  15. page: 0,
  16. list: [],
  17. refreshTime: 0,
  18. hasMore: true
  19. };
  20. Review.prototype = new base();
  21. Review.prototype.getReviewData = function(type) {
  22. if (!this.reviewDatas.hasOwnProperty(type)) {
  23. this.reviewDatas[type] = $.extend(true, {}, defultReviewData);
  24. }
  25. return this.reviewDatas[type];
  26. };
  27. Review.prototype.getTechCommentData = function(techID) {
  28. if (!this.techCommentData.hasOwnProperty(techID)) {
  29. this.techCommentData[techID] = $.extend(true, {}, defultReviewData);
  30. }
  31. return this.techCommentData[techID];
  32. };
  33. Review.prototype.getList = function (type, callback, reset) {
  34. var that = this;
  35. var reviewData = this.getReviewData(type);
  36. var page = reviewData.page + 1;
  37. if (reset) {
  38. page = 1;
  39. }
  40. api.getReviewList({
  41. type: type,
  42. page: page
  43. }, function (res) {
  44. if (res.success) {
  45. if (res.current_page >= res.sum_page) {
  46. res.current_page = res.sum_page;
  47. reviewData.hasMore = false;
  48. } else {
  49. reviewData.hasMore = true;
  50. }
  51. reviewData.page = res.current_page;
  52. reviewData.refreshTime = new Date().getTime();
  53. if (reset) {
  54. reviewData.list = res.data.comments;
  55. } else {
  56. reviewData.list = reviewData.list.concat(res.data.comments);
  57. }
  58. }
  59. if (typeof (callback) == 'function') {
  60. callback(res);
  61. }
  62. });
  63. };
  64. Review.prototype.getTechComment = function (techID, callback, reset) {
  65. var that = this;
  66. var techData = this.getTechCommentData(techID);
  67. var page = techData.page + 1;
  68. if (reset) {
  69. page = 1;
  70. }
  71. api.techComment({
  72. tech_id: techID,
  73. page: page
  74. }, function (res) {
  75. if (res.success) {
  76. if (res.current_page >= res.sum_page) {
  77. res.current_page = res.sum_page;
  78. techData.hasMore = false;
  79. } else {
  80. techData.hasMore = true;
  81. }
  82. techData.page = res.current_page;
  83. techData.refreshTime = new Date().getTime();
  84. if (reset) {
  85. techData.list = res.data.comments;
  86. } else {
  87. techData.list = techData.list.concat(res.data.comments);
  88. }
  89. }
  90. if (typeof (callback) == 'function') {
  91. callback(res);
  92. }
  93. });
  94. };
  95. return new Review();
  96. })