123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- <?php
- /**
- * @author: xaboy<365615158@qq.com>
- * @day: 2017/11/28
- */
- namespace app\admin\model\user;
- use crmeb\traits\ModelTrait;
- use crmeb\basic\BaseModel;
- use crmeb\services\PHPExcelService;
- /**
- * 用户充值记录
- * Class UserRecharge
- * @package app\admin\model\user
- */
- class UserRecharge extends BaseModel
- {
- /**
- * 数据表主键
- * @var string
- */
- protected $pk = 'id';
- /**
- * 模型名称
- * @var string
- */
- protected $name = 'user_recharge';
- use ModelTrait;
- public static function systemPage($where)
- {
- $model = new self;
- $model = $model->alias('A');
- if ($where['order_id'] != '') {
- $model = $model->whereOr('A.order_id', 'like', "%$where[order_id]%");
- $model = $model->whereOr('A.id', (int)$where['order_id']);
- $model = $model->whereOr('B.nickname', 'like', "%$where[order_id]%");
- }
- $model = $model->where('A.recharge_type', 'weixin');
- $model = $model->where('A.paid', 1);
- $model = $model->field('A.*,B.nickname');
- $model = $model->join('user B', 'A.uid = B.uid', 'RIGHT');
- $model = $model->order('A.id desc');
- return self::page($model, $where);
- }
- /*
- * 设置查询条件
- * @param array $where
- * @param object $model
- * */
- public static function setWhere($where, $model = null, $alias = '', $join = '')
- {
- $model = is_null($model) ? new self() : $model;
- if ($alias) {
- $model = $model->alias('a');
- $alias .= '.';
- }
- if ($where['data']) $model = self::getModelTime($where, $model, "{$alias}add_time");
- if ($where['paid'] != '') $model = $model->where("{$alias}paid", $where['paid']);
- if ($where['nickname']) $model = $model->where("{$alias}uid|{$alias}order_id" . ($join ? '|' . $join : ''), 'LIKE', "%$where[nickname]%");
- return $model->order("{$alias}add_time desc");
- }
- /*
- * 查找用户充值金额记录
- * @param array $where
- * @return array
- *
- * */
- public static function getUserRechargeList($where)
- {
- $model = self::setWhere($where, null, 'a', 'u.nickname')->join('user u', 'u.uid=a.uid')->field(['a.*', 'u.nickname', 'u.avatar']);
- if ($where['excel']) self::saveExcel($model->select()->toArray());
- $data = $model->page($where['page'], $where['limit'])->select();
- $data = count($data) ? $data->toArray() : [];
- foreach ($data as &$item) {
- switch ($item['recharge_type']) {
- case 'routine':
- $item['_recharge_type'] = '小程序充值';
- break;
- case 'weixin':
- $item['_recharge_type'] = '公众号充值';
- break;
- default:
- $item['_recharge_type'] = '其他充值';
- break;
- }
- $item['_pay_time'] = $item['pay_time'] ? date('Y-m-d H:i:s', $item['pay_time']) : '暂无';
- $item['_add_time'] = $item['add_time'] ? date('Y-m-d H:i:s', $item['add_time']) : '暂无';
- $item['paid_type'] = $item['paid'] ? '已支付' : '未支付';
- }
- $count = self::setWhere($where, null, 'a', 'u.nickname')->join('user u', 'u.uid=a.uid')->count();
- return compact('data', 'count');
- }
- public static function saveExcel($data)
- {
- $excel = [];
- foreach ($data as $item) {
- switch ($item['recharge_type']) {
- case 'routine':
- $item['_recharge_type'] = '小程序充值';
- break;
- case 'weixin':
- $item['_recharge_type'] = '公众号充值';
- break;
- default:
- $item['_recharge_type'] = '其他充值';
- break;
- }
- $item['_pay_time'] = $item['pay_time'] ? date('Y-m-d H:i:s', $item['pay_time']) : '暂无';
- $item['_add_time'] = $item['add_time'] ? date('Y-m-d H:i:s', $item['add_time']) : '暂无';
- $item['paid_type'] = $item['paid'] ? '已支付' : '未支付';
- $excel[] = [
- $item['nickname'],
- $item['price'],
- $item['paid_type'],
- $item['_recharge_type'],
- $item['_pay_time'],
- $item['paid'] == 1 && $item['refund_price'] == $item['price'] ? '已退款' : '未退款',
- $item['_add_time']
- ];
- }
- PHPExcelService::setExcelHeader(['昵称/姓名', '充值金额', '是否支付', '充值类型', '支付事件', '是否退款', '添加时间'])
- ->setExcelTile('充值记录', '充值记录' . time(), ' 生成时间:' . date('Y-m-d H:i:s', time()))
- ->setExcelContent($excel)
- ->ExcelSave();
- }
- /*
- * 获取用户充值数据
- * @return array
- * */
- public static function getDataList($where)
- {
- return [
- [
- 'name' => '充值总金额',
- 'field' => '元',
- 'count' => self::setWhere($where, null, 'a', 'u.nickname')->join('user u', 'u.uid=a.uid')->sum('a.price'),
- 'background_color' => 'layui-bg-cyan',
- 'col' => 3,
- ],
- [
- 'name' => '充值退款金额',
- 'field' => '元',
- 'count' => self::setWhere($where, null, 'a', 'u.nickname')->join('user u', 'u.uid=a.uid')->sum('a.refund_price'),
- 'background_color' => 'layui-bg-cyan',
- 'col' => 3,
- ],
- [
- 'name' => '小程序充值金额',
- 'field' => '元',
- 'count' => self::setWhere($where, null, 'a', 'u.nickname')->where('a.recharge_type', 'routine')->join('user u', 'u.uid=a.uid')->sum('a.price'),
- 'background_color' => 'layui-bg-cyan',
- 'col' => 3,
- ],
- [
- 'name' => '公众号充值金额',
- 'field' => '元',
- 'count' => self::setWhere($where, null, 'a', 'u.nickname')->where('a.recharge_type', 'weixin')->join('user u', 'u.uid=a.uid')->sum('a.price'),
- 'background_color' => 'layui-bg-cyan',
- 'col' => 3,
- ],
- ];
- }
- public static function getStoreRechargeList($where)
- {
- $model = self::where('paid', 1);
- if (isset($where['store_id']) && $where['store_id'] != '') {
- $model = $model->where('store_id', $where['store_id']);
- }
- $sum = $model->sum('price');
- $count = $model->count();
- $list = $model->page((int)$where['page'], (int)$where['limit'])->order('pay_time', 'desc')->select();
- return compact('sum', 'count', 'list');
- }
- }
|