| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859 |
- <?php
- /**
- * Created by PhpStorm.
- * Name: 芸众商城系统
- * Author: 广州市芸众信息科技有限公司
- * Profile: 广州市芸众信息科技有限公司位于国际商贸中心的广州,专注于移动电子商务生态系统打造,拥有芸众社交电商系统、区块链数字资产管理系统、供应链管理系统、电子合同等产品/服务。官网 :www.yunzmall.com www.yunzshop.com
- * Date: 2021/7/29
- * Time: 10:24
- */
- namespace app\frontend\modules\finance\services;
- use app\common\facades\Setting;
- use app\common\helpers\ImageHelper;
- use app\common\models\Income;
- use app\common\models\member\ChildrenOfMember;
- use app\common\models\Order;
- use app\common\services\income\IncomeService;
- use app\common\services\member\MemberCenterService;
- use app\common\services\popularize\PortType;
- use app\frontend\models\Member;
- use app\frontend\models\MemberLevel;
- use app\frontend\models\MemberRelation;
- use app\frontend\models\MemberShopInfo;
- use app\frontend\modules\finance\controllers\OrderAllController;
- use app\frontend\modules\finance\factories\IncomePageFactory;
- use app\frontend\modules\member\models\MemberModel;
- use Carbon\Carbon;
- use Illuminate\Support\Facades\DB;
- use phpDocumentor\Reflection\Types\Self_;
- class ExtensionCenterService
- {
- protected static $request;
- protected static $memberId;
- protected static $member;
- protected static $total_income;
- protected static $relation;
- protected static $power;
- protected static $buttonEnabled;
- const PLUGIN = [
- 'm-erweima' => '二维码',
- 'material-center' => '素材中心',
- 'article' => '拓客文章',
- 'video-share' => '拓客视频',
- 'micro-communities' => '种草社区',
- 'business_card' => '个人名片',
- 'group-develop-user' => '群拓客',
- 'group-code' => '群活码',
- 'room' => '直播',
- 'ranking' => '排行榜',
- ];
- public static function init($request)
- {
- self::$memberId = \Yunshop::app()->getMemberId();
- self::$request = $request;
- }
- /**
- * @return Member
- * @throws \app\common\exceptions\AppException
- */
- private static function member()
- {
- if (!isset(self::$member)) {
- self::$member = Member::current();
- }
- return self::$member;
- }
- /**
- * @return array
- * @throws \app\common\exceptions\AppException
- */
- public static function getIncomePage()
- {
- $power = self::power();
- $relation_set = \Setting::get('member.relation');
- $extension_set = \Setting::get('popularize.mini');
- $jump_link = '';
- $small_jump_link = '';
- $small_extension_link = '';
- if ($relation_set['is_jump'] && !empty($relation_set['jump_link'])) {
- if (!self::isAgent()) {
- $jump_link = $relation_set['jump_link'];
- $small_jump_link = $relation_set['small_jump_link'];
- $small_extension_link = $extension_set['small_extension_link'];
- }
- }
- //提现额度
- $withdraw_limit = [
- 'is_show' => false
- ];
- if(app('plugins')->isEnabled('withdrawal-limit')) {
- $limit_set = array_pluck(\Setting::getAllByGroup('withdrawal-limit')->toArray(), 'value', 'key');
- if($limit_set['is_open'] == 1 && $limit_set['is_show'] == 1) {
- $memberModel = \Yunshop\WithdrawalLimit\Common\models\MemberWithdrawalLimit::uniacid()->where('member_id',self::$memberId)->first();
- if($memberModel){
- $limit = $memberModel->total_amount;
- }else{
- $limit = 0;
- }
- $withdraw_limit = [
- 'is_show' => true,
- 'amount' => $limit
- ];
- }
- }
- return [
- 'set' => self::getSet(),
- 'jump_link' => $jump_link,
- 'small_jump_link' => $small_jump_link,
- 'small_extension_link' => $small_extension_link,
- 'button_enabled' => self::buttonEnabled(),
- 'button' => self::button(),
- 'info' => self::userInfo(),
- 'identity' => self::identity(),
- 'income_statistic' => self::incomeStatistic(),
- 'income_dynamic' => self::incomeDynamic(),
- 'available' => $power['available'],
- 'unavailable' => $power['unavailable'],
- 'fans_fission' => self::fansFission(),
- 'plugin_data' => self::pluginData(),
- 'extension_order' => self::extensionOrder(),
- 'service' => self::getService(),
- 'withdraw_limit' => $withdraw_limit,
- 'member_auth_pop_switch' => Setting::get('plugin.min_app.member_auth_pop_switch') ? 1 : 0,
- ];
- }
- protected static function getSet()
- {
- $type = PortType::determineType(self::$request['type']);
- $background_color = '';
- if ($type) {
- $info = Setting::get('popularize.'.$type);
- $background_color = $info['background_color'] ? : '';
- }
- return ['background_color' => $background_color];
- }
- /**
- * 按钮
- * @return array
- */
- protected static function button()
- {
- $button = [];
- $buttonEnabled = self::buttonEnabled();
- $lang_set = \Setting::get('shop.lang', ['lang' => 'zh_cn']);
- if (!empty($buttonEnabled['plugin_settle_show'])) {
- $button[] = [
- 'title' => "领取收益",
- 'icon' => 'icon-fontclass-leiji',
- 'mini_url' => "/packageA/member/extension/myEarnings/myEarnings",
- 'url' => "myEarnings"
- ];
- }
- $button[] = [
- 'title' => ($lang_set['income_name'] ? : '收入')."明细",
- 'icon' => 'icon-fontclass-shouru1',
- 'mini_url' => "/packageA/member/extension/incomedetails/incomedetails",
- 'url' => "incomedetails"
- ];
- $button[] = [
- 'title' => ($lang_set['name_of_withdrawal'] ? : '提现')."明细",
- 'icon' => 'icon-fontclass-ticheng',
- 'mini_url' => "/packageA/member/presentationRecord_v2/presentationRecord_v2?orderType=extension",
- 'url' => "presentationRecord"
- ];
- if (!empty($buttonEnabled['is_show_performance'])) {
- $button[] = [
- 'title' => "营业额",
- 'icon' => 'icon-fontclass-yingye',
- 'mini_url' => "/packageA/member/extension/Performance/Performance",
- 'url' => "Performance"
- ];
- }
- $plugins = app('plugins')->getEnabledPlugins('*');
- foreach ($plugins as $plugin) {
- $class = $plugin->app();
- if (method_exists($class,'incomePageButton')) {
- $button[] = $class->incomePageButton(self::$memberId);
- }
- }
- return array_values(array_filter($button));
- }
- protected static function buttonEnabled()
- {
- if (!isset(self::$buttonEnabled)) {
- $is_show_performance = OrderAllController::isShow();
- $share_page = self::getSharePageStatus();
- self::$buttonEnabled = [
- 'is_show_performance' => $is_show_performance, //营业额按钮显示
- 'share_page' => $share_page, //收入分享按钮显示
- 'plugin_settle_show' => PluginSettleService::doesIsShow(), //领取收益按钮显示
- 'show_member_id' => PortType::showMemberId(self::$request['type']),
- 'is_show_unable' => PortType::isShowUnable(self::$request['type']),//更多权限是否显示
- 'withdraw_date' => self::getWithdrawDate(),
- ];
- }
- return self::$buttonEnabled;
- }
- private static function getWithdrawDate()
- {
- $income_set = Setting::get('withdraw.income');
- $withdraw_date = [
- 'day' => 0, //可提现日期
- 'disable' => 0 //是否禁用
- ];
- $day_msg = '无提现限制';
- if (is_array($income_set['withdraw_date'])) {
- $day = date('d');
- $day_msg = '可提现日期为:'.implode(',',$income_set['withdraw_date']).'号';
- $withdraw_date = [
- 'day' => min($income_set['withdraw_date']),
- 'disable' => 1
- ];
- foreach ($income_set['withdraw_date'] as $date) {
- if ($day == $date) {
- $withdraw_date = [
- 'day' => $date,
- 'disable' => 0,
- ];
- break;
- }
- if ($day < $date) {
- $withdraw_date = [
- 'day' => $date,
- 'disable' => 1,
- ];
- }
- }
- }
- $withdraw_date['day_msg'] = $day_msg;
- return $withdraw_date;
- }
- /**
- * 会员基础信息
- * @return array
- * @throws \app\common\exceptions\AppException
- */
- protected static function userInfo()
- {
- $memberModel = self::member();
- //IOS时,把微信头像url改为https前缀
- $avatar = ImageHelper::iosWechatAvatar($memberModel->avatar);
- $autoWithdraw = 0;
- if (app('plugins')->isEnabled('mryt')) {
- $uid = \YunShop::app()->getMemberId();
- $autoWithdraw = (new \Yunshop\Mryt\services\AutoWithdrawService())->isWithdraw($uid);
- }
- if (app('plugins')->isEnabled('team-dividend')) {
- $uid = \YunShop::app()->getMemberId();
- $autoWithdraw = (new \Yunshop\TeamDividend\services\AutoWithdrawService())->isWithdraw($uid);
- }
- return [
- 'avatar' => $avatar,
- 'nickname' => $memberModel->nickname,
- 'member_id' => $memberModel->uid,
- 'autoWithdraw' => $autoWithdraw,
- 'has_avatar' => $memberModel->has_avatar,
- ];
- }
- /**
- * 会员身份信息
- * @return array
- * @throws \app\common\exceptions\AppException
- */
- protected static function identity()
- {
- $identity = [];
- $memberModel = self::member();
- //会员等级
- if ($memberModel->yzMember->level_id == 0) {
- $set = Setting::get('shop.member');
- $identity[] = $set['level_name']?:'普通会员';
- } else {
- $level = MemberLevel::getMemberLevel($memberModel->yzMember->level_id);
- $identity[] = $level?$level->level_name:'';
- }
- $plugins = app('plugins')->getEnabledPlugins('*');
- foreach ($plugins as $plugin) {
- $class = $plugin->app();
- if (method_exists($class,'incomePageIdentity')) {
- $new = $class->incomePageIdentity(self::$memberId);
- $identity = is_array($new) ? array_merge($new,$identity) : $identity;
- }
- }
- return array_values(array_filter(array_unique($identity)));
- }
- public static function popularizeSet($type)
- {
- $type = PortType::determineType($type);
- if ($type) {
- $info = \Setting::get('popularize.'.$type);
- if (isset($info['plugin_mark'])) {
- return $info['plugin_mark'];
- }
- }
- return array();
- }
- /**
- * 权限
- * @return array
- * @throws \app\common\exceptions\AppException
- */
- protected static function power()
- {
- if (!isset(self::$power)) {
- $lang_set = self::getLangSet();
- $is_relation = self::isOpenRelation();
- $config = self::getIncomePageConfig();
- $total_income = self::getTotalIncome();
- //是否显示推广插件入口
- $popularize_set = self::popularizeSet(self::$request['type']);
- $available = [];
- $unavailable = [];
- foreach ($config as $key => $item) {
- $incomeFactory = new IncomePageFactory(new $item['class'], $lang_set, $is_relation, self::isAgent(), $total_income,$key);
- if (!$incomeFactory->isShow()) {
- continue;
- }
- //不显示
- if (in_array($incomeFactory->getMark(), $popularize_set)) {
- continue;
- }
- $income_data = $incomeFactory->getIncomeData(false);
- if ($incomeFactory->isAvailable()) {
- $available[] = $income_data;
- } else {
- $unavailable[] = $income_data;
- }
- }
- self::$power = ['available' => $available, 'unavailable' => $unavailable];
- }
- return self::$power;
- }
- /**
- * 收入统计
- * @return array
- */
- public static function incomeStatistic()
- {
- if (!empty(self::$request['income_statistic_type'])) {
- list($start,$end) = self::timeSolt(self::$request['income_statistic_type']);
- }
- //收入统计
- $total_amount = Income::uniacid()
- ->where('member_id',self::$memberId);
- // ->whereIn('incometable_type', $incomeConfig);
- if (!empty($start) && !empty($end)) {
- $total_amount = $total_amount->whereBetween('created_at',[$start,$end]);
- }
- $total_amount = $total_amount->sum('amount');
- $income = Income::uniacid()
- ->select(DB::raw('SUM(IF(status=1,amount,0)) as withdraw,'
- .'SUM(IF(status=1 and pay_status IN(0,1),amount,0)) as withdrawing'))
- ->where('member_id',self::$memberId)
- // ->whereIn('incometable_type', $incomeConfig)
- ->first();
- //粉丝统计
- $total_fans = ChildrenOfMember::uniacid()
- ->where('member_id',self::$memberId)
- ->count();
- $first_fans = MemberShopInfo::uniacid()
- ->where('parent_id',self::$memberId);
- if (!empty($start) && !empty($end)) {
- $first_fans = $first_fans->whereBetween('child_time',[$start,$end]);
- }
- $first_fans = $first_fans->count();
- $un_withdraw = 0;
- $income_config = \app\backend\modules\income\Income::current()->getItems();
- foreach ($income_config as $income) {
- //余额不计算 拍卖预付款不计算
- if ($income['type'] == 'balance' || $income['type'] == 'auction_prepayment') {
- continue;
- }
- $incomeAmount = Income::uniacid()->canWithdraw()
- ->where('member_id', self::$memberId)
- ->where('incometable_type', $income['class'])
- ->sum('amount');
- if ($incomeAmount > 0) {
- $un_withdraw += $incomeAmount;
- }
- }
- return [
- [
- 'title' => '累计收入',
- 'url' => 'incomedetails',
- 'mini_url' => '/packageA/member/extension/incomedetails/incomedetails',
- 'value' => $total_amount ? : 0
- ],
- [
- 'title' => '已提现收入',
- 'url' => 'presentationRecord',
- 'mini_url' => '/packageA/member/presentationRecord_v2/presentationRecord_v2?orderType=extension',
- 'value' => $income &&$income->withdraw ? $income->withdraw : 0
- ],
- [
- 'title' => '未提现收入',
- 'url' => 'withdrawal',
- 'mini_url' => '/packageA/member/withdrawal/withdrawal',
- 'value' => sprintf("%01.2f", $un_withdraw)],
- [
- 'title' => '提现中收入',
- 'url' => 'presentationRecord',
- 'mini_url' => '/packageA/member/presentationRecord_v2/presentationRecord_v2?orderType=extension',
- 'value' => $income && $income->withdrawing ? $income->withdrawing : 0],
- [
- 'title' => '团队粉丝',
- 'url' => 'myRelationship',
- 'mini_url' => '/packageD/member/myRelationship/myRelationship',
- 'value' => $total_fans ? : 0
- ],
- [
- 'title' => '直推粉丝',
- 'url' => 'myRelationship',
- 'mini_url' => '/packageD/member/myRelationship/myRelationship',
- 'value' => $first_fans ? : 0
- ],
- ];
- }
- /**
- * 收入动态
- * @return array
- */
- public static function incomeDynamic()
- {
- list($start,$end) = self::getSearchTime();
- $income = Income::uniacid()
- ->select(DB::raw('SUM(amount) as total_amount,COUNT(*) as income_count,FROM_UNIXTIME(created_at,"%m%d") as time_str'))
- ->where('member_id',self::$memberId)
- ->whereBetween('created_at',[$start,$end])
- ->groupBy('time_str')
- ->get();
- $x_axis = [];
- $income_count = [];
- $total_amount = [];
- while ($start <= $end) {
- $x_axis[] = date('m/d',$start);
- $data = $income->where('time_str',date('md',$start))->first();
- $income_count[] = $data ? $data['income_count'] : 0;
- $total_amount[] = $data ? $data['total_amount'] : 0;
- $start = strtotime('+1 days',$start);
- }
- return [
- 'x_axis' => $x_axis,
- 'income_count' => $income_count,
- 'total_amount' => $total_amount,
- ];
- }
- /**
- * 收入占比
- * @return array
- */
- public static function incomeProportion()
- {
- if (!empty(self::$request['income_statistic_type'])) {
- list($start,$end) = self::timeSolt(self::$request['income_statistic_type']);
- }
- $incomeConfig = \app\backend\modules\income\Income::current()->getItems();
- $incomeConfig = collect($incomeConfig)->pluck('class')->toArray();
- $income = Income::uniacid()
- ->select('dividend_code','type_name',DB::raw('SUM(amount) as total_amount'))
- ->whereIn('incometable_type', $incomeConfig)
- ->where('member_id',self::$memberId);
- if (!empty($start) && !empty($end)) {
- $income = $income->whereBetween('created_at',[$start,$end]);
- }
- $income = $income->groupBy('incometable_type')
- ->get();
- $income = collect(array_values($income->sortByDesc('total_amount')->all()));
- //集合切割
- $order = $income->splice(5);
- $proportion = [];
- foreach ($income->all() as $item) {
- $type_name = IncomeService::dividendCodeCustomPluginName($item['dividend_code']);
- $proportion[] = [
- 'name' => $type_name ? : $item['type_name'],
- 'value' => $item['total_amount'] ? : 0,
- ];
- }
- $proportion[] = [
- 'name' => '其他',
- 'value' => $order->sum('total_amount') ? bcmul($order->sum('total_amount'),1,2) : 0,
- ];
- return $proportion;
- }
- /**
- * 粉丝裂变数据
- * @return array
- */
- public static function fansFission()
- {
- list($start,$end) = self::getSearchTime();
- //每天新增全部统计
- $fans = MemberShopInfo::uniacid()
- ->select(DB::raw('COUNT(*) as new_fans,FROM_UNIXTIME(child_time,"%Y%m%d") as time_str'))
- ->where('parent_id',self::$memberId)
- ->where('child_time','>',0)
- ->groupBy('time_str')
- ->get();
- $totalFans = round(($fans->sum('new_fans') ? : 0),2);
- $maxHistory = $fans->max('new_fans') ? : 0;
- $totalFans15 = round(($fans->where('time_str','>=',date('Ymd',$start))->sum('new_fans') ? : 0),2);
- $max15 = $fans->where('time_str','>=',date('Ymd',$start))->max('new_fans') ? : 0;
- $x_axis = [];
- $totalFansSeries = [];
- $fansNewSeries = [];
- while ($start <= $end) {
- $x_axis[] = date('m/d',$start);
- $totalFansSeries[] = $fans->where('time_str','<=',date('Ymd',$start))->sum('new_fans') ? : 0;
- $fansNewSeries[] = $fans->where('time_str',date('Ymd',$start))->sum('new_fans') ? : 0;
- $start = strtotime('+1 days',$start);
- }
- return [
- 'data' => [
- ['title' => '粉丝总数','value' => $totalFans],
- ['title' => '15日粉丝总数','value' => $totalFans15],
- ['title' => '历史单日最高','value' => $maxHistory],
- ['title' => '15日内单日最高','value' => $max15],
- ],
- 'x_axis' => $x_axis,
- 'totalFansSeries' => $totalFansSeries,
- 'fansNewSeries' => $fansNewSeries,
- ];
- }
- /**
- * 粉丝转化数据
- * @return array
- */
- public static function fansConversion()
- {
- $prefix = app('db')->getTablePrefix();
- list($start,$end) = self::getSearchTime();
- //每天新增全部统计
- $order = ChildrenOfMember::uniacid()
- ->select(DB::raw('COUNT('.$prefix.'yz_order.id) as order_count,SUM(price) as order_price,'
- .'FROM_UNIXTIME('.$prefix.'yz_order.create_time,"%Y%m%d") as time_str'))
- ->leftJoin('yz_order',function ($join) {
- $join->on('yz_order.uid','yz_member_children.child_id')
- ->whereIn('yz_order.status',[1,2,3]);
- })
- ->where('member_id',self::$memberId)
- ->where('level',1)//直推
- ->groupBy('time_str')
- ->get();
- $totalOrderCount = $order->sum('order_count') ? bcmul($order->sum('order_count'),1,2) : 0;
- $maxOrderCount = $order->max('order_count') ? : 0;
- $totalOrderPrice = $order->sum('order_price') ? bcmul($order->sum('order_price'),1,2) : 0;
- $maxOrderPrice = $order->max('order_price') ? : 0;
- $x_axis = [];
- $orderCountSeries = [];
- $orderPriceSeries = [];
- while ($start <= $end) {
- $x_axis[] = date('m/d',$start);
- $orderCountSeries[] = $order->where('time_str',date('Ymd',$start))->sum('order_count') ? : 0;
- $orderPriceSeries[] = $order->where('time_str',date('Ymd',$start))->sum('order_price') ? : 0;
- $start = strtotime('+1 days',$start);
- }
- return [
- 'data' => [
- ['title' => '推广订单总数','value' => $totalOrderCount],
- ['title' => '单日最高订单数','value' => $maxOrderCount],
- ['title' => '推广订单总额','value' => $totalOrderPrice],
- ['title' => '单日最高订单总额','value' => $maxOrderPrice],
- ],
- 'x_axis' => $x_axis,
- 'orderCountSeries' => $orderCountSeries,
- 'orderPriceSeries' => $orderPriceSeries,
- ];
- }
- /**
- * 插件入口
- * @return array
- */
- public static function pluginData()
- {
- $memberCenter = new MemberCenterService();
- $arr = $memberCenter->getMemberData(self::$memberId);//获取会员中心页面各入口
- $plugin = $memberCenter->defaultPluginData(self::$memberId);
- foreach ($arr as $key => $item) {
- if (!in_array($key,['is_open','hotel','plugins','ViewSet'])) {
- $plugin = array_merge($plugin,$item);
- }
- }
- unset($arr);
- $returnPlugin = [];
- if ($plugin) {
- $plugin = collect($plugin);
- foreach (self::PLUGIN as $key => $item) {
- $data = $plugin->where('name',$key)->first();
- if ($data) {
- $data['title'] = $item;
- $returnPlugin[] = $data;
- }
- }
- }
- return $returnPlugin;
- }
- /**
- * 推广订单
- * @return mixed
- */
- public static function extensionOrder()
- {
- $order = Order::uniacid()
- ->select('yz_order.id','order_sn','goods_price','price','create_time','status')
- ->join('yz_member_children',function ($join) {
- $join->on('yz_order.uid','yz_member_children.child_id')
- ->where('yz_member_children.member_id',self::$memberId)
- ->where('level',1);
- })
- ->orderBy('yz_order.id','desc')
- ->paginate(6)->toArray();
- return $order;
- }
- /**
- * 推广粉丝
- * @return mixed
- */
- public static function extensionFans()
- {
- $data = MemberShopInfo::uniacid()
- ->select('mc_members.nickname','mc_members.avatar',DB::raw('uid as child_id,child_time as created_at'))
- ->join('mc_members',function ($join) {
- $join->on('mc_members.uid','yz_member.member_id');
- })
- ->where('yz_member.parent_id',self::$memberId)
- // ->where('child_time','>',1)//直推
- ->orderBy('child_time','desc')
- ->paginate(6)->toArray();
- $uid = array_column($data['data'],'child_id');//取出所有uid
- if ($uid) {
- $order = Order::uniacid()
- ->select('uid',DB::raw('COUNT(id) as order_count,SUM(price) as order_price'))
- ->whereIn('uid',$uid)
- ->whereIn('status',[-1,1,2,3])
- ->where('pay_time','>',0)
- ->groupBy('uid')
- ->get()->toArray();
- $order = array_column($order,null,'uid');
- foreach ($data['data'] as &$value) {
- $value['order_count'] = 0;
- $value['order_price'] = 0;
- if (!empty($order[$value['child_id']])) {
- $value['order_count'] = $order[$value['child_id']]['order_price'] ? : 0;
- $value['order_price'] = $order[$value['child_id']]['order_count'] ? : 0;
- }
- }
- }
- return $data;
- }
- private static function getSearchTime()
- {
- $start = Carbon::now()->addDays(-14)->startOfDay()->timestamp;
- $end = Carbon::now()->endOfDay()->timestamp;
- return [$start,$end];
- }
- private static function timeSolt($type)
- {
- switch ($type) {
- case 1://今日
- $start = Carbon::today()->startOfDay()->timestamp;
- $end = Carbon::today()->endOfDay()->timestamp;
- break;
- case 2://昨日
- $start = Carbon::yesterday()->startOfDay()->timestamp;
- $end = Carbon::yesterday()->endOfDay()->timestamp;
- break;
- case 3://本周
- $start = Carbon::now()->startOfWeek()->timestamp;
- $end = Carbon::now()->endOfWeek()->timestamp;
- break;
- case 4://上周
- $start = Carbon::now()->addWeeks(-1)->startOfWeek()->timestamp;
- $end = Carbon::now()->addWeeks(-1)->endOfWeek()->timestamp;
- break;
- case 5://本月
- $start = Carbon::now()->startOfMonth()->timestamp;
- $end = Carbon::now()->endOfMonth()->timestamp;
- break;
- case 6://上月
- $start = Carbon::now()->addMonth(-1)->startOfMonth()->timestamp;
- $end = Carbon::now()->addMonth(-1)->endOfMonth()->timestamp;
- break;
- default:
- $start = '';
- $end = '';
- }
- return [$start,$end];
- }
- /**
- * 获取商城中的插件名称自定义设置
- * @return mixed
- */
- private static function getLangSet()
- {
- $lang = Setting::get('shop.lang', ['lang' => 'zh_cn']);
- return $lang[$lang['lang']];
- }
- private static function relation()
- {
- if (!isset(self::$relation)) {
- self::$relation = MemberRelation::uniacid()->first();
- }
- return self::$relation;
- }
- /**
- * 关系链是否开启
- * @return bool
- */
- private static function isOpenRelation()
- {
- $relation = self::relation();
- if (!is_null($relation) && $relation->status == 1) {
- return true;
- }
- return false;
- }
- private static function getSharePageStatus()
- {
- $relation = self::relation();
- if (!is_null($relation) && $relation->share_page == 1) {
- return true;
- }
- return false;
- }
- /**
- * 收入页面配置 config
- * @return mixed
- */
- private static function getIncomePageConfig()
- {
- return \app\backend\modules\income\Income::current()->getPageItems();
- }
- private static function getTotalIncome()
- {
- if (!isset(self::$total_income)) {
- $incomeConfig = \app\backend\modules\income\Income::current()->getItems();
- $incomeConfig = collect($incomeConfig)->pluck('class')->toArray();
- self::$total_income = Income::uniacid()
- ->select('member_id', 'incometable_type',
- DB::raw('SUM(amount) as total_amount,SUM(IF(status=0,amount,0)) as usable_total'))
- ->whereIn('incometable_type', $incomeConfig)
- ->where('member_id',self::$memberId)
- ->groupBy('incometable_type', 'member_id')
- ->get();
- }
- return self::$total_income;
- }
- private static function getService()
- {
- //1.商城客服设置
- $shopSet = Setting::get('shop.shop');
- $cservice = $shopSet['cservice'];
- if (request()->type == 2) {
- $cservice = $shopSet['cservice_mini'];
- }
- $shop_cservice = !empty($cservice) ? $cservice : '';
- //2.客服插件设置
- if (app('plugins')->isEnabled('customer-service')) {
- $set = array_pluck(\Setting::getAllByGroup('customer-service')->toArray(), 'value', 'key');
- if ($set['is_open'] == 1) {
- if (request()->type == 2) {
- $arr = [
- 'cservice'=>$set['mini_link']?:$shop_cservice,
- 'customer_open'=>$set['mini_open'],
- 'service_QRcode' => yz_tomedia($set['mini_QRcode']),
- 'service_mobile' => $set['mini_mobile']
- ];
- }else{
- $arr = [
- 'cservice'=>$set['link']?:$shop_cservice,
- 'service_QRcode' => yz_tomedia($set['QRcode']),
- 'service_mobile' => $set['mobile']
- ];
- }
- $alonge_cservice = $arr;
- }
- }
- return !empty($alonge_cservice)?$alonge_cservice:$shop_cservice;
- }
- /**
- * 登陆会员是否是推客
- * @return bool
- */
- private static function isAgent()
- {
- return MemberModel::isAgent();
- }
- }
|