| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 |
- --------------------------------
- -- 文件名 : ServerCommerceActShop.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 BuyLogic = require("topup.BuyLogic")
- local CommonDefine = require("common.CommonDefine")
- local ServerCommerceConf = require("excel.ServerCommerce")
- local BuyConf = require("excel.buy")
- local CommonDB = require("common.CommonDB")
- local ObjHuman = require("core.ObjHuman")
- local ServerCommerceManager = require("serverCommerce.ServerCommerceManager")
- local ServerCommerceDefine = require("serverCommerce.ServerCommerceActDefine")
- local COMMERCEACTFREEID = 1 -- 免费
- local COMMERCEACTPAYID = 2 -- 付费
- ----------------------------------------- 内部处理开始 -------------------------------------
- -- 获取配置
- local function CommerceActShop_GetCof()
- return ServerCommerceConf.CommerceShop
- end
- function CreatDB(human)
- if not human.db.ServerCommerce or not human.db.ServerCommerce.Shop then
- print("[CommerceActShop_CreatDB] 初始化数据失败 name = "..human.db.name)
- return false
- end
- local tConf = CommerceActShop_GetCof()
- for nID, v in ipairs(tConf) do
- human.db.ServerCommerce.Shop[nID] =
- {
- [COMMERCEACTFREEID] = CommonDefine.COMMON_PRIZE_STATE_NOGET,
- [COMMERCEACTPAYID] = ServerCommerceDefine.COMMERCEACT_SHOP_PAY_STATE0
- }
- end
- return true
- end
- -- 获取免费奖励状态
- local function CommerceActShop_GetFreeStatus(human, nID)
- return human.db.ServerCommerce.Shop[nID][COMMERCEACTFREEID]
- end
- -- 设置免费奖励状态
- local function CommerceActShop_SetFreeStatus(human, nID, nStatus)
- human.db.ServerCommerce.Shop[nID][COMMERCEACTFREEID] = nStatus
- end
- -- 获取付费奖励状态
- local function CommerceActShop_GetPayStatus(human, nID)
- return human.db.ServerCommerce.Shop[nID][COMMERCEACTPAYID]
- end
- -- 设置付费奖励状态
- local function CommerceActShop_SetPayStatus(human, nID, nStatus)
- human.db.ServerCommerce.Shop[nID][COMMERCEACTPAYID] = nStatus
- end
- ----------------------------------------- 客户端请求处理开始 -------------------------------------
- -- 查询数据
- function CommerceActShop_Query(human)
- local tConf = CommerceActShop_GetCof()
- local tMsgData = Msg.gc.GC_SERVEERCOMMERCE_ACT_SHOPQUERY
- tMsgData.nNowPoint = CommonDB.GetCommerceActInfo_Point()
- tMsgData.list[0] = #tConf
- local nLen = 1
- for nID, v in ipairs(tConf) do
- local tNodeData = tMsgData.list[nLen]
- nLen = nLen + 1
- tNodeData.nID = nID
- tNodeData.nNeedPoint = v.nPoint
- tNodeData.nFreeState = CommerceActShop_GetFreeStatus(human, nID)
- tNodeData.nPayState = CommerceActShop_GetPayStatus(human, nID)
- -- 免费物品
- tNodeData.tFreeItem[0] = #v.FreePrize
- for i, tData in ipairs(v.FreePrize) do
- Grid.makeItem(tNodeData.tFreeItem[i], tData[1], tData[2])
- end
-
- tNodeData.tPayItem[0] = #v.PayPrize
- for i, tData in ipairs(v.PayPrize) do
- Grid.makeItem(tNodeData.tPayItem[i], tData[1], tData[2])
- end
- -- 封装购买项物品
- BuyLogic.fontBuyItem(human, tNodeData.buyItem, v.nBuyID)
- --Grid.makeItem(tNodeData.pointItem, ServerCommerceDefine.COMERCEACT_POINT_GOODSID, v.nPoint)
- end
- Msg.send(tMsgData, human.fd)
- end
- -- 领取奖励
- function CommerceActShop_GetPrize(human, nType)
- local tConf = CommerceActShop_GetCof()
- local tGoods = {}
- for nID, v in ipairs(tConf) do
- local nState = CommerceActShop_GetFreeStatus(human, nID)
- local bCanGet = false
- if COMMERCEACTPAYID == nType then
- nState = CommerceActShop_GetPayStatus(human, nID)
- bCanGet = ServerCommerceDefine.COMMERCEACT_SHOP_PAY_STATE3 == nState
- else
- bCanGet = CommonDefine.COMMON_PRIZE_STATE_CANGET == nState
- end
- if true == bCanGet then
- local tPrize
- if COMMERCEACTPAYID == nType then
- CommerceActShop_SetPayStatus(human, nID, ServerCommerceDefine.COMMERCEACT_SHOP_PAY_STATE4)
- tPrize = v.PayPrize
- else
- CommerceActShop_SetFreeStatus(human, nID, CommonDefine.COMMON_PRIZE_STATE_GET)
- tPrize = v.FreePrize
- end
- for _, tData in ipairs(tPrize) do
- tGoods[tData[1]] = tGoods[tData[1]] or 0
- tGoods[tData[1]] = tGoods[tData[1]] + tData[2]
- end
- end
- end
- if nil ~= _G.next(tGoods) then
- local tItem = {}
- for nGoodsID, nGoodsNum in pairs(tGoods) do
- table.insert(tItem, {nGoodsID, nGoodsNum})
- end
- BagLogic.addItemList(human, tItem, "servercommerce")
- CommerceActShop_Query(human)
- ServerCommerceManager.CommerceAct_SendActInfo(human)
- end
- end
- ----------------------------------------- 外部调用 -------------------------------------
- -- 总积分改变
- function onAllPointChange()
- local nNowPoint = CommonDB.GetCommerceActInfo_Point()
- local tConf = CommerceActShop_GetCof()
-
- local tOKID = {}
- for nID, v in ipairs(tConf) do
- if nNowPoint >= v.nPoint then
- table.insert(tOKID, nID)
- end
- end
- for _, human in pairs(ObjHuman.onlineUuid) do
- local bSendClient = false
- for _, nID in ipairs(tOKID) do
- local nStatus = CommerceActShop_GetFreeStatus(human, nID)
- if CommonDefine.COMMON_PRIZE_STATE_NOGET == nStatus then
- bSendClient = true
- CommerceActShop_SetFreeStatus(human, nID, CommonDefine.COMMON_PRIZE_STATE_CANGET)
- end
- nStatus = CommerceActShop_GetPayStatus(human, nID)
- if ServerCommerceDefine.COMMERCEACT_SHOP_PAY_STATE0 == nStatus then
- -- 变成积分足够,未充值状态
- CommerceActShop_SetPayStatus(human, nID, ServerCommerceDefine.COMMERCEACT_SHOP_PAY_STATE1)
- elseif ServerCommerceDefine.COMMERCEACT_SHOP_PAY_STATE2 == nStatus then
- -- 已经是购买状态,积分足够,直接变成可领取
- CommerceActShop_SetPayStatus(human, nID, ServerCommerceDefine.COMMERCEACT_SHOP_PAY_STATE3)
- end
- end
- if true == bSendClient then
- CommerceActShop_Query(human)
- end
- end
- end
- function onCharge(human, price, funcID, buyID)
- local tConf = CommerceActShop_GetCof()
- local nNowPoint = CommonDB.GetCommerceActInfo_Point()
- print("[CommerceActShop_onCharge] nNowPoint = "..nNowPoint)
- local nChoseID = 0
- local tConfData = nil
- for nID, v in ipairs(tConf) do
- if v.nBuyID == buyID then
- local nPayState = CommerceActShop_GetPayStatus(human, nID)
- -- 状态为0 或者状态为积分达成未购买
- if ServerCommerceDefine.COMMERCEACT_SHOP_PAY_STATE0 == nPayState or ServerCommerceDefine.COMMERCEACT_SHOP_PAY_STATE1 == nPayState then
- nChoseID = nID
- tConfData = v
- else
- print("[CommerceActShop_onCharge] 重复购买了 nBuyID = "..v.nBuyID)
- end
- break
- end
- end
- local tBuyCfg = BuyConf.buy[buyID]
- if not tBuyCfg then
- print("[onCharge] 不存在对应的购买项配置 buyID = "..buyID)
- return
- end
- if nChoseID == 0 or nil == tConfData then
- return
- end
- if nNowPoint >= tConfData.nPoint then
- CommerceActShop_SetPayStatus(human, nChoseID, ServerCommerceDefine.COMMERCEACT_SHOP_PAY_STATE3)
- else
- CommerceActShop_SetPayStatus(human, nChoseID, ServerCommerceDefine.COMMERCEACT_SHOP_PAY_STATE2)
- end
- CommerceActShop_Query(human)
- ServerCommerceManager.CommerceAct_SendActInfo(human)
- end
- -- 登录检测积分
- function onLogin(human)
- local nNowPoint = CommonDB.GetCommerceActInfo_Point()
- local tConf = CommerceActShop_GetCof()
- for nID, v in ipairs(tConf) do
- if nNowPoint >= v.nPoint then
- local nStatus = CommerceActShop_GetFreeStatus(human, nID)
- if CommonDefine.COMMON_PRIZE_STATE_NOGET == nStatus then
- CommerceActShop_SetFreeStatus(human, nID, CommonDefine.COMMON_PRIZE_STATE_CANGET)
- end
- end
- end
- end
- function isRed(human)
- local tConf = CommerceActShop_GetCof()
- for nID, v in ipairs(tConf) do
- local nFreeStatus = CommerceActShop_GetFreeStatus(human, nID)
- local nPayState = CommerceActShop_GetPayStatus(human, nID)
- if CommonDefine.COMMON_PRIZE_STATE_CANGET == nFreeStatus or
- ServerCommerceDefine.COMMERCEACT_SHOP_PAY_STATE3 == nPayState then
- return true
- end
- end
- return false
- end
|