|
- <?php
- /**
- * Created by PhpStorm.
- * User: 501810442
- * Date: 2017/8/9
- * Time: 13:16
- */
-
- namespace backend\modules\api\controllers;
-
- use backend\modules\api\logic\BaseBalance;
- use backend\modules\zzcs\logic\BaseSupplierBalance;
- use backend\modules\zzcs\models\BaseSupplier;
- use backend\modules\zzcs\models\BaseSupplierPurchase;
- use backend\modules\zzcs\models\BaseUser;
- use backend\modules\zzcs\models\ChannelBalanceHis;
- use backend\modules\zzcs\models\OperaBalanceHis;
- use backend\modules\zzcs\models\OrderMain;
- use backend\modules\zzcs\models\TailorCustomerReplyMessage;
- use yii\db\Exception;
- use yii\web\Controller;
- use Yii;
- use common\models\Msg;
-
- class BalanceController extends Controller
- {
- public $enableCsrfValidation = false;
-
- /**
- * Function Description:插入供应余额记录
- * Function Name: actionAddBalanceHis
- *
- * @return string
- *
- * @author LUOCJ
- */
- public function actionAddBalanceHis()
- {
- $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->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']);
- }
-
- }
|