1 <?php
2
3 namespace Addons\Scratch\Controller;
4
5 use Home\Controller\AddonsController;
6
7 class ScratchController extends AddonsController {
8 function edit() { //编辑刮刮卡的方法
9 $id = I ( 'id' ); //获取传参的id
10 $model = $this->getModel (); //获取model数组
11
12 if (IS_POST) { //若有POST传参做下面处理
13 $Model = D ( parse_name ( get_table_name ( $model ['id'] ), 1 ) ); //获取表名并专换字符串
14 // 获取模型的字段信息
15 $Model = $this->checkAttr ( $Model, $model ['id'] ); //转换字符串格式
16 if ($Model->create () && $Model->save ()) { //如果创建数据并保存成功
17 $this->_saveKeyword ( $model, $id ); //保存关键词
18
19 $this->success ( '保存' . $model ['title'] . '成功!', U ( 'lists?model=' . $model ['name'] ) ); //显示成功并转跳
20 } else {
21 $this->error ( $Model->getError () ); //否则输出错误
22 }
23 } else {
24 $fields = get_model_attribute ( $model ['id'] ); //获取属性信息并缓存
25
26 // 获取数据
27 $data = M ( get_table_name ( $model ['id'] ) )->find ( $id );
28 $data || $this->error ( '数据不存在!' ); //若没有数据,抛出错误
29
30 $token = get_token (); //获取token
31 //验证token值
32 if (isset ( $data ['token'] ) && $token != $data ['token'] && defined ( 'ADDON_PUBLIC_PATH' )) {
33 $this->error ( '非法访问!' );
34 }
35
36 $this->assign ( 'fields', $fields );
37 $this->assign ( 'data', $data );
38 $this->meta_title = '编辑' . $model ['title']; //设置字符串
39
40 $this->_deal_data ();
41
42 $this->display ();
43 }
44 }
45 function add() { //新增方法
46 $model = $this->getModel (); //获取模型值
47 if (IS_POST) { //验证传参
48 $Model = D ( parse_name ( get_table_name ( $model ['id'] ), 1 ) ); //获取表名并专换字符串
49 // 获取模型的字段信息
50 $Model = $this->checkAttr ( $Model, $model ['id'] ); //验证字符串
51 if ($Model->create () && $id = $Model->add ()) { //如果创建保存成功
52 $this->_saveKeyword ( $model, $id ); //保存关键词
53
54 $this->success ( '添加' . $model ['title'] . '成功!', U ( 'lists?model=' . $model ['name'] ) ); //显示成功并转跳
55 } else {
56 $this->error ( $Model->getError () ); //否则报错
57 }
58 } else {
59 $fields = get_model_attribute ( $model ['id'] ); //或者获取模型中id信息并缓存
60
61 $this->assign ( 'fields', $fields ); //传参
62 $this->meta_title = '新增' . $model ['title']; //设置字符串
63
64 $this->_deal_data (); //处理公共数据
65
66 $this->display ();
67 }
68 }
69
70 // 增加或者编辑时公共部分
71 function _deal_data() {
72 //设置数组
73 $normal_tips = '插件场景限制参数说明:格式:[插件名:id],如<br/>
74 [投票:10],表示对ID为10的投票投完对能领取<br/>
75 [投票:*],表示只要投过票就可以领取<br/>
76 [微调研:15],表示完成ID为15的调研就能领取<br/>
77 [微考试:10],表示完成ID为10的考试就能领取<br/>';
78 $this->assign ( 'normal_tips', $normal_tips ); //传参给模板
79 }
80 function preview() { //预览方法
81 $this->show (); //调用显示方法显示
82 }
83 function show() { //显示方法
84 $id = $map ['target_id'] = I ( 'id' ); //设置map中的target_id值并交给id
85
86 $data = M ( 'scratch' )->find ( $id ); //在数据库中查找id,交给data
87 $this->assign ( 'data', $data ); //传值给模板显示
88 // dump($data);
89
90 // 奖项
91 $map ['addon'] = 'Scratch'; //赋值
92 $prizes = M ( 'prize' )->where ( $map )->select (); //查表
93 $this->assign ( 'prizes', $prizes ); //传值给模板显示
94
95 // 抽奖记录
96 $all_prizes = M ( 'sn_code' )->where ( $map )->order ( 'id desc' )->select ();
97 // dump ( $all_prizes );
98 foreach ( $all_prizes as $all ) { //循环数组反馈信息
99 if ($all ['prize_id'] > 0) {
100 $has [$all ['prize_id']] += 1; // 每个奖项已经中过的次数
101 $new_prizes [] = $all; // 最新中奖记录
102 $all ['uid'] == $this->mid && $my_prizes [] = $all; // 我的中奖记录
103 } else {
104 $no_count += 1; // 没有中奖的次数
105 }
106
107 // 记录我已抽奖的次数
108 $all ['uid'] == $this->mid && $my_count += 1;
109 }
110
111 $this->assign ( 'new_prizes', $new_prizes ); //交给模板显示
112 $this->assign ( 'my_prizes', $my_prizes ); //交给模板显示