校友录小程序开发笔记三十:用户认证与审核方案
整体说明
-
小程序校友数据基母校开发。由于历史数据繁多,数据库中难免存在疏漏。若无法成功认证身份,请您提交人工审核后耐心等待,或联系校友会由管理员手动审核。
-
校友数据库目前只收录建院以来全日制本科生、研究生数据,暂不支持教职工、附中、继续教育学院等部门进行认证。未收录部分已纳入系统后期开发计划,敬请期待。
-
目前在校学生可以正常认证登录,校友类型显示为“在校生”,在校生将在毕业后由校友会统一转换为校友身份。
-
海外手机号、非大陆学籍校友可能会出现身份认证不成功的情况,请电话联系校友会,由管理员手动认证。
-
所有校友数据信息将按照法律规定严格保密,不提供给任何第三方,也不用于任何商业目的。
注册与认证模块
进入小程序后,依次点击“我的”-“点击登录账号”(蓝色线框处)进入校友身份认证环节

认证界面如下图所示,已在完成注册认证的校友,请直接点击图标即可一键完成认证注册步骤

若不方便进行实名信息认证,可点击下方人工认证,选择对应校友类型填写验证信息。

相关表
UserModel.DB_STRUCTURE = {
USER_ID: 'string|true',
USER_NAME: 'string|true|comment=用户姓名',
USER_PIC: 'string|true|comment=用户头像',
USER_PIC_CLOUD_ID: 'string|false|comment=用户头像云存储地址',
USER_PHONE_CHECKED: 'string|true|comment=已校验的手机号码',
USER_MINI_QRCODE: 'object|false|comment=小程序码地址{url,cloudId}',
USER_MINI_OPENID: 'string|true|comment=小程序openid',
USER_UNIONID: 'string|false|comment=微信开放平台unionid',
USER_WX_OPENID: 'string|false|comment=公众号openid',
USER_IS_SUBSCRIBE: 'int|true|default=0|comment=公众号是否关注 0/1',
USER_SUBSCRIBE_TIME: 'int|true|default=0|comment=公众号关注时间',
USER_IS_MASK: 'int|true|default=0|comment=是否马甲 0/1',
USER_STATUS: 'int|true|default=1|comment=状态 0=待审核,1=正常,8=VIP(###1-8为正常区间),9=禁用, 10=已删除',
USER_INVITE_ID: 'string|false|comment=邀请码',
USER_TYPE: 'int|true|default=0|comment=用户类型 0=店主',
USER_CHECK_PIC: 'array|false|default=[]|comment=审核图片 对象数组[{cloudId,url}]',
USER_SEX: 'int|true|default=1|comment=性别 1=男,2=女',
USER_MOBILE: 'string|false|comment=联系电话',
USER_WECHAT: 'string|false|comment=微信',
USER_COMPANY: 'string|false|comment=当前单位',
USER_CITY: 'string|false|comment=当前城市',
USER_DESC: 'string|false|comment=自我介绍',
USER_RESOURCE: 'string|false|comment=可提供资源',
USER_NEED: 'string|false|comment=需求',
USER_SUPP: 'string|false|comment=注册补充说明',
USER_ALL_MONEY: 'int|true|default=0|comment=用户总金币',
USER_NOW_MONEY: 'int|true|default=0|comment=已使用金币',
USER_FAV_CNT: 'int|true|default=0|comment=被收藏人数',
USER_INVITE_CNT: 'int|true|default=0|comment=邀请人数',
USER_WX_GENDER: 'int|true|default=0|comment=微信性别 0=未定义,1=男,2=女',
USER_WX_AVATAR_URL: 'string|false|comment=微信头像链接',
USER_WX_NICKNAME: 'string|false|comment=微信昵称',
USER_WX_LANGUAGE: 'string|false|comment=微信语言',
USER_WX_CITY: 'string|false|comment=微信城市',
USER_WX_PROVINCE: 'string|false|comment=微信省份',
USER_WX_COUNTRY: 'string|false|comment=微信国家',
USER_WX_UPDATE_TIME: 'int|false|comment=微信信息更新时间',
USER_LOGIN_CNT: 'int|true|default=0|comment=登陆次数',
USER_LOGIN_TIME: 'int|false|comment=最近登录时间',
USER_ADD_TIME: 'int|true',
USER_ADD_IP: 'string|false',
USER_EDIT_TIME: 'int|true',
USER_EDIT_IP: 'string|false',
}
相关代码
async register(userId, {
phone,
formData,
inviteData,
wechatData
}) {
// ### 判断openid唯一性
let whereCnt = {
USER_MINI_OPENID: userId
}
let cnt = await UserModel.count(whereCnt);
if (cnt) {
// 已经存在
return await this.login(userId);
}
let wherePhone = {
USER_PHONE_CHECKED: phone
}
let cntPhone = await UserModel.count(wherePhone);
if (cntPhone)
this.AppError('该手机号已经注册,请更换手机号码');
// 判断邀请信息
let inviteId = '';
if (inviteData && inviteData.code) {
let where = {
USER_ID: inviteData.code,
USER_STATUS: UserModel.STATUS.COMM
}
let parentUser = await UserModel.getOne(where, 'USER_MINI_OPENID');
if (parentUser) inviteId = parentUser.USER_MINI_OPENID;
}
// 取得系统配置
let setup = await SetupModel.getOne({}, 'SETUP_REG_CHECK,SETUP_TITLE');
if (!setup)
this.AppError('系统故障');
// 表单值
let data = {};
// 设定值
data.USER_PHONE_CHECKED = phone; // 已校验的手机号码
data.USER_PIC = wechatData.avatarUrl; //默认头像
if (wechatData.unionId)
data.USER_UNIONID = wechatData.unionId;
data.USER_MINI_OPENID = userId;
data.USER_INVITE_ID = inviteId;
// 是否审核
data.USER_STATUS = (setup.SETUP_REG_CHECK == 1) ? UserModel.STATUS.UNUSE : UserModel.STATUS.COMM;
// 保存用户数据
this.fmtUserFormData(data, formData);
// 审核补充说明
data.USER_SUPP = formData.supp;
// 更新时间
data.USER_LOGIN_TIME = this._timestamp;
// 微信值
data.USER_WX_GENDER = wechatData.gender;
data.USER_WX_AVATAR_URL = wechatData.avatarUrl;
data.USER_WX_NICKNAME = wechatData.nickName;
data.USER_WX_LANGUAGE = wechatData.language;
data.USER_WX_CITY = wechatData.city;
data.USER_WX_PROVINCE = wechatData.province;
data.USER_WX_COUNTRY = wechatData.country;
data.USER_WX_UPDATE_TIME = this._timestamp;
await UserModel.insert(data);
// 异步生成小程序码
this.genMiniQr(userId);
// 异步统计邀请
if (inviteId) this.statMoney(inviteId);
// 判断是否要等待审核
if (setup.SETUP_REG_CHECK == 1) {
let res = {
code: 'CODE_WAITCHECK',
userId
}
return res;
} else {
// 异步消息提醒
let msgService = new MsgService();
msgService.sendRegOkMsg(userId);
}
return await this.login(userId);
}

浙公网安备 33010602011771号