getPage(); $where = $this->request->params(['date']); $params = $this->request->params(['commission_type']); $mer_id = $this->request->merId(); $uid = Db::name('merchant')->where('mer_id', $mer_id)->value('uid'); $date = []; //商户ID $query = Db::name('user_bill') ->field('bill_id,create_time,number,commission_type,title,status') ->where('uid', $uid) ->whereIn('commission_type', [7, 17, 19]) ->when(isset($params['commission_type']) && $params['commission_type'] != '', function ($query) use ($params) { $query->where('commission_type', $params['commission_type']); }); $query1 = clone $query; $query2 = clone $query; $date['list'] = $this->date_where($query, $where['date'], 'create_time')->page($page, $limit)->order('create_time', 'desc')->select(); $date['count'] = $query->count(); $date['stride_shop_money'] = $this->date_where($query1, $where['date'], 'create_time')->where('commission_type', 7)->sum('number'); $date['real_subsidy_money'] = $this->date_where($query2, $where['date'], 'create_time')->where('commission_type', 19)->sum('number'); $date['shouyi'] = sprintf("%.2f", $date['real_subsidy_money'] + $date['stride_shop_money']); return app('json')->success($date); } catch (\Exception $e) { Db::name('log')->insert(['data' => '获取佣金对账错误:' . $e->getFile() . ':' . $e->getLine() . '【' . $e->getMessage() . '】']); return app('json')->fail('获取佣金信息失败'); } } public function earnings_detail() { try { [$page, $limit] = $this->getPage(); $where = $this->request->params(['date']); $mer_id = $this->request->merId(); $search = $this->request->param('search', ''); $type = $this->request->param('type', ''); $id = $this->request->param('id', ''); if (!empty($id)) { $user_bill = Db::name('user_bill')->where('bill_id', $id)->find(); $start_date = date("Y/m/01", strtotime($user_bill['create_time'])); $end_date = date("Y/m/31", strtotime($user_bill['create_time'])); $where['date'] = "$start_date-$end_date"; } $date = []; //商户ID $query = Db::name('store_order') ->alias('o') ->leftJoin('store_order_extend oe', 'oe.order_id=o.order_id') ->where('o.is_settlement',1) ->when($search, function ($query) use ($search) { $query->where("o.order_sn like '%{$search}%' or o.user_phone like '%{$search}%' or o.real_name like '%{$search}%'"); }) ->when($type == 1, function ($query) use ($mer_id) { $query->where('oe.shop_money', '>', 0) ->where('o.mer_id', $mer_id); }, function ($query) use ($mer_id) { $query->where('oe.stride_shop_money', '>', 0) ->where('oe.stride_shop_mer_id', $mer_id); }); $query1 = clone $query; $date['list'] = $this->date_where($query, $where['date'], 'o.create_time') ->field('o.order_id,o.real_name,o.user_phone,o.create_time,o.total_price,o.mer_id,o.uid,o.order_sn,oe.*') ->page($page, $limit) ->order('o.create_time desc') ->select() ->each(function ($item) { $user_info = Db::name('user')->where('uid', $item['uid'])->find(); $item['real_name'] = $user_info['nickname']; $item['user_phone'] = $user_info['account']; $item['from_mer_name'] = Db::name('merchant')->where('mer_id', $item['mer_id'])->value('mer_name'); unset($item['stride_shop_mer_id']); return $item; }); $date['count'] = $this->date_where($query, $where['date'], 'o.create_time')->count(); $date['statistics'] = $this->date_where($query, $where['date'], 'o.create_time')->field('sum(oe.shop_money) shop_money,sum(oe.real_subsidy_money) real_subsidy_money,sum(oe.big_vip_money) big_vip_money,sum(oe.shop_partner_money) shop_partner_money,sum(oe.stride_shop_money) stride_shop_money,sum(oe.shop_let_money) shop_let_money')->select(); return app('json')->success($date); } catch (\Exception $e) { Db::name('log')->insert(['data' => '获取佣金对账错误:' . $e->getFile() . ':' . $e->getLine() . '【' . $e->getMessage() . '】']); return app('json')->fail('获取佣金信息失败'); } } /** * 创客合伙人 * @return mixed */ public function shop_partne_list() { try { [$page, $limit] = $this->getPage(); $where = $this->request->params(['date']); $mer_id = $this->request->merId(); $search = $this->request->param('search', ''); $date = []; //商户ID $query = Db::name('user') ->alias('u') ->leftJoin('user_bill ub','ub.uid=u.uid') ->where('u.mer_id', $mer_id) ->where('u.is_shop_partner', 1) ->where('ub.commission_type',17) ->when($search, function ($query) use ($search) { $query->where("u.phone like %{$search}% or u.nickname like %{$search}%"); }); $query1 = clone $query; $date['list'] = $this->date_where($query, $where['date'], 'ub.create_time') ->field('u.uid,u.nickname,u.phone,sum(ub.number) money') ->group('u.uid') ->page($page, $limit) ->select() ->each(function ($item) { return $item; }); $date['count'] = $query->count(); $date['statistics'] = $query1->field('sum(ub.number) money')->select(); return app('json')->success($date); } catch (\Exception $e) { Db::name('log')->insert(['data' => '获取创客合伙人错误:' . $e->getFile() . ':' . $e->getLine() . '【' . $e->getMessage() . '】']); var_dump($e); return app('json')->fail('获取创客合伙人失败'); } } /** * 用户账单 * @return mixed */ public function user_bill() { try { $mer_id = $this->request->merId(); $financeRepository = app()->make(FinanceRepository::class); $date = $financeRepository->user_bill($mer_id); return app('json')->success($date); } catch (\Exception $e) { Db::name('log')->insert(['data' => '获取创客合伙人错误:' . $e->getFile() . ':' . $e->getLine() . '【' . $e->getMessage() . '】']); return app('json')->fail('获取创客合伙人失败'); } } /** * 创客账单 * @return mixed */ public function maker_bill() { try { $mer_id = $this->request->merId(); $financeRepository = app()->make(FinanceRepository::class); $date = $financeRepository->user_bill_maker($mer_id); return app('json')->success($date); } catch (\Exception $e) { Db::name('log')->insert(['data' => '获取创客合伙人错误:' . $e->getFile() . ':' . $e->getLine() . '【' . $e->getMessage() . '】']); return app('json')->fail('获取创客合伙人失败'); } } /** * 创客详情列表 * @return mixed */ public function maker_bill_lst($uid) { try { $mer_id = $this->request->merId(); $financeRepository = app()->make(FinanceRepository::class); $date = $financeRepository->user_bill_maker($mer_id, $uid); return app('json')->success($date); } catch (\Exception $e) { Db::name('log')->insert(['data' => '获取创客合伙人错误:' . $e->getFile() . ':' . $e->getLine() . '【' . $e->getMessage() . '】']); return app('json')->fail('获取创客合伙人失败'); } } /** * 详情列表 * @return mixed */ public function user_bill_lst($uid) { try { $mer_id = $this->request->merId(); $financeRepository = app()->make(FinanceRepository::class); $date = $financeRepository->user_bill_ck($mer_id, $uid); return app('json')->success($date); } catch (\Exception $e) { Db::name('log')->insert(['data' => '获取创客合伙人错误:' . $e->getFile() . ':' . $e->getLine() . '【' . $e->getMessage() . '】']); return app('json')->fail('获取创客合伙人失败'); } } /** * 列表中的时间条件 */ public function date_where($Db, $where, $prefix = 'so.create_time', $field = '-') { if (!isset($where)) return $Db; switch ($where) { case 'today': $Db->whereBetween($prefix, [date('Y-m-d H:i:s', strtotime('today')), date('Y-m-d H:i:s', strtotime('tomorrow -1second'))]); break; case 'week': $Db->whereBetween($prefix, [date('Y-m-d H:i:s', strtotime('this week 00:00:00')), date('Y-m-d H:i:s', strtotime('next week 00:00:00 -1second'))]); break; case 'month': $Db->whereBetween($prefix, [date('Y-m-d H:i:s', strtotime('first Day of this month 00:00:00')), date('Y-m-d H:i:s', strtotime('first Day of next month 00:00:00 -1second'))]); break; case 'year': $Db->whereBetween($prefix, [date('Y-m-d H:i:s', strtotime('this year 1/1')), date('Y-m-d H:i:s', strtotime('next year 1/1 -1second'))]); break; case 'yesterday': $Db->whereBetween($prefix, [date('Y-m-d H:i:s', strtotime('yesterday')), date('Y-m-d H:i:s', strtotime('today -1second'))]); break; case 'quarter': list($startTime, $endTime) = getMonth(); $Db = $Db->where($prefix, '>', $startTime); $Db = $Db->where($prefix, '<', $endTime); break; case 'lately7': $Db = $Db->where($prefix, 'between', [date('Y-m-d', strtotime("-7 day")), date('Y-m-d H:i:s')]); break; case 'lately30': $Db = $Db->where($prefix, 'between', [date('Y-m-d', strtotime("-30 day")), date('Y-m-d H:i:s')]); break; default: if (strstr($where, $field) !== false) { list($startTime, $endTime) = explode($field, $where); if (strlen($startTime) == 4) { $Db->whereBetweenTime($prefix, date('Y-m-d H:i:s', strtotime($startTime)), date('Y-m-d H:i:s', strtotime($startTime . ' +1day -1second'))); } else { if ($startTime == $endTime) { $Db = $Db->whereDay($prefix, $startTime); } else { $Db = $Db->where($prefix, '>', date('Y-m-d H:i:s', strtotime($startTime))); $Db = $Db->where($prefix, '<', date('Y-m-d H:i:s', strtotime($endTime))); } } } break; } return $Db; } /** * 积分统计 * @return mixed */ public function integral_list(){ try { $financeRepository = app()->make(FinanceRepository::class); $date = $financeRepository->integral_list(); return app('json')->success($date); } catch (\Exception $e) { Db::name('log')->insert(['data' => '佣金统计错误:' . $e->getFile() . ':' . $e->getLine() . '【' . $e->getMessage() . '】']); return app('json')->fail('佣金统计失败'); } } }