|
|
|
|
@@ -1,9 +1,9 @@
|
|
|
|
|
|
|
|
|
|
import { Service } from 'egg';
|
|
|
|
|
import { REDIS_KEY, PAY_37_CALLBACK_CODE, SDK_37_CONST, ORDER_STATE, SDK_37_TREAT_CODE, SERVER_STATUS, SDK_37_REFUND_CODE } from '@consts';
|
|
|
|
|
import { GetGuildInfoByUserParam, GetServerListParam, GuildNameCallBackParam, IOSRefundParam, PayCallback37Data, RoleNameCallBackParam } from '../domain/sdk';
|
|
|
|
|
import { REDIS_KEY, PAY_37_CALLBACK_CODE, SDK_37_CONST, ORDER_STATE, SDK_37_TREAT_CODE, SERVER_STATUS, SDK_37_REFUND_CODE, SDK_37_SEND_GIFT_RESULT_CODE, PUBLIC_ACCOUNT_GIFT, GIFT_GENERATE_TYPE } from '@consts';
|
|
|
|
|
import { GetGuildInfoByUserParam, GetServerListParam, GuildNameCallBackParam, IOSRefundParam, PayCallback37Data, RoleNameCallBackParam, SendGiftCodeParam } from '../domain/sdk';
|
|
|
|
|
import { RedisClient } from 'redis';
|
|
|
|
|
import { checkParamPrice, get37GetServerMd5Sign, get37Md5SignA, get37Md5SignB, getChannelId, getRedisSubChannel } from '../pubUtils/sdkUtil';
|
|
|
|
|
import { checkParamPrice, get37GetServerMd5Sign, get37Md5SignA, get37Md5SignB, getChannelId, getRedisSubChannel, md5 } from '../pubUtils/sdkUtil';
|
|
|
|
|
import { UserOrderModel } from '@db/UserOrder';
|
|
|
|
|
import { nowSeconds } from 'app/pubUtils/timeUtil';
|
|
|
|
|
import { RoleModel } from '@db/Role';
|
|
|
|
|
@@ -15,6 +15,9 @@ import { GuildModel } from '@db/Guild';
|
|
|
|
|
import { ServerlistModel } from '@db/Serverlist';
|
|
|
|
|
import moment = require('moment');
|
|
|
|
|
import { RegionModel } from '@db/Region';
|
|
|
|
|
import { ActivityPublicAccountCodeModel } from '@db/ActivityPublicAccountCode';
|
|
|
|
|
import { GiftCodeDetailModel } from '@db/GiftCodeDetail';
|
|
|
|
|
import { GiftCodeModel } from '@db/GiftCode';
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Test Service
|
|
|
|
|
@@ -200,7 +203,7 @@ export default class Sdk extends Service {
|
|
|
|
|
return ctx.service.utils.resResult(SDK_37_REFUND_CODE.SUCCESS, '');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public check37WordsSign(params: RoleNameCallBackParam|GuildNameCallBackParam|GetGuildInfoByUserParam) {
|
|
|
|
|
public check37WordsSign(params: RoleNameCallBackParam|GuildNameCallBackParam|GetGuildInfoByUserParam|SendGiftCodeParam) {
|
|
|
|
|
let sign = get37Md5SignB(params.getBody(), SDK_37_CONST.CHAT_KEY);
|
|
|
|
|
console.log('******37Sign', sign);
|
|
|
|
|
return sign == params.sign;
|
|
|
|
|
@@ -418,4 +421,85 @@ export default class Sdk extends Service {
|
|
|
|
|
ta.track(event);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async sendGiftCode(params: SendGiftCodeParam) {
|
|
|
|
|
const { ctx } = this;
|
|
|
|
|
try {
|
|
|
|
|
let validateResult = this.sendGiftValidata(params);
|
|
|
|
|
if(validateResult.code != SDK_37_SEND_GIFT_RESULT_CODE.SUCCESS.code) return validateResult;
|
|
|
|
|
|
|
|
|
|
let channelId = getChannelId('37', params.user_id);
|
|
|
|
|
console.log(channelId);
|
|
|
|
|
let user = await UserModel.findUserByChannel(channelId);
|
|
|
|
|
if(!user) {
|
|
|
|
|
console.error('用户名违规处理, 未找到玩家账号', channelId);
|
|
|
|
|
return resResult(SDK_37_SEND_GIFT_RESULT_CODE.ORDER_DUPLICATE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(params.gift_id.startsWith(PUBLIC_ACCOUNT_GIFT)) {
|
|
|
|
|
let activityId = parseInt(params.gift_id.replace(PUBLIC_ACCOUNT_GIFT, ''));
|
|
|
|
|
if(!activityId) return resResult(SDK_37_SEND_GIFT_RESULT_CODE.GIFT_NOT_FOUND);
|
|
|
|
|
|
|
|
|
|
let data = await ActivityPublicAccountCodeModel.findByChannel(activityId, channelId);
|
|
|
|
|
if(data) return resResult(SDK_37_SEND_GIFT_RESULT_CODE.ORDER_DUPLICATE);
|
|
|
|
|
|
|
|
|
|
await ActivityPublicAccountCodeModel.sendGift(activityId, channelId, params.server_id, params.role_id, params.order_id);
|
|
|
|
|
await ctx.service.utils.pushPubAccountGiftChannel(activityId, user.userCode, user.channelId);
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
let giftCodeDetail = await GiftCodeDetailModel.findByCode(params.gift_id);
|
|
|
|
|
if(!giftCodeDetail) {
|
|
|
|
|
return resResult(SDK_37_SEND_GIFT_RESULT_CODE.GIFT_NOT_FOUND);
|
|
|
|
|
}
|
|
|
|
|
let giftCode = await GiftCodeModel.findByGiftId(giftCodeDetail.giftId);
|
|
|
|
|
if(!giftCode) {
|
|
|
|
|
return resResult(SDK_37_SEND_GIFT_RESULT_CODE.GIFT_NOT_FOUND);
|
|
|
|
|
}
|
|
|
|
|
if(giftCode.generateType == GIFT_GENERATE_TYPE.ONE_TO_ONE) { // 一人一条,单条不能被多人使用
|
|
|
|
|
if(giftCodeDetail.usedNum > 0) return resResult(SDK_37_SEND_GIFT_RESULT_CODE.USE_CNT_MAX);
|
|
|
|
|
}
|
|
|
|
|
if(!giftCode.isEnable) return resResult(SDK_37_SEND_GIFT_RESULT_CODE.GIFT_CODE_HAS_EXPIRED);
|
|
|
|
|
if (giftCode.beginTime > nowSeconds()) return resResult(SDK_37_SEND_GIFT_RESULT_CODE.GIFT_CODE_NOT_START);
|
|
|
|
|
if (giftCode.endTime < nowSeconds()) return resResult(SDK_37_SEND_GIFT_RESULT_CODE.GIFT_CODE_HAS_EXPIRED);
|
|
|
|
|
|
|
|
|
|
if(giftCode.channel.indexOf('all') == -1 && giftCode.channel.indexOf(user.channelInfo?.platformAppid) == -1) {
|
|
|
|
|
return resResult(SDK_37_SEND_GIFT_RESULT_CODE.GIFT_CHANNEL_ERR);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let role = await RoleModel.findByUid(user.uid, params.server_id);
|
|
|
|
|
if(!role) return resResult(SDK_37_SEND_GIFT_RESULT_CODE.ROLE_NOT_FOUND);
|
|
|
|
|
|
|
|
|
|
if (giftCodeDetail.roleIds.indexOf(role.roleId) != -1) {
|
|
|
|
|
return resResult(SDK_37_SEND_GIFT_RESULT_CODE.ORDER_DUPLICATE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let checkHasUse = await GiftCodeDetailModel.checkHasUsed(role.roleId, giftCodeDetail.giftId);
|
|
|
|
|
if(checkHasUse) {
|
|
|
|
|
return resResult(SDK_37_SEND_GIFT_RESULT_CODE.ORDER_DUPLICATE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
await GiftCodeDetailModel.increaseUsedNum(giftCodeDetail.code, role.roleId, role.roleName, role.serverId, params.order_id);
|
|
|
|
|
await GiftCodeModel.increaseUsedNum(giftCode.id);
|
|
|
|
|
|
|
|
|
|
await ctx.service.utils.pushGiftCodeChannel(role.roleId, giftCode.id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return resResult(SDK_37_SEND_GIFT_RESULT_CODE.SUCCESS, []);
|
|
|
|
|
} catch(e) {
|
|
|
|
|
console.error('sendGiftCode err', e);
|
|
|
|
|
return ctx.service.utils.resResult(SDK_37_SEND_GIFT_RESULT_CODE.INTERNAL_ERR, '');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public sendGiftValidata(params: SendGiftCodeParam) {
|
|
|
|
|
if(!params.checkParams()) return resResult(SDK_37_SEND_GIFT_RESULT_CODE.WRONG_PARAMS);
|
|
|
|
|
|
|
|
|
|
let { user_id, server_id, role_id, gift_id, order_id, time } = params;
|
|
|
|
|
let str = `${user_id}${server_id}${role_id}${gift_id}${order_id}${time}${SDK_37_CONST.CHAT_KEY}`;
|
|
|
|
|
let sign = md5(str);
|
|
|
|
|
console.log('#### str: ', str, 'sign', sign);
|
|
|
|
|
if(sign != params.sign) return resResult(SDK_37_SEND_GIFT_RESULT_CODE.SIGN_ERR);
|
|
|
|
|
|
|
|
|
|
return resResult(SDK_37_SEND_GIFT_RESULT_CODE.SUCCESS);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|