Files
duolamaojiazhen/application/admin/controller/Orderautomatic.php
2025-12-22 13:59:40 +08:00

509 lines
18 KiB
PHP

<?php
namespace app\admin\controller;
use app\admin\logic\OrderautoLogic;
use app\admin\logic\OrderchanelLogic;
use app\admin\logic\{ LeaveLogic};
use app\admin\logic\GoodsCategoryLogic;
use app\admin\logic\StaffLogic;
use app\admin\logic\UserLogic;
use app\common\server\WeChatServer;
use app\common\model\NoticeSetting;
use EasyWeChat\Factory;
use think\Db;
class Orderautomatic extends AdminBase
{
/**
* 等待预排
* @return mixed
*/
public function lists()
{
if ($this->request->isAjax()) {
$get = $this->request->get();
$this->_success('获取成功', OrderautoLogic::lists($get));
}
$type = \app\common\model\Ad::getAdTypeDesc(true);
$this->assign('ordertypelist',OrderchanelLogic::infolist());
$admin=Db::name('admin')->select();
$this->assign('admin', $admin);
$this->assign('type', $type);
return $this->fetch();
}
/**
* 增加预排的订单
* @return mixed
*/
public function add(){
if ($this->request->isAjax()) {
$post = $this->request->post();
$admin=$this->admin_id;
$list= OrderautoLogic::add($post,$admin);
if($list==3){
$this->_error('预排参数错误');
}
$this->_success('增加预排订单成功',$list);
}
$get=$this->request->get('id');
$this->assign('ordertype', OrderchanelLogic::infolist());
$this->assign('satff',LeaveLogic::user($get));
$this->assign('order_sn', $get);
return $this->fetch();
}
public function userlist(){
if ($this->request->isAjax()){
$get = $this->request->get();
$goods_list = OrderautoLogic::getUserList($get,true);
$this->_success('',$goods_list);
}
return $this->fetch();
}
/**
* 查看预排的订单
* @return mixed
*/
public function infolist(){
if ($this->request->isAjax()){
$get = $this->request->get();
$infolist=OrderautoLogic::infolist($get);
$this->_success('',$infolist);
}
$get = $this->request->get();
$this->assign('info', OrderautoLogic::info($get['id']));
return $this->fetch();
}
public function edit(){
$id= $this->request->get('id');
$info = OrderautoLogic::info($id);
$this->assign('position_list', OrderautoLogic::infoPosition($info['pid']));
$this->assign('info',$info);
$this->assign('ordertype', OrderchanelLogic::infolist());
$this->assign('satff',LeaveLogic::user());
return $this->fetch();
}
/**
* 修改排单的时间
* @return mixed
*/
public function eitdata(){
if ($this->request->isAjax()){
$id= $this->request->get('id');
$post= $this->request->post();
$date=Db::name('order_exe')->where('id',$id)->find(); //获取订单的信息
$custom=Db::name('order')->where('order_sn',$date['order_sn'])->find(); //获取客户的信息
if($date['addtime']==1){
$timesw="上午";
}else{
$timesw="下午";
}
$currentTime = date('H');
if( $currentTime>17){
if($date['staff_id']!=0){
$staff=Db::name('staff')->where('id',$date['staff_id'])->find();
$openids=Db::name('user_auth')->where('user_id', $staff['user_id'])->find(); //获取用户的ID
$timesd=date('Y-m-d',$date['autotime']);
$timedd=date('Y-m-d',time());
$openid = $openids['openid'];
if($post['privilege']==""){
$time= date('Y-m-d', strtotime($post['end_time']));
if($post['type']==1){
$sw="上午";
}else{
$sw="下午";
}
$data = [
'touser'=>$openid,
'url'=>'',
'template_id'=>'ZTmrioGnhIsZMeK7UElzRyTw-_743VslGvEP5TWopzc', //模板id
'data'=>[
'character_string1'=>[
'value'=>$custom['order_sn']
],
'time3'=>[
'value'=>$time
],
'thing5'=>[
'value'=>$custom['address']
],
'thing2'=>[
'value'=>$sw
]
]
];
$config = WeChatServer::getOaConfig();
$app = Factory::officialAccount($config);
$r = $app->template_message->send($data);
}
else{
//微信的自己通知
$data = [
'touser'=>$openid,
'url'=>'',
'template_id'=>'k1dPNVhKOBTgSWe7Ha4BjZ96yUF11uSfOn0IwBkRx4c', //模板id
'data'=>[
'thing11'=>[
'value'=>$custom['consignee'].$timesw
],
'phone_number9'=>[
'value'=>$custom['mobile']
],
'thing19'=>[
'value'=>$custom['address']
],
'time18'=>[
'value'=>$timesd
],
'time14'=>[
'value'=>$timedd
//'value'=> $time.$timesw
]
]
];
$config = WeChatServer::getOaConfig();
$app = Factory::officialAccount($config);
$r = $app->template_message->send($data);
//通知对方修改的的人
$user=Db::name('staff')->where('id',$post['privilege'])->find(); //修改的人员信息
$auth=Db::name('user_auth')->where('user_id', $user['user_id'])->find(); //获取用户的openid
$goods=Db::name('goods')->where('id', $custom['goods_id'])->find();
if($post['type']=1){
$ties= '.8:00-12:00';
}else{
$ties= '.14:00-16:00';
}
//$openid = $openids['openid'];
$data = [
'touser'=>$auth['openid'],
'url'=>'',
'template_id'=>'uTFzkTScwMfMJtqQNGTNbpRuItpJwliVtJtMoobfqBQ', //模板id
'data'=>[
'keyword1'=>[
'value'=>$custom['order_sn']
],
'keyword2'=>[
'value'=> $goods['name']
],
'keyword3'=>[
'value'=>$timesd. $ties
],
'keyword4'=>[
'value'=>$custom['mobile']
]
]
];
$config = WeChatServer::getOaConfig();
$app = Factory::officialAccount($config);
$r = $app->template_message->send($data);
}
}
$count=count(explode(',',$post['privilege']));
}
$list=OrderautoLogic::eittime($id,$post);
$admins=$this->admin_id;
$time=time();
$logdate=[
'admin_id'=>$admins,
'order_sn'=>$id,
'show'=>'修改保洁师',
'cram_time'=>$time
];
$log=Db::name('log_orders')->data($logdate)->insert();
$this->_success('修改预约时间成功',$list);
}
$id= $this->request->get('id');
$this->assign('info',OrderautoLogic::orderexeinfo($id));
$this->assign('satff',LeaveLogic::user());
return $this->fetch();
}
/**
* 更换保洁师
* @return mixed
*/
public function staff(){
if($this->request->isAjax()){
$id= $this->request->get('id');
$post= $this->request->post();
$list=OrderautoLogic::staff($id,$post);
if($list==2){
$this->error('只能选择一个保洁师');
}else{
$this->_success('修改保洁师成功',$list);
}
}
$id= $this->request->get('id');
$order=Db::name('order_exe')->where('id',$id)->find();
$order_sn=Db::name('order')->where('order_sn',$order['order_sn'])->find();
$orders=Db::name('order_exe')->where('addtime', $order['addtime'])->where('autotime','>=',$order['autotime'])->where('autotime','<',$order['autotime']+(24 * 3600))->whereNotNull('staff_id')->field('staff_id')->group('staff_id')->select(); //查询有订单的保洁师傅
$oneDimensionalArray = array_column($orders, 'staff_id'); // 根据自己的表格字段名修改'字段名'部分
$lent=Db::name('leave')->where('addtime',$order['addtime'])->where('time','>=',$order['autotime'])->where('time','<',$order['autotime']+(24 * 3600))->whereNotNull('user_id')->field('user_id')->group('user_id')->select();
$lentuser = array_column($lent,'user_id');
$staff=Db::name('staff')
->whereNotIn('id',$oneDimensionalArray) // $array为要比较的数组
->whereNotIn('id',$lentuser) // $array为要比较的数组
->where('onwork',1)
->select();
foreach($staff as $item=>$k){
$staff[$item]['june']=number_format(UserLogic::haversine_distance($order_sn['lng'],$order_sn['lat'], $staff[$item]['lng'],$staff[$item]['lat'])/1000,1);
}
$this->assign('satff',$staff);
return $this->fetch();
}
/**
* 单次订单暂停服务
* @return mixed
*/
public function dels($id){
$admins=$this->admin_id;
$time=time();
$logdate=[
'admin_id'=>$admins,
'order_sn'=>$id,
'show'=>'订单暂停服务',
'cram_time'=>$time
];
$log=Db::name('log_orders')->data($logdate)->insert();
$list=DB::name('order_exe')->where('id',$id)->update(['status'=>3,'staff_id'=>null,'staff_status'=>0]);
$this->_success('暂停订单成功');
}
/**
* 取消暂停服务
* @return mixed
*/
public function delsd($id){
$admins=$this->admin_id;
$time=time();
$logdate=[
'admin_id'=>$admins,
'order_sn'=>$id,
'show'=>'订单取消暂停',
'cram_time'=>$time
];
$log=Db::name('log_orders')->data($logdate)->insert();
$list=DB::name('order_exe')->where('id',$id)->update(['status'=>0]);
$this->_success('取消暂停成功');
}
/**
* 主订单暂停服务
* @return mixed
*/
public function prent($id){
//增加订单的日志
$order=Db::name('order')->where('id',$id)->find();
$admin=$this->admin_id;
$time=time();
$logdate=[
'admin_id'=>$admin,
'order_sn'=>$order['order_sn'],
'show'=>'暂停主订单',
'cram_time'=>$time
];
$log=Db::name('log_order')->data($logdate)->insert();
$list=OrderautoLogic::prent($id);
$this->_success('暂停订单成功');
}
/**
* 取消订单的暂停服务
* @return mixed
*/
public function prentsd($id){
//增加订单的日志
$order=Db::name('order')->where('id',$id)->find();
$admin=$this->admin_id;
$time=time();
$logdate=[
'admin_id'=>$admin,
'order_sn'=>$order['order_sn'],
'show'=>'取消暂停订单',
'cram_time'=>$time
];
$log=Db::name('log_order')->data($logdate)->insert();
$list=OrderautoLogic::prentsd($id);
$this->_success('取消暂停成功');
}
/**
* 修改订单的备注
* @return mixed
*/
public function remarks(){
// 获取的
if ($this->request->isAjax() && $this->request->isGet()){
$get = $this->request->get();
$detail = OrderautoLogic::remarks($get, 'get');
$this->_success('获取成功', $detail);
}
// 提交的
if ($this->request->isAjax() && $this->request->isPost()) {
$post = $this->request->post();
$result = OrderautoLogic::remarks($post, 'post');
if ($result) {
$this->_success('保存成功');
}
$this->error('保存失败');
}
}
/**
* 删除子订单的排单
* @return mixed
*/
public function delss($id){
$del=Db::name('order_exe')->where('id',$id)->delete();
$this->_success('删除成功');
}
/**
* 修改订单已经完成状态
* @return mixed
*/
public function complete($id){
$admins=$this->admin_id;
$time=time();
$logdate=[
'admin_id'=>$admins,
'order_sn'=>$id,
'show'=>'修改订单已完成',
'cram_time'=>$time
];
$log=Db::name('log_orders')->data($logdate)->insert();
$del=Db::name('order_exe')->where('id',$id)->update(['status'=>1, 'staff_status'=>3]);
$this->_success('订单已完成');
}
/**
*锁定订单
* @return mixed
*/
public function lock($id){
$admins=$this->admin_id;
$time=time();
$logdate=[
'admin_id'=>$admins,
'order_sn'=>$id,
'show'=>'锁定订单状态',
'cram_time'=>$time
];
$log=Db::name('log_orders')->data($logdate)->insert();
$del=Db::name('order_exe')->where('id',$id)->update(['lock'=>1]);
$this->_success('订单锁定成功');
}
/**
*解锁订单
* @return mixed
*/
public function unlock($id){
$admins=$this->admin_id;
$time=time();
$logdate=[
'admin_id'=>$admins,
'order_sn'=>$id,
'show'=>'取消订单锁定',
'cram_time'=>$time
];
$log=Db::name('log_orders')->data($logdate)->insert();
$del=Db::name('order_exe')->where('id',$id)->update(['lock'=>0]);
$this->_success('订单锁定成功');
}
public function log(){
if($this->request->isAjax()){
$get= $this->request->get();
$lists=OrderautoLogic::log($get);
$this->_success('获取数据成功',$lists);
}
$id= $this->request->get('id');
$this->assign('ids',$id);
return $this->fetch();
}
public function orderlog(){
if($this->request->isAjax()){
$get= $this->request->get();
$lists=OrderautoLogic::orderlog($get);
$this->_success('获取数据成功',$lists);
}
$id= $this->request->get('id');
$this->assign('ids',$id);
return $this->fetch();
}
/**
*订单进入异常
* @return mixed
*/
public function abnormal($id){
$admins=$this->admin_id;
$time=time();
$logdate=[
'admin_id'=>$admins,
'order_sn'=>$id,
'show'=>'设置订单进入异常',
'cram_time'=>$time
];
$log=Db::name('log_orders')->data($logdate)->insert();
$del=Db::name('order_exe')->where('id',$id)->update(['abnormal'=>1]);
$this->_success('订单异常成功');
}
/**
*订单进入异常
* @return mixed
*/
public function notabnormal($id){
$admins=$this->admin_id;
$time=time();
$logdate=[
'admin_id'=>$admins,
'order_sn'=>$id,
'show'=>'取消订单进入异常',
'cram_time'=>$time
];
$log=Db::name('log_orders')->data($logdate)->insert();
$del=Db::name('order_exe')->where('id',$id)->update(['abnormal'=>0]);
$this->_success('取消订单异常成功');
}
public function orderinfo(){
$get= $this->request->get();
$info=OrderautoLogic::orderinfo($get);
if($info){
$this->assign('info',$info);
return $this->fetch();
}
}
}