order.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package mysql
  2. import orm "duoduo/database"
  3. type Order struct {
  4. CreateTime string `gorm:"column:create_time" json:"createTime"`
  5. GoodsName string `gorm:"column:goods_name" json:"goodsName"`
  6. GoodsThumbnailURL string `gorm:"column:goods_thumbnail_url" json:"goodsThumbnailUrl"`
  7. JSONData string `gorm:"column:json_data" json:"jsonData"`
  8. OrderGroupSuccessTime string `gorm:"column:order_group_success_time" json:"orderGroupSuccessTime"`
  9. OrderID string `gorm:"column:order_id" json:"orderId"`
  10. OrderStatus int `gorm:"column:order_status" json:"orderStatus"`
  11. OrderStatusDesc string `gorm:"column:order_status_desc" json:"orderStatusDesc"`
  12. PID string `gorm:"column:p_id" json:"pId"`
  13. PromotionAmount int `gorm:"column:promotion_amount" json:"promotionAmount"`
  14. UpdateTime string `gorm:"column:update_time" json:"updateTime"`
  15. }
  16. // TableName sets the insert table name for this struct type
  17. func (o *Order) TableName() string {
  18. return "order"
  19. }
  20. func (o *Order) Create() (Order, error) {
  21. var doc Order
  22. result := orm.Eloquent.Table(o.TableName()).Create(&o)
  23. if result.Error != nil {
  24. err := result.Error
  25. return doc, err
  26. }
  27. doc = *o
  28. return doc, nil
  29. }
  30. func (o *Order) GetNum() int {
  31. var count int
  32. tableCount := orm.Eloquent.Table(o.TableName()).Where("order_id = ? ", o.OrderID)
  33. tableCount.Count(&count)
  34. return count
  35. }
  36. func (o *Order) GetAmount(openId string) (Wallet, error) {
  37. var wallet Wallet
  38. //历史总收益: 0,1,2,3,5 求和
  39. //今日预估收益:0,1,2,3 求和
  40. //昨日预估收益:0,1,2,3 求和
  41. //近30日预估收益:0,1,2,3,5 求和
  42. //可体现金额:5求和-已体现金额
  43. //已体现金额:提现记录求和
  44. //历史总收益
  45. err := orm.Eloquent.Select("SUM(promotion_amount) as total_amount").Where("order_status in (0,1,2,3,5) and open_id = ? ", openId).Table(o.TableName()).First(&wallet).Error
  46. if err != nil {
  47. return wallet, err
  48. }
  49. //今日收益
  50. err = orm.Eloquent.Select("SUM(promotion_amount) as today_amount").Where("order_status in (0,1,2,3) and open_id = ? and DATE(order_group_success_time) = curdate() ", openId).Table(o.TableName()).First(&wallet).Error
  51. if err != nil {
  52. return wallet, err
  53. }
  54. //昨日收益
  55. err = orm.Eloquent.Select("SUM(promotion_amount) as yesterday_amount").Where("order_status in (0,1,2,3) and open_id = ? and DATE(order_group_success_time) = date_sub(curdate(),interval 1 day) ", openId).Table(o.TableName()).First(&wallet).Error
  56. if err != nil {
  57. return wallet, err
  58. }
  59. //近30日收益
  60. err = orm.Eloquent.Select("SUM(promotion_amount) as lately_amount").Where("order_status in (0,1,2,3) and open_id = ? and DATE(order_group_success_time) >= date_sub(curdate(),interval 30 day) ", openId).Table(o.TableName()).First(&wallet).Error
  61. if err != nil {
  62. return wallet, err
  63. }
  64. //上个月结算收益
  65. err = orm.Eloquent.Select("SUM(promotion_amount) as available_amount").Where("order_status = 5 and open_id = ? and DATE(order_group_success_time) >= date_sub(date_sub(date_format(now(),'%y-%m-%d'),interval extract(day from now()) day),interval 0 month) ", openId).Table(o.TableName()).First(&wallet).Error
  66. if err != nil {
  67. return wallet, err
  68. }
  69. return wallet, nil
  70. }
  71. // 更新
  72. func (o *Order) Update(orderId string) (update Order, err error) {
  73. if err = orm.Eloquent.Table(o.TableName()).Where("order_id = ?", orderId).First(&update).Error; err != nil {
  74. return
  75. }
  76. //参数1:是要修改的数据
  77. //参数2:是修改的数据
  78. if err = orm.Eloquent.Table(o.TableName()).Model(&update).Updates(&o).Error; err != nil {
  79. return
  80. }
  81. return
  82. }