talent_address.go 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. package youngee_talent_service
  2. import (
  3. "context"
  4. "youngmini_server/app/dao"
  5. "youngmini_server/app/model/youngee_talent_model"
  6. "youngmini_server/app/utils"
  7. "github.com/gogf/gf/database/gdb"
  8. "github.com/gogf/gf/frame/g"
  9. "github.com/gogf/gf/net/ghttp"
  10. )
  11. // 获取达人默认收货地址
  12. func GetTalentDefaultAddress(r *ghttp.Request) *TalentHttpResult {
  13. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  14. if err != nil {
  15. return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  16. }
  17. res, err := g.DB().Model(dao.YoungeeTalentDeliveryAddress.Table).Where("talent_id = ? and default_tag = 1", tid).One()
  18. if err != nil {
  19. return &TalentHttpResult{Code: -2, Msg: err.Error()}
  20. }
  21. return &TalentHttpResult{Code: 0, Msg: "success", Data: res}
  22. }
  23. // 获取达人收货地址
  24. func GetTalentAddress(r *ghttp.Request) *TalentHttpResult {
  25. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  26. if err != nil {
  27. return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  28. }
  29. res, err := g.DB().Model(dao.YoungeeTalentDeliveryAddress.Table).All("talent_id", tid)
  30. if err != nil {
  31. return &TalentHttpResult{Code: -2, Msg: err.Error()}
  32. }
  33. return &TalentHttpResult{Code: 0, Msg: "success", Data: res}
  34. }
  35. // 获取单个收货地址详情
  36. func GetSingleAddress(r *ghttp.Request) *TalentHttpResult {
  37. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  38. if err != nil {
  39. return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  40. }
  41. address_id := r.Get("address_id")
  42. res, err := g.DB().Model(dao.YoungeeTalentDeliveryAddress.Table).One("talent_id = ? and address_id = ?", tid, address_id)
  43. if err != nil {
  44. return &TalentHttpResult{Code: -2, Msg: err.Error()}
  45. }
  46. return &TalentHttpResult{Code: 0, Msg: "success", Data: res}
  47. }
  48. // 添加收货地址
  49. func OnAddTalentAddress(r *ghttp.Request) *TalentHttpResult {
  50. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  51. if err != nil {
  52. return &TalentHttpResult{Code: -1, Msg: "Add talent address failed"}
  53. }
  54. tAddr := youngee_talent_model.TalentDeliveryAddress{}
  55. err = r.ParseForm(&tAddr)
  56. if err != nil {
  57. return &TalentHttpResult{Code: -2, Msg: err.Error()}
  58. }
  59. err = g.DB().Transaction(context.TODO(), func(ctx context.Context, tx *gdb.TX) error {
  60. var tErr error
  61. _, tErr = tx.Ctx(ctx).Model(dao.YoungeeTalentInfo.Table).Update("is_bind_location=1", "id", tid)
  62. if err != nil {
  63. return tErr
  64. }
  65. // 如果设置的是地址是默认地址,则把当前默认地址设为非默认
  66. if tAddr.DefaultTag > 0 {
  67. _, tErr = tx.Ctx(ctx).Model(dao.YoungeeTalentDeliveryAddress.Table).
  68. Update("default_tag=0", "talent_id=? and default_tag = 1", tid)
  69. if tErr != nil {
  70. return tErr
  71. }
  72. }
  73. // 如果当前无地址则将其设为默认地址
  74. c, tErr := tx.Ctx(ctx).Model(dao.YoungeeTalentDeliveryAddress.Table).Where("talent_id", tid).Count()
  75. if tErr != nil {
  76. return tErr
  77. }
  78. if c == 0 {
  79. tAddr.DefaultTag = 1
  80. }
  81. // 将达人id存入结构体
  82. tAddr.TalentId = tid
  83. // 插入新的收货地址记录
  84. _, tErr = tx.Ctx(ctx).Model(dao.YoungeeTalentDeliveryAddress.Table).Insert(tAddr)
  85. if tErr != nil {
  86. return tErr
  87. }
  88. return nil
  89. })
  90. if err != nil {
  91. return &TalentHttpResult{Code: -3, Msg: "failed"}
  92. }
  93. return &TalentHttpResult{Code: 0, Msg: "success"}
  94. }
  95. // 删除收货地址
  96. func OnDeleteTalentAddress(r *ghttp.Request) *TalentHttpResult {
  97. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  98. if err != nil {
  99. return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  100. }
  101. var deleteReq *youngee_talent_model.DeleteDeliveryAddress
  102. err = r.ParseForm(&deleteReq)
  103. if err != nil {
  104. return &TalentHttpResult{Code: -2, Msg: "params error"}
  105. }
  106. err = g.DB().Transaction(context.TODO(), func(ctx context.Context, tx *gdb.TX) error {
  107. if deleteReq.DefaultTag == 1 {
  108. _, err1 := tx.Ctx(ctx).Model(dao.YoungeeTalentDeliveryAddress.Table).Limit(1).Update("default_tag = 1", "talent_id = ? and address_id <> ?", tid, deleteReq.AddressId)
  109. if err1 != nil {
  110. return err1
  111. }
  112. }
  113. // 删除收货地址记录
  114. _, err1 := tx.Ctx(ctx).Model(dao.YoungeeTalentDeliveryAddress.Table).Delete("address_id", deleteReq.AddressId)
  115. if err1 != nil {
  116. return err1
  117. }
  118. c, err2 := tx.Ctx(ctx).Model(dao.YoungeeTalentDeliveryAddress.Table).Where("talent_id", tid).Count()
  119. if err2 != nil {
  120. return err2
  121. }
  122. if c == 0 {
  123. _, err3 := tx.Ctx(ctx).Model(dao.YoungeeTalentInfo.Table).Update("is_bind_location=0", "id", tid)
  124. if err3 != nil {
  125. return err3
  126. }
  127. }
  128. return nil
  129. })
  130. if err != nil {
  131. return &TalentHttpResult{Code: -3, Msg: "failed"}
  132. }
  133. return &TalentHttpResult{Code: 0, Msg: "success"}
  134. }
  135. // 修改达人收货地址
  136. func OnUpdateTalentAddress(r *ghttp.Request) *TalentHttpResult {
  137. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  138. if err != nil {
  139. return &TalentHttpResult{Code: -1, Msg: "Update talent address failed"}
  140. }
  141. var modifyReq *youngee_talent_model.DeliveryAddressModifyReq
  142. err = r.ParseForm(&modifyReq)
  143. if err != nil {
  144. return &TalentHttpResult{Code: -2, Msg: "params error"}
  145. }
  146. _, err = g.DB().Model(dao.YoungeeTalentDeliveryAddress.Table).Update(modifyReq, "address_id = ? and talent_id = ?", modifyReq.AddressId, tid)
  147. if err != nil {
  148. return &TalentHttpResult{Code: -3, Msg: "update failed"}
  149. }
  150. return &TalentHttpResult{Code: 0, Msg: "success"}
  151. }
  152. // SetDefaultDeliveryAddr 设置默认收货地址
  153. func SetDefaultDeliveryAddr(r *ghttp.Request) *TalentHttpResult {
  154. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  155. if err != nil {
  156. return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  157. }
  158. aid := r.GetRequestInt32("address_id", 0)
  159. if aid == 0 {
  160. return &TalentHttpResult{Code: -1, Msg: "address id error"}
  161. }
  162. rec, err := g.DB().Model(dao.YoungeeTalentDeliveryAddress.Table).One("talent_id = ? and default_tag = 1", tid)
  163. if err != nil {
  164. return &TalentHttpResult{Code: -2, Msg: "found default delivery address error"}
  165. }
  166. if rec == nil {
  167. _, err = g.DB().Model(dao.YoungeeTalentDeliveryAddress.Table).Update("default_tag = 1", "address_id", aid)
  168. } else {
  169. err = g.DB().Transaction(context.TODO(), func(ctx context.Context, tx *gdb.TX) error {
  170. _, err1 := tx.Ctx(ctx).Model(dao.YoungeeTalentDeliveryAddress.Table).Update("default_tag = 0", "address_id", rec["address_id"])
  171. if err1 != nil {
  172. return err1
  173. }
  174. _, err1 = tx.Ctx(ctx).Model(dao.YoungeeTalentDeliveryAddress.Table).Update("default_tag = 1", "address_id", aid)
  175. if err1 != nil {
  176. return err1
  177. }
  178. return nil
  179. })
  180. }
  181. if err != nil {
  182. return &TalentHttpResult{Code: -3, Msg: "database error"}
  183. }
  184. return &TalentHttpResult{Code: 0, Msg: "success"}
  185. }