| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247 |
- --------------------------------
- -- 文件名 : ServerCommerceActCharge.lua
- -- 文件说明 : 跨服商业-连充豪礼
- -- 创建时间 : 2025/03/31
- -- 创建人 : FC
- --------------------------------
- local Util = require("common.Util")
- local Msg = require("core.Msg")
- local Grid = require("bag.Grid")
- local BagLogic = require("bag.BagLogic")
- local CommonDefine = require("common.CommonDefine")
- local ServerCommerceConf = require("excel.ServerCommerce")
- local ServerCommerceManager = require("serverCommerce.ServerCommerceManager")
- -- 金额映射红点下标
- local tChargeMoney2Index =
- {
- [6] = 1,
- [98] = 2,
- [198] = 3,
- }
- ----------------------------------------- 内部处理开始 -------------------------------------
- -- 获取配置
- local function CommerceActCharge_GetCof()
- return ServerCommerceConf.CommerceCharge
- end
- -- 初始化DB数据()
- function CreatDB(human)
- if not human.db.ServerCommerce or not human.db.ServerCommerce.Charge then
- print("[CommerceActCharge_CreatDB] 初始化数据失败 name = "..human.db.name)
- return false
- end
- human.db.ServerCommerce.Charge =
- {
- nChargeTime = 0,
- tPrizeData = {}
- }
- local tPrizeData = human.db.ServerCommerce.Charge.tPrizeData
- local tConf = CommerceActCharge_GetCof()
- for _, v in ipairs(tConf) do
- if not tPrizeData[v.nDay] then
- tPrizeData[v.nDay] = {
- nChargeMoney = 0,
- tMoney = {}
- }
- end
-
- local tNodeData = tPrizeData[v.nDay].tMoney
- if not tNodeData[v.nMoney] then
- tNodeData[v.nMoney] = CommonDefine.COMMON_PRIZE_STATE_NOGET
- else
- print("[CommerceActCharge_CreateDB] 配置了重复的数据")
- end
- end
- print("[CommerceActTask_CreatDB] 连充豪礼 初始化数据完成 name = "..human.db.name)
- return true
- end
- -- 获取第一次充值的时间
- local function CommerceActCharge_GetChargeTime(human)
- return human.db.ServerCommerce.Charge.nChargeTime
- end
- -- 设置充值时间
- local function CommerceActCharge_SetChargeTime(human, nTime)
- human.db.ServerCommerce.Charge.nChargeTime = nTime
- end
- -- 获取DB奖励数据
- local function CommerceActCharge_GetDBPrizeData(human)
- return human.db.ServerCommerce.Charge.tPrizeData
- end
- -- 获取DB奖励状态
- local function CommerceActCharge_GetDBPrizeStatus(human, nDay, nMoney)
- local tPrizeData = CommerceActCharge_GetDBPrizeData(human)
- if not tPrizeData[nDay] or not tPrizeData[nDay].tMoney[nMoney] then
- return CommonDefine.COMMON_PRIZE_STATE_NOGET
- end
- return tPrizeData[nDay].tMoney[nMoney]
- end
- -- 设置DB奖励状态
- local function CommerceActCharge_SetDBPrizeStatus(human, nDay, nMoney, nStatus)
- local tPrizeData = CommerceActCharge_GetDBPrizeData(human)
- tPrizeData[nDay].tMoney[nMoney] = nStatus
- end
- -- 获取DB天数充值金额
- local function CommerceActCharge_GetDBDayCharge(human, nDay)
- local tPrizeData = CommerceActCharge_GetDBPrizeData(human)
- if not tPrizeData[nDay] then
- return 0
- end
- return tPrizeData[nDay].nChargeMoney
- end
- -- 设置DB天数充值金额
- local function CommerceActCharge_SetDBDayCharge(human, nDay, nMoney)
- local tPrizeData = CommerceActCharge_GetDBPrizeData(human)
- tPrizeData[nDay].nChargeMoney = tPrizeData[nDay].nChargeMoney + nMoney
- end
- ----------------------------------------- 客户端请求处理开始 -------------------------------------
- -- 请求数据
- function CommerceActCharge_Query(human, nMoney)
- local tConf = CommerceActCharge_GetCof()
-
- local tMsgData = Msg.gc.GC_SERVEERCOMMERCE_ACT_CHARGEQUERY
- local tMoney = {}
- local tRed = tMsgData.tRed
- tRed[0] = 0
- tMsgData.list[0] = 0
-
- tMsgData.nMoney = nMoney
- local nChargeDay, nLen = 0, 0
- for nID, v in ipairs(tConf) do
- if v.nMoney == nMoney then
- nLen = nLen + 1
- tMsgData.list[0] = nLen
- local tPrizeData = tMsgData.list[nLen]
- tPrizeData.nID = nID
- tPrizeData.nState = CommerceActCharge_GetDBPrizeStatus(human, v.nDay, nMoney)
- if tPrizeData.nState ~= CommonDefine.COMMON_PRIZE_STATE_NOGET then
- nChargeDay = nChargeDay + 1
- end
- tPrizeData.nDay = v.nDay
- tPrizeData.nAllMoney = CommerceActCharge_GetDBDayCharge(human, v.nDay)
- tPrizeData.item[0] = #v.Prize
- for nIndex, tItem in ipairs(v.Prize) do
- local nGoodsID = tItem[1]
- local nGoodsNum = tItem[2]
- Grid.makeItem(tPrizeData.item[nIndex], nGoodsID, nGoodsNum)
- end
- end
- if not tMoney[v.nMoney] then
- tMoney[v.nMoney] = 1
- tRed[0] = tRed[0] + 1
- tRed[tChargeMoney2Index[v.nMoney]] = 0
- end
- if tRed[tChargeMoney2Index[v.nMoney]] == 0 then
- local nState = CommerceActCharge_GetDBPrizeStatus(human, v.nDay, v.nMoney)
- if nState == CommonDefine.COMMON_PRIZE_STATE_CANGET then
- tRed[tChargeMoney2Index[v.nMoney]] = 1
- end
- end
- end
- tMsgData.nChargeDay = nChargeDay
- Msg.send(tMsgData, human.fd)
- end
- -- 请求领取奖励
- function CommerceActCharge_GetPrize(human, nMoney)
- local tConf = CommerceActCharge_GetCof()
- local tItem = {}
- for nID, v in ipairs(tConf) do
- if v.nMoney == nMoney then
- local nState = CommerceActCharge_GetDBPrizeStatus(human, v.nDay, v.nMoney)
- if CommonDefine.COMMON_PRIZE_STATE_CANGET == nState then
- CommerceActCharge_SetDBPrizeStatus(human, v.nDay, nMoney, CommonDefine.COMMON_PRIZE_STATE_GET)
- for _, tPrize in ipairs(v.Prize) do
- if not tItem[tPrize[1]] then
- tItem[tPrize[1]] = 0
- end
- tItem[tPrize[1]] = tItem[tPrize[1]] + tPrize[2]
- end
- end
- end
- end
- local tPrize = {}
- for nID, nNum in pairs(tItem) do
- table.insert(tPrize, {nID, nNum})
- end
- BagLogic.addItemList(human, tPrize, "servercommerce")
- CommerceActCharge_Query(human, nMoney)
- ServerCommerceManager.CommerceAct_SendActInfo(human)
- end
- ----------------------------------------- 外部调用 -------------------------------------
- function isRed(human)
- if not human.db.ServerCommerce or not human.db.ServerCommerce.Charge then
- return false
- end
- local tConf = CommerceActCharge_GetCof()
- for _, v in ipairs(tConf) do
- local nState = CommerceActCharge_GetDBPrizeStatus(human, v.nDay, v.nMoney)
- if nState == CommonDefine.COMMON_PRIZE_STATE_CANGET then
- return true
- end
- end
- return false
- end
- function onCharge(human, price, funcID, buyID)
- local nBuyTime = CommerceActCharge_GetChargeTime(human)
- if 0 == nBuyTime then
- nBuyTime = os.time()
- CommerceActCharge_SetChargeTime(human, nBuyTime)
- end
- local nDiffDay = Util.diffDay(nBuyTime) + 1
- local tConf = CommerceActCharge_GetCof()
- local bQuery = false
- local nNewChareNum = CommerceActCharge_GetDBDayCharge(human, nDiffDay)
- nNewChareNum = nNewChareNum + price
-
- for _, v in ipairs(tConf) do
- if v.nDay == nDiffDay then
- local nStatus = CommerceActCharge_GetDBPrizeStatus(human, v.nDay, v.nMoney)
- if nStatus == CommonDefine.COMMON_PRIZE_STATE_NOGET and nNewChareNum >= v.nMoney then
- CommerceActCharge_SetDBPrizeStatus(human, v.nDay, v.nMoney, CommonDefine.COMMON_PRIZE_STATE_CANGET)
- bQuery = true
- end
- end
- end
- CommerceActCharge_SetDBDayCharge(human, nDiffDay, price)
- if true == bQuery then
- CommerceActCharge_Query(human, price)
- ServerCommerceManager.CommerceAct_SendActInfo(human)
- end
- end
|