// +---------------------------------------------------------------------- namespace App\Services\Common; use App\Models\FinanceModel; use App\Services\BaseService; /** * 财务管理-服务类 * @author laravel开发员 * @since 2020/11/11 * @package App\Services\Common */ class FinanceService extends BaseService { /** * 构造函数 * @author laravel开发员 * @since 2020/11/11 */ public function __construct() { $this->model = new FinanceModel(); } /** * 获取列表 * @param $params 参数 * @param int $pageSize 分页大小:默认 15 * @return array */ public function getDataList($params, $pageSize = 10, $field = []) { $where = ['a.mark' => 1]; $query = $this->model->with(['member']) ->from('finance as a') ->leftJoin('member as b', 'b.id', 'a.user_id') ->where($where) ->select($field ? $field : ['a.*']); if (isset($params['keyword']) && $params['keyword'] != '') { $query->where(function ($query) use ($params) { $kw = isset($params['keyword']) ? trim($params['keyword']) : ''; if ($kw) { $query->where('b.nickname', 'like', "%{$params['keyword']}%"); } }); } // 日期 if (isset($params['date']) && $params['date'] != '') { $date = isset($params['date']) ? $params['date'] : []; $start = isset($date[0]) ? $date[0] : ''; $end = isset($date[1]) ? $date[1] : ''; $end = $start > $end ? '' : $end; if ($start) { $query->where('a.date', '>=', $start); } if ($end) { $query->where('a.date', '<=', $end); } } if (isset($params['type'])) { if (is_array($params['type'])) { $query->whereIn('a.type', $params['type']); } else { if ($params['type'] != '') { $query->where('a.type', $params['type']); } } } if (isset($params['coin_type'])) { if (is_array($params['coin_type'])) { $query->whereIn('a.coin_type', $params['coin_type']); } else { if ($params['coin_type'] != '') { $query->where('a.coin_type', $params['coin_type']); } } } if (isset($params['status']) && $params['status']>0) { if (is_array($params['status'])) { $query->whereIn('a.status', $params['status']); } else { if ($params['status'] != '') { $query->where('a.status', $params['status']); } } } $list = $query->paginate($pageSize > 0 ? $pageSize : 9999999); $list = $list ? $list->toArray() : []; if ($list) { foreach ($list['data'] as &$item) { $item['create_time_text'] = $item['create_time'] ? datetime($item['create_time']) : ''; } } return [ 'pageSize' => $pageSize, 'total' => isset($list['total']) ? $list['total'] : 0, 'list' => isset($list['data']) ? $list['data'] : [] ]; } /** * 统计 * @return array */ public function getCount() { $expenses = FinanceModel::where(['user_id' => 0])->sum('expend'); $revenue = FinanceModel::where(['user_id' => 0])->sum('income'); // expenses: 0, // revenue: 0 return [ 'expenses' => $expenses, 'revenue' => $revenue ]; } }