|
@@ -3,21 +3,15 @@
|
|
|
namespace app\admin\controller\egg;
|
|
|
|
|
|
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
|
|
|
*/
|
|
|
class Gift extends Backend
|
|
|
{
|
|
|
- protected $searchFields = 'gift_id,gift_name';
|
|
|
+
|
|
|
/**
|
|
|
* Gift模型对象
|
|
|
* @var \app\admin\model\egg\Gift
|
|
@@ -33,100 +27,7 @@ class Gift extends Backend
|
|
|
|
|
|
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中对应的方法复制到当前控制器,然后进行修改
|
|
|
*/
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
- * 列表
|
|
|
+ * 查看
|
|
|
*/
|
|
|
public function index()
|
|
|
{
|
|
|
+ //当前是否为关联查询
|
|
|
+ $this->relationSearch = true;
|
|
|
//设置过滤方法
|
|
|
$this->request->filter(['strip_tags', 'trim']);
|
|
|
if ($this->request->isAjax()) {
|
|
@@ -150,15 +54,62 @@ class Gift extends Backend
|
|
|
list($where, $sort, $order, $offset, $limit) = $this->buildparams();
|
|
|
|
|
|
$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');
|
|
|
+ foreach ($list as $row) {
|
|
|
+
|
|
|
+ $row->getRelation('eggjackpot')->visible(['name']);
|
|
|
+ }
|
|
|
+
|
|
|
$result = array("total" => $list->total(), "rows" => $list->items(), "extend" => ['total_price' => $totalMoney]);
|
|
|
|
|
|
return json($result);
|
|
|
}
|
|
|
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();
|
|
|
+ }
|
|
|
+
|
|
|
}
|