ReadRecordController.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. <?php
  2. namespace App\Http\Controllers\Manage\Book;
  3. use Illuminate\Http\Request;
  4. use App\Http\Requests;
  5. use App\Http\Controllers\Controller;
  6. use Redis;
  7. class ReadRecordController extends Controller
  8. {
  9. /**
  10. * @apiDefine readrecord 阅读记录
  11. */
  12. /**
  13. * @apiVersion 1.0.0
  14. * @apiDescription 保存阅读记录
  15. * @api {post} books/readrecord 保存阅读记录
  16. * @apiGroup readrecord
  17. * @apiName saveRecordRecord
  18. * @apiParam {Int} uid
  19. * @apiParam {Int} bid
  20. * @apiParam {Int} cid
  21. * @apiParam {String} book_name
  22. * @apiParam {String} chapter_name
  23. * @apiParam {Int} cid
  24. * @apiSuccess {int} code 状态码
  25. * @apiSuccess {String} msg 信息
  26. * @apiSuccess {object} data 结果集
  27. * @apiSuccessExample {json} Success-Response:
  28. * HTTP/1.1 200 OK
  29. * {
  30. * code: 0,
  31. * msg: "",
  32. * data: {
  33. * }
  34. * }
  35. */
  36. public function saveRecordRecord(Request $request){
  37. $uid = $request->input('uid');
  38. $bid = $request->input('bid');
  39. $cid = $request->input('cid');
  40. $book_name = $request->input('book_name');
  41. $chapter_name = $request->input('chapter_name');
  42. if(empty($uid) || empty($bid) || empty($cid) || empty($book_name) || empty($chapter_name)){
  43. return response()->error('PARAM_ERROR');
  44. }
  45. Redis::hset('book_base:'.$uid, 'last_read', "{$bid}_{$cid}_{$book_name}_{$chapter_name}_".time());
  46. //Redis::hset('book_read:'.$uid, $bid, $cid."_".time());
  47. Redis::hset('book_read:'.$uid, $bid, "{$cid}_{$book_name}_{$chapter_name}_".time());
  48. return response()->success();
  49. }
  50. /**
  51. * @apiVersion 1.0.0
  52. * @apiDescription 获取阅读记录
  53. * @api {get} books/readrecord 获取阅读记录
  54. * @apiGroup readrecord
  55. * @apiName getReadRecord
  56. * @apiParam {Int} uid
  57. * @apiSuccess {Int} code 状态码
  58. * @apiSuccess {String} msg 信息
  59. * @apiSuccess {Array} data 结果集
  60. * @apiSuccess {Int} data.bid 书籍id
  61. * @apiSuccess {Int} data.cid 章节id
  62. * @apiSuccess {Int} data.time 时间
  63. * @apiSuccess {String} data.book_name 书名
  64. * @apiSuccess {String} data.chapter_name 章节名
  65. * @apiSuccessExample {json} Success-Response:
  66. * HTTP/1.1 200 OK
  67. * {
  68. * code: 0,
  69. * msg: "",
  70. * data:[
  71. * {
  72. * bid:5,
  73. * cid:564,
  74. * book_name:"hello world",
  75. * chapter_name:"hello world",
  76. * time:1511246882
  77. * },
  78. * {
  79. * bid:5,
  80. * cid:564,
  81. * book_name:"hello world",
  82. * chapter_name:"hello world",
  83. * time:1511246882,
  84. * },
  85. * ]
  86. *
  87. * }
  88. */
  89. public function getReadRecord(Request $request){
  90. $uid = $request->input('uid');
  91. //$bid = $request->input('bid');
  92. if(empty($uid)) return response()->error('PARAM_ERROR');
  93. $read_bids = Redis::hgetall('book_read:'.$uid);
  94. if(!$read_bids) return response()->success();
  95. $res = [];
  96. $i = 0;
  97. foreach ($read_bids as $key=>$v){
  98. $record = explode('_',$v);
  99. $latest_read_cid = $record[0];
  100. $book_name = $record[1];
  101. $chapter_name = $record[2];
  102. $latest_read_time = $record[count($record)-1];
  103. $res[$i] = ['book_name'=>$book_name,'bid'=>$key,'cid'=>(int)$latest_read_cid,'time'=>(int)$latest_read_time,'chapter_name'=>$chapter_name];
  104. //$res[$i] = ['bid'=>$key,'cid'=>$latest_read_cid,'book_name'=>,'time'=>$latest_read_time];
  105. $i++;
  106. }
  107. usort($res,function($a,$b){
  108. if($a['time'] >= $b['time']) return -1;
  109. return 1;
  110. });
  111. return response()->success($res);
  112. }
  113. /**
  114. * @apiVersion 1.0.0
  115. * @apiDescription 删除阅读记录
  116. * @api {post} books/del/readrecord 删除阅读记录
  117. * @apiGroup readrecord
  118. * @apiName deleteRecord
  119. * @apiParam {Int} uid
  120. * @apiParam {Int} bid
  121. * @apiSuccess {int} code 状态码
  122. * @apiSuccess {String} msg 信息
  123. * @apiSuccess {object} data 结果集
  124. * @apiSuccessExample {json} Success-Response:
  125. * HTTP/1.1 200 OK
  126. * {
  127. * code: 0,
  128. * msg: "",
  129. * data: {
  130. * }
  131. * }
  132. */
  133. public function deleteRecord(Request $request){
  134. $uid = $request->input('uid');
  135. $bid = $request->input('bid');
  136. if(empty($uid) || empty($cid)){
  137. response()->error('PARAM_ERROR');
  138. }
  139. if(Redis::hexists('book_read:'.$uid,$bid)){
  140. Redis::hdel('book_read:'.$uid,$bid);
  141. }
  142. return response()->success();
  143. }
  144. }