User.php 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: lytian
  5. * Date: 2019/4/25
  6. * Time: 18:23
  7. */
  8. namespace app\clientweb\controller;
  9. use app\common\controller\ClientWeb;
  10. use app\common\service\ClientuserService;
  11. use app\main\constants\ClientWebConstants;
  12. use app\main\service\ClientAppService;
  13. use app\main\service\FinancialService;
  14. use app\main\service\LogService;
  15. use app\main\service\RankService;
  16. use app\main\service\UserService;
  17. class User extends ClientWeb
  18. {
  19. protected $layout = '';
  20. /**
  21. * 我的账户
  22. */
  23. public function account()
  24. {
  25. if ($this->isLogin) {
  26. $this->assign('user', $this->userInfo);
  27. $kandian_fee = FinancialService::instance()->getTotalFreeKandian($this->userInfo['id'])->data;
  28. $kandian_permanent = FinancialService::instance()->getTotalKandian($this->userInfo['id'])->data;
  29. $kandian = $kandian_fee + $kandian_permanent;
  30. $flag = 1;
  31. $this->view->assign('sex', $this->userInfo['sex'] ? $this->userInfo['sex'] : '1');
  32. $this->assign('flag', $flag);
  33. $this->assign('kandian', $kandian);
  34. $this->assign('kandian_permanent', $kandian_permanent);
  35. $this->assign('kandian_fee', $kandian_fee);
  36. } else {
  37. //跳转到登陆页
  38. $this->redirect('clientweb/clientweb/bindphone/register', ['action' => 1]);
  39. }
  40. $this->view->assign('title', '我的账户');
  41. return $this->view->fetch();
  42. }
  43. /**
  44. *
  45. * 充值记录
  46. */
  47. public function record()
  48. {
  49. if ($this->isLogin) {
  50. $userId = $this->userInfo['id'];
  51. //渲染第一页
  52. $recharge = model('Recharge')->setConnect($userId)->where('user_id',$userId)->order('createtime','desc')->limit(0,20)->select();
  53. if(!$recharge){
  54. $recharge = [];
  55. }
  56. $data = [];
  57. foreach($recharge as $key=>$val){
  58. $data[$key] = is_array($val)?$val:$val->toArray();
  59. $data[$key]['showItem'] = '';
  60. if($val['type']=='1' || $val['type']=='3' || $val['type']=='5'){ //书币
  61. if(intval($val['kandian']) == 0){ //免费书币
  62. if(intval($val['free_kandian'])>0){
  63. $data[$key]['showItem'] = '+'.$val['free_kandian'].'书币'; //int转string
  64. $data[$key]['endDate'] = Date('Y-m-d',$val['free_endtime']); //书币失效日期
  65. }else{
  66. $data[$key]['showItem'] = $val['free_kandian'].'书币'; //int转string
  67. $data[$key]['endDate'] = '永久'; //书币失效日期
  68. }
  69. if($val['type']==1){
  70. $data[$key]['type_text'] = '充值赠送书币';
  71. }
  72. }else{ //永久书币
  73. if(intval($val['kandian'])>0){
  74. $data[$key]['showItem'] = '+'.$val['kandian'].'书币'; //int转string
  75. }else{
  76. $data[$key]['showItem'] = $val['kandian'].'书币'; //int转string
  77. }
  78. $data[$key]['endDate'] = '永久'; //书币失效日期
  79. }
  80. }else{ //vip
  81. if(intval($val['day']) > 0 || intval($val['hour'])>0){ //加vip时长
  82. if(intval($val['day'])>0){
  83. $data[$key]['showItem'] = '+'.$val['day'].'天';
  84. if(intval($val['hour']) > 0){
  85. $data[$key]['showItem'] = $data[$key]['showItem'].$val['hour'].'小时';
  86. }
  87. }else{
  88. $data[$key]['showItem'] ='+'.$val['hour'].'小时';
  89. }
  90. }else{ //减少vip时长
  91. if(intval($val['day']) <0){
  92. $data[$key]['showItem'] = $val['day'].'天';
  93. if(intval($val['hour'])<0){
  94. $data[$key]['showItem']= $data[$key]['showItem'].abs($val['hour']).'小时';
  95. }
  96. }else{
  97. if(intval($val['hour']) < 0){
  98. $data[$key]['showItem'] = $val['hour'].'小时';
  99. }
  100. }
  101. }
  102. $days = $val['day'];
  103. //$data[$key]['endDate'] = '永久';
  104. if($val['vip_starttime']){
  105. $data[$key]['endDate'] = date('Y-m-d H:i:s', strtotime("+$days day", $val['vip_starttime']));
  106. }else{
  107. $data[$key]['endDate'] = '-';
  108. }
  109. }
  110. }
  111. //dump($data);die;
  112. $this->assign('res',$data);
  113. return $this->view->fetch();
  114. } else {
  115. //跳转到登陆页
  116. $this->redirect('clientweb/clientweb/bindphone/register', ['action' => 1]);
  117. }
  118. }
  119. //阅读记录
  120. public function recent(){
  121. if(!$this->isLogin){
  122. $this->redirect('Bindphone/register', ['action' => ClientWebConstants::REDIRECT_ACTION_MY_READ_LOG]);
  123. }
  124. //已支付用户
  125. $res = model('UserRecentlyRead')->getRecentlyRead(0, 10, $this->userInfo['id']);
  126. if(isset($res['data']) && $res['data']){
  127. foreach($res['data'] as $key => $val){
  128. $book = model('Book')->BookInfo($val['book_id']);
  129. $appBookInfo = ClientAppService::instance()->userReadBooksInfo([$book['id'] => $book['last_chapter_id']])->data;
  130. $res['data'][$key]['book_json'] = json_encode(current($appBookInfo['bookList']),JSON_UNESCAPED_UNICODE);
  131. }
  132. }
  133. //获取用户性别信息
  134. if($this->sex == 2){
  135. $sex_type = 'girl';
  136. }else{
  137. $sex_type = 'body';
  138. }
  139. $this->view->assign('rencently', $res['data']);
  140. $this->view->assign('totalNum',$res['totalNum']);
  141. $this->view->assign('sex', $this->userInfo['sex'] ? $this->userInfo['sex'] : '1');
  142. $this->view->assign('ranklist',RankService::instance()->ranklist($sex_type));
  143. $this->view->assign('type', 'recently');
  144. $this->view->assign('avatar', $this->userInfo['avatar'] ?: cdnurl('/assets/img/frontend/icon/nav_icon_4.png'));
  145. $this->view->assign('isVip', $this->userInfo['vip_endtime'] > time());
  146. return $this->view->fetch();
  147. }
  148. /**
  149. * APP连续签到
  150. * APP连续签到跟微信端连续签到接收到的参数和返回的值不一样,需要开发处理
  151. */
  152. public function signPersist()
  153. {
  154. //获取用户UID
  155. $head_common_json = $this->request->header('common');
  156. $head_common = json_decode($head_common_json, true);
  157. $uid = $head_common['uid'] ?? 0;
  158. $isTodaySign = 0;
  159. LogService::info(' [ signPersist ] [ HeadCommon ][ uid ]' . $uid);
  160. $continue_days = 0;
  161. $days_arr = [
  162. 1 => '一',
  163. 2 => '二',
  164. 3 => '三',
  165. 4 => '四',
  166. 5 => '五',
  167. 6 => '六',
  168. 7 => '七',
  169. ];
  170. $userdata_json = json_encode(array());
  171. if ($uid) {
  172. // 判断今天是否已经签到?
  173. $signTodayData = model('Sign')->setConnect($uid)->userSignToday();
  174. if(empty($signTodayData)){
  175. // 如果没有签到,执行签到,返回连续签到天数,签到状态(今天已签到)
  176. $data = model('Sign')->setConnect($uid)->UserSignContinuous();
  177. $continue_days = $data[3];
  178. }else{
  179. $isTodaySign = 1;
  180. // 如果已经签到,返回连续签到天数,签到状态(今天已签到)
  181. $continue_days = $signTodayData['days'];
  182. }
  183. $userdata = ClientuserService::instance()->getUserInfoByUid($uid);
  184. $userdata = ClientuserService::instance()->packageUserInfo($userdata);
  185. $userdata_json = json_encode(camelizeArr($userdata));
  186. }
  187. LogService::info(' [ signPersist ] [ userdata_json ]' . $userdata_json);
  188. $continue_days = ($continue_days % 7) == 0 ? 7 : ($continue_days % 7);
  189. $this->assign('userdata_json', $userdata_json);
  190. $this->assign('isTodaySign', $isTodaySign);
  191. $this->assign('basenum', 30);
  192. $this->assign('total_days', 7);
  193. $this->assign('days_arr', $days_arr);
  194. $this->assign('continue_days', $continue_days);
  195. return $this->view->fetch();
  196. }
  197. /**
  198. * 如何获取微信动态码CODE
  199. */
  200. public function codeShow(){
  201. return $this->view->fetch();
  202. }
  203. }