Browse Source

Merge branch 'master' of http://git.huxiukeji.com/lizhen/lanjingling

# Conflicts:
#	public/assets/js/backend/company.js
lizhen_gitee 1 year ago
parent
commit
fa9e8cb1d1

+ 1 - 1
application/api/controller/Companys.php

@@ -243,7 +243,7 @@ class Companys extends Api
                 'address'  => $this->request->param('address', ''),
                 'full_address'  => $fullAddress,
                 'aptitude_images'  => $this->request->param('aptitude_images', ''),
-                'status' => 0,
+                'status' => -1,
             ];
             if (empty($id)) {
                 $data['image'] = '/assets/img/avatar.png';//默认头像

+ 6 - 5
application/api/controller/Order.php

@@ -28,7 +28,7 @@ class Order extends Api
 
             $o = 'order';
             $st = 'servicetype';
-            $field = $o.'.id,orderno,server_time,server_info,server_images,status,user_mobile,'.$o.'.user_car_number,'.
+            $field = $o.'.id,check_code,orderno,server_time,server_info,server_images,status,user_mobile,'.$o.'.user_car_number,'.
                 $o.'.createtime,cancel_time,cancel_reason,pay_fee,appen_fee,finish_time,'.$st.'.title as `service_title`,paytype';
             $where[$o.'.user_id'] = $this->auth->id;
             $where[$o.'.company_id'] = $this->auth->company_id;
@@ -71,7 +71,7 @@ class Order extends Api
             $st= 'servicetype';
             $p = 'package';
 
-            $field = $o.'.id,server_info,'.$o.'.servicetype_id,'.$st.'.title as `service_title`,'.$p.'.title as `package_title`,'.
+            $field = $o.'.id,check_code,server_info,'.$o.'.servicetype_id,'.$st.'.title as `service_title`,'.$p.'.title as `package_title`,'.
             $p.'.images as `package_images`,hexiao_time';
 
             $where[$o.'.user_id'] = $this->auth->id;
@@ -120,7 +120,7 @@ class Order extends Api
             $st = 'servicetype';
             $where[$o.'.user_id'] = $this->auth->id;
             $where[$o.'.id'] = $id;
-            $field = $o.'.id,orderno,server_time,server_info,server_images,status,user_mobile,'.$o.'.user_car_number,'.
+            $field = $o.'.id,check_code,orderno,server_time,server_info,server_images,status,user_mobile,'.$o.'.user_car_number,'.
                 $o.'.createtime,cancel_time,cancel_reason,pay_fee,appen_fee,finish_time,'.$st.'.title as `service_title`,paytype';
             $result = $this->model->alias($o)->field($field)
                 ->join($st,$st.'.id = '.$o.'.servicetype_id','LEFT')
@@ -180,11 +180,11 @@ class Order extends Api
                 throw new Exception('未找到相关信息');
             }
 
-            $text = 'hexiaoorder_'.$id;
+            $text = 'order_'.$modelData['check_code'];
             $logo = '';
             $filRoute = '/uploads/temp/';
             $saveDir = ROOT_PATH.'public'.DS.'uploads'.DS.'temp'.DS;
-            $fileStr = md5('order_'.$id);
+            $fileStr = md5($text);
             $localpng = $saveDir.$fileStr.'.png';
             //验证存在直接返回
             $userCouponsUrl = $_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['HTTP_HOST'].$filRoute.$fileStr.'.png';
@@ -193,6 +193,7 @@ class Order extends Api
             }
             $result = [
                 'url' => $userCouponsUrl,
+                'check_code' => $modelData['check_code'],
             ];
             $this->success('获取成功',$result);
         } catch (Exception $e) {

+ 12 - 0
application/api/controller/Pay.php

@@ -5,6 +5,7 @@ namespace app\api\controller;
 use app\common\controller\Api;
 use app\common\service\OrderService;
 use app\common\service\UserService;
+use fast\Random;
 use think\Db;
 use addons\epay\library\Service;
 use think\Exception;
@@ -303,9 +304,20 @@ class Pay extends Api
             ->join($c,$c.'.id = '.$rg.'.coupon_id','LEFT')->where($rechargeGiftWhere)->select();
         if (!empty($rechargeGift)) {
             $time = time();
+            foreach ($rechargeGift as $k => $v) {
+                $checkCode[] = Random::alnum(8);
+            }
+            $orderService = new OrderService();//防重复
+            $checkCodeRes = $orderService->getCheckCoupons($checkCode);
             foreach ($rechargeGift as $key => $value) {
                 $endtime = $time + 86400 * $value['days'];
+                if ($checkCodeRes['status']) {
+                    $checkCodeStr = isset($checkCodeRes['data'][$key]) ? $checkCodeRes['data'][$key] : '';
+                } else {
+                    $checkCodeStr = Random::alnum(8);
+                }
                 $userCouponsData[] = [
+                    'check_code' => $checkCodeStr,
                     'user_id' => $orderInfo['user_id'],
                     'company_id' => $orderInfo['company_id'],
                     'coupons_id' => $value['coupon_id'],

+ 4 - 3
application/api/controller/UserCoupons.php

@@ -28,7 +28,7 @@ class UserCoupons extends Api
             $status = $this->request->param('status',1);//状态:1待使用,2已失效
             $userId = $this->auth->id;
             $companyId = $this->auth->company_id;
-            $field = 'id,coupon_name,coupon_info,endtime,number,remain';
+            $field = 'id,coupon_name,coupon_info,endtime,number,remain,check_code';
             $where['user_id'] = $userId;
             $where['company_id'] = $companyId;
             $whereOr = [];
@@ -76,11 +76,11 @@ class UserCoupons extends Api
             if ($modelData['endtime'] < time() || $modelData['remain'] < 1) {
                 throw new Exception('该券已无法使用');
             }
-            $text = 'hexiaocoupon_'.$id;
+            $text = 'coupon_'.$modelData['check_code'];
             $logo = '';
             $filRoute = '/uploads/temp/';
             $saveDir = ROOT_PATH.'public'.DS.'uploads'.DS.'temp'.DS;
-            $fileStr = md5('coupon_'.$id);
+            $fileStr = md5($text);
             $localpng = $saveDir.$fileStr.'.png';
             //验证存在直接返回
             $userCouponsUrl = $_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['HTTP_HOST'].$filRoute.$fileStr.'.png';
@@ -89,6 +89,7 @@ class UserCoupons extends Api
             }
             $result = [
                 'url' => $userCouponsUrl,
+                'check_code' => $modelData['check_code'],
             ];
             $this->success('获取成功',$result);
         } catch (Exception $e) {

+ 1 - 1
application/api/controller/company/Coupon.php

@@ -95,7 +95,7 @@ class Coupon extends Apic
         }
 
         $action = $code[0];
-        $id = intval($code[1]);
+        $id = $code[1];
 
         if($action != 'coupon' && $action != 'order'){
             $this->error('错误的核销码');

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

@@ -2,6 +2,7 @@
 namespace app\common\service;
 
 use addons\epay\library\Service;
+use fast\Random;
 use think\Db;
 use think\Exception;
 
@@ -188,7 +189,16 @@ class OrderService
             $userCarWhere['id'] = $carId;
             $userCar = Db::name('user_car')->where($userCarWhere)->find();
             //生成订单
+            $checkCode[] = Random::alnum(8);
+            $orderService = new OrderService();//防重复
+            $checkCodeRes = $orderService->getCheckOrder($checkCode);
+            if ($checkCodeRes['status']) {
+                $checkCodeStr = isset($checkCodeRes['data'][0]) ? $checkCodeRes['data'][0] : '';
+            } else {
+                $checkCodeStr = Random::alnum(8);
+            }
             $orderData = [
+                'check_code'      => $checkCodeStr,
                 'orderno'         => createUniqueNo('O', $userId),//订单号
                 'ordertype'       => 3,//类型:1=预约下单,2=在线下单,3=套餐订单
                 'company_id'      => $companyId,//门店ID
@@ -269,4 +279,66 @@ class OrderService
         }
         return $result;
     }
+
+    /**
+     * 查看是否重复-卡券
+     * @return void
+     */
+    public function getCheckCoupons($checkCode=[])
+    {
+        try {
+            if (!empty($checkCode)) {
+                $where['check_code'] = ['in', $checkCode];
+                $userCoupons = Db::name('user_coupon')->field('id,check_code')->where($where)->select();
+                if (!empty($userCoupons)) {
+                    $checkCodeDbArr = array_column($userCoupons,'check_code');
+                    foreach ($checkCode as $key => $code) {
+                        if (in_array($code,$checkCodeDbArr)) {
+                            $checkCode[$key] = Random::alnum(8);
+                        }
+                    }
+                    $checkCodeRes = $this->getCheckCoupons($checkCode);
+                    if ($checkCodeRes['status']) {
+                        $checkCode = $checkCodeRes['data'];
+                    }
+                }
+            }
+            $result['data'] = $checkCode;
+        } catch (Exception $e) {
+            $result['status'] = 0;
+            $result['msg'] = $e->getMessage();
+        }
+        return $result;
+    }
+
+    /**
+     * 查看是否重复-订单
+     * @return void
+     */
+    public function getCheckOrder($checkCode=[])
+    {
+        try {
+            if (!empty($checkCode)) {
+                $where['check_code'] = ['in', $checkCode];
+                $userCoupons = Db::name('order')->field('id,check_code')->where($where)->select();
+                if (!empty($userCoupons)) {
+                    $checkCodeDbArr = array_column($userCoupons,'check_code');
+                    foreach ($checkCode as $key => $code) {
+                        if (in_array($code,$checkCodeDbArr)) {
+                            $checkCode[$key] = Random::alnum(8);
+                        }
+                    }
+                    $checkCodeRes = $this->getCheckOrder($checkCode);
+                    if ($checkCodeRes['status']) {
+                        $checkCode = $checkCodeRes['data'];
+                    }
+                }
+            }
+            $result['data'] = $checkCode;
+        } catch (Exception $e) {
+            $result['status'] = 0;
+            $result['msg'] = $e->getMessage();
+        }
+        return $result;
+    }
 }