wheel-surf.js
3.42 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
/* 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}});
}
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.id, u.act_id act_id, u.prize_id prize_id, u.create_time createTime, 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);
arr.forEach(function(value, index) {
switch (obj[value]) {
case 'type':
sql += ' and p.type=:type';
break;
case 'title':
sql += ' and a.title=:title';
break;
case 'uid':
sql += ' and u.uid=:uid';
break;
case 'name':
sql += ' and p.name=:name';
break;
}
if (index === arr.length - 1) {
sql += 'order by u.create_time desc limit :start, :page;';
}
});
try {
return mysqlCli.query(sql, obj);
} catch (e) {
return Promise.reject({code: 305, result: false, msg: '服务错误,请稍等'});
}
}
}
module.exports = ActWheelSurfModel;