|
@@ -1,344 +0,0 @@
|
|
|
-<?php
|
|
|
|
|
-// +----------------------------------------------------------------------
|
|
|
|
|
-// | LARAVEL8.0 框架 [ LARAVEL ][ RXThinkCMF ]
|
|
|
|
|
-// +----------------------------------------------------------------------
|
|
|
|
|
-// | 版权所有 2017~2021 LARAVEL研发中心
|
|
|
|
|
-// +----------------------------------------------------------------------
|
|
|
|
|
-// | 官方网站: http://www.laravel.cn
|
|
|
|
|
-// +----------------------------------------------------------------------
|
|
|
|
|
-// | Author: laravel开发员 <laravel.qq.com>
|
|
|
|
|
-// +----------------------------------------------------------------------
|
|
|
|
|
-
|
|
|
|
|
-namespace App\Services\Common;
|
|
|
|
|
-
|
|
|
|
|
-use App\Models\AccountLogModel;
|
|
|
|
|
-use App\Models\ActionLogModel;
|
|
|
|
|
-use App\Models\BalanceLogModel;
|
|
|
|
|
-use App\Models\MemberModel;
|
|
|
|
|
-use App\Models\MessageModel;
|
|
|
|
|
-use App\Services\BaseService;
|
|
|
|
|
-use App\Services\RedisService;
|
|
|
|
|
-use Illuminate\Support\Facades\DB;
|
|
|
|
|
-
|
|
|
|
|
-/**
|
|
|
|
|
- * 余额管理-服务类
|
|
|
|
|
- * @author laravel开发员
|
|
|
|
|
- * @since 2020/11/11
|
|
|
|
|
- * @package App\Services\Common
|
|
|
|
|
- */
|
|
|
|
|
-class BalanceLogService extends BaseService
|
|
|
|
|
-{
|
|
|
|
|
- public static $instance = null;
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * 构造函数
|
|
|
|
|
- * @author laravel开发员
|
|
|
|
|
- * @since 2020/11/11
|
|
|
|
|
- * AccountService constructor.
|
|
|
|
|
- */
|
|
|
|
|
- public function __construct()
|
|
|
|
|
- {
|
|
|
|
|
- $this->model = new BalanceLogModel();
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * 静态入口
|
|
|
|
|
- * @return static|null
|
|
|
|
|
- */
|
|
|
|
|
- public static function make()
|
|
|
|
|
- {
|
|
|
|
|
- if (!self::$instance) {
|
|
|
|
|
- self::$instance = (new static());
|
|
|
|
|
- }
|
|
|
|
|
- return self::$instance;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * @param $params
|
|
|
|
|
- * @param int $pageSize
|
|
|
|
|
- * @return array
|
|
|
|
|
- */
|
|
|
|
|
- public function getDataList($params, $pageSize = 15)
|
|
|
|
|
- {
|
|
|
|
|
- $query = $this->getQuery($params);
|
|
|
|
|
-
|
|
|
|
|
- $model = clone $query;
|
|
|
|
|
- $counts = [
|
|
|
|
|
- 'count'=> $model->count('a.id'),
|
|
|
|
|
- 'total'=> $model->sum('a.money'),
|
|
|
|
|
- ];
|
|
|
|
|
-
|
|
|
|
|
- $list = $query->select(['a.*'])
|
|
|
|
|
- ->orderBy('a.create_time','desc')
|
|
|
|
|
- ->orderBy('a.id','desc')
|
|
|
|
|
- ->paginate($pageSize > 0 ? $pageSize : 9999999);
|
|
|
|
|
- $list = $list? $list->toArray() :[];
|
|
|
|
|
- if($list){
|
|
|
|
|
- foreach($list['data'] as &$item){
|
|
|
|
|
- $item['create_time'] = $item['create_time']? datetime($item['create_time'],'Y-m-d H.i.s') : '';
|
|
|
|
|
- $item['pay_img'] = $item['pay_img']? get_image_url($item['pay_img']) : '';
|
|
|
|
|
- $item['member'] = isset($item['member'])? $item['member'] : [];
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- return [
|
|
|
|
|
- 'pageSize'=> $pageSize,
|
|
|
|
|
- 'total'=>isset($list['total'])? $list['total'] : 0,
|
|
|
|
|
- 'counts'=>$counts,
|
|
|
|
|
- 'list'=> isset($list['data'])? $list['data'] : []
|
|
|
|
|
- ];
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * 查询
|
|
|
|
|
- * @param $params
|
|
|
|
|
- * @return \Illuminate\Database\Eloquent\Builder
|
|
|
|
|
- */
|
|
|
|
|
- public function getQuery($params)
|
|
|
|
|
- {
|
|
|
|
|
- $where = ['a.mark' => 1];
|
|
|
|
|
- $type = isset($params['type'])? $params['type'] : 0;
|
|
|
|
|
- if($type>0){
|
|
|
|
|
- $where['a.type'] = $type;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- return $this->model->with(['member'])->from("balance_logs as a")
|
|
|
|
|
- ->leftJoin('member as b','b.id','=','a.user_id')
|
|
|
|
|
- ->where($where)
|
|
|
|
|
- ->where(function ($query) use($params) {
|
|
|
|
|
- $keyword = isset($params['keyword']) ? $params['keyword'] : '';
|
|
|
|
|
- $userId = isset($params['user_id'])? $params['user_id'] : 0;
|
|
|
|
|
- if($userId){
|
|
|
|
|
- $query->where('a.user_id',$userId);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if ($keyword) {
|
|
|
|
|
- $query->where(function($query) use($keyword){
|
|
|
|
|
- $query->where('b.nickname','like',"%{$keyword}%")
|
|
|
|
|
- ->orWhere('b.mobile','like',"%{$keyword}%");
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- $orderNo = isset($params['order_no'])? trim($params['order_no']) : '';
|
|
|
|
|
- if($orderNo){
|
|
|
|
|
- $query->where(function($query) use($orderNo){
|
|
|
|
|
- $query->where('a.order_no','like',"%{$orderNo}%");
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- $status = isset($params['status'])? $params['status'] : 0;
|
|
|
|
|
- if($status==0){
|
|
|
|
|
- $query->whereIn('a.status',[2,4]);
|
|
|
|
|
- }else if($status<0){
|
|
|
|
|
- $query->whereIn('a.status', [1,3]);
|
|
|
|
|
- }else if($status>0){
|
|
|
|
|
- $query->where('a.status', $status);
|
|
|
|
|
- }
|
|
|
|
|
- })
|
|
|
|
|
- ->where(function ($query) use($params){
|
|
|
|
|
-
|
|
|
|
|
- // 日期
|
|
|
|
|
- $date = isset($params['date']) ? $params['date'] : [];
|
|
|
|
|
- $start = isset($date[0])? $date[0] : '';
|
|
|
|
|
- $end = isset($date[1])? $date[1] : '';
|
|
|
|
|
- $end = $start>=$end? '' : $end;
|
|
|
|
|
- if ($start) {
|
|
|
|
|
- $query->where('a.create_time','>=', strtotime($start));
|
|
|
|
|
- }
|
|
|
|
|
- if($end){
|
|
|
|
|
- $query->where('a.create_time','<=', strtotime($end));
|
|
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * 添加或编辑
|
|
|
|
|
- * @return array
|
|
|
|
|
- * @since 2020/11/11
|
|
|
|
|
- * @author laravel开发员
|
|
|
|
|
- */
|
|
|
|
|
- public function edit()
|
|
|
|
|
- {
|
|
|
|
|
- $data = request()->all();
|
|
|
|
|
- return parent::edit($data); // TODO: Change the autogenerated stub
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * 审核
|
|
|
|
|
- * @param $adminId
|
|
|
|
|
- * @param $params
|
|
|
|
|
- * @return array|false
|
|
|
|
|
- */
|
|
|
|
|
- public function confirm($adminId, $params)
|
|
|
|
|
- {
|
|
|
|
|
- $id = isset($params['id'])? intval($params['id']) : 0;
|
|
|
|
|
- $status = isset($params['status'])? intval($params['status']) : 0;
|
|
|
|
|
- $payStatus = isset($params['pay_status'])? intval($params['pay_status']) : 0;
|
|
|
|
|
- $confirmRemark = isset($params['confirm_remark'])? trim($params['confirm_remark']) : '';
|
|
|
|
|
- $payImg = isset($params['pay_img'])? trim($params['pay_img']) : '';
|
|
|
|
|
- $payImg = $payImg? get_image_path($payImg) : '';
|
|
|
|
|
-
|
|
|
|
|
- $info = $this->model->with(['member'])->where(['id'=> $id,'mark'=>1])->first();
|
|
|
|
|
- $userInfo = isset($info['member'])? $info['member'] : [];
|
|
|
|
|
- $orderStatus = isset($info['status'])? $info['status'] : 0;
|
|
|
|
|
- $orderUserId = isset($info['user_id'])? $info['user_id'] : 0;
|
|
|
|
|
- $balance = isset($userInfo['balance'])? $userInfo['balance'] : 0;
|
|
|
|
|
- $money = isset($info['money'])? $info['money'] : 0;
|
|
|
|
|
- if(empty($info) || empty($userInfo) || $orderUserId<=0 || $money<=0){
|
|
|
|
|
- $this->error = '提现信息不存在或参数错误';
|
|
|
|
|
- return false;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if($orderStatus != 1){
|
|
|
|
|
- $this->error = '提现订单状态不可操作';
|
|
|
|
|
- return false;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if(!in_array($status,[2,3])){
|
|
|
|
|
- $this->error = '审核状态错误';
|
|
|
|
|
- return false;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if($status == 3 && empty($confirmRemark)){
|
|
|
|
|
- $this->error = '请填写审核驳回备注';
|
|
|
|
|
- return false;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- DB::beginTransaction();
|
|
|
|
|
- $status = $payStatus==20 && $status==2?4:$status;
|
|
|
|
|
- $updateData = ['status'=>$status,'pay_status'=> $payStatus,'pay_img'=> $payImg,'confirm_admin_id'=>$adminId,'update_time'=>time(),'confirm_remark'=>$confirmRemark];
|
|
|
|
|
- if(!$this->model->where(['id'=> $id])->update($updateData)){
|
|
|
|
|
- DB::rollBack();
|
|
|
|
|
- $this->error = '提现审核失败';
|
|
|
|
|
- return false;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 如果驳回
|
|
|
|
|
- if($status == 3){
|
|
|
|
|
- $updateData = ['balance'=>DB::raw("balance + {$money}"),'update_time'=>time()];
|
|
|
|
|
- if(!MemberModel::where(['id'=> $orderUserId])->update($updateData)){
|
|
|
|
|
- DB::rollBack();
|
|
|
|
|
- $this->error = '提现审核处理失败';
|
|
|
|
|
- return false;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- $log = [
|
|
|
|
|
- 'user_id' => $orderUserId,
|
|
|
|
|
- 'source_order_no' => isset($info['order_no']) ? $info['order_no'] : '',
|
|
|
|
|
- 'type' => 5,
|
|
|
|
|
- 'money' => $money,
|
|
|
|
|
- 'after_money' => moneyFormat($balance+$money,2),
|
|
|
|
|
- 'date'=> date('Y-m-d'),
|
|
|
|
|
- 'create_time' => time(),
|
|
|
|
|
- 'remark' => '提现驳回',
|
|
|
|
|
- 'status' => 1,
|
|
|
|
|
- 'mark' => 1,
|
|
|
|
|
- ];
|
|
|
|
|
- if(!AccountLogModel::insertGetId($log)){
|
|
|
|
|
- DB::rollBack();
|
|
|
|
|
- $this->error = '提现审核处理失败';
|
|
|
|
|
- return false;
|
|
|
|
|
- }
|
|
|
|
|
- }else if($status == 2){
|
|
|
|
|
- // 线上直接打款逻辑
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- DB::commit();
|
|
|
|
|
- $this->error = '提现审核成功';
|
|
|
|
|
- return ['id'=>$id,'money'=>$money,'status'=>$status];
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * 打款
|
|
|
|
|
- * @param $adminId
|
|
|
|
|
- * @param $params
|
|
|
|
|
- * @return array|false
|
|
|
|
|
- */
|
|
|
|
|
- public function payment($adminId, $params)
|
|
|
|
|
- {
|
|
|
|
|
- $id = isset($params['id'])? intval($params['id']) : 0;
|
|
|
|
|
- $payStatus = isset($params['pay_status'])? intval($params['pay_status']) : 0;
|
|
|
|
|
- $payImg = isset($params['pay_img'])? trim($params['pay_img']) : '';
|
|
|
|
|
- $payImg = $payImg? get_image_path($payImg) : '';
|
|
|
|
|
-
|
|
|
|
|
- $info = $this->model->with(['member'])->where(['id'=> $id,'mark'=>1])->first();
|
|
|
|
|
- $userInfo = isset($info['member'])? $info['member'] : [];
|
|
|
|
|
- $orderStatus = isset($info['status'])? $info['status'] : 0;
|
|
|
|
|
- $orderUserId = isset($info['user_id'])? $info['user_id'] : 0;
|
|
|
|
|
- $balance = isset($userInfo['balance'])? $userInfo['balance'] : 0;
|
|
|
|
|
- $money = isset($info['money'])? $info['money'] : 0;
|
|
|
|
|
- if(empty($info) || empty($userInfo) || $orderUserId<=0 || $money<=0){
|
|
|
|
|
- $this->error = '提现信息不存在或参数错误';
|
|
|
|
|
- return false;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if($orderStatus != 2){
|
|
|
|
|
- $this->error = '提现订单状态不可操作';
|
|
|
|
|
- return false;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if($payStatus != 20){
|
|
|
|
|
- $this->error = '请选择已打款';
|
|
|
|
|
- return false;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- DB::beginTransaction();
|
|
|
|
|
- $updateData = ['pay_status'=> $payStatus,'pay_img'=> $payImg,'update_time'=>time()];
|
|
|
|
|
- if($payStatus == 20){
|
|
|
|
|
- $updateData['status'] = 4;
|
|
|
|
|
- }
|
|
|
|
|
- if(!$this->model->where(['id'=> $id])->update($updateData)){
|
|
|
|
|
- DB::rollBack();
|
|
|
|
|
- $this->error = '提现打款处理失败';
|
|
|
|
|
- return false;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- DB::commit();
|
|
|
|
|
- $this->error = '提现打款状态更新成功';
|
|
|
|
|
- return ['id'=>$id,'money'=>$money,'status'=>$payStatus];
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * 删除
|
|
|
|
|
- * @return array
|
|
|
|
|
- */
|
|
|
|
|
- public function delete()
|
|
|
|
|
- {
|
|
|
|
|
- // 设置日志标题
|
|
|
|
|
- ActionLogModel::setRecord(session('userId'), ['type' => 1, 'title' => "删除余额明细", 'content' => json_encode(request()->post(), 256), 'module' => 'admin']);
|
|
|
|
|
- ActionLogModel::record();
|
|
|
|
|
- $this->model->where('mark', 0)->where('update_time', '<=', time() - 7 * 86400)->delete();
|
|
|
|
|
- return parent::delete(); // TODO: Change the autogenerated stub
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /*\提现统计
|
|
|
|
|
- * @param int $type
|
|
|
|
|
- * @return array|mixed
|
|
|
|
|
- */
|
|
|
|
|
- public function getTotal($type=1)
|
|
|
|
|
- {
|
|
|
|
|
- $cacheKey = "caches:balances:total_{$type}";
|
|
|
|
|
- $data = RedisService::get($cacheKey);
|
|
|
|
|
- if($data){
|
|
|
|
|
- return $data;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- $data = $this->model->where(['mark'=>1])
|
|
|
|
|
- ->where(function($query) use($type){
|
|
|
|
|
- if($type== 1){
|
|
|
|
|
- $query->where(['type'=>2])->whereIn('status',[2,4]);
|
|
|
|
|
- }else {
|
|
|
|
|
- $query->where(['type'=>2]);
|
|
|
|
|
- }
|
|
|
|
|
- })->sum('money');
|
|
|
|
|
- if($data){
|
|
|
|
|
- RedisService::set($cacheKey, $data, rand(300, 600));
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- return $data;
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|