255], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'order_id' => 'Order ID', 'order_name' => 'Order Name', 'spider_order_id' => 'Spider Order ID', 'total_money' => 'Total Money', 'category_id' => 'Category ID', 'prod_cate_id' => 'Prod Cate ID', 'prod_source' => 'Prod Source', 'prod_cnt' => 'Prod Cnt', 'sh_uid' => 'Sh Uid', 'fx_uid' => 'Fx Uid', 'start_time' => 'Start Time', 'end_time' => 'End Time', 'start_date' => 'Start Date', 'end_date' => 'End Date', 'order_status' => 'Order Status', 'update_time' => 'Update Time', 'create_time' => 'Create Time', 'delete_flag' => 'Delete Flag', 'system' => 'System', 'start_area' => 'Start Area', 'end_area' => 'End Area', 'main_user_id' => 'Main User ID', 'original_price' => 'original_price' ]; } /** * Function Description:插入主订单 * Function Name: insertOrder * @param $param_arr * * @return bool * * @author 娄梦宁 */ public function insertOrder($param_arr) { $values = [ 'total_money' => $param_arr['total_money'], 'prod_cate_id' => (int)$param_arr['pro_cate_id'], 'prod_cnt' => $param_arr['prod_cnt'], 'fx_uid' => $param_arr['fx_uid'], 'start_date' => $param_arr['start_date'], 'start_time' => $param_arr['start_time'], 'sh_uid' => $param_arr['sh_uid'], 'order_status' => 1, 'create_time' => date('Y-m-d H:i:s'), 'end_date' => date('Y-m-d', $param_arr['end_date']), 'category_id' => $param_arr['category_id'] ]; $this->attributes = $values; $res = $this->insert(); if (!$res) { return false; } else { return true; } } /** * Function Description:查询订单是否支付 * Function Name: getOrderStatus * @param $order_id * * @return array|null|\yii\db\ActiveRecord * * @author 娄梦宁 */ public function getOrderStatus($order_id) { $result = self::find()->select(['order_status']) ->from(self::tableName()) ->where(['and', ['=', 'order_id', $order_id], ['=', 'delete_flag', 0]]) ->asArray() ->one(); return $result; } /** * Des:获取订单详情 * Name: getOrderInfo * @param $order_id * @return array|null|\yii\db\ActiveRecord * @author 倪宗锋 */ public function getOrderInfo($order_id) { $result = self::find() ->from(self::tableName()) ->where(['and', ['=', 'order_id', $order_id], ['=', 'delete_flag', 0]]) ->asArray() ->one(); return $result; } /** * Function Description:分销订单列表 * Function Name: FxOrderList * @param $params array * @param $fx_uid * @return array|\yii\db\ActiveRecord[] * * @author 娄梦宁 */ public function FxOrderList($fx_uid, $params) { $where = ['and', ['=', 'a.fx_uid', $fx_uid], ['=', 'a.delete_flag', 0]]; if (!empty($params['is_refund'])) { $where[] = ['in', 'b.status', explode(',', $params['is_refund'])]; } if (!empty($params['status'])) { $where[] = ['in', 'a.order_status', explode(',', $params['status'])]; } $offset = ($params['current_page'] - 1) * $params['page_size']; $select = [ 'a.order_id',//订单ID 'a.order_status',//订单状态 'a.create_time',//创建时间 'a.total_money as order_total_money',//订单金额 'a.category_id',//订单类型ID 'a.order_name as pro_cate_name',//产品名称 'a.start_date',//出游时间 'prod_str' => new Expression("(SELECT GROUP_CONCAT(CONCAT(y.prod_name,',,',x.count) SEPARATOR '||') from order_info x LEFT JOIN prod_main y on x.prod_id = y.prod_id WHERE x.order_id = a.order_id and x.count != 0)"), 'b.status',//佣金状态 'commission_total_money' => new Expression("ifnull(b.total_money,0)"),//佣金金额 "if(b.`status`=1,'待结算',if(b.`status`=2,'已结算','已取消')) as status_desc",//佣金结算状态 'c.room_name',//房型名称 'a.prod_cnt',//产品数量 'a.end_date',//结束日期 'c.total_details',//房型名称 ]; $result = self::find()->select($select) ->from(self::tableName() . ' as a') ->leftJoin('fx_commission_info b', 'a.order_id=b.order_id') ->leftJoin('order_hotel_extra c', 'c.main_order_id = a.order_id') ->where($where) ->orderBy('a.create_time DESC') ->limit($params['page_size']) ->offset($offset) ->asArray() ->all(); return $result; } /** * Function Description:获取已完成订单 * Function Name: getFinishOrder * @param $date * * @return array|null|\yii\db\ActiveRecord * * @author 娄梦宁 */ public function getFinishOrder($date) { $result = self::find()->select(['GROUP_CONCAT(order_id) as order_arr']) ->from(self::tableName()) ->where(['and', ['=', 'order_status', 2], ['<', 'end_date', $date], ['=', 'delete_flag', 0]]) ->asArray() ->one(); return $result; } /** * Function Description:已完成订单状态变更 * Function Name: uptFinishOrder * @param $order_arr * * @return int * * @author 娄梦宁 */ public function uptFinishOrder($order_arr) { $values = [ 'order_status' => 3 ]; $count = self::updateAll($values, ['in', 'order_id', $order_arr]); return $count; } /** * Des:修改订单信息 * Name: upOrder * @param $value * @param $orderIds * @return int * @author 倪宗锋 */ public function upOrder($value, $orderIds) { $count = self::updateAll($value, ['in', 'order_id', $orderIds]); return $count; } /** * Function Description:取消超时订单 * Function Name: cancelOuttimeOrder * * @return bool * * @author 娄梦宁 */ public function cancelOuttimeOrder() { $values = [ 'order_status' => 5 ]; $time = date('Y-m-d H:i:s', strtotime('-15 minute')); $count = self::updateAll($values, ['and', ['=', 'order_status', 1], ['<', 'create_time', $time]]); return $count; } /** * Des:管理后台 订单列表 获取订单列表信息 * Name: getOrderListAdm * @param $param * @param int $type * @return array|mixed * @author 倪宗锋 */ public function getOrderListAdm($param, $type = 1) { //where条件 $where = ['and', ['!=', 'a.order_status', 1], ['!=', 'a.order_status', 5], ['=', 'a.delete_flag', 0]]; if ($param['order_id'] != '') { $where[] = ['like', 'a.order_id', $param['order_id']]; } if ($param['category_id'] != '') { $where[] = ['=', 'a.category_id', $param['category_id']]; } if ($param['create_time_start'] != '') { $where[] = ['>=', 'a.create_time', $param['create_time_start']]; } if ($param['create_time_end'] != '') { $where[] = ['<', 'a.create_time', date('Y-m-d', strtotime("{$param['create_time_end']} +1 day"))]; } if ($param['start_date_start'] != '') { $where[] = ['>=', 'a.start_date', $param['start_date_start']]; } if ($param['start_date_end'] != '') { $where[] = ['<', 'a.start_date', date('Y-m-d', strtotime("{$param['start_date_end']} +1 day"))]; } if ($param['order_status'] != '') { $where[] = ['=', 'a.order_status', $param['order_status']]; } if ($param['fx_uid'] != '') { $where[] = ['=', 'a.fx_uid', $param['fx_uid']]; } if ($param['pay_type'] != '') { $where[] = ['=', 'd.pay_type', $param['pay_type']]; } if (empty($param['user_area']) == false) { $where[] = ['=', 'g.user_area', $param['user_area']]; } //果运营主体非1或空,则读取自身对应的订单数据,如果运营主体为空,或者运营主体是1则读取订单运营主体是0或1的订单 $cookies = $_COOKIE; if (empty($cookies['user_main_corp']) == false && $cookies['user_main_corp'] != 1 && in_array(YII_ENV,['pro','dev'])) { $where[] = ['=', 'e.main_corp_id', $cookies['user_main_corp']]; } //运营负责人 if (empty($param['main_search']) == false) { $where[] = ['=', 'a.main_user_id', $param['main_search']]; } //联系人 和手机号 if (empty($param['contacts_name']) == false) { $where[] = ['like', 'f.contacts_name', $param['contacts_name']]; } if (empty($param['contacts_phone']) == false) { $where[] = ['like', 'f.contacts_phone', $param['contacts_phone']]; } if ($type == 1) {//获取count $select = ["count(1) cnt"]; $result = self::find()->select($select) ->from(self::tableName() . ' a') ->innerJoin('base_category c', ' a.category_id = c.category_id') ->innerJoin('pay_main d', ' a.order_id = d.order_id') ->leftJoin(MainCorpUser::tableName() . ' e', 'a.main_user_id=e.id') ->leftJoin(OrderContacts::tableName() . ' f', 'a.order_id=f.order_id and f.contacts_type=1') ->leftJoin(FxUser::tableName() . ' g', 'a.fx_uid=g.uid') ->where($where) ->asArray() ->one(); return $result['cnt']; } else if ($type == 3) { $select = ["count(1) cnt", "sum(total_money) total_money"]; $where[] = ['in', 'a.order_status', [2, 3]]; $result = self::find()->select($select) ->from(self::tableName() . ' a') ->innerJoin('base_category c', ' a.category_id = c.category_id') ->innerJoin('pay_main d', ' a.order_id = d.order_id') ->leftJoin(MainCorpUser::tableName() . ' e', 'a.main_user_id=e.id') ->leftJoin(OrderContacts::tableName() . ' f', 'a.order_id=f.order_id and f.contacts_type=1') ->leftJoin(FxUser::tableName() . ' g', 'a.fx_uid=g.uid') ->where($where) ->asArray() ->one(); return $result; } else {//获取列表 //查询字段 $select = [ 'a.order_id',//订单ID "a.create_time as create_order_time",//下单时间 "c.category_name as order_type_des",//订单类型 "a.order_name as book_product",//产品品类名称 "( SELECT GROUP_CONCAT(CONCAT(x.prod_name,'X',x.count) SEPARATOR ' ') from order_info x WHERE x.order_id = a.order_id GROUP BY x.order_id ) as prod_des ",//具体产品及数量 "CONCAT(a.start_date,' ',IFNULL(a.start_time,'')) as start_time",//出发时间 "(SELECT contacts_name from order_contacts where a.order_id = order_id and contacts_type=1 ) as contacts_name", "(SELECT contacts_phone from order_contacts where a.order_id = order_id and contacts_type=1) as contacts_phone", "(SELECT contacts_ID from order_contacts where a.order_id = order_id and contacts_type=1) as contacts_ID", new Expression("CASE a.order_status WHEN 1 THEN '待支付' WHEN 2 THEN '已支付' WHEN 3 THEN '已完成' WHEN 4 THEN '已退款' WHEN 5 THEN '已取消' ELSE '' END as order_status_des ") ,//订单状态名称 "a.order_status as order_status_id",//订单状态标识ID "if(d.pay_type=1,'微信',if(d.pay_type=2,'支付宝','预付款')) as pay_type_des",//支付类型名称 'order_come' => new Expression("(SELECT CONCAT(nickname,'
',phone) from fx_user where a.fx_uid = uid)"),//订单来源(分销商) "if(a.order_status in (1,2), if(a.start_date >= '" . date('Y-m-d') . "',0,1), 1) as if_can_cancel",//是否可以取消订单 'a.total_money', 'a.start_area', 'a.end_area', 'a.prod_cnt', 'a.category_id', 'a.end_time', 'system' => new Expression("if(a.system=1,'分销',if(a.system=2,'微信','官网'))"), 'user_area_name' => new Expression("(select area_name from fx_user_area where area_id = g.user_area)"), 'a.remark', "commission_amount" => new Expression("(SELECT SUM(total_money) from fx_commission_info WHERE order_id = a.order_id)") ]; $offset = ($param['current_page'] - 1) * $param['page_size']; $result = self::find()->select($select) ->from(self::tableName() . ' a') ->innerJoin('base_category c', ' a.category_id = c.category_id') ->innerJoin('pay_main d', ' a.order_id = d.order_id') ->leftJoin(MainCorpUser::tableName() . ' e', 'a.main_user_id=e.id') ->leftJoin(OrderContacts::tableName() . ' f', 'a.order_id=f.order_id and f.contacts_type=1') ->leftJoin(FxUser::tableName() . ' g', 'a.fx_uid=g.uid') ->where($where) ->orderBy('a.create_time DESC') ->offset($offset) ->limit($param['page_size']) ->asArray() ->all(); return $result; } } /* * 订单列表 */ public function AdminCommissionList($param) { //where条件 $where = ['and', ['!=', 'a.order_status', 1], ['!=', 'a.order_status', 5], ['=', 'a.delete_flag', 0], ['=', 'a.fx_uid', $param['fx_uid']]]; if ($param['order_id'] != '') { $where[] = ['like', 'a.order_id', $param['order_id']]; } if ($param['order_type_id'] != '') { $where[] = ['=', 'a.category_id', $param['order_type_id']]; } if ($param['create_order_start_date'] != '') { $where[] = ['>=', 'a.create_time', $param['create_order_start_date']]; } if ($param['create_order_end_date'] != '') { $where[] = ['<', 'a.create_time', date('y-m-d', strtotime("{$param['create_order_end_date']} +1 day"))]; } if ($param['order_status_id'] != '') { $where[] = ['=', 'a.order_status', $param['order_status_id']]; } if ($param['settlement_start_date'] != '') { $where[] = ['>=', 'a.end_date', date('Y-m-d', strtotime("{$param['settlement_start_date']} -3 day"))]; } if ($param['settlement_end_date'] != '') { $where[] = ['<', 'a.end_date', date('Y-m-d', strtotime("{$param['settlement_end_date']} -2 day"))]; } $select = [ 'a.order_id', 'a.category_id as order_type_id', new Expression("CASE a.category_id WHEN 1 THEN '车票' WHEN 2 THEN '门票' WHEN 3 THEN '酒店' ELSE '' END as order_type_des ") , 'a.create_time as create_order_date', 'a.total_money as order_price', 'a.order_status as order_status_id', new Expression("CASE a.order_status WHEN 2 THEN '已支付' WHEN 3 THEN '已完成' WHEN 4 THEN '已退款' ELSE '' END as order_status_des ") , 'date_add(a.end_date,INTERVAL 3 DAY) as settlement_order_date', 'b.total_money as all_commission_money' ]; $offset = ($param['current_page'] - 1) * $param['page_size']; $result = self::find()->select($select) ->from(self::tableName() . ' as a') ->leftJoin('fx_commission_info as b', 'a.order_id=b.order_id') ->where($where) ->orderBy('a.create_time DESC') ->offset($offset) ->limit($param['page_size']) ->asArray() ->all(); $count = self::find()->select('count(1) as count')->from(self::tableName() . ' as a')->where($where)->asArray()->one(); $count = $count['count']; return ['list' => $result, 'count' => $count]; } /** * Des:获取订单退款信息 * Name: getOrderRefund * @param $order_id * @return array * @author 倪宗锋 */ public function getOrderRefund($order_id) { $select = [ 'IFNULL(a.spider_order_id,a.order_id) as order_id', 'b.pro_cate_name', 'a.spider_order_id', 'a.start_date', 'a.start_time', 'a.category_id' ]; $result = self::find() ->select($select) ->from(OrderMain::tableName() . ' a') ->innerJoin(ProdCategory::tableName() . ' b', 'a.prod_cate_id = b.pro_cate_id') ->where(['=', 'a.order_id', $order_id]) ->asArray() ->one(); return $result; } /** * Des:判断某个产品是否存在订单 * Name: existOrder * @param $param * @return bool * @author 付泓程 */ public function existOrder($param) { $prod_cate_id = $param['prod_cate_id']; $start_date = $param['start_date']; $run_time = $param['start_time']; $small24 = $param['small24']; //是否小于0 -即提前X天。 $select = ['count(order_id) as count']; // $sql = "select count(order_id) as count from order_main where prod_cate_id = {$prod_cate_id} and start_date={$start_date} and order_status = 3 and delete_flag=0"; $where = ['and', ['=', 'a.prod_cate_id', $prod_cate_id], ['=', 'a.start_date', $start_date], ['=', 'a.order_status', 2], ['=', 'a.delete_flag', 0]]; if (!$small24) { $where[] = ['>=', 'a.start_time', $run_time]; } $result = self::find() ->select($select) ->from(OrderMain::tableName() . ' a') ->where($where) ->asArray() ->one(); $count = $result['count']; if ($count > 0) { return true; } return false; } /** * des 获取订单支付详细信息 * @param $orderId * @return array */ public function getOrderPayInfo($orderId) { $select = [ 'a.order_id', 'b.pro_cate_name', new Expression("concat(a.start_date,' ',a.start_time) as 'run_time'"), 'a.category_id', new Expression("(select category_name from base_category WHERE category_id = a.category_id) as category_name"), 'a.prod_cnt', 'a.create_time', 'a.order_status', 'a.total_money', 'c.contacts_name', 'c.contacts_phone' ]; $result = self::find() ->select($select) ->from(OrderMain::tableName() . ' a') ->innerJoin(ProdCategory::tableName() . ' b', 'a.prod_cate_id = b.pro_cate_id') ->innerJoin(OrderContacts::tableName() . ' c', 'a.order_id = c.order_id and c.contacts_type=1 ') ->where(['=', 'a.order_id', $orderId]) ->asArray() ->one(); return $result; } /** * Des:订单初始化运营负责人 * Name: bindMainCorp * @param $fx_uid * @param $main_user_id * @return int * @author 倪宗锋 */ public function bindMainCorp($fx_uid, $main_user_id) { $count = self::updateAll(['main_user_id' => $main_user_id], ['=', 'fx_uid', $fx_uid]); return $count; } /** * Des:获取酒店订单数据 * Name: getHotelOrderInfo * @param $order_id * @return array * @author 倪宗锋 */ public function getHotelOrderInfo($order_id) { $select = [ 'a.order_id', 'c.hotel_id', 'c.room_id', 'a.prod_cnt', 'a.start_date', 'a.end_date', 'a.total_money', 'b.contacts_name', 'b.contacts_phone', 'c.total_details', 'a.system' ]; $where = ['=','a.order_id', $order_id]; $getInfo = self::find()->select($select) ->from(self::tableName().' a') ->innerJoin(OrderContacts::tableName().' b','a.order_id = b.order_id and b.contacts_type=1') ->innerJoin('order_hotel_extra c','a.order_id = c.main_order_id') ->where($where) ->asArray() ->one(); return $getInfo; } }