|  | @@ -3,21 +3,15 @@
 | 
											
												
													
														|  |  namespace app\admin\controller\egg;
 |  |  namespace app\admin\controller\egg;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  use app\common\controller\Backend;
 |  |  use app\common\controller\Backend;
 | 
											
												
													
														|  | -use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
 |  | 
 | 
											
												
													
														|  | -use PhpOffice\PhpSpreadsheet\Reader\Csv;
 |  | 
 | 
											
												
													
														|  | -use PhpOffice\PhpSpreadsheet\Reader\Xls;
 |  | 
 | 
											
												
													
														|  | -use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
 |  | 
 | 
											
												
													
														|  | -use think\Exception;
 |  | 
 | 
											
												
													
														|  | -use think\exception\PDOException;
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | 
 |  | +use think\Db;
 | 
											
												
													
														|  |  /**
 |  |  /**
 | 
											
												
													
														|  | - *
 |  | 
 | 
											
												
													
														|  | 
 |  | + * 奖池礼物管理
 | 
											
												
													
														|  |   *
 |  |   *
 | 
											
												
													
														|  |   * @icon fa fa-circle-o
 |  |   * @icon fa fa-circle-o
 | 
											
												
													
														|  |   */
 |  |   */
 | 
											
												
													
														|  |  class Gift extends Backend
 |  |  class Gift extends Backend
 | 
											
												
													
														|  |  {
 |  |  {
 | 
											
												
													
														|  | -    protected $searchFields = 'gift_id,gift_name';
 |  | 
 | 
											
												
													
														|  | 
 |  | +    
 | 
											
												
													
														|  |      /**
 |  |      /**
 | 
											
												
													
														|  |       * Gift模型对象
 |  |       * Gift模型对象
 | 
											
												
													
														|  |       * @var \app\admin\model\egg\Gift
 |  |       * @var \app\admin\model\egg\Gift
 | 
											
										
											
												
													
														|  | @@ -33,100 +27,7 @@ class Gift extends Backend
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      public function import()
 |  |      public function import()
 | 
											
												
													
														|  |      {
 |  |      {
 | 
											
												
													
														|  | -        $file = $this->request->request('file');
 |  | 
 | 
											
												
													
														|  | -        if (!$file) {
 |  | 
 | 
											
												
													
														|  | -            $this->error(__('Parameter %s can not be empty', 'file'));
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        $filePath = ROOT_PATH . DS . 'public' . DS . $file;
 |  | 
 | 
											
												
													
														|  | -        if (!is_file($filePath)) {
 |  | 
 | 
											
												
													
														|  | -            $this->error(__('No results were found'));
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        //实例化reader
 |  | 
 | 
											
												
													
														|  | -        $ext = pathinfo($filePath, PATHINFO_EXTENSION);
 |  | 
 | 
											
												
													
														|  | -        if (!in_array($ext, ['csv', 'xls', 'xlsx'])) {
 |  | 
 | 
											
												
													
														|  | -            $this->error(__('Unknown data format'));
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        if ($ext === 'csv') {
 |  | 
 | 
											
												
													
														|  | -            $file = fopen($filePath, 'r');
 |  | 
 | 
											
												
													
														|  | -            $filePath = tempnam(sys_get_temp_dir(), 'import_csv');
 |  | 
 | 
											
												
													
														|  | -            $fp = fopen($filePath, "w");
 |  | 
 | 
											
												
													
														|  | -            $n = 0;
 |  | 
 | 
											
												
													
														|  | -            while ($line = fgets($file)) {
 |  | 
 | 
											
												
													
														|  | -                $line = rtrim($line, "\n\r\0");
 |  | 
 | 
											
												
													
														|  | -                $encoding = mb_detect_encoding($line, ['utf-8', 'gbk', 'latin1', 'big5']);
 |  | 
 | 
											
												
													
														|  | -                if ($encoding != 'utf-8') {
 |  | 
 | 
											
												
													
														|  | -                    $line = mb_convert_encoding($line, 'utf-8', $encoding);
 |  | 
 | 
											
												
													
														|  | -                }
 |  | 
 | 
											
												
													
														|  | -                if ($n == 0 || preg_match('/^".*"$/', $line)) {
 |  | 
 | 
											
												
													
														|  | -                    fwrite($fp, $line . "\n");
 |  | 
 | 
											
												
													
														|  | -                } else {
 |  | 
 | 
											
												
													
														|  | -                    fwrite($fp, '"' . str_replace(['"', ','], ['""', '","'], $line) . "\"\n");
 |  | 
 | 
											
												
													
														|  | -                }
 |  | 
 | 
											
												
													
														|  | -                $n++;
 |  | 
 | 
											
												
													
														|  | -            }
 |  | 
 | 
											
												
													
														|  | -            fclose($file) || fclose($fp);
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -            $reader = new Csv();
 |  | 
 | 
											
												
													
														|  | -        } elseif ($ext === 'xls') {
 |  | 
 | 
											
												
													
														|  | -            $reader = new Xls();
 |  | 
 | 
											
												
													
														|  | -        } else {
 |  | 
 | 
											
												
													
														|  | -            $reader = new Xlsx();
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -        //加载文件
 |  | 
 | 
											
												
													
														|  | -        $insert = [];
 |  | 
 | 
											
												
													
														|  | -        try {
 |  | 
 | 
											
												
													
														|  | -            if (!$PHPExcel = $reader->load($filePath)) {
 |  | 
 | 
											
												
													
														|  | -                $this->error(__('Unknown data format'));
 |  | 
 | 
											
												
													
														|  | -            }
 |  | 
 | 
											
												
													
														|  | -            $currentSheet = $PHPExcel->getSheet(0);  //读取文件中的第一个工作表
 |  | 
 | 
											
												
													
														|  | -            $allColumn = $currentSheet->getHighestDataColumn(); //取得最大的列号
 |  | 
 | 
											
												
													
														|  | -            $allRow = $currentSheet->getHighestRow(); //取得一共有多少行
 |  | 
 | 
											
												
													
														|  | -            $maxColumnNumber = Coordinate::columnIndexFromString($allColumn);
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -            // 获取奖池礼物表最后一条记录的ID
 |  | 
 | 
											
												
													
														|  | -            $lastId = $this->model->order('id','desc')->value('id');
 |  | 
 | 
											
												
													
														|  | -            for ($currentRow = 2; $currentRow <= $allRow; $currentRow++) {
 |  | 
 | 
											
												
													
														|  | -                $values = [];
 |  | 
 | 
											
												
													
														|  | -                for ($currentColumn = 1; $currentColumn <= $maxColumnNumber; $currentColumn++) {
 |  | 
 | 
											
												
													
														|  | -                    $val = $currentSheet->getCellByColumnAndRow($currentColumn, $currentRow)->getValue();
 |  | 
 | 
											
												
													
														|  | -                    $values[] = is_null($val) ? '' : $val;
 |  | 
 | 
											
												
													
														|  | -                }
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -                $giftInfo = \app\admin\model\gift\Gift::get($values[1]);
 |  | 
 | 
											
												
													
														|  | -                if(!$giftInfo) $this->error('礼物ID:'.$values[1].'未找到对应礼物');
 |  | 
 | 
											
												
													
														|  | -                for ($i = 0;$i<$values[2];$i++){
 |  | 
 | 
											
												
													
														|  | -                    $insert[] = [
 |  | 
 | 
											
												
													
														|  | -                        'Jackpot_id' => $values[0],
 |  | 
 | 
											
												
													
														|  | -                        'gift_id' => $values[1],
 |  | 
 | 
											
												
													
														|  | -                        'image' => $giftInfo['image'],
 |  | 
 | 
											
												
													
														|  | -                        'special' => $giftInfo['special'],
 |  | 
 | 
											
												
													
														|  | -                        'gift_name' => $giftInfo['name'],
 |  | 
 | 
											
												
													
														|  | -                        'price' => $giftInfo['price'],
 |  | 
 | 
											
												
													
														|  | -                        'prize_no' => ++$lastId
 |  | 
 | 
											
												
													
														|  | -                    ];
 |  | 
 | 
											
												
													
														|  | -                }
 |  | 
 | 
											
												
													
														|  | -            }
 |  | 
 | 
											
												
													
														|  | -        } catch (Exception $exception) {
 |  | 
 | 
											
												
													
														|  | -            $this->error($exception->getMessage());
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        if (!$insert) {
 |  | 
 | 
											
												
													
														|  | -            $this->error(__('No rows were updated'));
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -        try {
 |  | 
 | 
											
												
													
														|  | -            $this->model->saveAll($insert);
 |  | 
 | 
											
												
													
														|  | -        } catch (PDOException $exception) {
 |  | 
 | 
											
												
													
														|  | -            $msg = $exception->getMessage();
 |  | 
 | 
											
												
													
														|  | -            if (preg_match("/.+Integrity constraint violation: 1062 Duplicate entry '(.+)' for key '(.+)'/is", $msg, $matches)) {
 |  | 
 | 
											
												
													
														|  | -                $msg = "导入失败,包含【{$matches[1]}】的记录已存在";
 |  | 
 | 
											
												
													
														|  | -            };
 |  | 
 | 
											
												
													
														|  | -            $this->error($msg);
 |  | 
 | 
											
												
													
														|  | -        } catch (Exception $e) {
 |  | 
 | 
											
												
													
														|  | -            $this->error($e->getMessage());
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -        $this->success();
 |  | 
 | 
											
												
													
														|  | 
 |  | +        parent::import();
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      /**
 |  |      /**
 | 
											
										
											
												
													
														|  | @@ -134,12 +35,15 @@ class Gift extends Backend
 | 
											
												
													
														|  |       * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
 |  |       * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
 | 
											
												
													
														|  |       * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
 |  |       * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
 | 
											
												
													
														|  |       */
 |  |       */
 | 
											
												
													
														|  | 
 |  | +    
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      /**
 |  |      /**
 | 
											
												
													
														|  | -     * 列表
 |  | 
 | 
											
												
													
														|  | 
 |  | +     * 查看
 | 
											
												
													
														|  |       */
 |  |       */
 | 
											
												
													
														|  |      public function index()
 |  |      public function index()
 | 
											
												
													
														|  |      {
 |  |      {
 | 
											
												
													
														|  | 
 |  | +        //当前是否为关联查询
 | 
											
												
													
														|  | 
 |  | +        $this->relationSearch = true;
 | 
											
												
													
														|  |          //设置过滤方法
 |  |          //设置过滤方法
 | 
											
												
													
														|  |          $this->request->filter(['strip_tags', 'trim']);
 |  |          $this->request->filter(['strip_tags', 'trim']);
 | 
											
												
													
														|  |          if ($this->request->isAjax()) {
 |  |          if ($this->request->isAjax()) {
 | 
											
										
											
												
													
														|  | @@ -150,15 +54,62 @@ class Gift extends Backend
 | 
											
												
													
														|  |              list($where, $sort, $order, $offset, $limit) = $this->buildparams();
 |  |              list($where, $sort, $order, $offset, $limit) = $this->buildparams();
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |              $list = $this->model
 |  |              $list = $this->model
 | 
											
												
													
														|  | -                ->where($where)
 |  | 
 | 
											
												
													
														|  | -                ->order($sort, $order)
 |  | 
 | 
											
												
													
														|  | -                ->paginate($limit);
 |  | 
 | 
											
												
													
														|  | 
 |  | +                    ->with(['eggjackpot'])
 | 
											
												
													
														|  | 
 |  | +                    ->where($where)
 | 
											
												
													
														|  | 
 |  | +                    ->order($sort, $order)
 | 
											
												
													
														|  | 
 |  | +                    ->paginate($limit);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |              $totalMoney = $this->model->where($where)->sum('price');
 |  |              $totalMoney = $this->model->where($where)->sum('price');
 | 
											
												
													
														|  | 
 |  | +            foreach ($list as $row) {
 | 
											
												
													
														|  | 
 |  | +                
 | 
											
												
													
														|  | 
 |  | +                $row->getRelation('eggjackpot')->visible(['name']);
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |              $result = array("total" => $list->total(), "rows" => $list->items(), "extend" => ['total_price' => $totalMoney]);
 |  |              $result = array("total" => $list->total(), "rows" => $list->items(), "extend" => ['total_price' => $totalMoney]);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |              return json($result);
 |  |              return json($result);
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |          return $this->view->fetch();
 |  |          return $this->view->fetch();
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    /**
 | 
											
												
													
														|  | 
 |  | +     * 添加
 | 
											
												
													
														|  | 
 |  | +     */
 | 
											
												
													
														|  | 
 |  | +    public function add()
 | 
											
												
													
														|  | 
 |  | +    {
 | 
											
												
													
														|  | 
 |  | +        if ($this->request->isPost()) {
 | 
											
												
													
														|  | 
 |  | +            $gift_id    = $this->request->post('gift_id');
 | 
											
												
													
														|  | 
 |  | +            $jackpot_id = $this->request->post('jackpot_id');
 | 
											
												
													
														|  | 
 |  | +            $number     = $this->request->post('number');
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +            $gift_info = Db::name('gift')->where('id',$gift_id)->find();
 | 
											
												
													
														|  | 
 |  | +            if(empty($gift_info)){
 | 
											
												
													
														|  | 
 |  | +                $this->error('不存在的礼物');
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +            $data_all = [];
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +            for($i=1;$i<=$number;$i++){
 | 
											
												
													
														|  | 
 |  | +                $one = [
 | 
											
												
													
														|  | 
 |  | +                    'gift_id' => $gift_id,
 | 
											
												
													
														|  | 
 |  | +                    'image'   => $gift_info['image'],
 | 
											
												
													
														|  | 
 |  | +                    'special' => $gift_info['special'],
 | 
											
												
													
														|  | 
 |  | +                    'gift_name' => $gift_info['name'],
 | 
											
												
													
														|  | 
 |  | +                    'Jackpot_id' => $jackpot_id,
 | 
											
												
													
														|  | 
 |  | +                    'prize_no' => 0,
 | 
											
												
													
														|  | 
 |  | +                    'price' => $gift_info['price'],
 | 
											
												
													
														|  | 
 |  | +                    'is_use' => 0,
 | 
											
												
													
														|  | 
 |  | +                ];
 | 
											
												
													
														|  | 
 |  | +                $data_all[] = $one;
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +            Db::startTrans();
 | 
											
												
													
														|  | 
 |  | +            $rs = Db::name('egg_gift')->insertAll($data_all);
 | 
											
												
													
														|  | 
 |  | +            Db::commit();
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +            $this->success('添加完成');
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        return $this->view->fetch();
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  }
 |  |  }
 |