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, int $amount, string $remark, $later_balance, $before_balance, $operate_id, $operate_type, $pre_log): bool { $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(); } }