| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 | 
							- <?php
 
- namespace app\admin\model\weixin;
 
- use think\Model;
 
- use addons\weixin\library\WechatService;
 
- class Reply extends Model
 
- {
 
-     // 表名
 
-     protected $name = 'weixin_reply';
 
-     
 
-     // 自动写入时间戳字段
 
-     protected $autoWriteTimestamp = false;
 
-     // 定义时间戳字段名
 
-     protected $createTime = false;
 
-     protected $updateTime = false;
 
-     protected $deleteTime = false;
 
-     // 追加属性
 
-     protected $append = [
 
-         'type_text'
 
-     ];
 
-     
 
-     public function getTypeList()
 
-     {
 
-         return ['text' => __('Text'), 'image' => __('Image'), 'news' => __('News'), 'voice' => __('Voice')];
 
-     }
 
-     public function getTypeTextAttr($value, $data)
 
-     {
 
-         $value = $value ? $value : (isset($data['type']) ? $data['type'] : '');
 
-         $list = $this->getTypeList();
 
-         return isset($list[$value]) ? $list[$value] : '';
 
-     }
 
-     /**
 
-      * 整理文本输入的消息
 
-      * @param $data
 
-      * @param $key
 
-      * @return array|bool
 
-      */
 
-     public function tidyText($data, $key)
 
-     {
 
-         $res = [];
 
-         $res['content'] = $data['content'];
 
-         return json_encode($res);
 
-     }
 
-     /**
 
-      * 整理图片资源
 
-      * @param $data
 
-      * @param $key
 
-      * @return array|bool|mixed
 
-      */
 
-     public function tidyImage($data, $key)
 
-     {
 
-         $data['src'] = $data['image'];
 
-         unset($data['image']);
 
-         $reply = self::get(['key' => $key]);
 
-         if ($reply) {
 
-             $reply['data'] = json_decode($reply['data'], true);
 
-         }
 
-         if ($reply && isset($reply['data']['src']) && $reply['data']['src'] == $data['src']) {
 
-             $res = $reply['data'];
 
-         } else {
 
-             $res = [];
 
-             //TODO 图片转media
 
-             $res['src'] = $filePath = $data['src'];
 
-             $info = pathinfo($filePath);
 
-             $trueFileName = $_SERVER['DOCUMENT_ROOT'] . '/' . $info['dirname'] . '/' . $info['basename'];
 
-             $material = WechatService::materialService()->uploadImage($trueFileName);
 
-             $res['media_id'] = $material['media_id'];
 
-         }
 
-         return json_encode($res);
 
-     }
 
-     /**
 
-      * 整理声音资源
 
-      * @param $data
 
-      * @param $key
 
-      * @return array|bool|mixed
 
-      */
 
-     public function tidyVoice($data, $key)
 
-     {
 
-         $data['src'] = $data['voice'];
 
-         unset($data['voice']);
 
-         $reply = self::get(['key' => $key]);
 
-         if ($reply) {
 
-             $reply['data'] = json_decode($reply['data'], true);
 
-         }
 
-         if ($reply && isset($reply['data']['src']) && $reply['data']['src'] == $data['src']) {
 
-             $res = $reply['data'];
 
-         } else {
 
-             $res = [];
 
-             //TODO 声音转media
 
-             $res['src'] = $filePath = $data['src'];
 
-             $info = pathinfo($filePath);
 
-             $trueFileName = $_SERVER['DOCUMENT_ROOT'] . '/' . $info['dirname'] . '/' . $info['basename'];
 
-             $material = WechatService::materialService()->uploadVoice($trueFileName);
 
-             $res['media_id'] = $material['media_id'];
 
-         }
 
-         return json_encode($res);
 
-     }
 
-     /**
 
-      * 整理图文资源
 
-      * @param $data
 
-      * @param $key
 
-      * @return bool
 
-      */
 
-     public function tidyNews($data, $key = '')
 
-     {
 
-         $newsModel = new \app\admin\model\weixin\News;
 
-         $news_id = $data['news'];
 
-         $row = $newsModel->get($news_id);
 
-         if (!$row) {
 
-             return false;
 
-         }
 
-         $data = [
 
-             'id' => $row['id'],
 
-             'title' => $row['cate_name'],
 
-             'description' => $row['description'],
 
-             'url' => $row['url'] ? $row['url'] : 'http://' . $_SERVER['HTTP_HOST'],
 
-             'image' => $row['image']
 
-         ];
 
-         if (strpos($data['image'], 'http') === false) {
 
-             $data['image'] = 'http://' . $_SERVER['HTTP_HOST'] . '/' . $data['image'];
 
-         }
 
-         return json_encode($data);
 
-     }
 
-     /**
 
-      * 获取关键字
 
-      * @param $key
 
-      * @param string $default
 
-      * @return array|\EasyWeChat\Message\Image|\EasyWeChat\Message\News|\EasyWeChat\Message\Text|\EasyWeChat\Message\Voice
 
-      */
 
-     public static function reply($key, $default = '')
 
-     {
 
-         $res = self::where('key', $key)->where('status', '1')->find();
 
-         if (empty($res)) {
 
-             $res = self::where('key', 'default')->where('status', '1')->find();
 
-         }
 
-         if (empty($res)) {
 
-             return WechatService::transfer(); // 多客服消息转发
 
-         }
 
-         $res['data'] = json_decode($res['data'], true);
 
-         if ($res['type'] == 'text') {
 
-             if (isset($res['data']['content']) && $res['data']['content']) {
 
-                 return WechatService::textMessage($res['data']['content']);
 
-             } else {
 
-                 return self::reply('default');
 
-             }
 
-         } elseif ($res['type'] == 'image') {
 
-             if (isset($res['data']['media_id']) && $res['data']['media_id']) {
 
-                 return WechatService::imageMessage($res['data']['media_id']);
 
-             } else {
 
-                 return self::reply('default');
 
-             }
 
-         } elseif ($res['type'] == 'news') {
 
-             if (isset($res['data']) && $res['data']) {
 
-                 return WechatService::newsMessage($res['data']);
 
-             } else {
 
-                 return self::reply('default');
 
-             }
 
-         } elseif ($res['type'] == 'voice') {
 
-             if (isset($res['data']['media_id']) && $res['data']['media_id']) {
 
-                 return WechatService::voiceMessage($res['data']['media_id']);
 
-             } else {
 
-                 return self::reply('default');
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |