uni-app 95获取群聊相关信息
Posted 2019ab
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uni-app 95获取群聊相关信息相关的知识,希望对你有一定的参考价值。
/app/model/group_user.js
// app/model/group_user.js
'use strict';
const crypto = require('crypto');
module.exports = app => {
const { STRING, INTEGER, DATE, ENUM, TEXT } = app.Sequelize;
// 配置(重要:一定要配置详细,一定要!!!)
const GroupUser = app.model.define('group_user', {
id: {
type: INTEGER(20).UNSIGNED,
primaryKey: true,
autoIncrement: true
},
user_id: {
type: INTEGER(20).UNSIGNED,
allowNull: false,
comment: '用户id',
// 定义外键(重要)
references: {
model: 'user', // 对应表名称(数据表名称)
key: 'id' // 对应表的主键
},
onUpdate: 'restrict', // 更新时操作
onDelete: 'cascade' // 删除时操作
},
group_id: {
type: INTEGER(20).UNSIGNED,
allowNull: false,
comment: '群组id',
// 定义外键(重要)
references: {
model: 'group', // 对应表名称(数据表名称)
key: 'id' // 对应表的主键
},
onUpdate: 'restrict', // 更新时操作
onDelete: 'cascade' // 删除时操作
},
nickname: {
type: STRING(30),
allowNull: false,
defaultValue: '',
comment: '在群里的昵称',
},
created_at: DATE,
updated_at: DATE
});
// 定义关联关系
GroupUser.associate = function(model){
GroupUser.belongsTo(app.model.User,{
foreignKey:'user_id'
});
};
return GroupUser;
};
app/controller/group.js
// 查看群资料
async info() {
const { ctx, app } = this;
let current_user_id = ctx.authUser.id;
// 验证参数
ctx.validate({
id: {
required: true,
type: 'int',
desc: "群组id"
}
});
let { id } = ctx.params;
// 群组是否存在
let group = await app.model.Group.findOne({
where: {
status: 1,
id
},
include: [{
model: app.model.GroupUser,
attributes: ['user_id', 'nickname'],
include: [{
model: app.model.User,
attributes: ['id', 'nickname', 'avatar', 'username']
}]
}]
});
if (!group) {
return ctx.apiFail('该群聊不存在或者已被封禁');
}
// 当前用户是否是该群成员
let index = group.group_users.findIndex(item => item.user_id === current_user_id);
if (index === -1) {
return ctx.apiFail('你不是该群成员,没有权限');
}
ctx.apiSuccess(group);
}
router.js
// 获取群资料
router.get('/group_info/:id',controller.group.info);
下图是我测试的结果
感谢大家观看,我们下次见
以上是关于uni-app 95获取群聊相关信息的主要内容,如果未能解决你的问题,请参考以下文章