transaction.go 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339
  1. package mail
  2. import (
  3. "encoding/json"
  4. "runtime/debug"
  5. "bet24.com/database"
  6. "bet24.com/log"
  7. "bet24.com/servers/common"
  8. dbengine "bet24.com/servers/micros/dbengine/proto"
  9. pb "bet24.com/servers/micros/userservices/proto"
  10. )
  11. // 发送用户邮件
  12. func sendUserMail(userId int, title, content, img string) (int, int) {
  13. defer func() {
  14. if err := recover(); err != nil {
  15. log.Error("mail.sendUserMail transaction recover %v", err)
  16. log.Error("%s", debug.Stack())
  17. }
  18. }()
  19. newMsgId, sendImgCount := 0, 0
  20. statement := database.NewStatement()
  21. statement.SetNeedReturnValue(false)
  22. statement.SetOpenRecordSet(false)
  23. statement.SetProcName("WS_ServiceMessage_Send")
  24. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  25. statement.AddParamter("@Title", database.AdParamInput, database.AdNVarChar, 256, title)
  26. statement.AddParamter("@Msg", database.AdParamInput, database.AdNVarChar, 512, content)
  27. statement.AddParamter("@Img", database.AdParamInput, database.AdVarChar, 1024, img)
  28. sqlstring := statement.GenSql()
  29. // log.Debug(sqlstring)
  30. retRows := dbengine.ExecuteRs(sqlstring)
  31. if len(retRows) <= 0 {
  32. return newMsgId, sendImgCount
  33. }
  34. newMsgId = int((retRows[0][0]).(int64))
  35. sendImgCount = int((retRows[0][1]).(int64))
  36. return newMsgId, sendImgCount
  37. }
  38. // 获取用户邮件
  39. func getUserMails(userId, mailId int) (int, []*pb.UserMail) {
  40. defer func() {
  41. if err := recover(); err != nil {
  42. log.Error("mail.getUserMails transaction recover %v", err)
  43. log.Error("%s", debug.Stack())
  44. }
  45. }()
  46. var mails []*pb.UserMail
  47. var sendImgCount int
  48. statement := database.NewStatement()
  49. statement.SetNeedReturnValue(false)
  50. statement.SetOpenRecordSet(true)
  51. statement.SetProcName("WS_ServiceMessage_GetList")
  52. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  53. statement.AddParamter("@MessageID", database.AdParamInput, database.AdInteger, 4, mailId)
  54. statement.AddParamter("@SendImgCount", database.AdParamOutput, database.AdInteger, 4, sendImgCount)
  55. sqlstring := statement.GenSql()
  56. // log.Debug(sqlstring)
  57. retRows := dbengine.ExecuteRs(sqlstring)
  58. rowsLen := len(retRows)
  59. if rowsLen > 1 {
  60. for i := 0; i < rowsLen-1; i++ {
  61. ret := retRows[i]
  62. var out pb.UserMail
  63. out.Id = int((ret[0]).(int64))
  64. out.Title = (ret[1]).(string)
  65. out.FromUserId = int((ret[2]).(int64))
  66. out.ToUserId = int((ret[3]).(int64))
  67. out.Content = (ret[4]).(string)
  68. crdateStr := (ret[5]).(string)
  69. crdate := common.ParseTime(crdateStr)
  70. out.Crdate = common.GetStamp(crdate)
  71. mails = append(mails, &out)
  72. }
  73. }
  74. sendImgCount = int((retRows[rowsLen-1][0]).(int64))
  75. return sendImgCount, mails
  76. }
  77. // 获取用户邮件提示
  78. func getUserMailTip(userId int) bool {
  79. defer func() {
  80. if err := recover(); err != nil {
  81. log.Error("mail.getUserMailTip transaction recover err %v", err)
  82. log.Error("%s", debug.Stack())
  83. }
  84. }()
  85. statement := database.NewStatement()
  86. statement.SetNeedReturnValue(false)
  87. statement.SetOpenRecordSet(true)
  88. statement.SetProcName("WS_ServiceMessage_GetTip")
  89. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  90. sqlstring := statement.GenSql()
  91. retRows := dbengine.Execute(sqlstring)
  92. return len(retRows) > 0
  93. }
  94. // 发送系统邮件(含附件)
  95. func sendSysMail(userId int, sm *pb.SysMail) bool {
  96. defer func() {
  97. if err := recover(); err != nil {
  98. log.Error("mail.sendSysMail transaction recover err %v", err)
  99. log.Error("%s", debug.Stack())
  100. }
  101. }()
  102. tools := ""
  103. if len(sm.Tools) > 0 {
  104. buf, err := json.Marshal(sm.Tools)
  105. if err != nil {
  106. log.Error("mail.sendSysMail transaction json marshal fail err %v", err)
  107. return false
  108. }
  109. tools = string(buf)
  110. }
  111. sysMailId := 0
  112. statement := database.NewStatement()
  113. statement.SetNeedReturnValue(false)
  114. statement.SetOpenRecordSet(true)
  115. statement.SetProcName("WS_SysMessage_Send")
  116. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  117. statement.AddParamter("@Title", database.AdParamInput, database.AdNVarChar, 32, sm.Title)
  118. statement.AddParamter("@Content", database.AdParamInput, database.AdNVarChar, 256, sm.Content)
  119. statement.AddParamter("@Status", database.AdParamInput, database.AdInteger, 4, sm.Status)
  120. statement.AddParamter("@SourceName", database.AdParamInput, database.AdNVarChar, 64, sm.SourceName)
  121. statement.AddParamter("@Crdate", database.AdParamInput, database.AdInteger, 4, sm.Crdate)
  122. statement.AddParamter("@Tools", database.AdParamInput, database.AdVarChar, 1024, tools)
  123. statement.AddParamter("@SysMsgID", database.AdParamOutput, database.AdInteger, 4, sysMailId)
  124. sqlstring := statement.GenSql()
  125. retRows := dbengine.ExecuteRs(sqlstring)
  126. if len(retRows) <= 0 {
  127. return false
  128. }
  129. sysMailId = int((retRows[0][0]).(int64))
  130. return sysMailId > 0
  131. }
  132. // 获取系统邮件列表
  133. func getSysMails(userId, sysMsgId int) []*pb.SysMail {
  134. defer func() {
  135. if err := recover(); err != nil {
  136. log.Error("mail.getSysMails transaction recover %v", err)
  137. log.Error("%s", debug.Stack())
  138. }
  139. }()
  140. statement := database.NewStatement()
  141. statement.SetNeedReturnValue(false)
  142. statement.SetOpenRecordSet(true)
  143. statement.SetProcName("WS_SysMessage_GetList")
  144. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  145. statement.AddParamter("@SysMsgID", database.AdParamInput, database.AdInteger, 4, sysMsgId)
  146. sqlstring := statement.GenSql()
  147. // log.Debug(sqlstring)
  148. retRows := dbengine.ExecuteRs(sqlstring)
  149. rowsLen := len(retRows)
  150. var sysMails []*pb.SysMail
  151. for i := 0; i < rowsLen; i++ {
  152. ret := retRows[i]
  153. var out pb.SysMail
  154. out.Id = int((ret[0]).(int64))
  155. out.Title = (ret[1]).(string)
  156. out.Content = (ret[2]).(string)
  157. out.Status = int((ret[3]).(int64))
  158. out.SourceName = (ret[4]).(string)
  159. crdateStr := (ret[5]).(string)
  160. crdate := common.ParseTime(crdateStr)
  161. out.Crdate = common.GetStamp(crdate)
  162. tools := (ret[6]).(string)
  163. if tools != "" {
  164. if err := json.Unmarshal([]byte(tools), &out.Tools); err != nil {
  165. log.Error("mail.getSysMails transaction json unmarshal fail err %v", err)
  166. return nil
  167. }
  168. }
  169. sysMails = append(sysMails, &out)
  170. }
  171. return sysMails
  172. }
  173. // 获取系统邮件信息
  174. func getSysMail(userId, sysMsgId int) *pb.SysMail {
  175. defer func() {
  176. if err := recover(); err != nil {
  177. log.Error("mail.getSysMail transaction recover %v", err)
  178. log.Error("%s", debug.Stack())
  179. }
  180. }()
  181. statement := database.NewStatement()
  182. statement.SetNeedReturnValue(false)
  183. statement.SetOpenRecordSet(true)
  184. statement.SetProcName("WS_SysMessage_GetInfo")
  185. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  186. statement.AddParamter("@SysMsgID", database.AdParamInput, database.AdInteger, 4, sysMsgId)
  187. sqlstring := statement.GenSql()
  188. // log.Debug(sqlstring)
  189. retRows := dbengine.ExecuteRs(sqlstring)
  190. rowsLen := len(retRows)
  191. out := new(pb.SysMail)
  192. for i := 0; i < rowsLen; i++ {
  193. ret := retRows[i]
  194. out.Id = int((ret[0]).(int64))
  195. out.Title = (ret[1]).(string)
  196. out.Content = (ret[2]).(string)
  197. out.Status = int((ret[3]).(int64))
  198. out.SourceName = (ret[4]).(string)
  199. crdateStr := (ret[5]).(string)
  200. crdate := common.ParseTime(crdateStr)
  201. out.Crdate = common.GetStamp(crdate)
  202. tools := (ret[6]).(string)
  203. if tools != "" {
  204. if err := json.Unmarshal([]byte(tools), &out.Tools); err != nil {
  205. log.Error("mail.getSysMails transaction json unmarshal fail err %v", err)
  206. return nil
  207. }
  208. }
  209. }
  210. return out
  211. }
  212. // 修改系统邮件
  213. func updateSysMail(userId, sysMsgId, status int) int {
  214. defer func() {
  215. if err := recover(); err != nil {
  216. log.Error("mail.updateSysMail transaction recover err %v", err)
  217. log.Error("%s", debug.Stack())
  218. }
  219. }()
  220. retCode := 0
  221. statement := database.NewStatement()
  222. statement.SetNeedReturnValue(false)
  223. statement.SetOpenRecordSet(true)
  224. statement.SetProcName("WS_SysMessage_Update")
  225. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  226. statement.AddParamter("@SysMsgId", database.AdParamInput, database.AdInteger, 4, sysMsgId)
  227. statement.AddParamter("@Status", database.AdParamInput, database.AdInteger, 4, status)
  228. statement.AddParamter("@RetCode", database.AdParamOutput, database.AdInteger, 4, retCode)
  229. sqlstring := statement.GenSql()
  230. retRows := dbengine.ExecuteRs(sqlstring)
  231. if len(retRows) <= 0 {
  232. return 0
  233. }
  234. return int((retRows[0][0]).(int64))
  235. }
  236. // 删除系统邮件
  237. func delSysMail(userId, sysMsgId int) int {
  238. defer func() {
  239. if err := recover(); err != nil {
  240. log.Error("mail.delSysMail transaction recover err %v", err)
  241. log.Error("%s", debug.Stack())
  242. }
  243. }()
  244. retCode := 0
  245. statement := database.NewStatement()
  246. statement.SetNeedReturnValue(false)
  247. statement.SetOpenRecordSet(true)
  248. statement.SetProcName("WS_SysMessage_Del")
  249. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  250. statement.AddParamter("@SysMsgID", database.AdParamInput, database.AdInteger, 4, sysMsgId)
  251. statement.AddParamter("@RetCode", database.AdParamOutput, database.AdInteger, 4, retCode)
  252. sqlstring := statement.GenSql()
  253. retRows := dbengine.ExecuteRs(sqlstring)
  254. if len(retRows) <= 0 {
  255. return 0
  256. }
  257. return int((retRows[0][0]).(int64))
  258. }
  259. // 获取系统邮件列表
  260. func getGiftMails(userId int) []*pb.SysMail {
  261. defer func() {
  262. if err := recover(); err != nil {
  263. log.Error("mail.getSysMails transaction recover %v", err)
  264. log.Error("%s", debug.Stack())
  265. }
  266. }()
  267. statement := database.NewStatement()
  268. statement.SetNeedReturnValue(false)
  269. statement.SetOpenRecordSet(true)
  270. statement.SetProcName("WS_SysMessage_GetGiftList")
  271. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  272. sqlstring := statement.GenSql()
  273. // log.Debug(sqlstring)
  274. retRows := dbengine.ExecuteRs(sqlstring)
  275. rowsLen := len(retRows)
  276. var sysMails []*pb.SysMail
  277. for i := 0; i < rowsLen; i++ {
  278. ret := retRows[i]
  279. var out pb.SysMail
  280. out.Id = int((ret[0]).(int64))
  281. out.Title = (ret[1]).(string)
  282. out.Content = (ret[2]).(string)
  283. out.Status = int((ret[3]).(int64))
  284. out.SourceName = (ret[4]).(string)
  285. crdateStr := (ret[5]).(string)
  286. crdate := common.ParseTime(crdateStr)
  287. out.Crdate = common.GetStamp(crdate)
  288. tools := (ret[6]).(string)
  289. if tools != "" {
  290. if err := json.Unmarshal([]byte(tools), &out.Tools); err != nil {
  291. log.Error("mail.getSysMails transaction json unmarshal fail err %v", err)
  292. return nil
  293. }
  294. }
  295. sysMails = append(sysMails, &out)
  296. }
  297. return sysMails
  298. }