Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 

131 Zeilen
3.2 KiB

  1. /*
  2. * @Description: 我的收藏模块控制器
  3. * @Author: hai-27
  4. * @Date: 2020-03-04 22:30:31
  5. * @LastEditors: hai-27
  6. * @LastEditTime: 2020-03-04 23:32:23
  7. */
  8. const collectDao = require('../models/dao/collectDao');
  9. const productDao = require('../models/dao/productDao');
  10. const checkLogin = require('../middleware/checkLogin');
  11. module.exports = {
  12. /**
  13. * 添加收藏
  14. * @param {Object} ctx
  15. */
  16. AddCollect: async ctx => {
  17. let { user_id, product_id } = ctx.request.body;
  18. // 校验用户是否登录
  19. if (!checkLogin(ctx, user_id)) {
  20. return;
  21. }
  22. // 判断该用户的收藏列表是否存在该商品
  23. let tempCollect = await collectDao.FindCollect(user_id, product_id);
  24. if (tempCollect.length > 0) {
  25. ctx.body = {
  26. code: '003',
  27. msg: '该商品已经添加收藏,请到我的收藏查看'
  28. }
  29. return;
  30. }
  31. // 获取当前时间戳
  32. const timeTemp = new Date().getTime();
  33. try {
  34. // 把收藏商品信息插入数据库
  35. const result = await collectDao.AddCollect(user_id, product_id, timeTemp);
  36. // 插入成功
  37. if (result.affectedRows === 1) {
  38. ctx.body = {
  39. code: '001',
  40. msg: '添加收藏成功'
  41. }
  42. return;
  43. }
  44. } catch (error) {
  45. reject(error);
  46. }
  47. ctx.body = {
  48. code: '002',
  49. msg: '添加收藏失败'
  50. }
  51. },
  52. /**
  53. * 获取用户的所有收藏商品信息
  54. * @param {Object} ctx
  55. */
  56. GetCollect: async ctx => {
  57. let { user_id } = ctx.request.body;
  58. // 校验用户是否登录
  59. if (!checkLogin(ctx, user_id)) {
  60. return;
  61. }
  62. // 获取所有收藏信息
  63. const collect = await collectDao.GetCollect(user_id);
  64. // 该用户没有收藏的商品,直接返回信息
  65. if (collect.length == 0) {
  66. ctx.body = {
  67. code: '002',
  68. msg: '该用户没有收藏的商品'
  69. }
  70. return;
  71. }
  72. let collectList = [];
  73. // 生成收藏商品的详细信息列表
  74. for (let i = 0; i < collect.length; i++) {
  75. const temp = collect[i];
  76. // 获取每个商品详细信息
  77. const product = await productDao.GetProductById(temp.product_id);
  78. collectList.push(product[0]);
  79. }
  80. ctx.body = {
  81. code: '001',
  82. collectList: collectList
  83. }
  84. },
  85. /**
  86. * 删除用户的收藏商品信息
  87. * @param {Object} ctx
  88. */
  89. DeleteCollect: async ctx => {
  90. let { user_id, product_id } = ctx.request.body;
  91. // 校验用户是否登录
  92. if (!checkLogin(ctx, user_id)) {
  93. return;
  94. }
  95. // 判断该用户的收藏列表是否存在该商品
  96. let tempCollect = await collectDao.FindCollect(user_id, product_id);
  97. if (tempCollect.length > 0) {
  98. // 如果存在则删除
  99. try {
  100. const result = await collectDao.DeleteCollect(user_id, product_id);
  101. // 判断是否删除成功
  102. if (result.affectedRows === 1) {
  103. ctx.body = {
  104. code: '001',
  105. msg: '删除收藏成功'
  106. }
  107. return;
  108. }
  109. } catch (error) {
  110. reject(error);
  111. }
  112. } else {
  113. // 不存在则返回信息
  114. ctx.body = {
  115. code: '002',
  116. msg: '该商品不在收藏列表'
  117. }
  118. }
  119. }
  120. }