transaction.go 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380
  1. package friend
  2. import (
  3. "bet24.com/database"
  4. "bet24.com/log"
  5. "bet24.com/servers/common"
  6. dbengine "bet24.com/servers/micros/dbengine/proto"
  7. "encoding/json"
  8. "runtime/debug"
  9. )
  10. // 获取好友信息
  11. func searchInfo(userId, toUserId int, toNickName string) []*SearchInfo {
  12. defer func() {
  13. if err := recover(); err != nil {
  14. log.Error("transaction recover err %v", err)
  15. log.Error("%s", debug.Stack())
  16. }
  17. }()
  18. var list []*SearchInfo
  19. statement := database.NewStatement()
  20. statement.SetNeedReturnValue(false)
  21. statement.SetOpenRecordSet(true)
  22. statement.SetProcName("WS_AllUser_SearchInfo")
  23. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  24. statement.AddParamter("@ToUserID", database.AdParamInput, database.AdInteger, 4, toUserId)
  25. statement.AddParamter("@ToNickName", database.AdParamInput, database.AdNVarChar, 32, toNickName)
  26. sqlstring := statement.GenSql()
  27. //log.Debug(sqlstring)
  28. retRows := dbengine.ExecuteRs(sqlstring)
  29. rowLen := len(retRows)
  30. if rowLen <= 0 {
  31. return list
  32. }
  33. for i := 0; i < rowLen; i++ {
  34. ret := retRows[i]
  35. var info SearchInfo
  36. info.FriendID = int(ret[0].(int64))
  37. if info.FriendID <= 0 {
  38. continue
  39. }
  40. list = append(list, &info)
  41. }
  42. return list
  43. }
  44. // 获取好友列表,并返回今天剩余领取次数
  45. func getList(userId int) (int, []*FriendItem) {
  46. defer func() {
  47. if err := recover(); err != nil {
  48. log.Error("transaction recover err %v", err)
  49. log.Error("%s", debug.Stack())
  50. }
  51. }()
  52. giveTimes := 0
  53. var list []*FriendItem
  54. statement := database.NewStatement()
  55. statement.SetNeedReturnValue(false)
  56. statement.SetOpenRecordSet(true)
  57. statement.SetProcName("WS_UserFriends_GetList")
  58. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  59. statement.AddParamter("@ToUserID", database.AdParamInput, database.AdInteger, 4, 0)
  60. sqlString := statement.GenSql()
  61. retRows := dbengine.ExecuteRs(sqlString)
  62. rowLen := len(retRows)
  63. if rowLen <= 0 {
  64. return giveTimes, list
  65. }
  66. dayIndex := common.GetDayIndex(common.GetTimeStamp())
  67. for i := 0; i < rowLen; i++ {
  68. ret := retRows[i]
  69. var info FriendItem
  70. info.FriendID = int((ret[0]).(int64))
  71. info.IsGift = int((ret[1]).(int64))
  72. giftStr := (ret[2]).(string)
  73. giftTime := common.ParseTime(giftStr)
  74. info.GiftTime = common.GetStamp(giftTime)
  75. giftDayIndex := common.GetDayIndex(info.GiftTime)
  76. if giftDayIndex < dayIndex && info.IsGift == GIFT_STATUS_RECEIVED {
  77. info.IsGift = 0
  78. }
  79. giveStr := (ret[3]).(string)
  80. giveTime := common.ParseTime(giveStr)
  81. info.GiveTime = common.GetStamp(giveTime)
  82. giveDayIndex := common.GetDayIndex(info.GiveTime)
  83. if giveDayIndex >= dayIndex {
  84. info.IsGive = GIVE_STATUS_HAVE
  85. giveTimes++
  86. }
  87. list = append(list, &info)
  88. //log.Debug("getFriendInfo userId=%d giftStr=%s giftTime=%v giftDayIndex=%d giveStr=%v giveTime=%v giveDayIndex=%d dayIndex=%d giveTimes=%d ==> %+v",
  89. // userId, giftStr, giftTime, giftDayIndex, giveStr, giveTime, giveDayIndex, dayIndex, giveTimes, info)
  90. }
  91. return MAX_GIVETIMES - giveTimes, list
  92. }
  93. // 获取审核列表(谁来申请的)
  94. func getVerifyList(userId int) []*FriendBase {
  95. defer func() {
  96. if err := recover(); err != nil {
  97. log.Error("transaction recover err %v", err)
  98. log.Error("%s", debug.Stack())
  99. }
  100. }()
  101. var list []*FriendBase
  102. statement := database.NewStatement()
  103. statement.SetNeedReturnValue(false)
  104. statement.SetOpenRecordSet(true)
  105. statement.SetProcName("WS_UserFriends_GetVerifyList")
  106. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  107. sqlstring := statement.GenSql()
  108. retRows := dbengine.ExecuteRs(sqlstring)
  109. rowLen := len(retRows)
  110. if rowLen <= 0 {
  111. return list
  112. }
  113. for i := 0; i < rowLen; i++ {
  114. ret := retRows[i]
  115. var info FriendBase
  116. info.FriendID = int((ret[0]).(int64))
  117. list = append(list, &info)
  118. }
  119. return list
  120. }
  121. // 获取申请列表(自己申请的)
  122. func getApplyList(userId int) []*FriendBase {
  123. defer func() {
  124. if err := recover(); err != nil {
  125. log.Error("transaction recover err %v", err)
  126. log.Error("%s", debug.Stack())
  127. }
  128. }()
  129. var list []*FriendBase
  130. statement := database.NewStatement()
  131. statement.SetNeedReturnValue(false)
  132. statement.SetOpenRecordSet(true)
  133. statement.SetProcName("WS_UserFriends_GetApplyList")
  134. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  135. sqlstring := statement.GenSql()
  136. retRows := dbengine.ExecuteRs(sqlstring)
  137. rowLen := len(retRows)
  138. if rowLen <= 0 {
  139. return list
  140. }
  141. for i := 0; i < rowLen; i++ {
  142. ret := retRows[i]
  143. var info FriendBase
  144. info.FriendID = int((ret[0]).(int64))
  145. list = append(list, &info)
  146. }
  147. return list
  148. }
  149. // 好友申请
  150. func apply(userId, toUserId int) {
  151. defer func() {
  152. if err := recover(); err != nil {
  153. log.Error("transaction recover err %v", err)
  154. log.Error("%s", debug.Stack())
  155. }
  156. }()
  157. statement := database.NewStatement()
  158. statement.SetNeedReturnValue(false)
  159. statement.SetOpenRecordSet(false)
  160. statement.SetProcName("WS_UserFriends_Apply")
  161. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  162. statement.AddParamter("@ToUserID", database.AdParamInput, database.AdInteger, 4, toUserId)
  163. sqlstring := statement.GenSql()
  164. dbengine.Execute(sqlstring)
  165. }
  166. // 申请处理
  167. func deal(userId, toUserId, status int) {
  168. defer func() {
  169. if err := recover(); err != nil {
  170. log.Error("transaction recover err %v", err)
  171. log.Error("%s", debug.Stack())
  172. }
  173. }()
  174. statement := database.NewStatement()
  175. statement.SetNeedReturnValue(false)
  176. statement.SetOpenRecordSet(false)
  177. statement.SetProcName("WS_UserFriends_DealApply")
  178. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  179. statement.AddParamter("@ToUserID", database.AdParamInput, database.AdInteger, 4, toUserId)
  180. statement.AddParamter("@Status", database.AdParamInput, database.AdInteger, 4, status)
  181. sqlstring := statement.GenSql()
  182. dbengine.Execute(sqlstring)
  183. }
  184. // 删除好友
  185. func del(userId, toUserId int) {
  186. defer func() {
  187. if err := recover(); err != nil {
  188. log.Error("transaction recover err %v", err)
  189. log.Error("%s", debug.Stack())
  190. }
  191. }()
  192. statement := database.NewStatement()
  193. statement.SetNeedReturnValue(false)
  194. statement.SetOpenRecordSet(false)
  195. statement.SetProcName("WS_UserFriends_Del")
  196. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  197. statement.AddParamter("@ToUserID", database.AdParamInput, database.AdInteger, 4, toUserId)
  198. sqlstring := statement.GenSql()
  199. dbengine.Execute(sqlstring)
  200. }
  201. // 赠送礼物
  202. func giveGift(userId, toUserId int) {
  203. defer func() {
  204. if err := recover(); err != nil {
  205. log.Error("transaction recover err %v", err)
  206. log.Error("%s", debug.Stack())
  207. }
  208. }()
  209. statement := database.NewStatement()
  210. statement.SetNeedReturnValue(false)
  211. statement.SetOpenRecordSet(false)
  212. statement.SetProcName("WS_UserFriends_GiveGift")
  213. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  214. statement.AddParamter("@ToUserID", database.AdParamInput, database.AdInteger, 4, toUserId)
  215. sqlstring := statement.GenSql()
  216. //log.Debug(sqlstring)
  217. dbengine.Execute(sqlstring)
  218. }
  219. // 领取礼物
  220. func getGift(userId, toUserId int) {
  221. defer func() {
  222. if err := recover(); err != nil {
  223. log.Error("transaction recover err %v", err)
  224. log.Error("%s", debug.Stack())
  225. }
  226. }()
  227. statement := database.NewStatement()
  228. statement.SetNeedReturnValue(false)
  229. statement.SetOpenRecordSet(false)
  230. statement.SetProcName("WS_UserFriends_GetGift")
  231. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  232. statement.AddParamter("@ToUserID", database.AdParamInput, database.AdInteger, 4, toUserId)
  233. sqlstring := statement.GenSql()
  234. //log.Debug(sqlstring)
  235. dbengine.Execute(sqlstring)
  236. }
  237. // 获取潜在好友列表 sort by MetTime desc
  238. func getPotentialFriendList(userId int) []PotentialFriend {
  239. var list []PotentialFriend
  240. statement := database.NewStatement()
  241. statement.SetNeedReturnValue(false)
  242. statement.SetOpenRecordSet(true)
  243. statement.SetProcName("WS_UserFriends_GetPotentialList")
  244. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  245. sqlString := statement.GenSql()
  246. jsonRet := dbengine.Execute(sqlString)
  247. err := json.Unmarshal([]byte(jsonRet), &list)
  248. if err != nil {
  249. log.Release("getPotentialFriendList Unmarshal failed %s", jsonRet)
  250. }
  251. return list
  252. }
  253. // 删除某一条潜在好友记录
  254. func deletePotentialFriend(userId int, friendUserId int) {
  255. statement := database.NewStatement()
  256. statement.SetNeedReturnValue(false)
  257. statement.SetOpenRecordSet(true)
  258. statement.SetProcName("WS_UserFriends_DelPotential")
  259. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  260. statement.AddParamter("@FriendUserID", database.AdParamInput, database.AdInteger, 4, friendUserId)
  261. sqlString := statement.GenSql()
  262. dbengine.Execute(sqlString)
  263. }
  264. // 添加一个潜在好友
  265. func addPotentialFriend(userId int, friendUserId int, metTime int, memo string) {
  266. statement := database.NewStatement()
  267. statement.SetNeedReturnValue(false)
  268. statement.SetOpenRecordSet(true)
  269. statement.SetProcName("WS_UserFriends_AddPotential")
  270. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  271. statement.AddParamter("@FriendUserID", database.AdParamInput, database.AdInteger, 4, friendUserId)
  272. statement.AddParamter("@Memo", database.AdParamInput, database.AdNVarChar, 64, memo)
  273. statement.AddParamter("@MetTime", database.AdParamInput, database.AdInteger, 4, metTime)
  274. sqlString := statement.GenSql()
  275. dbengine.Execute(sqlString)
  276. }
  277. // 获取黑名单列表
  278. func trans_GetBlackList(userId int) []BlackItem {
  279. var list []BlackItem
  280. statement := database.NewStatement()
  281. statement.SetNeedReturnValue(false)
  282. statement.SetOpenRecordSet(true)
  283. statement.SetProcName("WS_UserFriends_GetBlackList")
  284. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  285. sqlString := statement.GenSql()
  286. jsonData := dbengine.Execute(sqlString)
  287. if len(jsonData) > 0 {
  288. if err := json.Unmarshal([]byte(jsonData), &list); err != nil {
  289. log.Error("trans_GetBlackList json unmarshal err %v", err)
  290. }
  291. }
  292. return list
  293. }
  294. // 添加黑名单
  295. func trans_AddBlack(userId, toUserId int, Crdate string) int {
  296. statement := database.NewStatement()
  297. statement.SetNeedReturnValue(false)
  298. statement.SetOpenRecordSet(true)
  299. statement.SetProcName("WS_UserFriends_AddBlack")
  300. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  301. statement.AddParamter("@ToUserID", database.AdParamInput, database.AdInteger, 4, toUserId)
  302. statement.AddParamter("@Crdate", database.AdParamInput, database.AdVarChar, 20, Crdate)
  303. sqlString := statement.GenSql()
  304. dbengine.Execute(sqlString)
  305. return 1
  306. }
  307. // 删除黑名单
  308. func trans_DelBlack(userId, toUserId int) int {
  309. statement := database.NewStatement()
  310. statement.SetNeedReturnValue(false)
  311. statement.SetOpenRecordSet(true)
  312. statement.SetProcName("WS_UserFriends_DelBlack")
  313. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  314. statement.AddParamter("@ToUserID", database.AdParamInput, database.AdInteger, 4, toUserId)
  315. sqlString := statement.GenSql()
  316. dbengine.Execute(sqlString)
  317. return 1
  318. }
  319. // 是否黑名单
  320. func trans_IsBlack(userId, toUserId int) bool {
  321. statement := database.NewStatement()
  322. statement.SetNeedReturnValue(false)
  323. statement.SetOpenRecordSet(true)
  324. statement.SetProcName("WS_UserFriends_ExistBlack")
  325. statement.AddParamter("@UserID", database.AdParamInput, database.AdInteger, 4, userId)
  326. statement.AddParamter("@ToUserID", database.AdParamInput, database.AdInteger, 4, toUserId)
  327. sqlString := statement.GenSql()
  328. retRows := dbengine.ExecuteRs(sqlString)
  329. if len(retRows) <= 0 {
  330. return false
  331. }
  332. return int(retRows[0][0].(int64)) > 0
  333. }