dt_finance.go 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. package daytask
  2. import (
  3. "encoding/json"
  4. model "go_server/model/biz_modules/daytask"
  5. "go_server/model/common/response"
  6. "go_server/service/base"
  7. "github.com/gin-gonic/gin"
  8. )
  9. // DtWithdrawOrderService 提现订单服务
  10. type DtWithdrawOrderService struct {
  11. base.BizCommonService
  12. }
  13. func (s *DtWithdrawOrderService) Get(c *gin.Context) {
  14. s.SetDbAlias("daytask")
  15. base.NewBaseHandler(model.NewDtWithdrawOrder()).Get(c, s.DB())
  16. }
  17. func (s *DtWithdrawOrderService) Find(c *gin.Context) {
  18. s.SetDbAlias("daytask")
  19. type request[T any] struct {
  20. base.ListRequest[T]
  21. Id *int64 `form:"id"`
  22. OrderNo *string `form:"orderNo"`
  23. UserId *int64 `form:"userId"`
  24. UserUid *string `form:"userUid"`
  25. Channel *string `form:"channel"`
  26. Status *int8 `form:"status"`
  27. BeginTime *int64 `form:"beginTime"`
  28. EndTime *int64 `form:"endTime"`
  29. }
  30. req := new(request[model.DtWithdrawOrder])
  31. if err := c.BindQuery(req); err != nil {
  32. response.Resp(c, err.Error())
  33. return
  34. }
  35. db := s.DB()
  36. if req.Id != nil && *req.Id != 0 {
  37. db = db.Where("id", req.Id)
  38. }
  39. if req.OrderNo != nil && *req.OrderNo != "" {
  40. db = db.Where("order_no", req.OrderNo)
  41. }
  42. if req.UserId != nil && *req.UserId != 0 {
  43. db = db.Where("user_id", req.UserId)
  44. }
  45. if req.UserUid != nil && *req.UserUid != "" {
  46. db = db.Where("user_uid", req.UserUid)
  47. }
  48. if req.Channel != nil && *req.Channel != "" {
  49. db = db.Where("channel", req.Channel)
  50. }
  51. if req.Status != nil {
  52. db = db.Where("status", req.Status)
  53. }
  54. if req.BeginTime != nil && *req.BeginTime > 0 && req.EndTime != nil && *req.EndTime > 0 {
  55. db = db.Where("created_at BETWEEN ? AND ?", *req.BeginTime, *req.EndTime)
  56. }
  57. colInfo := s.GetColumnCommentFromStruct(model.DtWithdrawOrder{})
  58. resp, err := base.NewQueryBaseHandler(model.NewDtWithdrawOrder()).List(db, req)
  59. if err != nil {
  60. response.Resp(c, err.Error())
  61. return
  62. }
  63. // 兼容旧数据:从 paymentInfo 中解析收款信息,补充到新字段
  64. type paymentInfo struct {
  65. Type string `json:"type"`
  66. Name string `json:"name"`
  67. Account string `json:"account"`
  68. BankName string `json:"bankName"`
  69. }
  70. for i := range resp.List {
  71. info := resp.List[i].PaymentInfo
  72. if info == "" {
  73. continue
  74. }
  75. var p paymentInfo
  76. if err := json.Unmarshal([]byte(info), &p); err != nil {
  77. continue
  78. }
  79. if resp.List[i].Channel == "" {
  80. resp.List[i].Channel = p.Type
  81. }
  82. if resp.List[i].ReceiveAccount == "" {
  83. resp.List[i].ReceiveAccount = p.Account
  84. }
  85. if resp.List[i].ReceiveName == "" {
  86. resp.List[i].ReceiveName = p.Name
  87. }
  88. if resp.List[i].BankName == "" {
  89. resp.List[i].BankName = p.BankName
  90. }
  91. }
  92. response.Resp(c, map[string]interface{}{
  93. "cols": colInfo,
  94. "list": resp.List,
  95. "paging": resp.Paging,
  96. })
  97. }
  98. func (s *DtWithdrawOrderService) Create(c *gin.Context) {
  99. s.SetDbAlias("daytask")
  100. base.NewBaseHandler(model.NewDtWithdrawOrder()).Create(c, s.DB())
  101. }
  102. func (s *DtWithdrawOrderService) Update(c *gin.Context) {
  103. s.SetDbAlias("daytask")
  104. base.NewBaseHandler(model.NewDtWithdrawOrder()).UpdateOne(c, s.DB())
  105. }
  106. // Audit 审核提现
  107. func (s *DtWithdrawOrderService) Audit(c *gin.Context) {
  108. s.SetDbAlias("daytask")
  109. type request struct {
  110. Id int64 `json:"id" binding:"required"`
  111. Status int8 `json:"status" binding:"required"` // 1=通过 4=拒绝
  112. RejectReason string `json:"rejectReason"`
  113. Remark string `json:"remark"`
  114. }
  115. var req request
  116. if err := c.ShouldBindJSON(&req); err != nil {
  117. response.Resp(c, err.Error())
  118. return
  119. }
  120. updates := map[string]interface{}{
  121. "status": req.Status,
  122. "remark": req.Remark,
  123. "audit_time": c.GetInt64("now"),
  124. }
  125. if req.Status == 4 {
  126. updates["reject_reason"] = req.RejectReason
  127. }
  128. err := s.DB().Model(&model.DtWithdrawOrder{}).Where("id = ? AND status = 0", req.Id).Updates(updates).Error
  129. if err != nil {
  130. response.Resp(c, err.Error())
  131. return
  132. }
  133. response.Resp(c, "操作成功")
  134. }
  135. // Pay 打款
  136. func (s *DtWithdrawOrderService) Pay(c *gin.Context) {
  137. s.SetDbAlias("daytask")
  138. type request struct {
  139. Id int64 `json:"id" binding:"required"`
  140. Txid string `json:"txid"`
  141. PayScreenshot string `json:"payScreenshot"`
  142. Remark string `json:"remark"`
  143. }
  144. var req request
  145. if err := c.ShouldBindJSON(&req); err != nil {
  146. response.Resp(c, err.Error())
  147. return
  148. }
  149. updates := map[string]interface{}{
  150. "status": 2,
  151. "txid": req.Txid,
  152. "pay_screenshot": req.PayScreenshot,
  153. "remark": req.Remark,
  154. "pay_time": c.GetInt64("now"),
  155. }
  156. err := s.DB().Model(&model.DtWithdrawOrder{}).Where("id = ? AND status = 1", req.Id).Updates(updates).Error
  157. if err != nil {
  158. response.Resp(c, err.Error())
  159. return
  160. }
  161. response.Resp(c, "操作成功")
  162. }
  163. // DtBalanceLogService 资金流水服务
  164. type DtBalanceLogService struct {
  165. base.BizCommonService
  166. }
  167. func (s *DtBalanceLogService) Get(c *gin.Context) {
  168. s.SetDbAlias("daytask")
  169. base.NewBaseHandler(model.NewDtBalanceLog()).Get(c, s.DB())
  170. }
  171. func (s *DtBalanceLogService) Find(c *gin.Context) {
  172. s.SetDbAlias("daytask")
  173. type request[T any] struct {
  174. base.ListRequest[T]
  175. UserId *int64 `form:"userId"`
  176. UserUid *string `form:"userUid"`
  177. Type *string `form:"type"`
  178. BeginTime *int64 `form:"beginTime"`
  179. EndTime *int64 `form:"endTime"`
  180. }
  181. req := new(request[model.DtBalanceLog])
  182. if err := c.BindQuery(req); err != nil {
  183. response.Resp(c, err.Error())
  184. return
  185. }
  186. db := s.DB()
  187. if req.UserId != nil && *req.UserId != 0 {
  188. db = db.Where("user_id", req.UserId)
  189. }
  190. if req.UserUid != nil && *req.UserUid != "" {
  191. db = db.Where("user_uid", req.UserUid)
  192. }
  193. if req.Type != nil && *req.Type != "" {
  194. db = db.Where("type", req.Type)
  195. }
  196. if req.BeginTime != nil && *req.BeginTime > 0 && req.EndTime != nil && *req.EndTime > 0 {
  197. db = db.Where("created_at BETWEEN ? AND ?", *req.BeginTime, *req.EndTime)
  198. }
  199. colInfo := s.GetColumnCommentFromStruct(model.DtBalanceLog{})
  200. resp, err := base.NewQueryBaseHandler(model.NewDtBalanceLog()).List(db, req)
  201. if err != nil {
  202. response.Resp(c, err.Error())
  203. return
  204. }
  205. response.Resp(c, map[string]interface{}{
  206. "cols": colInfo,
  207. "list": resp.List,
  208. "paging": resp.Paging,
  209. })
  210. }