UserRecharge.php 6.2 KB

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