Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 
 
 

204 rindas
6.7 KiB

  1. <?php
  2. namespace backend\modules\hotel\models;
  3. use Yii;
  4. use yii\db\ActiveRecord;
  5. use yii\db\Exception;
  6. /**
  7. * This is the model class for table "opera_room_distrib".
  8. *
  9. * @property integer $ID
  10. * @property integer $CREATE_USER_ID
  11. * @property string $CREATE_TIME
  12. * @property integer $UPDATE_USER_ID
  13. * @property string $UPDATE_TIME
  14. * @property integer $CANCEL_FLAG
  15. * @property string $DISTRIB_ROOM_NAME
  16. * @property integer $ROOM_ID
  17. * @property integer $DISTRIB_ID
  18. * @property string $LATEST_COMFIRM_TIME
  19. * @property integer $AUTHORITY_STATUS
  20. * @property string $CHANNEL_MAPPING_ID
  21. */
  22. class OperaRoomDistrib extends ActiveRecord
  23. {
  24. /**
  25. * @inheritdoc
  26. */
  27. public static function tableName()
  28. {
  29. return 'opera_room_distrib';
  30. }
  31. /**
  32. * @inheritdoc
  33. */
  34. public function rules()
  35. {
  36. return [
  37. [['CREATE_USER_ID', 'UPDATE_USER_ID', 'CANCEL_FLAG', 'ROOM_ID', 'DISTRIB_ID', 'AUTHORITY_STATUS'], 'integer'],
  38. [['UPDATE_TIME'], 'safe'],
  39. [['DISTRIB_ID'], 'required'],
  40. [['CREATE_TIME', 'LATEST_COMFIRM_TIME'], 'string', 'max' => 20],
  41. [['DISTRIB_ROOM_NAME'], 'string', 'max' => 255],
  42. [['CHANNEL_MAPPING_ID'], 'string', 'max' => 100],
  43. [['ROOM_ID', 'DISTRIB_ID'], 'unique', 'targetAttribute' => ['ROOM_ID', 'DISTRIB_ID'], 'message' => 'The combination of 房型ID 对应opera_hotel_room的ID and 渠道ID has already been taken.'],
  44. ];
  45. }
  46. /**
  47. * @inheritdoc
  48. */
  49. public function attributeLabels()
  50. {
  51. return [
  52. 'ID' => Yii::t('app', 'ID'),
  53. 'CREATE_USER_ID' => Yii::t('app', '记录创建用户ID'),
  54. 'CREATE_TIME' => Yii::t('app', '记录创建时间'),
  55. 'UPDATE_USER_ID' => Yii::t('app', '记录最后更新用户ID'),
  56. 'UPDATE_TIME' => Yii::t('app', '记录最后更新时间'),
  57. 'CANCEL_FLAG' => Yii::t('app', '记录有效性标记,0:记录有效;1:记录已删除'),
  58. 'DISTRIB_ROOM_NAME' => Yii::t('app', '针对渠道设置的子房型名称'),
  59. 'ROOM_ID' => Yii::t('app', '房型ID 对应opera_hotel_room的ID'),
  60. 'DISTRIB_ID' => Yii::t('app', '渠道ID'),
  61. 'LATEST_COMFIRM_TIME' => Yii::t('app', '最晚立即确认时间(即保留房库存取消时间)'),
  62. 'AUTHORITY_STATUS' => Yii::t('app', '授权状态 1:授权 0:关闭授权'),
  63. 'CHANNEL_MAPPING_ID' => Yii::t('app', '渠道直连房型ID(携程:房型ID,阿里:RP ID)'),
  64. ];
  65. }
  66. public function getOperaHotelRoom()
  67. {
  68. return $this->hasOne(OperaHotelRoom::className(), ['ID' => 'ROOM_ID']);
  69. }
  70. /**
  71. * Notes:获取所有设置过保留房失效时间的房型
  72. * User: Steven
  73. * Date: 2018/1/8
  74. * Time: 17:40
  75. * @return array|\yii\db\ActiveRecord[]
  76. */
  77. public function getNeedClearReservingRoom()
  78. {
  79. $query = self::find()->joinWith('operaHotelRoom b')->where([
  80. 'a.CANCEL_FLAG' => 0
  81. ])->from('opera_room_distrib a')->select([
  82. 'a.ROOM_ID',
  83. 'a.DISTRIB_ID',
  84. 'a.LATEST_COMFIRM_TIME',
  85. 'b.HOTEL_ID',
  86. 'b.PARENT_ROOM_TYPE',
  87. 'b.ROOM_TYPE'
  88. ]);
  89. $query->andFilterWhere(['<>', 'a.LATEST_COMFIRM_TIME', '-1'])->andFilterWhere(['<>', 'a.DISTRIB_ID', Yii::$app->params['ctrip']['supplier_id']]);
  90. // $sql = $query->createCommand()->getRawSql();
  91. $data = $query->asArray()->all();
  92. return $data;
  93. }
  94. /**
  95. * Created by PhpStorm.
  96. * NOTES:获取渠道房型信息
  97. * User: Steven
  98. * Date: 2018/4/28
  99. * Time: 9:42
  100. * Class getRoomDistrib
  101. * @param $room_id
  102. * @param $distrib_id
  103. * @return OperaRoomDistrib
  104. */
  105. public function getRoomDistrib($room_id, $distrib_id)
  106. {
  107. return self::findOne(['ROOM_ID' => $room_id, 'DISTRIB_ID' => $distrib_id, 'CANCEL_FLAG' => 0]);
  108. }
  109. /**
  110. * Des:代理通添加房型关联关系
  111. * Name: addRow
  112. * @param $data
  113. * @param $channel_arr
  114. * @author 倪宗锋
  115. */
  116. public function addRow($data, $channel_arr)
  117. {
  118. //获取cookies
  119. $cookies = Yii::$app->request->cookies;
  120. //账号权限
  121. $user_id = $cookies->getValue('user_id');
  122. foreach ($channel_arr as $channel_id) {
  123. try {
  124. $values = [
  125. 'CREATE_TIME' => date('Y-m-d H:i:s'),
  126. 'CREATE_USER_ID' => empty($user_id) ? 0 : $user_id,
  127. 'DISTRIB_ID' => $channel_id,
  128. 'DISTRIB_ROOM_NAME' => $data['DISTRIB_ROOM_NAME'],
  129. 'ROOM_ID' => $data['ROOM_ID'],
  130. 'CHANNEL_MAPPING_ID' => (string) $data['CHANNEL_MAPPING_ID']
  131. ];
  132. if (empty($basicRoomTyp) == false) {
  133. $values['base_room_is_add'] = 1;
  134. }
  135. $table = clone $this;
  136. $where = [
  137. 'ROOM_ID' => $data['ROOM_ID'],
  138. 'DISTRIB_ID' => $channel_id,
  139. 'CANCEL_FLAG' => 0
  140. ];
  141. $result = $table->findOne($where);
  142. if ($result == null) {
  143. $table->setAttributes($values);
  144. $flag = $table->save();
  145. }else{
  146. $result->setAttributes($values);
  147. $flag = $result->save();
  148. }
  149. if ($flag == false) {
  150. // $error = $result->getErrors();
  151. }
  152. } catch (Exception $e) {
  153. }
  154. }
  155. }
  156. /**
  157. * Des:修改代理通房型关联关系
  158. * Name: editRow
  159. * @param $data
  160. * @param $channel_arr
  161. * @author 倪宗锋
  162. */
  163. public function editRow($data, $channel_arr)
  164. {
  165. $params = [
  166. 'update_time' => date('Y-m-d H:i:s'),
  167. 'CHANNEL_MAPPING_ID' => $data['CHANNEL_MAPPING_ID'],
  168. 'DISTRIB_ROOM_NAME' => $data['DISTRIB_ROOM_NAME'],
  169. ];
  170. $where = [
  171. 'ROOM_ID' => $data['ROOM_ID'],
  172. 'DISTRIB_ID' => $channel_arr
  173. ];
  174. self::updateAll($params,$where);
  175. }
  176. /**
  177. * Function Description:根据渠道和渠道直连ID获取房型ID
  178. * Function Name: getRoomIdByMappingId
  179. * @param $distrib_id
  180. * @param $mapping_id
  181. *
  182. * @return mixed
  183. *
  184. * @author 娄梦宁
  185. */
  186. public function getRoomIdByMappingId($distrib_id,$mapping_id){
  187. $result=self::find()->select('ROOM_ID')->from(self::tableName())
  188. ->where(['and',['=','cancel_flag',0],['=','distrib_id',$distrib_id],['=','channel_mapping_id',$mapping_id]])
  189. ->asArray()->one();
  190. return $result['ROOM_ID'];
  191. }
  192. }