| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- <?php
- namespace App\Module\Fund\Logic;
- use App\Module\Fund\Models\FundLogModel;
- use UCore\Helper\Logger;
- class Log
- {
- public function statistical($where)
- {
- // 查询金额大于0的记录
- $query = FundLogModel::query()->where('amount', '>', 0);
- // 应用过滤条件
- if (isset($where['user_id'])) {
- $query->where('user_id', $where['user_id']);
- }
- if (isset($where['fund_id'])) {
- $query->where('fund_id', $where['fund_id']);
- }
- if (isset($where['type'])) {
- $query->where('operate_type', $where['type']);
- }
- // 获取统计数据
- $add = [
- 'sumamount' => $query->sum('amount'),
- 'count' => $query->count()
- ];
- // 查询金额小于0的记录
- $query = FundLogModel::query()->where('amount', '<', 0);
- // 应用过滤条件
- if (isset($where['user_id'])) {
- $query->where('user_id', $where['user_id']);
- }
- if (isset($where['fund_id'])) {
- $query->where('fund_id', $where['fund_id']);
- }
- if (isset($where['type'])) {
- $query->where('operate_type', $where['type']);
- }
- // 获取统计数据
- $reduce = [
- 'sumamount' => $query->sum('amount'),
- 'count' => $query->count()
- ];
- return ['add' => $add, 'reduce' => $reduce];
- }
- /**
- * 列表
- *
- * @param $where
- * @param $page
- * @param $rows
- * @return \Dcore\ModelCore[]|FundLog[]|\Illuminate\Pagination\LengthAwarePaginator|\LaravelIdea\Helper\Dcore\_IH_ModelCore_C|\LaravelIdea\Helper\Fund\ModelLaravel\_IH_FundLog_C
- */
- public function lists($where = [], $page = 1, $rows = 10)
- {
- $query = FundLogModel::query()->orderBy('id', 'desc');
- // 应用过滤条件
- if (isset($where['user_id'])) {
- $query->where('user_id', $where['user_id']);
- }
- if (isset($where['fund_id'])) {
- $query->where('fund_id', $where['fund_id']);
- }
- if (isset($where['operate_type'])) {
- $query->where('operate_type', $where['operate_type']);
- }
- if (isset($where['type'])) {
- if ($where['type'] == 3) {
- $query->whereIn('remark', ['游戏消耗', '游戏奖励']);
- } else if ($where['type'] == '1') {
- $query->where('amount', '<', 0);
- } else if ($where['type'] == '2') {
- $query->where('amount', '>', 0);
- }
- }
- return $query->paginate($rows, ['*'], 'page', $page);
- }
- /**
- * 获取资金日志的详细信息
- *
- * @param FundLogModel $log 资金日志模型
- * @return FundLogModel 添加了额外信息的资金日志模型
- */
- private function enrichLogInfo(FundLogModel $log)
- {
- // 资金类型名称映射
- $fundNameList = [
- '1' => '余额账户',
- '2' => '需求资金托管',
- '3' => '待结算佣金',
- '4' => '系统佣金抽成',
- '5' => '提现冻结资金',
- '6' => '未设置'
- ];
- // 操作类型名称映射
- $operateTypeNameList = [
- 'recharge' => '资金转账',
- 'admin' => '管理员操作',
- 'transfer' => 'transfer',
- 'order' => 'Order系统',
- 'measure' => '需求相关',
- 'circulatio' => '账户资金流转'
- ];
- // 设置资金类型名称
- $log->fund_id_name = $fundNameList[$log->fund_id] ?? '未知账户';
- // 设置操作类型名称
- $log->operate_type_name = $operateTypeNameList[$log->operate_type] ?? '未知操作';
- return $log;
- }
- /**
- * 记录日志
- */
- /**
- * 创建日志
- * @param int $user_id
- * @param $fund_id
- * @param int $amount
- * @param string $remark
- * @param $later_balance
- * @param $before_balance
- * @param $operate_id
- * @param $operate_type
- * @param FundLogModel $pre_log
- * @return bool
- */
- public static function create_log(int $user_id, $fund_id, $amount, string $remark, $later_balance, $before_balance, $operate_id, $operate_type, $pre_log): bool
- {
- Logger::debug(" createlog $amount ,$later_balance , $before_balance ");
- $log = new FundLogModel();
- $log->user_id = $user_id;
- $log->fund_id = $fund_id;
- $log->amount = $amount;
- $log->operate_id = $operate_id;
- $log->operate_type = $operate_type;
- $log->remark = $remark;
- $log->create_time = time();
- $log->create_ip = request()->ip();
- $log->later_balance = $later_balance;
- $log->before_balance = $before_balance;
- $log->date_key = date('Ym');
- $log->hash = $log->generateHash();
- if($pre_log){
- $log->prev_hash = $pre_log->hash;
- }else{
- $log->prev_hash = '-';
- }
- return $log->save();
- }
- }
|