| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324 |
- <?php
- namespace app\controller\merchant\finance;
- use app\common\repositories\finance\FinanceRepository;
- use app\controller\api\entropybarter\User;
- use crmeb\basic\BaseController;
- use think\facade\Db;
- class Finance extends BaseController
- {
- /**
- * 收益统计
- * @return mixed
- */
- public function earnings_list()
- {
- try {
- [$page, $limit] = $this->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('佣金统计失败');
- }
- }
- /**
- * 京豆统计
- * @return mixed
- */
- public function jingdou_list(){
- try {
- $mer_id = $this->request->merId();
- $financeRepository = app()->make(FinanceRepository::class);
- $date = $financeRepository->jingdou_list($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 fenrun_list(){
- try {
- $mer_id = $this->request->merId();
- $financeRepository = app()->make(FinanceRepository::class);
- $date = $financeRepository->fenrun_list($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('分润统计失败');
- }
- }
- }
|