request -> post(); $order_id = Yii::$app->request->post('order_id', ''); $pay_type = Yii::$app->request->post('pay_type', ''); $memo = Yii::$app->request->post('memo', ''); $price = empty($request['price']) ? 0 : $request['price']; $model = new BaseBalance($order_id, $pay_type, $memo); $data = $model->insertBalanceMain($price); $model->addLog($data); return json_encode($data); } /** * @Author wanglg * @Desc 下单渠道商操作新增预支付记录 * @return string */ public function actionAddChannelBalanceHis() { $request = Yii::$app -> request -> post(); $order_id = Yii::$app->request->post('order_id', ''); $pay_type = Yii::$app->request->post('pay_type', ''); $memo = Yii::$app->request->post('memo', ''); $price = empty($request['price']) ? 0 : $request['price']; $model = new BaseBalance($order_id, $pay_type, $memo); $data = $model->insertChannelBalanceMain($price); $model->createChannelLog($data); return json_encode($data); } /** * Function Description:取消订单时,插入记录和供应商余额 * Function Name: actionUpdateBalanceHis * * @author LUOCJ */ public function actionCancelBalanceHis() { $order_id = Yii::$app->request->post('order_id', ''); $pay_type = Yii::$app->request->post('pay_type', ''); $memo = Yii::$app->request->post('memo', ''); $model = new BaseBalance($order_id, $pay_type, $memo); $data = $model->cancelBalanceMain(); $model->addLog($data); return json_encode($data); } /** * @Author wanglg * @Desc 取消订单渠道商预支付变更记录流程 * @return string */ public function actionCancelChannelBalanceHis() { $order_id = Yii::$app->request->post('order_id', ''); $pay_type = Yii::$app->request->post('pay_type', ''); $memo = Yii::$app->request->post('memo', ''); $model = new BaseBalance($order_id, $pay_type, $memo); $data = $model->cancelChannelBalanceMain(); $model->createChannelLog($data); return json_encode($data); } /** * Function Description:定时任务更新已付状态 * Function Name: actionTimingUpdateBalanceHis * * @return array * * @author LUOCJ */ public function actionTimingUpdateBalanceHis() { $user_id = 1; $data = BaseBalance::timingUpdateBalanceMain($user_id); if (!file_exists(__DIR__ . '/../log/balance')) { mkdir(__DIR__ . '/../log/balance'); } file_put_contents(__DIR__ . '/../log/balance/' . date("Y-m-d") . '.log', date("Y-m-d H:i:s") . '刷新订单数据:' . json_encode($data) . PHP_EOL, FILE_APPEND); } public function actionHisToHis() { //1302 世纪皇冠 1301浦西洲际 $expect_array = [1302,1392,1336,672,1085,1027,1473,1070,1231,1301,1376,1296,1046,1042,1481,1479,1475,1351,1025,1242,1487,1018,1349,1225,1486,1511,1480, 1447,1501,1493,1468]; //已经处理的供应商 数组 处理完后放入其中 $now_supplier_id = 1259; //需要处理的供应商id $now_balance =-5270; //供应商截止至$now_date 的余额 $now_date = '2017-08-31'; //截止日期 set_time_limit(0); ini_set('memory_limit', '-1'); #1 清空所有his数据 OperaBalanceHis::deleteAll(['and', ['not in', 'supplier_id', $expect_array]]); #2 所有base_supplier 的数据置0.00; BaseSupplier::updateAll(['ACCOUNT_BALANCE' => 0.00], ['and', ['not in', 'ID', $expect_array]]); #3 特殊处理 BaseSupplier::updateAll(['ACCOUNT_BALANCE' => $now_balance], ['ID' => $now_supplier_id]); //1302 世纪皇冠 $count = OrderMain::find()->where(['and', ['=', 'PROD_TOP_ORG_ID', $now_supplier_id], ['>', 'PROD_END_STATION_DATE', $now_date], ['=', 'ORDER_PROD_TYPE', 25], ['=', 'CANCEL_FLAG', 0], ['in', 'ORDER_STATUS', [564, 382, 314, 198, 313, 383, 147]]])->count(); for ($i = 0; $i < ceil($count / 1000); $i++) { $begin = $i * 1000; $order_models = OrderMain::find()->where(['and', ['=', 'PROD_TOP_ORG_ID', $now_supplier_id], ['>', 'PROD_END_STATION_DATE', $now_date], ['=', 'ORDER_PROD_TYPE', 25], ['=', 'CANCEL_FLAG', 0], ['in', 'ORDER_STATUS', [564, 382, 314, 198, 313, 383, 147]]])->limit(1000)->offset($begin)->all(); foreach ($order_models as $order_model) { $model = new BaseBalance($order_model->ORDER_ID, 1, '历史订单'); $data = $model->insertBalanceMainBatch(); $model->addLog($data); } } return 123; } /** * Function Description:定时获取顾客上行短信 * Function Name: actionTimingUpdateBalanceHis * * @return array * * @author LUOCJ */ public function actionTimingGetMessage() { $data = BaseBalance::getMessage(); if (!file_exists(__DIR__ . '/../log/tailor')) { mkdir(__DIR__ . '/../log/tailor'); } file_put_contents(__DIR__ . '/../log/tailor/' . date("Y-m-d") . '.log', date("Y-m-d H:i:s") . '定时获取顾客上行短信:' . json_encode($data) . PHP_EOL, FILE_APPEND); } /** * Function Description:定时发送信息给 需要上门接的线路 并且尚未获取到地址的乘客 * Function Name: actionTimingSendNoAddressMessage * * * @author LUOCJ */ public function actionTimingSendNoAddressMessage() { $data = BaseBalance::sendNoAddressMessage(); if (!file_exists(__DIR__ . '/../log/tailor')) { mkdir(__DIR__ . '/../log/tailor'); } file_put_contents(__DIR__ . '/../log/tailor/' . date("Y-m-d") . '.log', date("Y-m-d H:i:s") . '定时发送信息给 需要上门接的线路 并且尚未获取到地址的乘客:' . json_encode($data) . PHP_EOL, FILE_APPEND); } /** * @Author wanglg * @Desc 通过定时任务执行该接口轮询修改渠道已付订单的订单状态 */ public function actionTimingUpdateChannelBalanceHis() { $user_id = 1; $data = BaseBalance::timingUpdateChannelBalanceMain($user_id); if (!file_exists(__DIR__ . '/../log/channel')) { mkdir(__DIR__ . '/../log/channel'); } file_put_contents(__DIR__ . '/../log/channel/' . date("Y-m-d") . '.log', date("Y-m-d H:i:s") . '刷新订单数据:' . json_encode($data) . PHP_EOL, FILE_APPEND); } /** * @Author wanglg * @Desc渠道商余额小于预警金额时给渠道商采购人发送预警短信(定时任务,暂时无需求) */ public function actionSendChannelMessage() { $content = "渠道商{渠道商}的预付款余额已经低于警戒值,当前为 {余额}元。请及时确认。"; $models = BaseSupplier::find()->where(['and', ['=', 'CANCEL_FLAG', 0], ['=', 'SUPPLIER_TYPE', 301], ['<', 'ACCOUNT_BALANCE', 'ALERT_BALANCE']])->all(); foreach ($models as $k => $model) { $phones = []; $bsp_models = BaseSupplierPurchase::findAll(['SUPPLIER_ID' => $model->ID, 'CANCEL_FLAG' => 0, 'PRODUCT_TYPE' => 25]); foreach ($bsp_models as $bsp_model) { $user_model = BaseUser::findOne(['ID' => $bsp_model->PURCHASER_NAME]); $phones[] = $user_model->PHONE_no; } if (count($phones) > 0) { $phones_str = implode(',', $phones); } else { continue; } if (strlen($phones_str) < 10) { continue; } $tp_content = $content; $tp_content = str_replace(['{供应商}', '{余额}'], [$model->SUPPLIER_NAME, $model->ACCOUNT_BALANCE], $tp_content); $res = Msg::sendTelMsg($phones_str, $tp_content); if ($res !== 0) { if (!file_exists(__DIR__ . '/../log/balance')) { mkdir(__DIR__ . '/../log/balance'); } file_put_contents(__DIR__ . '/../log/balance/' . date("Y-m-d") . '.log', date("Y-m-d H:i:s") . '渠道商警戒值 短信发送失败 ' . $model->SUPPLIER_NAME . ' ' . $model->ACCOUNT_BALANCE . PHP_EOL, FILE_APPEND); } } } /** * @Author wanglg * @Desc 手动增加渠道商扣款记录,刷单使用,一般情况不会用到,逻辑也不用看 * supplier_id 渠道商id */ public function actionDealWithOrder() { // 南京万达 1529 $order_main = new OrderMain(); $order_list = $order_main -> getBetweenOrder(); $transaction = Yii::$app -> db -> beginTransaction(); try { /****************有充值记录首先添加充值记录begin**********************/ $channel = new ChannelBalanceHis(); // 有充值记录 $recharge_arr = array('supplier_id' => 1529, 'create_time' => '2017-09-01 00:00:00', 'update_time' => '2017-09-01 00:00:00', 'create_user_id' => 1, 'update_user_id' => 1, 'order_id' => 0, 'pay_type' => 2, 'expect_time' => '2017-09-01 00:00:00', 'change_value' => 10000, 'balance_before' => 0, 'balance_after' => 10000, 'pay_time' => '2017-09-01 00:00:00', 'pay_status' => 2, 'pay_reason' => ''); // 新增扣款记录 if($channel -> load($recharge_arr,'') && $channel -> validate()) { if(!$channel -> save()) { throw new \Exception('新建扣款记录失败'); } } // 充值成功 修改渠道商余额 $supplier = BaseSupplierBalance::findOne(1529); $supplier -> ACCOUNT_BALANCE = $supplier['ACCOUNT_BALANCE'] + 10000 ; if(!$supplier -> update()) { throw new \Exception('新建扣款记录失败'); } /****************有充值记录首先添加充值记录end**********************/ foreach($order_list as $key => $value) { $supplier_info = BaseSupplierBalance::findOne(1529); $channel1 = new ChannelBalanceHis(); $channel2 = new ChannelBalanceHis(); if($value['ORDER_STATUS'] == 148) { // 处理无效订单 $make_order_arr = array('supplier_id' => $value['OUTSIDE_SALE_ORG_ID'], 'create_time' => $value['CREATE_TIME'], 'update_time' => $value['UPDATE_TIME'], 'create_user_id' => 1, 'update_user_id' => 1, 'order_id' => $value['ORDER_ID'], 'pay_type' => 1, 'expect_time' => $value['CREATE_TIME'], 'change_value' => $value['ORDER_PRICE'], 'balance_before' => $supplier_info['ACCOUNT_BALANCE'], 'balance_after' => $supplier_info['ACCOUNT_BALANCE'] - $value['ORDER_PRICE'], 'pay_time' => $value['CREATE_TIME'], 'pay_status' => 2, 'pay_reason' => '下单扣款'); // 新增扣款记录 if($channel1 -> load($make_order_arr,'') && $channel1 -> validate()) { if(!$channel1 -> save()) { throw new \Exception('新建扣款记录失败'); } } // 扣款回退 $back_order_arr = array('supplier_id' => $value['OUTSIDE_SALE_ORG_ID'], 'create_time' => $value['UPDATE_TIME'], 'update_time' => $value['UPDATE_TIME'], 'create_user_id' => 1, 'update_user_id' => 1, 'order_id' => $value['ORDER_ID'], 'pay_type' => 2, 'expect_time' => $value['UPDATE_TIME'], 'change_value' => $value['ORDER_PRICE'], 'balance_before' => $supplier_info['ACCOUNT_BALANCE'] - $value['ORDER_PRICE'], 'balance_after' => $supplier_info['ACCOUNT_BALANCE'], 'pay_time' => $value['UPDATE_TIME'], 'pay_status' => 2, 'pay_reason' => '扣款回退'); if($channel2 -> load($back_order_arr,'') && $channel2 -> validate()) { if(!$channel2 -> save()) { throw new \Exception('新建回退记录失败'); } } }else { // 处理有效订单 $make_order_arr = array('supplier_id' => $value['OUTSIDE_SALE_ORG_ID'], 'create_time' => $value['CREATE_TIME'], 'update_time' => $value['UPDATE_TIME'], 'create_user_id' => 1, 'update_user_id' => 1, 'order_id' => $value['ORDER_ID'], 'pay_type' => 1, 'expect_time' => $value['CREATE_TIME'], 'change_value' => $value['ORDER_PRICE'], 'balance_before' => $supplier_info['ACCOUNT_BALANCE'], 'balance_after' => $supplier_info['ACCOUNT_BALANCE'] - $value['ORDER_PRICE'], 'pay_time' => $value['CREATE_TIME'], 'pay_status' => 2, 'pay_reason' => '下单扣款'); // 新增扣款记录 if($channel1 -> load($make_order_arr,'') && $channel1 -> validate()) { if(!$channel1 -> save()) { throw new \Exception('新建扣款记录失败'); } } // 修改渠道商余额 $supplier_info -> ACCOUNT_BALANCE = $supplier_info['ACCOUNT_BALANCE'] - $value['ORDER_PRICE']; if(!$supplier_info -> update()) { throw new \Exception('新建扣款记录失败'); } } } $transaction -> commit(); }catch (\Exception $e) { $transaction -> rollBack(); } return $this -> redirect(['/hotel/hotel/index']); } }