Files
Smart-Farm/app/massage/controller/IndexCoach.php
2025-12-22 14:32:54 +08:00

581 lines
12 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace app\massage\controller;
use app\ApiRest;
use app\massage\model\BalanceWater;
use app\massage\model\Coach;
use app\massage\model\Config;
use app\massage\model\Goods;
use app\massage\model\Order;
use app\massage\model\Police;
use app\massage\model\RefundOrder;
use app\massage\model\RefundOrderGoods;
use app\massage\model\User;
use app\massage\model\Wallet;
use longbingcore\wxcore\WxSetting;
use think\App;
use think\facade\Db;
use think\Request;
class IndexCoach extends ApiRest
{
protected $model;
protected $cap_info;
public function __construct(App $app) {
parent::__construct($app);
$this->model = new Coach();
$this->order_model = new Order();
$cap_dis[] = ['user_id','=',$this->getUserId()];
$cap_dis[] = ['status','in',[2,3]];
$this->cap_info = $this->model->dataInfo($cap_dis);
if(empty($this->cap_info)){
$this->errorMsg('你还不是技师');
}
}
/**
* @author chenniang
* @DataTime: 2021-07-08 11:39
* @功能说明:技师首页
*/
public function coachIndex(){
$data = $this->cap_info;
return $this->success($data);
}
/**
* @author chenniang
* @DataTime: 2021-03-23 09:59
* @功能说明:修改技师信息
*/
public function coachUpdate(){
$input = $this->_input;
$dis = [
'id' => $this->cap_info['id']
];
if(!empty($input['id_card'])){
$input['id_card'] = implode(',',$input['id_card']);
}
if(!empty($input['license'])){
$input['license'] = implode(',',$input['license']);
}
if(!empty($input['self_img'])){
$input['self_img'] = implode(',',$input['self_img']);
}
$res = $this->model->dataUpdate($dis,$input);
return $this->success($res);
}
/**
* @author chenniang
* @DataTime: 2021-03-19 15:48
* @功能说明:个人中心
*/
public function index(){
$data = $this->getUserInfo();
return $this->success($data);
}
/**
* @author chenniang
* @DataTime: 2021-03-19 15:48
* @功能说明:个人中心
*/
public function orderList(){
$input = $this->_param;
$dis[] = ['a.uniacid','=',$this->_uniacid];
$dis[] = ['a.coach_id','=',$this->cap_info['id']];
$where = [];
if(!empty($input['name'])){
$where[] = ['b.goods_name','like','%'.$input['name'].'%'];
$where[] = ['a.order_code','like','%'.$input['name'].'%'];
}
if($input['pay_type']==5){
$dis[] = ['a.pay_type','in',[3,4,5]];
}else{
$dis[] = ['a.pay_type','=',$input['pay_type']];
}
$order_model = new Order();
$data = $order_model->indexDataList($dis,$where);
//待接单数量
$data['agent_order_count'] = $order_model->where(['coach_id'=>$this->cap_info['id'],'pay_type'=>2])->count();
return $this->success($data);
}
/**
* @author chenniang
* @DataTime: 2021-07-07 23:11
* @功能说明:订单详情
*/
public function orderInfo(){
$input = $this->_param;
$dis = [
'id' => $input['order_id']
];
$data = $this->order_model->dataInfo($dis);
return $this->success($data);
}
/**
* @author chenniang
* @DataTime: 2021-03-24 13:33
* @功能说明:团长审核提现
*/
public function applyWallet(){
$input = $this->_input;
if(empty($input['apply_price'])||$input['apply_price']<0.01){
$this->errorMsg('提现费最低一分');
}
//服务费
if($input['apply_price']>$this->cap_info['service_price']&&$input['type']==1){
$this->errorMsg('余额不足');
}
//车费
if($input['apply_price']>$this->cap_info['car_price']&&$input['type']==2){
$this->errorMsg('余额不足');
}
$coach_level = $this->model->getCoachLevel($this->cap_info['id'],$this->_uniacid);
// dump($coach_level);exit;
//车费没有服务费
$balance = !empty($coach_level)&&$input['type']==1?$coach_level['balance']:100;
$key = 'cap_wallet'.$this->getUserId();
$value = getCache($key);
if(!empty($value)){
$this->errorMsg('网络错误,请刷新重试');
}
//加一个锁防止重复提交
incCache($key,1,$this->_uniacid);
Db::startTrans();
if($input['type']==1){
//减佣金
$res = $this->model->dataUpdate(['id'=>$this->cap_info['id']],['service_price'=>$this->cap_info['service_price']-$input['apply_price']]);
}else{
$res = $this->model->dataUpdate(['id'=>$this->cap_info['id']],['car_price'=>$this->cap_info['car_price']-$input['apply_price']]);
}
if($res!=1){
Db::rollback();
//减掉
delCache($key,$this->_uniacid);
$this->errorMsg('申请失败');
}
$insert = [
'uniacid' => $this->_uniacid,
'user_id' => $this->getUserId(),
'coach_id' => $this->cap_info['id'],
'total_price' => $input['apply_price'],
'balance' => $balance,
'apply_price' => round($input['apply_price']*$balance/100,2),
'service_price' => round($input['apply_price']-$input['apply_price']*$balance/100,2),
'code' => orderCode(),
'text' => $input['text'],
'type' => $input['type'],
];
$wallet_model = new Wallet();
//提交审核
$res = $wallet_model->dataAdd($insert);
if($res!=1){
Db::rollback();
//减掉
delCache($key,$this->_uniacid);
$this->errorMsg('申请失败');
}
Db::commit();
//减掉
delCache($key,$this->_uniacid);
return $this->success($res);
}
/**
* @author chenniang
* @DataTime: 2021-03-25 17:14
* @功能说明:楼长核销订单
*/
public function hxOrder(){
$input = $this->_input;
$order_model= new Order();
$order = $order_model->dataInfo(['id'=>$input['id']]);
if(empty($order)){
$this->errorMsg('订单未找到');
}
if($order['pay_type']!=5){
$this->errorMsg('订单状态错误');
}
if($order['coach_id']!=$this->cap_info['id']){
$this->errorMsg('你不是该订单的楼长');
}
$refund_model = new RefundOrder();
//判断有无申请中的退款订单
$refund_order = $refund_model->dataInfo(['order_id'=>$order['id'],'status'=>1]);
if(!empty($refund_order)){
$this->errorMsg('该订单正在申请退款,请先处理再核销');
}
$res = $order_model->hxOrder($order,$this->cap_info['id']);
return $this->success($res);
}
/**
* @author chenniang
* @DataTime: 2021-03-30 13:38
* @功能说明:团长端佣金信息
*/
public function capCashInfo(){
$this->order_model->coachBalanceArr($this->_uniacid);
$key = 'cap_wallet'.$this->getUserId();
//减掉
delCache($key,$this->_uniacid);
$wallet_model = new Wallet();
//可提现佣金
$data['cap_cash'] = $this->cap_info['service_price'];
//累计提现
$data['extract_total_price'] = $wallet_model->capCash($this->cap_info['id'],2,1);
//提现中
$data['extract_ing_price'] = $wallet_model->capCash($this->cap_info['id'],1,1);
$dis = [
'pay_type' => 7,
'coach_id' => $this->cap_info['id'],
'have_tx' => 0
];
//未到账
$data['no_received'] = $this->order_model->where($dis)->sum('service_price');
$data['coach_level'] = $this->model->getCoachLevel($this->cap_info['id'],$this->_uniacid);
return $this->success($data);
}
/**
* @author chenniang
* @DataTime: 2021-03-30 13:38
* @功能说明:团长端佣金信息
*/
public function capCashInfoCar(){
$key = 'cap_wallet'.$this->getUserId();
//减掉
delCache($key,$this->_uniacid);
$wallet_model = new Wallet();
//可提现佣金
$data['cap_cash'] = $this->cap_info['car_price'];
//累计提现
$data['extract_total_price'] = $wallet_model->capCash($this->cap_info['id'],2,2);
//提现中
$data['extract_ing_price'] = $wallet_model->capCash($this->cap_info['id'],1,2);
$dis = [
'pay_type' => 7,
'coach_id' => $this->cap_info['id'],
'have_tx' => 0
];
//未到账
$data['no_received'] = $this->order_model->where($dis)->sum('car_price');
$data['coach_level'] = $this->model->getCoachLevel($this->cap_info['id'],$this->_uniacid);
return $this->success($data);
}
/**
* @author chenniang
* @DataTime: 2021-03-30 14:39
* @功能说明:团长提现记录
*/
public function capCashList(){
$wallet_model = new Wallet();
$input = $this->_param;
$dis = [
'coach_id' => $this->cap_info['id']
];
if(!empty($input['status'])){
$dis['status'] = $input['status'];
}
$dis['type'] = $input['type'];
//提现记录
$data = $wallet_model->dataList($dis,10);
if(!empty($data['data'])){
foreach ($data['data'] as &$v){
$v['create_time'] = date('Y-m-d H:i:s',$v['create_time']);
}
}
//累计提现
$data['extract_total_price'] = $wallet_model->capCash($this->cap_info['id'],2,$input['type']);
return $this->success($data);
}
/**
* @author chenniang
* @DataTime: 2021-07-08 17:09
* @功能说明:报警
*/
public function police(){
$insert = [
'uniacid' => $this->_uniacid,
'coach_id'=> $this->cap_info['id'],
'user_id' => $this->cap_info['user_id'],
'text' => '正在发出求救信号,请及时查看技师正在服务的订单地址和电话,确认报警信息'
];
$police_model = new Police();
$res = $police_model->dataAdd($insert);
return $this->success($res);
}
/**
* @author chenniang
* @DataTime: 2021-07-11 22:34
* @功能说明:技师修改订单信息)
*/
public function updateOrder(){
$input = $this->_input;
$order = $this->order_model->dataInfo(['id'=>$input['order_id']]);
$update = $this->order_model->coachOrdertext($input);
Db::startTrans();
//核销订单
if($input['type']==7){
if($order['pay_type']!=6){
$this->errorMsg('订单状态错误');
}
$refund_model = new RefundOrder();
//判断有无申请中的退款订单
$refund_order = $refund_model->dataInfo(['order_id'=>$order['id'],'status'=>1]);
if(!empty($refund_order)){
$this->errorMsg('该订单正在申请退款,请先处理再核销');
}
$res = $this->order_model->hxOrder($order,$this->cap_info['id']);
$res = $this->order_model->dataUpdate(['id'=>$input['order_id']],$update);
}else{
// dump($update);exit;
$res = $this->order_model->dataUpdate(['id'=>$input['order_id']],$update);
//拒绝接单
if($input['type']==-1){
if($order['pay_type']!=2){
Db::rollback();
$this->errorMsg('已接单');
}
if($order['pay_price']>0){
$refund_model = new RefundOrder();
$res = $refund_model->refundCash($this->payConfig(),$order,$order['pay_price']);
if(!empty($res['code'])){
Db::rollback();
$this->errorMsg($res['msg']);
}
if($res!=true){
Db::rollback();
$this->errorMsg('退款失败请重试2');
}
}
}
}
Db::commit();
return $this->success($res);
}
}