200], [['CREATE_TIME', 'UPDATE_TIME'], 'string', 'max' => 20], [['TOP_ORG_ID'], 'string', 'max' => 100], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'ID' => 'ID', 'RES_ID' => '资源ID', 'RES_NAME' => '资源名称', 'PARENT_ID' => '父级资源ID,若无父级资源,则为0', 'CANCEL_FLAG' => '记录有效性标记,CANCEL_FLAG=0记录有效;CANCEL_FLAG=1,记录已删除', 'IF_DISABLED' => '组织机构当前是否已作废,0未作废,1已作废', 'RES_TYPE_ID' => '资源类别,DICT_TYPE.ID', 'CREATE_USER_ID' => '代下单用户ID,BASE_USER.ID,用户A代替用户B下单,则MAIN_CREATE_USER_ID=A,CREATE_USER_ID=B', 'CREATE_TIME' => '订单创建时间,订单创建日期距2016-01-01的天数,算法用', 'UPDATE_USER_ID' => '记录最后更新用户ID', 'UPDATE_TIME' => '记录最后更新时间', 'AREA_ID' => '站点应用POI', 'TOP_ORG_ID' => 'Top Org ID', 'ZONE_MARK' => '站点或区域标志,0:站点,1:区域', ]; } /** * Function Description:通过车资源类型id获取车次资源详情 * Function Name: getBusResInfoArray * @param $bus_type_res_id * * @return array|bool|null|ActiveRecord * * @author 张帅 */ public function getBusResInfoArray($bus_type_res_id) { $result = self::find() ->select([ 'res_name',//车型名称 'seat_type' => 'parent_id',//车座类型 ]) ->where([ 'and', ['=', 'res_id', $bus_type_res_id], ['=', 'cancel_flag', 0], ['=', 'if_disabled', 0], ]) ->asArray()->one(); #region 判断车型是否存在 if(count($result) == 0){ return false; }else{ $result['total_count'] = str_replace('座','',$result['res_name']); } #endregion return $result; } /** * Function Description:获取车辆基本信息 * Function Name: getCarBaseInfo * * @return array|ActiveRecord[] * * @author 李健 */ public function getCarBaseInfo() { $select = [ 'res_id as id', 'res_name as cartype', ]; $where = ['and']; $where[] = ['=','res_type_id',69]; $where[] = ['=','cancel_flag',0]; $res = self::find()->select($select)->from(self::tableName())->where($where)->asArray()->all(); return $res; } /** * Function Description:检查站点是否存在 * Function Name: checkArea * @param $res_id * * @return array|ActiveRecord[] * * @author 李健 */ public function checkArea($res_id) { $select = [ 'area_id'=>new Expression('ifnull(area_id,0)') ]; $where = ['and',['=','res_id',$res_id]]; $res = self::find() ->select($select) ->from(self::tableName()) ->where($where) ->asArray() ->all(); return $res; } /** * Function Description:获取站点信息 * Function Name: getStationInfo * @param $res_id * * @return array|ActiveRecord[] * * @author 李健 */ public function getStationInfo($res_id) { $select = [ 'a.res_id', 'a.res_name', 'parent_area_id_list'=>new Expression("ifnull(concat(b.parent_area_id_list,'{',b.area_id,'}'),'')"), 'parent_area_name_list'=>new Expression("ifnull(concat(b.parent_area_name_list,'{',b.area_name,'}'),'')"), 'checkport_res_id'=>new Expression("ifnull(( SELECT group_concat(res_id) FROM base_resource WHERE res_type_id = 79 AND cancel_flag = 0 AND parent_id = a.res_id ),0)"), 'checkport_res_name'=>new Expression("ifnull( ( SELECT group_concat(res_name) FROM base_resource WHERE res_type_id = 79 AND cancel_flag = 0 AND parent_id = a.res_id ),'')") ]; $where = ['and',['=','a.cancel_flag',0],['=','a.res_id',$res_id]]; $res = self::find() ->select($select) ->from(self::tableName().' a') ->leftJoin(BaseAreaView::tableName().' b','a.area_id = b.area_id') ->where($where) ->asArray() ->all(); return $res; } /** * Function Description:获取酒店指定类型的子类名称 * Function Name: getHotelType * @param $res_type_id * * @return array|ActiveRecord[] * * @author 李健 */ public function getHotelType($res_type_id) { $select = [ 'res_name' ]; $where = [ 'and', ['=','cancel_flag',0], ['in','res_type_id',$res_type_id] ]; $res = self::find()->select($select)->from(self::tableName())->where($where)->asArray()->all(); return $res; } /** * Function Description:获取出发城市名字 * Function Name: getFromCities * @return array * @author 田玲菲 */ public function getFromCities(){ // $sql = 'select DISTINCT br.res_name from run_station as rs INNER JOIN base_resource as br on br.res_id = rs.station_res_id where rs.PROD_ID in (select DISTINCT rm.prod_id from run_main as rm where rm.RUN_DATE <= date_add(NOW(), interval 1 MONTH) AND rm.RUN_DATE > DATE_FORMAT(NOW(),\'%Y-%m-%d\')) AND (rs.station_inout_type < 110)'; $sql = 'SELECT DISTINCT bat.area_name FROM run_station AS rs INNER JOIN base_resource AS br ON br.res_id = rs.station_res_id left JOIN base_area as ba on br.AREA_ID = ba.ID LEFT JOIN base_area as bat on bat.ID = ba.PARENT_ID WHERE rs.PROD_ID IN (SELECT DISTINCT rm.prod_id FROM run_main AS rm WHERE rm.RUN_DATE <= date_add(NOW(), INTERVAL 1 MONTH) AND rm.RUN_DATE > DATE_FORMAT(NOW(), \'%Y-%m-%d\')) AND (rs.station_inout_type < 110)'; $res = Yii::$app->db->createCommand($sql)->queryAll(); return $res; } public function getFromCity(){ $sql = "SELECT c.AREA_NAME FROM run_main a INNER JOIN run_prod b ON a.RUN_ID = b.RUN_ID INNER JOIN base_area c ON b.START_STATION_AREA_ID = c.ID INNER JOIN opera_line e on a.PROD_ID = e.LINE_ID WHERE a.RUN_DATE <= date_add(NOW(), INTERVAL 1 MONTH) AND a.RUN_DATE > DATE_FORMAT(NOW(), '%Y-%m-%d') AND a.RUN_STATUS = 138 AND b.CANCEL_FLAG = 0 and e.LINE_TYPE = 255 GROUP BY c.AREA_NAME HAVING c.AREA_NAME not in ('上海迪士尼','上海迪士尼乐园') "; $res = Yii::$app->db->createCommand($sql)->queryAll(); return $res; } /** * Function Description:根据res_name获取res_id * Function Name: getResId * @param $res_name * @return array|null|ActiveRecord * @author 田玲菲 */ public function getResId($res_name){ $select = [ 'res_id' ]; $where = [ 'and', ['=','cancel_flag',0], ['in','res_name',$res_name] ]; $res = self::find()->select($select)->from(self::tableName())->where($where)->asArray()->one(); return $res; } /** * Function Description:获取一个月内出发的prod_id * Function Name: getProdIds * @return array * @author 田玲菲 */ public function getProdIds(){ $sql = 'select DISTINCT rm.prod_id from run_main as rm where rm.RUN_DATE <= date_add(NOW(), interval 1 MONTH) AND rm.RUN_DATE > DATE_FORMAT(NOW(),\'%Y-%m-%d\')'; $res = Yii::$app->db->createCommand($sql)->queryAll(); $data = []; if(count($res)>0){ foreach($res as $v){ $data['prod_id'][] = $v['prod_id']; } } return $data; } /** * Function Description:根据res_id和prod_id_arr获取到达的城市 * Function Name: getTocities * @param $res_id * @param $prod_arr * @return array|ActiveRecord[] * @author 田玲菲 */ public function getTocities($res_id,$prod_arr){ $select = [ 'c.res_name as toCity', 'c.create_time as preSaleStart', ]; $where = [ 'and', ['=','c.cancel_flag',0], ['=','b.station_res_id',$res_id], ['>','a.STATION_INOUT_TYPE',108], ['in','a.PROD_ID',$prod_arr], ['>','a.CREATE_TIME',date("Y-m",strtotime("-3 month"))], ]; $res = self::find()->select($select)->from(RunStation::tableName() .' as a') ->leftJoin(RunStation::tableName() . ' as b','a.PROD_ID = b.PROD_ID AND a.STATION_ORDER_ID > b.STATION_ORDER_ID')->leftJoin(self::tableName() .' as c','c.RES_ID = a.STATION_RES_ID') ->where($where)->distinct() ->createCommand() ->asArray()->all(); return $res; } //根据城市名字获取下属res_id public function getResIdByName($name){ $select = [ 'br.res_id', ]; $where = [ 'and', ['=','bat.AREA_NAME',$name], ['=','br.CANCEL_FLAG',0], ['=','br.RES_TYPE_ID',24], ]; $res = self::find()->select($select)->from(self::tableName() .' as br')->innerJoin(BaseArea::tableName().' as ba','br.AREA_ID = ba.id')->innerJoin(BaseArea::tableName().' as bat','ba.PARENT_ID = bat.id')->where($where)->asArray()->all(); return $res; } //获取近期出发的res_id public function getRecentResIds(){ $sql = 'SELECT DISTINCT DISTINCT br.res_id FROM run_station AS rs INNER JOIN base_resource AS br ON br.res_id = rs.station_res_id WHERE rs.PROD_ID IN ( SELECT DISTINCT rm.prod_id FROM run_main AS rm WHERE rm.RUN_DATE <= date_add(NOW(), INTERVAL 1 MONTH) AND rm.RUN_DATE > DATE_FORMAT(NOW(), \'%Y-%m-%d\') ) AND (rs.station_inout_type < 110);'; $res = Yii::$app->db->createCommand($sql)->queryAll(); $data = []; if(count($res)>0){ foreach($res as $v){ $data['res_id'][] = $v['res_id']; } } return $data; } //获取近期线路所有上下车点的城市名 public function getInOutCity($cityId){ $sql = "SELECT d.AREA_NAME toCity,MAX(a.RUN_DATE) preSaleEnd,MIN(a.RUN_DATE) preSaleStart from run_main a INNER JOIN run_prod b on a.RUN_ID = b.RUN_ID INNER JOIN base_area c on b.START_STATION_AREA_ID = c.ID INNER JOIN base_area d on b.END_STATION_AREA_ID = d.ID INNER JOIN opera_line e on a.PROD_ID = e.LINE_ID WHERE (c.parent_id = {$cityId} or c.id={$cityId}) and a.RUN_DATE <= date_add(NOW(), INTERVAL 1 MONTH) AND a.RUN_DATE > DATE_FORMAT(NOW(), '%Y-%m-%d') and a.RUN_STATUS = 138 and b.CANCEL_FLAG = 0 and e.LINE_TYPE = 255 GROUP BY d.AREA_NAME HAVING toCity not in ('上海迪士尼','上海迪士尼乐园') "; $res = Yii::$app->db->createCommand($sql)->queryAll(); return $res; } }