| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- <?php
- declare (strict_types = 1);
- namespace app\model\api;
- use library\basic\BaseModel;
- use library\traits\ModelTrait;
- use think\Model;
- /**
- * 聊天次数变动明细模型
- * @mixin \think\Model
- */
- class ChatBalanceLog extends BaseModel
- {
- use ModelTrait;
-
- protected $name = 'chat_balance_log';
-
- // 类型
- const TYPE_GIFT = 1; // 新用户赠送
- const TYPE_BUY = 2; // 积分购买
- const TYPE_FIRST_CHAT = 3; // 首次聊天消耗
- const TYPE_ADMIN_ADD = 4; // 管理员赠送
- const TYPE_ADMIN_SUB = 5; // 管理员扣除
-
- /**
- * 记录变动
- * @param int $userId 用户ID
- * @param int $type 类型
- * @param int $num 变动数量
- * @param int $balance 变动后余额
- * @param string $remark 备注
- * @param int $relateId 关联ID
- * @return self
- */
- public static function record(int $userId, int $type, int $num, int $balance, string $remark = '', int $relateId = 0): self
- {
- return self::create([
- 'user_id' => $userId,
- 'type' => $type,
- 'num' => $num,
- 'balance' => $balance,
- 'remark' => $remark,
- 'relate_id' => $relateId,
- 'create_time' => time(),
- ]);
- }
-
- /**
- * 获取用户变动记录
- * @param int $userId 用户ID
- * @param int $page 页码
- * @param int $limit 每页数量
- * @return array
- */
- public static function getUserLogs(int $userId, int $page = 1, int $limit = 10): array
- {
- $data = self::where('user_id', $userId)
- ->order('id desc')
- ->page($page, $limit)
- ->select();
-
- $total = self::where('user_id', $userId)->count();
-
- $list = [];
- foreach ($data ?: [] as $item) {
- $itemArr = $item->toArray();
- $itemArr['type_text'] = self::getTypeText($item->type);
- $itemArr['num_text'] = $item->num > 0 ? '+' . $item->num : $item->num;
- $list[] = $itemArr;
- }
-
- return [
- 'list' => $list,
- 'total' => $total,
- 'page' => $page,
- 'limit' => $limit,
- ];
- }
-
- /**
- * 获取类型文本
- * @param int $type 类型
- * @return string
- */
- public static function getTypeText(int $type): string
- {
- $typeMap = [
- self::TYPE_GIFT => '新用户赠送',
- self::TYPE_BUY => '积分购买',
- self::TYPE_FIRST_CHAT => '首次聊天消耗',
- self::TYPE_ADMIN_ADD => '管理员赠送',
- self::TYPE_ADMIN_SUB => '管理员扣除',
- ];
-
- return $typeMap[$type] ?? '未知';
- }
- }
|