feat(37需求): 注销账号

This commit is contained in:
luying
2023-04-18 16:45:39 +08:00
parent 9ac643f6fb
commit 1c18565c8d
7 changed files with 56 additions and 3 deletions

View File

@@ -72,4 +72,16 @@ export default class AccountController extends Controller {
const { roleId, magicWord } = ctx.request.body;
ctx.body = await ctx.service.auth.deleteRole(roleId, magicWord);
}
public async closeAccount() {
const { ctx } = this;
const { roleId } = ctx.request.body;
ctx.body = await ctx.service.auth.closeAccount(roleId);
}
public async cancelCloseAccount() {
const { ctx } = this;
const { roleId } = ctx.request.body;
ctx.body = await ctx.service.auth.cancelCloseAccount(roleId);
}
}

View File

@@ -23,6 +23,8 @@ export default (app: Application) => {
router.post('/user/checkversion', tokenParser, controller.game.checkVersion);
router.post('/user/checkv', tokenParser, controller.game.checkVersion); // 增加一个接口,规避 iOS 敏感词
router.post('/user/deleterole', controller.account.deleteRole);
router.post('/user/closeaccount', controller.account.closeAccount);
router.post('/user/cancelcloseaccount', controller.account.cancelCloseAccount);
router.post('/game/getserverlist', tokenParser, controller.game.getServerList);
router.post('/game/getnotice', tokenParser, controller.game.getnotice);
router.post('/gate/queryenter', tokenParser, controller.game.queryEnter);

View File

@@ -307,11 +307,14 @@ export default class Auth extends Service {
let canLogin = await this.ctx.service.utils.validateCanLogin();
if(!canLogin) return this.ctx.service.utils.resResult(STATUS.ONLINE_USER_MAX);
const role = await RoleModel.findByUid(uid, serverId);
const role = await RoleModel.findByUid(uid, serverId, 'roleId blockType +closeTime');
if (role) {
if(role.blockType == BLOCK_TYPE.BLOCK) {
return ctx.service.utils.resResult(STATUS.BLOCKED);
}
if(role.closeTime > 0 && role.closeTime < nowSeconds()) {
return ctx.service.utils.resResult(STATUS.ROLE_CLOSED);
}
return ctx.service.utils.resResult(STATUS.SUCCESS, { roleId: role.roleId });
}
return ctx.service.utils.resResult(STATUS.ROLE_NOT_FOUND);
@@ -480,5 +483,19 @@ export default class Auth extends Service {
if(!result) return ctx.service.utils.resResult(STATUS.WRONG_PARMS);
return ctx.service.utils.resResult(STATUS.SUCCESS);
}
public async closeAccount(roleId: string) {
const ctx = this.ctx;
let role = await RoleModel.closeAccount(roleId, nowSeconds() + 15 * 24 * 60 * 60);
if(!role) return ctx.service.utils.resResult(STATUS.ROLE_NOT_FOUND);
return ctx.service.utils.resResult(STATUS.SUCCESS, { closeTime: role.closeTime });
}
public async cancelCloseAccount(roleId: string) {
const ctx = this.ctx;
let role = await RoleModel.cancelCloseAccount(roleId, nowSeconds() + 15 * 24 * 60 * 60);
if(!role) return ctx.service.utils.resResult(STATUS.ROLE_CLOSE_TIME_OVER);
return ctx.service.utils.resResult(STATUS.SUCCESS, { closeTime: role.closeTime });
}
}

View File

@@ -560,7 +560,9 @@ export default class Sdk extends Service {
let redisClient: RedisClient = this.ctx.app.context.redisClient;
let servers = await redisClient.hgetallAsync(REDIS_KEY.SERVER);
let roles = await RoleModel.findAllByUid(user.uid);
let result = roles.map(role => ({
let result = roles
.filter(role => role.closeTime > 0 && role.closeTime < nowSeconds())
.map(role => ({
id: role.roleId,
name: role.roleName,
level: role.lv.toString(),