| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- <?php
- namespace app\index\model;
- use\think\Model;
- use think\Session;
- use think\cache\driver\Redis;
- use think\Loader;
- use think\Cache;
- use think\DB;
- class Message extends Model
- {
- /**
- * 消息接收
- */
- public function getMessage()
- {
- $code = -2;
- // 接收参数.
- $systemKey = input('post.systemKey');
- $title = input('post.title');
- $content = htmlspecialchars(input('post.content'));
- $messageVerify = input('post.messageVerify');
- if(empty($systemKey)){
- return [
- 'code' => $code,
- 'msg' => lang('EP01008'),
- 'data' => [],
- ];
- }
- if(empty($title)){
- return [
- 'code' => $code,
- 'msg' => lang('EP01010'),
- 'data' => [],
- ];
- }
- if(empty($content)){
- return [
- 'code' => $code,
- 'msg' => lang('EP01011'),
- 'data' => [],
- ];
- }
- if(empty($messageVerify)){
- return [
- 'code' => $code,
- 'msg' => lang('EP01012'),
- 'data' => [],
- ];
- }
- $getData = [
- 'platform_code' => $systemKey,
- 'messageVerify' => $messageVerify,
- ];
- // 验证传参.
- $validate = Loader::validate('Message');
- if (!$validate->scene('getMessage')->check($getData)) {
- return [
- 'code' => $code,
- 'msg' => $validate->getError(),
- 'data' => [],
- ];
- }
- // 验证token.
- $MessageVerifyWhere['message_verify'] = $messageVerify;
- $messageVerify = model('MessageVerify')->selectMessageVerify($MessageVerifyWhere);
- $messageVerify = $messageVerify['data'];
- $nowTime = strtotime(date('Y-m-d H:i:s').'-10 min');
- if (!$messageVerify || $messageVerify['message_verify_time'] < $nowTime) {
- return [
- 'code' => $code,
- 'msg' => lang('EP01003'),
- 'data' => [],
- ];
- }
- // 删除该验证缓存.
- model('MessageVerify')->delMessageVerify($MessageVerifyWhere);
- // 查询平台信息.
- $platformWhere = [
- 'platform_code' => $systemKey,
- 'platform_status' => 1,
- ];
- $platform = model('Platform')
- ->field(['platform_id', 'platform_identity'])
- ->where($platformWhere)
- ->find();
- // 查询平台订阅用户.
- $userPlatformWhere = [
- 'platform_id' => $platform['platform_id'],
- 'user_status' => 1,
- ];
- $userPlatform = model('UserPlatform')
- ->field(['a.user_identity'])
- ->alias('a')
- ->join('user b', 'a.user_identity = b.user_identity')
- ->where($userPlatformWhere)
- ->select();
- $userPlatform = array_unique($userPlatform, SORT_REGULAR);
- DB::startTrans();
- // 消息入库.
- $messageIdentity = UUID();
- $addMessageData = [
- 'message_title' => $title,
- 'message_content' => $content,
- 'message_identity' => $messageIdentity,
- 'message_time' => time(),
- 'message_ip' => $_SERVER['REMOTE_ADDR'],
- 'platform_identity' => $platform['platform_identity'],
- ];
- $addMessage = $this->insert($addMessageData);
- // 消息订阅入库.
- $addError = false;
- foreach ($userPlatform as $v) {
- $addUsrMsgData = [
- 'message_identity' => $messageIdentity,
- 'user_identity' => $v['user_identity'],
- ];
- $addUserMessage = model('MessageUser')->insert($addUsrMsgData);
- if (empty($addUserMessage) === true) {
- $addError = true;
- }
- }
- if ($addError === false && empty($addMessage) === false) {
- DB::commit();
- return [
- 'code' => 1,
- 'msg' => lang('MC01006'),
- 'data' => [],
- ];
- } else {
- DB::rollback();
- return [
- 'code' => $code,
- 'msg' => lang('EC01004'),
- 'data' => [],
- ];
- }
- }//end getMessage()
- /**
- * 消息发送
- */
- public function sendMessage()
- {
- $userToken = input('get.userToken');
- // 获取用户信息.
- $getUserInfo = model('user')->currentUser($userToken);
- $getUserInfo = $getUserInfo['data'];
- // 消息取出.
- $where['user_identity'] = $getUserInfo['userId'];
- $getMessage = model('MessageUser')
- ->field(['b.message_id', 'message_title', 'message_content', 'message_time'])
- ->alias('a')
- ->join('message b', 'a.message_identity = b.message_identity')
- ->join('platform c', 'b.platform_identity = c.platform_identity', 'left')
- ->where($where)
- ->select();
- // 消息删除.
- //model('MessageUser')->where($where)->delete();
- return [
- 'code' => 1,
- 'msg' => lang('MC01005'),
- 'data' => $getMessage,
- ];
- }//end sendMessage()
- /**
- * 获取消息发送验证
- */
- public function sendMsgVerify()
- {
- $code = -2;
- // 接收参数.
- $platformCode = input('get.platformCode');
- if(empty($platformCode)){
- return [
- 'code' => $code,
- 'msg' => lang('EP01008'),
- 'data' => [],
- ];
- }
- $getData = ['platform_code' => $platformCode];
- // 验证传参.
- $validate = Loader::validate('Message');
- if (!$validate->scene('getMessage')->check($getData)) {
- return [
- 'code' => $code,
- 'msg' => $validate->getError(),
- 'data' => [],
- ];
- }
- // 查询平台信息.
- $platformWhere = [
- 'platform_code' => $platformCode,
- 'platform_status' => 1,
- ];
- $platform = model('Platform')
- ->field(['platform_id'])
- ->where($platformWhere)
- ->find();
- if (empty($platform) === true) {
- return [
- 'code' => $code,
- 'msg' => lang('EC01002'),
- 'data' => [],
- ];
- }
- // 生成验证.
- $messageVerify = randomPassword();
- $verifyData = [
- 'message_verify_time' => time(),
- 'message_verify' => $messageVerify,
- ];
- $addMessageVerify = model('MessageVerify')->addMessageVerify($verifyData);
- return [
- 'code' => 1,
- 'msg' => lang('MC01005'),
- 'data' => ['messageVerify' => $messageVerify],
- ];
- }//end sendMsgVerify()
- }
|