/** * Lists all MOrder models. * @return mixed */ public function actionIndex($userid) { $searchModel = new MOrderSearch(); $dataProvider = $searchModel->search(Yii::$app->request->queryParams, $userid); if (isset($_GET['download'])) { $filepathname = Yii::$app->getRuntimePath() . DIRECTORY_SEPARATOR . 'order' . "-{$date}.csv"; $fh = fopen($filepathname, 'w'); //在写入数据之前先把bom头写到文件里 fwrite($fh, ""); fprintf($fh, "订单号, 商品, 订单时间, 订单状态, 用户姓名, 联系电话\n"); if (Yii::$app->user->identity->role == 1) { $orders = MOrder::find()->all(); } else { $orders = MOrder::find()->where(['userid' => $userid])->all(); } if (!empty($orders)) { foreach ($orders as $order) { $status = $order->status == 1 ? "已申请" : "已处理"; fprintf($fh, "%s, %s, %s, %s, %s, %s\n", $order->oid, $order->title, $order->create_time, $status, $order->username, $order->usermobile); } } fclose($fh); iconv("UTF-8", "GB2312", "{$filepathname}"); Yii::$app->response->sendFile($filepathname); return; } return $this->render('index', ['searchModel' => $searchModel, 'dataProvider' => $dataProvider]); }
public function search($params) { $query = MOrder::find(); $dataProvider = new ActiveDataProvider(['query' => $query, 'sort' => ['defaultOrder' => ['oid' => SORT_DESC]], 'pagination' => ['pageSize' => 20]]); $this->gh_id = Yii::$app->user->getGhid(); // $this->gh_id = \app\models\MGh::GH_XIANGYANGUNICOM; $this->addCondition($query, 'gh_id'); if (!Yii::$app->user->getIsAdmin()) { $this->office_id = Yii::$app->user->identity->office_id; $this->addCondition($query, 'office_id'); } if (!($this->load($params) && $this->validate())) { return $dataProvider; } $this->addCondition($query, 'office_id'); $this->addCondition($query, 'oid', true); $this->addCondition($query, 'status'); $this->addCondition($query, 'detail', true); $this->addCondition($query, 'feesum'); $this->addCondition($query, 'cid'); $this->addCondition($query, 'pay_kind'); $this->addCondition($query, 'memo', true); //$this->addCondition($query, 'wldh'); if (trim($this->create_time) !== '') { //$query->andWhere(['create_time' => new \yii\db\Expression(date('create_time')) ]); $query->andWhere('date(create_time)>=:create_time', [':create_time' => $this->create_time]); } if (trim($this->create_time_2) !== '') { //$query->andWhere(['create_time' => new \yii\db\Expression(date('create_time')) ]); $query->andWhere('date(create_time)<=:create_time_2', [':create_time_2' => $this->create_time_2]); } return $dataProvider; }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($userid) { //$query = MOrder::find(); $user = User::findOne(["id" => $userid]); if ($user->role == 1) { $query = MOrder::find()->orderBy(['create_time' => SORT_DESC]); } else { $query = MOrder::find()->where(["userid" => $user->id])->orderBy(['create_time' => SORT_DESC]); } $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['order_id' => $this->order_id, 'feesum' => $this->feesum, 'create_time' => $this->create_time, 'status' => $this->status, 'goods_id' => $this->goods_id, 'userid' => $this->userid]); $query->andFilterWhere(['like', 'oid', $this->oid])->andFilterWhere(['like', 'title', $this->title])->andFilterWhere(['like', 'username', $this->username])->andFilterWhere(['like', 'usermobile', $this->usermobile])->andFilterWhere(['like', 'address', $this->address])->andFilterWhere(['like', 'memo', $this->memo])->andFilterWhere(['like', 'memo_reply', $this->memo_reply]); return $dataProvider; }
public function search($params) { $query = \app\models\MOrder::find(); $dataProvider = new \yii\data\ActiveDataProvider(['query' => $query, 'sort' => ['defaultOrder' => ['create_time' => SORT_DESC]], 'pagination' => false]); if (!($this->load($params) && $this->validate())) { return $dataProvider; } $this->addCondition($query, 'office_id'); $this->addCondition($query, 'oid', true); $this->addCondition($query, 'status'); $this->addCondition($query, 'detail', true); $this->addCondition($query, 'feesum'); $this->addCondition($query, 'cid'); $this->addCondition($query, 'pay_kind'); $this->addCondition($query, 'memo', true); if (trim($this->create_time) !== '') { $query->andWhere('date(create_time)>=:create_time', [':create_time' => $this->create_time]); } if (trim($this->create_time_2) !== '') { $query->andWhere('date(create_time)<=:create_time_2', [':create_time_2' => $this->create_time_2]); } return $dataProvider; }
public static function closeExpiredOrders() { $tableName = MOrder::tableName(); $n = Yii::$app->db->createCommand()->delete($tableName, 'status=:status AND create_time < DATE_SUB(NOW(), INTERVAL 2 day)', [':status' => MOrder::STATUS_DRAFT])->execute(); U::W("UPDATE {$tableName}, {$n} --- 系统删除2天前的僵死订单。"); // auto close the orders exceed 2 days $n = Yii::$app->db->createCommand()->update($tableName, ['status' => MOrder::STATUS_SYSTEM_CLOSED], 'status=:status AND create_time < DATE_SUB(NOW(), INTERVAL 2 day)', [':status' => MOrder::STATUS_SUBMITTED])->execute(); U::W("UPDATE {$tableName}, {$n} --- 系统自动关闭超时2天的提交订单。"); $n = Yii::$app->db->createCommand()->update($tableName, ['status' => MOrder::STATUS_SYSTEM_SUCCEEDED], 'status=:status AND create_time < DATE_SUB(NOW(), INTERVAL 2 day)', [':status' => MOrder::STATUS_FULFILLED])->execute(); U::W("UPDATE {$tableName}, {$n} --- 系统自动确认超时2天的已办理订单。"); //找到超时2天的成功订单, 将其归属的渠道 +积分100 $orders = MOrder::find()->where(['status' => MOrder::STATUS_FULFILLED])->andWhere(['<', 'create_time', 'DATE_SUB(NOW(), INTERVAL 2 day)'])->all(); foreach ($orders as $order) { $user = MUser::findOne(['openid' => $order->openid]); $office = MOffice::findOne(['office_id' => $user->belongto]); if ($office->is_selfOperated == 0) { //wx_office_score_event 增加一条记录 $offce_score_event = new MOfficeScoreEvent(); $offce_score_event->gh_id = $order->gh_id; $offce_score_event->openid = $order->openid; $offce_score_event->office_id = $user->belongto; $offce_score_event->cat = MOfficeScoreEvent::CAT_ADD_ORDER; $offce_score_event->create_time = date('y-m-d h:i:s', time()); $offce_score_event->score = MOfficeScoreEvent::CAT_ADD_ORDER_SCORE; $offce_score_event->memo = '会员订单'; $offce_score_event->save(false); //wx_office表中对应渠道score 加100分 $office->score = $office->score + 100; $office->save(false); } } /* //move the unsuccessful orders exceed 90 days to bak table $n = Yii::$app->db->createCommand("INSERT INTO {$tableName}_arc SELECT * FROM $tableName WHERE status!=:status AND create_time < DATE_SUB(NOW(), INTERVAL 90 day)", [':status'=>MOrder::STATUS_OK])->execute(); U::W("INSERT $tableName, $n"); $n = Yii::$app->db->createCommand("DELETE FROM $tableName WHERE status!=:status AND create_time < DATE_SUB(NOW(), INTERVAL 90 day)", [':status'=>MOrder::STATUS_OK])->execute(); U::W("DELETE $tableName, $n"); */ //release mobile number $tableName = MMobnum::tableName(); $n = Yii::$app->db->createCommand()->update($tableName, ['status' => MMobnum::STATUS_UNUSED, 'locktime' => 0], 'status=:status AND locktime < :locktime', [':status' => MMobnum::STATUS_LOCKED, ':locktime' => time() - 2 * 24 * 3600])->execute(); U::W("UPDATE {$tableName}, {$n}"); $n = Yii::$app->db->createCommand("DELETE FROM {$tableName} WHERE status=:status", [':status' => MMobnum::STATUS_USED])->execute(); U::W("DELETE {$tableName}, {$n}"); }
public function actionAjaxdata($cat) { //if (!Yii::$app->request->isAjax) // return; $this->layout = false; switch ($cat) { case 'orderclose': $oid = isset($_GET["oid"]) ? $_GET["oid"] : 1; $model = MOrder::findOne($oid); if ($model === null) { U::D(["invalid oid:{$oid}", __METHOD__]); } $model->status = MOrder::STATUS_BUYER_CLOSED; if ($model->save(true, ['status'])) { $mobnum = MMobnum::findOne($model->select_mobnum); if ($mobnum !== null) { $mobnum->status = MMobnum::STATUS_UNUSED; $mobnum->save(false); } $data['code'] = 0; } else { return json_encode(['code' => 1, 'errmsg' => 'save db error']); } break; case 'orderview': $oid = isset($_GET["oid"]) ? $_GET["oid"] : 1; $data = MOrder::find()->select('*')->where("oid=:oid", [':oid' => $oid])->asArray()->one(); $data['statusName'] = MOrder::getOrderStatusName($data['status']); $order = MOrder::findOne($oid); if ($order->status == MOrder::STATUS_SUBMITTED) { $jsApiParameters = $order->GetOrderJsApiParameters(); $data['url'] = $jsApiParameters; } else { $data['url'] = ''; } break; case 'myorder': $gh_id = U::getSessionParam('gh_id'); $openid = U::getSessionParam('openid'); $page = isset($_GET["currentPage"]) ? $_GET["currentPage"] : 1; $size = isset($_GET['size']) ? $_GET['size'] : 8; $data = MOrder::find()->select('*')->where("gh_id=:gh_id AND openid=:openid AND status!=:status", [':gh_id' => $gh_id, ':openid' => $openid, ':status' => MOrder::STATUS_DRAFT])->orderBy(['oid' => SORT_DESC])->offset(($page - 1) * $size)->limit($size)->asArray()->all(); foreach ($data as &$row) { $row['statusName'] = MOrder::getOrderStatusName($row['status']); } unset($row); break; case 'officeorder': $gh_id = U::getSessionParam('gh_id'); $openid = U::getSessionParam('openid'); $page = isset($_GET["currentPage"]) ? $_GET["currentPage"] : 1; $size = isset($_GET['size']) ? $_GET['size'] : 8; $orderby = isset($_GET["orderby"]) ? $_GET["orderby"] : 'oid'; $asc = isset($_GET["asc"]) ? $_GET["asc"] : 0; $office_id = isset($_GET["office_id"]) ? $_GET["office_id"] : 0; $data = MOrder::find()->select('*')->where("gh_id=:gh_id AND office_id=:office_id", [':gh_id' => $gh_id, ':office_id' => $office_id])->orderBy([$orderby => $asc == 1 ? SORT_ASC : SORT_DESC])->offset(($page - 1) * $size)->limit($size)->asArray()->all(); foreach ($data as &$row) { $row['statusName'] = MOrder::getOrderStatusName($row['status']); } unset($row); break; case 'mobileNum': $page = isset($_GET["currentPage"]) ? $_GET["currentPage"] : 1; $size = isset($_GET['size']) ? $_GET['size'] : 8; $feeSum = isset($_GET['feeSum']) ? $_GET['feeSum'] : 100000; $feeSum = $feeSum * 100; $cid = isset($_GET["cid"]) ? $_GET["cid"] : MItem::ITEM_CAT_DIY; $num_cat = MMobnum::getNumCat($cid); $data = MMobnum::find()->select('num,ychf,zdxf')->where("status=:status AND num_cat=:num_cat AND zdxf <= :zdxf", [':status' => MMobnum::STATUS_UNUSED, ':num_cat' => $num_cat, ':zdxf' => $feeSum])->offset(($page - 1) * $size)->limit($size)->asArray()->all(); break; case 'diskclick': $gh_id = U::getSessionParam('gh_id'); $openid = U::getSessionParam('openid'); $model = MDisk::findOne(['gh_id' => $gh_id, 'openid' => $openid]); if ($model === null) { $model = MDisk::initDefault($gh_id, $openid); } else { if ($model->cnt > 0) { $model->cnt = $model->cnt - 1; } else { return json_encode(['code' => 1, 'errmsg' => 'has no qualification']); } } $data = U::makeDiskResult(); if ($data['code'] == 0) { if ($data['value'] % 2 == 0) { $model->cnt = 0; $model->win = 1; $model->win_time = time(); } } $model->save(false); break; case 'diskRestCnt': $gh_id = U::getSessionParam('gh_id'); $openid = U::getSessionParam('openid'); $model = MDisk::findOne(['gh_id' => $gh_id, 'openid' => $openid]); if ($model === null) { $model = MDisk::initDefault($gh_id, $openid); $model->save(false); $model = MDisk::findOne(['gh_id' => $gh_id, 'openid' => $openid]); } $data = $model->getAttributes(); $cur_time = time(); if ($model->win == 1 && $cur_time - $model->win_time < 30 * 60) { $alreadyWin = 1; } else { $alreadyWin = 0; } $data['alreadyWin'] = $alreadyWin; $data['code'] = 0; break; case 'g2048Save': $gh_id = U::getSessionParam('gh_id'); $openid = U::getSessionParam('openid'); Yii::$app->wx->setGhId($gh_id); $user = MUser::findOne(['gh_id' => $gh_id, 'openid' => $openid]); if ($user === null) { $user = new MUser(); } if (!empty($user->subscribe)) { $model = new \app\models\MG2048(); $model->gh_id = $gh_id; $model->openid = $openid; $model->best = $_GET['best']; $model->score = $_GET['score']; $model->big_num = $_GET['bigNum']; if (!$model->save(false)) { U::W([__METHOD__, $model->getErrors()]); return json_encode(['code' => 1, 'errmsg' => 'save score to db error']); } } $data['code'] = 0; $data['isSubscribed'] = empty($user->subscribe) ? 0 : 1; $data['position'] = MG2048::getCurrentScorePosition($gh_id, $_GET['score']); break; case 'getnearestoffice': $gh_id = U::getSessionParam('gh_id'); $lat = $_GET["lat"]; $lon = $_GET["lon"]; $rows = MOffice::getNearestOffices($gh_id, $lon, $lat); U::W($rows); $data['code'] = 0; $data['offices'] = $rows; break; case 'pkginfo': $gh_id = U::getSessionParam('gh_id'); $cid = isset($_GET["cid"]) ? $_GET["cid"] : MItem::ITEM_CAT_MOBILE_APPLE_5S_32G_SILVER; $pkg3g4g = isset($_GET["pkg3g4g"]) ? $_GET["pkg3g4g"] : ''; $period = isset($_GET["pkgPeriod"]) ? $_GET["pkgPeriod"] : 12; $monthprice = isset($_GET["pkgMonthprice"]) ? $_GET["pkgMonthprice"] : 46; $plan = $_GET["pkgPlan"] == 'null' ? '' : $_GET["pkgPlan"]; //$data = MPkg::find()->select('*')->where( // "gh_id=:gh_id AND cid=:cid AND pkg3g4g=:pkg3g4g AND period=:period AND monthprice=:monthprice AND plan=:plan", // [':gh_id'=>$gh_id, ':cid'=>$cid, ':pkg3g4g'=>$pkg3g4g, ':period'=>$period, ':monthprice'=>$monthprice, ':plan'=>$plan])->asArray()->one(); $data = MPkg::find()->select('*')->where("gh_id=:gh_id AND cid=:cid AND pkg3g4g=:pkg3g4g AND period=:period AND monthprice=:monthprice", [':gh_id' => $gh_id, ':cid' => $cid, ':pkg3g4g' => $pkg3g4g, ':period' => $period, ':monthprice' => $monthprice])->asArray()->one(); //foreach($data as &$row) //{ // $row['statusName'] = MOrder::getOrderStatusName($row['status']); //} //unset($row); break; case 'wlinfo': U::W("++++++++++++++++++++++++++++++++++++++"); $wl_url_1 = isset($_GET["wl_url_1"]) ? $_GET["wl_url_1"] : ''; $wl_url_2 = isset($_GET["wl_url_2"]) ? $_GET["wl_url_2"] : ''; $wl_url = "http://www.kuaidi100.com/query?type=" . $wl_url_1 . "&postid=" . $wl_url_2; //U::W($wl_url); $data = file_get_contents($wl_url); //$data = substr($lucy_msg, 14, -2); $data = json_decode($data, true); //U::W($data); break; case 'woketixian': $gh_id = U::getSessionParam('gh_id'); $openid = U::getSessionParam('openid'); U::W("----------assdfsdf1-----------"); U::W($openid); Yii::$app->wx->setGhId($gh_id); $user = MUser::findOne(['gh_id' => $gh_id, 'openid' => $openid]); $model = new \app\models\MSceneDetail(); $model->gh_id = $gh_id; $model->openid = $openid; $model->scene_id = $user->scene_id; $model->scene_amt = -1 * $_GET['ljtx']; $model->memo = $_GET['memo']; $model->czhm = $_GET['czhm']; if (!$model->save(false)) { U::W([__METHOD__, $model->getErrors()]); return json_encode(['code' => 1, 'errmsg' => 'save score to db error']); } $user->scene_balance = $user->scene_balance - abs($model->scene_amt); if (!$user->save(false)) { U::W([__METHOD__, $model->getErrors()]); return json_encode(['code' => 1, 'errmsg' => 'save score to db error']); } $data['ljtx'] = abs($model->scene_amt); break; case 'wokeqdyl': $gh_id = U::getSessionParam('gh_id'); $openid = U::getSessionParam('openid'); U::W("----------wokeqdyl-----------"); U::W($openid); Yii::$app->wx->setGhId($gh_id); $user = MUser::findOne(['gh_id' => $gh_id, 'openid' => $openid]); U::W("\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$"); U::W($user); $model = new \app\models\MSceneDetail(); $model->gh_id = $gh_id; $model->openid = $openid; $model->scene_id = $user->scene_id; $money_max = 8; //每日签到有礼,8个沃点封顶; if ($user->sign_money == 0) { $user->sign_time = date("Y-m-d"); $user->sign_money = 1; } else { if (strtotime(date("Y-m-d")) - strtotime($user->sign_time) < 1) { //$user->sign_time = date("Y-m-d"); //$user->sign_money = 1; $data['sign_money'] = 'marked'; break; } else { if ((strtotime(date("Y-m-d")) - strtotime($user->sign_time)) / 86400 > 1) { $user->sign_time = date("Y-m-d"); $user->sign_money = 1; } else { $user->sign_time = date("Y-m-d"); $user->sign_money = 2 * $user->sign_money > $money_max ? $money_max : 2 * $user->sign_money; } } } $model->scene_amt = $user->sign_money; $model->memo = $_GET['memo']; $model->cat = MSceneDetail::CAT_SIGN; if (!$model->save(false)) { U::W([__METHOD__, $model->getErrors()]); return json_encode(['code' => 1, 'errmsg' => 'save score to db error']); } //$user->scene_balance = $user->scene_balance + abs($model->scene_amt); if (!$user->save(false)) { U::W([__METHOD__, $model->getErrors()]); return json_encode(['code' => 1, 'errmsg' => 'save score to db error']); } $data['sign_money'] = $user->sign_money; break; case 'czsjhm': $gh_id = U::getSessionParam('gh_id'); $openid = U::getSessionParam('openid'); Yii::$app->wx->setGhId($gh_id); $user = MUser::findOne(['gh_id' => $gh_id, 'openid' => $openid]); if ($user === null) { $user = new MUser(); } if (!empty($user->subscribe)) { $user->gh_id = $gh_id; $user->openid = $openid; $user->user_account_charge_mobile = $_GET['czhm1']; if (!$user->save(false)) { U::W([__METHOD__, $user->getErrors()]); return json_encode(['code' => 1, 'errmsg' => 'save score to db error']); } } $data['czsjhm'] = $user->user_account_charge_mobile; break; default: U::W(['invalid data cat', $cat, __METHOD__, $_GET]); return; } U::W([$data]); U::W(json_encode($data)); return json_encode($data); }
public function actionOrder($filename = 'order.csv', $date = null) { $filepathname = Yii::$app->getRuntimePath() . DIRECTORY_SEPARATOR . 'exported_data' . DIRECTORY_SEPARATOR . $filename; $fh = fopen($filepathname, 'w'); if (null === $date) { $date = \app\models\U::getFirstDate(date('Y'), date('m')); } $total_count = \app\models\MOrder::find()->where(['>', 'create_time', $date])->count(); //$total_count = \app\models\MUser::find()->count(); $step = 300; $start = 0; while ($start < $total_count) { $orders = \app\models\MOrder::find()->offset($start)->limit($step)->where(['>', 'create_time', $date])->orderBy(['create_time' => SORT_ASC])->all(); fprintf($fh, "营业厅, 订单号, 商品, 价格, 订单时间, 身份证, 用户姓名, 联系电话, 支付方式, 订单状态, 开通, 备注, 用户类型\n"); foreach ($orders as $order) { $office = \app\models\MOffice::findOne(['office_id' => $order->office_id]); if (!empty($office)) { $office_title = $office->title; } else { $office_title = ""; } $user = \app\models\MUser::findOne(['openid' => $order->openid]); $customerFlag = '--'; /* if ($user->bindMobileIsInside('wx_t1')) { $customerFlag = '老'; } elseif ($user->bindMobileIsInside('wx_t2')) { $customerFlag = '老'; }elseif ($user->bindMobileIsInside('wx_t3')) { $customerFlag = '老'; } else { $customerFlag = '新'; } */ if ($user->bindMobileIsInside('wx_oldcustomer')) { $customerFlag = '老'; } else { $customerFlag = '新'; } $pay_kind = \app\models\MOrder::getOrderPayKindOption($order->pay_kind); $price = $order->feesum / 100; $paystatus = \app\models\MOrder::getOrderStatusName($order->status); //echo $office_title."\t".$order->oid."\t".$order->title."\t".$price."\t".$order->create_time."\t".$order->userid."\t".$order->username."\t".$order->usermobile."\t".$pay_kind."\t".$order->memo."\t".$order->customerFlag."\t\n"; fprintf($fh, "%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s\n", $office_title, $order->oid, $order->title, $price, $order->create_time, $order->userid, $order->username, $order->usermobile, $pay_kind, $paystatus, $order->kaitong, $order->memo, $order->customerFlag); } $start += $step; } fclose($fh); }