AddController.class.php
2.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php
/**
* 【积分抽奖-后台】添加活动接口
*
* User: houyingcai
* Date: 2017-11-02
*/
namespace Apicp\Controller\Activity;
use Common\Common\AttachOperation;
use Common\Common\Constant;
use Common\Service\ActivityService;
use Common\Service\PrizeService;
use Common\Service\RightService;
use Think\Exception;
class AddController extends \Apicp\Controller\AbstractController
{
public function Index_post()
{
$activity = I('post.');
$activityServ = new ActivityService();
// 验证数据
$activityServ->validate_for_data($activity);
// 初始化活动最后更新时间
$activity['last_time'] = MILLI_TIME;
$rightServ = new RightService();
$prizeServ = new PrizeService();
$ac_id = 0;
$right = [];
try {
$activityServ->start_trans();
// 活动权限范围
$right = $activity['right'];
// 活动奖品列表
$prize_list = $activity['prize_list'];
unset($activity['right'], $activity['prize_list']);
// 活动数据入库
$ac_id = $activityServ->insert($activity);
// 如果不是全公司
if ($activity['is_all'] != Constant::IS_ALL_TRUE && $ac_id) {
// 权限入库
$rightServ->save_right_data($right, $ac_id);
}
// 奖品信息入库
$prizeServ->save_prize_data($prize_list, $ac_id);
$activityServ->commit();
} catch (Exception $e) {
$activityServ->rollback();
E('_ERR_ACTIVITY_ADD_FAILED');
}
// 开启发送消息 && 状态为发布状态 && 活动ID为真
if (Constant::ACTIVITY_PUBLISH == $activity['activity_status'] && Constant::PUSH_MSG_TRUE == $activity['is_push_msg'] && $ac_id) {
$activity['right'] = $right;
// 组装发送消息的数据
$params = $activityServ->assemble_msg_params($ac_id, $activity);
// 发送消息
$activityServ->send_msg($params, Constant::MSG_ACTIVITY_PUBLISH);
}
// 附件操作处理
$attach_serv = new AttachOperation();
$attach_ids = array_unique(array_column($prize_list, 'cover_id'));
// 过滤默认奖品封面图
$default_key = array_search('451C9D000A6924900859E1543159A914', $attach_ids);
unset($attach_ids[$default_key]);
$attach_serv->insert_attach(
APP_DIR,
'activity',
$ac_id,
['attach_ids' => $attach_ids]
);
$this->_result = [
'ac_id' => $ac_id,
'link' => 'Lottery/Frontend/Index/Index/Index/ac_id/' . $ac_id,
];
return true;
}
}