151 lines
4.1 KiB
PHP
151 lines
4.1 KiB
PHP
<?php
|
|
|
|
namespace models;
|
|
|
|
use phpcommon\SqlHelper;
|
|
|
|
class Mall extends BaseModel {
|
|
|
|
const PENDING_STATE = 0;
|
|
const BUY_OK_STATE = 1;
|
|
const CANCEL_STATE = 2;
|
|
|
|
public static function findByGoodsUuid($goodsUuid)
|
|
{
|
|
$row = SqlHelper::ormSelectOne(
|
|
myself()->_getMysql(''),
|
|
't_mall',
|
|
array(
|
|
'goods_uuid' => $goodsUuid
|
|
)
|
|
);
|
|
return $row;
|
|
}
|
|
|
|
public static function findByOrderId($orderId)
|
|
{
|
|
$row = SqlHelper::ormSelectOne(
|
|
myself()->_getMysql(''),
|
|
't_mall',
|
|
array(
|
|
'order_id' => $orderId
|
|
)
|
|
);
|
|
return $row;
|
|
}
|
|
|
|
public static function add($orderId, $goodsUuid, $itemId, $itemNum,
|
|
$currency, $price)
|
|
{
|
|
SqlHelper::insert
|
|
(myself()->_getMysql(''),
|
|
't_mall',
|
|
array(
|
|
'order_id' => $orderId,
|
|
'goods_uuid' => $goodsUuid,
|
|
'seller' => myself()->_getAccountId(),
|
|
'seller_address' => myself()->_getAddress(),
|
|
'item_id' => $itemId,
|
|
'item_num' => $itemNum,
|
|
'currency' => $currency,
|
|
'price' => $price,
|
|
'last_modify_price_time' => myself()->_getNowTime(),
|
|
'createtime' => myself()->_getNowTime(),
|
|
'modifytime' => myself()->_getNowTime(),
|
|
));
|
|
}
|
|
|
|
public static function modifyPrice($goodsUuid, $price)
|
|
{
|
|
SqlHelper::update
|
|
(myself()->_getMysql(''),
|
|
't_mall',
|
|
array(
|
|
'goods_uuid' => $goodsUuid
|
|
),
|
|
array(
|
|
'price' => $price,
|
|
'last_modify_price_time' => myself()->_getNowTime(),
|
|
)
|
|
);
|
|
}
|
|
|
|
public static function cancel($goodsUuid)
|
|
{
|
|
SqlHelper::update
|
|
(myself()->_getMysql(''),
|
|
't_mall',
|
|
array(
|
|
'goods_uuid' => $goodsUuid
|
|
),
|
|
array(
|
|
'status' => self::CANCEL_STATE
|
|
)
|
|
);
|
|
}
|
|
|
|
public static function buyOk($orderId, $buyer)
|
|
{
|
|
SqlHelper::update
|
|
(myself()->_getMysql(''),
|
|
't_mall',
|
|
array(
|
|
'order_id' => $orderId
|
|
),
|
|
array(
|
|
'status' => self::BUY_OK_STATE,
|
|
'buyer' => $buyer,
|
|
'buy_ok_time' => myself()->_getNowTime()
|
|
)
|
|
);
|
|
}
|
|
|
|
public static function buy($goodsUuid, $buyer)
|
|
{
|
|
SqlHelper::update
|
|
(myself()->_getMysql(''),
|
|
't_mall',
|
|
array(
|
|
'goods_uuid' => $goodsUuid
|
|
),
|
|
array(
|
|
'last_buyer' => $buyer,
|
|
'last_buy_time' => myself()->_getNowTime()
|
|
)
|
|
);
|
|
}
|
|
|
|
public static function toDto($row)
|
|
{
|
|
$cancelCd = -1;
|
|
$modifyCd = -1;
|
|
if ($row['seller'] == myself()->_getAccountId() &&
|
|
$row['seller_address'] == myself()->_getAddress()) {
|
|
$cancelCd = myself()->_getNowTime() - $row['last_buy_time'];
|
|
if ($cancelCd > 3600 * 24) {
|
|
$cancelCd = 0;
|
|
}
|
|
$modifyCd = myself()->_getNowTime() - $row['last_modify_price_time'];
|
|
if ($modifyCd > 60 * 10) {
|
|
$modifyCd = 0;
|
|
}
|
|
if ($row['status'] != self::PENDING_STATE) {
|
|
$cancelCd = -1;
|
|
$modifyCd = -1;
|
|
}
|
|
}
|
|
return array(
|
|
'goods_uuid' => $row['goods_uuid'],
|
|
'seller' => $row['seller'],
|
|
'seller_address' => $row['seller_address'],
|
|
'item_id' => $row['item_id'],
|
|
'item_num' => $row['item_num'],
|
|
'currency' => $row['currency'],
|
|
'price' => $row['price'],
|
|
'cancel_countdown' => $cancelCd,
|
|
'modify_countdown' => $modifyCd
|
|
);
|
|
}
|
|
|
|
}
|