'store', 'type_id' => get_store_id()]); // if ((int)$admin->saas_user_id !== (int)get_saas_user_id()) { // throw new \Exception("非店铺管理员"); // } $store_info = Store::find()->where(['id' => get_store_id()])->select('id, name, logo')->asArray()->one(); $saas_name = !empty(get_saas_user()->name) ? get_saas_user()->name : "未设置"; //店铺管理员名称 $store_info['user_name'] = $saas_name; $whereMch = []; if($this->mch_id){ $whereMch = ['mch_id' => $this->mch_id]; $mch_info = (new MchForm(['mch_id' => $this->mch_id]))->mchInfo(); } //获取昨日凌晨时间 $yet = strtotime(date('Y-m-d')) - (60 * 60 * 24); //获取今日凌晨时间 $td = strtotime(date('Y-m-d')); //获取明日凌晨时间 $tot = strtotime(date('Y-m-d')) + (60 * 60 * 24); $timestamp = time(); $day = [ 'begin_date' => date('Ymd', $timestamp), 'end_date' => date('Ymd', $timestamp), ]; $lastday = [ 'begin_date' => date('Ymd', strtotime("-1 day", $timestamp)), 'end_date' => date('Ymd', strtotime("-1 day", $timestamp)), ]; //访客数 //今日访客 $today_visit = $this->getVisit($day); //昨日访客 $yes_visit = $this->getVisit($lastday); //订单数 $order_query = Order::find()->where(['is_delete' => 0, 'store_id' => get_store_id(), 'is_show'=>1])->andWhere( [ 'trade_status' => [ Order::ORDER_FLOW_NO_SEND, Order::ORDER_FLOW_SEND, Order::ORDER_FLOW_CONFIRM ], 'is_pay' => Order::IS_PAY_TRUE ] )->andWhere($whereMch)->select('id, trade_status, created_at'); //成交额 $money_query = clone $order_query; //今日订单数 $order_count = (clone $order_query)->andWhere(['>', 'created_at', $td])->count(); //昨日订单数 $yet_order_count = (clone $order_query)->andWhere(['and', ['>', 'created_at', $yet], ['<','created_at', $td]])->count(); //成交额 $money_count = (float)(clone $order_query)->andWhere(['>', 'created_at', $td])->sum('pay_price'); //昨日成交额 $yet_money_count = (clone $order_query)->andWhere(['and', ['>','created_at',$yet], ['<','created_at',$td]])->sum('pay_price'); //通知 $goods = Goods::find()->where(['store_id' => get_store_id(), 'status' => 1, 'is_delete' => 0])->andWhere($whereMch)->select('id, goods_num, attr, use_attr, goods_no')->asArray()->all(); $arr = []; $i = 0; foreach($goods as $item){ // 判断无规格商品的总库存 if ($item['goods_num'] * 1 < 10 && $item['use_attr'] == 0) { $arr[$i]['id'] = $item['id']; $arr[$i]['notice'] = 'id:' . $item['id'] . ' 货号:' . $item['goods_no'] . "库存不足,请及时补货"; $i++; } // 判断有规格商品的总库存 if ($item['use_attr'] != 0 && !empty($item['attr'])) { $attrs = json_decode($item['attr'],true); foreach($attrs as $attr){ if ($attr['num']*1 < 10) { $arr[$i]['id'] = $item['id']; $arr[$i]['notice'] = 'id:' . $item['id'] . ' 货号:' . $attr['no'] . '规格:' . $attr['attr_list'][0]['attr_name'] . "库存不足,请及时补货"; $i++; } } } } $notice = $arr; //订单 $order_query = Order::find()->where(['store_id'=>get_store_id(), 'is_delete'=>0, 'is_show'=>1])->andWhere($whereMch); //待付款 $pay_order = $order_query->andWhere(['OR', ['is_pay' => Order::IS_PAY_FALSE, 'trade_status' => Order::ORDER_FLOW_DEFAULT], ['AND', ['is_pay' => Order::IS_PAY_FALSE, 'pay_type' => Order::PAY_TYPE_COD], ['<>', 'trade_status', Order::ORDER_FLOW_CANCEL]]])->count(); //待发货 $send_order = Order::find()->where(['store_id'=>get_store_id(), 'is_delete'=>0, 'is_show'=>1])->andWhere($whereMch)->andWhere(['OR', ['trade_status' => Order::ORDER_FLOW_NO_SEND], ['is_pay' => Order::IS_PAY_FALSE, 'pay_type' => Order::PAY_TYPE_COD, 'trade_status' => Order::ORDER_FLOW_DEFAULT]])->count(); //待售后 // $after_sale_order = Order::find()->where(['store_id'=>get_store_id(), 'is_delete'=>0, 'is_sale'=>0, 'is_show'=>1])->andWhere(['or', ['trade_status'=>2], ['trade_status'=>3]])->count(); $after_sale_order = OrderRefund::find()->alias('or')->leftJoin(['o' => Order::tableName()], 'or.order_id = o.id')->where(['or.store_id'=>get_store_id(), 'or.is_delete'=>0, 'o.is_delete' => 0, 'o.is_show' => 1])->andWhere($whereMch)->andWhere(['IS NOT', 'o.id', NULL])->andWhere(['or', ['or.is_agree' => 0], ['or.status'=>0]])->count(); //待评价 $commit_order = Order::find()->where(['store_id'=>get_store_id(), 'is_delete'=>0, 'is_sale'=>1, 'is_show'=>1])->andWhere($whereMch)->andWhere(['is_comment'=>0,'trade_status'=>3])->count(); //待处理 // $sale_order = Order::find()->where(['store_id'=>get_store_id(), 'is_delete'=>0, 'is_show'=>1])->andWhere(['<>', 'trade_status', '1'])->andWhere(['is_sale' => 0])->count(); $sale_order = OrderRefund::find()->alias('or')->leftJoin(['o' => Order::tableName()], 'or.order_id = o.id')->where(['or.store_id'=>get_store_id(), 'or.is_delete'=>0, 'o.is_delete'=>0, 'o.is_show'=>1])->andWhere($whereMch)->andWhere(['IS NOT', 'o.id', NULL])->andWhere(['or', ['or.is_agree' => 0], ['or.status'=>0]])->count(); //总加购人数 $buy_count = Order::find()->where(['store_id'=>get_store_id(), 'is_delete'=>0, 'is_sale'=>1, 'is_show'=>1])->andWhere($whereMch)->andWhere(['<>', 'trade_status', '1'])->andWhere(['is_pay'=>1])->groupBy('user_id')->count(); //昨日加购人数 $yet_buy_count = Order::find()->where(['store_id'=>get_store_id(), 'is_delete'=>0, 'is_sale'=>1, 'is_show'=>1])->andWhere($whereMch)->andWhere(['<>', 'trade_status', '1'])->andWhere(['is_pay'=>1])->groupBy('user_id')->andWhere(['and', ['>','created_at',$yet], ['>','created_at',$td]])->count(); //未结算 $pay_order_money = Order::find()->where(['store_id'=>get_store_id(), 'is_delete'=>0, 'is_sale'=>1, 'is_show'=>1])->andWhere($whereMch)->andWhere(['<>', 'trade_status', '1'])->andWhere(['is_pay'=>0])->sum('pay_price'); //昨日未结算 $yet_pay_order_money = Order::find()->where(['store_id'=>get_store_id(), 'is_delete'=>0, 'is_sale'=>1, 'is_show'=>1])->andWhere($whereMch)->andWhere(['<>', 'trade_status', '1'])->andWhere(['is_pay'=>0])->andWhere(['and', ['>','created_at',$yet], ['>','created_at',$td]])->sum('pay_price'); if(!$this->mch_id){ try { $payload = \Yii::$app->jwt->getPayload(); } catch (\Exception $e) { return [ 'code' => 0, 'msg' => $e->getMessage(), 'status' => 401 ]; } $store_admin_id = $payload['store_admin_id']; if ($store_admin_id) { $store_admin = \app\models\StoreAdmin::findOne($store_admin_id); $rules = !empty($store_admin->rules) ? explode(',', $store_admin->rules) : []; } else { $pickLink = AdminPickLink::LIST; if ($pickLink) { $rules = array_column($pickLink, 'key'); } } } if($this->mch_id){ $rules = [ "goods", "order", "refund_order", "category", "evaluate", "store_data", "clerk", 'mch_store_data', 'mch_account_withdrawal', 'mch_promote_code', 'mch_scan_code_verification', 'mch_withdrawal_details' ]; $today_visit = (new MchForm(['mch_id' => $this->mch_id]))->mchVisit(date('Ymd')); $yes_visit = (new MchForm(['mch_id' => $this->mch_id]))->mchVisit(date('Ymd', time()-86400)); } //实时概况 $statistics_data = []; //成交订单数 $pay_order_query = Order::find()->where(['store_id' => get_store_id()]) ->andWhere(['OR', ['is_pay' => 1], ['is_pay' => 0, 'pay_type' => Order::PAY_TYPE_COD]]) ->andWhere(['<>', 'trade_status', 1]); $statistics_data['pay_order_count'] = (clone $pay_order_query)->select('id')->count(); //成交金额 $statistics_data['pay_order_price'] = (clone $pay_order_query)->select('pay_price')->sum('pay_price'); //成交人数 $statistics_data['pay_count'] = (clone $pay_order_query)->groupBy('user_id') ->select('user_id')->count(); //成交商品数 $statistics_data['pay_goods_count'] = OrderDetail::find()->alias('od') ->select('SUM(od.num)') ->leftJoin(['o' => Order::tableName()], 'od.order_id=o.id') ->where(['od.is_delete' => 0, 'o.is_delete' => 0, 'o.is_pay' => 1, 'o.store_id' => get_store_id()]) ->scalar(); //成交客单价 $statistics_data['pay_single_price'] = $statistics_data['pay_count'] ? bcdiv($statistics_data['pay_order_price'], $statistics_data['pay_count'], 2) : 0; //退款订单数 $cancel_order_query = OrderGoodsCancel::find() ->where([ 'NOT IN', 'status', [OrderGoodsCancel::STATUS_REFUSE, OrderGoodsCancel::STATUS_CANCEL] ])->andWhere(['store_id' => get_store_id()]); $statistics_data['cancel_order_count'] = (clone $cancel_order_query)->select('id')->count(); //退款金额 $statistics_data['cancel_order_price'] = (clone $cancel_order_query) ->select('refund_price')->sum('refund_price'); $scanPayOrder = ScanCodePayOrder::getMchOrder($this->mch_id,$td); $scanPayOrderYet = ScanCodePayOrder::getMchOrder($this->mch_id,$yet,$td); return [ 'code' => 0, 'msg' => "获取成功", 'data' => [ 'order' => [ 'pay_order_count' => $pay_order,//待付款 'send_order_count' => $send_order,//待发货 'after_sale_order_count' => $after_sale_order,//待售后 'comment_order_count' => $commit_order,//待评价 'sale_order_count' => $sale_order //待处理 ], 'notice' => $notice, 'store' => $store_info, 'mch' => $mch_info, 'total' => [ 'order_num' => [//订单数 'order_count' => $order_count + ($scanPayOrder['order_num'] ?? 0), 'yet_order_count' => $yet_order_count + ($scanPayOrderYet['order_num'] ?? 0) ], 'money' => [//成交额 'money_count' => bcadd($money_count,($scanPayOrder['order_price'] ?? 0),2), 'yet_money_count' => bcadd($yet_money_count??0,($scanPayOrderYet['order_price'] ?? 0),2) ], 'visit' => [//访问量 "today_visit_count" => $today_visit??0, "yet_visit_count" => $yes_visit??0 ], 'browse' => [ //浏览量 "today_see_count" => $today_visit??0, "yet_see_count" => $yes_visit??0 ], 'buy_people' => [//加购人数 "buy_count" => $buy_count??0, "yet_buy_count" => $yet_buy_count??0 ], 'pay_order_money' => [//未结算 "pay_order_money" => $pay_order_money??0, "yet_pay_order_money" => $yet_pay_order_money??0 ] ], 'rules' => $rules, 'statistics_data' => $statistics_data ] ]; }catch (\Exception $e){ return [ 'code'=>0, 'msg'=>$e->getMessage() ]; } } public function getYesData() { try { $whereMch = [ 'trade_status' => [ Order::ORDER_FLOW_NO_SEND, Order::ORDER_FLOW_SEND, Order::ORDER_FLOW_CONFIRM ], 'is_pay' => Order::IS_PAY_TRUE ]; if($this->mch_id){ $whereMch = ['mch_id' => $this->mch_id]; } $store_id = \get_store_id(); $timestamp = time(); $lastday = [ 'begin_date' => date('Ymd', strtotime("-1 day", $timestamp)), 'end_date' => date('Ymd', (strtotime("-1 day", $timestamp))), ]; $yes_start_date = mktime(0,0,0,date('m'),date('d')-1,date('Y')); $yes_end_date = mktime(0,0,0,date('m'),date('d'),date('Y'))-1; //昨日访客 $yes_visit = $this->getVisit($lastday); if($this->mch_id){ $yes_visit = (new MchForm())->mchVisit(date('Ymd', time()-86400)); } //昨日订单数 $yes_order_count = Order::find()->where(['is_delete' => 0, 'store_id' => $store_id])->andWhere($whereMch)->andWhere(['and', ['>=', 'created_at', $yes_start_date], ['<=', 'created_at', $yes_end_date]])->select('id')->count(); //昨日订单支付金额 $yes_order_price = Order::find()->where(['is_delete' => 0, 'store_id' => $store_id])->andWhere($whereMch)->andWhere(['and', ['>=', 'created_at', $yes_start_date], ['<=', 'created_at', $yes_end_date]])->select('total_price')->sum('total_price'); //昨日经营情况 $yes_data = [ 'visit' => $yes_visit ?: 0, 'visit_num' => $yes_visit ?: 0, 'order_count' => $yes_order_count, 'order_price' => $yes_order_price ?: 0 ]; return [ 'code' => 0, 'msg' => "获取成功", 'data' => $yes_data ]; } catch (\Exception $e) { return [ 'code'=>0, 'msg'=>$e->getMessage() ]; } } public function shopData() { try { $whereMch = []; $whereMchBrowseLog = []; $whereMchGoods = []; if($this->mch_id){ $whereMch = ['mch_id' => $this->mch_id]; $whereMchBrowseLog = ['log_id' => Goods::find()->select('id')->where(['mch_id' => $this->mch_id])]; $whereMchGoods = ['g.mch_id' => $this->mch_id]; } //基础数据 $store_id = get_store_id(); $type = (int)$this->type; $tab = (int)$this->tab; $timestamp = time(); $lastday = [ 'begin_date' => date('Ymd', strtotime("-1 day", $timestamp)), 'end_date' => date('Ymd', (strtotime("-1 day", $timestamp) + (60 * 60 * 24))), ]; $start_date = strtotime($this->start_date); $end_date = strtotime($this->end_date); $yes_start_date = mktime(0,0,0,date('m'),date('d')-1,date('Y')); $yes_end_date = mktime(0,0,0,date('m'),date('d'),date('Y'))-1; //昨日访客 $yes_visit = $this->getVisit($lastday); //昨日订单数 $yes_order_count = Order::find()->where(['is_delete' => 0])->andWhere(['and', ['>=', 'created_at', $yes_start_date], ['<=', 'created_at', $yes_end_date]])->select('id')->count(); //昨日订单支付金额 $yes_order_price = Order::find()->where(['is_delete' => 0])->andWhere(['and', ['>=', 'created_at', $yes_start_date], ['<=', 'created_at', $yes_end_date]])->select('total_price')->sum('total_price'); //昨日经营情况 $yes_data = [ 'visit' => $yes_visit, 'order_count' => $yes_order_count, 'order_price' => $yes_order_price ]; $time = [ 'begin_date' => date("Ymd", $start_date ?: strtotime('-1 month')), 'end_date' => date("Ymd", $end_date ?: strtotime('now')), ]; $table_data = []; //访问人数 if ($type === 1 || ($tab === 0 && empty($type))) { $new_data = $this->getData($time); $table_data = $new_data; } else { $data_arr = $this->getDateByInterval($time['begin_date'], $time['end_date']); $new_data = $data_arr; //分享数据 if ($type === 2) { foreach ($new_data as &$item) { $log = UserShareLog::find()->alias('usl')->leftJoin(['u' => User::tableName()], 'usl.parent_id = u.id')->where(['store_id' => get_store_id()]) ->select([new Expression('count(usl.id) as value')]) ->groupBy(new Expression('FROM_UNIXTIME(usl.created_at, "%Y%m%d")')) ->andWhere(['and', ['>', 'usl.created_at', strtotime($item['date'])], ['<', 'usl.created_at', (strtotime($item['date']) + (24*60*60))]]) ->asArray()->one(); $data = []; $data['value'] = (int)$log['value'] ?: 0; $item = array_merge($item, $data); } $table_data = $new_data; } if ($type === 3 || ($tab === 1 && empty($type))) { //商品浏览量 foreach ($new_data as &$item) { $log = BrowseLog::find()->where(['store_id' => get_store_id(), 'is_delete' => 0]) ->select([new Expression('count(id) as value')]) ->groupBy(new Expression('FROM_UNIXTIME(created_at, "%Y%m%d")')) ->andWhere(['and', ['>', 'created_at', strtotime($item['date'])], ['<', 'created_at', (strtotime($item['date']) + (24*60*60))]]) ->andWhere($whereMchBrowseLog) ->asArray()->one(); $data = []; $data['value'] = (int)$log['value'] ?: 0; $item = array_merge($item, $data); } /** * 表格数据 */ $table_data = BrowseLog::find()->alias('bl')->leftJoin(['g' => Goods::tableName()], 'bl.log_id = g.id') ->where(['bl.store_id' => get_store_id(), 'bl.is_delete' => 0])->andWhere($whereMch) ->select(['g.name', 'g.cover_pic', new Expression('count(bl.id) as value'), new Expression('FROM_UNIXTIME(bl.created_at, "%Y/%m/%d") as date')]) ->groupBy([new Expression('FROM_UNIXTIME(bl.created_at, "%Y%m%d")'), 'bl.log_id']) ->andWhere(['and', ['>', 'bl.created_at', strtotime($time['begin_date'])], ['<', 'bl.created_at', (strtotime($time['end_date']) + (24*60*60))]]) ->asArray()->all(); } if ($type === 4) { //加购人数 foreach ($new_data as &$item) { $cat_log = Cart::find()->where(['store_id' => get_store_id(), 'is_delete' => 0])->andWhere($whereMch) ->select([new Expression('count(id) as value')]) ->groupBy(new Expression('FROM_UNIXTIME(created_at, "%Y%m%d")')) ->andWhere(['and', ['>', 'created_at', strtotime($item['date'])], ['<', 'created_at', (strtotime($item['date']) + (24 * 60 * 60))]]) ->asArray()->one(); $data = []; $data['value'] = (int)$cat_log['value'] ?: 0; $item = array_merge($item, $data); } $table_data = Cart::find()->alias('c')->leftJoin(['g' => Goods::tableName()], 'c.goods_id = g.id') ->where(['c.store_id' => get_store_id(), 'c.is_delete' => 0])->andWhere($whereMchGoods) ->select(['g.name', 'g.cover_pic', new Expression('count(c.id) as value'), new Expression('FROM_UNIXTIME(c.created_at, "%Y/%m/%d") as date')]) ->groupBy([new Expression('FROM_UNIXTIME(c.created_at, "%Y%m%d")'), 'c.goods_id']) ->andWhere(['and', ['>', 'c.created_at', strtotime($time['begin_date'])], ['<', 'c.created_at', (strtotime($time['end_date']) + (24*60*60))]]) ->asArray()->all(); } if ($type === 5 || $type === 6) { //支付人数 //加购人数 foreach ($new_data as &$item) { $cat_log = Order::find()->where(['store_id' => get_store_id(), 'is_delete' => 0, 'is_pay' => 1])->andWhere($whereMch) ->select([new Expression('sum(total_price) as price'),new Expression('count(id) as value')]) ->groupBy([new Expression('FROM_UNIXTIME(created_at, "%Y%m%d")'), 'user_id']) ->andWhere(['and', ['>', 'created_at', strtotime($item['date'])], ['<', 'created_at', (strtotime($item['date']) + (24 * 60 * 60))]]) ->asArray()->one(); $data = []; if ($type === 5) { $data['value'] = (int)$cat_log['value'] ?: 0; } if ($type === 6) { $data['value'] = (float)$cat_log['price'] ?: 0; } $item = array_merge($item, $data); } $table_data = OrderDetail::find()->alias('od')->leftJoin(['o' => Order::tableName()], 'od.order_id = o.id') ->leftJoin(['g' => Goods::tableName()], 'od.goods_id = g.id')->where(['o.store_id' => get_store_id(), 'o.is_delete' => 0, 'o.is_pay' => 1])->andWhere($whereMchGoods) ->select(['g.name', 'g.cover_pic', new Expression('count(od.id) as value'), new Expression('FROM_UNIXTIME(o.created_at, "%Y/%m/%d") as date')]) ->groupBy([new Expression('FROM_UNIXTIME(o.created_at, "%Y%m%d")'), 'od.goods_id']) ->andWhere(['and', ['>', 'o.created_at', strtotime($time['begin_date'])], ['<', 'o.created_at', (strtotime($time['end_date']) + (24*60*60))]]) ->asArray()->all(); } } return [ 'code' => 0, 'msg' => '获取成功', 'data' => [ 'data' => $new_data, 'table_data' => $table_data ], ]; } catch (\Exception $e) { return [ 'code'=>0, 'msg'=>$e->getMessage() ]; } } //修改商城信息 public function getStoreInfo() { $t = \Yii::$app->db->beginTransaction(); try { $logo = $this->logo; $name = $this->name; $coordinate = $this->coordinate; $address = $this->address; if (\Yii::$app->request->isPost) { $store = Store::findOne(get_store_id()); if ($logo) { $store->logo = $logo; Option::set('logo', $logo, get_store_id(), 'store'); Option::set('web_log', $logo, get_store_id(), 'web'); } if ($name) { $store->name = $name; Option::set('name', $name, get_store_id(), 'store'); } if ($coordinate) { $store->coordinate = $coordinate; } if ($address) { $store->address = $address; } if (!$store->save()) { throw new \Exception(json_encode($store->errors)); } $t->commit(); return [ 'code' => 0, 'msg' => "保存成功" ]; } else { $store = Store::find()->alias('s')->where(['s.id' => get_store_id()]) ->leftJoin(['a' => Admin::tableName()], 's.admin_id = a.id') ->select('s.logo, s.name, s.coordinate, s.address, a.username') ->asArray()->one(); $data = []; $data['url'] = \Yii::$app->request->getHostInfo(); $store = array_merge($store, $data); return [ 'code' => 0, 'msg' => '获取成功', 'data' => $store ]; } } catch (\Exception $e) { $t->rollBack(); return [ 'code'=>0, 'msg'=>$e->getMessage() ]; } } public function getVisit($time){ //如果是模板方式 if(is_open_platform('wx', get_store_id())){ //获取三方平台配置信息 $config = [ 'app_id' => Option::get("platform_third_appid", 0, 'saas')['value'], 'secret' => Option::get("platform_third_secret", 0, 'saas')['value'], 'token' => Option::get("platform_token", 0, 'saas')['value'], 'aes_key' => Option::get("platform_encodingAesKey", 0, 'saas')['value'] ]; //设置小程序配置 $store_mini = StoreMini::find()->where(['id'=>get_mini_id()])->select('id, appid, authorizer_refresh_token')->one(); if(empty($store_mini->appid) || empty($store_mini->authorizer_refresh_token)){ return 0; } $openPlatform = Factory::openPlatform($config); $mini_program = $openPlatform->miniProgram($store_mini->appid, $store_mini->authorizer_refresh_token); $data = [ 'begin_date' => $time['begin_date'], 'end_date' => $time['end_date'] ]; $client = new BaseClient($mini_program); $res = $client->httpPostJson("datacube/getweanalysisappiddailysummarytrend", $data); \Yii::error($time['begin_date'].'-'.$time['end_date']."今天访问数据已出炉"); \Yii::error($res); return $res['list'][0]['visit_total']; //返回访问人数 } else { $data = [ 'begin_date' => $time['begin_date'], 'end_date' => $time['end_date'] ]; $mini_program = $this->wechat; if ($mini_program) { $res = $mini_program->data_cube->summaryTrend($data['begin_date'], $data['end_date']); return $res['list'][0]['visit_total']; //返回访问人数 } else { return 0; } } } public function getData($time) { try { $data = [ 'begin_date' => $time['begin_date'], 'end_date' => $time['end_date'] ]; $data_arr = $this->getDateByInterval($data['begin_date'], $data['end_date']); if (is_isv()) { //获取三方平台配置信息 $config = [ 'app_id' => Option::get("platform_third_appid", 0, 'saas')['value'], 'secret' => Option::get("platform_third_secret", 0, 'saas')['value'], 'token' => Option::get("platform_token", 0, 'saas')['value'], 'aes_key' => Option::get("platform_encodingAesKey", 0, 'saas')['value'] ]; //设置小程序配置 $store_mini = StoreMini::find()->where(['id'=>get_mini_id()])->select('id, appid, authorizer_refresh_token')->one(); if(empty($store_mini->appid) || empty($store_mini->authorizer_refresh_token)){ return [ 'code'=>1, 'msg'=>"参数配置错误" ]; } $openPlatform = Factory::openPlatform($config); $mini_program = $openPlatform->miniProgram($store_mini->appid, $store_mini->authorizer_refresh_token); foreach ($data_arr as &$item) { $data = [ 'begin_date' => date('Ymd', strtotime($item['date'])), 'end_date' => date('Ymd', strtotime($item['date'])) ]; $item['visit'] = 0; $client = new BaseClient($mini_program); $res = $client->httpPostJson("datacube/getweanalysisappiddailyvisittrend", $data); if (isset($res['list'][0]['visit_pv'])) { $item['value'] = $res['list'][0]['visit_pv']; } } return $data_arr; } else { $mini_program = $this->wechat; if ($mini_program) { foreach ($data_arr as &$item) { $res = $mini_program->data_cube->dailyVisitTrend(date('Ymd', strtotime($item['date'])), date('Ymd', strtotime($item['date']))); if (isset($res['list'][0]['visit_pv'])) { $item['value'] = $res['list'][0]['visit_pv']; } else { $item['value'] = 0; } } } } return $data_arr; } catch (\Exception $e) { return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } public function getDateByInterval(string $st, string $et, string $format = 'Y/m/d') :array { //日期格式不正确 if (strtotime($st) > strtotime($et)) return []; $returnData = []; $i = 0; do { $temp = []; $tempDate = date('Y/m/d', strtotime('+' . $i . ' day', strtotime($st))); // $temp['name'] = date('Y-m-d', strtotime('+' . $i . ' day', strtotime($st))); // $temp['startDate'] = date('Y-m-d', strtotime('+' . $i . ' day', strtotime($st))); // $temp['endDate'] = date('Y-m-d', strtotime('+' . $i . ' day', strtotime($st))); $temp['date'] = date($format, strtotime('+' . $i . ' day', strtotime($st))); $returnData[] = $temp; $i++; } while (strtotime($tempDate) < strtotime($et)); return $returnData; } }