game2006api/webapp/models/ShopBuyRecord.php
aozhiwei f797287f55 1
2024-10-12 15:26:32 +08:00

156 lines
5.3 KiB
PHP

<?php
namespace models;
use mt;
use phpcommon\SqlHelper;
class ShopBuyRecord extends BaseModel
{
public static function find($itemId)
{
$row = SqlHelper::ormSelectOne(
myself()->_getSelfMysql(),
't_shop_buy_record',
array(
'account_id' => myself()->_getAccountId(),
'item_id' => $itemId,
)
);
return $row;
}
public static function all()
{
$rows = SqlHelper::ormSelect(
myself()->_getSelfMysql(),
't_shop_buy_record',
array(
'account_id' => myself()->_getAccountId(),
)
);
return array_map(function ($row) {
$nowDaySeconds = myself()->_getNowDaySeconds();
if (!($row['last_buy_time'] >= $nowDaySeconds &&
$row['last_buy_time'] <= $nowDaySeconds + 3600 * 24)) {
$row['this_day_buy_times'] = 0;
}
$mondaySeconds = myself()->_getMondaySeconds();
if (!($row['last_buy_time'] >= $mondaySeconds &&
$row['last_buy_time'] <= $mondaySeconds + 3600 * 24 * 7)) {
$row['this_week_buy_times'] = 0;
}
return $row;
}, $rows);
}
public static function allToHash()
{
$rows = self::all();
$buyRecordHash = array();
array_walk($rows, function ($row) use (&$buyRecordHash) {
$buyRecordHash[$row['item_id']] = $row;
});
return $buyRecordHash;
}
public static function toDto($row)
{
return array();
}
public static function add($itemId, $itemNum)
{
SqlHelper::upsert(
myself()->_getSelfMysql(),
't_shop_buy_record',
array(
'account_id' => myself()->_getAccountId(),
'item_id' => $itemId,
),
array(
'this_day_buy_times' => function () {
$nowDaySeconds = myself()->_getNowDaySeconds();
$cond = " last_buy_time>=${nowDaySeconds} AND last_buy_time<=${nowDaySeconds} + 3600 * 24 ";
return "CASE WHEN (${cond}) THEN this_day_buy_times + 1 ELSE 1 END";
},
'this_week_buy_times' => function () {
$mondaySeconds = myself()->_getMondaySeconds();
$cond = " last_buy_time>=${mondaySeconds} AND last_buy_time<=${mondaySeconds} + 3600 * 24 * 7 ";
return "CASE WHEN (${cond}) THEN this_week_buy_times + 1 ELSE 1 END";
},
'total_buy_times' => function () {
return 'total_buy_times + 1';
},
'last_buy_time' => myself()->_getNowTime(),
'modifytime' => myself()->_getNowTime(),
),
array(
'account_id' => myself()->_getAccountId(),
'item_id' => $itemId,
'this_day_buy_times' => 1,
'this_week_buy_times' => 1,
'total_buy_times' => 1,
'last_buy_time' => myself()->_getNowTime(),
'createtime' => myself()->_getNowTime(),
'modifytime' => myself()->_getNowTime(),
)
);
}
public static function addWithAddress($address, $itemId, $itemNum)
{
$account_id = ShopBuyRecord::getAccountId($address);
SqlHelper::upsert(
myself()->_getMysql($address),
't_shop_buy_record',
array(
'account_id' => $account_id,
'item_id' => $itemId,
),
array(
'this_day_buy_times' => function () {
$nowDaySeconds = myself()->_getNowDaySeconds();
$cond = " last_buy_time>=${nowDaySeconds} AND last_buy_time<=${nowDaySeconds} + 3600 * 24 ";
return "CASE WHEN (${cond}) THEN this_day_buy_times + 1 ELSE 1 END";
},
'this_week_buy_times' => function () {
$mondaySeconds = myself()->_getMondaySeconds();
$cond = " last_buy_time>=${mondaySeconds} AND last_buy_time<=${mondaySeconds} + 3600 * 24 * 7 ";
return "CASE WHEN (${cond}) THEN this_week_buy_times + 1 ELSE 1 END";
},
'total_buy_times' => function () {
return 'total_buy_times + 1';
},
'last_buy_time' => myself()->_getNowTime(),
'modifytime' => myself()->_getNowTime(),
),
array(
'account_id' => $account_id,
'item_id' => $itemId,
'this_day_buy_times' => 1,
'this_week_buy_times' => 1,
'total_buy_times' => 1,
'last_buy_time' => myself()->_getNowTime(),
'createtime' => myself()->_getNowTime(),
'modifytime' => myself()->_getNowTime(),
)
);
}
private static function getAccountId($address)
{
$row = SqlHelper::ormSelectOne(
myself()->_getMysql($address),
't_user',
array(
'address' => $address
)
);
return $row['account_id'];
}
}