talent_address.go 7.4 KB

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