|
- <?php
-
- namespace backend\modules\api\models;
-
- use backend\modules\zzcs\models\BaseAreaView;
- use Yii;
- use yii\db\ActiveRecord;
- use yii\db\Expression;
-
- /**
- * This is the model class for table "base_resource".
- *
- * @property integer $ID
- * @property integer $RES_ID
- * @property string $RES_NAME
- * @property integer $PARENT_ID
- * @property integer $CANCEL_FLAG
- * @property integer $IF_DISABLED
- * @property integer $RES_TYPE_ID
- * @property integer $CREATE_USER_ID
- * @property string $CREATE_TIME
- * @property integer $UPDATE_USER_ID
- * @property string $UPDATE_TIME
- * @property integer $AREA_ID
- * @property string $TOP_ORG_ID
- * @property integer $ZONE_MARK
- */
- class BaseResource extends ActiveRecord
- {
- /**
- * @inheritdoc
- */
- public static function tableName()
- {
- return 'base_resource';
- }
-
- /**
- * @inheritdoc
- */
- public function rules()
- {
- return [
- [['RES_ID', 'PARENT_ID', 'CANCEL_FLAG', 'IF_DISABLED', 'RES_TYPE_ID', 'CREATE_USER_ID', 'UPDATE_USER_ID', 'AREA_ID', 'ZONE_MARK'], 'integer'],
- [['RES_NAME'], 'string', 'max' => 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;
- }
- }
|