Usercenter.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\controller\Api;
  4. use think\Db;
  5. /**
  6. * 会员中心
  7. */
  8. class Usercenter extends Api
  9. {
  10. protected $noNeedLogin = [];
  11. protected $noNeedRight = '*';
  12. //我的下级
  13. public function myintro(){
  14. $list = Db::name('user')->field('id,nickname,avatar,jointime')->where('intro_uid',$this->auth->id)->autopage()->order('id desc')->select();
  15. $list = list_domain_image($list,['avatar']);
  16. $this->success(1,$list);
  17. }
  18. //用户的业绩总额等
  19. public function my_intro_data(){
  20. //从lib/auth ->getUserinfo 拿过来
  21. $userinfo['score'] = model('wallet')->getWallet($this->auth->id,'score');//积分
  22. $userinfo['withdraw_score'] = Db::name('user_withdraw')->where('user_id',$this->auth->id)->where('status',1)->sum('score');//已兑换积分
  23. $userinfo['share_score'] = Db::name('user_score_log')->where('user_id',$this->auth->id)->where('log_type','IN',[3,4])->sum('change_value');//分享奖励
  24. $userinfo['intro_number'] = Db::name('user')->where('intro_uid',$this->auth->id)->count('id');//我的粉丝
  25. //获取业绩
  26. $yeji = $this->jiesuan_yeji($this->auth->id);
  27. $userinfo['yeji'] = $yeji;
  28. //代理规则
  29. $rule = $this->jiesuan_daili_level($yeji);
  30. $agent_score = bcdiv(bcmul($yeji,$rule['bili'],2),100,2);
  31. $userinfo['agent_score'] = $agent_score;
  32. $this->success(1,$userinfo);
  33. }
  34. //生成我的视频海报
  35. //生成邀请码二维码图片
  36. public function inviteimage($introcode) {
  37. $params['text'] = config('h5_url') . '/#/pages/login/register?introcode=' . $introcode;
  38. $qrcode_service = \addons\qrcode\library\Service::qrcode($params);
  39. // $mimetype = 'image/png';
  40. // $response = Response::create()->header("Content-Type", $mimetype);
  41. // 直接显示二维码
  42. // header('Content-Type: ' . $qrcode_service->getContentType());
  43. // $response->content($qrcode_service->writeString());
  44. $qrcodePath = ROOT_PATH . 'public/uploads/qrcode/';
  45. if (!is_dir($qrcodePath)) {
  46. @mkdir($qrcodePath);
  47. }
  48. if (is_really_writable($qrcodePath)) {
  49. $filename = md5(implode('', $params)) . '.png';
  50. $filePath = $qrcodePath . $filename;
  51. $qrcode_service->writeFile($filePath);
  52. }
  53. return '/uploads/qrcode/' . $filename;
  54. }
  55. //生成视频分享海报
  56. public function shareposter() {
  57. $inviteimage = $this->inviteimage($this->auth->introcode);
  58. $data = [
  59. [
  60. "left"=> "100px",
  61. "top"=> "424px",
  62. "type"=> "nickname",
  63. "width"=> "166px",
  64. "height"=> "38px",
  65. "size"=> "11px",
  66. "color"=> "#333333",
  67. "content" => '邀请码:'.$this->auth->introcode,
  68. ],
  69. [
  70. "left"=> "90px",
  71. "top"=> "260px",
  72. "type"=> "img",
  73. "width"=> "140px",
  74. "height"=> "140px",
  75. "src"=> httpurllocal($inviteimage)//"https://metavision.oss-cn-hongkong.aliyuncs.com/uploads/20220615/f00cb545deb4c4e7296f444239d83e84.jpg"
  76. ],
  77. ];
  78. $data = json_encode($data, 320);
  79. $poster = [
  80. 'id' => 1,
  81. 'title' => '测试',
  82. 'waittext' => '您的专属海报正在拼命生成中,请等待片刻...',
  83. 'bg_image' => '/assets/img/posteruserbg.png',
  84. 'data' => $data,
  85. 'status' => 'normal',
  86. 'weigh' => 0,
  87. 'createtime' => 1653993709,
  88. 'updatetime' => 1653994259,
  89. ];
  90. $image = new \addons\poster\library\Image();
  91. $imgurl = $image->createPosterImage_user($poster, $this->auth->getUser());
  92. if (!$imgurl) {
  93. $this->error('生成海报出错');
  94. }
  95. $imgurl = $_SERVER["REQUEST_SCHEME"]."://".$_SERVER["HTTP_HOST"] . '/' . $imgurl;
  96. //echo '<html><body><img src="'.$imgurl.'"></body></html>';
  97. $this->success('', $imgurl);
  98. }
  99. /////////////////////////////
  100. //获取业绩
  101. private function jiesuan_yeji($user_id){
  102. //找到所有下级
  103. //$user_ids = Db::name('user')->where('find_in_set(:intro_ids,intro_ids)', ['intro_ids' => $user_id])->column('id');
  104. $commonuser = new \app\common\model\User();
  105. $user_ids = $commonuser->my_down_all($user_id,[$user_id]);
  106. // dump($user_ids);
  107. if(empty($user_ids)){
  108. return 0;
  109. }
  110. $map = [
  111. 'status' => 1,
  112. 'have_paid' => ['gt',0],
  113. 'user_id' => ['IN',$user_ids],
  114. ];
  115. $yeji = Db::name('unishop_order')->where($map)->sum('order_price');
  116. //减去提现的
  117. $map = [
  118. 'status' => 1,
  119. 'user_id' => ['IN',$user_ids],
  120. ];
  121. $take_cash = Db::name('user_withdraw')->where($map)->sum('score');
  122. $yeji = $yeji - $take_cash;
  123. return $yeji;
  124. }
  125. //确认代理等级及规则
  126. private function jiesuan_daili_level($yeji){
  127. $data = Db::name('zongdai')->order('id asc')->select();
  128. // dump($data);
  129. $return = $data[0]; //默认第0个
  130. foreach($data as $key => $rule){
  131. if($yeji >= $rule['yeji']){
  132. $return = $rule;
  133. }
  134. }
  135. return $return;
  136. }
  137. }