소스 검색

提交限时周卡

SCFC 1 년 전
부모
커밋
583006c12a
5개의 변경된 파일295개의 추가작업 그리고 156개의 파일을 삭제
  1. 97 96
      script/common/Log.lua
  2. 7 1
      script/module/absAct/AbsActDefine.lua
  3. 10 1
      script/module/absAct/AbsActLogic.lua
  4. 177 58
      script/module/absAct/FestivalSevenDayCardLogic.lua
  5. 4 0
      script/module/chat/Gm.lua

+ 97 - 96
script/common/Log.lua

@@ -1,96 +1,97 @@
-local lua_log = _G.lua_log
-local LogDefine = require("common.LogDefine")
-
-function init()
-    if has_init then
-        return
-    end
-    has_init = true
-    --[[服务器测试输出--]] LOGID_TEST = lua_log.reg("log/test", "", 0)
-    --[[服务器测试输出--]] LOGID_DEBUG = lua_log.reg("log/debug", "", 0)
-    --[[服务器输出跟踪日志--]] LOGID_OSS_BT = lua_log.reg("log/err_bt", "", 0)
-    --[[所有的pcall失败报错输出]] LOGID_ERR_PCALL = lua_log.reg("log/err_pcall", "", 0)
-    --[[服务器obj数据统计--]] LOGID_MONITOR = lua_log.reg("log/monitor", "thread,luamem,scene,obj,monster,human,pet", 0)
-    --[[GM指令--]] LOGID_OSS_GM_CODE = lua_log.reg("log/oss_gm_code", "uuid,account_name,role_name,cmd,arg", 0)
-    --[[INNER_close]] LOGID_INNER_CLOSE = lua_log.reg("log/inner_close", "", 0)
-
-    --[[客户端报错收集--]] LOGID_OSS_CLIENT_ERR = lua_log.reg("log/oss_client_err", "uuid,account_name,role_name,err", 300)
-    --[[客户端资源加载报错收集--]] LOGID_OSS_CLIENT_LOAD_ERR = lua_log.reg("log/oss_client_load_err", "uuid,account_name,role_name,err", 300)
-
-    --[[创建流失率--]] LOGID_OSS_CREATELOSS = lua_log.reg("log/oss_create_loss", "account_name,role_name,step,ip,pf,appid,appid2", 300)
-    --[[注册]] LOGID_OSS_REGISTER = lua_log.reg("log/oss_register", "uuid,account_name,role_name,ip,pf,appid,cnt", 300)
-    --[[登录--]] LOGID_OSS_LOGIN = lua_log.reg("log/oss_login", "uuid,account_name,role_name,level,ip", 300)
-    --[[登出--]] LOGID_OSS_LOGOUT = lua_log.reg("log/oss_logout", "uuid,account_name,role_name,level,ip,reason,online_time", 300)
-    --[[主指引完成--]] LOGID_OSS_GUIDE_MAIN = lua_log.reg("log/oss_guide_main", "uuid,account_name,role_name,level,ip,pf,appid,main_id,skip_type", 300)
-    --[[子指引完成--]] LOGID_OSS_GUIDE_SUB = lua_log.reg("log/oss_guide_sub", "uuid,account_name,role_name,level,ip,pf,appid,sub_id", 300)
-
-    --[[聊天--]] LOGID_OSS_CHAT = lua_log.reg("log/oss_chat", "uuid, account_name, role_name, ip, channel, content", 300)
-    --[[升级--]] LOGID_OSS_LEVELUP = lua_log.reg("log/oss_level_up", "uuid,account_name,role_name,prev_level,level", 300)
-    --[[守护之龙--]] LOGID_OSS_DRAGON_LEVEL = lua_log.reg("log/oss_dragon_lv", "uuid,account_name,role_name,level,skill_level", 300)
-    --[[公会科技]] LOGID_OSS_UNION_TECH = lua_log.reg("log/oss_unionTech_lv", "uuid,account_name,role_name,type,level", 300)
-    --[[金币流通--]] LOGID_OSS_JINBI = lua_log.reg("log/oss_money", "uuid,account_name,role_name,level,money,type,item_id,num,remain_money", 300)
-    --[[钻石流通--]] LOGID_OSS_GOLD = lua_log.reg("log/oss_gold", "uuid,account_name,role_name,level,gold,type,item_id,num,remain_gold", 300)
-    --[[友情值流通]] LOGID_OSS_FRIENDHEART = lua_log.reg("log/oss_friendheart", "uuid,account_name,role_name,level,friendheart,type,item_id,num,remain_friendheart", 300)
-    --[[道具流通--]] LOGID_OSS_ITEM = lua_log.reg("log/oss_item", "uuid,account_name,role_name,level,type,item_id,num,afterCount", 300)
-    --[[英雄流通--]] LOGID_OSS_HERO = lua_log.reg("log/oss_hero", "uuid,account_name,role_name,level,type,hero_id,num,hero_uuid, star", 300)
-    --[[符文流通--]] LOGID_OSS_FUWEN = lua_log.reg("log/oss_fuwen", "uuid,account_name,role_name,level,type,fuwen_id,num", 300)
-    --[[装备流通--]] LOGID_OSS_EQUIP = lua_log.reg("log/oss_equip", "uuid,account_name,role_name,level,type,equip_id,num, equip_uuid", 300)
-    --[[召唤法阵--]] LOGID_OSS_DRAWCARD = lua_log.reg( "log/oss_drawcard", "uuid,account_name,role_name,level,type,hero_ids,item_id,num,zuanshi,jifen", 300)
-    --[[战斗过程详细日志--]] LOGID_FIGHT_LOG = lua_log.reg("log/fight_log", "", 0)
-    --[[充值--]] LOGID_OSS_PAY = lua_log.reg("log/oss_pay", "uuid, account_name,role_name,level, billno, buyID, money, gold, online,region", 300)
-    --[[充值错误--]] LOGID_OSS_PAY_ERR =lua_log.reg("log/oss_pay_err", "account_name,result,billno, buyID, money, gold,region", 300)
-    --[[腾讯购买--]] LOGID_OSS_TENCENT_BUY = lua_log.reg("log/oss_tencent_buy", "uuid,account_name,role_name,logintype,openid,openkey,pf,yuanbao,buyID", 300)
-
-    --[[跨服相关调试日志--]] LOGID_MIDDLE_BT = lua_log.reg("log/err_middle_bt", "err", 0)
-
-    --[[怪物死亡]] LOGID_OSS_MONSTER =lua_log.reg("log/oss_die", "uuid,account_name,role_name,level,kill_id,name,map_id", 300)
-    --[[金币挑战]] LOGID_OSS_BATTLE_GOLD = lua_log.reg("log/oss_jbtz_lv", "uuid,account_name,role_name,lv", 300)
-    --[[经验挑战]] LOGID_OSS_BATTLE_EXP = lua_log.reg("log/oss_exptz_lv", "uuid,account_name,role_name,lv", 300)
-    --[[英雄挑战]] LOGID_OSS_BATTLE_HERO = lua_log.reg("log/oss_yxtz_lv", "uuid,account_name,role_name,lv", 300)
-    --[[黄金龙穴]] LOGID_OSS_BATTLE_DRAGON = lua_log.reg("log/oss_hjlx_lv", "uuid,account_name,role_name,lv", 300)
-    --[[水晶之地]] LOGID_OSS_BATTLE_CRYSTAL = lua_log.reg("log/oss_sjzd_lv", "uuid,account_name,role_name,lv", 300)
-    --[[灵兽深渊]] LOGID_OSS_BATTLE_MOSHOU = lua_log.reg("log/oss_mssz_lv", "uuid,account_name,role_name,lv", 300)
-
-    --[[主线关卡]] LOGID_OSS_BATTLE_MAINGATE = lua_log.reg("log/oss_maingate_lv", "uuid,account_name,role_name,lv", 300)
-    --[[恶魔之塔]] LOGID_OSS_BATTLE_DEMONTOWER = lua_log.reg("log/oss_demonTower_lv", "uuid,account_name,role_name,lv", 300)
-    --[[绝望深渊]] LOGID_OSS_BATTLE_DESPAIRABYSS = lua_log.reg("log/oss_despairAbyss_lv", "uuid,account_name,role_name,lv", 300)
-    --[[遗迹探险]] LOGID_OSS_BATTLE_RELIC = lua_log.reg("log/oss_relic_lv", "uuid,account_name,role_name,lv", 300)
-
-    --[[分享日志]] LOGID_OSS_SHARE = lua_log.reg("log/oss_share", "uuid, account_name, role_name, pf, appid, way", 300)
-    --[[online 0:离线,保存db,未发货1:在线发货 2:离线期间请求,上线后发货发货--]] 
-      LOGID_OSS_DELIVER = lua_log.reg("log/oss_deliver", "uuid, account_name,role_name,level, billno,money, type, itemId,cnt, online,region",300)
-    --[[英雄起源活动领取日志]] LOGID_OSS_PAYREWARD = lua_log.reg("log/oss_payreward", "uuid,account_name,role_name,week,type,gift_index", 300)
-    --[[英雄升级日志]] LOGID_OSS_HEROLVUP = lua_log.reg("log/oss_herolvup", "uuid,account_name,role_name,rerouuid,oldlv,newlv", 300)
-    --[[遗迹探险插入DB]] LOGID_OSS_YJTX_DB = lua_log.reg("log/oss_yjtx_db", "",0)
-    --[[竟技场-王者争霸]] LOGID_JJC_GODWAR = lua_log.reg("log/jjc_godwar","",0)
-    --[[开服活动]] LOGID_OSS_OPENSERVER_ACT = lua_log.reg("log/oss_openserver_act","",300)
-    --[[周循环活动]] LOGID_OSS_WEEKLOOP_ACT = lua_log.reg("log/week_loop_act","",300)
-    --[[代金券]] LOGID_OSS_VOUCHERSHOP = lua_log.reg("log/vouchershop","",300)
-end
-init()
-
-write = lua_log.write
-
-function writeItemLog(human, grid, count, logType, index)
-    local logTypeID = LogDefine.DEFINE[logType] + LogDefine.TYPE["item"]
-    write(
-        LOGID_OSS_ITEM,
-        human.db._id,
-        human.db.account,
-        human.db.name,
-        human.db.lv,
-        logTypeID,
-        grid.id,
-        count,
-        index or 0
-    )
-end
-
-function qqInfo(human)
-    return human.vopenid or 0, 0, 0, human.phpChanelID or "", 0
-end
-
-function writeShareLog(human, shareType)
-    --'1:微信好友分享,2:微信朋友圈,3:微博,4:QQ,5:QQ好友,6:其他'
-    write(LOGID_OSS_SHARE, human.db._id, human.db.account, human.db.name, human.pf, human.appid, shareType)
-end
+local lua_log = _G.lua_log
+local LogDefine = require("common.LogDefine")
+
+function init()
+    if has_init then
+        return
+    end
+    has_init = true
+    --[[服务器测试输出--]] LOGID_TEST = lua_log.reg("log/test", "", 0)
+    --[[服务器测试输出--]] LOGID_DEBUG = lua_log.reg("log/debug", "", 0)
+    --[[服务器输出跟踪日志--]] LOGID_OSS_BT = lua_log.reg("log/err_bt", "", 0)
+    --[[所有的pcall失败报错输出]] LOGID_ERR_PCALL = lua_log.reg("log/err_pcall", "", 0)
+    --[[服务器obj数据统计--]] LOGID_MONITOR = lua_log.reg("log/monitor", "thread,luamem,scene,obj,monster,human,pet", 0)
+    --[[GM指令--]] LOGID_OSS_GM_CODE = lua_log.reg("log/oss_gm_code", "uuid,account_name,role_name,cmd,arg", 0)
+    --[[INNER_close]] LOGID_INNER_CLOSE = lua_log.reg("log/inner_close", "", 0)
+
+    --[[客户端报错收集--]] LOGID_OSS_CLIENT_ERR = lua_log.reg("log/oss_client_err", "uuid,account_name,role_name,err", 300)
+    --[[客户端资源加载报错收集--]] LOGID_OSS_CLIENT_LOAD_ERR = lua_log.reg("log/oss_client_load_err", "uuid,account_name,role_name,err", 300)
+
+    --[[创建流失率--]] LOGID_OSS_CREATELOSS = lua_log.reg("log/oss_create_loss", "account_name,role_name,step,ip,pf,appid,appid2", 300)
+    --[[注册]] LOGID_OSS_REGISTER = lua_log.reg("log/oss_register", "uuid,account_name,role_name,ip,pf,appid,cnt", 300)
+    --[[登录--]] LOGID_OSS_LOGIN = lua_log.reg("log/oss_login", "uuid,account_name,role_name,level,ip", 300)
+    --[[登出--]] LOGID_OSS_LOGOUT = lua_log.reg("log/oss_logout", "uuid,account_name,role_name,level,ip,reason,online_time", 300)
+    --[[主指引完成--]] LOGID_OSS_GUIDE_MAIN = lua_log.reg("log/oss_guide_main", "uuid,account_name,role_name,level,ip,pf,appid,main_id,skip_type", 300)
+    --[[子指引完成--]] LOGID_OSS_GUIDE_SUB = lua_log.reg("log/oss_guide_sub", "uuid,account_name,role_name,level,ip,pf,appid,sub_id", 300)
+
+    --[[聊天--]] LOGID_OSS_CHAT = lua_log.reg("log/oss_chat", "uuid, account_name, role_name, ip, channel, content", 300)
+    --[[升级--]] LOGID_OSS_LEVELUP = lua_log.reg("log/oss_level_up", "uuid,account_name,role_name,prev_level,level", 300)
+    --[[守护之龙--]] LOGID_OSS_DRAGON_LEVEL = lua_log.reg("log/oss_dragon_lv", "uuid,account_name,role_name,level,skill_level", 300)
+    --[[公会科技]] LOGID_OSS_UNION_TECH = lua_log.reg("log/oss_unionTech_lv", "uuid,account_name,role_name,type,level", 300)
+    --[[金币流通--]] LOGID_OSS_JINBI = lua_log.reg("log/oss_money", "uuid,account_name,role_name,level,money,type,item_id,num,remain_money", 300)
+    --[[钻石流通--]] LOGID_OSS_GOLD = lua_log.reg("log/oss_gold", "uuid,account_name,role_name,level,gold,type,item_id,num,remain_gold", 300)
+    --[[友情值流通]] LOGID_OSS_FRIENDHEART = lua_log.reg("log/oss_friendheart", "uuid,account_name,role_name,level,friendheart,type,item_id,num,remain_friendheart", 300)
+    --[[道具流通--]] LOGID_OSS_ITEM = lua_log.reg("log/oss_item", "uuid,account_name,role_name,level,type,item_id,num,afterCount", 300)
+    --[[英雄流通--]] LOGID_OSS_HERO = lua_log.reg("log/oss_hero", "uuid,account_name,role_name,level,type,hero_id,num,hero_uuid, star", 300)
+    --[[符文流通--]] LOGID_OSS_FUWEN = lua_log.reg("log/oss_fuwen", "uuid,account_name,role_name,level,type,fuwen_id,num", 300)
+    --[[装备流通--]] LOGID_OSS_EQUIP = lua_log.reg("log/oss_equip", "uuid,account_name,role_name,level,type,equip_id,num, equip_uuid", 300)
+    --[[召唤法阵--]] LOGID_OSS_DRAWCARD = lua_log.reg( "log/oss_drawcard", "uuid,account_name,role_name,level,type,hero_ids,item_id,num,zuanshi,jifen", 300)
+    --[[战斗过程详细日志--]] LOGID_FIGHT_LOG = lua_log.reg("log/fight_log", "", 0)
+    --[[充值--]] LOGID_OSS_PAY = lua_log.reg("log/oss_pay", "uuid, account_name,role_name,level, billno, buyID, money, gold, online,region", 300)
+    --[[充值错误--]] LOGID_OSS_PAY_ERR =lua_log.reg("log/oss_pay_err", "account_name,result,billno, buyID, money, gold,region", 300)
+    --[[腾讯购买--]] LOGID_OSS_TENCENT_BUY = lua_log.reg("log/oss_tencent_buy", "uuid,account_name,role_name,logintype,openid,openkey,pf,yuanbao,buyID", 300)
+
+    --[[跨服相关调试日志--]] LOGID_MIDDLE_BT = lua_log.reg("log/err_middle_bt", "err", 0)
+
+    --[[怪物死亡]] LOGID_OSS_MONSTER =lua_log.reg("log/oss_die", "uuid,account_name,role_name,level,kill_id,name,map_id", 300)
+    --[[金币挑战]] LOGID_OSS_BATTLE_GOLD = lua_log.reg("log/oss_jbtz_lv", "uuid,account_name,role_name,lv", 300)
+    --[[经验挑战]] LOGID_OSS_BATTLE_EXP = lua_log.reg("log/oss_exptz_lv", "uuid,account_name,role_name,lv", 300)
+    --[[英雄挑战]] LOGID_OSS_BATTLE_HERO = lua_log.reg("log/oss_yxtz_lv", "uuid,account_name,role_name,lv", 300)
+    --[[黄金龙穴]] LOGID_OSS_BATTLE_DRAGON = lua_log.reg("log/oss_hjlx_lv", "uuid,account_name,role_name,lv", 300)
+    --[[水晶之地]] LOGID_OSS_BATTLE_CRYSTAL = lua_log.reg("log/oss_sjzd_lv", "uuid,account_name,role_name,lv", 300)
+    --[[灵兽深渊]] LOGID_OSS_BATTLE_MOSHOU = lua_log.reg("log/oss_mssz_lv", "uuid,account_name,role_name,lv", 300)
+
+    --[[主线关卡]] LOGID_OSS_BATTLE_MAINGATE = lua_log.reg("log/oss_maingate_lv", "uuid,account_name,role_name,lv", 300)
+    --[[恶魔之塔]] LOGID_OSS_BATTLE_DEMONTOWER = lua_log.reg("log/oss_demonTower_lv", "uuid,account_name,role_name,lv", 300)
+    --[[绝望深渊]] LOGID_OSS_BATTLE_DESPAIRABYSS = lua_log.reg("log/oss_despairAbyss_lv", "uuid,account_name,role_name,lv", 300)
+    --[[遗迹探险]] LOGID_OSS_BATTLE_RELIC = lua_log.reg("log/oss_relic_lv", "uuid,account_name,role_name,lv", 300)
+
+    --[[分享日志]] LOGID_OSS_SHARE = lua_log.reg("log/oss_share", "uuid, account_name, role_name, pf, appid, way", 300)
+    --[[online 0:离线,保存db,未发货1:在线发货 2:离线期间请求,上线后发货发货--]] 
+      LOGID_OSS_DELIVER = lua_log.reg("log/oss_deliver", "uuid, account_name,role_name,level, billno,money, type, itemId,cnt, online,region",300)
+    --[[英雄起源活动领取日志]] LOGID_OSS_PAYREWARD = lua_log.reg("log/oss_payreward", "uuid,account_name,role_name,week,type,gift_index", 300)
+    --[[英雄升级日志]] LOGID_OSS_HEROLVUP = lua_log.reg("log/oss_herolvup", "uuid,account_name,role_name,rerouuid,oldlv,newlv", 300)
+    --[[遗迹探险插入DB]] LOGID_OSS_YJTX_DB = lua_log.reg("log/oss_yjtx_db", "",0)
+    --[[竟技场-王者争霸]] LOGID_JJC_GODWAR = lua_log.reg("log/jjc_godwar","",0)
+    --[[开服活动]] LOGID_OSS_OPENSERVER_ACT = lua_log.reg("log/oss_openserver_act","",300)
+    --[[周循环活动]] LOGID_OSS_WEEKLOOP_ACT = lua_log.reg("log/week_loop_act","",300)
+    --[[代金券]] LOGID_OSS_VOUCHERSHOP = lua_log.reg("log/vouchershop","",300)
+    --[[通用日志]] LOGID_OSS_COMMON = lua_log.reg("log/oss_common","",300)
+end
+init()
+
+write = lua_log.write
+
+function writeItemLog(human, grid, count, logType, index)
+    local logTypeID = LogDefine.DEFINE[logType] + LogDefine.TYPE["item"]
+    write(
+        LOGID_OSS_ITEM,
+        human.db._id,
+        human.db.account,
+        human.db.name,
+        human.db.lv,
+        logTypeID,
+        grid.id,
+        count,
+        index or 0
+    )
+end
+
+function qqInfo(human)
+    return human.vopenid or 0, 0, 0, human.phpChanelID or "", 0
+end
+
+function writeShareLog(human, shareType)
+    --'1:微信好友分享,2:微信朋友圈,3:微博,4:QQ,5:QQ好友,6:其他'
+    write(LOGID_OSS_SHARE, human.db._id, human.db.account, human.db.name, human.pf, human.appid, shareType)
+end

+ 7 - 1
script/module/absAct/AbsActDefine.lua

@@ -52,4 +52,10 @@ OA_ACT_TYPE_501 = 501  -- 开服活动 英雄抽奖
 BILLBOARD_OPEN_SERVER_CHARGE = 1     -- 开服充值排行榜
 BILLBOARD_OPEN_SERVER_DRAW_CARD = 2  -- 开服招募排行榜
 
-BILLBOARD_MAX_CNT = 100          -- 最大上榜人数50人
+BILLBOARD_MAX_CNT = 100          -- 最大上榜人数50人
+
+-- 活动不清除数据ID
+ABS_ACT_NOCLEARID = 
+{
+    [ABS_ACT_TYPE_28]   = 1,
+}

+ 10 - 1
script/module/absAct/AbsActLogic.lua

@@ -192,6 +192,13 @@ function checkAbsActClean(human, id)
         human.db.absAct[id] = nil
         return
     end
+
+    -- 不清理数据活动直接返回
+    if AbsActDefine.ABS_ACT_NOCLEARID[config.type] == 1 then
+        print("[checkAbsActClean] abs活动不清理活动数据直接返回 id = \n", id)
+        return
+    end
+
     --临时处理积分兑换 下版本删掉
     if  human.db.absAct[id] and not human.db.absAct[id].finish then
         if config.type ==  AbsActDefine.ABS_ACT_TYPE_7  then 
@@ -207,7 +214,9 @@ function checkAbsActClean(human, id)
         end
         --限时周卡,铂金周卡活动设定是即使活动结束也要让玩家领完奖励,所以这里活动结束后暂时不清除数据,在对应模块中做清除数据操作
         --古玉充能活动,活动后不清除数据
-        if config.type ~= AbsActDefine.ABS_ACT_TYPE_12 and config.type ~= AbsActDefine.ABS_ACT_TYPE_28 or config.type ~= AbsActDefine.ABS_ACT_TYPE_29 then
+        if config.type ~= AbsActDefine.ABS_ACT_TYPE_12 and config.type ~= AbsActDefine.ABS_ACT_TYPE_28 
+            and config.type ~= AbsActDefine.ABS_ACT_TYPE_29 then
+            print("[checkAbsActClean] 清除数据 id = "..id)
             human.db.absAct[id] = nil
         end 
     end

+ 177 - 58
script/module/absAct/FestivalSevenDayCardLogic.lua

@@ -22,6 +22,20 @@ local Broadcast = require("broadcast.Broadcast")
 local MailManager = require("mail.MailManager")
 local MailExcel = require("excel.mail")
 local YunYingLogic = require("yunying.YunYingLogic")
+local Log = require("common.Log")
+
+local SEVENDAYCARD_STAUS_NOBUY  =   0       -- 未购买
+local SEVENDAYCARD_STAUS_BUY    =   1       -- 已购买
+local SEVENDAYCARD_STAUS_FINISH =   2       -- 已购买奖励��完�
+
+local SEVENDAYCARD_TOTALDAY = 7             -- �续时间
+local SEVENDAYCARD_GIFTGET = 1              -- 礼包已领�
+
+local SEVENDAYCARD_ID = 742                 -- 活动ID
+
+function SEVENDAYCARD_WRITELOG(human, szText)
+    Log.write(Log.LOGID_OSS_COMMON, "[�时周�]".." id = "..human.db._id.." name = "..human.db.name..szText)
+end
 
 function isOpen(human, YYInfo, funcConfig)
     local state, endTime, startTime = AbsActLogic.isStarted(human, funcConfig.funcID)
@@ -48,14 +62,25 @@ function fontFestvialSevenDayCard(human,config,net,id,giftId)
     end
     net.dayItem[0] = len
     BuyLogic.fontBuyItem(human, net.buyItem, config.buyID)
-    net.state = human.db.absAct[id].card and (human.db.absAct[id].card[giftId] and 1 or 0) or 0
+    net.state = human.db.absAct[id] and (human.db.absAct[id].nStatus == SEVENDAYCARD_STAUS_BUY and 1 or 0) or 0
 end
 
 
+-- �放邮件奖励
+local function SevenDayCard_SendMail(human, cardConfig, dayIndex)
+    local mailId = cardConfig.mailId
+    local mailConfig = MailExcel.mail[mailId]
+    local title = mailConfig.title
+    local senderName = mailConfig.senderName
+    local content = Util.format(mailConfig.content, 7, dayIndex) 
+    MailManager.add(MailManager.SYSTEM, human.db._id, title, content, cardConfig.item[dayIndex], senderName)
+    print("[SevenDayCard_SendMail] ��周�邮件奖励 name = "..human.db.name.." dayIndex = "..dayIndex)
+end
+
 function getAndSendMsg(human,id)
-    -- ÅжϻÊÇ·ñ¿ªÆô
+    -- 判断活动是�开�
     local state, endTime, starTime = AbsActLogic.isStarted(human, id)
-    print("festvialCard",state, endTime, starTime)
+    print("getAndSendMsg ",state, endTime, starTime, id)
     if not state then return end
 
     local absConfig = AbsActExcel.absActivity[id]
@@ -80,38 +105,55 @@ function getAndSendMsg(human,id)
 end
 
 function festvialCard(human,id,conf)
+    local szLogText = " [festvialCard] "
     local giftId = conf.args[1]
     local state, endTime, starTime = AbsActLogic.isStarted(human, id)
-    if not state then return end
+    if not state then
+        SEVENDAYCARD_WRITELOG(human,szLogText.."活动未开�")
+        return 
+    end
 
     local absConfig = AbsActExcel.absActivity[id]
-    if not absConfig then return end
+    if not absConfig then 
+        SEVENDAYCARD_WRITELOG(human,szLogText.."�存在对应�置 id = "..id)
+        return
+    end
 
     local absAct = human.db.absAct[id]
     if not absAct then
         return
     end
-    absAct.card = absAct.card or {}
-    if absAct.card and absAct.card[giftId] then
-        return
-    end
 
-    absAct.card[giftId] = {}
-    absAct.card[giftId].day = 1
-    local dayIndex = absAct.card[giftId].day
+    -- 状�设置为已购买
+    absAct.nStatus = SEVENDAYCARD_STAUS_BUY
+    -- 记录购买时间
+    absAct.nBuyTime = os.time()
+
+    local nDay = 1
+    absAct.giftId = giftId
+    absAct.day = Util.setBit(0, nDay)
+
+    -- absAct.card = absAct.card or {}
+    -- if absAct.card and absAct.card[giftId] then
+    --     SEVENDAYCARD_WRITELOG(human,szLogText.."存在旧的数� id = "..id.." giftId = "..giftId)
+    --     return
+    -- end
+
+    -- absAct.card[giftId] = {}
+    -- absAct.card[giftId].day = Util.setBit(0, nDay)
+
     local cardConfig = AbsActExcel.festvialSevenDayCard[giftId]
 
     BagLogic.addItemList(human, cardConfig.zuanshi, "festival_seven_day_card")   
 
     if cardConfig then
-        -- ¼õÈ¥Ò»Ìì
-        local mailId = cardConfig.mailId
-        local mailConfig = MailExcel.mail[mailId]
-        local title = mailConfig.title
-        local senderName = mailConfig.senderName
-        local content = Util.format(mailConfig.content, 7, dayIndex) 
-        MailManager.add(MailManager.SYSTEM, human.db._id, title, content, cardConfig.item[dayIndex], senderName)
+        -- �去一天
+        SevenDayCard_SendMail(human, cardConfig, nDay)
     end
+
+    print("[festvialCard] id = "..id.." giftId = "..giftId.." day = "..absAct.day)
+
+    SEVENDAYCARD_WRITELOG(human,szLogText.."玩家购买了�时周�, ��了第一天奖励 id = "..id.." giftId = "..giftId.." day = "..absAct.day)
     
     getAndSendMsg(human, id)
     
@@ -121,46 +163,85 @@ function festvialCard(human,id,conf)
 end
 
 function updateDaily(human,id)
+    local szLogText = " [updateDaily] "
     local config = AbsActExcel.absActivity[id]
-    if not config then return end
-    
+    if not config then
+        SEVENDAYCARD_WRITELOG(human, szLogText.." �存在对应�置 id = "..id)
+        return
+    end
+
     AbsActLogic.checkAbsActClean(human, id)
-    -- ÓÐÎÞ¼¤»î¼Ç¼
+     -- 有无激活记录
     local absAct = human.db.absAct[id]
-    if not absAct then return end
-    
-    if not absAct.card then
+    if not absAct then
+        SEVENDAYCARD_WRITELOG(human, szLogText.." �存在对应数� id = "..id)
+        return
+    end
+
+    if not absAct.nStatus or SEVENDAYCARD_STAUS_BUY ~= absAct.nStatus then
         return
     end
-    -- ·¢·Å½±Àø
-    for giftId, v in pairs(absAct.card) do
-        if type(v) == "table" and v.day and v.day < 7 then
-            v.day = v.day + 1
-            local dayIndex = v.day
+
+    -- �放奖励
+    local bClear = false
+    local nBuyTime = absAct.nBuyTime
+    local giftId = absAct.giftId
+    
+    local nDiffDay = -1
+    nDiffDay = Util.diffDay(nBuyTime)
+    if nDiffDay ~= -1 then
+        if nDiffDay >= SEVENDAYCARD_TOTALDAY then
+            bClear = true
+        end
+    end
+    
+    table.print_lua_table(absAct)
+    local bRet = true == bClear and 1 or 0
+    print("[updateDaily] nDiffDay = "..nDiffDay.." bRet = \n"..bRet)
+
+    if false == bClear then
+        local nNowDay = nDiffDay + 1
+        local nFlag = Util.getBit(absAct.day, nNowDay)
+        print("[updateDaily] nDiffDay = "..nDiffDay.." nNowDay = "..nNowDay.." day = "..absAct.day.." nFlag = ".. nFlag)
+        if nFlag == 0 then
+            absAct.day = Util.setBit(absAct.day, nNowDay)
+
+            local dayIndex = nNowDay
             local cardConfig = AbsActExcel.festvialSevenDayCard[giftId]
             if cardConfig then
-                -- ¼õÈ¥Ò»Ìì
-                local mailId = cardConfig.mailId
-                local mailConfig = MailExcel.mail[mailId]
-                local title = mailConfig.title
-                local senderName = mailConfig.senderName
-                local content = Util.format(mailConfig.content, 7, dayIndex) 
-                MailManager.add(MailManager.SYSTEM, human.db._id, title, content, cardConfig.item[dayIndex], senderName)
+                -- �去一天
+                SevenDayCard_SendMail(human, cardConfig, dayIndex)
             end
-            
-            clean = true
-            -- ÓÐÊý¾Ý¾Í Ìø³öÖØÖÃÁ÷³Ì
-            if v.day <= 7 then
-                clean = false
-            else
-                -- СÓÚ0µÄ Çå³ýµô
-                absAct.card[giftId] = nil
+
+            SEVENDAYCARD_WRITELOG(human, szLogText.." 正常�放了�时周�奖励 id = "..id.." nNowDay = "..nNowDay)
+            if nNowDay == SEVENDAYCARD_TOTALDAY then
+                absAct.nStatus = SEVENDAYCARD_STAUS_FINISH
             end
+        else
+            print("[updateDaily] 当天��登录 = "..nDiffDay.." day = "..absAct.day.." nNowDay = "..nNowDay.." nFlag = "..nFlag)
         end
-    end
+    else
+        print("[updateDaily] 已过期 nDiffDay = "..nDiffDay.." absAct.day = "..absAct.day)
+        -- 检测一�,如果还有就直接�
+        for i = 1, SEVENDAYCARD_TOTALDAY, 1 do
+            local nFlag = Util.getBit(absAct.day, i)
+            print("[updateDaily] 已过期 nDiffDay = "..nDiffDay.." absAct.day = "..absAct.day.." i = "..i .." nFlag = "..nFlag)
+            if 0 == nFlag then
+                absAct.day = Util.setBit(absAct.day, i)
 
-    if clean and not next(absAct.card) then
-        human.db.absAct[id] = { endTime = config.realEndTime }
+                local dayIndex = i
+                local cardConfig = AbsActExcel.festvialSevenDayCard[giftId]
+                if cardConfig then
+                    -- �去一天
+                    SevenDayCard_SendMail(human, cardConfig, dayIndex)
+                else
+                    print("[updateDaily] 过期但是�存在对应的�置")
+                end
+
+                SEVENDAYCARD_WRITELOG(human, szLogText.." 判断玩家已�过了7天但是有奖励没有领� �放了�时周�奖励 id = "..id.." nNowDay = "..i)
+            end
+        end
+        absAct.nStatus = SEVENDAYCARD_STAUS_FINISH
     end
 end
 
@@ -171,17 +252,55 @@ function isRed(human, YYInfo, funcConfig)
     local absAct = human.db.absAct[funcConfig.funcID]
     if not absAct then return end
 
-    
-    if not absAct.card then
-        return true
+    return false
+end
+
+function SEVENDAYCARD_GMCLEAR(human, id)
+    human.db.absAct[id] = {}
+    human.db.absAct[id].card = nil
+    print("[SEVENDAYCARD_GMCLEAR] �置�功 id = "..id)
+end
+
+function onLogin(human, funcID)
+    print("[onLogin] 玩家登入�时周� 111")
+    local tAbsAct = human.db.absAct[SEVENDAYCARD_ID]
+    if tAbsAct then
+        table.print_lua_table(tAbsAct)
+        if tAbsAct.nStatus then
+            print("[onLogin] nStatus = \n", tAbsAct.nStatus) 
+        end
+    else
+        print("[onLogin] �存在对应的数�了")
     end
 
-    local config = AbsActExcel.festvialSevenDayCard
-    local len = #config 
-    for i = 1,len do
-        if not absAct.card[i] then
-            return true
+    if tAbsAct and SEVENDAYCARD_STAUS_BUY == tAbsAct.nStatus then
+        print("[onLogin] 玩家登入�时周� 2222")
+        local nDiffDay = Util.diffDay(tAbsAct.nBuyTime)
+        local nCheckDay = nDiffDay + 1 >= SEVENDAYCARD_TOTALDAY and SEVENDAYCARD_TOTALDAY or nDiffDay + 1
+        local giftId = tAbsAct.giftId
+        print("[onLogin] 玩家登入�时周� nDiffDay = "..nDiffDay.." nCheckDay = "..nCheckDay)
+
+        for i = 1, nCheckDay, 1 do
+            local nFlag = Util.getBit(tAbsAct.day, i)
+            print("[onLogin] 玩家登入�时周� day = "..tAbsAct.day.." nFlag = "..nFlag)
+
+            if 0 == nFlag then
+                tAbsAct.day = Util.setBit(tAbsAct.day, i)
+                print("[onLogin] 玩家登入�时周� tAbsAct.day = "..tAbsAct.day)
+                local dayIndex = i
+                local cardConfig = AbsActExcel.festvialSevenDayCard[giftId]
+                if cardConfig then
+                    -- �去一天
+                    SevenDayCard_SendMail(human, cardConfig, dayIndex)
+                end
+
+                SEVENDAYCARD_WRITELOG(human, "[onLogin] 玩家登录检测 ".." �放了�时周�奖励 nNowDay = "..i)
+
+                if SEVENDAYCARD_TOTALDAY == i then
+                    tAbsAct.nStatus = SEVENDAYCARD_STAUS_FINISH
+                    break
+                end                    
+            end
         end
-    end 
-    return false
+    end
 end

+ 4 - 0
script/module/chat/Gm.lua

@@ -19,6 +19,7 @@ local CombatDefine = require("combat.CombatDefine")
 local ItemDefine = require("bag.ItemDefine")
 local MiddleConnect = require("middle.MiddleConnect")
 local BuyLogic = require("topup.BuyLogic")
+local FestivalSevenDayCardLogic = require("absAct.FestivalSevenDayCardLogic")
 
 d3 = {}
 
@@ -1915,4 +1916,7 @@ function d3.zljd(human, value)
 	local WarOrder = require("shop.WarOrder")
 	WarOrder.warOrderUnlock(human,orderType)
 	WarOrder.trigger(human, orderType, cnt)
+end
+function d3.delSevenDayCard(human, id)
+	FestivalSevenDayCardLogic.SEVENDAYCARD_GMCLEAR(human, id)
 end