diff --git a/game-server/app/servers/connector/handler/entryHandler.ts b/game-server/app/servers/connector/handler/entryHandler.ts index 6a43674b4..ba6cfec7f 100644 --- a/game-server/app/servers/connector/handler/entryHandler.ts +++ b/game-server/app/servers/connector/handler/entryHandler.ts @@ -1,6 +1,6 @@ import { STATUS } from './../../../consts/statusCode'; import { RoleModel, RoleType } from './../../../db/Role'; -import { UserModel } from '../../../db/User'; +import { UserModel, UserType } from '../../../db/User'; import { GMUserModel } from '../../../db/GMUser'; import { Application, HandlerService, pinus, } from 'pinus'; import { FrontendSession } from 'pinus'; @@ -68,7 +68,7 @@ export class EntryHandler { } let serverName = this.app.getServerId(); await roleLogin(role.roleId, user.userCode, serverName, user.pkgName, role.createTime); // 保存在线用户 - await this.addSession(role, session); + await this.addSession(user, role, session); saveLoginAndOutLog(LOG_TYPE.LOGIN, session); addRoleToSysChannel(role.roleId, self.app.get('serverId'), role.serverId); @@ -99,7 +99,7 @@ export class EntryHandler { return resResult(STATUS.SUCCESS, { todayZeroPoint }); } - async addSession(role: RoleType, session: FrontendSession) { + async addSession(user: UserType, role: RoleType, session: FrontendSession) { const self = this; let ip = session.remoteAddress.ip.replace('::ffff:', ''); @@ -115,6 +115,7 @@ export class EntryHandler { session.set('guildCode', role.guildCode); session.set('ip', ip); session.set('vipStartTime', role.vipStartTime||0); + session.set('channel', user.channelInfo?.platformAppid||'pc'); session.push('userid', () => { }); session.push('sid', () => { }); session.push('roleId', () => { }); @@ -126,6 +127,7 @@ export class EntryHandler { session.push('blockType', () => { }); session.push('ip', () => { }); session.push('vipStartTime', () => { }); + session.push('channel', () => { }); // console.log(role.guildCode) // session.push('rid', function (err) { // if (err) { diff --git a/game-server/app/servers/gm/handler/gmHandler.ts b/game-server/app/servers/gm/handler/gmHandler.ts index 520de69d5..6608a06bd 100644 --- a/game-server/app/servers/gm/handler/gmHandler.ts +++ b/game-server/app/servers/gm/handler/gmHandler.ts @@ -1,16 +1,10 @@ import { Application, BackendSession, pinus } from 'pinus'; -import { RoleModel } from '../../../db/Role'; -import { EventRecordModel } from '../../../db/EventRecord'; -import { getEvent } from '../../../services/eventSercive'; import { getRandSingleEelm, resResult } from '../../../pubUtils/util'; import { STATUS } from '../../../consts/statusCode'; import { GMMailModel, GMMailType } from '../../../db/GMMail'; import { delGuildActivityRank, getRoleOnlineInfo } from '../../../services/redisService'; import { SendMailFun } from '../../../services/mailService'; import { GM_MAIL_STATUS, GM_MAIL_TYPE, MAIL_TIME_TYPE, REF_CIRCLE_MAIL_TIME } from '../../../consts'; -import { RewardInter } from '../../../pubUtils/interface'; -import { MarqueeModel } from '../../../db/Marquee'; -import { ServerlistModel } from '../../../db/Serverlist'; import { checkActivityEditable, checkActivityGroupType, checkActivityGroupTypeWithId } from '../../../services/activity/activityService'; import { ActivityModel } from '../../../db/Activity'; import { ActivityGroupModel } from '../../../db/ActivityGroup'; diff --git a/game-server/app/servers/role/handler/itemHandler.ts b/game-server/app/servers/role/handler/itemHandler.ts index 40fe316dd..4a8153e7f 100644 --- a/game-server/app/servers/role/handler/itemHandler.ts +++ b/game-server/app/servers/role/handler/itemHandler.ts @@ -149,6 +149,7 @@ export class ItemHandler { const roleName: string = session.get('roleName'); const serverId: number = session.get('serverId'); const sid: string = session.get('sid'); + const channel: string = session.get('channel'); const { code } = msg; let giftCodeDetail = await GiftCodeDetailModel.findByCode(code); @@ -166,6 +167,10 @@ export class ItemHandler { if (giftCode.beginTime > nowSeconds()) return resResult(STATUS.GIFT_CODE_NOT_START); if (giftCode.endTime < nowSeconds()) return resResult(STATUS.GIFT_CODE_HAS_EXPIRED); + if(giftCode.channel.indexOf('all') == -1 && giftCode.channel.indexOf(channel) == -1) { + return resResult(STATUS.GIFT_CODE_CHANNEL_ERR); + } + if (giftCodeDetail.roleIds.indexOf(roleId) != -1) { return resResult(STATUS.YOU_HAVE_USED_THIS_CODE); } diff --git a/shared/consts/statusCode.ts b/shared/consts/statusCode.ts index 1bb8967d4..350656d7a 100644 --- a/shared/consts/statusCode.ts +++ b/shared/consts/statusCode.ts @@ -414,6 +414,7 @@ export const STATUS = { GIFT_CODE_NOT_START: { code: 31203, simStr: '礼包码未生效' }, GIFT_CODE_HAS_EXPIRED: { code: 31204, simStr: '礼包码已失效' }, GIFT_CODE_NOT_FOUND: { code: 31205, simStr: '未找到该礼包码' }, + GIFT_CODE_CHANNEL_ERR: { code: 31206, simStr: '礼包码在您的渠道不生效' }, // 邮件相关 31301-31400 MAIL_HAS_RECEIVE: { code: 31301, simStr: '邮件已领取'}, EQUIP_IS_OVER: { code: 31302, simStr: '装备已超过上限,无法领取' }, diff --git a/shared/db/GiftCode.ts b/shared/db/GiftCode.ts index 0b817f6a5..04db58d7d 100644 --- a/shared/db/GiftCode.ts +++ b/shared/db/GiftCode.ts @@ -43,6 +43,9 @@ export default class GiftCode extends BaseModel { @prop({ required: true, default: 0, enum: GIFT_GENERATE_TYPE }) generateType: GIFT_GENERATE_TYPE; // 生成类型 + @prop({ required: true, default: ['all'], type: String }) + channel: string[]; // 可使用渠道 + @prop({ required: true, default: 0 }) generateCnt: number; // 生成条数,giftCodeDetail的数量 diff --git a/shared/db/GiftCodeDetail.ts b/shared/db/GiftCodeDetail.ts index 911e9198f..783170afc 100644 --- a/shared/db/GiftCodeDetail.ts +++ b/shared/db/GiftCodeDetail.ts @@ -21,7 +21,7 @@ class RoleRecord { } /** - * 举报记录 + * 领取记录 **/ @modelOptions({ schemaOptions: { id: false } }) @index({ code: 1 }) diff --git a/shared/db/User.ts b/shared/db/User.ts index 33fd4d0d1..5e1f6d0a5 100644 --- a/shared/db/User.ts +++ b/shared/db/User.ts @@ -42,7 +42,7 @@ export default class User extends BaseModel { channelId: string; // 渠道类型 @prop({ required: true, _id: false }) - channelInfo: LoginValidateData37|{}; // 渠道数据 + channelInfo: LoginValidateData37; // 渠道数据 @prop({ required: true, set: (val: string) => aesEncryptcfb(val, ENCRYPT_KEY, ENCRYPT_IV), get: (val: string) => val?aesDecryptcfb(val, ENCRYPT_KEY, ENCRYPT_IV):'' }) tel: string; // 账号 @@ -236,7 +236,7 @@ export default class User extends BaseModel { } public static async findUserByToken(token: string) { - const user: UserType = await UserModel.findOne({ token }).select('uid token serverType auth tel userCode pkgName ip').lean({ getters: true }); + const user: UserType = await UserModel.findOne({ token }).select('uid token serverType auth tel userCode pkgName ip channelInfo').lean({ getters: true }); return user; } diff --git a/shared/domain/backEndField/params.ts b/shared/domain/backEndField/params.ts index 8ccb435ac..c62ad25ff 100644 --- a/shared/domain/backEndField/params.ts +++ b/shared/domain/backEndField/params.ts @@ -47,7 +47,8 @@ export class UpdateMailParams { } checkParams() { - if(!this.title || !this.content || !this.sendName || !this.reason) return false; + if(!this.title || !this.content || !this.sendName) return false; + if(this.reason && !isString(this.reason)) return false; if(this.timeType == MAIL_TIME_TYPE.IMMEDIATE) { if(!this.expire) return false; } else if (this.timeType == MAIL_TIME_TYPE.DELAY) { @@ -191,6 +192,7 @@ export class CreateGiftCode { codeLen: number; // 礼包码位数 remark: string = ''; // 备注 generateType: GIFT_GENERATE_TYPE; // 生成类型 + channel: string[] = ['all']; code: string = ''; constructor(obj: any) { @@ -201,6 +203,7 @@ export class CreateGiftCode { this.codeLen = obj.codeLen; this.remark = obj.remark; this.generateType = obj.generateType; + this.channel = obj.channel; this.code = obj.code; } @@ -217,6 +220,7 @@ export class CreateGiftCode { return false } if(this.code != undefined && !isString(this.code)) return false + if(!isArray(this.channel)) return false; return true; } } diff --git a/shared/domain/sdk.ts b/shared/domain/sdk.ts index 0cfe92f58..d508e40fa 100644 --- a/shared/domain/sdk.ts +++ b/shared/domain/sdk.ts @@ -52,7 +52,7 @@ export interface LoginValidataReturn37 { data: LoginValidateData37; } -export type ChannelInfo = LoginValidataReturn37|{}; +export type ChannelInfo = LoginValidateData37; export class PayCallback37Data { appid: string; // 平台id @@ -125,7 +125,7 @@ export class Chat37Params { } setByMyRole(role: RoleType, user: UserType) { - let channelInfo = user.channelInfo; + let channelInfo = user.channelInfo; this.username = channelInfo.uid; this.actor = role.roleName; this.actor_id = role.roleId;