-
Notifications
You must be signed in to change notification settings - Fork 0
/
IMP_Set.go
111 lines (82 loc) · 1.98 KB
/
IMP_Set.go
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
package adv
import (
"bytes"
"github.com/hailongz/golang/db"
"github.com/hailongz/golang/dynamic"
"github.com/hailongz/golang/micro"
)
func (S *Service) Set(app micro.IContext, task *SetTask) (*Adv, error) {
conn, prefix, err := app.GetDB("wd")
if err != nil {
return nil, err
}
//查询是否存在
v := Adv{}
sql := bytes.NewBuffer(nil)
args := []interface{}{}
sql.WriteString(" WHERE id = ? AND channel = ? AND position = ?")
args = append(args, task.Id)
args = append(args, task.Channel)
args = append(args, task.Position)
rs, err := db.Query(conn, &v, prefix, sql.String(), args...)
if err != nil {
return nil, err
}
defer rs.Close()
if rs.Next() {
scaner := db.NewScaner(&v)
err = scaner.Scan(rs)
if err != nil {
return nil, err
}
} else {
return nil, micro.NewError(ERROR_NOT_FOUND, "未找到广告")
}
//修改广告
keys := map[string]bool{}
if task.Title != "" {
v.Title = dynamic.StringValue(task.Title, "")
keys["title"] = true
}
if task.Channel != "" {
v.Channel = dynamic.StringValue(task.Channel, "")
keys["channel"] = true
}
if task.Position != 0 {
v.Position = int32(dynamic.IntValue(task.Position, 0))
}
keys["position"] = true
if task.Description != "" {
v.Description = dynamic.StringValue(task.Description, "")
keys["description"] = true
}
if task.Pic != "" {
v.Pic = dynamic.StringValue(task.Pic, "")
keys["pic"] = true
}
if task.Link != "" {
v.Link = dynamic.StringValue(task.Link, "")
keys["link"] = true
}
if task.Starttime != 0 {
v.Starttime = dynamic.IntValue(task.Starttime, 0)
keys["starttime"] = true
}
if task.Endtime != 0 {
v.Endtime = dynamic.IntValue(task.Endtime, 0)
keys["endtime"] = true
}
if task.Linktype != 0 {
v.Linktype = int32(dynamic.IntValue(task.Linktype, 0))
keys["linktype"] = true
}
if task.Sort != 0 {
v.Sort = task.Sort
keys["sort"] = true
}
_, err = db.UpdateWithKeys(conn, &v, prefix, keys)
if err != nil {
return nil, err
}
return &v, nil
}