User.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: lytian
  5. * Date: 2019/4/26
  6. * Time: 10:25
  7. */
  8. namespace app\clientwebapi\controller;
  9. use app\common\controller\ClientWebApi;
  10. use app\common\library\Redis;
  11. use app\main\constants\ErrorCodeConstants;
  12. use app\main\service\BookService;
  13. use app\main\service\ClientAppService;
  14. use app\main\service\UserService;
  15. use app\main\service\WebUserService;
  16. class User extends ClientWebApi
  17. {
  18. public function _initialize()
  19. {
  20. parent::_initialize();
  21. }
  22. /**
  23. * 充值记录
  24. */
  25. public function record()
  26. {
  27. if ($this->isLogin) {
  28. $userId = $this->userInfo['id'];
  29. $pageNo = $this->request->post('pageNo');
  30. $pageSize = intval($this->request->post('pagesize'));
  31. $startNo = ($pageNo-1)*$pageSize;
  32. $recharge = model('Recharge')->setConnect($userId)->where('user_id',$userId)->order('createtime','desc')->limit($startNo,$pageSize)->select();
  33. if(!$recharge){
  34. $recharge = [];
  35. }
  36. $data = [];
  37. foreach($recharge as $key=>$val){
  38. $data[$key] = is_array($val)?$val:$val->toArray();
  39. if($val['type']=='1' || $val['type']=='3' || $val['type']=='5'){ //书币
  40. $data[$key]['showItem'] = '';
  41. if(intval($val['kandian']) == 0){ //免费书币
  42. if(intval($val['free_kandian'])>0){
  43. $data[$key]['showItem'] = '+'.$val['free_kandian'].'书币'; //int转string
  44. $data[$key]['endDate'] = Date('Y-m-d',$val['free_endtime']); //书币失效日期
  45. }else{
  46. $data[$key]['showItem'] = $val['free_kandian'].'书币'; //int转string
  47. $data[$key]['endDate'] = '永久'; //书币失效日期
  48. }
  49. if($val['type']==1){
  50. $data[$key]['type_text'] = '充值赠送书币';
  51. }
  52. }else{ //永久书币
  53. if(intval($val['kandian'])>0){
  54. $data[$key]['showItem'] = '+'.$val['kandian'].'书币'; //int转string
  55. }else{
  56. $data[$key]['showItem'] = $val['kandian'].'书币'; //int转string
  57. }
  58. $data[$key]['endDate'] = '永久'; //书币失效日期
  59. }
  60. }else{ //vip
  61. $data[$key]['showItem'] = '';
  62. if(intval($val['day']) > 0 || intval($val['hour'])>0){ //加vip时长
  63. if(intval($val['day'])>0){
  64. $data[$key]['showItem'] = '+'.$val['day'].'天';
  65. if(intval($val['hour']) > 0){
  66. $data[$key]['showItem'] = $data[$key]['showItem'].$val['hour'].'小时';
  67. }
  68. }else{
  69. $data[$key]['showItem'] ='+'.$val['hour'].'小时';
  70. }
  71. }else{ //减少vip时长
  72. if(intval($val['day']) <0){
  73. $data[$key]['showItem'] = $val['day'].'天';
  74. if(intval($val['hour'])<0){
  75. $data[$key]['showItem']= $data[$key]['showItem'].abs($val['hour']).'小时';
  76. }
  77. }else{
  78. if(intval($val['hour']) < 0){
  79. $data[$key]['showItem'] = $val['hour'].'小时';
  80. }
  81. }
  82. }
  83. //$data[$key]['endDate'] = '永久';
  84. $days = $val['day'];
  85. //$data[$key]['endDate'] = '永久';
  86. if($val['vip_starttime']){
  87. $data[$key]['endDate'] = date('Y-m-d H:i:s', strtotime("+$days day", $val['vip_starttime']));
  88. }else{
  89. $data[$key]['endDate'] = '-';
  90. }
  91. }
  92. }
  93. return json($data);
  94. }
  95. return json([]);
  96. }
  97. /**
  98. *ajax请求最近阅读记录
  99. */
  100. public function getReadRecently(){
  101. if($this->request->isAjax()){
  102. $userInfo = WebUserService::instance()->getUserInfo()->toArray();
  103. $pageSize = $this->request->param('pageSize') ?? 10;
  104. $updatetime = $this->request->param('updatetime') ?? 0;
  105. $rencently = model('UserRecentlyRead')->getRecentlyRead($updatetime,$pageSize,$userInfo['id']);
  106. if ($rencently['totalNum'] > 0) {
  107. if (isset($rencently['data']) && $rencently['data']) {
  108. foreach ($rencently['data'] as $key => $val) {
  109. $book = model('Book')->BookInfo($val['book_id']);
  110. $appBookInfo = ClientAppService::instance()->userReadBooksInfo([$book['id'] => $book['last_chapter_id']])->data;
  111. $rencently['data'][$key]['book_json'] = json_encode(current($appBookInfo['bookList']),
  112. JSON_UNESCAPED_UNICODE);
  113. }
  114. }
  115. return json($rencently);
  116. } else {
  117. return json(['data' => []]);
  118. }
  119. }
  120. }
  121. /**
  122. * ajax删除阅读记录
  123. */
  124. public function delRecently(){
  125. if($this->request->isAjax()){
  126. $userInfo = WebUserService::instance()->getUserInfo()->toArray();
  127. $userId = $userInfo['id'];
  128. $urKey = BookService::instance()->getUserRecentlyRead()->getURKey($userId);
  129. $recentIds = input('bookIds');
  130. $recentArr = \GuzzleHttp\json_decode($recentIds,true);
  131. $aRecentIds = [];
  132. $aBookIds = [];
  133. foreach ($recentArr as $key => $val) {
  134. $ids = explode('_', $val);
  135. $aRecentIds[] = $ids[0];
  136. $aBookIds[] = $ids[1];
  137. }
  138. $removeRes = BookService::instance()->removeRecentlyRead($aRecentIds, $aBookIds);
  139. $redis = Redis::instance();
  140. $recentCount = $redis->zcard($urKey); // 返回元素个数
  141. $res = [];
  142. $res['totalNum'] = $recentCount;
  143. $res['err'] = $removeRes->code == ErrorCodeConstants::SUCCESS ? 1 : 0;
  144. return json($res);
  145. }
  146. }
  147. }