| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279 |
- <?php
- namespace addons\Happiness\console\controllers;
- use addons\Store\common\enums\StoreEnum;
- use addons\Happiness\common\logic\store\StoreCensus;
- use addons\Store\common\models\StoreCommission;
- use addons\Happiness\common\enums\HappinessEnum;
- use addons\Happiness\common\models\HappinessGoodsRanking;
- use addons\Happiness\common\models\HappinessOrder;
- use addons\Happiness\common\models\HappinessStoreCommission;
- use addons\Happiness\common\models\HappinessStoreUser;
- use common\enums\StatusEnum;
- use common\helpers\DateHelper;
- use common\models\mall\Mall;
- use common\models\order\Order;
- use yii\console\Controller;
- use yii\console\ExitCode;
- use yii;
- class StoreCensusController extends Controller
- {
- //初始化
- public function actionIndex()
- {
- try {
- $malls = Mall::getEnableMallList();
- foreach ($malls as $mall) {
- $obj = new StoreCensus($mall['id']);
- $pay_order_numbers = $obj->getPayOrderNumbers();
- $pay_people_numbers = $obj->getPayPeopleNumbers();
- $real_pay_amounts = $obj->getRealPayAmounts();
- $not_settle_amounts = $obj->getNotSettleAmounts();
- // $settle_amounts = $obj->getSettleAmounts();
- $key = HappinessEnum::STORE_REAL_PAY_AMOUNTS . ':' . $mall['id'];
- Yii::$app->redis->set($key, $real_pay_amounts);//实收金额
- $key = HappinessEnum::STORE_NOT_SETTLE_AMOUNTS . ':' . $mall['id'];
- Yii::$app->redis->set($key, $not_settle_amounts);//待结算
- // $key = HappinessEnum::STORE_SETTLE_AMOUNTS . ':' . $mall['id'];
- // Yii::$app->redis->set($key, $settle_amounts);//给会员的佣金
- $key = HappinessEnum::STORE_PAY_ORDER_NUMBERS . ':' . $mall['id'];
- Yii::$app->redis->set($key, $pay_order_numbers);//支付订单数
- $key = HappinessEnum::STORE_PAY_PEOPLE_NUMBERS . ':' . $mall['id'];
- Yii::$app->redis->set($key, $pay_people_numbers);//支付人数
- $page = 1;
- $limit = 200;
- $query_com = HappinessStoreCommission::find()->where(['mall_id' => $mall['id'], 'status' => StatusEnum::ENABLED]);
- $key = HappinessEnum::STORE_PAY_PEOPLE_NUMBERS_SET . ':' . $mall['id'];
- do {
- $offset = ($page - 1) * $limit;
- $page++;
- $commissions = $query_com->limit($limit)->offset($offset)->all();
- if (!empty($commissions)) {
- foreach ($commissions as $commission) {
- Yii::$app->redis->setbit($key, $commission['user_id'], 1);
- }
- }
- } while ($commissions);
- }
- return ExitCode::OK;
- } catch (\Exception $e) {
- \Yii::getLogger()->flush(true);
- return false;
- }
- }
- /**
- * 统计实时概况-昨天数据
- **/
- public function actionYesterdayIndex()
- {
- try {
- $yesterday = date('Y-m-d',strtotime("-1 days"));
- $time_nodes = DateHelper::yesterDay();
- $malls = Mall::getEnableMallList();
- foreach ($malls as $mall) {
- $obj = new StoreCensus($mall['id'], $time_nodes['start'], $time_nodes['end']);
- $yesterday_pay_order_numbers = $obj->getPayOrderNumbers();
- $yesterday_pay_people_numbers = $obj->getPayPeopleNumbers();
- $yesterday_real_pay_amounts = $obj->getRealPayAmounts();
- $yesterday_not_settle_amounts = $obj->getNotSettleAmounts();
- // $yesterday_settle_amounts = $obj->getSettleAmounts();
- list($yesterday_waiting_audit_withdraw_amounts, $yesterday_waiting_pay_withdraw_amounts) = $obj->getWithdrawData();
- // $yesterday_waiting_audit_store_numbers = $obj->getWaitingAuditStoreNumbers();
- $data = [
- 'yesterday_pay_order_numbers' => $yesterday_pay_order_numbers,
- 'yesterday_pay_people_numbers' => $yesterday_pay_people_numbers,
- 'yesterday_real_pay_amounts' => $yesterday_real_pay_amounts,
- 'yesterday_not_settle_amounts' => $yesterday_not_settle_amounts,
- // 'yesterday_settle_amounts' => $yesterday_settle_amounts,
- 'yesterday_waiting_audit_withdraw_amounts' => $yesterday_waiting_audit_withdraw_amounts,
- 'yesterday_waiting_pay_withdraw_amounts' => $yesterday_waiting_pay_withdraw_amounts,
- // 'yesterday_waiting_audit_store_numbers' => $yesterday_waiting_audit_store_numbers,
- ];
- $key = StoreEnum::STORE_GLOBAL_STATISTICS_YESTERDAY . ':' . $mall['id'].':'.$yesterday;
- \Yii::$app->redis->set($key, json_encode($data));
- }
- return ExitCode::OK;
- } catch (\Exception $e) {
- \Yii::getLogger()->flush(true);
- return false;
- }
- }
- //统计商品销量
- public function actionSetGoodsRanking()
- {
- $malls = Mall::getEnableMallList();
- foreach ($malls as $mall) {
- $mall_id = $mall['id'];
- //获取门店订单数据
- $order_list = HappinessOrder::lists([
- 'alias' => 'yo',
- 'where' => [
- ['o.mall_id' => $mall_id],
- ['>=', 'o.status', StatusEnum::DISABLED],
- ['>', 'yo.store_id', 0],
- ['o.order_status' => [1,2,3,4,6]]
- ],
- 'with' => ['detail'],
- 'join' => [['LEFT JOIN', Order::tableName(). ' as o', "o.id = yo.order_id"]],
- 'select' => 'o.*,yo.store_id',
- ]);
- // print_r($order_list);exit;
- $ranking_data = [];
- if (!empty($order_list)) {
- foreach ($order_list as $key => $value) {
- $ranking_data[$value['store_id']];
- foreach ($value['detail'] as $k => $val) {
- if (empty($ranking_data[$value['store_id']][$val['goods_id']])) {
- $ranking_data[$value['store_id']][$val['goods_id']] = [
- 'store_id' => $value['store_id'],
- 'mall_id' => $mall_id,
- 'goods_id' => $val['goods_id'],
- 'sales_money' => $val['goods_price'],
- ];
- } else {
- $ranking_data[$value['store_id']][$val['goods_id']]['sales_money'] += $val['goods_price'];
- }
- }
- }
- }
- if (!empty($ranking_data)) {
- //记录数据
- foreach ($ranking_data as $rk => $rv) {
- foreach ($rv as &$item) {
- // print_r($item);exit;
- //查找是否已存在该商品数据
- $goods_ranking = HappinessGoodsRanking::getOne([
- ['mall_id' => $mall_id],
- ['store_id' => $item['store_id']],
- ['goods_id' => $item['goods_id']],
- ]);
- if (empty($goods_ranking)) {
- $goods_ranking = new HappinessGoodsRanking();
- $goods_ranking->mall_id = $mall_id;
- $goods_ranking->store_id = $item['store_id'];
- $goods_ranking->goods_id = $item['goods_id'];
- $goods_ranking->loadDefaultValues();
- }
- $goods_ranking->sales_money = $item['sales_money'];
- // $res = $goods_ranking->save();
- if (!$goods_ranking->save()) {
- // print_r($item);exit;
- print_r($goods_ranking);
- continue;
- }
- }
- }
- }
- }
- }
- //统计商品销量
- public function actionSetStoreUser()
- {
- $malls = Mall::getEnableMallList();
- foreach ($malls as $mall) {
- $mall_id = $mall['id'];
- //获取门店订单数据
- $order_list = HappinessOrder::lists([
- 'alias' => 'yo',
- 'where' => [
- ['o.mall_id' => $mall_id],
- ['>=', 'o.status', StatusEnum::DISABLED],
- ['>', 'yo.store_id', 0],
- ['o.order_status' => [-4,1,2,3,4,6]]
- ],
- 'with' => ['detail'],
- 'join' => [['LEFT JOIN', Order::tableName(). ' as o', "o.id = yo.order_id"]],
- 'select' => 'o.*,yo.store_id',
- ]);
- // print_r($order_list);exit;
- $ranking_data = [];
- if (!empty($order_list)) {
- foreach ($order_list as $key => $value) {
- $ranking_data[$value['store_id']];
- if (empty($ranking_data[$value['store_id']][$value['user_id']])) {
- $ranking_data[$value['store_id']][$value['user_id']] = [
- 'store_id' => $value['store_id'],
- 'mall_id' => $mall_id,
- 'user_id' => $value['user_id'],
- 'order_nums' => 0,
- 'pay_nums' => 0,
- 'pay_money' => 0,
- 'refund_nums' => 0,
- 'refund_money' => 0,
- ];
- if ($value['order_status'] == -4 && $value['is_feedback'] == 2) {
- $ranking_data[$value['store_id']][$value['user_id']]['order_nums'] = 1;
- $ranking_data[$value['store_id']][$value['user_id']]['pay_nums'] = 1;
- $ranking_data[$value['store_id']][$value['user_id']]['pay_money'] = $value['pay_money'];
- $ranking_data[$value['store_id']][$value['user_id']]['refund_nums'] = 1;
- $ranking_data[$value['store_id']][$value['user_id']]['refund_money'] = $value['pay_money'];
- } else if ($value['order_status'] >= 1) {
- $ranking_data[$value['store_id']][$value['user_id']]['order_nums'] = 1;
- $ranking_data[$value['store_id']][$value['user_id']]['pay_nums'] = 1;
- $ranking_data[$value['store_id']][$value['user_id']]['pay_money'] = $value['pay_money'];
- }
- } else {
- if ($value['order_status'] == -4 && $value['is_feedback'] == 2) {
- $ranking_data[$value['store_id']][$value['user_id']]['order_nums'] += 1;
- $ranking_data[$value['store_id']][$value['user_id']]['pay_nums'] += 1;
- $ranking_data[$value['store_id']][$value['user_id']]['pay_money'] += $value['pay_money'];
- $ranking_data[$value['store_id']][$value['user_id']]['refund_nums'] += 1;
- $ranking_data[$value['store_id']][$value['user_id']]['refund_money'] += $value['pay_money'];
- } else if ($value['order_status'] >= 1) {
- $ranking_data[$value['store_id']][$value['user_id']]['order_nums'] += 1;
- $ranking_data[$value['store_id']][$value['user_id']]['pay_nums'] += 1;
- $ranking_data[$value['store_id']][$value['user_id']]['pay_money'] += $value['pay_money'];
- }
- }
- }
- }
- if (!empty($ranking_data)) {
- //记录数据
- foreach ($ranking_data as $rk => $rv) {
- foreach ($rv as &$item) {
- if ($item['order_nums'] == 0 && $item['pay_nums'] == 0) continue;
- // print_r($item);exit;
- //查找是否已存在该商品数据
- $store_user = HappinessStoreUser::getOne([
- ['mall_id' => $mall_id],
- ['store_id' => $item['store_id']],
- ['user_id' => $item['user_id']],
- ]);
- if (empty($store_user)) {
- $store_user = new HappinessStoreUser();
- $store_user->mall_id = $mall_id;
- $store_user->store_id = $item['store_id'];
- $store_user->user_id = $item['user_id'];
- $store_user->loadDefaultValues();
- }
- $store_user->order_nums = $item['order_nums'];
- $store_user->pay_nums = $item['pay_nums'];
- $store_user->pay_money = $item['pay_money'];
- $store_user->refund_nums = $item['refund_nums'];
- $store_user->refund_money = $item['refund_money'];
- // $res = $store_user->save();
- if (!$store_user->save()) {
- // print_r($item);exit;
- print_r($store_user);exit;
- continue;
- }
- }
- }
- echo true;
- }
- }
- }
- }
|