diff --git a/webapp/bootstrap/init.php b/webapp/bootstrap/init.php index d2833db..cd9ad86 100644 --- a/webapp/bootstrap/init.php +++ b/webapp/bootstrap/init.php @@ -77,6 +77,8 @@ define('RAND_DIAMONDSHOP_TIME', 60); //钻石商店刷新次数 define('DIAMONDBOX', 61); //钻石宝箱花费钻石数 define('DIAMONDBOX10', 62); //钻石视频宝箱花费钻石数 define('REDLIMIT', 68); //红包上限 +define('RECOMMEND_FOREVER_WEIGHT',85); //精选道具概率 +define('RECOMMEND_TIME', 84); //道具精选时间 require 'config_loader.php'; diff --git a/webapp/classes/AddReward.php b/webapp/classes/AddReward.php index 8ce20cb..b003980 100644 --- a/webapp/classes/AddReward.php +++ b/webapp/classes/AddReward.php @@ -56,7 +56,7 @@ class AddReward { return $arr; } - public function addReward($item_id, $item_num, $account_id, $time) + public function addReward($item_id, $item_num, $account_id, $time, $t) { $conn = $this->getMysql($account_id); if (!$conn) { @@ -75,7 +75,6 @@ class AddReward { 'time' => $time )); - foreach ($item_list as $item) { $i = $this->getItem($item['item_id']); if ($i['type'] == 1){ @@ -87,7 +86,11 @@ class AddReward { if ($time != 0) { $price = $i['diamond_hour'] * $time; } - $item_list = $this->addItem($item['item_id'], $item['time'], $account_id, $price); + if ($t) { + $item_list = $this->addItem($item['item_id'], $item['time'], $account_id, $price, $t); + } else { + $item_list = $this->addItem($item['item_id'], $item['time'], $account_id, $price, 0); + } } } return $item_list; @@ -169,7 +172,7 @@ class AddReward { } //添加道具 - protected function addItem($item_id, $time, $accountid, $price) + protected function addItem($item_id, $time, $accountid, $price, $t) { $item_list = array(); $item_num = 1; @@ -192,7 +195,13 @@ class AddReward { $status = 1; $active_time = 0; } - $status = $this->getStatus($item_id, $status, $accountid); + if ($t == 0) { + $status = $this->getStatus($item_id, $status,$accountid); + } else if ($t == 1){ + $status = 0; + error_log(11111111111111); + $this->updateStatus($item_id, $accountid); + } $ret = $conn->execScript('INSERT INTO bag(accountid, id, color_id, status, active_time, create_time, modify_time) ' . ' VALUES(:account_id, :id, 0, :status, :active_time, :create_time, :modify_time) ' . ' ON DUPLICATE KEY UPDATE accountid=:account_id, id=:id, color_id=0, status=:status, active_time=:active_time, modify_time=:modify_time;', @@ -213,6 +222,7 @@ class AddReward { $item_id = 10003; $item_num = $price; $time = 0; + error_log(3333333333); $this->addDiamond($item_id, $item_num, $accountid); } else { $nowTime = $row['active_time']; @@ -227,7 +237,13 @@ class AddReward { $nowTime = time() + $time * 3600; } } - $status = $this->getStatus($item_id, $status,$accountid); + if ($t == 0) { + $status = $this->getStatus($item_id, $status,$accountid); + } else if ($t == 1){ + $status = 0; + error_log(2222222222); + $this->updateStatus($item_id, $accountid); + } $ret = $conn->execScript('UPDATE bag SET active_time=:active_time, status=:status, modify_time=:modify_time ' . ' WHERE accountid=:account_id AND id=:id;', array( @@ -290,5 +306,50 @@ class AddReward { } return $s; } + + public function updateStatus($item_id, $accountid) + { + $conn = $this->getMysql($accountid); + if(!$conn){ + phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); + return; + } + $b = $this->getBag($item_id); + $bag_meta_table = require('../res/bag@bag.php'); + //正在装备的道具 + if ($b['fuction'] != 5) { + foreach ($bag_meta_table as $bag_info) { + $id = $bag_info['id']; + $bag = $this->getBag($id); + if ($bag['fuction'] != $b['fuction']) { + continue; + } + $row = $conn->execQueryOne('SELECT status, active_time FROM bag WHERE accountid=:accountid AND id=:id;', + array( + ':accountid' => $accountid, + ':id' => $id, + )); + if ($row['status'] != 0 || !$row) { + continue; + } + $status = 2; + if ($row['active_time'] == 0) { + $status = 1; + } + $using_ret = $conn->execScript('UPDATE bag SET status=:status, color_id=0, modify_time=:modify_time ' . + ' WHERE accountid = :account_id AND id = :id;', + array( + ':account_id' => $accountid, + ':id' => $id, + ':status' => $status, + ':modify_time' => time() + )); + if(!$using_ret){ + die(); + return; + } + } + } + } } ?> diff --git a/webapp/controller/ActivityController.class.php b/webapp/controller/ActivityController.class.php index 698d89b..b636c99 100644 --- a/webapp/controller/ActivityController.class.php +++ b/webapp/controller/ActivityController.class.php @@ -367,7 +367,7 @@ class ActivityController{ } //增加奖励 $addreward = new classes\AddReward(); - $all_item_list = $addreward->addReward($item_id, $item_num, $account_id, $time); + $all_item_list = $addreward->addReward($item_id, $item_num, $account_id, $time,0); $coin_num = $addreward->getCoinNum($account_id); $diamond_num = $addreward->getDiamondNum($account_id); $item_list = array(); @@ -497,7 +497,7 @@ class ActivityController{ } //增加奖励 $addreward = new classes\AddReward(); - $all_item_list = $addreward->addReward($item_id, $item_num, $account_id, $time); + $all_item_list = $addreward->addReward($item_id, $item_num, $account_id, $time, 0); $coin_num = $addreward->getCoinNum($account_id); $diamond_num = $addreward->getDiamondNum($account_id); $item_list = array(); @@ -545,7 +545,7 @@ class ActivityController{ $p = $this->getParameter(REWARD_TIMES); $times = $p['value'] - 1; $addreward = new classes\AddReward(); - $addreward->addReward($row['item_id'], $row['item_num'] * $times, $account_id); + $addreward->addReward($row['item_id'], $row['item_num'] * $times, $account_id,0,0); $coin_num = $addreward->getCoinNum($account_id); echo json_encode(array( 'errcode' => 0, diff --git a/webapp/controller/BagController.class.php b/webapp/controller/BagController.class.php index 2c966a0..2c94bcf 100644 --- a/webapp/controller/BagController.class.php +++ b/webapp/controller/BagController.class.php @@ -319,14 +319,14 @@ class BagController{ return; } $item_id = $_REQUEST['item_id']; - error_log($item_id); $conn = $this->getMysql($account_id); if(!$conn){ phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); return; } $addreward = new classes\AddReward(); - $addreward->addReward($item_id, 1, $account_id, 1); + $ptime = $this->getParameter(RECOMMEND_TIME); + $addreward->addReward($item_id, 1, $account_id, $ptime['param_value'], 0); echo json_encode(array( 'errcode' => 0, 'errmsg' => '', @@ -334,5 +334,55 @@ class BagController{ 'color_id' => 0 )); } + + public function freeGetItem() + { + $account_id = $_REQUEST['account_id']; + //登录校验 + $login = loginVerify($account_id, $_REQUEST['session_id']); + if (!$login) { + phpcommon\sendError(ERR_USER_BASE + 1, 'session无效'); + return; + } + $arr = $_REQUEST['arr']; + $delim = ','; + $item_multiply = explode($delim, $arr); + $all_item_list = array(); + $item_list = array(); + $addreward = new classes\AddReward(); + $random = Rand(0, 10000); + $time = 1; + $p = $this->getParameter(RECOMMEND_FOREVER_WEIGHT); + $ptime = $this->getParameter(RECOMMEND_TIME); + if ($random < $p['param_value']) { + $time = 0; + } else { + $time = $ptime['param_value']; + } + error_log(json_encode($item_multiply)); + foreach ($item_multiply as $i) { + array_push($item_list, array( + 'item_id' => $i, + 'item_num' => 1, + 'time' => 1, + )); + $items = $addreward->addReward($i, 1, $account_id, $time, 1); + foreach($items as $it) { + array_push($all_item_list, array( + 'item_id' => $it['item_id'], + 'item_num' => $it['item_num'], + 'time' => $it['time'], + )); + } + } + $num = $addreward->getDiamondNum($account_id); + echo json_encode(array( + 'errcode' => 0, + 'errmsg' => '', + 'item_list' => $item_list, + 'diamond_nums' => $num, + 'all_item_list' => $all_item_list + )); + } } ?> diff --git a/webapp/controller/PassController.class.php b/webapp/controller/PassController.class.php index 52dfc09..e728942 100644 --- a/webapp/controller/PassController.class.php +++ b/webapp/controller/PassController.class.php @@ -251,7 +251,7 @@ class PassController{ 'time' => $drop_multiply[2], )); $addreward = new classes\AddReward(); - $all_item_list = $addreward->addReward($drop_multiply[0], $drop_multiply[1], $account_id, $drop_multiply[2]); + $all_item_list = $addreward->addReward($drop_multiply[0], $drop_multiply[1], $account_id, $drop_multiply[2],0); $coin_num = $addreward->getCoinNum($account_id); $diamond_num = $addreward->getDiamondNum($account_id); @@ -340,7 +340,7 @@ class PassController{ $addreward = new classes\AddReward(); $all_item_list = array(); foreach ($reward as $r) { - $items = $addreward->addReward($r['item_id'], $r['item_num'], $account_id, $r['time']); + $items = $addreward->addReward($r['item_id'], $r['item_num'], $account_id, $r['time'], 0); foreach($items as $i) { array_push($all_item_list, array( 'item_id' => $i['item_id'], @@ -420,7 +420,7 @@ class PassController{ } $addreward = new classes\AddReward(); foreach ($reward as $r) { - $addreward->addReward($r['item_id'], $r['item_num'], $account_id, $r['time']); + $addreward->addReward($r['item_id'], $r['item_num'], $account_id, $r['time'], 0); } $ret = $conn->execScript('UPDATE user SET pass_status=1, modify_time=:modify_time ' . ' WHERE accountid=:accountid;', diff --git a/webapp/controller/QuestController.class.php b/webapp/controller/QuestController.class.php index e7f140c..74abc6c 100644 --- a/webapp/controller/QuestController.class.php +++ b/webapp/controller/QuestController.class.php @@ -167,7 +167,7 @@ class QuestController{ $item_id = $item_id_array[$key][0]; $item_num = $num_array[$key][0] * $times; $addreward = new classes\AddReward(); - $addreward->addReward($item_id, $item_num, $account_id, 0); + $addreward->addReward($item_id, $item_num, $account_id, 0, 0); } else { $q = $this->getQuest($quest_id); if (!$q) { @@ -178,7 +178,7 @@ class QuestController{ $reward_id = $array[0][0]; $reward_num = $array[0][1] * $times; $addreward = new classes\AddReward(); - $addreward->addReward($reward_id, $reward_num, $account_id, 0); + $addreward->addReward($reward_id, $reward_num, $account_id, 0, 0); } $addreward = new classes\AddReward(); $coin_num = $addreward->getCoinNum($account_id); @@ -243,7 +243,7 @@ class QuestController{ $array = $this->getExplode($q['reward']); $reward_id = $array[0][0]; $reward_num = $array[0][1]; - $addreward->addReward($reward_id, $reward_num, $account_id, 0); + $addreward->addReward($reward_id, $reward_num, $account_id, 0, 0); array_push($item_list, array( 'item_id' => $reward_id, 'item_num' => $reward_num, diff --git a/webapp/controller/ShareController.class.php b/webapp/controller/ShareController.class.php index d001261..1c3b224 100644 --- a/webapp/controller/ShareController.class.php +++ b/webapp/controller/ShareController.class.php @@ -128,7 +128,6 @@ class ShareController{ $b = $this->getbox($drop_id); $item_id_array = $this->getExplode($b['item_id']); $times = count($item_id_array); - error_log($times); } for ($j = 0; $j < $times; $j++) { $b = $this->getbox($drop_id); @@ -249,7 +248,7 @@ class ShareController{ $quest->triggerQuest(71004, 1, 1, $account_id); foreach ($item_list as $item) { $addreward = new classes\AddReward(); - $items = $addreward->addReward($item['item_id'], $item['item_num'], $account_id, $item['time']); + $items = $addreward->addReward($item['item_id'], $item['item_num'], $account_id, $item['time'], 0); foreach($items as $i) { array_push($all_item_list, array( 'item_id' => $i['item_id'], @@ -449,14 +448,14 @@ class ShareController{ 'item_num' => $array[0][1], 'time' => $array[0][2], )); - $all_item_list = $addreward->addReward($array[0][0], $array[0][1], $account_id, $array[0][2]); + $all_item_list = $addreward->addReward($array[0][0], $array[0][1], $account_id, $array[0][2], 0); } else if ($ach_id == 6) { array_push($item_list, array( 'item_id' => 10003, 'item_num' => 50, 'time' => 0, )); - $addreward->addReward(10003, 50, $account_id); + $addreward->addReward(10003, 50, $account_id, 0, 0); } //更新状态 $ret = $conn->execScript('UPDATE share_achievement SET status=1, modify_time=:modify_time ' . @@ -529,9 +528,9 @@ class ShareController{ $addreward = new classes\AddReward(); if ($ach_id != 6) { $array = $this->getExplode($sh['rewards']); - $addreward->addReward($array[0][0], $array[0][1] * $times, $account_id, $array[0][2]); + $addreward->addReward($array[0][0], $array[0][1] * $times, $account_id, $array[0][2], 0); } else if ($ach_id == 6) { - $addreward->addReward(10003, 50 * $times, $account_id, 0); + $addreward->addReward(10003, 50 * $times, $account_id, 0, 0); } $coin_num = $addreward->getCoinNum($account_id); $diamond_num = $addreward->getDiamondNum($account_id); @@ -600,7 +599,7 @@ class ShareController{ $item_num = $kefu['itemnum']; } $addreward = new classes\AddReward(); - $addreward->addReward($item_id, $item_num, $account_id,0); + $addreward->addReward($item_id, $item_num, $account_id,0,0); array_push($item_list, array( 'item_id' => $item_id, 'item_num' => $item_num, @@ -688,7 +687,7 @@ class ShareController{ foreach ($user_db['kefureward_list'] as $kefureward) { //增加奖励 $addreward = new classes\AddReward(); - $addreward->addReward($kefureward['item_id'], $kefureward['item_num'] * $times, $account_id, 0); + $addreward->addReward($kefureward['item_id'], $kefureward['item_num'] * $times, $account_id, 0,0); } $r->del($kefureward_uuid, json_encode($user_db)); $addreward = new classes\AddReward(); diff --git a/webapp/controller/ShopController.class.php b/webapp/controller/ShopController.class.php index 6791efa..05d91d4 100644 --- a/webapp/controller/ShopController.class.php +++ b/webapp/controller/ShopController.class.php @@ -226,7 +226,7 @@ class ShopController{ $r -> pexpire($shop_uuid, 1000 * 3600 * 24); //增加奖励 $addreward = new classes\AddReward(); - $all_item_list = $addreward->addReward($item_id, $item_num, $account_id, $time); + $all_item_list = $addreward->addReward($item_id, $item_num, $account_id, $time, 0); $coin_num = $addreward->getCoinNum($account_id); $diamond_num = $addreward->getDiamondNum($account_id); $item_list = array(); @@ -282,6 +282,7 @@ class ShopController{ $item_num = $shop['item_num']; $price = $shop['price']; $status = $shop['status']; + $time = $shop['time']; $flag = 1; break; } @@ -294,7 +295,7 @@ class ShopController{ $p = $this->getParameter(REWARD_TIMES); $times = $p['param_value'] - 1; $addreward = new classes\AddReward(); - $addreward->addReward($item_id, $item_num * $times, $account_id); + $addreward->addReward($item_id, $item_num * $times, $account_id, $time, 0); $coin_num = $addreward->getCoinNum($account_id); echo json_encode(array( 'errcode' => 0, diff --git a/webapp/controller/SignController.class.php b/webapp/controller/SignController.class.php index a2bac1c..27480bc 100644 --- a/webapp/controller/SignController.class.php +++ b/webapp/controller/SignController.class.php @@ -284,7 +284,7 @@ class SignController{ 'item_num' => $num, 'time' => $time, )); - $items = $addreward->addReward($item_id, $num, $account_id, $time); + $items = $addreward->addReward($item_id, $num, $account_id, $time,0); foreach($items as $j) { array_push($all_item_list, array( @@ -340,7 +340,7 @@ class SignController{ $item_id = $item_id_array[$i][0]; $num = $num_array[$i][0]; $time = $time_array[$i][0]; - $addreward->addReward($item_id, $num, $account_id, $time); + $addreward->addReward($item_id, $num, $account_id, $time,0); } $coin_num = $addreward->getCoinNum($account_id); $diamond_num = $addreward->getDiamondNum($account_id);