UserRecharge.php 5.5 KB

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