重复注册超级管理员出现错误

来源:5-7 完成注册超级管理员功能(移动端)

路在脚下_pzl

2023-03-11

问题描述:当再次注册超级管理员时,前端并未给出提示消息“无法绑定超级管理员账户”并在小程序端抛出500异常,后端执行else语句后程序终止,这是什么情况?图片描述
后端异常信息:
图片描述

register方法代码:

@Override
    public int registerUser(String registerCode, String code, String nickname, String photo) {
        //如果邀请码为000000,则代表为超级管理员
        if (registerCode.equals("000000")) {
            //查询数据库表当中是否存在超级管理员记录
            boolean bool = userDao.haveRootUser();
            if (!bool) {
                /*
                数据表当中没有超级管理员记录,则向数据表当中插入超级管理员记录
                在插入记录之前,需要把微信的临时授权字符串转换为OpenId
                 */
                //微信的临时授权字符串转换为OpenId
                String openId = getOpenId(code);
                //向HashMap当中保存数据
                HashMap param = new HashMap();
                param.put("openId", openId);
                param.put("nickName", nickname);
                param.put("photo", photo);
                param.put("role", "[0]");//0:代表超级管理员
                param.put("status", 1); //员工状态:在职
                param.put("createTime", new Date());
                param.put("root", true);
                //向数据表当中插入数据
                userDao.insert(param);
                //根据openId查找用户的主键值
                int id = userDao.searchIdByOpenId(openId);
                return id;
            } else {
                // 如果超级管理员账户已经被绑定了,则抛出异常
                    throw new EmosException("无法绑定超级管理员账号");
//              return -1;
            }
        }
        //如果邀请码不为000000,则代表普通员工注册
        //TODO 此处还有其他判断内容
        else {

        }
        return 0;

    }

疑惑:当超级管理员已经存在了,再次注册超级管理员,这抛出异常的话应该是已经结束了,程序就终止了,前端是怎么获取到这个异常消息弹到注册页面面出现面包屑提示消息的呢?

前端封装Ajax请求的时候也无法走到else语句呀,状态码500

Vue.prototype.ajax = function(url, method, data, fun) {
	uni.request({
		"url": url,
		"method": method,
		"header": {
			token: uni.getStorageSync('token')
		},
		"data": data,
		success: function(resp) {
			if (resp.statusCode == 401) {
				uni.redirectTo({
					url: '../login/login'
				});
			} else if (resp.statusCode == 200 && resp.data.code == 200) {
				let data = resp.data
				if (data.hasOwnProperty("token")) {
					console.log(resp.data)
					let token = data.token
					uni.setStorageSync("token", token)
				}
				fun(resp)
			} else {
				uni.showToast({
					icon: 'none',
					title: resp.data
				});
			}
		}
	});
}

register()方法也没有问题呀,多次测试代码复制老师的也一样

register: function() {
			let that = this;
			if (that.registerCode == null || that.registerCode.length == 0) {
				uni.showToast({
					title: '邀请码不能为空',
					icon: 'none'
				});
				return;
			} else if (/^[0-9]{6}$/.test(that.registerCode) == false) {
				uni.showToast({
					title: '邀请码必须是6为数字',
					icon: 'none'
				});
				return;
			}
			uni.login({
				provider: 'weixin',
				success: function(resp) {
					let code = resp.code;
					console.log('code:' + code);
					uni.getUserInfo({
						provider: 'weixin',
						success: function(resp) {
							let nickName = resp.userInfo.nickName;
							let avatarUrl = resp.userInfo.avatarUrl;
							// console.log(nickName);
							// console.log(avatarUrl);
							let data = {
								code: code,
								nickname: nickName,
								photo: avatarUrl,
								registerCode: that.registerCode
							};
							that.ajax(that.url.register, 'POST', data, function(resp) {
								let permission = resp.data.permission;
								uni.setStorageSync('permission', permission);
								//跳转到index页面
							});

						}
					});
				}
			});
		}
写回答

1回答

慕移动8561185

2023-03-15

请问解决了吗?我也是这个问题
0
2
慕移动8561185
回复
路在脚下_pzl
好滴谢谢!
2023-03-15
共2条回复

SpringBoot 在线协同办公小程序开发 全栈式项目实战

未来趋势型业务 + 前后端综合技术栈 + 惊艳的细节打磨

1799 学习 · 1917 问题

查看课程