You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1396 lines
35 KiB
1396 lines
35 KiB
<?php
|
|
namespace app\mobilenode\controller;
|
|
use app\AdminRest;
|
|
use app\ApiRest;
|
|
use app\dynamic\model\DynamicList;
|
|
use app\fdd\model\FddAgreementRecord;
|
|
use app\massage\model\Admin;
|
|
use app\massage\model\City;
|
|
use app\massage\model\Coach;
|
|
use app\massage\model\CoachChangeLog;
|
|
use app\massage\model\CoachLevel;
|
|
use app\massage\model\CoachTimeList;
|
|
use app\massage\model\Comment;
|
|
use app\massage\model\CommentGoods;
|
|
use app\massage\model\CommentLable;
|
|
use app\massage\model\Commission;
|
|
use app\massage\model\Config;
|
|
use app\massage\model\CouponRecord;
|
|
use app\massage\model\HelpConfig;
|
|
use app\massage\model\Lable;
|
|
use app\massage\model\NoticeList;
|
|
use app\massage\model\Order;
|
|
|
|
use app\massage\model\OrderAddress;
|
|
use app\massage\model\OrderData;
|
|
use app\massage\model\OrderGoods;
|
|
use app\massage\model\OrderLog;
|
|
use app\massage\model\Police;
|
|
use app\massage\model\RefundOrder;
|
|
use app\massage\model\ShortCodeConfig;
|
|
use app\massage\model\StoreList;
|
|
use app\massage\model\UpOrderList;
|
|
use app\massage\model\User;
|
|
use app\massage\model\Wallet;
|
|
use app\massage\model\WorkLog;
|
|
use app\mobilenode\model\RoleAdmin;
|
|
use longbingcore\permissions\SaasAuthConfig;
|
|
use longbingcore\wxcore\aliyun;
|
|
use longbingcore\wxcore\Fdd;
|
|
use longbingcore\wxcore\Moor;
|
|
use longbingcore\wxcore\PayModel;
|
|
use longbingcore\wxcore\WxSetting;
|
|
use think\App;
|
|
use app\shop\model\Order as Model;
|
|
use think\facade\Db;
|
|
use tp5er\Backup;
|
|
|
|
|
|
class IndexAgentOrder extends ApiRest
|
|
{
|
|
|
|
|
|
protected $model;
|
|
|
|
protected $refund_order_model;
|
|
|
|
protected $comment_model;
|
|
|
|
protected $admin_info;
|
|
|
|
public function __construct(App $app) {
|
|
|
|
parent::__construct($app);
|
|
|
|
$this->model = new Order();
|
|
|
|
$this->refund_order_model = new RefundOrder();
|
|
|
|
$this->comment_model = new Comment();
|
|
|
|
$this->admin_info = $this->adminInfo();
|
|
|
|
if(empty($this->admin_info)){
|
|
|
|
$this->errorMsg('你还不是代理商');
|
|
}
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* @author chenniang
|
|
* @DataTime: 2023-04-20 11:44
|
|
* @功能说明:获取当前用户的角色权限
|
|
*/
|
|
public function adminInfo(){
|
|
|
|
$admin_model = new Admin();
|
|
|
|
$dis = [
|
|
|
|
'user_id' => $this->getUserId(),
|
|
|
|
'status' => 1
|
|
];
|
|
|
|
$data = $admin_model->dataInfo($dis);
|
|
|
|
if(!empty($data)){
|
|
|
|
$data['admin_arr'] = $admin_model->getAdminId($data);
|
|
}
|
|
|
|
return $data;
|
|
}
|
|
|
|
|
|
/**
|
|
* @author chenniang
|
|
* @DataTime: 2023-04-20 11:54
|
|
* @功能说明:首页各项数据统计
|
|
*/
|
|
public function index(){
|
|
//订单管理各类状态
|
|
$order_type = [2,3,4,5,6,7];
|
|
|
|
$dis = [
|
|
|
|
'uniacid' => $this->_uniacid,
|
|
|
|
'is_add' => 0,
|
|
];
|
|
//订单数据
|
|
foreach ($order_type as $value){
|
|
|
|
$data['order_count'][$value] = $this->model->where($dis)->where('admin_id','in',$this->admin_info['admin_arr'])->where(['pay_type'=>$value])->count();
|
|
|
|
}
|
|
//拒单
|
|
$data['refuse_order'][8] = $this->model->where($dis)->where('admin_id','in',$this->admin_info['admin_arr'])->where(['pay_type'=>8])->count();
|
|
//加钟服务
|
|
$dis['is_add'] = 1;
|
|
|
|
$order_type = [2,3,6,7];
|
|
//订单数据
|
|
foreach ($order_type as $value){
|
|
|
|
if($value==6){
|
|
|
|
$data['add_count'][$value] = $this->model->where($dis)->where('admin_id','in',$this->admin_info['admin_arr'])->where('pay_type','in',[4,5,6])->count();
|
|
|
|
}else{
|
|
|
|
$data['add_count'][$value] = $this->model->where($dis)->where('admin_id','in',$this->admin_info['admin_arr'])->where(['pay_type'=>$value])->count();
|
|
}
|
|
|
|
}
|
|
$order_type = [1];
|
|
//加钟退款
|
|
foreach ($order_type as $value){
|
|
|
|
$data['add_refund_count'][$value] = $this->refund_order_model->where($dis)->where('admin_id','in',$this->admin_info['admin_arr'])->where(['status'=>$value])->count();
|
|
|
|
}
|
|
|
|
$dis['is_add'] = 0;
|
|
//退款
|
|
foreach ($order_type as $value){
|
|
|
|
$data['refund_count'][$value] = $this->refund_order_model->where($dis)->where('admin_id','in',$this->admin_info['admin_arr'])->where(['status'=>$value])->count();
|
|
}
|
|
//是否具有邀请业务员的权限
|
|
$data['salesman_auth'] = $this->admin_info['salesman_auth'];
|
|
//是否有邀请渠道商的权限
|
|
$data['channel_auth'] = $this->admin_info['channel_auth'];
|
|
|
|
$comm_model = new Commission();
|
|
|
|
$dis = [
|
|
|
|
'admin_id' => $this->admin_info['id'],
|
|
|
|
'status' => 1,
|
|
];
|
|
//未入账金额
|
|
$data['unrecorded_cash'] = $comm_model->where($dis)->where('admin_id','in',$this->admin_info['admin_arr'])->where('type','in',[2,5,6])->sum('cash');
|
|
|
|
$dis['status'] = 2;
|
|
//总金额
|
|
$data['total_cash'] = $comm_model->where($dis)->where('admin_id','in',$this->admin_info['admin_arr'])->where('type','in',[2,5,6])->sum('cash');
|
|
|
|
$data['cash'] = $this->admin_info['cash'];
|
|
|
|
$data['unrecorded_cash'] = round($data['unrecorded_cash'],2);
|
|
|
|
$data['total_cash'] = round($data['total_cash'],2);
|
|
|
|
$data['cash'] = round($data['cash'],2);
|
|
//通知
|
|
$notice_model = new NoticeList();
|
|
//列表
|
|
$data = $notice_model->indexOrderNotice($data,$this->_uniacid,$this->admin_info['admin_arr']);
|
|
|
|
return $this->success($data);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* @author chenniang
|
|
* @DataTime: 2021-03-15 14:43
|
|
* @功能说明:列表
|
|
*/
|
|
public function orderList(){
|
|
|
|
$input = $this->_param;
|
|
|
|
$is_add = isset($input['is_add'])?$input['is_add']:0;
|
|
|
|
$dis[] = ['uniacid','=',$this->_uniacid];
|
|
|
|
$dis[] = ['is_add','=',$is_add];
|
|
|
|
$dis[] = ['admin_id','in',$this->admin_info['admin_arr']];
|
|
|
|
if(!empty($input['pay_type'])){
|
|
|
|
$dis[] = ['pay_type','=',$input['pay_type']];
|
|
|
|
}else{
|
|
|
|
$dis[] = ['pay_type','>',1];
|
|
}
|
|
//订单号搜索
|
|
if(!empty($input['order_code'])){
|
|
|
|
$dis[] = ['order_code','like','%'.$input['order_code'].'%'];
|
|
}
|
|
|
|
$data = $this->model->where($dis)->field('id,coach_id,store_id,is_comment,order_code,true_car_price,true_service_price,pay_type,pay_price,start_time,create_time,user_id,end_time,add_pid,is_add')->order('id desc')->paginate(10)->toArray();
|
|
|
|
if(!empty($data['data'])){
|
|
|
|
foreach ($data['data'] as &$v){
|
|
|
|
$v['create_time'] = date('Y-m-d H:i:s',$v['create_time']);
|
|
|
|
$v['start_time'] = date('Y-m-d H:i',$v['start_time']);
|
|
|
|
$v['end_time'] = date('Y-m-d H:i',$v['end_time']);
|
|
|
|
}
|
|
}
|
|
|
|
return $this->success($data);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* @author chenniang
|
|
* @DataTime: 2021-03-15 14:58
|
|
* @功能说明:订单详情
|
|
*/
|
|
public function orderInfo(){
|
|
|
|
$input = $this->_param;
|
|
|
|
$dis = [
|
|
|
|
'id' => $input['id']
|
|
];
|
|
|
|
$data = $this->model->dataInfo($dis);
|
|
|
|
$data['distance'] = distance_text($data['distance']);
|
|
//加钟订单
|
|
if($data['is_add']==0){
|
|
|
|
$data['add_order_id'] = $this->model->where(['add_pid'=>$data['id']])->where('pay_type','>',1)->field('id,order_code')->select()->toArray();
|
|
|
|
}else{
|
|
|
|
$data['add_pid'] = $this->model->where(['id'=>$data['add_pid']])->field('id,order_code')->find();
|
|
|
|
}
|
|
|
|
$order_model = new OrderData();
|
|
//订单附表
|
|
$order_data = $order_model->dataInfo(['order_id'=>$input['id'],'uniacid'=>$this->_uniacid]);
|
|
|
|
$data = array_merge($order_data,$data);
|
|
//订单转派记录
|
|
$change_log_model = new CoachChangeLog();
|
|
|
|
$data['dispatch_record'] = $change_log_model->orderChangeLog($input['id']);
|
|
|
|
$admin_model = new \app\massage\model\Admin();
|
|
|
|
$data['admin_name'] = $admin_model->where(['id'=>$data['admin_id']])->value('agent_name');
|
|
//门店订单
|
|
if(!empty($data['store_id'])){
|
|
|
|
$store_model = new StoreList();
|
|
|
|
$data['store_info'] = $store_model->where(['id'=>$data['store_id']])->field('title,cover,address,lng,lat,phone')->find();
|
|
}
|
|
$arr = ['create_time','pay_time','serout_time','arrive_time','receiving_time','start_service_time','order_end_time'];
|
|
|
|
foreach ($arr as $value){
|
|
|
|
$data[$value] = !empty($data[$value])?date('Y-m-d H:i:s',$data[$value]):0;
|
|
}
|
|
|
|
$data['start_time'] = date('Y-m-d H:i',$data['start_time']).'-'.date('H:i',$data['end_time']);
|
|
|
|
return $this->success($data);
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* @author chenniang
|
|
* @DataTime: 2021-03-19 17:50
|
|
* @功能说明:退款订单详情
|
|
*/
|
|
public function refundOrderInfo(){
|
|
|
|
$input = $this->_param;
|
|
|
|
$dis = [
|
|
|
|
'id' => $input['id']
|
|
];
|
|
|
|
$data = $this->refund_order_model->dataInfo($dis);
|
|
|
|
$data['pay_order_code'] = $this->model->where(['id'=>$data['order_id']])->value('order_code');
|
|
|
|
$data['create_time'] = date('Y-m-d H:i:s',$data['create_time']);
|
|
|
|
$data['refund_time'] = !empty($data['refund_time'])?date('Y-m-d H:i:s',$data['refund_time']):"";
|
|
|
|
$pay_order = $this->model->dataInfo(['id'=>$data['order_id']]);
|
|
|
|
$data['car_type'] = $pay_order['car_type'];
|
|
|
|
$data['distance'] = distance_text($pay_order['distance']);
|
|
|
|
$data['pay_car_price'] = $pay_order['car_price'];
|
|
|
|
$admin_model = new \app\massage\model\Admin();
|
|
|
|
$data['admin_name'] = $admin_model->where(['id'=>$data['admin_id']])->value('agent_name');
|
|
|
|
$data['store_id'] = $pay_order['store_id'];
|
|
//门店订单
|
|
if(!empty($pay_order['store_id'])){
|
|
|
|
$store_model = new StoreList();
|
|
|
|
$data['store_info'] = $store_model->where(['id'=>$pay_order['store_id']])->field('title,cover,address,lng,lat,phone')->find();
|
|
}
|
|
|
|
return $this->success($data);
|
|
|
|
}
|
|
/**
|
|
* @author chenniang
|
|
* @DataTime: 2021-03-17 17:44
|
|
* @功能说明:退款订单列表
|
|
*/
|
|
public function refundOrderList(){
|
|
|
|
$input = $this->_param;
|
|
|
|
$dis[] = ['a.uniacid','=',$this->_uniacid];
|
|
//订单状态搜索
|
|
if(!empty($input['status'])){
|
|
|
|
$dis[] = ['a.status','=',$input['status']];
|
|
|
|
}else{
|
|
|
|
$dis[] = ['a.status','>',-1];
|
|
|
|
}
|
|
$dis[] = ['d.admin_id','in',$this->admin_info['admin_arr']];
|
|
|
|
if(!empty($input['order_code'])){
|
|
|
|
$dis[] = ['a.order_code','like','%'.$input['order_code'].'%'];
|
|
}
|
|
|
|
$is_add = !empty($input['is_add'])?$input['is_add']:0;
|
|
|
|
$dis[] = ['a.is_add','=',$is_add];
|
|
|
|
$data = $this->refund_order_model->indexAdminDataList($dis);
|
|
|
|
return $this->success($data);
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* @author chenniang
|
|
* @DataTime: 2021-03-18 09:21
|
|
* @功能说明:拒绝退款
|
|
*/
|
|
public function noPassRefund(){
|
|
|
|
$input = $this->_input;
|
|
|
|
$res = $this->refund_order_model->noPassRefund($input['id'],$this->getUserId());
|
|
|
|
if(!empty($res['code'])){
|
|
|
|
$this->errorMsg($res['msg']);
|
|
}
|
|
|
|
return $this->success($res);
|
|
|
|
}
|
|
|
|
|
|
/**\
|
|
* @author chenniang
|
|
* @DataTime: 2021-03-18 09:28
|
|
* @功能说明:同意退款
|
|
*/
|
|
public function passRefund(){
|
|
|
|
$input = $this->_input;
|
|
|
|
$order = $this->refund_order_model->dataInfo(['id'=>$input['id']]);
|
|
|
|
$is_app= $this->model->where(['id'=>$order['order_id']])->value('app_pay');
|
|
|
|
$res = $this->refund_order_model->passOrder($input['id'],$input['price'],$this->payConfig($is_app),$this->getUserId(),$input['text']);
|
|
|
|
if(!empty($res['code'])){
|
|
|
|
$this->errorMsg($res['msg']);
|
|
}
|
|
|
|
return $this->success($res);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
* @author chenniang
|
|
* @DataTime: 2022-12-15 11:34
|
|
* @功能说明:订单升级记录
|
|
*/
|
|
public function orderUpRecord(){
|
|
|
|
$input = $this->_param;
|
|
|
|
$order_model = new UpOrderList();
|
|
|
|
$data = $order_model->orderUpRecord($input['order_id']);
|
|
|
|
return $this->success($data);
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
* @author chenniang
|
|
* @DataTime: 2021-07-11 22:34
|
|
* @功能说明:技师修改订单信息)
|
|
*/
|
|
public function adminUpdateOrder()
|
|
{
|
|
|
|
$input = $this->_input;
|
|
|
|
$order = $this->model->dataInfo(['id' => $input['order_id']]);
|
|
|
|
$update = $this->model->coachOrdertext($input,1);
|
|
|
|
$refund_model = new RefundOrder();
|
|
//判断有无申请中的退款订单
|
|
$refund_order = $refund_model->dataInfo(['order_id' => $order['id'], 'status' => 1]);
|
|
|
|
if (!empty($refund_order)) {
|
|
|
|
$this->errorMsg('该订单正在申请退款,请先联系平台处理再进行下一步');
|
|
|
|
}
|
|
|
|
if($order['pay_type']<1){
|
|
|
|
$this->errorMsg('订单已被取消');
|
|
}
|
|
|
|
Db::startTrans();
|
|
|
|
if($input['type']==7){
|
|
|
|
if ($order['pay_type'] != 6&&!empty($order['coach_id'])) {
|
|
|
|
$this->errorMsg('订单状态错误');
|
|
}
|
|
|
|
$this->model->hxOrder($order);
|
|
|
|
}elseif ($input['type'] == -1){
|
|
|
|
if ($order['pay_price'] > 0&&$order['pay_type']>1) {
|
|
|
|
$refund_model = new RefundOrder();
|
|
|
|
$res = $refund_model->refundCash($this->payConfig($order['app_pay']), $order, $order['pay_price']);
|
|
|
|
if (!empty($res['code'])) {
|
|
|
|
Db::rollback();
|
|
|
|
$this->errorMsg($res['msg']);
|
|
|
|
}
|
|
|
|
if ($res != true) {
|
|
|
|
Db::rollback();
|
|
|
|
$this->errorMsg('退款失败,请重试2');
|
|
|
|
}
|
|
|
|
}
|
|
//取消订单
|
|
$res = $this->model->cancelOrder($order);
|
|
|
|
if (!empty($res['code'])) {
|
|
|
|
Db::rollback();
|
|
|
|
$this->errorMsg($res['msg']);
|
|
|
|
}
|
|
|
|
}
|
|
$this->model->dataUpdate(['id' => $input['order_id']], $update);
|
|
|
|
$log_model = new OrderLog();
|
|
|
|
$log_model->addLog($input['order_id'],$this->_uniacid,$input['type'],$order['pay_type'],1,$this->getUserId());
|
|
|
|
Db::commit();
|
|
|
|
return $this->success(true);
|
|
}
|
|
|
|
|
|
/**
|
|
* @author chenniang
|
|
* @DataTime: 2023-02-27 14:52
|
|
* @功能说明:订单更换技师
|
|
*/
|
|
public function orderChangeCoach(){
|
|
|
|
$input = $this->_input;
|
|
|
|
$refund_model = new RefundOrder();
|
|
//判断有无申请中的退款订单
|
|
$refund_order = $refund_model->dataInfo(['order_id' => $input['order_id'], 'status' => 1]);
|
|
|
|
if (!empty($refund_order)) {
|
|
|
|
$this->errorMsg('该订单正在申请退款,请先处理再进行下一步');
|
|
|
|
}
|
|
|
|
$success_add_order = $this->model->dataInfo(['add_pid'=>$input['order_id'],'pay_type'=>7]);
|
|
|
|
if(!empty($success_add_order)){
|
|
|
|
$this->errorMsg('该订单加钟订单已经完成,无法转单');
|
|
|
|
}
|
|
|
|
$order = $this->model->dataInfo(['id'=>$input['order_id']]);
|
|
|
|
$change_model = new CoachChangeLog();
|
|
|
|
$coach_name = !empty($input['coach_name'])?$input['coach_name']:'';
|
|
|
|
$text = !empty($input['text'])?$input['text']:'';
|
|
|
|
$phone = !empty($input['mobile'])?$input['mobile']:'';
|
|
|
|
$admin_id = !empty($input['admin_id'])?$input['admin_id']:0;
|
|
|
|
$res = $change_model->orderChangeCoach($order,$input['coach_id'],$this->_user['id'],$admin_id,$coach_name,$text,$phone);
|
|
|
|
if (!empty($res['code'])) {
|
|
|
|
$this->errorMsg($res['msg']);
|
|
|
|
}
|
|
|
|
return $this->success($res);
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* @author chenniang
|
|
* @DataTime: 2023-02-28 14:21
|
|
* @功能说明:订单转派技师列表
|
|
*/
|
|
public function orderChangeCoachList(){
|
|
|
|
$input = $this->_param;
|
|
|
|
$coach_model = new Coach();
|
|
|
|
$order = $this->model->dataInfo(['id'=>$input['order_id']]);
|
|
//获取订单里想关联服务的技师
|
|
$coach_id = $coach_model->getOrderServiceCoach($order);
|
|
|
|
$dis[] = ['uniacid','=',$this->_uniacid];
|
|
|
|
$dis[] = ['status','=',2];
|
|
|
|
$dis[] = ['id','in',$coach_id];
|
|
|
|
$dis[] = ['id','<>',$order['coach_id']];
|
|
|
|
$dis[] = ['is_work','=',1];
|
|
|
|
$dis[] = ['user_id','>',0];
|
|
|
|
$dis[] = ['admin_id','in',$this->admin_info['admin_arr']];
|
|
|
|
if(!empty($input['coach_name'])){
|
|
|
|
$dis[] = ['coach_name','like','%'.$input['coach_name'].'%'];
|
|
|
|
}
|
|
//门店订单 只能转同门店的技师
|
|
if(!empty($order['store_id'])){
|
|
|
|
$dis[] = ['store_id','=',$order['store_id']];
|
|
|
|
}
|
|
|
|
$list = $coach_model->where($dis)->select()->toArray();
|
|
|
|
$log_model = new CoachChangeLog();
|
|
//转派技师时候 获取满足条件的技师 并获取最近的服务时间
|
|
$arr = $log_model->getNearTimeCoach($order,$list);
|
|
|
|
$top = !empty($input['type'])&&$input['type']==1?'distance asc,id desc':'near_time asc,id desc';
|
|
|
|
$lat = $order['address_info']['lat'];
|
|
|
|
$lng = $order['address_info']['lng'];
|
|
|
|
$alh = 'ACOS(SIN(('.$lat.' * 3.1415) / 180 ) *SIN((lat * 3.1415) / 180 ) +COS(('.$lat.' * 3.1415) / 180 ) * COS((lat * 3.1415) / 180 ) *COS(('.$lng.' * 3.1415) / 180 - (lng * 3.1415) / 180 ) ) * 6378.137*1000 as distance';
|
|
|
|
$data = $coach_model->where('id','in',$arr)->field(['*', $alh])->order($top)->paginate(10)->toArray();
|
|
|
|
if(!empty($data['data'])){
|
|
|
|
$admin_model = new \app\massage\model\Admin();
|
|
|
|
$user_model = new User();
|
|
|
|
foreach ($data['data'] as &$v){
|
|
|
|
$v['partner_name'] = $user_model->where(['id'=>$v['partner_id']])->value('nickName');
|
|
|
|
$v['near_time'] = date('m-d H:i',$v['near_time']);
|
|
|
|
$v['admin_info']= $admin_model->where(['id'=>$v['admin_id']])->field('city_type,agent_name as username')->find();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return $this->success($data);
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* @author chenniang
|
|
* @DataTime: 2021-07-16 10:28
|
|
* @功能说明:
|
|
*/
|
|
public function noticeUpdate(){
|
|
|
|
$input = $this->_input;
|
|
|
|
$notice_model = new NoticeList();
|
|
|
|
$data = $notice_model->dataUpdate(['id'=>$input['id']],$input);
|
|
|
|
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('提现费最低一分');
|
|
}
|
|
|
|
$admin_model = new Admin();
|
|
|
|
$admin_user = $admin_model->dataInfo(['id'=>$this->admin_info['id']]);
|
|
//服务费
|
|
if($input['apply_price']>$admin_user['cash']){
|
|
|
|
$this->errorMsg('余额不足');
|
|
}
|
|
//获取税点
|
|
$tax_point = getConfigSetting($this->_uniacid,'tax_point');
|
|
|
|
$balance = 100-$tax_point;
|
|
|
|
$key = 'cap_wallets'.$this->admin_info['id'];
|
|
|
|
incCache($key,1,$this->_uniacid);
|
|
|
|
$value = getCache($key,$this->_uniacid);
|
|
|
|
if($value!=1){
|
|
//减掉
|
|
delCache($key,$this->_uniacid);
|
|
|
|
$this->errorMsg('网络错误,请刷新重试');
|
|
|
|
}
|
|
|
|
Db::startTrans();
|
|
//减佣金
|
|
$res = $admin_model->dataUpdate(['id'=>$this->admin_info['id'],'lock'=>$admin_user['lock']],['cash'=>$admin_user['cash']-$input['apply_price'],'lock'=>$admin_user['lock']+1]);
|
|
|
|
if($res!=1){
|
|
|
|
Db::rollback();
|
|
//减掉
|
|
delCache($key,$this->_uniacid);
|
|
|
|
$this->errorMsg('申请失败');
|
|
}
|
|
|
|
$insert = [
|
|
|
|
'uniacid' => $this->_uniacid,
|
|
|
|
'user_id' => $admin_user['id'],
|
|
|
|
'admin_id' => $admin_user['id'],
|
|
|
|
'coach_id' => 0,
|
|
|
|
'total_price' => $input['apply_price'],
|
|
|
|
'balance' => $balance,
|
|
|
|
'apply_price' => round($input['apply_price']*$balance/100,2),
|
|
|
|
'service_price' => round( $input['apply_price'] * $tax_point / 100, 2),
|
|
|
|
'tax_point' => $tax_point,
|
|
|
|
'code' => orderCode(),
|
|
|
|
'text' => !empty($input['text'])?$input['text']:'',
|
|
|
|
'type' => 3,
|
|
|
|
'chikaren' => !empty($input['chikaren'])?$input['chikaren']:'',
|
|
|
|
'kaihuhang' => !empty($input['kaihuhang'])?$input['kaihuhang']:'',
|
|
|
|
'suoshuzhihang' => !empty($input['suoshuzhihang'])?$input['suoshuzhihang']:'',
|
|
|
|
'yinhangkahao' => !empty($input['yinhangkahao'])?$input['yinhangkahao']:'',
|
|
|
|
|
|
];
|
|
|
|
$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-07-07 18:46
|
|
* @功能说明:提现列表
|
|
*/
|
|
public function walletList(){
|
|
|
|
$input = $this->_param;
|
|
|
|
$dis[] = ['a.uniacid','=',$this->_uniacid];
|
|
|
|
$dis[] = ['a.type','=',3];
|
|
|
|
$dis[] = ['a.admin_id','=',$this->admin_info['id']];
|
|
|
|
if(!empty($input['code'])){
|
|
|
|
$dis[] = ['a.code','like','%'.$input['code'].'%'];
|
|
}
|
|
|
|
if(!empty($input['status'])){
|
|
|
|
$dis[] = ['a.status','=',$input['status']];
|
|
}
|
|
|
|
$wallet_model = new Wallet();
|
|
|
|
$data = $wallet_model->adminList($dis);
|
|
|
|
$admin_model = new Admin();
|
|
|
|
if(!empty($data['data'])){
|
|
|
|
foreach ($data['data'] as &$v){
|
|
|
|
$v['create_time']= date('Y-m-d H:i:s',$v['create_time']);
|
|
|
|
$v['coach_name'] = $admin_model->where(['id'=>$v['user_id']])->value('agent_name');
|
|
}
|
|
}
|
|
//累计提现
|
|
$data['extract_total_price'] = $wallet_model->adminCash($this->admin_info['id'],2);
|
|
|
|
return $this->success($data);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* @author chenniang
|
|
* @DataTime: 2022-12-09 15:18
|
|
* @功能说明:技师获取客户虚拟电话
|
|
*/
|
|
public function getVirtualPhone(){
|
|
|
|
$input = $this->_param;
|
|
|
|
$order_model = new Order();
|
|
|
|
$user_model = new User();
|
|
|
|
$order = $order_model->dataInfo(['id'=>$input['order_id']]);
|
|
|
|
$called = new \app\virtual\model\Config();
|
|
|
|
$phone = $user_model->where(['id'=>$this->getUserId()])->value('phone');
|
|
|
|
if(empty($phone)){
|
|
|
|
$res = $order['address_info']['mobile'];
|
|
}else{
|
|
|
|
$res = $called->getVirtual($order,1,$phone);
|
|
}
|
|
|
|
return $this->success($res);
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
* @author chenniang
|
|
* @DataTime: 2021-03-15 14:43
|
|
* @功能说明:列表
|
|
*/
|
|
public function coachList(){
|
|
|
|
$input = $this->_param;
|
|
|
|
$dis[] = ['uniacid','=',$this->_uniacid];
|
|
|
|
if(!empty($input['status'])){
|
|
|
|
$dis[] = ['status','=',$input['status']];
|
|
|
|
}else{
|
|
|
|
$dis[] = ['status','>',-1];
|
|
|
|
}
|
|
|
|
$dis[] = ['admin_id','in',$this->admin_info['admin_arr']];
|
|
|
|
$where = [];
|
|
|
|
if(!empty($input['name'])){
|
|
|
|
$where[] = ['coach_name','like','%'.$input['name'].'%'];
|
|
|
|
$where[] = ['mobile','like','%'.$input['name'].'%'];
|
|
}
|
|
|
|
$coach_model = new Coach();
|
|
|
|
$data = $coach_model->dataList($dis,10,$where,'id,admin_id,user_id,coach_name,work_img,mobile,create_time,status,auth_status');
|
|
|
|
if(!empty($data['data'])){
|
|
|
|
$admin_model = new Admin();
|
|
|
|
$user_model = new User();
|
|
|
|
foreach ($data['data'] as &$v){
|
|
|
|
$v['create_time'] = date('Y-m-d H:i:s',$v['create_time']);
|
|
|
|
$admin_info = $admin_model->dataInfo(['id'=>$v['admin_id'],'status'=>1],'agent_name,city_type');
|
|
|
|
$v['admin_name'] = !empty($admin_info)?$admin_info['agent_name']:'';
|
|
|
|
$v['city_type'] = !empty($admin_info)?$admin_info['city_type']:'';
|
|
|
|
$v['nickName'] = $user_model->where(['id'=>$v['user_id']])->value('nickName');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$list = [
|
|
|
|
1=>'ing',
|
|
];
|
|
|
|
foreach ($list as $k=> $value){
|
|
|
|
$dis_s = [];
|
|
|
|
$dis_s[] = ['uniacid','=',$this->_uniacid];
|
|
|
|
$dis_s[] = ['status','=',$k];
|
|
|
|
$dis_s[] = ['admin_id','in',$this->admin_info['admin_arr']];
|
|
|
|
$data[$value] = $coach_model->where($dis_s)->count();
|
|
}
|
|
|
|
return $this->success($data);
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* @author chenniang
|
|
* @DataTime: 2023-04-26 10:21
|
|
* @功能说明:佣金信息
|
|
*/
|
|
public function commList(){
|
|
|
|
$input = $this->_param;
|
|
|
|
$comm_model = new Commission();
|
|
//获取所有与自己相关的订单
|
|
$order_id = $comm_model->where('status','>',-1)->where('top_id','=',$this->admin_info['id'])->where('type','in',[2,5,6])->column('order_id');
|
|
|
|
$dis[] = ['uniacid','=',$this->_uniacid];
|
|
|
|
$dis[] = ['id','in',$order_id];
|
|
|
|
$dis[] = ['pay_type','>',1];
|
|
|
|
if(!empty($input['start_time'])){
|
|
|
|
$dis[] = ['create_time','between',"{$input['start_time']},{$input['end_time']}"];
|
|
|
|
}
|
|
|
|
if(isset($input['have_tx'])){
|
|
|
|
$dis[] = ['have_tx','=',$input['have_tx']];
|
|
|
|
}
|
|
|
|
$order_model = new Order();
|
|
|
|
$month = !empty($input['month'])?$input['month']:'';
|
|
|
|
$data = $order_model->adminCashList($dis,10,$month);
|
|
|
|
if(!empty($data['data'])){
|
|
|
|
foreach ($data['data'] as &$v){
|
|
|
|
$v['month'] = date('Y-m',$v['create_time']);
|
|
|
|
$v['start_time'] = date('Y-m-d H:i',$v['start_time']);
|
|
|
|
$v['create_time'] = date('Y-m-d H:i',$v['create_time']);
|
|
//查询当前订单的时候 自己属于什么等级的代理商
|
|
$v['my_city_type'] = $comm_model->where(['order_id'=>$v['id'],'admin_id'=>$this->admin_info['id']])->where('type','in',[2,5,6])->where('status','>',-1)->value('city_type');
|
|
//代理商佣金信息
|
|
$v['admin_cash_list'] = $comm_model->where(['order_id'=>$v['id']])->where('admin_id','in',$this->admin_info['admin_arr'])->where('type','in',[2,5,6])->where('status','>',-1)->field('cash,city_type')->select()->toArray();
|
|
//获取当前月份所有与自己相关的订单
|
|
$order_id = $order_model->where($dis)->whereMonth('create_time',$v['month'])->column('id');
|
|
//查询当前月份的佣金
|
|
$v['total_cash'] = $comm_model->where('order_id','in',$order_id)->where('type','in',[2,5,6])->where(['admin_id'=>$this->admin_info['id']])->sum('cash');
|
|
|
|
$v['total_cash'] = round($v['total_cash'],2);
|
|
}
|
|
}
|
|
|
|
$data['city_type'] = $this->admin_info['city_type'];
|
|
|
|
return $this->success($data);
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* @author chenniang
|
|
* @DataTime: 2022-06-22 21:30
|
|
* @功能说明:加盟商下拉框
|
|
*/
|
|
public function adminSelect(){
|
|
|
|
$input = $this->_param;
|
|
|
|
$dis = [
|
|
|
|
'is_admin' => 0,
|
|
|
|
'status' => 1,
|
|
|
|
'uniacid' => $this->_uniacid
|
|
];
|
|
|
|
$where[] = ['id','in',$this->admin_info['admin_arr']];
|
|
|
|
$admin_model = new Admin();
|
|
|
|
$data = $admin_model->where($dis)->where($where)->field('id,username,agent_name')->select()->toArray();
|
|
|
|
return $this->success($data);
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* @author chenniang
|
|
* @DataTime: 2023-05-04 16:28
|
|
* @功能说明:代理商详情
|
|
*/
|
|
public function adminInfoData(){
|
|
|
|
$data = $this->admin_info;
|
|
|
|
$city_model = new City();
|
|
|
|
$admin_model= new Admin();
|
|
|
|
$data['city_name'] = $city_model->where(['id'=>$data['city_id']])->value('title');
|
|
|
|
$data['sub_data'] = $admin_model->where(['admin_pid'=>$data['id'],'status'=>1])->field('id,username,agent_name,passwd_text,city_id,city_type')->select()->toArray();
|
|
|
|
if(!empty($data['sub_data'])){
|
|
|
|
foreach ($data['sub_data'] as &$v){
|
|
|
|
$v['city_name'] = $city_model->where(['id'=>$v['city_id']])->value('title');
|
|
}
|
|
}
|
|
|
|
$where[] = ['id','=',$data['admin_pid']];
|
|
|
|
$where[] = ['status','=',1];
|
|
//上级
|
|
$data['top_data'] = $admin_model->dataInfo($where,'id,username,agent_name,passwd_text,city_id,city_type');
|
|
|
|
if(!empty($data['top_data'])){
|
|
|
|
$data['top_data']['city_name'] = $city_model->where(['id'=>$data['top_data']['city_id']])->value('title');
|
|
|
|
}
|
|
|
|
return $this->success($data);
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* @author chenniang
|
|
* @DataTime: 2021-03-22 13:35
|
|
* @功能说明:申请技师
|
|
*/
|
|
public function coachApply(){
|
|
|
|
$input = $this->_input;
|
|
|
|
$coach_model = new Coach();
|
|
//后台添加
|
|
$input['admin_add'] = 1;
|
|
|
|
$res = $coach_model->coachApply($input,$input['user_id'],$this->_uniacid,$this->admin_info['id']);
|
|
|
|
if(!empty($res['code'])){
|
|
|
|
$this->errorMsg($res['msg']);
|
|
}
|
|
|
|
return $this->success($res);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
* @author chenniang
|
|
* @DataTime: 2021-09-22 15:19
|
|
* @功能说明:团长用户列表
|
|
*/
|
|
public function coachUserList(){
|
|
|
|
$input = $this->_param;
|
|
|
|
if(empty($input['nickName'])){
|
|
|
|
$where[] = ['id','=',-1];
|
|
|
|
}
|
|
|
|
$dis[] = ['uniacid','=',$this->_uniacid];
|
|
|
|
$dis[] = ['status','in',[0,1,2,3]];
|
|
|
|
$coach_model = new Coach();
|
|
|
|
$user_id = $coach_model->where($dis)->column('user_id');
|
|
|
|
$where1 = [];
|
|
|
|
if(!empty($input['nickName'])){
|
|
|
|
$where1[] = ['nickName','like','%'.$input['nickName'].'%'];
|
|
|
|
$where1[] = ['phone','like','%'.$input['nickName'].'%'];
|
|
}
|
|
|
|
$user_model = new User();
|
|
|
|
$where[] = ['uniacid','=',$this->_uniacid];
|
|
|
|
$where[] = ['id','not in',$user_id];
|
|
|
|
$list = $user_model->dataList($where,$input['limit'],$where1,'id,nickName,avatarUrl,phone');
|
|
|
|
return $this->success($list);
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* @author chenniang
|
|
* @DataTime: 2021-03-15 14:58
|
|
* @功能说明:订单详情
|
|
*/
|
|
public function coachInfo(){
|
|
|
|
$input = $this->_param;
|
|
|
|
$dis = [
|
|
|
|
'id' => $input['id']
|
|
];
|
|
|
|
$coach_model = new Coach();
|
|
|
|
$data = $coach_model->dataInfo($dis);
|
|
|
|
$user_model = new User();
|
|
|
|
$city_model = new City();
|
|
|
|
$store_model= new StoreList();
|
|
|
|
$data['nickName'] = $user_model->where(['id'=>$data['user_id']])->value('nickName');
|
|
|
|
$data['city'] = $city_model->where(['id'=>$data['city_id']])->value('title');
|
|
|
|
$data['order_num'] = $coach_model->where(['id' => $data['id']])->value('order_num');
|
|
//绑定门店
|
|
if(!empty($data['store_id'])){
|
|
|
|
$data['store_name'] = $store_model->where(['id'=>$data['store_id']])->value('title');
|
|
}
|
|
|
|
$record_model= new FddAgreementRecord();
|
|
|
|
$dis = [
|
|
|
|
'user_id' => $data['user_id'],
|
|
|
|
'status' => 3,
|
|
|
|
'admin_id'=> $data['admin_id']
|
|
];
|
|
//法大大合同
|
|
$data['fdd_agreement'] = $record_model->where($dis)->field('id,download_url,viewpdf_url,end_time')->order('id desc')->find();
|
|
|
|
return $this->success($data);
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* @author chenniang
|
|
* @DataTime: 2023-05-05 13:52
|
|
* @功能说明:代理商绑定码
|
|
*/
|
|
public function agentInviteQr(){
|
|
|
|
$input = $this->_param;
|
|
|
|
$key = 'channel_qr'.$this->admin_info['id'].'-'.$this->is_app.'-'.$input['type'];
|
|
|
|
$qr = getCache($key,$this->_uniacid);
|
|
|
|
if(empty($qr)){
|
|
//小程序
|
|
if($this->is_app==0){
|
|
|
|
$user_model = new User();
|
|
|
|
$input['page'] = $input['type']==1?'user/pages/channel/apply':'user/pages/salesman/apply';
|
|
|
|
$input['admin_id'] = $this->admin_info['id'];
|
|
//获取二维码
|
|
$qr = $user_model->orderQr($input,$this->_uniacid);
|
|
|
|
}else{
|
|
|
|
if($input['type']==1){
|
|
|
|
$page = 'https://'.$_SERVER['HTTP_HOST'].'/h5/#/user/pages/channel/apply?admin_id='.$this->admin_info['id'];
|
|
|
|
}else{
|
|
|
|
$page = 'https://'.$_SERVER['HTTP_HOST'].'/h5/#/user/pages/salesman/apply?admin_id='.$this->admin_info['id'];
|
|
|
|
}
|
|
|
|
$qr = base64ToPng(getCode($this->_uniacid,$page));
|
|
|
|
}
|
|
|
|
setCache($key,$qr,86400,$this->_uniacid);
|
|
}
|
|
|
|
$qr = !empty($qr)?$qr:'https://'.$_SERVER['HTTP_HOST'].'/favicon.ico';
|
|
|
|
return $this->success($qr);
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* @author chenniang
|
|
* @DataTime: 2021-07-03 00:15
|
|
* @功能说明:编辑技师
|
|
*/
|
|
public function coachDataUpdate(){
|
|
|
|
$input = $this->_input;
|
|
|
|
$coach_model = new Coach();
|
|
|
|
if(!empty($input['user_id'])){
|
|
|
|
$cap_dis[] = ['user_id','=',$input['user_id']];
|
|
|
|
$cap_dis[] = ['status','>',-1];
|
|
|
|
if(!empty($input['id'])){
|
|
|
|
$cap_dis[] = ['id','<>',$input['id']];
|
|
|
|
}
|
|
|
|
$cap_info = $coach_model->dataInfo($cap_dis);
|
|
|
|
if(empty($input['id'])&&!empty($cap_info)&&in_array($cap_info['status'],[1,2,3])){
|
|
|
|
$this->errorMsg('已经申请过技师了,');
|
|
}
|
|
|
|
}else{
|
|
|
|
$wehre[] = ['mobile','=',$input['mobile']];
|
|
|
|
$wehre[] = ['status','>',-1];
|
|
|
|
if(!empty($input['id'])){
|
|
|
|
$wehre[] = ['id','<>',$input['id']];
|
|
|
|
}
|
|
|
|
$find = $coach_model->where($wehre)->find();
|
|
|
|
if(!empty($find)){
|
|
|
|
$this->errorMsg('该电话号码已经注册技师');
|
|
}
|
|
}
|
|
|
|
$input['id_card'] = !empty($input['id_card'])?implode(',',$input['id_card']):'';
|
|
|
|
$input['license'] = !empty($input['license'])?implode(',',$input['license']):'';
|
|
|
|
$input['self_img'] = !empty($input['self_img'])?implode(',',$input['self_img']):'';
|
|
|
|
$res = $coach_model->dataUpdate(['id'=>$input['id']],$input);
|
|
|
|
return $this->success($res);
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* @author chenniang
|
|
* @DataTime: 2023-03-28 15:48
|
|
* @功能说明:门店下拉框
|
|
*/
|
|
public function storeSelect(){
|
|
|
|
$input = $this->_param;
|
|
|
|
$dis[] = ['uniacid','=',$this->_uniacid];
|
|
|
|
$dis[] = ['status','=',1];
|
|
|
|
if(!empty($input['title'])){
|
|
|
|
$dis[] = ['title','like','%'.$input['title'].'%'];
|
|
|
|
}
|
|
|
|
$dis[] = ['admin_id','=',$this->admin_info['id']];
|
|
|
|
$store_model = new \app\store\model\StoreList();
|
|
|
|
$data = $store_model->where($dis)->select()->toArray();
|
|
|
|
return $this->success($data);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|