wheel-surf.js
3.91 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
/* eslint-disable array-callback-return */
const {ActWheelSurfConf, ActWheelSurfPrize, Activity, ActWheelSurfUser} = require('../../../db');
const mysqlCli = global.yoho.utils.mysqlCli;
class ActWheelSurfModel extends global.yoho.BaseModel {
constructor(ctx) {
super(ctx);
}
list() {
return Activity.findAll({where: {type: 1}});
}
create(data) {
return Activity.create(data);
}
async actDelete(id) {
await Activity.destroy({where: {id}});
await ActWheelSurfConf.destroy({where: {act_id: id}});
await ActWheelSurfPrize.destroy({where: {act_id: id}});
return true;
}
configModify(obj) {
if (obj.id) {
let where = {id: obj.id};
delete obj.id;
return ActWheelSurfConf.update(obj, {where: where});
} else {
return ActWheelSurfConf.create(obj);
}
}
configList() {
return ActWheelSurfConf.findAll();
}
configFindOne(act_id) {
return ActWheelSurfConf.findOne({where: {act_id}});
}
actInfo(act_id) {
return Activity.findOne({where: {id: act_id}});
}
prizeCreate(arr) {
return ActWheelSurfPrize.bulkCreate(arr);
}
prizeUpdate(arr) {
try {
arr.map((value) => {
let where = {id: value.id};
delete value.id;
ActWheelSurfPrize.update(value, {where: where});
});
return Promise.resolve({code: 200, result: true});
} catch (e) {
return Promise.resolve({code: 201, result: false, msg: e});
}
}
prizeFindByActId(act_id) {
return ActWheelSurfPrize.findAll({where: {act_id}});
}
prizeDelete(id) {
return ActWheelSurfPrize.destroy({where: {id}});
}
async prizeModify(obj) {
if (obj.id) {
let where = {id: obj.id};
delete obj.id;
if (obj.total) {
let prize = await ActWheelSurfPrize.findOne({where: where});
let count = obj.total - prize.total;
if (count > 0) {
await prize.increment({total_left: count});
} else if (count < 0) {
return Promise.resolve({result: false, code: 204, msg: '总数不能小于原来的总数'});
}
}
await ActWheelSurfPrize.update(obj, {where: where});
return Promise.resolve({result: true, code: 200, msg: '修改成功'});
} else {
await ActWheelSurfPrize.create(obj);
return Promise.resolve({result: true, code: 200, msg: '插入成功'});
}
}
userFind(obj) {
let pageNo = obj.pageNo || 1;
let pageSize = obj.pageSize || 20;
obj.start = (pageNo - 1) * pageSize;
obj.page = pageSize;
let sql = `select u.uid, u.act_id act_id, u.prize_id prize_id, u.create_time create_time,a.title title,p.name name,p.type type ,p.value value,p.img img
from act_wheel_surf_user u , act_wheel_surf_prize p ,activity a where u.prize_id = p.id and u.act_id =:act_id and a.id=:act_id`;
let arr = Object.keys(obj);
let countSql = `select count(1) total
from act_wheel_surf_user u , act_wheel_surf_prize p where u.prize_id = p.id and u.act_id =:act_id`;
arr.forEach(function(value, index) {
if (!obj[value]) {
return;
}
switch (value) {
case 'type':
sql += ' and p.type=:type';
countSql += ' and p.type=:type';
break;
case 'title':
sql += ' and a.title=:title';
break;
case 'uid':
sql += ' and u.uid=:uid';
countSql += ' and u.uid=:uid';
break;
case 'name':
sql += ' and p.name=:name';
countSql += ' and p.name=:name';
break;
}
if (index === arr.length - 1) {
sql += ' order by u.create_time desc limit :start, :page;';
}
});
try {
return Promise.all([mysqlCli.query(countSql, obj).then(res => {return res[0].total}), mysqlCli.query(sql, obj)]);
} catch (e) {
return Promise.reject({code: 305, result: false, msg: '服务错误,请稍等'});
}
}
}
module.exports = ActWheelSurfModel;