Shared.class.php
6.35 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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
<?php
class Shared {
private $activity = null;
function __construct($activity) {
if(empty($activity) || $activity['type'] != 'shared') {
trigger_error('参数错误, 活动类型不符合', E_USER_ERROR);
}
$this->activity = $activity;
}
/**Shared:1.获取助力记录列表
* @param array $filters
* owner int 接受助力用户
* helper int 发起助力的用户
*
* @param int $pindex
* @param int $psize
* @param int $total
* @return ds(array)
*/
public function getAllHelps($filters = array(), $pindex = 0, $psize = 15, &$total = 0) {
global $_W;
$condition = '`uniacid`=:uniacid AND `activity`=:activity';
$pars = array();
$pars[':uniacid'] = $_W['uniacid'];
$pars[':activity'] = $this->activity['actid'];
if(!empty($filters['owner'])) {
$condition .= ' AND `owner`=:owner';
$pars[':owner'] = $filters['owner'];
}
if(!empty($filters['helper'])) {
$condition .= ' AND `helper`=:helper';
$pars[':helper'] = $filters['helper'];
}
$sql = 'FROM ' . tablename('wwx_fxxt_red_helps') . "WHERE {$condition}";
if($pindex > 0) {
$total = pdo_fetchcolumn("SELECT COUNT(*) {$sql}", $pars);
$start = ($pindex - 1) * $psize;
$sql .= " ORDER BY `id` DESC LIMIT {$start},{$psize}";
$ds = pdo_fetchall("SELECT * {$sql}", $pars);
} else {
$ds = pdo_fetchall("SELECT * {$sql}", $pars);
}
return $ds;
}
/**Shared:2.获取指定用户的被助力总数
*
* @param $uid 用户编号
* @return int
*/
public function helpsCount($uid) {
global $_W;
$pars = array();
$pars[':uniacid'] = $_W['uniacid'];
$pars[':activity'] = $this->activity['actid'];
$pars[':owner'] = $uid;
$sql = 'SELECT COUNT(*) FROM ' . tablename('wwx_fxxt_red_helps') . 'WHERE `uniacid`=:uniacid AND `activity`=:activity AND `owner`=:owner';
$total = pdo_fetchcolumn($sql, $pars);
return $total;
}
/**Shared:3.查询一条领取记录
* 可以按照用户, 或者领取记录编号查询
* @param int $uid 用户编号
* @param bool $isRid 如果true, 则按照领取编号查询, 否则(默认)按照用户编号查询
* @return array
*/
public function getOneRecord($uid, $isRid = false) {
global $_W;
$pars = array();
$pars[':uniacid'] = $_W['uniacid'];
if($isRid){
$pars[':id'] = $uid;
$sql = 'SELECT * FROM ' . tablename('wwx_fxxt_red_records') . ' WHERE `uniacid` =:uniacid AND `id` =:id';
} else {
$pars[':uid'] = intval($uid);
$sql = 'SELECT * FROM ' . tablename('wwx_fxxt_red_records') . ' WHERE `uniacid` =:uniacid AND `uid` =:uid';
}
$ret= pdo_fetch($sql, $pars);
if(!empty($ret)) {
return $ret;
} else {
return array();
}
}
/**Shared:4.增加一次助力记录
* 如果owner, helper 已经存在, 失败
* id uniacid owner helper dateline
*
* @param $entity 助力结构 owner, helper, dateline
* @return int|error
*/
public function createHelp($entity) {
global $_W;
$rec = array_elements(array('owner', 'helper', 'dateline'), $entity);
$rec['uniacid'] = $_W['uniacid'];
$rec['activity'] = $this->activity['actid'];
require_once WWX_FXXT_ROOT . '/class/Fans.class.php';
$f = new Fans();
$ownerExists = $f->getOne($entity['owner']);/**FANS:3.根据用户UID或OPENID查询记录中的用户信息**/
$helperExists = $f->getOne($entity['helper']);/**FANS:3.根据用户UID或OPENID查询记录中的用户信息**/
if(!empty($ownerExists) && !empty($helperExists)){
$pars = array();
$pars[':uniacid'] = $_W['uniacid'];
$pars[':activity'] = $this->activity['actid'];
$pars[':helper'] = $rec['helper'];
if(!empty($this->activity['tag']['limit'])) {
$sql = 'SELECT COUNT(*) FROM ' . tablename('wwx_fxxt_red_helps') . ' WHERE `uniacid`=:uniacid AND `activity`=:activity AND `helper` =:helper';
$count = pdo_fetchcolumn($sql, $pars);
if($this->activity['tag']['limit'] <= $count) {
return error(-1, "超过次数限制, 本次活动限制每人帮助好友次数不能超过 {$this->activity['tag']['limit']} 次");
}
}
$pars[':owner'] = $rec['owner'];
$sql = 'SELECT * FROM ' . tablename('wwx_fxxt_red_helps') . ' WHERE `uniacid`=:uniacid AND `activity`=:activity AND `owner`=:owner AND `helper` =:helper';
$exists = pdo_fetch($sql, $pars);
if(!empty($exists)) {
return error(-3, '已经帮助过这位好友了');
}
$ret = pdo_insert('wwx_fxxt_red_helps', $rec);
if(!empty($ret)) {
return pdo_insertid();
} else {
return error(-2, '数据保存失败, 请稍后重试');
}
} else {
return error(-1, '用户不存在');
}
}
/**Shared:5.获取指定用户助力特定用户的名次
* @param $owner 接受助力的用户
* @param $helper 发起助力的用户
* @return int 返回大于等于0的整数, 如果没有助力过, 返回0
*/
public function getHelpRank($owner, $helper) {
global $_W;
$pars = array();
$pars[':uniacid'] = $_W['uniacid'];
$pars[':activity'] = $this->activity['actid'];
$pars[':owner'] = $owner;
$pars[':helper'] = $helper;
$sql = 'SELECT * FROM ' . tablename('wwx_fxxt_red_helps') . 'WHERE `uniacid`=:uniacid AND `activity`=:activity AND `owner`=:owner AND `helper`=:helper';
$exists = pdo_fetch($sql, $pars);
if(empty($exists)) {
return 0;
} else {
$sql = 'SELECT COUNT(*) FROM ' . tablename('wwx_fxxt_red_helps') . "WHERE `uniacid`=:uniacid AND `activity`=:activity AND `owner`=:owner AND `dateline` < {$exists['dateline']}";
unset($pars[':helper']);
$total = pdo_fetchcolumn($sql, $pars);
return $total + 1;
}
}
}