diff --git a/src/api_s2c/conglinshoulie/ApiRec.ts b/src/api_s2c/conglinshoulie/ApiRec.ts index 2d336bd..610a9ae 100644 --- a/src/api_s2c/conglinshoulie/ApiRec.ts +++ b/src/api_s2c/conglinshoulie/ApiRec.ts @@ -3,19 +3,56 @@ import { PlayerFun } from '../../public/player'; import { ReqRec, ResRec } from "../../shared/protocols/conglinshoulie/PtlRec"; import { HongDianChange } from "../hongdian/fun"; import { addStar, clslDb } from './ApiOpen'; +import { EmailFun } from "../../public/email"; export default async function (call: ApiCall) { let conf = G.gc.clsl_com.fightWinPrize[call.req.index]; if (!conf) return call.errorCode(-1); let db = await clslDb().findOne({ uid: call.uid, type: 'clsl' }); + + let curStar = db?.allStar || 0; + let danPrize = db?.danPrize || []; + let curMaxStar = db?.curMaxStar || 0; + if ((db?.fightWinNum || 0) < conf.total || db?.recWinPrize?.includes(call.req.index)) return call.errorCode(-2); await PlayerFun.sendPrize(call, conf.prize); - addStar(call, conf.star); + let updata = { $push: { recWinPrize: call.req.index } }; - clslDb().updateOne({ uid: call.uid, type: 'clsl' }, { $push: { recWinPrize: call.req.index } }); + // 首次达到某个段位 + if (curStar + conf.star > curMaxStar) { + curMaxStar += conf.star; + updata["$inc"] = { "curMaxStar": conf.star }; + } + + // 段位奖励邮件 + let title = G.gc.clsl_com.email_dan.title; + let content = G.gc.clsl_com.email_dan.content; + G.gc.clsl_com.danPrize.forEach(conf => { + // 段位未达到 或者 奖励已经发放 + if (conf.star > curMaxStar || danPrize.includes(conf.star)) { + return + } + + // 发放邮件 + EmailFun.addEmail({ + uid: call.uid, + type: 'system', + title: title, + content: content, + prize: conf.prize, + contentInsertArr:[conf.title] + }) + + danPrize.push(conf.star); + updata["$set"] = { danPrize: danPrize }; + }) + + + addStar(call, conf.star, undefined, updata); + // clslDb().updateOne({ uid: call.uid, type: 'clsl' }, { $push: { recWinPrize: call.req.index } }); HongDianChange.sendChangeKey(call.uid, ['clslhd'])