Sfoglia il codice sorgente

Merge branch 'master' of e.coding.net:zdap/weixiu/weixiu_api into m--accessory_settlement

# Conflicts:
#	app/api/logic/PerformanceLogic.php
liugc 1 anno fa
parent
commit
05151f119e

+ 11 - 5
app/adminapi/http/middleware/LoginMiddleware.php

@@ -53,13 +53,15 @@ class LoginMiddleware
             //token过期无效并且该地址需要登录才能访问
             //token过期无效并且该地址需要登录才能访问
             return JsonService::fail('登录超时,请重新登录', [], -1);
             return JsonService::fail('登录超时,请重新登录', [], -1);
         }
         }
-
+        $controller = $request->controller();
+        $is_kefu = 0;
         //token临近过期,自动续期
         //token临近过期,自动续期
         if ($adminInfo) {
         if ($adminInfo) {
             //客服派单员
             //客服派单员
             if (isset($adminInfo['role_name']) && (strpos($adminInfo['role_name'], '派单') !== false || strpos($adminInfo['role_name'], '客服') !== false)) {  
             if (isset($adminInfo['role_name']) && (strpos($adminInfo['role_name'], '派单') !== false || strpos($adminInfo['role_name'], '客服') !== false)) {  
                 //获取临近过期自动续期时长
                 //获取临近过期自动续期时长
                 $beExpireDuration = Config::get('project.kefu_admin_token.be_expire_duration');
                 $beExpireDuration = Config::get('project.kefu_admin_token.be_expire_duration');
+                $is_kefu = 1;
             } else {
             } else {
                 //获取临近过期自动续期时长
                 //获取临近过期自动续期时长
                 $beExpireDuration = Config::get('project.admin_token.be_expire_duration');
                 $beExpireDuration = Config::get('project.admin_token.be_expire_duration');
@@ -67,10 +69,14 @@ class LoginMiddleware
 
 
             //token续期
             //token续期
             if (time() > ($adminInfo['expire_time'] - $beExpireDuration)) {
             if (time() > ($adminInfo['expire_time'] - $beExpireDuration)) {
-                $result = AdminTokenService::overtimeToken($token);
-                //续期失败(数据表被删除导致)
-                if (empty($result)) {
-                    return JsonService::fail('登录过期', [], -1);
+                if ($is_kefu == 1 && $controller == 'notice.Notice') {
+                    
+                } else {
+                    $result = AdminTokenService::overtimeToken($token);
+                    //续期失败(数据表被删除导致)
+                    if (empty($result)) {
+                        return JsonService::fail('登录过期', [], -1);
+                    }
                 }
                 }
             }
             }
         }
         }

+ 1 - 1
app/adminapi/service/AdminTokenService.php

@@ -104,7 +104,7 @@ class AdminTokenService
             ->where('a.admin_id', $adminId)
             ->where('a.admin_id', $adminId)
             ->value('b.name');
             ->value('b.name');
 
 
-        if (strpos($roolName, '客服') !== false || strpos($roolName, '派单') !== false) {
+        if (!empty($roolName) && (strpos($roolName, '客服') !== false || strpos($roolName, '派单') !== false)) {
             return Config::get('project.kefu_admin_token.expire_duration');
             return Config::get('project.kefu_admin_token.expire_duration');
         } else {
         } else {
             return Config::get('project.admin_token.expire_duration');
             return Config::get('project.admin_token.expire_duration');

+ 14 - 143
app/api/logic/PerformanceLogic.php

@@ -20,7 +20,6 @@ use app\common\model\recharge\OrderGoods;
 use app\common\logic\RetentionMoneyLogic;
 use app\common\logic\RetentionMoneyLogic;
 use app\common\model\works\ServiceWork;
 use app\common\model\works\ServiceWork;
 use app\common\model\works\ServiceWorkLog;
 use app\common\model\works\ServiceWorkLog;
-use app\common\model\works\ServiceWorkSpareAudit;
 use think\facade\Db;
 use think\facade\Db;
 use think\facade\Log;
 use think\facade\Log;
 
 
@@ -58,18 +57,20 @@ class PerformanceLogic extends BaseLogic
                     $settlement_amount = bcmul(bcsub($work->work_total ,$work->spare_total), $rule['rate'],2);
                     $settlement_amount = bcmul(bcsub($work->work_total ,$work->spare_total), $rule['rate'],2);
                     break;
                     break;
                 case 1://按照结算金额结算
                 case 1://按照结算金额结算
-                    $worker_price = bcsub($work->work_amount ,$work->spare_total);
-                    $settlement_amount = bcmul($worker_price, $rule['rate'],2);
+                    $worker_price = $work->work_amount;
+                    //$settlement_amount = bcmul($worker_price, $rule['rate'],2);
+                    // 运营新定 - 配件费不包进总工单金额扣除
+                    $settlement_amount = bcmul(bcsub($worker_price ,$work->spare_total) , $rule['rate'],2);
                     break;
                     break;
                 case 2://按照服务总费用结算
                 case 2://按照服务总费用结算
                     //搜索所有优惠券
                     //搜索所有优惠券
                     $worker_price = $work->service_fee-$coupon_price;
                     $worker_price = $work->service_fee-$coupon_price;
-                    $worker_price = bcsub($worker_price,$work->spare_total);
-                    $settlement_amount = bcmul($worker_price, $rule['rate'],2);
+                    $settlement_amount = bcmul(bcsub($worker_price,$work->spare_total), $rule['rate'],2);
                     break;
                     break;
                 default://按照固定金额结算
                 default://按照固定金额结算
                     $worker_price = $work->service_fee-$coupon_price;
                     $worker_price = $work->service_fee-$coupon_price;
-                    $settlement_amount = $rule['rate'];
+                    $quantity = OrderGoods::whereIn('sn',$order_sns)->value('quantity')??1;
+                    $settlement_amount = bcmul($quantity, $rule['rate'],2);
             }
             }
             $work->worker_price = $worker_price;
             $work->worker_price = $worker_price;
 
 
@@ -132,21 +133,7 @@ class PerformanceLogic extends BaseLogic
             $settlement_amount += (float)$work->add_work_amount;
             $settlement_amount += (float)$work->add_work_amount;
 
 
             //工程师可提现金额,汇总 配件总金额
             //工程师可提现金额,汇总 配件总金额
-            $status = ServiceWorkSpareAudit::where("service_work_id", $work->id)->value('status')??0;
-            if((int)$status === 3){
-                // work_id
-                $retentionMoneyLog = MasterWorkerRetentionMoneyLog::create([
-                    'sn' => generate_sn(MasterWorkerRetentionMoneyLog::class,'sn'),
-                    'worker_id' => $work->master_worker_id,
-                    'action' => WorkerAccountLogEnum::DEC,
-                    'amount' => (float)$work->spare_total,
-                    'work_id' => $work->id,
-                    'remark' => '配件费超时审核冻结',
-                ])->getData();
-                Log::info('配件费超时审核冻结:'.$work->master_worker_id.',工单Id:'.$work->id);
-            }else{
-                $settlement_amount += (float)$work->spare_total;
-            }
+            $settlement_amount += (float)$work->spare_total;
 
 
             Log::info('工单'.$work->id.',总服务费:'.$worker_price.'可提现金额:'.$settlement_amount.',加单金额:'.$work->add_work_amount.',缴纳质保金:'.$work->earnest_money.',系统回收金额:'.$work->system_amount.',门店总金额(包含工程师):'.$work->tenant_all_amount . ',门店实际金额:'.$work->tenant_amount);
             Log::info('工单'.$work->id.',总服务费:'.$worker_price.'可提现金额:'.$settlement_amount.',加单金额:'.$work->add_work_amount.',缴纳质保金:'.$work->earnest_money.',系统回收金额:'.$work->system_amount.',门店总金额(包含工程师):'.$work->tenant_all_amount . ',门店实际金额:'.$work->tenant_amount);
 
 
@@ -173,10 +160,10 @@ class PerformanceLogic extends BaseLogic
             $work->work_pay_status = 2;
             $work->work_pay_status = 2;
             //工程师金额结算
             //工程师金额结算
             //$coupon_price = RechargeOrder::where('work_id',$work->id)->sum('coupon_price');
             //$coupon_price = RechargeOrder::where('work_id',$work->id)->sum('coupon_price');
-            $work->worker_price = bcsub($work->work_amount,$work->spare_total);
+            $work->worker_price = $work->work_total;
             //$settlement_amount = bcmul($work->work_total, $ratio,2);
             //$settlement_amount = bcmul($work->work_total, $ratio,2);
             // 运营新定 - 配件费不包进总工单金额扣除
             // 运营新定 - 配件费不包进总工单金额扣除
-            $settlement_amount = bcmul($work->worker_price, $ratio,2);
+            $settlement_amount = bcmul(bcsub($work->worker_price,$work->spare_total), $ratio,2);
             // 缴纳质保金
             // 缴纳质保金
             $masterWorkerInfo = MasterWorker::where('id', $work->master_worker_id)->where('retention_money_status', 1)->findOrEmpty()->toArray();
             $masterWorkerInfo = MasterWorker::where('id', $work->master_worker_id)->where('retention_money_status', 1)->findOrEmpty()->toArray();
             Log::info('缴纳质保金工程师信息:'.json_encode($masterWorkerInfo));
             Log::info('缴纳质保金工程师信息:'.json_encode($masterWorkerInfo));
@@ -232,22 +219,7 @@ class PerformanceLogic extends BaseLogic
             //工程师可提现金额,汇总了加单金额
             //工程师可提现金额,汇总了加单金额
             $settlement_amount += (float)$work->add_work_amount;
             $settlement_amount += (float)$work->add_work_amount;
             //工程师可提现金额,汇总 配件总金额
             //工程师可提现金额,汇总 配件总金额
-            $status = ServiceWorkSpareAudit::where("service_work_id", $work->id)->value('status')??0;
-            if((int)$status === 3){
-                // work_id
-                $retentionMoneyLog = MasterWorkerRetentionMoneyLog::create([
-                    'sn' => generate_sn(MasterWorkerRetentionMoneyLog::class,'sn'),
-                    'worker_id' => $work->master_worker_id,
-                    'action' => WorkerAccountLogEnum::DEC,
-                    'amount' => (float)$work->spare_total,
-                    'work_id' => $work->id,
-                    'remark' => '配件费超时审核冻结',
-                ])->getData();
-                Log::info('配件费超时审核冻结:'.$work->master_worker_id.',工单Id:'.$work->id);
-            }else{
-                $settlement_amount += (float)$work->spare_total;
-            }
-
+            $settlement_amount += (float)$work->spare_total;
             Log::info('calculatePerformanceCommission:工单'.$work->id.',总服务费:'.$work->worker_price.'可提现金额:'.$settlement_amount.',加单金额:'.$work->add_work_amount.',缴纳质保金:'.$work->earnest_money.',系统回收金额:'.$work->system_amount.',门店总金额(包含工程师):'.$work->tenant_all_amount . ',门店实际金额:'.$work->tenant_amount);
             Log::info('calculatePerformanceCommission:工单'.$work->id.',总服务费:'.$work->worker_price.'可提现金额:'.$settlement_amount.',加单金额:'.$work->add_work_amount.',缴纳质保金:'.$work->earnest_money.',系统回收金额:'.$work->system_amount.',门店总金额(包含工程师):'.$work->tenant_all_amount . ',门店实际金额:'.$work->tenant_amount);
 
 
             WorkerAccountLogLogic::addAccountLog($work,$settlement_amount,WorkerAccountLogEnum::UM_INC_ADMIN,WorkerAccountLogEnum::INC);
             WorkerAccountLogLogic::addAccountLog($work,$settlement_amount,WorkerAccountLogEnum::UM_INC_ADMIN,WorkerAccountLogEnum::INC);
@@ -329,8 +301,7 @@ class PerformanceLogic extends BaseLogic
         Db::startTrans();
         Db::startTrans();
         try {
         try {
 
 
-
-            $masterWorkerAccountLog = MasterWorkerAccountLog::where('action',1)->where('worker_id',$work->master_worker_id)->where('work_sn',$work->work_sn)->findOrEmpty();
+            /*$masterWorkerAccountLog = MasterWorkerAccountLog::where('action',1)->where('worker_id',$work->master_worker_id)->where('work_sn',$work->work_sn)->findOrEmpty();
             $masterWorkerRetentionMoneyLog = MasterWorkerRetentionMoneyLog::where('action',1)->where('work_id',$work->id)->where('worker_id',$work->master_worker_id)->findOrEmpty();
             $masterWorkerRetentionMoneyLog = MasterWorkerRetentionMoneyLog::where('action',1)->where('work_id',$work->id)->where('worker_id',$work->master_worker_id)->findOrEmpty();
             $masterWorker = MasterWorker::where('id', $work->master_worker_id)->findOrEmpty();
             $masterWorker = MasterWorker::where('id', $work->master_worker_id)->findOrEmpty();
             if(!$masterWorkerRetentionMoneyLog->isEmpty()){
             if(!$masterWorkerRetentionMoneyLog->isEmpty()){
@@ -347,110 +318,10 @@ class PerformanceLogic extends BaseLogic
             }
             }
             $masterWorker->save();
             $masterWorker->save();
 
 
+            OrderEffectiveLog::where('work_id',$work->id)->delete();
 
 
+            self::calculatePerformance($work);*/
 
 
-            //工单已完结,进行结算,结算完成后设置work_pay_status为2,已结算
-            //获取工单对应的商品id
-            $order_sns = RechargeOrder::where('work_id',$work->id)->column('sn');
-            $goods_id = OrderGoods::whereIn('sn',$order_sns)->value('goods_id');
-            $rule = PerformanceRules::whereFindInSet('goods_id',$goods_id)->findOrEmpty();
-            if($rule->isEmpty()){
-                $work->work_pay_status = 3;
-            }else{
-                $work->work_pay_status = 2;
-            }
-            Log::info('calculatePerformance:'.json_encode($rule->toArray()));
-            //工程师金额结算
-            if(!$rule->isEmpty()){
-                $coupon_price = RechargeOrder::where('work_id',$work->id)->sum('coupon_price');
-                switch ($rule['type']){
-                    case 0:
-                    case 1://按照结算金额结算
-                    case 2:
-                        $worker_price = bcsub($work->work_amount ,$work->spare_total);
-                        $settlement_amount = bcmul($worker_price, $rule['rate'],2);
-                        break;
-                }
-                $work->worker_price = $worker_price;
-
-                // 缴纳质保金
-                $masterWorkerInfo = MasterWorker::where('id', $work->master_worker_id)->where('retention_money_status', 1)->findOrEmpty()->toArray();
-                Log::info('缴纳质保金工程师信息:'.json_encode($masterWorkerInfo));
-                if(!empty($masterWorkerInfo) && $masterWorkerInfo['retention_pay_status'] == 2 && ($masterWorkerInfo['earnest_money'] > $masterWorkerInfo['earnest_money_usable'])){
-                    $retentionData['action'] = WorkerAccountLogEnum::INC;
-                    $retentionData['worker_id'] = $work->master_worker_id;
-                    $retentionData['work_id'] = $work->id;
-                    $amount = bcmul($worker_price, bcdiv($masterWorkerInfo['installment_ratio'], 100, 4),2);
-                    //$amount = bcmul($settlement_amount, bcdiv($masterWorkerInfo['installment_ratio'], 100, 4),2);
-                    $retentionData['amount'] = $amount;
-                    //$retentionData['remark'] = "分期缴纳质保金:该单实提成--{$settlement_amount},分期每单缴纳比例--{$masterWorkerInfo['installment_ratio']}%,缴纳金额--{$amount}";
-                    $retentionData['remark'] = "分期缴纳质保金:工单提成--{$worker_price},分期每单缴纳比例--{$masterWorkerInfo['installment_ratio']}%,缴纳金额--{$amount}";
-                    $settlement_amount -= (float)$amount;
-                    $surplusMoney = RetentionMoneyLogic::retentionPayment($retentionData);
-                    Log::info('分期缴纳质保金:'.$surplusMoney,$retentionData);
-                    if($surplusMoney === false){
-                        Log::info('分期缴纳质保金支付失败-'.RetentionMoneyLogic::getError(),$retentionData);
-                        $settlement_amount += (float)$amount;
-                    }else{
-                        $settlement_amount += (float)$surplusMoney;
-
-                        $work->earnest_money = $amount - $surplusMoney;//质保金金额
-                    }
-                }
-
-                if($settlement_amount<0){
-                    //修改工单为待结算,后台处理
-                    $work->work_pay_status = 3;
-                }
-
-                //工程师可提现金额
-                $work->settlement_amount = $settlement_amount;
-
-                //工程师加单金额判定
-                //$add_work_amount = 0;测试
-                $add_work_amount = WorkAddMoneyLogic::checkAddWork($work,$worker_price);
-                $work->add_work_amount = $add_work_amount;
-
-                //系统回收金额
-                $work->system_amount = $worker_price-$settlement_amount-$work->earnest_money-$work->add_work_amount;
-                if($work->system_amount < 0){
-                    $work->system_amount = 0;
-                    Log::info('system_amount小于0重置为0:'.$work->system_amount.'='.$worker_price.'-'.$settlement_amount.'-'.$work->earnest_money.'-'.$work->add_work_amount);
-                }
-                //门店结算金额
-                if($work->tenant_id > 0){
-                    $percentage = TenantRatingCommissionLogic::getCommissionByTenantId($work->tenant_id);
-                    if($percentage > 0){
-                        $work->system_amount = bcmul($worker_price, bcdiv($percentage, 100, 4),2);
-                        $work->tenant_all_amount = $worker_price - $work->system_amount;
-                        $work->tenant_amount = $work->tenant_all_amount - $settlement_amount - $work->earnest_money - $work->add_work_amount;
-                    }
-                    Log::info('平台抽成门店的比例:'.'门店ID:'.$work->tenant_id.',平台抽成:'.$percentage);
-                }
-
-                //工程师可提现金额,汇总了加单金额
-                $settlement_amount += (float)$work->add_work_amount;
-                //工程师可提现金额,汇总 配件总金额
-                $status = ServiceWorkSpareAudit::where("service_work_id", $work->id)->value('status')??0;
-                if((int)$status === 3){
-                    // work_id
-                    $retentionMoneyLog = MasterWorkerRetentionMoneyLog::create([
-                        'sn' => generate_sn(MasterWorkerRetentionMoneyLog::class,'sn'),
-                        'worker_id' => $work->master_worker_id,
-                        'action' => WorkerAccountLogEnum::DEC,
-                        'amount' => (float)$work->spare_total,
-                        'work_id' => $work->id,
-                        'remark' => '配件费超时审核冻结',
-                    ])->getData();
-                    Log::info('配件费超时审核冻结:'.$work->master_worker_id.',工单Id:'.$work->id);
-                }else{
-                    $settlement_amount += (float)$work->spare_total;
-                }
-                Log::info('工单'.$work->id.',总服务费:'.$worker_price.'可提现金额:'.$settlement_amount.',加单金额:'.$work->add_work_amount.',缴纳质保金:'.$work->earnest_money.',系统回收金额:'.$work->system_amount.',门店总金额(包含工程师):'.$work->tenant_all_amount . ',门店实际金额:'.$work->tenant_amount);
-
-                WorkerAccountLogLogic::addAccountLog($work,$settlement_amount,WorkerAccountLogEnum::UM_INC_ADMIN,WorkerAccountLogEnum::INC);
-            }
-            $work->save();
 
 
             Db::commit();
             Db::commit();
         } catch (\Exception $e) {
         } catch (\Exception $e) {

+ 1 - 1
app/common/command/AutomaticDispatch.php

@@ -73,7 +73,7 @@ class AutomaticDispatch extends Command
 
 
         $list = ServiceWork::alias("a")
         $list = ServiceWork::alias("a")
             ->leftJoin('service_work_anomalous b','a.id = b.work_id')
             ->leftJoin('service_work_anomalous b','a.id = b.work_id')
-            ->where('a.work_status','<',3)
+            ->where('a.work_status','<=',3)
             ->where('a.service_status','<',2)
             ->where('a.service_status','<',2)
             ->where('a.refund_approval',0)
             ->where('a.refund_approval',0)
             ->where('a.work_pay_status',1)
             ->where('a.work_pay_status',1)