소스 검색

绑定码

pengchanglu 3 년 전
부모
커밋
9babac16d9
1개의 변경된 파일43개의 추가작업 그리고 0개의 파일을 삭제
  1. 43 0
      application/admin/controller/pig/Order.php

+ 43 - 0
application/admin/controller/pig/Order.php

@@ -78,6 +78,10 @@ class Order extends Backend
             if ($params) {
                 $params = $this->preExcludeFields($params);
 
+                if ($params['num']<=0) {
+                    $this->error('生成码数量需要大于0!');
+                }
+
                 if ($this->dataLimit && $this->dataLimitFieldAutoFill) {
                     $params[$this->dataLimitField] = $this->auth->id;
                 }
@@ -92,6 +96,45 @@ class Order extends Backend
                     }
                     //pengchanglu
                     $params['orderid'] = 's'. date("YmdHis") . mt_rand(100, 999);
+                    
+                    //绑定码
+                    $list = Db::query('SELECT id FROM `pi_p_code` WHERE `admin_id` = '.$this->auth->id.' AND `orderid` = \'\' ORDER BY `id` ASC LIMIT 0,'.$params['num'].'; ');
+
+                    //$list = Db::query('SELECT id FROM `pi_p_code` WHERE `admin_id` = 4 AND `orderid` = \'\' ORDER BY `id` ASC LIMIT 0,'.$params['num'].'; ');
+                    if (!$list) {
+                        $this->error('溯源码为空,请先购买!');
+                    }
+
+                    $str = $list[0]['id'] . '-' ;//码段
+                    $step = 0;
+                    $sql = 'UPDATE `pi_p_code` SET `orderid` = \''.$params['orderid'].'\'  WHERE `id` IN (' ;
+
+                    foreach ($list as $k => $v) {
+                        $sql .= $v['id'].',';
+                        if ($k>0) {
+                            if ($list[$k-1]['id']+1 != $list[$k]['id']) {
+                                if ($step < 1) {
+                                    $str = rtrim($str, '-');
+                                    $str .= ','.$list[$k]['id'].'-' ;//码段
+                                } else {
+                                    $str .= $list[$k-1]['id'].','.$list[$k]['id'].'-' ;//码段
+                                }
+                                $step = 0;
+                            } else {
+                                $step ++;
+                            }
+                        }
+                    }
+
+                    $sql = rtrim($sql, ',');
+                    $sql .= ');';
+                    Db::execute($sql);
+                    if ($step == 0) {
+                        $params['code'] = rtrim($str, '-');
+                    } else {
+                        $params['code'] = $str.$list[count($list)-1]['id'];
+                    }
+                    
                     $result = $this->model->allowField(true)->save($params);
                     Db::commit();
                 } catch (ValidateException $e) {