cccc9c70
zhouhaihai
商城
|
1
2
|
local _M = {}
|
192b96d3
zhouhaihai
重置
|
3
4
|
local serverId = tonumber(skynet.getenv("servId"))
|
cccc9c70
zhouhaihai
商城
|
5
|
function _M.rechargeRpc(agent , data)
|
192b96d3
zhouhaihai
重置
|
6
|
|
cccc9c70
zhouhaihai
商城
|
7
8
9
10
|
local role = agent.role
local msg = MsgPack.unpack(data)
local id = msg.id
local dataSet = csvdb["shop_rechargeCsv"][id]
|
192b96d3
zhouhaihai
重置
|
11
|
local roleId = role:getProperty("id")
|
cccc9c70
zhouhaihai
商城
|
12
|
if not dataSet then return end
|
192b96d3
zhouhaihai
重置
|
13
14
15
16
17
18
19
20
21
22
23
24
25
|
--创建订单号
local orderId = redisproxy:hincrby("autoincrement_set", "order", 1)
local partnerOrderId = string.format("%d_%d_%d", serverId, roleId, orderId)
local orderKey = string.format("order:%d:%d", roleId, orderId)
redisproxy:del(orderKey)
local order = require("models.Order").new({ key = orderKey, order = partnerOrderId, rechargeId = dataSet.id })
order:create()
redisproxy:sadd(string.format("role:%d:orders", roleId), partnerOrderId)
-- 暂时忽略心跳检查
role.ignoreHeartbeat = true
|
fcb34e1f
zhouhaihai
没用的参数
|
26
|
SendPacket(actionCodes.Store_rechargeRpc, MsgPack.pack({ order = partnerOrderId }))
|
192b96d3
zhouhaihai
重置
|
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
|
return true
end
function _M.purchaseOrderResult(agent, data)
local role = agent.role
local roleId = role:getProperty("id")
local msg = MsgPack.unpack(data)
role.ignoreHeartbeat = false
local partnerOrderStr = msg.order
local _, _, orderId = string.match(partnerOrderStr, "(.+)_(.+)_(.+)")
local orderObject = require("models.Order").new({ key = string.format("order:%d:%d", roleId, orderId) })
if not orderObject:load() then
-- 订单不存在
skynet.error("cancelPurchaseRpc", string.format("order %s not exist", partnerOrderStr))
return true
end
if msg.status == "success" then
orderObject:setProperty("transactionId", msg.platformOrder or "")
return true
end
if orderObject:getProperty("finishTime") > 0 then
return true
|
cccc9c70
zhouhaihai
商城
|
54
55
|
end
|
192b96d3
zhouhaihai
重置
|
56
|
orderObject:setProperty("status", msg.status)
|
3133cb76
zhouhaihai
日志
|
57
|
|
192b96d3
zhouhaihai
重置
|
58
|
redisproxy:srem(string.format("role:%d:orders", roleId), partnerOrderStr)
|
cccc9c70
zhouhaihai
商城
|
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
return true
end
function _M.dailyBuyRpc(agent , data)
local role = agent.role
local msg = MsgPack.unpack(data)
local id = msg.id
local count = msg.count or 1
local dataSet = csvdb["shop_diamondCsv"][id]
if not dataSet then return 1 end
local dailySDC = role.dailyData:getProperty("dailySDC")
if math.illegalNum(count, 1, (dataSet.limit == 0 and math.huge or dataSet.limit - (dailySDC[id] or 0))) then return 1 end
local cost = dataSet.cost
|
2ab0d91b
zhouhaihai
每日商店删掉 type [王宇杰]
|
77
78
79
80
|
local dailySDD = role.dailyData:getProperty("dailySDD")
if dailySDD[id] then -- 折扣
cost = math.ceil(cost * (1 - dataSet.disount / 100))
|
cccc9c70
zhouhaihai
商城
|
81
82
|
end
|
b216676d
zhouhaihai
log
|
83
|
if not role:costDiamond({count = cost * count, log = {desc = "dailyShop", int1 = id, int2 = count}}) then
|
cccc9c70
zhouhaihai
商城
|
84
85
86
87
88
89
90
|
return 4
end
if dataSet.limit ~= 0 then
dailySDC[id] = (dailySDC[id] or 0) + count
role.dailyData:updateProperty({field = "dailySDC", value = dailySDC})
end
|
aa5cbb54
zhouhaihai
商店bug
|
91
92
93
94
95
|
local gift = {}
for itemId, count_ in pairs(dataSet.gift:toNumMap()) do
gift[itemId] = count_ * count
end
local reward = role:award(gift, {log = {desc = "dailyShop", int1 = id, int2 = count}})
|
3133cb76
zhouhaihai
日志
|
96
97
|
role:log("role_action", {desc = "dailyShop", int1 = id, int2 = count})
|
cccc9c70
zhouhaihai
商城
|
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
|
SendPacket(actionCodes.Store_dailyBuyRpc, MsgPack.pack({reward = reward}))
return true
end
function _M.dinerBuyRpc(agent , data)
local role = agent.role
local msg = MsgPack.unpack(data)
local id = msg.id
local count = msg.count or 1
local dataSet = csvdb["shop_dinerCsv"][id]
if not dataSet then return end
local dinerS = role:getProperty("dinerS")
if math.illegalNum(count, 1, (dataSet.limit == 0 and math.huge or dataSet.limit - (dinerS[id] or 0))) then return 1 end
local cost = {[ItemId.DinerCoin] = dataSet.cost}
if not role:checkItemEnough(cost) then return end
if dataSet.limit ~= 0 then
dinerS[id] = (dinerS[id] or 0) + count
role:updateProperty({field = "dinerS", value = dinerS})
end
|
3133cb76
zhouhaihai
日志
|
124
|
role:costItems(cost, {log = {desc = "dinerShop", int1 = id, int2 = count}})
|
cccc9c70
zhouhaihai
商城
|
125
126
127
128
129
|
local gift = {}
for _id, _count in pairs(dataSet.gift:toNumMap()) do
gift[_id] = _count * count
end
|
3133cb76
zhouhaihai
日志
|
130
131
132
|
local reward = role:award(gift, {log = {desc = "dinerShop", int1 = id, int2 = count}})
role:log("role_action", {desc = "dinerShop", int1 = id, int2 = count})
|
cccc9c70
zhouhaihai
商城
|
133
134
135
136
137
138
|
SendPacket(actionCodes.Store_dinerBuyRpc, MsgPack.pack({reward = reward}))
return true
end
return _M
|