SignController.class.php
3.88 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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<?php
/**
* Created by PhpStorm.
* User: tangxingguo
* Date: 2017/7/24
* Time: 11:51
*/
namespace Api\Controller\Dailytask;
use Common\Common\Constant;
use Common\Common\DailytaskConfig;
use Common\Common\DataCenter;
use Common\Common\Integral;
use Common\Service\UserSignRecordService;
use Common\Service\UserSignService;
use Think\Log;
class SignController extends \Api\Controller\AbstractController
{
/**
* Sign
* @author
* @desc 签到接口
* @return array
array(
* 'integral' => 10, // 签到获得的积分值
* );
*/
public function Index_post()
{
// 签到规则
$taskConfig = &DailytaskConfig::instance();
$res = $taskConfig->getCacheData(Constant::APP_SIGN);
if (empty($res) || $res['is_open'] == Constant::DAILYTASK_IS_OPEN_FALSE) {
// 没有签到规则或者签到关闭
E('_ERR_DAILYTASK_SIGN_RULENAME_ERROR');
}
$user = $this->_login->user;
// 今天签到可以获取的积分
$signServ = new UserSignService();
$integral = $signServ->signIntegral($user['memUid']);
// 今天是否已签
$todaySign = false;
$signInfo = $signServ->get_by_conds(['uid' => $user['memUid']]);
if (!empty($signInfo) && rgmdate(MILLI_TIME, 'Y-m-d') == rgmdate($signInfo['update_time'], 'Y-m-d')) {
// 今天已签到
$todaySign = true;
}
Log::write('查询出来的积分'.print_r($integral,true));
Log::write('查询出来的数据详情'.print_r($signInfo,true));
// 数据入库
if ($integral > 0 && !$todaySign) {
// 推送积分
$this->updateIntegral($user['memUid'], $integral);
// 更新数据
$data = [
'uid' => $user['memUid'],
'username' => $user['memUsername'],
'update_time' => MILLI_TIME,
'integral' => $integral,
];
if (empty($signInfo)) {
// 添加
$data['sign_total'] = 1;
$signServ->insert($data);
} else {
// 更新
$spaceDays = $signServ->signCrackDays($signInfo['update_time']);
if ($spaceDays > 1) {
// 上次签到时间与今天时间间隔超过一天(断签)
$data['sign_total'] = 1;
} else {
$data['sign_total'] = $signInfo['sign_total'] + 1;
}
$signServ->update_by_conds(['uid' => $this->uid], $data);
}
// 添加签到记录
$recordServ = new UserSignRecordService();
$recordServ->insert(['uid' => $user['memUid']]);
// 数据中心签到埋点
$dataCenter = &DataCenter::instance();
$dataCenter->addSign($user);
// 数据中心签到埋点
}
$this->_result = ['integral' => $integral];
}
/**
* 推送积分
* @author tangxingguo
*
* @param string $uid 用户UID
* @param int $integral 积分值
*/
private function updateIntegral($uid, $integral)
{
$integralUtil = &Integral::instance();
$integralUtil->asynUpdateIntegral([
// 用户id
'memUid' => $uid,
// 积分类型 (默认mi_type0)
'miType' => 'mi_type0',
// 积分策略key,integral不为空时,传业务自己的积分规则key
'irKey' => 'dt_task',
// 积分变更说明
'remark' => "【员圈任务】" . '-' . '签到',
// 变更的积分值
'integral' => $integral,
// 应用标识(消息推送必要)
'msgIdentifier' => APP_IDENTIFIER,
'businessKey' => 'task_center',
'businessAct' => 'daliy_sign',
]);
}
}