UserBill.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <?php
  2. /**
  3. * @package merchant
  4. *
  5. * @author xaboy
  6. * @day 2020/6/23
  7. *
  8. *
  9. */
  10. namespace app\controller\admin\user;
  11. use app\common\repositories\finance\FinanceRepository;
  12. use crmeb\basic\BaseController;
  13. use app\common\repositories\user\UserBillRepository;
  14. use crmeb\services\SpreadsheetExcelService;
  15. use think\App;
  16. use think\facade\Db;
  17. class UserBill extends BaseController
  18. {
  19. protected $repository;
  20. public function __construct(App $app, UserBillRepository $repository)
  21. {
  22. parent::__construct($app);
  23. $this->repository = $repository;
  24. }
  25. public function getList()
  26. {
  27. [$page, $limit] = $this->getPage();
  28. $where = $this->request->params(['keyword', 'user_time', 'province', 'city', 'type']);
  29. $where["type"] = "commission";
  30. $where["status"] = 1;
  31. return app('json')->success($this->repository->getList($where, $page, $limit));
  32. }
  33. public function type()
  34. {
  35. return app('json')->success($this->repository->type());
  36. }
  37. /*平台记录*/
  38. public function adminList(){
  39. [$page, $limit] = $this->getPage();
  40. $where = $this->request->params(['keyword', 'date', 'type']);
  41. return app('json')->success($this->repository->getAdminList($where, $page, $limit));
  42. // return app('json')->success($this->repository->getAdminList($where, $page, $limit));
  43. }
  44. public function excel()
  45. {
  46. $where = request()->params(['date']);
  47. $params = request()->params(['commission_type', 'uid', 'status', 'phone', 'user_group', 'status']);
  48. $commission_type_desc = '佣金统计';
  49. if ($params['commission_type'] ?? 0 == 5) {
  50. $commission_type_desc = '养老金统计';
  51. }
  52. $data = [];
  53. //商户ID
  54. $mer_id = 0;
  55. $query = Db::name('user_bill')
  56. ->alias('ub')
  57. ->leftJoin('user u', 'u.uid=ub.uid')
  58. ->when($mer_id, function ($query) use ($mer_id) {
  59. $query->where('ub.mer_id', $mer_id);
  60. })
  61. ->when(isset($params['commission_type']) && $params['commission_type'] == 5, function ($query) use ($params) {
  62. // 养老金
  63. $query->where('ub.commission_type', 5);
  64. }, function ($query) use ($params) {
  65. // 非养老金
  66. $query->whereIn('ub.commission_type', [3, 16, 14, 10, 12, 20, 15, 7, 19]);
  67. })
  68. ->when(isset($params['uid']) && $params['uid'] != '', function ($query) use ($params) {
  69. $query->where('ub.uid', $params['uid']);
  70. })
  71. ->when(isset($params['commission_type']) && $params['commission_type'] != '', function ($query) use ($params) {
  72. $query->where('ub.commission_type', $params['commission_type']);
  73. })
  74. ->when(isset($params['status']) && $params['status'] != '', function ($query) use ($params) {
  75. $query->where('ub.status', $params['status']);
  76. })
  77. ->when(isset($params['phone']) && $params['phone'] != '', function ($query) use ($params) {
  78. $query->whereLike('u.phone', '%' . $params['phone'] . '%');
  79. })
  80. ->when(isset($params['user_group']) && $params['user_group'] != '', function ($query) use ($params) {
  81. $query->where('u.user_group', $params['user_group']);
  82. });
  83. $financeRepository = app()->make(FinanceRepository::class);
  84. $list = $financeRepository->date_where($query, $where['date'], 'ub.create_time')
  85. ->field('ub.bill_id,ub.title,ub.number,ub.take_time,ub.commission_type,u.uid,u.phone,u.nickname,u.user_group,ub.order_sn,ub.take_time,ub.status,ub.create_time')
  86. ->order('ub.bill_id', 'desc')
  87. ->select()
  88. ->each(function ($item) {
  89. if($item['take_time'])
  90. $item['take_time'] = date('Y-m-d H:i:s', $item['take_time']);
  91. return $item;
  92. });
  93. foreach ($list as $k => $v) {
  94. $temp = array(
  95. $v['bill_id'],
  96. $v['create_time'],
  97. $v['nickname'],
  98. $v['phone'],
  99. $v['title'],
  100. $v['number'],
  101. $v['status'] == 1 ? '已结算': '未结算',
  102. $v['order_sn'] ?? '',
  103. );
  104. $arr[] = $temp;
  105. }
  106. $header = [
  107. 'ID', '创建时间', '用户昵称', '用户手机号', '名称', '金额', '状态', '订单号'
  108. ];
  109. $filename = $commission_type_desc . date('YmdHis') . '_' . rand(10000, 99999);
  110. $title = $commission_type_desc;
  111. $name = $commission_type_desc;
  112. $info = '生成时间:' . date('Y-m-d H:i:s', time());
  113. $suffix = 'xlsx';
  114. $path = 'extract';
  115. unset($_instance);
  116. $_instance = SpreadsheetExcelService::instance_xin();
  117. $_path = $_instance
  118. ->createOrActive()
  119. ->setExcelHeader($header)
  120. ->setExcelTile($title, $name, $info)
  121. ->setExcelContent($arr)
  122. ->excelSave($filename, $suffix, $path);
  123. $data = [
  124. 'name' => $filename . '.' . $suffix,
  125. 'status' => 1,
  126. 'path' => '/' . $_path
  127. ];
  128. return app('json')->success('ok', $data);
  129. }
  130. }