UserDetailBase.php 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. <?php
  2. namespace app\admin\controller\auth;
  3. use app\common\controller\Backend;
  4. use app\main\constants\AdminConstants;
  5. use app\main\constants\UserConstants;
  6. use app\main\service\AdminService;
  7. use app\main\service\ApiService;
  8. use app\main\service\FinancialService;
  9. use app\source\service\UserService;
  10. use think\db\Query;
  11. class UserDetailBase extends Backend
  12. {
  13. /**
  14. * @var \app\common\model\User User模型对象
  15. */
  16. protected $model = null;
  17. /**
  18. * @var \app\common\model\Orders
  19. */
  20. protected $orderModel = null;
  21. /**
  22. * @var \app\common\model\Consume
  23. */
  24. protected $consumeModel = null;
  25. /**
  26. * @var \app\common\model\UserRecentlyRead
  27. */
  28. protected $userRecentlyReadModel = null;
  29. /**
  30. * @var \app\common\model\Recharge
  31. */
  32. protected $rechargeModel = null;
  33. /**
  34. * @var \app\common\model\AdminConfig
  35. */
  36. protected $adminConfigModel = null;
  37. /**
  38. * @var \app\common\model\Admin
  39. */
  40. protected $adminModel = null;
  41. protected $ids, $type;
  42. public function _initialize()
  43. {
  44. parent::_initialize();
  45. $this->model = model('User');
  46. $this->orderModel = model('Orders');
  47. $this->consumeModel = model('consume');
  48. $this->userRecentlyReadModel = model('user_recently_read');
  49. $this->rechargeModel = model('recharge');
  50. $this->adminConfigModel = model('admin_config');
  51. $this->adminModel = model('admin');
  52. $this->campaignConsumeModel = model('CampaignConsume');
  53. $this->ids = $this->request->param("ids", 0);
  54. $this->type = $this->request->param("type", 1);
  55. if (!$this->request->isAjax()) {
  56. if (ApiService::instance()->checkApiOn()) {
  57. $user = UserService::instance()->getUserInfo($this->ids);
  58. } else {
  59. $user = $this->model->setConnect($this->ids)->where('id', $this->ids)->find();
  60. }
  61. // $uQuery = $this->model->setConnect($this->ids)->where('id', $this->ids);
  62. // 仅客服可以查看黑名单用户
  63. if(($this->group != AdminConstants::ADMIN_GROUP_ID_CUSTOMER_SERVICE && $user->is_black) || !$user->id){
  64. $this->error('用户不存在!');
  65. }
  66. $userInfo = $user->toArray();
  67. if($this->group != AdminConstants::ADMIN_GROUP_ID_CUSTOMER_SERVICE){
  68. $rechargeCountWhere = [
  69. 'user_id' => $this->ids,
  70. 'dd' => '0'
  71. ];
  72. }else{
  73. $rechargeCountWhere = ['user_id' => $this->ids];
  74. }
  75. //充值金额
  76. if($this->group == AdminConstants::ADMIN_GROUP_ID_CUSTOMER_SERVICE){
  77. $isUserVip = $userInfo['vip_endtime'] > time();
  78. $userInfo['is_user_vip'] = $isUserVip;
  79. if (empty($userInfo['is_user_vip'])) {
  80. $userInfo['vip_endtime'] = '-';
  81. } else {
  82. $userInfo['vip_endtime'] = date('Y-m-d H:i:s', $userInfo['vip_endtime']);
  83. }
  84. $userInfo['orderMoneySum'] = $this->orderModel->where([
  85. 'user_id' => $this->ids,
  86. 'state' => '1'
  87. ])->sum('money');
  88. }else{
  89. $rechargeVipWhere = ['user_id' => $this->ids ,'dd' => '0', 'type' => ['in', UserConstants::CHANNEL_VIP_TYPE]];
  90. $ddRechargObj = $this->rechargeModel->setConnect($this->ids)->where($rechargeVipWhere)->order('id', 'desc')->find();
  91. if($ddRechargObj){
  92. $ddVipEndTime = $ddRechargObj->channel_vip_starttime + $ddRechargObj->day * 24 * 60 * 60 + $ddRechargObj->hour * 60 * 60;
  93. if($ddVipEndTime){
  94. $userInfo['is_user_vip'] = $ddVipEndTime > time();
  95. if (empty($userInfo['is_user_vip'])) {
  96. $userInfo['vip_endtime'] = '-';
  97. } else {
  98. $userInfo['vip_endtime'] = date('Y-m-d H:i:s', $ddVipEndTime);
  99. }
  100. }else{
  101. $userInfo['is_user_vip'] = false;
  102. $userInfo['vip_endtime'] = '-';
  103. }
  104. }else{
  105. $userInfo['is_user_vip'] = false;
  106. $userInfo['vip_endtime'] = '-';
  107. }
  108. $userInfo['orderMoneySum'] = $this->orderModel->where([
  109. 'user_id' => $this->ids,
  110. 'state' => '1',
  111. 'deduct' => '0'
  112. ])->sum('money');
  113. }
  114. //书币总消费
  115. if ($this->group == AdminConstants::ADMIN_GROUP_ID_CUSTOMER_SERVICE) {
  116. $kandianFields = 'kandian+free_kandian';
  117. }else{
  118. $kandianFields = 'kandian-dd_kandian+free_kandian-dd_free_kandian';
  119. }
  120. $consumeInfo = $this->consumeModel->setConnect($this->ids)->where(['user_id' => $this->ids])->field('SUM('.$kandianFields.') as total_kandian')->find();
  121. $userInfo['consumeCurrencySum'] = $consumeInfo['total_kandian'];
  122. //阅读书籍量
  123. $userInfo['recentReadCount'] = $this->userRecentlyReadModel->setConnect($this->ids)->where(['user_id' => $this->ids])->count('id');
  124. //充值笔数
  125. $userInfo['rechargeCount'] = $this->rechargeModel->setConnect($this->ids)->where($rechargeCountWhere)
  126. ->where(function (Query $query){
  127. $query->where(function (Query $query){
  128. $query->where(['type'=>'1'])
  129. ->where('kandian', '>', 0);
  130. })->whereOr(['type' => '2']);
  131. })
  132. ->count('id');
  133. if ($this->group == AdminConstants::ADMIN_GROUP_ID_CUSTOMER_SERVICE) {
  134. //得到用户剩余免费书币
  135. $userInfo['free_kandian'] = FinancialService::instance()->getTotalFreeKandian($this->ids)->data;
  136. //过期免费书币
  137. $userInfo['old_free_kandian'] = FinancialService::instance()->getTotalRemainOldFreeKandian($this->ids)->data;
  138. $userInfo['kandian'] = FinancialService::instance()->getTotalKandian($this->ids)->data;
  139. } else {
  140. //得到用户剩余免费书币
  141. $userInfo['free_kandian'] = FinancialService::instance()->getTotalFreeKandian($this->ids, 0)->data;
  142. //过期免费书币
  143. $userInfo['old_free_kandian'] = FinancialService::instance()->getTotalRemainOldFreeKandian($this->ids, 0)->data;
  144. $userInfo['kandian'] = FinancialService::instance()->getTotalRemainKandian($this->ids, 0)->data;
  145. }
  146. $adminInfo = $this->adminConfigModel
  147. ->join('admin', 'admin.id = admin_config.admin_id')
  148. ->join('auth_group_access', 'auth_group_access.uid = admin.id')
  149. ->field(['admin_id','username', 'nickname', 'json', 'group_id', 'qrcode_image'])
  150. ->where(['admin.id' => $userInfo['channel_id']])->find();
  151. $userInfo['originalQrCode'] = sprintf('https://open.weixin.qq.com/qr/code?username=%s',
  152. $adminInfo['json']['authorizer_info']['user_name']);
  153. $userInfo['customQrCode'] = $adminInfo['qrcode_image'];
  154. if ($adminInfo['group_id'] == 3) {//用户隶属于渠道商
  155. $userInfo['channel_username'] = $adminInfo['username'];
  156. $userInfo['channel_nickname'] = $adminInfo['nickname'];
  157. $userInfo['agent_id'] = '-';
  158. $userInfo['agent_username'] = '-';
  159. } elseif ($adminInfo['group_id'] == 4) {//用户隶属于配号代理商
  160. $channelInfo = $this->adminModel->join('admin_extend', 'admin_extend.create_by = admin.id')
  161. ->field([
  162. 'admin.id',
  163. 'username',
  164. 'nickname'
  165. ])->where(['admin_extend.admin_id' => $userInfo['channel_id']])->find();
  166. $userInfo['channel_id'] = $channelInfo['id'];
  167. $userInfo['channel_username'] = $channelInfo['username'];
  168. $userInfo['channel_nickname'] = $channelInfo['nickname'];
  169. $userInfo['agent_id'] = $adminInfo['admin_id'];
  170. $userInfo['agent_username'] = $adminInfo['username'];
  171. } else {
  172. }
  173. if($adminInfo['group_id'] == 4){
  174. if($adminInfo['admin_id']){
  175. $site_url = getCurrentDomain($adminInfo['admin_id']);
  176. }else{
  177. $site_url = '';
  178. }
  179. }else{
  180. if($userInfo['channel_id']){
  181. $site_url = getCurrentDomain($userInfo['channel_id']);
  182. }else{
  183. $site_url = '';
  184. }
  185. }
  186. $normalAdmin = AdminService::instance()->getAdminExtendModel()
  187. ->join("admin a", 'a.id = admin_extend.create_by', "LEFT")
  188. ->where("admin_extend.admin_id", "=", $userInfo['channel_id'])
  189. ->field(["a.username", "a.nickname"])
  190. ->find();
  191. $userInfo['admin_username'] = $normalAdmin->getData("username");
  192. $userInfo['admin_nickname'] = $normalAdmin->getData("nickname");
  193. $this->assignconfig('id', $this->ids);
  194. $this->assignconfig('type', $this->type);
  195. $this->view->assign('site_url', $site_url);
  196. $this->view->assign('userInfo', $userInfo);
  197. $this->view->assign('id', $this->ids);
  198. $this->view->assign('type', $this->type);
  199. }
  200. }
  201. }