/**
* @author wgm
* @date 2019/12/31 10:06
* @description 删除当前登录用户(只在测试环境下有效)
* @param {String} userName 用户名
*/
const deleteCurUser = async (userName) => {
if (notTest) return new ErrorMode(deleteUserFailInfo) //只能在测试环境下删除用户(notTest算业务逻辑判断, 学生认为应写在controller层)
//下面这句已经在/api/user/login接口判断过了, 还要不要再判断一下, 防止黑客跳过login接口和test环境??
const userInfo = await getUserInfo(userName); //中间件checkLogin只是判断redis. getUserInfo是判断数据库mysql.
if (!userInfo) return new ErrorMode(registerUserNameNotExistInfo) //用户名未存在
//因为之前老师在增加用户的时候也写了try-catch, 学生认为除查询外的增改删操作数据库都容易意外报错
try {
const result = await deleteUser(userName)
if (result) return new SuccessModel() //删除已登录用户成功
return new ErrorMode(deleteUserFailInfo) //删除已登录用户失败
} catch (e) {
console.error(e)
return new ErrorMode(deleteUserFailInfo) //当删除用户过程中,出现错误的时候
}
}