Selaa lähdekoodia

改名后台功能

wanggangzero 9 kuukautta sitten
vanhempi
commit
f6b75ef90c

+ 5 - 0
Gameserver/App/base/CmdCode.php

@@ -117,6 +117,11 @@ class CmdCode {
      */
     const cmd_user_clearFunUnlockInfo = 6009;
 
+    /**
+     * 改名
+     */
+    const user_rename = 6010;
+
 // </editor-fold>
 // <editor-fold defaultstate="collapsed" desc="活动操作码 - 61xx">
 

+ 10 - 26
Gameserver/App/model/User/Info_PrivateState.php

@@ -56,32 +56,6 @@ class Info_PrivateState extends Object_ext {
     public $cashShopReceived = array();
     public $supplyBichuDic = null;
 
-//    public $supplyShopNum_JunyongBox = 0;
-//
-//    public $supplyShopNum_BujiBox = 0;
-//    /**
-//     * 军用物资箱 X次必出后重置
-//     * @var type
-//     */
-//    public $supplyShop_JunyongBoxBichuNum = 0;
-//
-//    /**
-//     * 补给箱 X次必出后重置
-//     * @var type
-//     */
-//    public $supplyShop_BujiBoxBichuNum = 0;
-//    /**
-//     * 军用物资箱是否已经有必出了
-//     * @var type
-//     */
-//    public $supplyShop_JunyongBoxBichu = 0;
-//
-//    /**
-//     * 补给箱 是否已经有必出了
-//     * @var type
-//     */
-//    public $supplyShop_BujiBoxBichu = 0;
-
     /**
      * 每天买的数量,每日重置(S级军备和补给箱)
      * @var type
@@ -286,6 +260,16 @@ class Info_PrivateState extends Object_ext {
      */
     public $challange_RedMask = 0;
 
+    /**
+     * @var array 曾用名列表
+     */
+    public $HistoryNames = array();
+
+    /**
+     * @var int 上次改名时间戳
+     */
+    public $lastRenameTs = 0;
+
     public function initialize() {
         $this->junbeiShopNumRecord = new \stdClass();
         $this->junbeiShop_AllNumRecord = new \stdClass();

+ 24 - 0
Gameserver/App/process/FightProc.php

@@ -1302,6 +1302,30 @@ class FightProc {
         }
     }
 
+    /*
+     * 排行玩家修改昵称
+     */
+
+    public static function UpdateRankUserName($uid, $newName) {
+        $memKey1 = MemKey_GameRun::RankReward_MainGateIndex_Zone_hash(req()->zoneid);
+        $dic = gMem()->hgetall($memKey1);
+        foreach ($dic as $gateId => $ins_rank) {
+            if ($ins_rank->uid == $uid) {
+                $ins_rank->name = $newName;
+                gMem()->hset($memKey1, $gateId, $ins_rank);
+            }
+        }
+
+        $memKey2 = MemKey_GameRun::RankReward_FightPower_Zone_hash(req()->zoneid);
+        $dic2 = gMem()->hgetall($memKey2);
+        foreach ($dic2 as $fightPower => $ins_rank) {
+            if ($ins_rank->uid == $uid) {
+                $ins_rank->name = $newName;
+                gMem()->hset($memKey2, $fightPower, $ins_rank);
+            }
+        }
+    }
+
     /*
      * 排行玩家头像变动
      */

+ 42 - 19
Gameserver/App/process/UserProc.php

@@ -34,29 +34,52 @@ class UserProc {
                 return UserProc::delUserUid();
             case CmdCode::cmd_user_removeNewHeadImgTip:                         # 6007 移除新头像标志
                 return UserProc::removeNewHeadImgTip();
-            case CmdCode::cmd_user_readAnnouncement:                            # 6008 读公告记录 
+            case CmdCode::cmd_user_readAnnouncement:                            # 6008 读公告记录
                 return UserProc::readAnnouncement();
             case CmdCode::cmd_user_clearFunUnlockInfo:                          # 6009 重置功能解锁记录信息
                 return UserProc::clearFunUnlockInfo();
+
+            case CmdCode::user_rename:                                          # 6010 改名
+                return self::ReName();
             default:
                 Err(ErrCode::cmd_err);
         }
     }
-    
+
+    /**
+     * 6010 玩家改名
+     */
+    public static function ReName() {
+        list($newName) = req()->paras;
+        $historyNames = ctx()->privateData()->HistoryNames;
+        $n = count($historyNames);
+        $arr = explode(',', glc()->Rename_Cost);                                # 花费数组
+        $cost = ($n > count($arr) ) ? $arr[count($arr) - 1] : $arr[$n];         # 本次改名花费
+        my_Assert((ctx()->privateData()->lastRenameTs + glc()->Rename_Cooldown) < now(), "改名功能冷却中");
+        my_Assert(ctx()->base()->Consume_Cash($cost), "元宝不足!");
+        my_Assert(self::checkRoleNameNotExist($newName), "昵称已存在, 请重新命名.");
+        $historyNames[] = ctx()->base()->name;
+        ctx()->privateData()->HistoryNames = $historyNames;
+        ctx()->privateState->lastRenameTs = now();
+        ctx()->base()->name = $newName;
+        self::updateUserInfo();                                                 # 回存数据
+        FightProc::UpdateRankUserName(req()->uid, $newName);                    # 刷新排行榜上的昵称
+        return Resp::ok();
+    }
+
     /**
      * 6009 重置功能解锁记录信息
      */
     public static function clearFunUnlockInfo() {
-        list($type,$id) = req()->paras;
+        list($type, $id) = req()->paras;
 
-        if($type == 1 && in_array($id,ctx()->privateState->funUnlockRecord)){
-            StlUtil::arrayRemove(ctx()->privateState->funUnlockRecord,$id);  
+        if ($type == 1 && in_array($id, ctx()->privateState->funUnlockRecord)) {
+            StlUtil::arrayRemove(ctx()->privateState->funUnlockRecord, $id);
         } elseif ($type == 2) {
-            $mo = GameConfig::skills_getItem($id);         
-            if(in_array($mo->typeId,ctx()->privateState->skillUnlockRecord)){
-                StlUtil::arrayRemove(ctx()->privateState->skillUnlockRecord,$mo->typeId); 
+            $mo = GameConfig::skills_getItem($id);
+            if (in_array($mo->typeId, ctx()->privateState->skillUnlockRecord)) {
+                StlUtil::arrayRemove(ctx()->privateState->skillUnlockRecord, $mo->typeId);
             }
-             
         } elseif ($type == 3) {
             ctx()->privateState->oldLevel = 0;
             ctx()->privateState->upLevel = 0;
@@ -68,7 +91,7 @@ class UserProc {
     }
 
     /**
-     * 6008 读公告记录 
+     * 6008 读公告记录
      */
     public static function readAnnouncement() {
         list($id) = req()->paras;
@@ -116,7 +139,7 @@ class UserProc {
         // <editor-fold defaultstate="collapsed" desc="清理mongodb中的数据">
         self::deleteUserMapData(req()->uid, req()->zoneid);
 
-        // </editor-fold>                   
+        // </editor-fold>
 
         FightProc::DeleteRankInvalidUser(req()->uid);
         self::delRegRole(req()->zoneid, req()->uid, ctx()->baseInfo->name);
@@ -324,9 +347,9 @@ class UserProc {
             $game->RegenNewToken();
             $game->baseInfo->Reset_tilits();
             self::OnLogin_DateDeal();
-                       
+
             UserProc::updateUserInfo();                                         # 这一步回存操作只有在 userInfo正常存在的情况下才进行
-           
+
             return $resp;
         } else {                                                                # 2.如果玩家已存在,则处理普通登录流程
             req()->game = $game;                                                # 给Req挂载玩家数据
@@ -335,11 +358,11 @@ class UserProc {
             //PayProc::m_refreshChargeOrders();                                   # 刷新订单, 多平台版本
             //PayProc::checkDeltest();                                            # 检查内侧充值记录(函数内部会只检查一次)
             //self::checkMissOrder();                                             #校验是否有漏单
-            $game->RegenNewToken();                 
+            $game->RegenNewToken();
             UserProc::updateUserInfo();                                         # 这一步回存操作只有在 userInfo正常存在的情况下才进行
 
             self::OnLogin_DateDeal();
-            
+
             $resp = Resp::ok($game);                                            # 设置返回值
             self::updtateUserZoneInfo();                                        # 1. 更新玩家分区记录
         }
@@ -355,7 +378,7 @@ class UserProc {
      * @return boolean
      */
     static function checkRoleNameNotExist($roleName) {
-        return true;                                                            # 不再检查昵称重复
+//        return true;                                                            # 不再检查昵称重复
         static $sqlFormat = "SELECT count(*) as rows FROM `tab_rolename` WHERE roleName='%s';";
         $sql = sprintf($sqlFormat, $roleName);
         $n = daoInst()->query($sql)->fetch();
@@ -440,11 +463,11 @@ class UserProc {
         EmailProc::IsExistRedTip();
         FightProc::isExistNoDrawed_FightPower();
         FightProc::isExistNoDrawed_MainGate();
-        
+
         FightProc::Ranking_FightPower();
-        
+
         TaskProc::OnLogin_Daily();
-        TaskProc::OnLogin_day7();     
+        TaskProc::OnLogin_day7();
         TaskProc::checkMainTask();
     }