微信小程序私信後端+tp5+數據庫

數據表SQL


SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for letter
-- ----------------------------
DROP TABLE IF EXISTS `letter`;
CREATE TABLE `letter`  (
  `wxId` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '內容utf8mb4存放emoji',
  `fromUserId` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '來自哪個用戶Id',
  `toUserId` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '發給哪個用戶Id',
  `status` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '狀態',
  `timesp` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '時間戳',
  `createAt` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '創建時間',
  `updateAt` timestamp NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
  PRIMARY KEY (`wxId`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

SET FOREIGN_KEY_CHECKS = 1;


1.發送私信功能

//發送私信  
    public function send_letter() {
        $arr = Request::instance()->post();
        $userId = $arr['userId'];//用戶Id
        $content = emoji_encode($arr['content']);//對內容進行編碼;
        $toUserId = $arr['toUserId'];
        $data = ['wxId' => get_id(), 'fromUserId' => $userId, 'content' => $content, 'toUserId' => $toUserId, 'status' => '0', 'timesp' => time(), 'createAt' => get_time()];
        $msgInstert = Db::table('letter')->insert($data);
        if ($msgInstert) {
            return getjson('1', '發送成功', '');
        } else {
            return getjson('0', '發送失敗', '');
        }
    }

2.請求私信列表

    //私信列表 
    public function letter_list() {
        $arr = Request::instance()->post();
        $userId = $arr['userId'];//用戶Id
        //這裏沒有辦法了,和網上的大神學了下寫了句原生  要是有大佬有更好的方案,可以聯繫我  QQ961052877
        $msg = Db::table('letter')->query("SELECT * FROM ( SELECT wxId, toUserId, content, status, timesp, createAt, updateAt, CASE WHEN fromUserId = '$userId' THEN '發送方' ELSE '接收方' END flag FROM li_private_letter WHERE fromUserId = '$userId' UNION SELECT wxId, fromUserId, content, status, timesp, createAt, updateAt, CASE WHEN fromUserId = '$userId' THEN '發送方' ELSE '接收方' END flag FROM li_private_letter WHERE toUserId = '$userId' ORDER BY toUserId DESC, wxId DESC ) ta GROUP BY toUserId ORDER BY wxId DESC");
        if ($msg) {
            foreach ($msg as $key => $value) {
                $msg[$key] = Db::table('letter')->where('wxId', $msg[$key]['wxId'])->find();
                if ($msg[$key]['fromUserId'] == $msg[$key]['toUserId']) {
                    unset($msg[$key]);
                } else {
                    if ($msg[$key]['fromUserId'] == $userId) {
                        $msg[$key]['userinfo'] = user_avatUrl($msg[$key]['toUserId']);
                    } else {
                        $msg[$key]['userinfo'] = user_avatUrl($msg[$key]['fromUserId']);
                    }
                    $msg[$key]['content'] = emoji_decode($msg[$key]['content']);
                }
            }
            $msg = array_values($msg);
            return getjson('1', '請求成功', $msg);
        } else {
            return getjson('0', '暫無私信', $msg);
        }
        }

3.檢索有沒有未讀私信

    //檢索有沒有未讀私信 
    public function notread_letter() {
        $arr = Request::instance()->post();
        $userId = $arr['userId'];//用戶Id
        $msg = Db::table('letter')->where('toUserId', $userId)->where('status', '0')->select();
        if ($msg) {
            return getjson('1', '有私信', '');
        } else {
            return getjson('0', '暫無私信', '');
        }
    }

4.請求一個人的私信內容

//請求一個人的私信內容 
    public function onec_letter() {
        $arr = Request::instance()->post();
        $userId = $arr['userId'];
        $fromUserId = $arr['fromUserId'];
        $page = $arr['page'];
        $check = chcheckOpenId($userId, '私信');
        if ($check == 'error')
            return getjson('0', '用戶身份非法', '');
        if ($check == 'closure')
            return getjson('0', '用戶功能封禁', '');
        if ($userId == $fromUserId) {
            $msg = Db::connect('databasetwo')->table('li_private_letter')->where('toUserId', $userId)->where('fromUserId', $fromUserId)->page($page, 15)->order('timesp desc')->select();
            if ($msg) {
                foreach ($msg as $key => $value) {
                    Log::write($msg[$key]);
                    $msg[$key]['content'] = emoji_decode($msg[$key]['content']);
                    if ($msg[$key]['status'] == '0') {
                        $msgs = Db::connect('databasetwo')->table('li_private_letter')->where('wxId', $msg[$key]['wxId'])->update(['status' => '1']);
                    } else {
                        
                    }
                }
                $brr['content'] = $msg;
                $brr['myuserinfo'] = user_avatUrl($userId);
                $brr['userinfo'] = user_avatUrl($fromUserId);
                return getjson('1', '請求成功', $brr);
            } else {
                $msg['myuserinfo'] = user_avatUrl($userId);
                return getjson('0', '暫無私信', $msg);
            }
        } else {
//
            $msg = Db::connect('databasetwo')->table('letter')->where(['toUserId' => $userId, 'fromUserId' => $fromUserId])->whereOr("fromUserId='$userId' and  toUserId='$fromUserId'")->page($page, 15)->order('timesp desc')->select();
            Log::write(Db::connect('databasetwo')->table('letter')->getLastSql());
            if ($msg) {
                foreach ($msg as $key => $value) {
                    $msg[$key]['content'] = emoji_decode($msg[$key]['content']);
                    if ($msg[$key]['status'] == '0') {
                        $msgs = Db::connect('databasetwo')->table('letter')->where('wxId', $msg[$key]['wxId'])->update(['status' => '1']);
                    } else {
                        
                    }
                }
                $brr['content'] = $msg;
                $brr['myuserinfo'] = user_avatUrl($userId);//自己的頭像
                $brr['userinfo'] = user_avatUrl($fromUserId);//對話者的頭像
                return getjson('1', '請求成功', $brr);
            } else {
                $msg['myuserinfo'] = user_avatUrl($userId);
                return getjson('0', '暫無私信', $msg);
            }
        }
    }

getjson看這裏:https://mp.csdn.net/mdeditor/89387016#
emoji看這裏:https://mp.csdn.net/mdeditor/89422148#

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章