This commit is contained in:
parent
4e8fb7080c
commit
b2630b7935
@ -158,14 +158,14 @@ class BaseController {
|
||||
return $this->mailDbConn;
|
||||
}
|
||||
$mysql_conf = getMailMysqlConfig();
|
||||
$this->marketDbConn = new phpcommon\Mysql(array(
|
||||
$this->mailDbConn = new phpcommon\Mysql(array(
|
||||
'host' => $mysql_conf['host'],
|
||||
'port' => $mysql_conf['port'],
|
||||
'user' => $mysql_conf['user'],
|
||||
'passwd' => $mysql_conf['passwd'],
|
||||
'dbname' => $mysql_conf['dbname'],
|
||||
));
|
||||
return $this->marketDbConn;
|
||||
return $this->mailDbConn;
|
||||
}
|
||||
|
||||
public function _getRelationDbMysql()
|
||||
|
@ -4,6 +4,7 @@ require_once('phpcommon/bignumber.php');
|
||||
|
||||
require_once('mt/Item.php');
|
||||
require_once('mt/Parameter.php');
|
||||
require_once('mt/Language.php');
|
||||
|
||||
require_once('models/BcOrder.php');
|
||||
require_once('models/Mall.php');
|
||||
@ -17,6 +18,7 @@ require_once('services/BlockChainService.php');
|
||||
require_once('services/LogService.php');
|
||||
require_once('services/AwardService.php');
|
||||
require_once('services/PropertyChgService.php');
|
||||
require_once('services/MailApiService.php');
|
||||
|
||||
use phpcommon\SqlHelper;
|
||||
|
||||
@ -38,9 +40,13 @@ use services\PropertyChgService;
|
||||
*/
|
||||
class InGameMallController extends BaseAuthedController {
|
||||
|
||||
|
||||
|
||||
private $mailApiService = null;
|
||||
public function _handlePre()
|
||||
{
|
||||
parent::_handlePre();
|
||||
$this->mailApiService = new \services\MailApiService();
|
||||
}
|
||||
|
||||
public function productList()
|
||||
@ -196,19 +202,19 @@ class InGameMallController extends BaseAuthedController {
|
||||
return;
|
||||
}
|
||||
switch ($itemMeta['type']){
|
||||
case \mt\Item::HERO_TYPE : {
|
||||
$heroDb = Hero::find($goodsUniid);
|
||||
if (!$heroDb || !empty($heroDb['token_id']) || $heroDb['hero_id']!= $itemId){
|
||||
$this->_rspErr(1, 'param goods_unnid error');
|
||||
return;
|
||||
}
|
||||
if ($heroDb['seal_type'] != 1){
|
||||
$this->_rspErr(1, 'Shelf heroes need to be packaged first');
|
||||
return;
|
||||
}
|
||||
$orderField = $heroDb['quality'];
|
||||
}
|
||||
break;
|
||||
// case \mt\Item::HERO_TYPE : {
|
||||
// $heroDb = Hero::find($goodsUniid);
|
||||
// if (!$heroDb || !empty($heroDb['token_id']) || $heroDb['hero_id']!= $itemId){
|
||||
// $this->_rspErr(1, 'param goods_unnid error');
|
||||
// return;
|
||||
// }
|
||||
// if ($heroDb['seal_type'] != 1){
|
||||
// $this->_rspErr(1, 'Shelf heroes need to be packaged first');
|
||||
// return;
|
||||
// }
|
||||
// $orderField = $heroDb['quality'];
|
||||
// }
|
||||
// break;
|
||||
case \mt\Item::CHIP_TYPE : {
|
||||
$chipDb = Chip::find($goodsUniid);
|
||||
if (!$chipDb || !empty($chipDb['token_id']) || $chipDb['item_id']!= $itemId){
|
||||
@ -218,18 +224,18 @@ class InGameMallController extends BaseAuthedController {
|
||||
$orderField = $chipDb['quality'];
|
||||
}
|
||||
break;
|
||||
case \mt\Item::GOLD_SYN :{
|
||||
$itemDb = Bag::findByUniId($goodsUniid);
|
||||
if (!$itemDb || !empty($itemDb['token_id']) || $itemDb['item_id']!= $itemId){
|
||||
$this->_rspErr(1, 'param goods_unnid error');
|
||||
return;
|
||||
}
|
||||
if ($itemDb['item_num'] <= 0 || $amount > 1){
|
||||
$this->_rspErr(1, 'amount not enough');
|
||||
return;
|
||||
}
|
||||
}
|
||||
break;
|
||||
// case \mt\Item::GOLD_SYN :{
|
||||
// $itemDb = Bag::findByUniId($goodsUniid);
|
||||
// if (!$itemDb || !empty($itemDb['token_id']) || $itemDb['item_id']!= $itemId){
|
||||
// $this->_rspErr(1, 'param goods_unnid error');
|
||||
// return;
|
||||
// }
|
||||
// if ($itemDb['item_num'] <= 0 || $amount > 1){
|
||||
// $this->_rspErr(1, 'amount not enough');
|
||||
// return;
|
||||
// }
|
||||
// }
|
||||
// break;
|
||||
case \mt\Item::FRAGMENT_TYPE :{
|
||||
$orderField = $itemMeta['quality'];
|
||||
}
|
||||
@ -238,7 +244,8 @@ class InGameMallController extends BaseAuthedController {
|
||||
$this->_rspErr(1, 'amount must > 0');
|
||||
return;
|
||||
}
|
||||
if (!$this->_isNumber($priceBn) || $priceBn < 0) {
|
||||
$minPrice = \mt\Parameter::getVal("market_place_min_price",100);
|
||||
if (!$this->_isNumber($priceBn) || $priceBn < 0 || $priceBn < $minPrice) {
|
||||
$this->_rspErr(1, 'param price error');
|
||||
return;
|
||||
}
|
||||
@ -257,18 +264,6 @@ class InGameMallController extends BaseAuthedController {
|
||||
}
|
||||
$this->_decItems($costItems);
|
||||
$propertyChgService->addBagChg();
|
||||
}elseif ($itemMeta['type'] == \mt\Item::HERO_TYPE){
|
||||
SqlHelper::update
|
||||
(myself()->_getSelfMysql(),
|
||||
't_hero',
|
||||
array(
|
||||
'idx' => $goodsUniid,
|
||||
),
|
||||
array(
|
||||
'account_id' => InGameMall::SYSTEM_MALL_ACCOUNT
|
||||
)
|
||||
);
|
||||
$propertyChgService->addHeroChg();
|
||||
}elseif ($itemMeta['type'] == \mt\Item::CHIP_TYPE){
|
||||
SqlHelper::update
|
||||
(myself()->_getSelfMysql(),
|
||||
@ -281,19 +276,31 @@ class InGameMallController extends BaseAuthedController {
|
||||
)
|
||||
);
|
||||
$propertyChgService->addChip();
|
||||
}elseif ($itemMeta['type'] == \mt\Item::GOLD_SYN){
|
||||
SqlHelper::update
|
||||
(myself()->_getSelfMysql(),
|
||||
't_bag',
|
||||
array(
|
||||
'idx' => $goodsUniid,
|
||||
),
|
||||
array(
|
||||
'account_id' => InGameMall::SYSTEM_MALL_ACCOUNT
|
||||
)
|
||||
);
|
||||
$propertyChgService->addBagChg();
|
||||
}
|
||||
}//elseif ($itemMeta['type'] == \mt\Item::HERO_TYPE){
|
||||
// SqlHelper::update
|
||||
// (myself()->_getSelfMysql(),
|
||||
// 't_hero',
|
||||
// array(
|
||||
// 'idx' => $goodsUniid,
|
||||
// ),
|
||||
// array(
|
||||
// 'account_id' => InGameMall::SYSTEM_MALL_ACCOUNT
|
||||
// )
|
||||
// );
|
||||
// $propertyChgService->addHeroChg();
|
||||
// }elseif ($itemMeta['type'] == \mt\Item::GOLD_SYN){
|
||||
// SqlHelper::update
|
||||
// (myself()->_getSelfMysql(),
|
||||
// 't_bag',
|
||||
// array(
|
||||
// 'idx' => $goodsUniid,
|
||||
// ),
|
||||
// array(
|
||||
// 'account_id' => InGameMall::SYSTEM_MALL_ACCOUNT
|
||||
// )
|
||||
// );
|
||||
// $propertyChgService->addBagChg();
|
||||
// }
|
||||
|
||||
$orderId = OrderId::gen();
|
||||
$orderType = $this->_getGoodsType($itemMeta);
|
||||
@ -322,11 +329,10 @@ class InGameMallController extends BaseAuthedController {
|
||||
myself()->_rspErr(1, 'cannot cancel the goods');
|
||||
return;
|
||||
}
|
||||
$price = $goodsDb['price'];
|
||||
$costItems = array(
|
||||
array(
|
||||
'item_id' => V_ITEM_GOLD,
|
||||
'item_num' => $price
|
||||
'item_num' => $goodsDb['price']
|
||||
)
|
||||
);
|
||||
$lackItem = null;
|
||||
@ -334,41 +340,34 @@ class InGameMallController extends BaseAuthedController {
|
||||
$this->_rspErr(2, $this->_getLackItemErrMsg($lackItem));
|
||||
return;
|
||||
}
|
||||
$this->_decItems($costItems);
|
||||
SqlHelper::update
|
||||
($this->_getSelfMysql(),
|
||||
't_user',
|
||||
$propertyChgService = new PropertyChgService();
|
||||
$this->_buyGoods($goodsDb,$propertyChgService);
|
||||
myself()->_rspData(array(
|
||||
'property_chg' => $propertyChgService->toDto(),
|
||||
));
|
||||
}
|
||||
|
||||
private function _buyGoods($goods,$propertyChgService){
|
||||
if (!$goods){
|
||||
return;
|
||||
}
|
||||
$price = $goods['price'];
|
||||
InGameMall::buyOk($goods['order_id'],myself()->_getAccountId());
|
||||
$costItems = array(
|
||||
array(
|
||||
'account_id' => $goodsDb['seller']
|
||||
),
|
||||
array(
|
||||
'gold' => function () use($price) {
|
||||
return "gold + ${price}";
|
||||
}
|
||||
'item_id' => V_ITEM_GOLD,
|
||||
'item_num' => $price
|
||||
)
|
||||
);
|
||||
$propertyChgService = new PropertyChgService();
|
||||
switch ($goodsDb['order_type']){
|
||||
case InGameMall::HERO_TYPE :{
|
||||
SqlHelper::update
|
||||
(myself()->_getSelfMysql(),
|
||||
't_hero',
|
||||
array(
|
||||
'idx' => $goodsDb['goods_uniid'],
|
||||
),
|
||||
array(
|
||||
'account_id' => myself()->_getAccountId()
|
||||
)
|
||||
);
|
||||
$propertyChgService->addHeroChg();
|
||||
}
|
||||
break;
|
||||
$this->_decItems($costItems);
|
||||
|
||||
switch ($goods['order_type']){
|
||||
case InGameMall::CHIP_TYPE:{
|
||||
SqlHelper::update
|
||||
(myself()->_getSelfMysql(),
|
||||
't_chip',
|
||||
array(
|
||||
'idx' => $goodsDb['goods_uniid'],
|
||||
'idx' => $goods['goods_uniid'],
|
||||
),
|
||||
array(
|
||||
'account_id' => myself()->_getAccountId()
|
||||
@ -377,29 +376,64 @@ class InGameMallController extends BaseAuthedController {
|
||||
$propertyChgService->addChip();
|
||||
}
|
||||
break;
|
||||
case InGameMall::GOLD_TYPE :{
|
||||
SqlHelper::update
|
||||
(myself()->_getSelfMysql(),
|
||||
't_bag',
|
||||
array(
|
||||
'idx' => $goodsDb['goods_uniid'],
|
||||
),
|
||||
array(
|
||||
'account_id' => myself()->_getAccountId()
|
||||
)
|
||||
);
|
||||
$propertyChgService->addBagChg();
|
||||
}
|
||||
break;
|
||||
|
||||
default : {
|
||||
Bag::addItem($goodsDb['item_id'],$goodsDb['item_num']);
|
||||
Bag::addItem($goods['item_id'],$goods['item_num']);
|
||||
$propertyChgService->addBagChg();
|
||||
}
|
||||
}
|
||||
InGameMall::buyOk($orderId,myself()->_getAccountId());
|
||||
myself()->_rspData(array(
|
||||
'property_chg' => $propertyChgService->toDto(),
|
||||
));
|
||||
$event = array(
|
||||
'ID' => 'Mail',
|
||||
'SUB_ID' => 'Market Place',
|
||||
'SUB_KEY' => 'sell_mail',
|
||||
'mailId' =>$goods['order_id'],
|
||||
'seller' =>$goods['seller'],
|
||||
'buyer' =>myself()->_getAccountId(),
|
||||
'change' => array(
|
||||
'item_id' => $goods['item_id'],
|
||||
'item_num' => $goods['item_num']
|
||||
),
|
||||
);
|
||||
LogService::burialPointEvent($event);
|
||||
//发邮件给卖家
|
||||
$itemMeta = \mt\Item::get($goods['item_id']);
|
||||
$languageMeta = \mt\Language::get($itemMeta['name']);
|
||||
$taxRate = \mt\Parameter::getVal("market_place_tax_rate",0.05);
|
||||
$taxGold = ceil($price*$taxRate);
|
||||
$falGold = $price - $taxGold;
|
||||
|
||||
$mailContent = <<<EOD
|
||||
{$languageMeta['en']} has been successfully sold
|
||||
Transaction price: + {$price} gold
|
||||
Service fee: - {$taxGold} gold
|
||||
After selling {$languageMeta['en']}, you received {$falGold} gold
|
||||
EOD;
|
||||
$attachments = array(
|
||||
array(
|
||||
'item_id' => V_ITEM_GOLD,
|
||||
'item_num' => $falGold
|
||||
)
|
||||
);
|
||||
$this->mailApiService->sendSellMail(
|
||||
$goods['order_id'],
|
||||
$goods['seller'],
|
||||
\services\MailApiService::SELL_MAIL_SUBJECT,
|
||||
$mailContent,
|
||||
$attachments
|
||||
);
|
||||
$event1 = array(
|
||||
'ID' => 'Mail',
|
||||
'SUB_ID' => 'Market Place',
|
||||
'SUB_KEY' => 'income_mail',
|
||||
'mailId' =>$goods['order_id'],
|
||||
'seller' =>$goods['seller'],
|
||||
'buyer' =>myself()->_getAccountId(),
|
||||
'change' => array(
|
||||
'item_id' => V_ITEM_GOLD,
|
||||
'item_num' => $falGold
|
||||
),
|
||||
);
|
||||
LogService::burialPointEvent($event1);
|
||||
}
|
||||
|
||||
public function cancel()
|
||||
@ -418,6 +452,7 @@ class InGameMallController extends BaseAuthedController {
|
||||
myself()->_rspErr(1, 'Not the seller');
|
||||
return;
|
||||
}
|
||||
InGameMall::cancel($orderId);
|
||||
$propertyChgService = new PropertyChgService();
|
||||
switch ($goodsDb['order_type']){
|
||||
case InGameMall::HERO_TYPE :{
|
||||
@ -467,7 +502,7 @@ class InGameMallController extends BaseAuthedController {
|
||||
$propertyChgService->addBagChg();
|
||||
}
|
||||
}
|
||||
InGameMall::cancel($orderId);
|
||||
|
||||
myself()->_rspData(array(
|
||||
'property_chg' => $propertyChgService->toDto(),
|
||||
));
|
||||
@ -477,7 +512,8 @@ class InGameMallController extends BaseAuthedController {
|
||||
{
|
||||
$orderId = getReqVal('order_id', '');
|
||||
$priceBn =intval(getReqVal('price', ''));
|
||||
if (!$this->_isNumber($priceBn)) {
|
||||
$minPrice = \mt\Parameter::getVal("market_place_min_price",100);
|
||||
if (!$this->_isNumber($priceBn) || $priceBn < $minPrice) {
|
||||
$this->_rspErr(1, 'param price error');
|
||||
return;
|
||||
}
|
||||
@ -651,71 +687,13 @@ class InGameMallController extends BaseAuthedController {
|
||||
$this->_rspErr(2, $this->_getLackItemErrMsg($lackItem));
|
||||
return;
|
||||
}
|
||||
$this->_decItems($costItems);
|
||||
$propertyChgService = new PropertyChgService();
|
||||
foreach ($orderIdArr as $orderId) {
|
||||
$goodsDb = InGameMall::findByOrderId($orderId);
|
||||
SqlHelper::update
|
||||
($this->_getSelfMysql(),
|
||||
't_user',
|
||||
array(
|
||||
'account_id' => $goodsDb['seller']
|
||||
),
|
||||
array(
|
||||
'gold' => function () use($price) {
|
||||
return "gold + ${price}";
|
||||
}
|
||||
)
|
||||
);
|
||||
switch ($goodsDb['order_type']){
|
||||
case InGameMall::HERO_TYPE :{
|
||||
SqlHelper::update
|
||||
(myself()->_getSelfMysql(),
|
||||
't_hero',
|
||||
array(
|
||||
'idx' => $goodsDb['goods_uniid'],
|
||||
),
|
||||
array(
|
||||
'account_id' => myself()->_getAccountId()
|
||||
)
|
||||
);
|
||||
$propertyChgService->addHeroChg();
|
||||
}
|
||||
break;
|
||||
case InGameMall::CHIP_TYPE:{
|
||||
SqlHelper::update
|
||||
(myself()->_getSelfMysql(),
|
||||
't_chip',
|
||||
array(
|
||||
'idx' => $goodsDb['goods_uniid'],
|
||||
),
|
||||
array(
|
||||
'account_id' => myself()->_getAccountId()
|
||||
)
|
||||
);
|
||||
$propertyChgService->addChip();
|
||||
}
|
||||
break;
|
||||
case InGameMall::GOLD_TYPE :{
|
||||
SqlHelper::update
|
||||
(myself()->_getSelfMysql(),
|
||||
't_bag',
|
||||
array(
|
||||
'idx' => $goodsDb['goods_uniid'],
|
||||
),
|
||||
array(
|
||||
'account_id' => myself()->_getAccountId()
|
||||
)
|
||||
);
|
||||
$propertyChgService->addBagChg();
|
||||
}
|
||||
break;
|
||||
default : {
|
||||
Bag::addItem($goodsDb['item_id'],$goodsDb['item_num']);
|
||||
$propertyChgService->addBagChg();
|
||||
}
|
||||
if ($goodsDb['status'] != InGameMall::PENDING_STATE){
|
||||
continue;
|
||||
}
|
||||
InGameMall::buyOk($orderId,myself()->_getAccountId());
|
||||
$this->_buyGoods($goodsDb,$propertyChgService);
|
||||
}
|
||||
myself()->_rspData(array(
|
||||
'property_chg' => $propertyChgService->toDto(),
|
||||
@ -732,11 +710,11 @@ class InGameMallController extends BaseAuthedController {
|
||||
|
||||
private function _isGoodsType($type){
|
||||
if (in_array($type,array(
|
||||
\mt\Item::HERO_TYPE,
|
||||
// \mt\Item::HERO_TYPE,
|
||||
\mt\Item::CHIP_TYPE,
|
||||
\mt\Item::FRAGMENT_TYPE,
|
||||
\mt\Item::BATTLE_REWARD_BOX,
|
||||
\mt\Item::GOLD_SYN,
|
||||
// \mt\Item::GOLD_SYN,
|
||||
))){
|
||||
return true;
|
||||
}else{
|
||||
@ -749,9 +727,9 @@ class InGameMallController extends BaseAuthedController {
|
||||
return ;
|
||||
}
|
||||
switch ($itemMeta['type']){
|
||||
case \mt\Item::HERO_TYPE : {
|
||||
return InGameMall::HERO_TYPE;
|
||||
}
|
||||
// case \mt\Item::HERO_TYPE : {
|
||||
// return InGameMall::HERO_TYPE;
|
||||
// }
|
||||
case \mt\Item::CHIP_TYPE : {
|
||||
return InGameMall::CHIP_TYPE;
|
||||
}
|
||||
@ -765,9 +743,9 @@ class InGameMallController extends BaseAuthedController {
|
||||
case \mt\Item::BATTLE_REWARD_BOX : {
|
||||
return InGameMall::BOX_TYPE;
|
||||
}
|
||||
case \mt\Item::GOLD_SYN : {
|
||||
return InGameMall::GOLD_TYPE;
|
||||
}
|
||||
// case \mt\Item::GOLD_SYN : {
|
||||
// return InGameMall::GOLD_TYPE;
|
||||
// }
|
||||
default : {
|
||||
return 0;
|
||||
}
|
||||
|
27
webapp/mt/Language.php
Normal file
27
webapp/mt/Language.php
Normal file
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
namespace mt;
|
||||
|
||||
use phpcommon;
|
||||
|
||||
class Language {
|
||||
|
||||
public static function get($index)
|
||||
{
|
||||
foreach (self::getMetaList() as $meta){
|
||||
if ($meta['info'] == $index){
|
||||
return $meta;
|
||||
}
|
||||
}
|
||||
return array();
|
||||
}
|
||||
|
||||
protected static function getMetaList()
|
||||
{
|
||||
if (!self::$metaList) {
|
||||
self::$metaList = getMetaTable('language@language.php');
|
||||
}
|
||||
return self::$metaList;
|
||||
}
|
||||
|
||||
protected static $metaList;
|
||||
}
|
@ -2,11 +2,13 @@
|
||||
|
||||
namespace services;
|
||||
|
||||
use phpcommon\SqlHelper;
|
||||
class MailApiService extends BaseService {
|
||||
|
||||
const SELL_UNIKEY_PRE = 'ingame.market.sell:';
|
||||
const BUY_UNIKEY_PRE = 'ingame.market.buy:';
|
||||
|
||||
const SELL_MAIL_SUBJECT = 'Item successfully sold';
|
||||
/*
|
||||
orderId:订单id
|
||||
to:邮件接受方account_id
|
||||
@ -22,7 +24,7 @@ class MailApiService extends BaseService {
|
||||
*/
|
||||
public function sendSellMail($orderId, $to, $subject, $content, $attachments)
|
||||
{
|
||||
$unikey = self::SELL_UNIKEY_PRE . $oderId;
|
||||
$unikey = self::SELL_UNIKEY_PRE . $orderId;
|
||||
SqlHelper::upsert
|
||||
(myself()->_getMailMysql(),
|
||||
't_sys_mail',
|
||||
@ -66,7 +68,7 @@ class MailApiService extends BaseService {
|
||||
*/
|
||||
public function sendBuyMail($orderId, $to, $subject, $content, $attachments)
|
||||
{
|
||||
$unikey = self::BUY_UNIKEY_PRE . $oderId;
|
||||
$unikey = self::BUY_UNIKEY_PRE . $orderId;
|
||||
SqlHelper::upsert
|
||||
(myself()->_getMailMysql(),
|
||||
't_sys_mail',
|
||||
|
Loading…
x
Reference in New Issue
Block a user