redis->get($key); if(!empty($res)) return ''; $offset = 1; $limit = 1000; while ($list = Order::lists(['where'=>[ ['pay_status'=>1] ], 'limit'=>$limit,'offset'=>($offset - 1) * $limit],false)) { foreach ($list as $item){ $order_no = $item['order_no']; $result = PaymentTradeOrder::findOne(['order_no'=>$order_no,'is_pay'=>1]); if(!empty($result)){ $trade = PaymentTrade::findOne(['id'=>$result['trade_id']]); if($trade){ if($item->out_trade_no!=$trade->out_trade_no){ $item->out_trade_no = $trade->out_trade_no; $res = $item->save(); var_dump($res); } } } } $offset++; } \Yii::$app->redis->set($key,1); } //修复,冻结佣金字段 public function actionUserWalletFroCom(){ $wallet_type = 'commission'; CapitalLog::$capitalType = "{$wallet_type}_frozen"; $offset = 1; $limit = 1000; while ($list = UserWallet::lists(['where'=>[['status'=>1]],'limit'=>$limit,'offset'=>($offset - 1) * $limit],false)) { foreach ($list as $item){ $user_id = $item['user_id']; $frozen_commission = CapitalLog::find()->where(['user_id'=>$user_id,'status'=>0])->sum('change_num'); $item->frozen_commission = $frozen_commission??0; $res = $item->save(); var_dump($res); } $offset++; } } //修复,总佣金字段 public function actionUserWalletTotalCom(){ $wallet_type = 'commission'; CapitalLog::$capitalType = "{$wallet_type}"; $offset = 1; $limit = 1000; $no_change_field = ['transfer_out_rejected', 'withdrawal_refund', 'withdrawal_decr']; while ($list = UserWallet::lists(['where'=>[['status'=>1]],'limit'=>$limit,'offset'=>($offset - 1) * $limit],false)) { foreach ($list as $item){ $user_id = $item['user_id']; $query = CapitalLog::find(); $total_commission = $query->where(['user_id'=>$user_id,'change_type'=>'add'])->andWhere(['not in', 'capital_type', $no_change_field])->sum('change_num'); $item->total_commission = $total_commission??0; $res = $item->save(); echo sprintf( '当前用户: %s, 修复后: %s, 修复结果: %s', $user_id, $total_commission, $res ); echo "\n"; } $offset++; } } /** * 修复钱包已提现佣金字段 * * @return void */ public function actionUserWalletCommissionWithdrawal() { $offset = 1; $limit = 1000; while ($list = UserWallet::lists(['where'=>[['status'=>1]],'limit'=>$limit,'offset'=>($offset - 1) * $limit],false)) { foreach ($list as $item){ $user_id = $item['user_id']; $query = UserWithdrawLog::find(); $where = [ 'user_id' => $user_id, 'status' => UserWithdrawLog::STATUS_ALREADY_TRANS, ]; $commission_withdrawal = $query->where($where)->sum('num'); $item->commission_withdrawal = $commission_withdrawal??0; $res = $item->save(); echo sprintf( '当前用户: %s, 修复后: %s, 修复结果: %s', $user_id, $commission_withdrawal, $res ); echo "\n"; } $offset++; } } /** * 修复钱包blance字段 * * @return void */ public function actionUserWalletTotalBln() { $wallet_type = 'balance'; CapitalLog::$capitalType = "{$wallet_type}"; $offset = 1; $limit = 1000; while ($list = UserWallet::lists(['where' => [['status' => 1]], 'limit' => $limit, 'offset' => ($offset - 1) * $limit], false)) { foreach ($list as $item) { $user_id = $item['user_id']; $total_balance = CapitalLog::find()->where(['user_id' => $user_id, 'change_type' => 'add'])->sum('change_num'); $bf = $item->total_balance; $af = $total_balance ?? 0; $item->total_balance = $af; $res = $item->save(); echo sprintf( '当前用户: %s, 修复前: %s, 修复后: %s, 修复结果: %s', $user_id, $bf, $af, $res ); echo "\n"; } $offset++; } return ExitCode::OK; } //修复,commission_log表current_num字段,和user_wallet表commission可用佣金字段 public function actionUserWalletCommission(){ $wallet_type = 'commission'; CapitalLog::$capitalType = "{$wallet_type}"; $offset = 1; $limit = 1000; while ($list = UserWallet::lists(['where'=>[['status'=>1]],'limit'=>$limit,'offset'=>($offset - 1) * $limit],false)) { foreach ($list as $item){ $user_id = $item['user_id']; $commission_list = CapitalLog::find()->where(['user_id' => $user_id])->orderBy('id asc')->all(); $total = 0; foreach ($commission_list as $k => $value) { if ($value['change_type'] == 'sub') { $total -= $value['change_num']; } else { $total += $value['change_num']; } if (isset($commission_list[$k + 1])) { if($commission_list[$k + 1]->current_num!=$total){ $commission_list[$k + 1]->current_num = $total; $rs = $commission_list[$k + 1]->save(); } } } if($total!= $item->commission){ $item->commission = $total; $res = $item->save(); var_dump($res); } } $offset++; } } //检查 public function actionCheckUserWalletCommission(){ $list = UserWallet::lists(['where'=>[ ['status'=>1], ]],false); $wallet_type = 'commission'; CapitalLog::$capitalType = "{$wallet_type}"; foreach ($list as $item){ $user_id = $item['user_id']; $add = CapitalLog::find()->where(['user_id'=>$user_id,'change_type'=>'add'])->sum('change_num'); $sub = CapitalLog::find()->where(['user_id'=>$user_id,'change_type'=>'sub'])->sum('change_num'); $cha = $add-$sub; if(bcmul($cha,1,2)!=bcmul($item['commission'],1,2)){ var_dump($item['user_id'].':'.$item['commission'].':'.$cha); } } } public function actionIndex() { $wallet_type = 'commission'; $this->doHandle($wallet_type, false); $this->doHandle($wallet_type, true); $wallet_type = 'score'; $this->doHandle($wallet_type, false); $this->doHandle($wallet_type, true); $wallet_type = 'balance'; $this->doHandle($wallet_type, false); $this->doHandle($wallet_type, true); } public function actionStoreUserNums(){ $list = StoreUser::find()->select('store_id,count(*) as user_nums')->groupBy('store_id')->asArray()->all(); foreach ($list as $item){ $res = Store::updateAll(['user_nums'=>$item['user_nums']],['id'=>$item['store_id']]); var_dump($res); } } public function actionMchUserNums(){ $list = MchUser::find()->select('mch_id,count(*) as user_nums')->groupBy('mch_id')->asArray()->all(); foreach ($list as $item){ $res = Mch::updateAll(['user_nums'=>$item['user_nums']],['id'=>$item['mch_id']]); var_dump($res); } } protected function doHandle($wallet_type, $is_frozen = true) { $offset = 1; $limit = 1000; if ($is_frozen) { CapitalLog::$capitalType = "{$wallet_type}_frozen"; } else { CapitalLog::$capitalType = "{$wallet_type}"; } while ($list = CapitalLog::find()->select('*')->offset(($offset - 1) * $limit)->limit($limit)->all()) { foreach ($list as $val) { if (strpos($val['source_table'], 'addons_course_orders') !== false) { $order = AddonsCourseOrders::findOne(['id' => $val['source_table_id']]); if (!empty($order)) { $course = AddonsCourse::findOne(['id'=>$order->course_id]); $val->contributor_name = $course['name']; $val->order_no = $order['order_no']; $val->contributor_money = $order['pay_money']; $val->contributor_id = $order['user_id']; $res = $val->save(); var_dump($val['id'].':视频课程订单:' . $res); } } elseif (strpos($val['source_table'], 'order_detail') !== false) { $order_detail = OrderDetail::findOne(['id' => $val['source_table_id']]); if (!empty($order_detail)) { $order = Order::findOne(['id' => $order_detail['order_id']]); if ($order) { $val->contributor_name = $order_detail['goods_name']; $val->order_no = $order['order_no']; $val->contributor_money = $order_detail['goods_price']; $val->contributor_id = $order['user_id']; $res = $val->save(); var_dump($val['id'].':主商城订单:' . $res); } } } elseif (strpos($val['source_table'], 'addons_cloud_stock_fill_order') !== false) { $order = CloudStockFillOrder::findOne(['id' => $val['source_table_id']]); if ($order) { $goods = Goods::findOne(['id'=>$order->goods_id]); $val->contributor_name = $goods['goods_name']??''; $val->order_no = $order['order_no']; $val->contributor_money = $order['pay_money']; $val->contributor_id = $order['user_id']; $res = $val->save(); var_dump($val['id'].':补货订单:' . $res); } } } $offset++; } } public function actionUpdateAddons(){ $dir = __DIR__; $file = $dir.'/aaaaaa.csv'; $cvsFile = fopen($file, 'r'); //开始读取csv文件数据 while ($fileData = fgetcsv($cvsFile)) { $str1 = iconv('GBK','UTF-8', $fileData[0]); $str2 = iconv('GBK','UTF-8', $fileData[1]); $addons = Addons::findOne(['title'=>trim($str1)]); if($addons){ $addons->brief_introduction = $str2; $res = $addons->save(); var_dump($res); } } } public function actionClearInvoker($invoke_id=null,$addons_name=null){ if(!empty($invoke_id)&&!empty($addons_name)){ $redis = \Yii::$app->redis; $redis_key = RedisKeyEnum::suffix(RedisKeyEnum::GLOBAL_INVOKE, '',true) .':'. $invoke_id; $redis->del($redis_key); AddonsInvoker::updateAll(['status'=>StatusEnum::DELETE],['invoker_id'=>$invoke_id,'addons_name'=>$addons_name]); } } public function actionSettlement() { $order_detail_list = OrderDetail::lists([ 'where' => [['order_status' => 4]], 'order'=>'id desc', 'limit'=>10000, ]); $goods_ids = array_unique(array_column($order_detail_list,'goods_id')); $goods_list = Goods::lists(['where'=>[['id'=>$goods_ids],['goods_type'=>GoodsTypeEnum::GoodsTypeVirtual]],'select'=>'id']); $virtual_goods_ids = array_column($goods_list,'id'); foreach ($order_detail_list as $order_detail) { $order_detail_id = $order_detail['id']; $goods_id = $order_detail['goods_id']; if(!in_array($goods_id,$virtual_goods_ids))continue; $where = []; $where[]['source_table'] = 'order_detail'; $where[]['source_table_id'] = $order_detail_id; $where[]['status'] = StatusEnum::DISABLED; $wallet_type = 'score'; $this->updateCap($where,$wallet_type); $wallet_type = 'commission'; $this->updateCap($where,$wallet_type); $wallet_type = 'balance'; $this->updateCap($where,$wallet_type); } } protected function updateCap($where,$wallet_type){ CapitalLog::$capitalType = "{$wallet_type}_frozen"; $capital_list = CapitalLog::lists(['where'=>$where]); foreach ($capital_list as $capital){ $res = UserWalletService::unfrozen($capital['id'], $wallet_type); var_dump($wallet_type.':capital:id:'.$capital['id'].':'.$res); } } //因退款,而导致经销商累计分佣有误的修复 public function actionFixAgentCommission(){ $wallet_type = 'commission'; CapitalLog::$capitalType = "{$wallet_type}_frozen"; $list = CapitalLog::find()->where(['status'=>-1])->select('user_id')->groupBy('user_id')->limit(10000)->all(); $user_ids = array_column($list,'user_id'); $arr = ['commission','score']; foreach ($arr as $wallet_type){ foreach ($user_ids as $user_id){ CapitalLog::$capitalType = "{$wallet_type}"; $total_change_num = CapitalLog::find()->where(['user_id'=>$user_id,'from_type'=>AddonsEnum::ADDONS_NAME_AGENT])->sum('change_num'); CapitalLog::$capitalType = "{$wallet_type}_frozen"; $total_change_num_frozen = CapitalLog::find()->where(['user_id'=>$user_id,'status'=>0,'from_type'=>AddonsEnum::ADDONS_NAME_AGENT])->sum('change_num'); $total_commission = bcadd($total_change_num,$total_change_num_frozen,2); $field = "total_{$wallet_type}"; $res = Agent::updateAll([$field=>$total_commission],['user_id'=>$user_id]); var_dump($res); } } } //因退款,而导致分销商累计分佣有误的修复 public function actionFixDiCommission(){ $wallet_type = 'commission'; CapitalLog::$capitalType = "{$wallet_type}_frozen"; $list = CapitalLog::find()->where(['status'=>-1])->select('user_id')->groupBy('user_id')->all(); $user_ids = array_column($list,'user_id'); $arr = ['commission','score']; foreach ($arr as $wallet_type){ foreach ($user_ids as $user_id){ CapitalLog::$capitalType = "{$wallet_type}"; $total_change_num = CapitalLog::find()->where(['user_id'=>$user_id,'from_type'=>AddonsEnum::ADDONS_NAME_DISTRIBUTION])->sum('change_num'); CapitalLog::$capitalType = "{$wallet_type}_frozen"; $total_change_num_frozen = CapitalLog::find()->where(['user_id'=>$user_id,'status'=>0,'from_type'=>AddonsEnum::ADDONS_NAME_DISTRIBUTION])->sum('change_num'); $total_commission = bcadd($total_change_num,$total_change_num_frozen,2); $field = "total_{$wallet_type}"; $res = Distribution::updateAll([$field=>$total_commission],['user_id'=>$user_id]); var_dump($res); } } } //因提现而导致用户钱包表的累计总佣金有误的修复 public function actionTotalCommission(){ $mall_list = Mall::getEnableMallList(true); foreach ($mall_list as $mall) { $mall_id = $mall['id']; $params = [ 'where'=>[ ['change_type' => 'add'], [ 'mall_id' => $mall_id], ], 'group'=>'user_id', 'select'=>'user_id, sum(change_num) as change_num' ]; $list = CommissionLog::lists($params); foreach ($list as $item){ $obj = UserWallet::findOne(['user_id'=>$item['user_id']]); if(!empty($obj)){ if($obj->total_commission!=$item['change_num']){ $obj->total_commission = $item['change_num']; $res = $obj->save(); var_dump($res); } } } } } //修复,总佣金字段 public function actionUserLastPay(){ $offset = 1; $limit = 1000; while ($list = User::lists(['where'=>[['status'=>1]],'limit'=>$limit,'offset'=>($offset - 1) * $limit],false)) { foreach ($list as $item){ $user_id = $item['id']; $order = Order::find()->where(['user_id'=>$user_id,'pay_status'=>1])->orderBy('pay_time asc')->one(); $first_time = 0; if(!empty($order)){ $last_pay_at = $order['pay_time']; $first_time = $last_pay_at; $model = UserActionRecord::findOne(['user_id'=>$user_id]); if(empty($model['first_pay_at'])){ $res = UserActionRecord::setData($order['mall_id'],$user_id,['last_pay_at'=>$last_pay_at]); var_dump($res); } } $order = Order::find()->where(['user_id'=>$user_id,'pay_status'=>1])->orderBy('pay_time desc')->one(); if(!empty($order)){ $last_pay_at = $order['pay_time']; if($first_time!=$last_pay_at){ $res = UserActionRecord::setData($order['mall_id'],$user_id,['last_pay_at'=>$last_pay_at]); var_dump($res); } } } $offset++; } } //去掉短视频商品独立模式,重复item_id,因为之前添加时没有加入commission_type,导致某些商品的item_id重复 public function actionVideo(){ $sql=" SELECT * FROM (SELECT count(*) as counts,item_id FROM qimall_addons_short_video_commission_item_setting GROUP BY item_id) t where t.counts>1 "; $list = \Yii::$app->db->createCommand($sql)->queryAll(); if(!empty($list)){ foreach ($list as $item){ $res = ShortVideoCommissionItemSetting::getOne([['item_id'=>$item['item_id']]],false); $res->delete(); } } } //修复门店已完成订单,但是收入明细还未结算 //原因是虚拟商品 public function actionStoreOrderSettlement(){ $t = \Yii::$app->db->beginTransaction(); try { $list = StoreCommission::lists([ 'where'=>[ ['type'=>1], ['is_settlement'=>0], ['status'=>StatusEnum::ENABLED], ], ],false); foreach ($list as $item){ $store_order = StoreOrder::findOne(['order_no'=>$item['order_no'],'order_status'=>OrderStatusEnum::ACCOMPLISH]); if(empty($store_order)) continue; Store::settlementStoreCommission($store_order['id'], $store_order['store_id'], $store_order['order_no']);//结算货款 } $t->commit(); var_dump('修复完成'); }catch (Exception $e){ $t->rollBack(); var_dump($e->getMessage()); } } //修复多商户已完成订单,但是收入明细还未结算 //原因是虚拟商品 public function actionMchOrderSettlement(){ $t = \Yii::$app->db->beginTransaction(); try { $list = MchCommission::lists([ 'where'=>[ ['type'=>1], ['is_settlement'=>0], ['status'=>StatusEnum::ENABLED], ], ],false); foreach ($list as $item){ $order = Order::findOne(['order_no'=>$item['order_no'],'order_status'=>OrderStatusEnum::ACCOMPLISH]); if(empty($order)) continue; Mch::settlementStoreCommission($order['id'], $order['store_id'], $order['order_no']);//结算货款 } $t->commit(); var_dump('修复完成'); }catch (Exception $e){ $t->rollBack(); var_dump($e->getMessage()); } } public function actionUserSt(){ $offset = 1; $limit = 1000; while ($list = User::lists(['where'=>[['status'=>1]],'limit'=>$limit,'offset'=>($offset - 1) * $limit],false)) { foreach ($list as $item){ $user_id = $item['id']; $order_num = Order::find()->where(['user_id'=>$user_id])->count(); $order_money = Order::find()->where(['user_id'=>$user_id])->sum('pay_money'); $pay_num = Order::find()->where(['user_id'=>$user_id,'pay_status'=>1])->count(); $pay_money = Order::find()->where(['user_id'=>$user_id,'pay_status'=>1])->sum('pay_money'); $pay_goods_num = OrderDetail::find()->where(['user_id'=>$user_id]) ->andWhere(['<>','order_status',0]) ->sum('num'); $average_money = 0; if($pay_num>0){ $average_money = bcdiv($pay_money, $pay_num, 2); } $finish_order_num = Order::find()->where(['user_id'=>$user_id,'order_status'=>4])->count(); $finish_order_money = Order::find()->where(['user_id'=>$user_id,'order_status'=>4])->sum('pay_money'); $finish_goods_num = OrderDetail::find()->where(['user_id'=>$user_id]) ->andWhere(['order_status'=>4]) ->sum('num'); $refund_order_num = Order::find()->where(['user_id'=>$user_id,'is_feedback'=>[1,2]])->count(); $refund_order_money = Order::find()->where(['user_id'=>$user_id,'is_feedback'=>[1,2]])->sum('pay_money'); $refund_goods_num = OrderDetail::find()->where(['user_id'=>$user_id,'is_feedback'=>[1,2]]) ->sum('num'); $cancel_order_num = Order::find()->where(['user_id'=>$user_id,'order_status'=>-4])->count(); $cancel_order_money = Order::find()->where(['user_id'=>$user_id,'order_status'=>-4])->sum('pay_money'); $cancel_goods_num = OrderDetail::find()->where(['user_id'=>$user_id]) ->andWhere(['order_status'=>-4]) ->sum('num'); $balance_pay = Order::find()->where(['user_id'=>$user_id,'payment_type'=>PayTypeEnum::BALANCE])->sum('pay_money'); $wechat_pay = Order::find()->where(['user_id'=>$user_id,'payment_type'=>PayTypeEnum::WECHAT])->sum('pay_money'); $ali_pay = Order::find()->where(['user_id'=>$user_id,'payment_type'=>PayTypeEnum::ALI])->sum('pay_money'); $obj = UserStatisticsTotal::findOne(['user_id'=>$user_id]); if(empty($obj)){ $obj = new UserStatisticsTotal(); $obj->loadDefaultValues(); $obj->user_id = $user_id; $obj->mall_id = $item['mall_id']; } $obj->order_num = $order_num??0; $obj->order_money = $order_money??0; $obj->pay_num = $pay_num??0; $obj->pay_money = $pay_money??0; $obj->pay_goods_num = $pay_goods_num??0; $obj->average_money = $average_money??0; $obj->finish_order_num = $finish_order_num??0; $obj->finish_order_money = $finish_order_money??0; $obj->finish_goods_num = $finish_goods_num??0; $obj->refund_order_num = $refund_order_num??0; $obj->refund_order_money = $refund_order_money??0; $obj->refund_goods_num = $refund_goods_num??0; $obj->cancel_order_num = $cancel_order_num??0; $obj->cancel_order_money = $cancel_order_money??0; $obj->cancel_goods_num = $cancel_goods_num??0; $obj->balance_pay = $balance_pay??0; $obj->wechat_pay = $wechat_pay??0; $obj->ali_pay = $ali_pay??0; $obj->save(); } $offset++; } } public function actionFixDesc(){ (new CapitalLog())->FDesc(); } /** * 卸载所有应用 * @return void */ public function actionUninstallAddons() { $addons = Addons::find()->asArray()->all(); foreach ($addons as $addon) { Addons::uninstall($addon['name']); } } public function actionUpper() { $order = \common\models\order\Order::getOne([ ['id' => 10008] ], true, ['detail']); \addons\DoubleCopy\common\logic\DoubleCopyLogic::handle($order, 4); // (new \addons\Agent\common\listeners\order\OrderPayRewardListener)->reward($order); // (new \addons\PointUpperLimit\common\service\ScoreLogService())->decFreezeQuota(10057); // try { // $where = [['source_table_id' => [10108]], ['status' => CapitalLog::STATUS_WAIT_SEND]]; // $logs = PointUpperLimitScoreLog::lists([ // 'where' => $where, // ]); // var_dump($logs); // (new ScoreLogService())->batchUnfrozen($where); // } catch (\Exception $e) { // var_dump($e->getMessage(), $e->getLine(), $e->getFile()); // } } public function actionFixS() { $order_ids = [ ]; $orders = \common\models\order\Order::lists(['where' => [['id' => $order_ids]]]); $user_ids = ''; foreach ($orders as $order) { $user_ids.=$order['user_id'].','; $order_list = \common\models\order\Order::lists([ 'where' => [ ['user_id' => $order['user_id']], ['>=', 'created_at', strtotime('2023-09-24 11:50:47')], ], 'with' => ['detail'] ]); $data = []; foreach ($order_list as $order) { $payGoodsNum = 0; foreach ($order['detail'] as $detail) { $payGoodsNum += $detail['num']; } $temp = [ 'pay_num' => 1, 'pay_money' => $order['pay_money'] - $order['shipping_money'], 'original_order_money' => $order['original_goods_price'], 'pay_goods_num' => $payGoodsNum, 'balance_pay' => $order['payment_type'] == PayTypeEnum::BALANCE ? $order['pay_money'] : 0, 'wechat_pay' => $order['payment_type'] == PayTypeEnum::WECHAT ? $order['pay_money'] : 0, 'ali_pay' => $order['payment_type'] == PayTypeEnum::ALI ? $order['pay_money'] : 0, ]; if (isset($data[$order['user_id']][date('Ymd', $order['created_at'])]['pay_num'])) { $data[$order['user_id']][date('Ymd', $order['created_at'])]['pay_num'] += $temp['pay_num']; } else { $data[$order['user_id']][date('Ymd', $order['created_at'])]['pay_num'] = $temp['pay_num']; } if (isset($data[$order['user_id']][date('Ymd', $order['created_at'])]['pay_money'])) { $data[$order['user_id']][date('Ymd', $order['created_at'])]['pay_money'] += $temp['pay_money']; } else { $data[$order['user_id']][date('Ymd', $order['created_at'])]['pay_money'] = $temp['pay_money']; } if (isset($data[$order['user_id']][date('Ymd', $order['created_at'])]['original_order_money'])) { $data[$order['user_id']][date('Ymd', $order['created_at'])]['original_order_money'] += $temp['original_order_money']; } else { $data[$order['user_id']][date('Ymd', $order['created_at'])]['original_order_money'] = $temp['original_order_money']; } if (isset($data[$order['user_id']][date('Ymd', $order['created_at'])]['pay_goods_num'])) { $data[$order['user_id']][date('Ymd', $order['created_at'])]['pay_goods_num'] += $temp['pay_goods_num']; } else { $data[$order['user_id']][date('Ymd', $order['created_at'])]['pay_goods_num'] = $temp['pay_goods_num']; } if (isset($data[$order['user_id']][date('Ymd', $order['created_at'])]['balance_pay'])) { $data[$order['user_id']][date('Ymd', $order['created_at'])]['balance_pay'] += $temp['balance_pay']; } else { $data[$order['user_id']][date('Ymd', $order['created_at'])]['balance_pay'] = $temp['balance_pay']; } if (isset($data[$order['user_id']][date('Ymd', $order['created_at'])]['wechat_pay'])) { $data[$order['user_id']][date('Ymd', $order['created_at'])]['wechat_pay'] += $temp['wechat_pay']; } else { $data[$order['user_id']][date('Ymd', $order['created_at'])]['wechat_pay'] = $temp['wechat_pay']; } if (isset($data[$order['user_id']][date('Ymd', $order['created_at'])]['ali_pay'])) { $data[$order['user_id']][date('Ymd', $order['created_at'])]['ali_pay'] += $temp['ali_pay']; } else { $data[$order['user_id']][date('Ymd', $order['created_at'])]['ali_pay'] = $temp['ali_pay']; } foreach ($data as $user_id => $item) { foreach ($item as $date=>$val){ $update = [ 'pay_num'=>$val['pay_num'], 'pay_money'=>$val['pay_money'], 'original_order_money'=>$val['original_order_money'], 'pay_goods_num'=>$val['pay_goods_num'], 'balance_pay'=>$val['balance_pay'], 'wechat_pay'=>$val['wechat_pay'], 'ali_pay'=>$val['ali_pay'], ]; if($val['pay_num']>0){ $update['average_money']=bcdiv($val['pay_money'], $val['pay_num'], 2); } \common\models\statistics\UserStatistics::updateAll($update,['user_id'=>$user_id,'date'=>$date]); } } } } echo $user_ids; } public function actionFut(){ $offset = 1; $limit = 1000; while ($list = User::lists(['where'=>[['status'=>1]],'limit'=>$limit,'offset'=>($offset - 1) * $limit],false)) { foreach ($list as $item){ $user_id = $item['id']; $order_num = \common\models\statistics\UserStatistics::find()->where(['user_id'=>$user_id,'status'=>1])->sum('order_num'); if(!isset($order_num)) $order_num = 0; \common\models\statistics\UserStatisticsTotal::updateAll(['order_num'=>$order_num],['user_id'=>$user_id]); $order_money = \common\models\statistics\UserStatistics::find()->where(['user_id'=>$user_id,'status'=>1])->sum('order_money'); if(!isset($order_money)) $order_money = 0; \common\models\statistics\UserStatisticsTotal::updateAll(['order_money'=>$order_money],['user_id'=>$user_id]); $pay_num = \common\models\statistics\UserStatistics::find()->where(['user_id'=>$user_id,'status'=>1])->sum('pay_num'); if(!isset($pay_num)) $pay_num = 0; \common\models\statistics\UserStatisticsTotal::updateAll(['pay_num'=>$pay_num],['user_id'=>$user_id]); $pay_money = \common\models\statistics\UserStatistics::find()->where(['user_id'=>$user_id,'status'=>1])->sum('pay_money'); if(!isset($pay_money)) $pay_money = 0; \common\models\statistics\UserStatisticsTotal::updateAll(['pay_money'=>$pay_money],['user_id'=>$user_id]); $pay_goods_num = \common\models\statistics\UserStatistics::find()->where(['user_id'=>$user_id,'status'=>1])->sum('pay_goods_num'); if(!isset($pay_goods_num)) $pay_goods_num = 0; \common\models\statistics\UserStatisticsTotal::updateAll(['pay_goods_num'=>$pay_goods_num],['user_id'=>$user_id]); $average_money = 0; if($order_num>0) $average_money = bcdiv($order_money,$order_num,2); \common\models\statistics\UserStatisticsTotal::updateAll(['average_money'=>$average_money],['user_id'=>$user_id]); $original_order_money = \common\models\statistics\UserStatistics::find()->where(['user_id'=>$user_id,'status'=>1])->sum('original_order_money'); if(!isset($original_order_money)) $original_order_money = 0; \common\models\statistics\UserStatisticsTotal::updateAll(['original_order_money'=>$original_order_money],['user_id'=>$user_id]); $balance_pay = \common\models\statistics\UserStatistics::find()->where(['user_id'=>$user_id,'status'=>1])->sum('balance_pay'); if(!isset($balance_pay)) $balance_pay = 0; \common\models\statistics\UserStatisticsTotal::updateAll(['balance_pay'=>$balance_pay],['user_id'=>$user_id]); $wechat_pay = \common\models\statistics\UserStatistics::find()->where(['user_id'=>$user_id,'status'=>1])->sum('wechat_pay'); if(!isset($wechat_pay)) $wechat_pay = 0; \common\models\statistics\UserStatisticsTotal::updateAll(['wechat_pay'=>$wechat_pay],['user_id'=>$user_id]); $ali_pay = \common\models\statistics\UserStatistics::find()->where(['user_id'=>$user_id,'status'=>1])->sum('ali_pay'); if(!isset($ali_pay)) $ali_pay = 0; \common\models\statistics\UserStatisticsTotal::updateAll(['ali_pay'=>$ali_pay],['user_id'=>$user_id]); } $offset++; } } public function actionFixRb() { $sql = " SELECT t.mall_id,sum(t.change_num) as change_num,t.month FROM( SELECT mall_id,change_num,FROM_UNIXTIME(created_at,'%Y-%m') as month FROM qimall_balance_log where change_type = 'add' and from_type = 'recharge' ) t GROUP BY t.mall_id,t.month "; $list = \Yii::$app->db->createCommand($sql)->queryAll(); foreach ($list as $item) { $redis = \Yii::$app->redis; $month = $item['month']; $mall_id = $item['mall_id']; $key = RedisKeyEnum::CENSUS_MALL_SINGLE_MONTH . ':' . $mall_id . ':' . $month; $redis_key = RedisKeyEnum::suffix($key, '', true); $result = $item['change_num']; $redis->hset($redis_key, 'total_recharge_money', $result); $obj = \common\models\census\CensusMallSingleMonth::findOne(['mall_id' => $mall_id, 'month' => $month]); if (empty($obj)) { $obj = new CensusMallSingleMonth(); $obj->loadDefaultValues(); $obj->mall_id = $mall_id; $obj->month = $month; } $obj->total_recharge_money = $result; $obj->save(); } } public function actionAgent() { $symbols = [ 'commission', 'score' ]; foreach ($symbols as $symbol) { CapitalLog::$capitalType = $symbol; foreach (\common\models\user\User::find()->select('id')->where(['status' => \common\enums\StatusEnum::ENABLED])->each() as $user) { $user_id = $user->id; /** * @var $agent \addons\Agent\common\models\Agent */ $agent = \addons\Agent\common\models\Agent::getOne([ ['user_id' => $user_id] ]); if (!empty($agent)) { $where = ['user_id' => $user_id, 'from_type' => \common\enums\AddonsEnum::ADDONS_NAME_AGENT]; $query = CapitalLog::find(); $total_price = $query->where($where)->sum('change_num'); $agent["total_$symbol"] = $total_price; if (!$agent->save()) var_dump($agent->getErrorMessage()); } } } } public function actionWang() { $order_ids = \common\models\order\Order::find()->where(['pay_status' => 1]) ->andWhere(['order_status' => 1])->select('id')->column(); foreach ($order_ids as $order_id) { try { (new \addons\WangDianTong\common\listeners\OrderPaidListener())->async_handle(['id' => $order_id, 'mall_id' => 1]); } catch (\Exception $e) { var_dump($e->getMessage(), $e->getLine(), $e->getFile(), $order_id); } } } public function actionC() { $t = \Yii::$app->db->beginTransaction(); try { /** * @var $each \common\models\order\Order */ foreach (\common\models\order\Order::find()->where(['is_feedback' => 0])->andWhere(['id' => 8459])->andWhere(['consign_time' => 0]) ->andWhere(['>', 'sign_time', 0])->each() as $each) { // 必须是自提订单 // {"head_id":12,"contact_phone":"14465656868","contact_name":"1","business_card":{"id":"21"},"user_form_id":"undefined"} var_dump($each->id); if (!empty($each->extra_info)) { try { $extra_info = json_decode($each->extra_info, true); if (!empty($extra_info['head_id'])) { \common\listeners\order\OrderFinishListener::uploadShippingInfo($each); } } catch (\Exception $e) { echo "{$e->getMessage()}, {$e->getFile()}, {$e->getLine()}"; throw new \Exception($e->getMessage()); } } } $t->commit(); } catch (\Exception $e) { $t->rollBack(); var_dump($e->getMessage()); } } public function actionE() { try { $event = new \common\events\order\OrderDeliveryEvent(3); $data['id'] = 393; $data['operator_id'] = 172069; $data['operator_name'] = '平邑丽娃(繁华里店)'; \Yii::$app->services->events->dispatch($event, $data, $event->listeners); } catch (\Exception $e) { var_dump($e->getMessage()); } } public function actionR() { try { (new \addons\Community\common\listeners\OrderSignRewardListener())->handleSync(['id' => 462]); (new \addons\Community\common\listeners\OrderSignRewardListener())->handleSync(['id' => 463]); } catch (\Exception $e) { var_dump($e->getMessage(), $e->getFile(), $e->getLine()); } } public function actionAiSkinAudit() { foreach (\addons\AiSkinAudit\common\models\AiSkinAuditRecord::find()->each() as $each) { (new \addons\AiSkinAudit\common\service\OrderService())->handleSync(['id' => $each->id, 'mall_id' => $each->mall_id]); } } public function actionMch() { \addons\Mch\common\listeners\order\OrderFinishListener::async_handle(['id' => 10444]); } public function actionDistrict() { // 取省份 /** * @var $p Region */ // foreach (Region::find()->where(['level' => 1])->each() as $p) { // } $sql = "SELECT id,parent_id,`name` FROM qimall_region WHERE `level` = 3 AND `name` IN (SELECT `name` as count from qimall_region WHERE `level` = 3 group BY `name` having COUNT(1)>1);"; $list = Region::find()->createCommand()->setRawSql($sql)->queryAll(); $t_arr = []; $sqls = []; foreach ($list as $item) { if (empty($t_arr["{$item['parent_id']}_{$item['name']}"])) { $t_arr["{$item['parent_id']}_{$item['name']}"] = $item['id']; } else { // 订单 $sqls[] = "UPDATE qimall_order SET `area` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `area` = {$item['id']};"; // 收货地址 $sqls[] = "UPDATE qimall_user_address SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; // 地区 $sqls[] = "DELETE FROM qimall_region WHERE id = {$item['id']};"; // 预约服务 $sqls[] = "UPDATE qimall_order_reserve SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; // 门店 $sqls[] = "UPDATE qimall_addons_store_order SET `area` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `area` = {$item['id']};"; // 砍价 $sqls[] = "UPDATE qimall_addons_bargain_order SET `area` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `area` = {$item['id']};"; // 蛋糕 $sqls[] = "UPDATE qimall_addons_cake_order SET `area` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `area` = {$item['id']};"; // 拼团 $sqls[] = "UPDATE qimall_addons_deposit_presale_order SET `area` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `area` = {$item['id']};"; // 拼团 $sqls[] = "UPDATE qimall_addons_deposit_presale_order SET `area` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `area` = {$item['id']};"; // 拼团 $sqls[] = "UPDATE qimall_addons_group_buy_order SET `area` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `area` = {$item['id']};"; // 拼团三返一 $sqls[] = "UPDATE qimall_addons_group_buy_rebate_order SET `area` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `area` = {$item['id']};"; // 拼团订单 $sqls[] = "UPDATE qimall_addons_group_rush_order SET `area` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `area` = {$item['id']};"; // 竞拍记录 $sqls[] = "UPDATE qimall_addons_mini_mall_auction SET `area` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `area` = {$item['id']};"; $sqls[] = "UPDATE qimall_addons_mini_mall_order SET `area` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `area` = {$item['id']};"; // 渠道分红 $sqls[] = "UPDATE qimall_addons_area_agent SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; // 区代申请记录 $sqls[] = "UPDATE qimall_addons_area_apply SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; // 社区团购 $sqls[] = "UPDATE qimall_addons_area_community SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; // 代理商信息 $sqls[] = "UPDATE qimall_addons_area_management_agent SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; $sqls[] = "UPDATE qimall_addons_area_management_apply SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; // 小区 $sqls[] = "UPDATE qimall_addons_area_management_community SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; // 代理信息 $sqls[] = "UPDATE qimall_addons_area_management_user SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; // card订单 $sqls[] = "UPDATE qimall_addons_card_coupons_sales_order SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; // 云库存订单 $sqls[] = "UPDATE qimall_addons_cloud_stock_agent_order SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; // $sqls[] = "UPDATE qimall_addons_cloud_stock_two_agent_order SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; // 社区团购 $sqls[] = "UPDATE qimall_addons_community_head SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; $sqls[] = "UPDATE qimall_addons_community_head_apply SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; // 商户 $sqls[] = "UPDATE qimall_addons_mch SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; // minimall $sqls[] = "UPDATE qimall_addons_mini_mall_seller_address SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; // 申请记录 $sqls[] = "UPDATE qimall_addons_operation_center_apply_list SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; $sqls[] = "UPDATE qimall_addons_operation_center_user_center SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; // 企叮咚 $sqls[] = "UPDATE qimall_addons_qi_ding_dong_region SET `local_district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `local_district_id` = {$item['id']};"; $sqls[] = "UPDATE qimall_addons_qi_shang_tong_region SET `local_district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `local_district_id` = {$item['id']};"; // $sqls[] = "UPDATE qimall_addons_regional_cooperation_user_apply SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; // 区域分红 $sqls[] = "UPDATE qimall_addons_regional_dividend_commission SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; $sqls[] = "UPDATE qimall_addons_regional_dividend_proxy SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; $sqls[] = "UPDATE qimall_addons_regional_dividend_statistics SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; // $sqls[] = "UPDATE qimall_addons_register_info_user SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; // 服务点预约 $sqls[] = "UPDATE qimall_addons_service_point SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; // 门店 $sqls[] = "UPDATE qimall_addons_store SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; $sqls[] = "UPDATE qimall_addons_store_goods_reserve SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; $sqls[] = "UPDATE qimall_addons_store_order_reserve SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; // $sqls[] = "UPDATE qimall_addons_water_purifier_order SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; // 微信视频号小店 $sqls[] = "UPDATE qimall_addons_wechat_video_shop SET `local_three_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `id` = {$item['id']};"; // 商品预约 $sqls[] = "UPDATE qimall_goods_reserve SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; $sqls[] = "UPDATE qimall_order_reserve SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; $sqls[] = "UPDATE qimall_town SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; // 商品搜索 $sqls[] = "UPDATE qimall_goods_search_address SET `district_id` = {$t_arr["{$item['parent_id']}_{$item['name']}"]} WHERE `district_id` = {$item['id']};"; } // 收货地址 // 订单数据 } var_dump($sqls); } }