UserRecharge.php 6.3 KB

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