|
@@ -32,8 +32,10 @@ class AuctionProc {
|
|
|
* 获取全部拍卖信息
|
|
|
*/
|
|
|
static function GetAuctionItemsInfo() {
|
|
|
- $obj = self::getAuctionUserItemListCache(req()->zoneid);
|
|
|
-
|
|
|
+ $obj = self::getAuctionUserItemListCache();
|
|
|
+ if ($obj == null || $obj->ts < TimeUtil::tsCurrent(-3)) { # 查不到缓存,或者缓存是3秒以前的
|
|
|
+ $obj = self::updateAuctionUserItemListCache(); # 更新玩家列表
|
|
|
+ }
|
|
|
$ret = array(
|
|
|
"auctionitems" => $obj->data,
|
|
|
//"bidRecord" => $req->userInfo->privateState->arrUserlAucBidItems # 加一个出价记录
|
|
@@ -48,10 +50,12 @@ class AuctionProc {
|
|
|
/**
|
|
|
* 玩家上架拍品信息
|
|
|
*/
|
|
|
- static function GetUserUploadAuctionItems() {
|
|
|
+ static function GetUserUploadAuctionItems() {
|
|
|
+ $list = self::getMyAuctionItems();#上架信息
|
|
|
+
|
|
|
UserProc::updateUserInfo(); # 回写玩家数据
|
|
|
return Resp::ok(array(
|
|
|
- "store" => "ok",
|
|
|
+ "auction" => $list,
|
|
|
));
|
|
|
}
|
|
|
|
|
@@ -59,21 +63,39 @@ class AuctionProc {
|
|
|
* 玩家竞拍信息
|
|
|
*/
|
|
|
static function GetUserAuctionItems() {
|
|
|
+ $result = self::selectMyAuctionBid();
|
|
|
+
|
|
|
UserProc::updateUserInfo(); # 回写玩家数据
|
|
|
return Resp::ok(array(
|
|
|
- "store" => "ok",
|
|
|
+ "auction" => $result,
|
|
|
));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 竞拍/一口价
|
|
|
+ * 竞拍/一口价-----暂时没有竞拍,只有一口价
|
|
|
*/
|
|
|
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;
|
|
|
+
|
|
|
+ //更新表里的交易状态
|
|
|
+ $aucItem->result = "完成";
|
|
|
+ $aucItem->currpeopleid = req()->uid;
|
|
|
+ $aucItem->currpeoplename = req()->userInfo->game->baseInfo->name;
|
|
|
+ self::settleAuctionItem($aucItem); # 更新数据库
|
|
|
+//更新拍品缓存
|
|
|
+ $obj = self::updateAuctionUserItemListCache();
|
|
|
+//发送邮件,给拍品
|
|
|
+ $sList = explode(',', $aucItem->contents);
|
|
|
+ EmailProc::SendAuctionItemsMail($zoneid, $uid, $sList[0], $sList[1]);
|
|
|
+
|
|
|
UserProc::updateUserInfo(); # 回写玩家数据
|
|
|
return Resp::ok(array(
|
|
|
- "store" => "ok",
|
|
|
+ "auction" => $obj,
|
|
|
));
|
|
|
}
|
|
|
|
|
@@ -81,9 +103,16 @@ class AuctionProc {
|
|
|
* 取消出售
|
|
|
*/
|
|
|
static function CancelAuction() {
|
|
|
+ list($uId) = req()->paras;
|
|
|
+ $aucItem = self::getAuctionItem($uId);
|
|
|
+ $aucItem->result = "取消出售";
|
|
|
+
|
|
|
+ self::updateAuctionItemState($aucItem);
|
|
|
+ $obj = self::updateAuctionUserItemListCache();
|
|
|
+
|
|
|
UserProc::updateUserInfo(); # 回写玩家数据
|
|
|
return Resp::ok(array(
|
|
|
- "store" => "ok",
|
|
|
+ "auction" => $obj,
|
|
|
));
|
|
|
}
|
|
|
|
|
@@ -94,8 +123,7 @@ class AuctionProc {
|
|
|
static function UploadAuctionItems() {
|
|
|
list($itemId, $num, $price, $buyoutPrice) = req()->paras; //上传拍品的 id 数量 竞拍价 一口价
|
|
|
|
|
|
- $user = req()->userInfo->game;
|
|
|
- //$items = $user->store->items;
|
|
|
+ $user = req()->userInfo->game;
|
|
|
|
|
|
my_Assert(StlUtil::dictHasProperty($user->store->items, $itemId), ErrCode::store_itemno_err); # 参数合法性判断
|
|
|
$auctionPrice = GameConfig::item_base_getItem($itemId)->auctionPrice;
|
|
@@ -105,31 +133,27 @@ class AuctionProc {
|
|
|
|
|
|
$aucItem = new Ins_AuctionItemModel();
|
|
|
$aucItem->addstep = 1;
|
|
|
+ $aucItem->contents = $itemId.",".$num;
|
|
|
$aucItem->startprice = $price;
|
|
|
$aucItem->buyoutPrice = $buyoutPrice;
|
|
|
-// $aucItem->cxtId = $itemId;
|
|
|
-// $aucItem->cxtNum = $num;
|
|
|
$aucItem->startts = time();
|
|
|
- $aucItem->endts = glc()->AuctionEndTs * 60 * 60 + time(); # 24小时
|
|
|
- if (!GAME_ONLINE) {
|
|
|
- $aucItem->endts = self::tsCurrHour(1); # 内网1小时。
|
|
|
- }
|
|
|
- $aucItem->sellerid = $req->oid;
|
|
|
- $aucItem->sellername = $user->name;
|
|
|
- $aucItem->zoneid = $req->zoneid;
|
|
|
+ $aucItem->endts = glc()->AuctionEndTs * 60 * 60 + time(); # 24小时
|
|
|
+ $aucItem->sellerid = req()->uid;
|
|
|
+ $aucItem->sellername = $user->baseInfo->name;
|
|
|
+ $aucItem->zoneid = req()->zoneid;
|
|
|
$err = self::insertNewUserAuctionItem($aucItem);
|
|
|
- if ($err != ErrCode::succeed) { # 数据库操作失误
|
|
|
- $resp = ResponseVo ::myErrResponse($req, $err);
|
|
|
- } else { # 插入成功后,更新缓存
|
|
|
- # 写入玩家数据
|
|
|
- UserProc::updateUserInfo($req); # 包括手续费
|
|
|
- self::updateAuctionUserItemListCache($req); # 更新缓存
|
|
|
- $resp = ResponseVo ::myRetResponse($req, "succeed"); # 更新下客户端的拍品列表
|
|
|
+ if($err == 0){
|
|
|
+ return ;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+ # 插入成功后,更新缓存
|
|
|
+ # 写入玩家数据
|
|
|
+ $auctionDic = self::updateAuctionUserItemListCache(); # 更新缓存
|
|
|
+ req()->userInfo->game = $user;
|
|
|
UserProc::updateUserInfo(); # 回写玩家数据
|
|
|
return Resp::ok(array(
|
|
|
- "store" => "ok",
|
|
|
+ "store" => $user->store,
|
|
|
+ "auction"=>$auctionDic,#拍品
|
|
|
));
|
|
|
}
|
|
|
|
|
@@ -139,8 +163,7 @@ class AuctionProc {
|
|
|
* @return array
|
|
|
*/
|
|
|
static function getAuctionUserItemListCache($zoneid) {
|
|
|
-// gMem()->hget($key, $itemId);
|
|
|
-// return $mem->get(MemKey::auctionItemListCache($zoneid));
|
|
|
+ return gMem()->get(self::auctionItemListCache(req()->zoneid));
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -150,5 +173,110 @@ class AuctionProc {
|
|
|
static function auctionItemListCache($zoneid) {
|
|
|
return "auction-user-itemlist" . "-zone" . $zoneid;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 插入新的玩家拍品
|
|
|
+ * @param Ins_AuctionItemModel $aucItem
|
|
|
+ */
|
|
|
+ static function insertNewUserAuctionItem($aucItem) {
|
|
|
+ $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);
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新玩家拍卖拍品列表缓存
|
|
|
+ * @param type $mem
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ static function updateAuctionUserItemListCache() {
|
|
|
+ $aucOfficial = self::getAuctionUserItemList(req()->zoneid); // 查询拍品列表
|
|
|
+ $obj = array(
|
|
|
+ 'ts' => CommUtil:: tsCurrent(),
|
|
|
+ 'data' => $aucOfficial
|
|
|
+ );
|
|
|
+
|
|
|
+ gMem()->set(self:: auctionItemListCache($zoneid), $obj); # 写入缓存
|
|
|
+ return json_decode(json_encode($obj));
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 取今天的玩家拍卖拍品集合
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ static function getAuctionUserItemList($zoneid = 1) {
|
|
|
+ $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; # 索引数组
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询某个拍品
|
|
|
+ * @param type $aucItemId
|
|
|
+ * @return type
|
|
|
+ */
|
|
|
+ static function getAuctionItem($aucItemId) {
|
|
|
+ $sql = "SELECT * from tab_auctionitems WHERE itemid = $aucItemId";
|
|
|
+ $paydb = daoInst();
|
|
|
+ $result = $paydb->query($sql)->fetchAll();
|
|
|
+
|
|
|
+ return $result[0]; # 索引数组
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 结算更新
|
|
|
+ * @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);
|
|
|
+ $paydb = daoInst();
|
|
|
+ $paydb->exec($sql);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ * @param type $aucItem
|
|
|
+ */
|
|
|
+ static function updateAuctionItemState($aucItem) {
|
|
|
+ $sql = "UPDATE `tab_auctionitems` set result = '%s' where itemid=%s";
|
|
|
+ $query = sprintf($sql, $aucItem->result, $aucItem->itemid);
|
|
|
+ $paydb = daoInst();
|
|
|
+ $paydb->exec($sql);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询我的上架拍品的信息
|
|
|
+ * @return type
|
|
|
+ */
|
|
|
+ static function getMyAuctionItems() {
|
|
|
+ $ts = time();
|
|
|
+ $zoneid = req()->zoneid;
|
|
|
+ $uid = req()->uid;
|
|
|
+ $db = daoInst();
|
|
|
+ $sql = "select * from tab_auctionitems where zoneid=$zoneid and sellerid = '$uid' and datediff(from_unixtime($ts),from_unixtime(startts))<=7";
|
|
|
+ $result = $db->query($sql)->fetchAll();
|
|
|
+
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 玩家的竞拍信息
|
|
|
+ * @param type $zoneid
|
|
|
+ * @param type $oid
|
|
|
+ * @return type
|
|
|
+ */
|
|
|
+ static function selectMyAuctionBid() {
|
|
|
+ $zoneid = req()->zoneid;
|
|
|
+ $oid = req()->uid;
|
|
|
+
|
|
|
+ $db = daoInst();
|
|
|
+ $sql = "select * from tab_auctionitems where zoneid=$zoneid and currpeopleid = '$oid'";
|
|
|
+ $result = $db->query($sql)->fetchAll();
|
|
|
+
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
}
|