-
Notifications
You must be signed in to change notification settings - Fork 0
/
log_click.go
125 lines (122 loc) · 3.53 KB
/
log_click.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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package OrgMap
import (
"errors"
BaseConfig "github.com/fotomxq/weeekj_core/v5/base/config"
CoreFilter "github.com/fotomxq/weeekj_core/v5/core/filter"
CoreSQL "github.com/fotomxq/weeekj_core/v5/core/sql"
CoreSQLFrom "github.com/fotomxq/weeekj_core/v5/core/sql/from"
FinanceDeposit "github.com/fotomxq/weeekj_core/v5/finance/deposit"
Router2SystemConfig "github.com/fotomxq/weeekj_core/v5/router2/system_config"
"time"
)
// ArgsClickMapAd 触发点击参数
type ArgsClickMapAd struct {
//查看时间
CreateAt string `db:"create_at" json:"createAt" check:"isoTime"`
//完成时间
FinishAt string `db:"finish_at" json:"finishAt" check:"isoTime"`
//点击用户
ClickUserID int64 `db:"click_user_id" json:"clickUserID" check:"id"`
//地图ID
MapID int64 `db:"map_id" json:"mapID" check:"id"`
}
// ClickMapAd 触发点击
func ClickMapAd(args *ArgsClickMapAd) (successMsg string, errCode string, err error) {
//获取时间
var createAt, finishAt time.Time
createAt, err = CoreFilter.GetTimeByISO(args.CreateAt)
if err != nil {
errCode = "err_time"
return
}
finishAt, err = CoreFilter.GetTimeByISO(args.FinishAt)
if err != nil {
errCode = "err_time"
return
}
//获取数据集
var mapData FieldsMap
mapData, err = GetMapByID(&ArgsGetMapByID{
ID: args.MapID,
})
if err != nil {
errCode = "err_no_data"
return
}
//检查最短时间
//if mapData.ViewTimeLimit < finishAt.Unix()-createAt.Unix() {
// errCode = "err_limit"
// err = errors.New("limit time")
// return
//}
//检查点击量是否超出
if mapData.AdCountLimit < mapData.AdCount {
errCode = "err_limit"
err = errors.New("ad count limit less")
return
}
//检查记录
var id int64
err = Router2SystemConfig.MainDB.Get(&id, "SELECT id FROM org_map_ad_log WHERE click_user_id = $1 AND map_id = $2", args.ClickUserID, args.MapID)
if err == nil && id > 0 {
errCode = "replace"
err = errors.New("replace click ad")
return
}
// 开始处理点击奖励
// 平台设置用户点击奖励金额
var orgMapClickUnitRandPrice int64
orgMapClickUnitRandPrice, err = BaseConfig.GetDataInt64("OrgMapClickUnitRandPrice")
if err != nil {
errCode = "err_config"
return
}
_, errCode, err = FinanceDeposit.SetByFrom(&FinanceDeposit.ArgsSetByFrom{
UpdateHash: "",
CreateInfo: CoreSQLFrom.FieldsFrom{
System: "user",
ID: args.ClickUserID,
Mark: "",
Name: "",
},
FromInfo: CoreSQLFrom.FieldsFrom{
System: "org",
ID: 0,
Mark: "",
Name: "",
},
ConfigMark: "savings",
AppendSavePrice: orgMapClickUnitRandPrice,
})
if err != nil {
errCode = "deposit_finance_err"
return
}
//添加记录
_, err = CoreSQL.CreateOne(Router2SystemConfig.MainDB.DB, "INSERT INTO org_map_ad_log(create_at, finish_at, org_id, user_id, click_user_id, map_id, count, integral_count, bonus) VALUES(:create_at, :finish_at, :org_id, :user_id, :click_user_id, :map_id, :count, :integral_count, :bonus)", map[string]interface{}{
"create_at": createAt,
"finish_at": finishAt,
"org_id": mapData.OrgID,
"user_id": mapData.UserID,
"click_user_id": args.ClickUserID,
"map_id": args.MapID,
"count": 0,
"integral_count": 1,
"bonus": orgMapClickUnitRandPrice,
})
if err != nil {
errCode = "err_insert"
return
}
//变更统计次数
_, err = CoreSQL.UpdateOne(Router2SystemConfig.MainDB.DB, "UPDATE org_map SET ad_count = ad_count + 1 WHERE id = :id", map[string]interface{}{
"id": args.MapID,
})
if err != nil {
errCode = "err_update"
return
}
successMsg = "ok"
//反馈
return
}