pay.lua 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. --[[
  2. Descripttion:支付
  3. version:
  4. Author: Neo,Huang
  5. Date: 2022-03-14 20:21:10
  6. LastEditors: Neo,Huang
  7. LastEditTime: 2022-03-14 20:21:10
  8. --]]
  9. local timeUtil = require("utils.timeUtil")
  10. local shopAdapt = require("adapt.shopAdapt")
  11. local moduleData = require("data.module")
  12. local MODULE_NAME = "pay"
  13. local root = {}
  14. -- 支付金额:分
  15. -- 新增支付
  16. function root:user_add_pay(uid, gid, pennys)
  17. log.info("user_add_pay uid[%s] gid[%s] pennys[%s]", tostring(uid), tostring(gid), tostring(pennys))
  18. if uid == nil or gid == nil then
  19. return
  20. end
  21. -- 总金额
  22. pennys = pennys or shopAdapt:goods_get_rmb(gid)
  23. local totalAmount = moduleData:hget_int(uid, MODULE_NAME, "totalAmount")
  24. totalAmount = totalAmount + pennys
  25. moduleData:hset(uid, MODULE_NAME, "totalAmount", totalAmount)
  26. -- 购买商品列表
  27. local currTime = timeUtil.now(uid)
  28. local goodsList = moduleData:hget_json(uid, MODULE_NAME, "goodsList")
  29. table.insert(goodsList, {gid = gid, amount = pennys, time = currTime})
  30. moduleData:hset(uid, MODULE_NAME, "goodsList", goodsList)
  31. -- 当天信息
  32. local dayInfo = self:get_day_info(uid)
  33. dayInfo.lastPayTime = currTime
  34. if dayInfo.goodsList == nil then
  35. dayInfo.goodsList = {}
  36. end
  37. table.insert(dayInfo.goodsList, {gid = gid, amount = pennys, time = currTime})
  38. moduleData:hset(uid, MODULE_NAME, "dayInfo", dayInfo)
  39. return true
  40. end
  41. -- 累计支付金额
  42. function root:user_get_total_pay_count(uid)
  43. if uid == nil then
  44. return
  45. end
  46. return moduleData:hget_int(uid, MODULE_NAME, "totalAmount")
  47. end
  48. -- 是否首次付费
  49. function root:is_first_pay(uid)
  50. local goodsList = moduleData:hget_json(uid, MODULE_NAME, "goodsList")
  51. return is_empty(goodsList)
  52. end
  53. -- 是否商品首次付费
  54. function root:is_goods_first_pay(uid, gid)
  55. local goodsList = moduleData:hget_json(uid, MODULE_NAME, "goodsList")
  56. for _, v in ipairs(goodsList) do
  57. if v.gid == gid then
  58. return false
  59. end
  60. end
  61. return true
  62. end
  63. -- 商品购买次数
  64. function root:get_goods_pay_times(uid, gid)
  65. local times = 0
  66. local goodsList = moduleData:hget_json(uid, MODULE_NAME, "goodsList")
  67. for _, v in ipairs(goodsList) do
  68. if v.gid == gid then
  69. times = times + 1
  70. end
  71. end
  72. return times
  73. end
  74. ----------------------------------------
  75. -- 当天
  76. ----------------------------------------
  77. -- 获取信息
  78. function root:get_day_info(uid)
  79. local currTime = timeUtil.now(uid)
  80. local dayInfo = moduleData:hget_json(uid, MODULE_NAME, "dayInfo")
  81. if dayInfo.lastPayTime and not timeUtil.is_same_day(dayInfo.lastPayTime, currTime) then
  82. dayInfo = {}
  83. end
  84. return dayInfo
  85. end
  86. -- 支付金额
  87. function root:get_day_total_amount(uid)
  88. local dayInfo = self:get_day_info(uid)
  89. local amount = 0
  90. if not is_empty(dayInfo.goodsList) then
  91. for _, v in ipairs(dayInfo.goodsList) do
  92. amount = amount + v.amount
  93. end
  94. end
  95. return amount
  96. end
  97. ----------------------------------------
  98. -- 商品定制
  99. ----------------------------------------
  100. -- 定制商品物品
  101. function root:update_goods_pre_custom_items(uid, gid, items)
  102. if uid == nil or gid == nil or is_empty(items) then
  103. return false
  104. end
  105. local goodsPreCustomItems = moduleData:hget_json(uid, MODULE_NAME, "goodsPreCustomItems")
  106. local isMatch = false
  107. for k, v in ipairs(goodsPreCustomItems) do
  108. if v.gid == gid then
  109. isMatch = true
  110. v.items = items
  111. break
  112. end
  113. end
  114. if not isMatch then
  115. table.insert(goodsPreCustomItems, {gid = gid, items = items})
  116. end
  117. moduleData:hset(uid, MODULE_NAME, "goodsPreCustomItems", goodsPreCustomItems)
  118. return true
  119. end
  120. -- 打包 - 商品定制信息
  121. function root:pack_goods_pre_custom_info_list(uid)
  122. if uid == nil then
  123. return
  124. end
  125. local goodsPreCustomItems = moduleData:hget_json(uid, MODULE_NAME, "goodsPreCustomItems")
  126. if not is_empty(goodsPreCustomItems) then
  127. return goodsPreCustomItems
  128. end
  129. end
  130. -- 获取商品定制物品
  131. function root:get_goods_pre_custom_items(uid, gid)
  132. if uid == nil or gid == nil then
  133. return
  134. end
  135. local goodsPreCustomItems = moduleData:hget_json(uid, MODULE_NAME, "goodsPreCustomItems")
  136. for k, v in ipairs(goodsPreCustomItems) do
  137. if v.gid == gid then
  138. return v.items
  139. end
  140. end
  141. end
  142. -- 删除商品定制物品
  143. function root:del_goods_pre_custom_items(uid, gid)
  144. if uid == nil or gid == nil then
  145. return false
  146. end
  147. local goodsPreCustomItems = moduleData:hget_json(uid, MODULE_NAME, "goodsPreCustomItems")
  148. for k, v in ipairs(goodsPreCustomItems) do
  149. if v.gid == gid then
  150. table.remove(goodsPreCustomItems, k)
  151. moduleData:hset(uid, MODULE_NAME, "goodsPreCustomItems", goodsPreCustomItems)
  152. return true
  153. end
  154. end
  155. return false
  156. end
  157. -- 支付 - 更新商品定制物品
  158. function root:update_goods_pay_custom_items(uid, gid, items)
  159. if uid == nil or gid == nil then
  160. return false
  161. end
  162. local goodsPayCustomItems = moduleData:hget_json(uid, MODULE_NAME, "goodsPayCustomItems")
  163. local isMatch = false
  164. for k, v in ipairs(goodsPayCustomItems) do
  165. if v.gid == gid then
  166. isMatch = true
  167. if is_empty(items) then
  168. table.remove(goodsPayCustomItems, k)
  169. else
  170. v.items = items
  171. end
  172. break
  173. end
  174. end
  175. if not isMatch then
  176. table.insert(goodsPayCustomItems, {gid = gid, items = items})
  177. end
  178. moduleData:hset(uid, MODULE_NAME, "goodsPayCustomItems", goodsPayCustomItems)
  179. return true
  180. end
  181. -- 打包 - 商品定制信息
  182. function root:pack_goods_pay_custom_info_list(uid)
  183. if uid == nil then
  184. return
  185. end
  186. local goodsPayCustomItems = moduleData:hget_json(uid, MODULE_NAME, "goodsPayCustomItems")
  187. if not is_empty(goodsPayCustomItems) then
  188. return goodsPayCustomItems
  189. end
  190. end
  191. -- 打包 - 支付信息
  192. function root:pack_pay_info(uid)
  193. if is_empty(uid) then
  194. return
  195. end
  196. local payInfo = {}
  197. -- 终生
  198. payInfo.totalTimes = 0
  199. payInfo.totalMoney = 0
  200. local goodsList = moduleData:hget_json(uid, MODULE_NAME, "goodsList")
  201. if not is_empty(goodsList) then
  202. for _, v in ipairs(goodsList) do
  203. payInfo.totalTimes = payInfo.totalTimes + 1
  204. payInfo.totalMoney = payInfo.totalMoney + v.amount
  205. end
  206. end
  207. -- 当天
  208. payInfo.dayMoney = 0
  209. payInfo.dayTimes = 0
  210. local dayInfo = self:get_day_info(uid)
  211. if not is_empty(dayInfo.goodsList) then
  212. for _, v in ipairs(dayInfo.goodsList) do
  213. payInfo.dayTimes = payInfo.dayTimes + 1
  214. payInfo.dayMoney = payInfo.dayMoney + v.amount
  215. end
  216. end
  217. return payInfo
  218. end
  219. return root