quanwei
18 hours ago c441dea81bd86bdfb12dff35821fed51f4cc91c2
1
<?php namespace app\operations\model\plus\operations; use app\common\library\easywechat\AppWx; use app\common\library\easywechat\AppMp; use app\common\service\message\MessageService; use app\common\service\order\OrderService; use app\common\library\easywechat\WxPay; use app\common\model\plus\operations\Cash as CashModel; use app\operations\model\plus\operations\Capital; use app\operations\model\plus\operations\Operations; use app\operations\model\user\User as UserModel; /**  * 队长提现明细模型  */ class Cash extends CashModel {     /**      * 获取器:申请时间      */     public function getAuditTimeAttr($value)     {         return $value > 0 ? date('Y-m-d H:i:s', $value) : 0;     }     /**      * 获取器:打款方式      */     public function getPayTypeAttr($value)     {         return ['text' => $this->payType[$value], 'value' => $value];     }     /**      * 获取队长提现列表      */     public function getList($user_id = null, $apply_status = -1, $pay_type = -1, $search = '')     {         $model = $this;         // 构建查询规则         $model = $model->alias('cash')             ->with(['user'])             ->field('cash.*, region.real_name, region.mobile, user.nickName, user.avatarUrl')             ->join('user', 'user.user_id = cash.user_id')             ->join('region_user region', 'region.user_id = cash.user_id')             ->order(['cash.create_time' => 'desc']);         // 查询条件         if ($user_id > 0) {             $model = $model->where('cash.user_id', '=', $user_id);         }         if (!empty($search)) {             $model = $model->where('region.real_name|region.mobile', 'like', '%' . $search . '%');         }         if ($apply_status > 0) {             $model = $model->where('cash.apply_status', '=', $apply_status);         }         if ($pay_type > 0) {             $model = $model->where('cash.pay_type', '=', $pay_type);         }         // 获取列表数据         return $model->paginate(15);     }     /**      * 队长提现审核      */     public function submit($param)     {         $data = ['apply_status' => $param['apply_status']];         if ($param['apply_status'] == 30) {             $data['reject_reason'] = $param['reject_reason'];         }         // 更新申请记录         $data['audit_time'] = time();         self::update($data, ['id' => $param['id']]);         // 提现驳回:解冻队长资金         if ($param['apply_status'] == 30) {             Operations::backFreezeMoney($param['user_id'], $param['money']);         }         // 发送模板消息         (new MessageService)->cash($this);         return true;     }     /**      * 确认已打款      */     public function money()     {         $this->startTrans();         try {             // 更新申请状态             $data = ['apply_status' => 40, 'audit_time' => time()];             self::update($data, ['id' => $this['id']]);             // 更新队长累积提现佣金             Operations::totalMoney($this['user_id'], $this['money']);             // 记录队长资金明细             Capital::add([                 'user_id' => $this['user_id'],                 'flow_type' => 20,                 'money' => -$this['money'],                 'describe' => '申请提现',             ]);             // 发送模板消息            //(new Message)->withdraw($this);             // 事务提交             $this->commit();             return true;         } catch (\Exception $e) {             $this->error = $e->getMessage();             $this->rollback();             return false;         }     }     /**      * 队长提现:微信支付企业付款      */     public function wechatPay()     {         // 微信用户信息         $user = UserModel::detail($this['user_id']);         // 生成付款订单号         $orderNO = OrderService::createOrderNo();         // 付款描述         $desc = '队长提现付款';         // 微信支付api:企业付款到零钱         $open_id = '';         $app = [];         if($user['reg_source'] == 'mp'){             $app = AppMp::getWxPayApp($user['app_id']);             $open_id = $user['mpopen_id'];         }else if($user['reg_source'] == 'wx'){             $app = AppWx::getWxPayApp($user['app_id']);             $open_id = $user['open_id'];         }         if($open_id == ''){             $this->error = '未找到用户open_id';             return false;         }         $WxPay = new WxPay($app);         //打款金额         $money=floatval($this['money'])-floatval($this['fee_money']);         // 请求付款api         if ($WxPay->transfers($orderNO, $open_id, $money, $desc)) {             // 确认已打款             $this->money();             return true;         }         return false;     }     /*      *统计提现总数量      */     public function getregionOrderTotal()     {         return $this->count('id');     }     /*     * 统计提现待审核总数量     */     public function getregionApplyTotal($apply_status)     {         return $this->where('apply_status', '=', $apply_status)->count();     } }