|
|
@@ -345,127 +345,118 @@ class ServiceWorkLogic extends BaseLogic
|
|
|
* @return array|false
|
|
|
*/
|
|
|
public static function detail($params){
|
|
|
- try {
|
|
|
- $result = ServiceWork::with([
|
|
|
- 'worker'=> function(Query $query) {
|
|
|
- $query->field('id,worker_number,real_name');
|
|
|
- },
|
|
|
- 'allocateWorkerLog' =>function(Query $query){
|
|
|
- $query->field('id,work_id,opera_log,create_time');
|
|
|
- },
|
|
|
- 'serviceWorkLog' =>function(Query $query){
|
|
|
- $query->field('id,work_id,opera_log,create_time');
|
|
|
- }
|
|
|
-
|
|
|
- ])->append(['id','work_status_text','service_status_text'])
|
|
|
- ->findOrEmpty($params['id'])->toArray();
|
|
|
-
|
|
|
- //师傅工单按钮状态
|
|
|
- $work_service_status = 0;
|
|
|
- $work_service_status_text = '待派单';
|
|
|
- //工单状态
|
|
|
- if($result['work_status'] == 1){
|
|
|
- $work_service_status = 1;
|
|
|
- $work_service_status_text = '待领单';
|
|
|
- }
|
|
|
- if($result['work_status'] == 2){
|
|
|
- $work_service_status = 2;
|
|
|
- $work_service_status_text = '预约上门';
|
|
|
- }
|
|
|
- if($result['work_status'] == 3){
|
|
|
- $work_service_status = 3;
|
|
|
- $work_service_status_text = '等待上门';
|
|
|
- if(date('Y-m-d') === date('Y-m-d',strtotime($result['appointment_time']))){
|
|
|
- $work_service_status = 4;
|
|
|
- $work_service_status_text = '确认上门';
|
|
|
- }
|
|
|
- }
|
|
|
- if($result['work_status'] == 4 and $result['user_confirm_status']==0){
|
|
|
- $work_service_status = 5;
|
|
|
- $work_service_status_text = '确认报价';
|
|
|
- }
|
|
|
- if($result['work_status'] == 4 and $result['user_confirm_status']==1){
|
|
|
- $work_service_status = 6;
|
|
|
- $work_service_status_text = '用户确认报价中';
|
|
|
- }
|
|
|
- if($result['work_status'] == 5 and $result['user_confirm_status']==2){
|
|
|
- $work_service_status = 7;
|
|
|
- $work_service_status_text = '完成服务';
|
|
|
- }
|
|
|
- if($result['work_status'] == 5 and $result['user_confirm_status']==3){
|
|
|
- $work_service_status = 8;
|
|
|
- $work_service_status_text = '用户确认完成服务中';
|
|
|
- }
|
|
|
- if($result['work_status'] ==6){
|
|
|
- $work_service_status = 9;
|
|
|
- $work_service_status_text = '待结算';
|
|
|
- }
|
|
|
- if($result['work_status'] ==7){
|
|
|
- $work_service_status = 10;
|
|
|
- $work_service_status_text = '已完结';
|
|
|
- }
|
|
|
- if($result['work_status'] ==8){
|
|
|
- $work_service_status = 11;
|
|
|
- $work_service_status_text = '已评价';
|
|
|
- }
|
|
|
-
|
|
|
- $result['work_service_status'] = $work_service_status;
|
|
|
- $result['work_service_status_text'] = $work_service_status_text;
|
|
|
-
|
|
|
-
|
|
|
- //搜索当前工单下的所有订单记录
|
|
|
- $result['pay_orders'] = RechargeOrder::with(['orderGoods'=>function(Query $query){
|
|
|
- $query->field('id,sn,goods_id,goods_name,goods_image,goods_number,good_unit,goods_size,goods_type,goods_brand,base_service_fee,service_total,service_fee')->order(['id'=>'desc']);
|
|
|
- }])->where(['work_id'=>$result['id']])->field('id as order_id,sn,order_type,pay_status,payment_type,pay_way,pay_time,order_amount,order_total,coupon_price,create_time')->order('id asc')->select()->toArray();
|
|
|
- $pay_status_data = DictData::where('type_value','pay_status')->column('name','value');
|
|
|
- $payment_type_data = DictData::where('type_value','payment_type')->column('name','value');
|
|
|
- $pay_way_data = DictData::where('type_value','pay_way')->column('name','value');
|
|
|
- $order_type_data = DictData::where('type_value','order_type')->column('name','value');
|
|
|
- $coupon_price = 0;
|
|
|
- foreach ($result['pay_orders'] as $k=>&$v){
|
|
|
- $v['pay_status_name'] = $pay_status_data[$v['pay_status']];
|
|
|
- $v['payment_type_name'] = $payment_type_data[$v['payment_type']];
|
|
|
- $v['pay_way_name'] = $pay_way_data[$v['pay_way']];
|
|
|
- $v['order_type_name'] = $order_type_data[$v['order_type']];
|
|
|
- $v['pay_time'] = $v['pay_time'] && is_numeric($v['pay_time']) ? date('Y-m-d H:i:s',$v['pay_time']):'';
|
|
|
- if($v['payment_type']!=1 and !empty($result['spare_total'])){
|
|
|
- $v['order_total'] = $v['order_total'] - $result['spare_total'];
|
|
|
- $v['order_amount'] = $v['order_amount'] - $result['spare_total'];
|
|
|
- }
|
|
|
- $coupon_price += $v['coupon_price'];
|
|
|
- }
|
|
|
-
|
|
|
- //汇总优惠卷额度
|
|
|
- $result['coupon_price'] = $coupon_price;
|
|
|
-
|
|
|
- //工单总支付金额
|
|
|
- $result['worker_account'] = $result['work_amount'];
|
|
|
-
|
|
|
- // 配件信息
|
|
|
- $result['spare_parts'] = [];
|
|
|
- if($result['service_work_spare_id']){
|
|
|
- $work_spare_parts = json_decode(ServiceWorkSpare::where('id',$result['service_work_spare_id'])->value('spare_parts'),true);
|
|
|
- $spare_parts = SparePart::where('id','in',array_column($work_spare_parts,'id'))
|
|
|
- ->field(['id', 'goods_category_id', 'spare_name', 'spare_image', 'spare_number', 'spare_unit','spare_status'])
|
|
|
- ->select()
|
|
|
- ->toArray();
|
|
|
- $spare_parts = array_column($spare_parts,null,'id');
|
|
|
- foreach (array_column($work_spare_parts,null,'id') as $k=>&$v){
|
|
|
- $spare_parts[$k] = array_merge($spare_parts[$k],$v);
|
|
|
- }
|
|
|
- $result['spare_parts'] = array_values($spare_parts)??[];
|
|
|
+ $result = ServiceWork::with([
|
|
|
+ 'worker'=> function(Query $query) {
|
|
|
+ $query->field('id,worker_number,real_name');
|
|
|
+ },
|
|
|
+ 'allocateWorkerLog' =>function(Query $query){
|
|
|
+ $query->field('id,work_id,opera_log,create_time');
|
|
|
+ },
|
|
|
+ 'serviceWorkLog' =>function(Query $query){
|
|
|
+ $query->field('id,work_id,opera_log,create_time');
|
|
|
+ }
|
|
|
+ ])->append(['id','work_status_text','service_status_text'])
|
|
|
+ ->findOrEmpty($params['id'])->toArray();
|
|
|
+
|
|
|
+ //师傅工单按钮状态
|
|
|
+ $work_service_status = 0;
|
|
|
+ $work_service_status_text = '待派单';
|
|
|
+ //工单状态
|
|
|
+ if($result['work_status'] == 1){
|
|
|
+ $work_service_status = 1;
|
|
|
+ $work_service_status_text = '待领单';
|
|
|
+ }
|
|
|
+ if($result['work_status'] == 2){
|
|
|
+ $work_service_status = 2;
|
|
|
+ $work_service_status_text = '预约上门';
|
|
|
+ }
|
|
|
+ if($result['work_status'] == 3){
|
|
|
+ $work_service_status = 3;
|
|
|
+ $work_service_status_text = '等待上门';
|
|
|
+ if(date('Y-m-d') === date('Y-m-d',strtotime($result['appointment_time']))){
|
|
|
+ $work_service_status = 4;
|
|
|
+ $work_service_status_text = '确认上门';
|
|
|
}
|
|
|
+ }
|
|
|
+ if($result['work_status'] == 4 and $result['user_confirm_status']==0){
|
|
|
+ $work_service_status = 5;
|
|
|
+ $work_service_status_text = '确认报价';
|
|
|
+ }
|
|
|
+ if($result['work_status'] == 4 and $result['user_confirm_status']==1){
|
|
|
+ $work_service_status = 6;
|
|
|
+ $work_service_status_text = '用户确认报价中';
|
|
|
+ }
|
|
|
+ if($result['work_status'] == 5 and $result['user_confirm_status']==2){
|
|
|
+ $work_service_status = 7;
|
|
|
+ $work_service_status_text = '完成服务';
|
|
|
+ }
|
|
|
+ if($result['work_status'] == 5 and $result['user_confirm_status']==3){
|
|
|
+ $work_service_status = 8;
|
|
|
+ $work_service_status_text = '用户确认完成服务中';
|
|
|
+ }
|
|
|
+ if($result['work_status'] ==6){
|
|
|
+ $work_service_status = 9;
|
|
|
+ $work_service_status_text = '待结算';
|
|
|
+ }
|
|
|
+ if($result['work_status'] ==7){
|
|
|
+ $work_service_status = 10;
|
|
|
+ $work_service_status_text = '已完结';
|
|
|
+ }
|
|
|
+ if($result['work_status'] ==8){
|
|
|
+ $work_service_status = 11;
|
|
|
+ $work_service_status_text = '已评价';
|
|
|
+ }
|
|
|
|
|
|
- //查收师傅提成金额
|
|
|
- $result['change_amount'] = MasterWorkerAccountLog::where(['work_sn'=>$result['work_sn'],'action'=>1])->value('change_amount');
|
|
|
+ $result['work_service_status'] = $work_service_status;
|
|
|
+ $result['work_service_status_text'] = $work_service_status_text;
|
|
|
+
|
|
|
+
|
|
|
+ //搜索当前工单下的所有订单记录
|
|
|
+ $result['pay_orders'] = RechargeOrder::with(['orderGoods'=>function(Query $query){
|
|
|
+ $query->field('id,sn,goods_id,goods_name,goods_image,goods_number,good_unit,goods_size,goods_type,goods_brand,base_service_fee,service_total,service_fee')->order(['id'=>'desc']);
|
|
|
+ }])->where(['work_id'=>$result['id']])->field('id as order_id,sn,order_type,pay_status,payment_type,pay_way,pay_time,order_amount,order_total,coupon_price,create_time')->order('id asc')->select()->toArray();
|
|
|
+ $pay_status_data = DictData::where('type_value','pay_status')->column('name','value');
|
|
|
+ $payment_type_data = DictData::where('type_value','payment_type')->column('name','value');
|
|
|
+ $pay_way_data = DictData::where('type_value','pay_way')->column('name','value');
|
|
|
+ $order_type_data = DictData::where('type_value','order_type')->column('name','value');
|
|
|
+ $coupon_price = 0;
|
|
|
+ foreach ($result['pay_orders'] as $k=>&$v){
|
|
|
+ $v['pay_status_name'] = $pay_status_data[$v['pay_status']];
|
|
|
+ $v['payment_type_name'] = $payment_type_data[$v['payment_type']];
|
|
|
+ $v['pay_way_name'] = $pay_way_data[$v['pay_way']];
|
|
|
+ $v['order_type_name'] = $order_type_data[$v['order_type']];
|
|
|
+ $v['pay_time'] = $v['pay_time'] && is_numeric($v['pay_time']) ? date('Y-m-d H:i:s',$v['pay_time']):'';
|
|
|
+ if($v['payment_type']!=1 and !empty($result['spare_total'])){
|
|
|
+ $v['order_total'] = $v['order_total'] - $result['spare_total'];
|
|
|
+ $v['order_amount'] = $v['order_amount'] - $result['spare_total'];
|
|
|
+ }
|
|
|
+ $coupon_price += $v['coupon_price'];
|
|
|
+ }
|
|
|
|
|
|
- return $result;
|
|
|
- }catch(\Exception $e){
|
|
|
- Db::rollback();
|
|
|
- self::setError($e->getMessage());
|
|
|
- return false;
|
|
|
+ //汇总优惠卷额度
|
|
|
+ $result['coupon_price'] = $coupon_price;
|
|
|
+
|
|
|
+ //工单总支付金额
|
|
|
+ $result['worker_account'] = $result['work_amount'];
|
|
|
+
|
|
|
+ // 配件信息
|
|
|
+ $result['spare_parts'] = [];
|
|
|
+ if($result['service_work_spare_id']){
|
|
|
+ $work_spare_parts = json_decode(ServiceWorkSpare::where('id',$result['service_work_spare_id'])->value('spare_parts'),true);
|
|
|
+ $spare_parts = SparePart::where('id','in',array_column($work_spare_parts,'id'))
|
|
|
+ ->field(['id', 'goods_category_id', 'spare_name', 'spare_image', 'spare_number', 'spare_unit','spare_status'])
|
|
|
+ ->select()
|
|
|
+ ->toArray();
|
|
|
+ $spare_parts = array_column($spare_parts,null,'id');
|
|
|
+ foreach (array_column($work_spare_parts,null,'id') as $k=>&$v){
|
|
|
+ $spare_parts[$k] = array_merge($spare_parts[$k],$v);
|
|
|
+ }
|
|
|
+ $result['spare_parts'] = array_values($spare_parts)??[];
|
|
|
}
|
|
|
|
|
|
+ //查收师傅提成金额
|
|
|
+ $result['change_amount'] = MasterWorkerAccountLog::where(['work_sn'=>$result['work_sn'],'action'=>1])->value('change_amount');
|
|
|
+ return $result;
|
|
|
}
|
|
|
|
|
|
/**
|