'float', 'pay_price' => 'float', 'money' => 'float', ]; /** * 自动写入添加时间 * @return int */ protected function setAddTimeAttr() { return time(); } /** * 用户ID搜索器 * @param mixed $query * @param mixed $value */ public function searchUidAttr($query, $value) { if (is_array($value)) { $query->whereIn('uid', $value); } else { $query->where('uid', $value); } } /** * 订单号搜索器 * @param mixed $query * @param mixed $value */ public function searchOrderIdAttr($query, $value) { $query->where('order_id', $value); } /** * 订单类型搜索器 * @param mixed $query * @param mixed $value */ public function searchTypeAttr($query, $value) { if (is_array($value)) { $query->where('type', 'in', $value); } else { $query->where('type', $value); } } /** * 订单状态搜索器 * @param mixed $query * @param mixed $value */ public function searchStatusAttr($query, $value) { $query->where('status', $value); } /** * 支付状态搜索器 * @param mixed $query * @param mixed $value */ public function searchPaidAttr($query, $value) { $query->where('paid', $value); } /** * 会员类型搜索器 * -1 表示查询所有已购买会员(激活付费会员统计) * @param mixed $query * @param mixed $value */ public function searchMemberTypeAttr($query, $value) { if ($value === -1) { $query->where('member_type', '<>', ''); } else { $query->where('member_type', $value); } } /** * 渠道类型搜索器 * @param mixed $query * @param mixed $value */ public function searchChannelTypeAttr($query, $value) { $query->where('channel_type', $value); } /** * 添加时间搜索器 * @param mixed $query * @param mixed $value */ public function searchAddTimeAttr($query, $value) { if (empty($value) && $value !== '0') return; if (is_string($value)) { $query->whereTime('add_time', $value); } elseif (is_array($value) && count($value) == 2) { $startTime = $value[0]; $endTime = $value[1] ?? 0; if ($startTime && $endTime) { $query->whereBetween('add_time', [$startTime, $endTime]); } elseif ($startTime) { $query->whereTime('add_time', '>=', $startTime); } elseif ($endTime) { $query->whereTime('add_time', '<', $endTime); } } } /** * 支付时间搜索器 * @param mixed $query * @param mixed $value */ public function searchPayTimeAttr($query, $value) { if (empty($value) && $value !== '0') return; if (is_string($value)) { $query->whereTime('pay_time', $value); } elseif (is_array($value) && count($value) == 2) { $startTime = $value[0]; $endTime = $value[1] ?? 0; if ($startTime && $endTime) { $query->whereBetween('pay_time', [$startTime, $endTime]); } elseif ($startTime) { $query->whereTime('pay_time', '>=', $startTime); } elseif ($endTime) { $query->whereTime('pay_time', '<', $endTime); } } } }