SharePageController.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. *
  5. * User: king/QQ:995265288
  6. * Date: 2018/7/20 下午3:23
  7. * Email: livsyitian@163.com
  8. */
  9. namespace app\frontend\modules\income\controllers;
  10. use app\common\components\ApiController;
  11. use app\common\exceptions\AppException;
  12. use app\common\helpers\QrCodeHelper;
  13. use app\common\services\SmallQrCode;
  14. use app\frontend\models\Income;
  15. use app\frontend\models\Member;
  16. use app\frontend\models\MemberRelation;
  17. use Carbon\Carbon;
  18. use GuzzleHttp\Client;
  19. use Illuminate\Support\Facades\Redis;
  20. use Yunshop\Poster\models\Qrcode;
  21. class SharePageController extends ApiController
  22. {
  23. private $memberModel;
  24. private $relationSet;
  25. public function preAction()
  26. {
  27. parent::preAction();
  28. $this->relationSet = $this->getRelationSet();
  29. }
  30. public function index()
  31. {
  32. if ($this->getSharePageStatus()) {
  33. $this->memberModel = $this->getMemberModel();
  34. return $this->successJson('ok', $this->getResultData());
  35. }
  36. return $this->errorJson('我的收入页面未开启');
  37. }
  38. private function getResultData()
  39. {
  40. return [
  41. 'avatar' => $this->memberModel->avatar,
  42. 'share_qr' => $this->getShareQrUrl(),
  43. 'nickname' => $this->getNickname(),
  44. 'member_id' => $this->getMemberId(),
  45. 'member_level' => $this->getLevelName(),
  46. 'today_income' => $this->getTodayIncome(),
  47. 'month_income' => $this->getMonthIncome(),
  48. 'total_income' => $this->getTotalIncome(),
  49. ];
  50. }
  51. /**
  52. * 今日收入
  53. *
  54. * @return double
  55. */
  56. private function getTodayIncome()
  57. {
  58. $start_time = Carbon::today()->startOfDay()->timestamp;
  59. $end_time = Carbon::today()->endOfDay()->timestamp;
  60. return Income::whereBetween('created_at', [$start_time, $end_time])->sum('amount');
  61. }
  62. /**
  63. * 本月收入
  64. *
  65. * @return double
  66. */
  67. private function getMonthIncome()
  68. {
  69. $start_time = Carbon::now()->startOfMonth()->timestamp;
  70. $end_time = Carbon::now()->endOfMonth()->timestamp;
  71. return Income::whereBetween('created_at', [$start_time, $end_time])->sum('amount');
  72. }
  73. /**
  74. * 累计收入
  75. *
  76. * @return double
  77. */
  78. private function getTotalIncome()
  79. {
  80. return Income::sum('amount');
  81. }
  82. private function getShareQrUrl()
  83. {
  84. if ($this->memberModel->yzMember->is_agent == 1 && $this->memberModel->yzMember->status == 2) {
  85. $url = yzAppFullUrl('member', ['mid' => $this->memberModel->uid]);
  86. if(request()->type == 2){
  87. return $this->getMiniCode();
  88. }
  89. return \QrCode::size(240)->get($url,'app/public/qr/share')['url'];
  90. }
  91. return "";
  92. /*if (app('plugins')->isEnabled('poster')) {
  93. $member_id = $this->getMemberId();
  94. $qrCodeModel = Qrcode::uniacid()->where('scene_str', 'like', '%' . $member_id)->orderBy('createtime', 'desc')->first();
  95. if ($qrCodeModel) {
  96. $url = "https://mp.weixin.qq.com/cgi-bin/showqrcode";
  97. return $url . "?ticket={$qrCodeModel->ticket}";
  98. }
  99. }
  100. return '';*/
  101. }
  102. /**
  103. * 会员昵称
  104. *
  105. * @return string
  106. */
  107. private function getNickname()
  108. {
  109. return $this->memberModel->realname ?: $this->memberModel->nickname;
  110. }
  111. /**
  112. * 会员等级名称
  113. *
  114. * @return string
  115. */
  116. private function getLevelName()
  117. {
  118. $level_name = $this->memberModel->yzMember->level->level_name;
  119. return $level_name ?: $this->getDefaultMemberLevel();
  120. }
  121. /**
  122. * 会员默认等级名称
  123. *
  124. * @return string
  125. */
  126. private function getDefaultMemberLevel()
  127. {
  128. $member_set = \Setting::get('shop.member');
  129. return $member_set['level_name'] ?: '普通会员';
  130. }
  131. /**
  132. *
  133. *
  134. * @return Member
  135. * @throws AppException
  136. */
  137. private function getMemberModel()
  138. {
  139. $member_id = $this->getMemberId();
  140. $memberModel = Member::getUserInfos($member_id)->first();
  141. if (!$memberModel) {
  142. throw new AppException('会员信息错误,请重试!');
  143. }
  144. return $memberModel;
  145. }
  146. private function getMemberId()
  147. {
  148. $member_id = \YunShop::app()->getMemberId();
  149. if (!$member_id) {
  150. throw new AppException('Please login in.');
  151. }
  152. return $member_id;
  153. }
  154. private function getSharePageStatus()
  155. {
  156. if (is_null($this->relationSet) || 1 == $this->relationSet->share_page) {
  157. return true;
  158. }
  159. return false;
  160. }
  161. private function getRelationSet()
  162. {
  163. return MemberRelation::uniacid()->first();
  164. }
  165. //获取小程序二维码
  166. private function getMiniCode()
  167. {
  168. $uid = \Yunshop::app()->getMemberId();
  169. $result = Redis::get('WechatQrIncome'.$uid);
  170. if (!$result){
  171. $small_qr = new SmallQrCode();
  172. $small_name = "income_code_".$uid;
  173. $data['scene'] = 'mid='.$uid;
  174. $data['page'] = 'packageG/member_v2/member_v2';
  175. $code = $small_qr->getSmallQrCode($small_name, $data);
  176. if ($code['code'] == 0) {
  177. Redis::setex('WechatQrIncome'.$uid, 60 * 60 * 24, $code['file_path']);
  178. return $code['file_path'];
  179. }
  180. return '';
  181. }
  182. return $result;
  183. }
  184. }