bztang-admin/app/frontend/modules/income/controllers/SharePageController.php

238 lines
5.5 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* Created by PhpStorm.
*
* User: king/QQ995265288
* Date: 2018/7/20 下午3:23
* Email: livsyitian@163.com
*/
namespace app\frontend\modules\income\controllers;
use app\common\components\ApiController;
use app\common\exceptions\AppException;
use app\common\helpers\QrCodeHelper;
use app\common\services\SmallQrCode;
use app\frontend\models\Income;
use app\frontend\models\Member;
use app\frontend\models\MemberRelation;
use Carbon\Carbon;
use GuzzleHttp\Client;
use Illuminate\Support\Facades\Redis;
use Yunshop\Poster\models\Qrcode;
class SharePageController extends ApiController
{
private $memberModel;
private $relationSet;
public function preAction()
{
parent::preAction();
$this->relationSet = $this->getRelationSet();
}
public function index()
{
if ($this->getSharePageStatus()) {
$this->memberModel = $this->getMemberModel();
return $this->successJson('ok', $this->getResultData());
}
return $this->errorJson('我的收入页面未开启');
}
private function getResultData()
{
return [
'avatar' => $this->memberModel->avatar,
'share_qr' => $this->getShareQrUrl(),
'nickname' => $this->getNickname(),
'member_id' => $this->getMemberId(),
'member_level' => $this->getLevelName(),
'today_income' => $this->getTodayIncome(),
'month_income' => $this->getMonthIncome(),
'total_income' => $this->getTotalIncome(),
];
}
/**
* 今日收入
*
* @return double
*/
private function getTodayIncome()
{
$start_time = Carbon::today()->startOfDay()->timestamp;
$end_time = Carbon::today()->endOfDay()->timestamp;
return Income::whereBetween('created_at', [$start_time, $end_time])->sum('amount');
}
/**
* 本月收入
*
* @return double
*/
private function getMonthIncome()
{
$start_time = Carbon::now()->startOfMonth()->timestamp;
$end_time = Carbon::now()->endOfMonth()->timestamp;
return Income::whereBetween('created_at', [$start_time, $end_time])->sum('amount');
}
/**
* 累计收入
*
* @return double
*/
private function getTotalIncome()
{
return Income::sum('amount');
}
private function getShareQrUrl()
{
if ($this->memberModel->yzMember->is_agent == 1 && $this->memberModel->yzMember->status == 2) {
$url = yzAppFullUrl('member', ['mid' => $this->memberModel->uid]);
if(request()->type == 2){
return $this->getMiniCode();
}
return \QrCode::size(240)->get($url,'app/public/qr/share')['url'];
}
return "";
/*if (app('plugins')->isEnabled('poster')) {
$member_id = $this->getMemberId();
$qrCodeModel = Qrcode::uniacid()->where('scene_str', 'like', '%' . $member_id)->orderBy('createtime', 'desc')->first();
if ($qrCodeModel) {
$url = "https://mp.weixin.qq.com/cgi-bin/showqrcode";
return $url . "?ticket={$qrCodeModel->ticket}";
}
}
return '';*/
}
/**
* 会员昵称
*
* @return string
*/
private function getNickname()
{
return $this->memberModel->realname ?: $this->memberModel->nickname;
}
/**
* 会员等级名称
*
* @return string
*/
private function getLevelName()
{
$level_name = $this->memberModel->yzMember->level->level_name;
return $level_name ?: $this->getDefaultMemberLevel();
}
/**
* 会员默认等级名称
*
* @return string
*/
private function getDefaultMemberLevel()
{
$member_set = \Setting::get('shop.member');
return $member_set['level_name'] ?: '普通会员';
}
/**
*
*
* @return Member
* @throws AppException
*/
private function getMemberModel()
{
$member_id = $this->getMemberId();
$memberModel = Member::getUserInfos($member_id)->first();
if (!$memberModel) {
throw new AppException('会员信息错误,请重试!');
}
return $memberModel;
}
private function getMemberId()
{
$member_id = \YunShop::app()->getMemberId();
if (!$member_id) {
throw new AppException('Please login in.');
}
return $member_id;
}
private function getSharePageStatus()
{
if (is_null($this->relationSet) || 1 == $this->relationSet->share_page) {
return true;
}
return false;
}
private function getRelationSet()
{
return MemberRelation::uniacid()->first();
}
//获取小程序二维码
private function getMiniCode()
{
$uid = \Yunshop::app()->getMemberId();
$result = Redis::get('WechatQrIncome'.$uid);
if (!$result){
$small_qr = new SmallQrCode();
$small_name = "income_code_".$uid;
$data['scene'] = 'mid='.$uid;
$data['page'] = 'packageG/member_v2/member_v2';
$code = $small_qr->getSmallQrCode($small_name, $data);
if ($code['code'] == 0) {
Redis::setex('WechatQrIncome'.$uid, 60 * 60 * 24, $code['file_path']);
return $code['file_path'];
}
return '';
}
return $result;
}
}