wupengfei 2 年之前
父节点
当前提交
acd4988c0e

+ 13 - 4
application/api/controller/UserLeave.php

@@ -5,6 +5,7 @@ use app\common\model\LeaveApprove;
 use app\common\model\LeaveFlow;
 use app\common\model\LeaveInfo;
 use app\common\model\LeaveType;
+use app\common\service\LeaveService;
 use think\Db;
 use app\common\model\User;
 /**
@@ -126,15 +127,15 @@ class UserLeave extends Base
 
         $flow_info = LeaveInfo::create($request_param);//生成请假记录
         $flow_data = [];// 审批流程
-        $flow_num = 1;
+        $flow_num = 0;
         foreach ($flow as $fk=>$fv) {
             if($flow_key !== false && $flow_key >= $fk) continue;
+            $flow_num++;
             $flow_data[] = [
                 'leave_id' => $flow_info->id,
                 'approve_user' => $fv['user_id'],
                 'flow'   =>$flow_num
             ];
-            $flow_num++;
         }
         foreach ($copy as $ck=>$cv) {
             if($copy_key !== false && $copy_key >= $ck) continue;
@@ -148,6 +149,8 @@ class UserLeave extends Base
         if(!empty($flow_data)) {
             LeaveInfo::where('id',$flow_info->id)->update(['approve_num'=>$flow_num]);
             (new LeaveApprove())->saveAll($flow_data);
+        }else{
+            LeaveInfo::where('id',$flow_info->id)->update(['status'=>2]);
         }
         $this->success('请假已提交,请等待审核',['detail'=>$flow_info->toArray()]);
     }
@@ -213,7 +216,7 @@ class UserLeave extends Base
      * @return name:approve_list.remark type:string default:-- desc:审批备注
      * @return name:approve_list.user_name type:string default:-- desc:审批人
      * @return name:approve_list.headimg type:string default:-- desc:审批人头像
-     * @return name:approve_list.time type:string default:-- desc:审批用时(上一次审批完成到本次审批的时间,单位分钟
+     * @return name:approve_list.time type:string default:-- desc:审批用时(上一次审批完成到本次审批的时间,单位
      */
     public function getVacateDetail()
     {
@@ -259,10 +262,16 @@ class UserLeave extends Base
      * @header name:Authorization require:1 desc:Token
      * @param name:approve_id type:string default:-- desc:审批记录id
      * @param name:status type:string default:-- desc:审批状态
+     * @param name:remark type:string default:-- desc:审批备注
      */
     public function approveLeave()
     {
-
+        $approve_id = input('post.approve_id');
+        $status = input('post.status');
+        $remark = input('post.remark');
+        $res = LeaveService::approveLeave($approve_id,$this->user_id,$status,$remark);
+        if(!$res['ret_val']) $this->error($res['msg']);
+        $this->success('审批完成');
     }
 
 

+ 72 - 0
application/common/service/LeaveService.php

@@ -0,0 +1,72 @@
+<?php
+namespace app\common\service;
+
+
+use app\common\model\LeaveApprove;
+use app\common\model\LeaveInfo;
+use think\Db;
+use think\Exception;
+
+/**
+ * 会员请假
+ * Class LeaveService
+ */
+class LeaveService
+{
+    protected static $ret_val = true;
+    protected static $msg = '';
+
+    /**
+     * @param $approve_id  审批记录
+     * @param $status      审批状态
+     * @param $remark      审批备注
+     * @return array
+     */
+    public static function approveLeave($approve_id,$user_id,$status,$remark)
+    {
+        Db::startTrans();
+        try {
+            if(!in_array($status,[2,3]))throw new Exception('审批状态错误');
+            $approve_info = LeaveApprove::where('id',$approve_id)->find()->toArray();
+            $leave_info  = LeaveInfo::where('id',$approve_info['leave_id'])->find()->toArray();
+            if($approve_info['approve_user'] != $user_id) throw new Exception('没有审核权限');
+            if($approve_info['status'] == 0) throw new Exception('请等待审核');
+            if($approve_info['status'] != 1) throw new Exception('改请假记录已审核');
+            if($leave_info['status'] != 1)  throw new Exception('改请假记录已审核或已取消');
+            $approve_update = [];
+            $approve_update['status'] = $status;
+            $approve_update['remark'] = $remark;
+            $approve_update['approve_time'] = date('Y-m-d H:i:s');
+            if($approve_info['flow'] == 1){
+                $approve_time = time() - strtotime($approve_info['create_at']);
+            }else{
+                $before_time = LeaveApprove::where(['leave_id'=>$approve_info['leave_id'],'flow'=>$approve_info['flow'] - 1,'approve_type'=>1])->value('approve_time');
+                $approve_time = time() - strtotime($before_time);
+            }
+            $approve_update['time'] = $approve_time;
+            LeaveApprove::where('id',$approve_id)->update($approve_update);// 更新审批记录
+            $leave_data = [];
+            if($approve_info['flow'] < $leave_info['approve_num']){
+                // 更新下一级审批记录状态
+                LeaveApprove::where(['leave_id'=>$approve_info['leave_id'],'flow'=>$approve_info['flow'] + 1,'approve_type'=>1])->update(['status'=>1]);
+                // 审批流程数 + 1
+                $leave_data['cur_num'] = $leave_info['cur_num'] + 1;
+                if($status == 3) $leave_data['status'] = 3;
+            } else if($approve_info['flow'] == $leave_info['approve_num']) {
+                // 审批流程数 + 1
+                $leave_data['cur_num'] = $leave_info['cur_num'] + 1;
+                if($status == 3) $leave_data['status'] = $status;
+            }
+            LeaveInfo::where('id',$leave_info['id'])->update($leave_data);// 更新请假状态
+            Db::commit();
+        }catch (\Exception $e) {
+            Db::rollback();
+            static::$ret_val = false;
+            static::$msg = $e->getMessage();
+        }
+        return ['ret_val'=>static::$ret_val ,'msg'=>static::$msg];
+    }
+
+
+
+}

+ 0 - 140
application/common/service/OrderCallback.php

@@ -41,148 +41,8 @@ class OrderCallback
     }
 
 
-    // 商城商品订单支付逻辑
-    public static function washOrderCallBack($order_info,$pay_type)
-    {
-        $ret_val = true;$msg='';
-        Db::startTrans();
-        try{
-            // 更改订单状态
-            WashOrder::where('id',$order_info['id'])->update(['status'=>1,'pay_state'=>1,'pay_at'=>date('Y-m-d H:i:s')]);
-            Db::commit();
-        }catch (\Exception $e){
-            $ret_val = false;
-            $msg = $e->getMessage();
-            Db::rollback();
-        }
-        return ['ret_val'=>$ret_val,'msg'=>$msg];
-
-    }
-
-    // 订单金额退款
-    public static function refundMoney($refund_info =[],$order_info=[],$order_id = 0)
-    {
-        $ret = ['code'=>200,'msg'=>'退款成功'];
-        if(empty($order_info)) $order_info = GoodsOrder::where('id',$order_id)->find()->toArray();
-        if(empty($refund_info)) $refund_info = GoodsOrderRefund::where(['order_id'=>$order_id])->find()->toArray();
-        if(!in_array($order_info['refund_state'],[2,3])) return ['code'=>201,'订单退款审核状态有误'];
-        if($refund_info['refund_money'] <= 0 || $refund_info['refund_money'] > $order_info['price_total'])return ['code'=>201,'订单退款金额有误'];
-        $refund_no = $refund_info['refund_no'] ? $refund_info['refund_no'] : get_order_sn();
-        Db::startTrans();
-        try {
-            switch ($order_info['pay_type']){
-                case 1:
-                    $app = Factory::payment(config('app.wx_pay'));
-                    $result = $app->refund->byOutTradeNumber($order_info['pay_no'], $refund_no, $order_info['price_total']*100, $refund_info['refund_money']*100, ['refund_desc' => '订单退款']);
-                    if($result['return_code'] != 'SUCCESS')  throw new Exception('退款异常');
-                    if($result['result_code'] != 'SUCCESS')  throw new Exception($result['err_code_des']);
-                    // 修改退款记录状态
-                    GoodsOrderRefund::where(['id'=>$refund_info['id']])->update(['refund_no'=>$refund_no,'status'=>3]);
-                    // 修改订单状态
-                    GoodsOrder::where('id',$refund_info['order_id'])->update(['status'=>8]);
-                    // 积分退回
-                    if($order_info['integral']) UserWallet::userIntegralChange($order_info['user_id'],$order_info['integral'],'订单退款退回',9,1,$order_info['id']);
-                    // 余额退回
-                    if($order_info['balance']) UserWallet::userMoneyChange($order_info['user_id'],$order_info['balance'],'订单退款退回',2, 1,$order_info['id']);
-                    // 券暂不出来
-                    break;
-                case 2:
-                    break;
-                case 3:
-                    break;
-                case 4: //4移动支付(微信)
-                    $app = Factory::payment(config('app.app_wx'));
-                    $result = $app->refund->byOutTradeNumber($order_info['pay_no'], $refund_no, $order_info['price_total']*100, $refund_info['refund_money']*100, ['refund_desc' => '订单退款']);
-                    if($result['return_code'] != 'SUCCESS')  throw new Exception('退款异常');
-                    if($result['result_code'] != 'SUCCESS')  throw new Exception($result['err_code_des']);
-                    // 修改退款记录状态
-                    GoodsOrderRefund::where(['id'=>$refund_info['id']])->update(['refund_no'=>$refund_no,'status'=>3]);
-                    // 修改订单状态
-                    GoodsOrder::where('id',$refund_info['order_id'])->update(['status'=>8]);
-                    // 积分退回
-                    if($order_info['integral']) UserWallet::userIntegralChange($order_info['user_id'],$order_info['integral'],'订单退款退回',9,1,$order_info['id']);
-                    // 余额退回
-                    if($order_info['balance']) UserWallet::userMoneyChange($order_info['user_id'],$order_info['balance'],'订单退款退回',2, 1,$order_info['id']);
-                    // 券暂不出来
-                    break;
-                case 5:
-                    break;
-                case 6:
-                    break;
-            }
-            // 订单相关返利追回
-            self::goodsOrderRefundBack($order_info , $order_id);
-            Db::commit();
-        }catch (\Exception $e){
-            $ret['code'] = 201;
-            $ret['msg'] = $e->getMessage();
-            Db::rollback();
-        }
-        return  $ret;
-
-    }
-
-    // 商城订单退款(相关返利追回)
-    public static function goodsOrderRefundBack($order_info , $order_id)
-    {
-        if(empty($order_info)) $order_info = GoodsOrder::where('id',$order_id)->find()->toArray();
-        if($order_info['rebate_refund'] == 1) return true;
-        $where = [];
-        $where[] = ['order_id','=',$order_info['id']];
-        $where[] = ['type','in',[7,8,9]];
-        $money_list = UserMoneyInfo::where($where)->select()->toArray();
-        foreach ($money_list as $mv) {
-            UserWallet::userMoneyChange($mv['user_id'],$mv['money'],'佣金订单退款追回',10);
-        }
-        GoodsOrder::where('id',$order_info['id'])->update(['rebate_refund'=>1]);
-        return true;
-    }
 
-    //开通会员订单支付回调
-    public static function levelOrderCallBack($order_info,$pay_type)
-    {
-        $ret_val = true;$msg='';
-        Db::startTrans();
-        try{
-            // 更改订单状态
-            LevelOrder::where('id',$order_info['id'])->update(['status'=>1,'pay_state'=>1,'pay_at'=>date('Y-m-d H:i:s')]);
-            // 是否已是会员
-            $check_level = UserLevelRank::where(['user_id'=>$order_info['user_id'],'level_id'=>$order_info['level_id']])->find();
-            // 续费或是新开会员
-            $start_time = $check_level && $check_level->end_time >time() ? $check_level->start_time :time();
-            $end_time   =  $check_level && $check_level->end_time >time() ?  strtotime('+'.$order_info['month'].' month',$check_level->end_time) : strtotime('+'.$order_info['month'].' month') ;
-
-            Data::save('UserLevelRank', ['user_id'=>$order_info['user_id'],'level_id'=>$order_info['level_id'],'start_time'=>$start_time,'end_time'=>$end_time,'end_date'=>date('Y-m-d H:i:s',$end_time), 'user_id',['user_id'=>$order_info['user_id']]]);
-            // Data::save('UserLevelRank',['user_id'=>$order_info['user_id'],'level_id'=>$order_info['level_id'],'start_time'=>$start_time,'end_time'=>$end_time,'end_date'=>date('Y-m-d H:i:s',$end_time),'user_id',['user_id'=>$order_info['user_id'],'level_id'=>$order_info['level_id']]]);
-            $max_level = UserLevelRank::where([['user_id','=',$order_info['user_id']],['end_time','>',time()]])->order('level_id desc')->select()->toArray();
-            if(!empty($max_level)) User::where(['id'=>$order_info['user_id']])->update(['level_id'=>intval($max_level[0]['level_id']),'level_exp'=>$max_level[0]['end_date']]);
-            Db::commit();
-        }catch (\Exception $e){
-            $ret_val = false;
-            $msg = $e->getMessage();
-            Db::rollback();
-        }
-        return ['ret_val'=>$ret_val,'msg'=>$msg];
-    }
 
-    // 活动报名
-    public static function activityOrderCallBack($order_info)
-    {
-        $ret_val = true;$msg='';
-        Db::startTrans();
-        try{
-            // 更改订单状态
-            ActivityApply::where('id',$order_info['id'])->update(['status'=>1,'pay_state'=>1,'pay_at'=>date('Y-m-d H:i:s')]);
-            UserMessage::sendUserMessage($order_info['user_id'],'activity',1,0,0,$order_info['id']);
-            Db::commit();
-        }catch (\Exception $e){
-            $ret_val = false;
-            $msg = $e->getMessage();
-            Db::rollback();
-        }
-
-        return ['ret_val'=>$ret_val,'msg'=>$msg];
-    }
 
 
 }