123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267 |
- <?php
- /**
- * Created by PhpStorm.
- * User: lts
- * Date: 19/9/18
- * Time: 下午7:30
- */
- namespace app\common\constants;
- use think\Config;
- class Message
- {
- //region 消息中链接的类型
- #0=书籍,1=活动,2=继续阅读,3=菜单,4=其他'
- /**
- * 书籍
- */
- const MESSAGE_LINK_TYPE_BOOK = 0;
- /**
- * 活动
- */
- const MESSAGE_LINK_TYPE_ACTIVITY = 1;
- /**
- * 继续阅读
- */
- const MESSAGE_LINK_TYPE_RECENT = 2;
- /**
- * 菜单
- */
- const MESSAGE_LINK_TYPE_MENU = 3;
- /**
- * 没有url的文案
- */
- const MESSAGE_LINK_TYPE_NOURL = 4;
- /**
- * 其他
- */
- const MESSAGE_LINK_TYPE_OTHER = 5;
- /**
- * 自定义链接
- */
- const MESSAGE_LINK_TYPE_URL = 6;
- /**
- * 自定义活动
- */
- const MESSAGE_LINK_TYPE_CUSTOMIZE_ACTIVITY = 9;
- /**
- * 常用链接
- */
- const MESSAGE_LINK_TYPE_DAILY_LINK = 8;
- /**
- * 自动签到
- */
- const MESSAGE_LINK_TYPE_SIGN = 7;
- /**
- * 小程序
- */
- const MESSAGE_LINK_TYPE_MINI = 10;
- /**
- * 签到自动回复关键字
- */
- const MESSAGE_KEYWORD = '签到';
- const MESSAGE_LINK_TYPE_NAMES = [
- self::MESSAGE_LINK_TYPE_BOOK => '书籍',
- self::MESSAGE_LINK_TYPE_ACTIVITY => '活动',
- self::MESSAGE_LINK_TYPE_RECENT => '继续阅读',
- self::MESSAGE_LINK_TYPE_MENU => '菜单',
- self::MESSAGE_LINK_TYPE_NOURL => '没有url的文案',
- self::MESSAGE_LINK_TYPE_URL => '自定义链接',
- self::MESSAGE_LINK_TYPE_OTHER => '其他',
- self::MESSAGE_LINK_TYPE_CUSTOMIZE_ACTIVITY => '自定义活动',
- self::MESSAGE_LINK_TYPE_SIGN => '自动签到'
- ];
- #endregion
- #region 消息类型
- /**
- * 图文类型
- */
- const MESSAGE_TYPE_IMAGE_TEXT = 0;
- /**
- * 文字链类型
- */
- const MESSAGE_TYPE_LINK = 1;
- #endregion
- /**
- * 判断获取消息中链接的类型
- * @param $channelSchemeHost 渠道商的域名
- * @param $url
- * @return int
- */
- public static function getMessageLinkType($channelSchemeHost, $url)
- {
- $urlInfo = parse_url($url);
- $schemeHost = $urlInfo['scheme'] . '://' . $urlInfo['host'];
- $pathQuery = $urlInfo['path'];
- $pathQuery .= empty($urlInfo['query']) ? '' : '?' . $urlInfo['query'];
- $aQuery = explode('&', $urlInfo['query']);
- $referralId = 0;
- $bookId = 0;
- $type = 0;
- if (!empty($aQuery['referral_id'])) {
- $referralId = $aQuery['referral_id'];
- }
- if (!empty($aQuery['book_id'])) {
- $bookId = $aQuery['book_id'];
- }
- if ($channelSchemeHost != $schemeHost) {
- $type = self::MESSAGE_LINK_TYPE_OTHER;
- } elseif (!empty($bookId)) {
- //书籍和推广链接都归到"书籍类型"
- $type = self::MESSAGE_LINK_TYPE_BOOK;
- } elseif (strpos($pathQuery, Menu::MENU_URL_PATH_RECENT) !== false) {
- $type = self::MESSAGE_LINK_TYPE_RECENT;
- } elseif (Menu::pathQueryIsMenu($pathQuery) || !empty($referralId)) {
- $type = self::MESSAGE_LINK_TYPE_MENU;
- } elseif (strpos($pathQuery, '/s/') !== false) {
- $type = self::MESSAGE_LINK_TYPE_ACTIVITY;
- } else {
- $type = self::MESSAGE_LINK_TYPE_OTHER;
- }
- return [$type, $bookId, $referralId];
- }
- /**
- * 获取消息中链接的信息
- * @param $channelId 渠道商id
- * @param array $aMsgLinks 链接列表
- * @return array
- * 返回值属性:url type book_id referral_id book_name book_realname
- */
- public static function getMessageLinksInfo($channelId, array $aMsgLinks)
- {
- $adminConfigModel = model('AdminConfig');
- $configData = $adminConfigModel->getAdminInfoAll($channelId);
- $channelSchemeHost = Config::get('site.scheme') . '://' . $configData['appid'] .
- '.' . $configData['ophost_host'];
- $result = [];
- $referralIds = [];
- #region 初步获取连接的类型以及书籍id和推广链接id
- foreach ($aMsgLinks as $key => $msgLink) {
- list($type, $bookId, $referralId) = self::getMessageLinkType($channelSchemeHost, $msgLink);
- $result[$key] = [
- 'url' => $msgLink,
- 'type' => $type,
- 'book_id' => $bookId,
- 'referral_id' => $referralId,
- ];
- $referralIds[] = $referralId;
- }
- #endregion
- #region 通过推广链接id找到对应的书籍id
- $referralModel = model('Referral');
- $referralInfos = $referralModel->where(['id' => ['in', $referralIds]])
- ->field(['id', 'book_id'])->select();
- $refBookIds = [];
- foreach ($referralInfos as $referralInfo) {
- $refBookIds[$referralInfo['id']] = $referralInfo['book_id'];
- }
- foreach ($result as $item) {
- if (!empty($item['referral_id'])) {
- $item['book_id'] = $refBookIds[$item['referral_id']];
- }
- }
- #endregion
- #region 通过书籍id找到客显名和书籍名
- $bookIds = array_column($result, 'book_id');
- $bookModel = model('Book');
- $bookInfos = $bookModel->field(['id', 'name', 'realname'])->where(['id', ['in', $bookIds]]);
- $aBookInfos = [];
- foreach ($bookInfos as $bookInfo) {
- $aBookInfos[$bookInfo['id']] = [
- 'id' => $bookInfo['id'],
- 'name' => $bookInfo['name'],
- 'realname' => $bookInfo['realname']
- ];
- }
- foreach ($result as $item) {
- if (!empty($item['book_id'])) {
- $item['book_name'] = $aBookInfos[$item['book_id']]['name'];
- $item['book_realname'] = $aBookInfos[$item['book_id']]['realname'];
- $item['type'] = self::MESSAGE_LINK_TYPE_BOOK;
- }
- }
- #endregion
- return $result;
- }
- public static function getCustomMsgLinksInfo($channelId, array $aMsgLinks)
- {
- foreach ($aMsgLinks as $msgLink) {
- }
- }
- public static function getBooksInfo(array $bookIds)
- {
- if (empty($bookIds)) {
- return [];
- }
- #region 通过书籍id找到客显名和书籍名
- // $bookIds = array_column($result, 'book_id');
- $bookModel = model('Book');
- $bookInfos = $bookModel->field(['id', 'name', 'realname'])->whereIn('id', $bookIds)->select();
- $aBookInfos = [];
- foreach ($bookInfos as $bookInfo) {
- $aBookInfos[$bookInfo['id']] = [
- 'id' => $bookInfo['id'],
- 'name' => $bookInfo['name'],
- 'realname' => $bookInfo['realname']
- ];
- }
- return $aBookInfos;
- }
- /**
- * 获取最近阅读的全路径
- */
- public static function getRecentFullPath($channelId)
- {
- $recentUrl = getCurrentDomain($channelId, '/index/book/chapter');
- return $recentUrl;
- }
- /**
- * 获取继续阅读的全路径
- * @param int $channelId 渠道商id
- * @return string
- */
- public static function getKeepReadingFullPath($channelId)
- {
- $recentUrl = getCurrentDomain($channelId, Menu::MENU_URL_PATH_KEEPREADING);
- return $recentUrl;
- }
- }
|