🐞 fix(37需求): 注销冷却提示需求
This commit is contained in:
@@ -56,6 +56,7 @@ export const STATUS = {
|
|||||||
SERVER_STOP_REGISTER: { code: 10020, simStr: '服务器已停止注册' },
|
SERVER_STOP_REGISTER: { code: 10020, simStr: '服务器已停止注册' },
|
||||||
ROLE_CLOSE_TIME_OVER: { code: 10021, simStr: '该账号已注销不可再取消' },
|
ROLE_CLOSE_TIME_OVER: { code: 10021, simStr: '该账号已注销不可再取消' },
|
||||||
ROLE_CLOSED: { code: 10022, simStr: '该账号已注销' },
|
ROLE_CLOSED: { code: 10022, simStr: '该账号已注销' },
|
||||||
|
ROLE_CLOSE_COOL_DOWN: { code: 10023, simStr: '注销冷却中' },
|
||||||
// 战斗相关状态 20000 - 29999
|
// 战斗相关状态 20000 - 29999
|
||||||
// 战斗通用 20000 - 20099
|
// 战斗通用 20000 - 20099
|
||||||
BATTLE_MISS_INFO: { code: 20001, simStr: '缺少关卡信息' },
|
BATTLE_MISS_INFO: { code: 20001, simStr: '缺少关卡信息' },
|
||||||
|
|||||||
@@ -357,6 +357,8 @@ export default class Role extends BaseModel {
|
|||||||
|
|
||||||
@prop({ required: true, select: false })
|
@prop({ required: true, select: false })
|
||||||
closeTime: number;
|
closeTime: number;
|
||||||
|
@prop({ required: true, select: false })
|
||||||
|
cancelCloseTime: number;
|
||||||
|
|
||||||
public static async findAllByUid(uid: number, getters = false, virtuals = true) {
|
public static async findAllByUid(uid: number, getters = false, virtuals = true) {
|
||||||
const role: RoleType[] = await RoleModel.find({ 'userInfo.uid': uid }).select('roleId roleName serverId head frame spine heads frames spines lv updatedAt createTime +closeTime').lean({ getters, virtuals });
|
const role: RoleType[] = await RoleModel.find({ 'userInfo.uid': uid }).select('roleId roleName serverId head frame spine heads frames spines lv updatedAt createTime +closeTime').lean({ getters, virtuals });
|
||||||
@@ -868,7 +870,7 @@ export default class Role extends BaseModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static async cancelCloseAccount(roleId: string, now: number) {
|
public static async cancelCloseAccount(roleId: string, now: number) {
|
||||||
let role: RoleType = await RoleModel.findOneAndUpdate({ roleId, closeTime: { $gte: now } }, { $set: { closeTime: 0 } }, { new: true }).select('roleId +closeTime').lean();
|
let role: RoleType = await RoleModel.findOneAndUpdate({ roleId, closeTime: { $gte: now } }, { $set: { closeTime: 0, cancelCloseTime: now } }, { new: true }).select('roleId +closeTime').lean();
|
||||||
return role;
|
return role;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -486,14 +486,26 @@ export default class Auth extends Service {
|
|||||||
|
|
||||||
public async closeAccount(roleId: string) {
|
public async closeAccount(roleId: string) {
|
||||||
const ctx = this.ctx;
|
const ctx = this.ctx;
|
||||||
let role = await RoleModel.closeAccount(roleId, nowSeconds() + 15 * 24 * 60 * 60);
|
let role = await RoleModel.findByRoleId(roleId, '+cancelCloseTime');
|
||||||
if(!role) return ctx.service.utils.resResult(STATUS.ROLE_NOT_FOUND);
|
if(!role) return ctx.service.utils.resResult(STATUS.ROLE_NOT_FOUND);
|
||||||
|
if(role.cancelCloseTime > 0 && role.cancelCloseTime + 24 * 60 * 60 > nowSeconds() )
|
||||||
|
return ctx.service.utils.resResult(STATUS.ROLE_CLOSE_COOL_DOWN, `注销冷却中,请${this.getCdTimeStr(role.cancelCloseTime)}后再试`);
|
||||||
|
|
||||||
|
role = await RoleModel.closeAccount(roleId, nowSeconds() + 15 * 24 * 60 * 60);
|
||||||
return ctx.service.utils.resResult(STATUS.SUCCESS, { closeTime: role.closeTime });
|
return ctx.service.utils.resResult(STATUS.SUCCESS, { closeTime: role.closeTime });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private getCdTimeStr(cancelCloseTime: number) {
|
||||||
|
let gap = cancelCloseTime + 24 * 60 * 60 - nowSeconds();
|
||||||
|
let h = Math.floor(gap/60/60);
|
||||||
|
let m = Math.floor((gap - h * 60 * 60 )/60);
|
||||||
|
let s = gap - h * 60 * 60 - m * 60;
|
||||||
|
return `${h}小时${m}分${s}秒`
|
||||||
|
}
|
||||||
|
|
||||||
public async cancelCloseAccount(roleId: string) {
|
public async cancelCloseAccount(roleId: string) {
|
||||||
const ctx = this.ctx;
|
const ctx = this.ctx;
|
||||||
let role = await RoleModel.cancelCloseAccount(roleId, nowSeconds() + 15 * 24 * 60 * 60);
|
let role = await RoleModel.cancelCloseAccount(roleId, nowSeconds());
|
||||||
if(!role) return ctx.service.utils.resResult(STATUS.ROLE_CLOSE_TIME_OVER);
|
if(!role) return ctx.service.utils.resResult(STATUS.ROLE_CLOSE_TIME_OVER);
|
||||||
return ctx.service.utils.resResult(STATUS.SUCCESS, { closeTime: role.closeTime });
|
return ctx.service.utils.resResult(STATUS.SUCCESS, { closeTime: role.closeTime });
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user