瀏覽代碼

拍卖和言灵升级

cyzhao 4 年之前
父節點
當前提交
c2da31e2c1

+ 7 - 17
Gameserver/Amfphp/model/User/Ins_AuctionItemModel.php

@@ -26,6 +26,12 @@ class Ins_AuctionItemModel {
      * @var string  "itemid,num;itemid,num;..."
      */
     public $contents; # 物品内容
+    
+    /**
+     * 消耗类型
+     * @var type
+     */
+    public $costType; # 消耗类型
 
     /**
      * 起拍价
@@ -87,21 +93,5 @@ class Ins_AuctionItemModel {
     public $currpeopleid; # 当前最高价者ID
     public $currpeoplename; # 当前最高价者昵称
     public $result; # 拍卖结果, 结算以后会有:成交,流拍
-    
-    
-    /**
-     * 
-     * @param array $arr 来源
-     * @return AuctionItemModel 
-     */
-    public static function LoadModel($dic) {
-        $ret = new Ins_AuctionItemModel();      
-        foreach ($ret as $key => $value) {
-            if (StlUtil::dictHasProperty($dic, $key)) {
-                $ret->$key = $dic->$key;
-            }
-        }
-        
-        return $ret;
-    }
+   
 }

+ 59 - 42
Gameserver/Amfphp/process/AuctionProc.php

@@ -37,7 +37,7 @@ class AuctionProc {
             $obj = self::updateAuctionUserItemListCache(); # 更新玩家列表
         }
         $ret = array(
-            "auctionitems" => $obj->data,
+            "auction" => $obj->data,
                 //"bidRecord" => $req->userInfo->privateState->arrUserlAucBidItems # 加一个出价记录
         );
 
@@ -72,26 +72,38 @@ class AuctionProc {
     }
 
     /**
-     * 竞拍/一口价-----暂时没有竞拍,只有一口价
+     * 竞拍/一口价-7404 ----暂时没有竞拍,只有一口价
      */
     static function UserAuctionBidItem() {
         list($uId) = req()->paras;
         $aucItem = self::getAuctionItem($uId);
-        $price = $itemMo->buyoutPrice + intval($itemMo->buyoutPrice * 0.05);
-        my_Assert(req()->userInfo->game->baseInfo->cash >=$price, ErrCode::notenough_cash_msg);
-        //扣除钻石--交易费用 + 手续费
-        req()->userInfo->game->baseInfo->cash -= $price; 
-               
+        
+        $costType = $aucItem->costType;
+        $buyoutPrice = $aucItem->buyoutPrice;
+              
+        $price = $buyoutPrice + intval($buyoutPrice * 0.05);
+        if($costType == META_GOLD_ITEMID){                       
+            my_Assert(req()->userInfo->game->baseInfo->gold >=$price, ErrCode::notenough_gold_msg);
+            //扣除金币--交易费用 + 手续费
+            req()->userInfo->game->baseInfo->gold -= $price; 
+        } else if($costType == META_CASH_ITEMID){
+            my_Assert(req()->userInfo->game->baseInfo->cash >=$price, ErrCode::notenough_cash_msg);
+            //扣除钻石--交易费用 + 手续费
+            req()->userInfo->game->baseInfo->cash -= $price; 
+        }           
+                      
         //更新表里的交易状态
         $aucItem->result = "完成";
         $aucItem->currpeopleid = req()->uid;
-        $aucItem->currpeoplename = req()->userInfo->game->baseInfo->name;
-        self::settleAuctionItem($aucItem); # 更新数据库
+        $aucItem->currpeoplename = req()->userInfo->game->baseInfo->name;     
+        
+        $err = self::settleAuctionItem($aucItem); # 更新数据库     
 //更新拍品缓存
+
         $obj = self::updateAuctionUserItemListCache();        
 //发送邮件,给拍品
         $sList = explode(',', $aucItem->contents);
-        EmailProc::SendAuctionItemsMail($zoneid, $uid, $sList[0], $sList[1]); 
+        EmailProc::SendAuctionItemsMail(req()->zoneid, req()->uid, $sList[0], $sList[1]); 
               
         UserProc::updateUserInfo();                                             # 回写玩家数据
         return Resp::ok(array(
@@ -121,34 +133,36 @@ class AuctionProc {
      * @return type
      */
     static function UploadAuctionItems() {
-        list($itemId, $num, $price, $buyoutPrice) = req()->paras; //上传拍品的 id 数量 竞拍价 一口价
+        list($itemId, $num) = req()->paras; //上传拍品的 id 数量 竞拍价 一口价
 
         $user = req()->userInfo->game; 
 
         my_Assert(StlUtil::dictHasProperty($user->store->items, $itemId), ErrCode::store_itemno_err); # 参数合法性判断
-        $auctionPrice = GameConfig::item_base_getItem($itemId)->auctionPrice;
-        my_Assert($auctionPrice * $num <= $price && $auctionPrice * $num <= $buyoutPrice, ErrCode::store_itemno_err); # 参数合法性判断
-
+        $mo = GameConfig::item_base_getItem($itemId);
+        my_Assert($mo != null, ErrCode::err_const_no);
+        $auctionPrice = explode(',',$mo->auctionPrice); 
+       
         StoreProc::removeItemFromStore($user->store, $itemId, $num);
-
+       
         $aucItem = new Ins_AuctionItemModel();
         $aucItem->addstep = 1;
         $aucItem->contents = $itemId.",".$num;
-        $aucItem->startprice = $price;
-        $aucItem->buyoutPrice = $buyoutPrice;
+        $aucItem->costType = $auctionPrice[0];
+        $aucItem->startprice = 0;
+        $aucItem->buyoutPrice = $buyoutPrice[1]*$num;
         $aucItem->startts = time();
         $aucItem->endts = glc()->AuctionEndTs * 60 * 60 + time(); # 24小时 
         $aucItem->sellerid = req()->uid;
         $aucItem->sellername = $user->baseInfo->name;
-        $aucItem->zoneid = req()->zoneid;
+        $aucItem->zoneid = req()->zoneid;              
         $err = self::insertNewUserAuctionItem($aucItem);
-        if($err == 0){
-            return ;
-        }
-        
+       
+        my_Assert($err == 1, ErrCode::err_db);
+      
         # 插入成功后,更新缓存
-        # 写入玩家数据   
-        $auctionDic = self::updateAuctionUserItemListCache(); # 更新缓存
+        # 写入玩家数据
+        $auctionDic = self::updateAuctionUserItemListCache(); # 更新缓存    
+        
         req()->userInfo->game = $user;      
         UserProc::updateUserInfo();                                             # 回写玩家数据
         return Resp::ok(array(
@@ -182,8 +196,8 @@ class AuctionProc {
         $paydb = daoInst();              
         $sql = "INSERT INTO `tab_auctionitems` (contents,startprice,buyoutPrice,startts,endts,sellerid,sellername,auchistory,zoneid) VALUES ('%s',%d,%d,%d,%d,'%s','%s','{}',%d)";
         $query = sprintf($sql, $aucItem->contents, $aucItem->startprice,$aucItem->buyoutPrice,$aucItem->startts, #
-                $aucItem->endts, $aucItem->sellerid, mysql_real_escape_string($aucItem->sellername), $aucItem->zoneid);
-       $result = $paydb->exec($query);           
+                $aucItem->endts, $aucItem->sellerid, mysql_real_escape_string($aucItem->sellername), $aucItem->zoneid);     
+        $result = $paydb->exec($query);          
         return $result;
     }
     
@@ -192,14 +206,14 @@ class AuctionProc {
      * @param type $mem
      * @return array
      */
-    static function updateAuctionUserItemListCache() {     
-        $aucOfficial = self::getAuctionUserItemList(req()->zoneid); // 查询拍品列表
+    static function updateAuctionUserItemListCache() {       
+        $aucOfficial = self::getAuctionUserItemList(req()->zoneid); // 查询拍品列表                
         $obj = array(
-            'ts' => CommUtil:: tsCurrent(),
-            'data' => $aucOfficial
+            'ts' => time(),
+            'data' => $aucOfficial,
         );
-            
-        gMem()->set(self:: auctionItemListCache($zoneid), $obj); # 写入缓存
+             
+        gMem()->set(self:: auctionItemListCache(req()->zoneid), $obj); # 写入缓存      
         return json_decode(json_encode($obj));
     }
     /**
@@ -207,8 +221,8 @@ class AuctionProc {
      * @return array
      */
     static function getAuctionUserItemList($zoneid = 1) {
-        $now = time(); # 当前时间戳
-        $sql = "SELECT * from tab_auctionitems WHERE zoneid=$zoneid and $now < endts and $now > startts"; 
+        $now = time(); # 当前时间戳       
+        $sql = "SELECT * from tab_auctionitems WHERE zoneid=$zoneid and $now < endts and $now >= startts"; 
         $paydb = daoInst();
         $result = $paydb->query($sql)->fetchAll();
         return $result; # 索引数组
@@ -223,7 +237,7 @@ class AuctionProc {
         $sql = "SELECT * from tab_auctionitems WHERE itemid = $aucItemId";
         $paydb = daoInst();
         $result = $paydb->query($sql)->fetchAll();
-      
+       
         return $result[0]; # 索引数组
     }
     
@@ -231,11 +245,13 @@ class AuctionProc {
      * 结算更新
      * @param AuctionItemModel $aucItem
      */
-    static function settleAuctionItem($aucItem) {
-        $sql = "UPDATE `tab_auctionitems` set result = '%s',currpeopleid = '%s',currpeoplename = '%s' where itemid=%s";
-        $query = sprintf($sql, $aucItem->result, $aucItem->currpeopleid,$aucItem->currpeoplename, $aucItem->itemid);
+    static function settleAuctionItem($aucItem) {         
+        $sql = "UPDATE `tab_auctionitems` set result = '%s',currpeopleid = '%s',currpeoplename = '%s' where itemid = '%d'";
+        $query = sprintf($sql, $aucItem->result, $aucItem->currpeopleid,$aucItem->currpeoplename,$aucItem->itemid);
+        
         $paydb = daoInst();
-        $paydb->exec($sql);             
+        $result = $paydb->exec($query);             
+        return $result;
     }
     
     /**
@@ -243,10 +259,11 @@ class AuctionProc {
      * @param type $aucItem
      */
     static function updateAuctionItemState($aucItem) {
-        $sql = "UPDATE `tab_auctionitems` set result = '%s' where itemid=%s";
-        $query = sprintf($sql, $aucItem->result, $aucItem->itemid);
+        $sql = "UPDATE `tab_auctionitems` set result = '%s' where itemid='%d'";
+        $query = sprintf($sql,$aucItem->result, $aucItem->itemid);
         $paydb = daoInst();
-        $paydb->exec($sql);             
+        $result = $paydb->exec($query);             
+        return $result;
     }
     
     /**

+ 8 - 5
Gameserver/Amfphp/process/HeroProc.php

@@ -699,7 +699,7 @@ class HeroProc {
      * 言灵升星--改成突破【2021-6-8】    2021.4(cyzhao)
      * @return resp
      */
-    static function StrengthenStar() {
+    static function StrengthenStar_old() {
         list($yanlingUid, $uidList) = req()->paras;
         $store = req()->userInfo->game->store;
         my_Assert(StlUtil::dictHasProperty($store->yanling, $yanlingUid), ErrCode::hero_yanling_notfound);
@@ -748,8 +748,11 @@ class HeroProc {
         UserProc::updateUserInfo();
         return Resp::ok(array('store' => req()->userInfo->game->store,));
     }
-    
-    static function StrengthenStar_new() {
+    /**
+     * 新的突破
+     * @return type
+     */
+    static function StrengthenStar() {
         list($uid) = req()->paras;                                              # 参数 言灵uid(指定进阶的言灵实例id)
         $user = req()->userInfo->game;
         $yanling = $user->store->yanling;
@@ -790,7 +793,7 @@ class HeroProc {
      * 言灵升级
      * @return type
      */
-    static function YanlinUpLevel_new() {
+    static function YanlinUpLevel() {
         list($uid,$yanlingList, $items) = req()->paras;                                        # 参数 言灵uid(指定进阶的言灵实例id)
         $user = req()->userInfo->game;
         $yanling =  $user->store->yanling;
@@ -857,7 +860,7 @@ class HeroProc {
     /** 6327
      * 言灵升级  2021.4(cyzhao)
      */
-    static function YanlinUpLevel() {
+    static function YanlinUpLevel_old() {
         list($yanlingUid, $type) = req()->paras;                                # 参数: 言灵uid,升级类型:1/5级.
         $store = ctx()->store();
         my_Assert(StlUtil::dictHasProperty($store->yanling, $yanlingUid), ErrCode::hero_yanling_notfound);