UserSystemRecharge.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <?php
  2. /**
  3. * @author: xaboy<365615158@qq.com>
  4. * @day: 2017/11/28
  5. */
  6. namespace app\admin\model\user;
  7. use crmeb\traits\ModelTrait;
  8. use crmeb\basic\BaseModel;
  9. use crmeb\services\PHPExcelService;
  10. use app\admin\model\system\SystemAdmin;
  11. /**
  12. * 用户充值记录
  13. * Class UserRecharge
  14. * @package app\admin\model\user
  15. */
  16. class UserSystemRecharge extends BaseModel
  17. {
  18. /**
  19. * 数据表主键
  20. * @var string
  21. */
  22. protected $pk = 'id';
  23. /**
  24. * 模型名称
  25. * @var string
  26. */
  27. protected $name = 'user_system_recharge';
  28. use ModelTrait;
  29. public static function systemPage($where)
  30. {
  31. $model = new self;
  32. $model = $model->alias('A');
  33. if ($where['key'] != '') {
  34. $model = $model->whereOr('A.order_id', 'like', "%$where[key]%");
  35. $model = $model->whereOr('A.id', (int)$where['key']);
  36. }
  37. if($where['auth_status']>-2) $model = $model->where('A.auth_status', $where['auth_status']);
  38. $model = $model->field('A.*');
  39. $model = $model->order('A.id desc');
  40. $count = $model->count();
  41. $data = $model->page($where['page'],$where['limit'])->select()->toarray();
  42. foreach ($data as &$v)
  43. {
  44. $v['user'] = User::where('uid',$v['uid'])->field('account,real_name,phone')->find();
  45. $v['admin_real_name'] = SystemAdmin::where('id',$v['create_admin_id'])->value('real_name');
  46. $v['auth_real_name'] = SystemAdmin::where('id',$v['auth_admin_id'])->value('real_name');
  47. $v['create_admin_time_txt'] = $v['create_admin_time']>0?date("Y-m-d H:i:s",$v['create_admin_time']):'';
  48. $v['auth_admin_time_txt'] = $v['auth_admin_time']>0?date("Y-m-d H:i:s",$v['auth_admin_time']):'';
  49. }
  50. return compact('count','data');
  51. }
  52. /*
  53. * 设置查询条件
  54. * @param array $where
  55. * @param object $model
  56. * */
  57. public static function setWhere($where, $model = null, $alias = '', $join = '')
  58. {
  59. $model = is_null($model) ? new self() : $model;
  60. if ($alias) {
  61. $model = $model->alias('a');
  62. $alias .= '.';
  63. }
  64. if ($where['data']) $model = self::getModelTime($where, $model, "{$alias}add_time");
  65. if ($where['paid'] != '') $model = $model->where("{$alias}paid", $where['paid']);
  66. if ($where['nickname']) $model = $model->where("{$alias}uid|{$alias}order_id" . ($join ? '|' . $join : ''), 'LIKE', "%$where[nickname]%");
  67. return $model->order("{$alias}add_time desc");
  68. }
  69. public static function saveExcel($data)
  70. {
  71. $excel = [];
  72. foreach ($data as $item) {
  73. switch ($item['recharge_type']) {
  74. case 'routine':
  75. $item['_recharge_type'] = '小程序充值';
  76. break;
  77. case 'weixin':
  78. $item['_recharge_type'] = '公众号充值';
  79. break;
  80. default:
  81. $item['_recharge_type'] = '其他充值';
  82. break;
  83. }
  84. $item['_pay_time'] = $item['pay_time'] ? date('Y-m-d H:i:s', $item['pay_time']) : '暂无';
  85. $item['_add_time'] = $item['add_time'] ? date('Y-m-d H:i:s', $item['add_time']) : '暂无';
  86. $item['paid_type'] = $item['paid'] ? '已支付' : '未支付';
  87. $excel[] = [
  88. $item['nickname'],
  89. $item['price'],
  90. $item['paid_type'],
  91. $item['_recharge_type'],
  92. $item['_pay_time'],
  93. $item['paid'] == 1 && $item['refund_price'] == $item['price'] ? '已退款' : '未退款',
  94. $item['_add_time']
  95. ];
  96. }
  97. PHPExcelService::setExcelHeader(['昵称/姓名', '充值金额', '是否支付', '充值类型', '支付事件', '是否退款', '添加时间'])
  98. ->setExcelTile('充值记录', '充值记录' . time(), ' 生成时间:' . date('Y-m-d H:i:s', time()))
  99. ->setExcelContent($excel)
  100. ->ExcelSave();
  101. }
  102. /*
  103. * 获取用户充值数据
  104. * @return array
  105. * */
  106. public static function getDataList($where)
  107. {
  108. return [
  109. [
  110. 'name' => '充值总金额',
  111. 'field' => '元',
  112. 'count' => self::setWhere($where, null, 'a', 'u.nickname')->join('user u', 'u.uid=a.uid')->sum('a.price'),
  113. 'background_color' => 'layui-bg-cyan',
  114. 'col' => 3,
  115. ],
  116. [
  117. 'name' => '充值退款金额',
  118. 'field' => '元',
  119. 'count' => self::setWhere($where, null, 'a', 'u.nickname')->join('user u', 'u.uid=a.uid')->sum('a.refund_price'),
  120. 'background_color' => 'layui-bg-cyan',
  121. 'col' => 3,
  122. ],
  123. [
  124. 'name' => '小程序充值金额',
  125. 'field' => '元',
  126. 'count' => self::setWhere($where, null, 'a', 'u.nickname')->where('a.recharge_type', 'routine')->join('user u', 'u.uid=a.uid')->sum('a.price'),
  127. 'background_color' => 'layui-bg-cyan',
  128. 'col' => 3,
  129. ],
  130. [
  131. 'name' => '公众号充值金额',
  132. 'field' => '元',
  133. 'count' => self::setWhere($where, null, 'a', 'u.nickname')->where('a.recharge_type', 'weixin')->join('user u', 'u.uid=a.uid')->sum('a.price'),
  134. 'background_color' => 'layui-bg-cyan',
  135. 'col' => 3,
  136. ],
  137. ];
  138. }
  139. }