[ 'class' => TimestampBehavior::className(), 'createdAtAttribute' => 'created_at', 'updatedAtAttribute' => 'updated_at', ] ]; } /** * 读取系统设置 * @param int $readCache 1-读取缓存; 0-直接读取数据库 * @return array|mixed|null|ActiveRecord */ private static function getSystemSetting() { $redis = Yii::$app->redis; $currentTime = time(); // 缓存设置信息未过期, 并且系统设置表自缓存依赖未被更新过 if ($redis->exists(RedisConfig::KEY_SYSTEM_SETTING)) { $setting = json_decode($redis->get(RedisConfig::KEY_SYSTEM_SETTING), true); if($setting && ($setting['cache_at'] + RedisConfig::SYSTEM_SETTING_CACHE_DURATION > $currentTime)){ $setting['from'] = 'redis'; // 判断来源 return $setting; // 直接读取缓存数据 } } // 数据库读取并写入缓存 $query = SysSetting::find(); $query->where(['id'=>1]); $query->asArray(); $setting = $query->one(); if (empty($setting)) { throw new ErrorException('严重错误: 系统设置不存在!'); } $setting['cache_at'] = $currentTime; $setting['from'] = 'DB'; // 判断来源 $redis->set(RedisConfig::KEY_SYSTEM_SETTING, json_encode($setting)); return $setting; } /** * 清除系统设置缓存(后台更改设置时调用) */ public static function removeCache() { $redis = Yii::$app->redis; $redis->del(RedisConfig::KEY_SYSTEM_SETTING); } /** * 获取当前上门费 * @return int|mixed */ public static function getDoorFee($city = '') { if ('' == $city) { return self::getDefaultDoorFee(); } $row = RegionFeeSetting::findOne (['city'=> $city ]); if($row){ return $row['door_fee']; }else{ return self::getDefaultDoorFee(); } } // 获取系统默认的上门费 private static function getDefaultDoorFee() { return Yii::$app->params['DEFAULT_DOOR_FEE']; } /** * 获取免费保修期(天) * @return int|mixed */ public static function getGuranteeTime() { $setting = self::getSystemSetting(); if (empty($setting)) { return self::DEFAULT_GURANTEE_TIME; } return $setting['gurantee_time']; } /** * 获取二维码域名 * @return int|mixed */ public static function getQrcodeDomain() { $setting = self::getSystemSetting(); return $setting['qrcode_domain']; } /** * 获取极窝二维码域名 * @return int|mixed */ public static function getJiwoQrcodeDomain() { $setting = self::getSystemSetting(); return $setting['jiwo_qrcode_domain']; } /** * 获取订单实时轮询间隔(秒) * @return int|mixed */ public static function getOrderPollingInterval() { $setting = self::getSystemSetting(); if (empty($setting)) { return self::DEFAULT_ORDER_POLLING_INTERVAL; } return $setting['order_polling_interval']; } /** * 获取用户每日取消订单数量上限 * @return int|mixed */ public static function getUserCancelOrderLimitPerDay() { $setting = self::getSystemSetting(); return $setting['user_cancel_order_limit_per_day']; } /** * 获取用户每日下单数量上限 * @return int|mixed */ public static function getUserOrderLimitPerDay() { $setting = self::getSystemSetting(); return $setting['user_order_limit_per_day']; } /** * 获取客服电话 * @return int|mixed */ public static function getServicePhone() { $setting = self::getSystemSetting(); return $setting['service_phone']; } /** * 获取是否启用更多分类 * @return int|mixed */ public static function getIsMoreDeviceEnable() { $setting = self::getSystemSetting(); return $setting['is_more_device_enable']; } /** * 获取是否启用支付测试模式 * @return int|mixed */ public static function getIsPayTestMode() { $setting = self::getSystemSetting(); return $setting['is_pay_test_mode']; } /** * 获取平台抽佣比例 * @return int|mixed */ public static function getCommissionRatio() { $setting = self::getSystemSetting(); return $setting['commission_ratio']; } /** * 获取配件费抽佣比例 * @return int|mixed */ public static function getPartsCommissionRatio() { $setting = self::getSystemSetting(); return $setting['parts_commission_ratio']; } /** * 是否启用通知栏 * @return int|mixed */ public static function getIsNoticeEnable() { $setting = self::getSystemSetting(); return $setting['is_notice_enable']; } /** * 是否允许关闭通知栏 * @return int|mixed */ public static function getCanCloseNotice() { $setting = self::getSystemSetting(); return $setting['can_close_notice']; } /** * 消息推送模式 * @return int|mixed */ public static function getMessagePushMode() { $setting = self::getSystemSetting(); return $setting['msg_push_mode']; } /** 检查客户端维护状态 * @return bool */ public static function checkClientSiteStop() { $stopInfo = self::getClientSiteInfo(); return $stopInfo['stop']; } public static function getClientSiteInfo() { $stopInfo = Yii::$app->params['STOP_SITES']; return $stopInfo; } /** * 获取系统设置的质保联系时间 * 默认24小时 */ public static function getAppealDoorHours() { $settings = self::getSystemSetting(); $appealDoorHours = isset($settings['appeal_door_hours']) && !empty($settings['appeal_door_hours']) ? $settings['appeal_door_hours'] : 24; return $appealDoorHours; } /** * 获取系统设置质保处理周期 * 默认48小时 */ public static function getAppealDealHours() { $settings = self::getSystemSetting(); $appealDealHours = isset($settings['appeal_deal_hours']) && !empty($settings['appeal_deal_hours']) ? $settings['appeal_deal_hours'] : 48; return $appealDealHours; } /** * 获取规定上门耗时 * 默认2小时 */ public static function getStandardDoorHours() { $settings = self::getSystemSetting(); $appealDoorHours = isset($settings['standard_door_hours']) && !empty($settings['standard_door_hours']) ? $settings['standard_door_hours'] : 2; return $appealDoorHours; } /** * 获取免责取消订单时间 * 默认20分钟 */ public static function getDisclaimCancelTime() { $settings = self::getSystemSetting(); $appealDoorHours = isset($settings['disclaim_cancel_time']) && !empty($settings['disclaim_cancel_time']) ? $settings['disclaim_cancel_time'] : 20; return $appealDoorHours; } /** * 获取系统设置的具体参数 * @param $field 字段 * @return value */ public static function getSysSettingFieldValue($field) { $setting = self::getSystemSetting(); if (empty($setting) || empty($field) || !isset($setting[$field])) { return false; } return $setting[$field]; } /** * 工程师退款是否退上门费 * @return int|mixed */ public static function getRefundDoorFee() { $setting = self::getSystemSetting(); return (isset($setting['refund_door_fee']) && $setting['refund_door_fee'] == 1) ? true : false; } /** * 是否开启百度身份证文字识别 * @return int|mixed */ public static function getBdocrCheckOpen() { $setting = self::getSystemSetting(); return (isset($setting['bdocr_check_open']) && $setting['bdocr_check_open'] == 1) ? true : false; } /** * 获取 实名认证身份证电子图片和头像通过匹配度 * @return int|mixed */ public static function getRealnameAuthPassScore() { $setting = self::getSystemSetting(); if (empty($setting) && !isset($setting['realname_auth_pass_score'])) { return self::DEFAULT_REALNAME_AUTH_PASS_SCORE; } return $setting['realname_auth_pass_score']; } /** * 是否保存派单记录到数据库 * @return int|mixed */ public static function getIsSaveDispatchOrderRecord() { $setting = self::getSystemSetting(); return (isset($setting['is_save_dispatch_order_record']) && $setting['is_save_dispatch_order_record'] == 1) ? true : false; } }