✨ feat(后台): 37sdk需求
This commit is contained in:
@@ -43,7 +43,7 @@ export default class GmController extends Controller {
|
||||
|
||||
public async saveGmGroupToUser() {
|
||||
const { ctx } = this;
|
||||
const {uid, group, env, isEnable} = ctx.request.body;
|
||||
ctx.body = await ctx.service.gmUser.saveGmGroupToUser(uid, group, env, isEnable);
|
||||
const {uid, group, env, isEnable, type} = ctx.request.body;
|
||||
ctx.body = await ctx.service.gmUser.saveGmGroupToUser(uid, group, env, isEnable, type);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { BACKEND_37_CODE } from '@consts';
|
||||
import { Controller } from 'egg';
|
||||
|
||||
export default class LoginController extends Controller {
|
||||
@@ -13,6 +14,18 @@ export default class LoginController extends Controller {
|
||||
ctx.body = await ctx.service.gmUser.currentUser();
|
||||
}
|
||||
|
||||
public async channelLogin() {
|
||||
const { ctx } = this;
|
||||
const { uname, time, sign } = ctx.query;
|
||||
|
||||
let result = await ctx.service.gmUser.channelLogin(uname, time, sign);
|
||||
if(result.code == BACKEND_37_CODE.SUCCESS.code) {
|
||||
ctx.redirect(`/welcome?token=${result.data.token}`);
|
||||
} else {
|
||||
ctx.body = result.code;
|
||||
}
|
||||
}
|
||||
|
||||
public async changeMyPass() {
|
||||
const { ctx } = this;
|
||||
const {uid, password} = ctx.request.body;
|
||||
|
||||
@@ -3,13 +3,14 @@ import { GMGroupModel } from '@db/GMGroup'
|
||||
import { GMRecordModel } from '@db/GMRecord'
|
||||
import { GM_API_TYPE, STATUS } from '@consts';
|
||||
import { gameData } from '@pubUtils/data';
|
||||
import { nowSeconds } from '@pubUtils/timeUtil';
|
||||
|
||||
module.exports = () => {
|
||||
return async function tokenParser(ctx, next) {
|
||||
|
||||
if (!ctx.request.headers || !ctx.request.headers.token) {
|
||||
console.error('token not found');
|
||||
ctx.body = ctx.service.utils.resResult(STATUS.WRONG_PARMS);
|
||||
ctx.body = ctx.service.utils.resResult(STATUS.TOKEN_ERR);
|
||||
return;
|
||||
}
|
||||
const user = await GMUserModel.getGmAccountByToken(ctx.request.headers.token);
|
||||
@@ -18,6 +19,11 @@ module.exports = () => {
|
||||
ctx.body = ctx.service.utils.resResult(STATUS.TOKEN_ERR);
|
||||
return;
|
||||
}
|
||||
if((user?.expireTime||0) < nowSeconds()) {
|
||||
ctx.body = ctx.service.utils.resResult(STATUS.TOKEN_ERR);
|
||||
return;
|
||||
}
|
||||
|
||||
const url = ctx.request.url;
|
||||
let dicApi = gameData.apiByUrl.get(url);
|
||||
if(!dicApi) {
|
||||
|
||||
@@ -8,6 +8,7 @@ export default (app: Application) => {
|
||||
router.post('/api/login/account', controller.login.login);
|
||||
router.post('/api/login/changeMyPass', tokenParser, controller.login.changeMyPass);
|
||||
router.post('/api/currentUser', tokenParser, controller.login.currentUser);
|
||||
router.get('/api/login/channel', controller.login.channelLogin);
|
||||
router.post('/api/upload/hotupdate', tokenParser, controller.upload.upload);
|
||||
router.post('/api/upload/uploadjson', tokenParser, controller.upload.uploadJson);
|
||||
router.post('/api/upload/reloadresource', tokenParser, controller.upload.reloadResource);
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
import { GMUserModel } from '@db/GMUser';
|
||||
import { GMGroupModel } from '@db/GMGroup';
|
||||
import { Service } from 'egg';
|
||||
import { STATUS } from '@consts';
|
||||
import { BACKEND_37_CODE, SDK_37_CONST, STATUS } from '@consts';
|
||||
import { gameData } from '@pubUtils/data';
|
||||
import { nowSeconds } from '@pubUtils/timeUtil';
|
||||
import { isNumber } from 'util';
|
||||
import { get37BackendMd5Sign } from '@pubUtils/sdkUtil';
|
||||
|
||||
/**
|
||||
* Test Service
|
||||
@@ -26,6 +29,9 @@ export default class GMUsers extends Service {
|
||||
if(!user.isEnable) {
|
||||
return ctx.service.utils.resResult(STATUS.GM_NO_AUTHORITY_GET);
|
||||
}
|
||||
if(user.type != 1) {
|
||||
return ctx.service.utils.resResult(STATUS.GM_USER_TYPE_ERR);
|
||||
}
|
||||
let group = new Array();
|
||||
if(user.groupId != undefined) {
|
||||
let g = await GMGroupModel.getGroupById(user.groupId);
|
||||
@@ -53,6 +59,39 @@ export default class GMUsers extends Service {
|
||||
return ctx.service.utils.resResult(STATUS.SUCCESS, { user: ctx.user, group });
|
||||
}
|
||||
|
||||
public async channelLogin(uname: string, _time: string, sign: string) {
|
||||
const {ctx} = this;
|
||||
let time = parseInt(_time);
|
||||
if(!uname || !time || !isNumber(time) || !sign) {
|
||||
return ctx.service.utils.resResult(BACKEND_37_CODE.WRONG_PARAM);
|
||||
}
|
||||
|
||||
if(nowSeconds() - time > 15 * 60) {
|
||||
return ctx.service.utils.resResult(BACKEND_37_CODE.TIME_IS_EXPIRED);
|
||||
}
|
||||
|
||||
let checkResult = this.check37Sign({ uname, time, sign });
|
||||
if(!checkResult) {
|
||||
return ctx.service.utils.resResult(BACKEND_37_CODE.MD5_ERR);
|
||||
}
|
||||
let token = ctx.service.utils.genCode(256);
|
||||
let user = await GMUserModel.channelLogin(uname, token);
|
||||
if(!user) {
|
||||
return ctx.service.utils.resResult(BACKEND_37_CODE.USER_NOT_FOUND);
|
||||
}
|
||||
if(user.type != 2) {
|
||||
return ctx.service.utils.resResult(BACKEND_37_CODE.LOGIN_FAIL);
|
||||
}
|
||||
return ctx.service.utils.resResult(BACKEND_37_CODE.SUCCESS, { token: user.token });
|
||||
}
|
||||
|
||||
private check37Sign(params: { uname: string, time: number, sign: string }) {
|
||||
let sign = get37BackendMd5Sign(params, SDK_37_CONST.BACKEND_KEY);
|
||||
console.log('******37Sign', sign, params.sign, sign == params.sign);
|
||||
return sign == params.sign;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 修改我的密码
|
||||
*/
|
||||
@@ -196,8 +235,8 @@ export default class GMUsers extends Service {
|
||||
/**
|
||||
* 用户组添加接口
|
||||
*/
|
||||
public async saveGmGroupToUser(uid: number, groupId: number, envs: string[], isEnable: boolean) {
|
||||
await GMUserModel.updateInfo(uid, { groupId, envs, isEnable });
|
||||
public async saveGmGroupToUser(uid: number, groupId: number, envs: string[], isEnable: boolean, type: number) {
|
||||
await GMUserModel.updateInfo(uid, { groupId, envs, isEnable, type });
|
||||
return this.ctx.service.utils.resResult(STATUS.SUCCESS);
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user