final_order_punish.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package final
  2. import (
  3. "errors"
  4. "fmt"
  5. "zhiyuan/pkg/db"
  6. "github.com/gin-gonic/gin"
  7. )
  8. type FinalOrderPunish struct {
  9. ID int64 `json:"id" prop:"add:false"`
  10. OrderId int64 `json:"orderId" label:"订单ID" type:"int" prop:"add" search:"="`
  11. Amount float64 `json:"amount" label:"金额" type:"float" prop:"add edit" default:"0" search:"="`
  12. Explain string `json:"explain" label:"说明" type:"string" prop:"add edit" search:"like"`
  13. Pictures string `json:"pictures" label:"图片" type:"string" search:"like"`
  14. CreatedId int64 `json:"created_id" type:"int" prop:"add:false"`
  15. DeletedAt int64 `json:"deleted_at" prop:"add:false select:false"`
  16. CreatedAt int64 `json:"created_at" prop:"add:false"`
  17. UpdatedAt int64 `json:"updated_at" prop:"add:false"`
  18. db.BaseModel
  19. }
  20. func (FinalOrderPunish) TableName() string {
  21. return "zy_final_order_punish"
  22. }
  23. func (FinalOrderPunish) ListPrivilege(c *gin.Context, data map[string]interface{}, s *db.Select) bool {
  24. return true
  25. }
  26. func (FinalOrderPunish) OnePrivilege(c *gin.Context, id int64) bool {
  27. return true
  28. }
  29. func (FinalOrderPunish) AddPrivilege(c *gin.Context, data map[string]interface{}, post map[string]interface{}) error {
  30. amount, _ := db.ToFloat64(data["amount"])
  31. if amount < 0 {
  32. return errors.New("扣款金额必须大于0")
  33. }
  34. data["created_id"] = c.GetInt("adminID")
  35. return nil
  36. }
  37. func (FinalOrderPunish) EditPrivilege(c *gin.Context, id int64, data map[string]interface{}, post map[string]interface{}) error {
  38. return nil
  39. }
  40. func (FinalOrderPunish) DelPrivilege(c *gin.Context, id int64) error {
  41. return nil
  42. }
  43. func (FinalOrderPunish) Page() bool {
  44. return false
  45. }
  46. func (FinalOrderPunish) Count() bool {
  47. return true
  48. }
  49. func (FinalOrderPunish) LeftJoin(data map[string]interface{}, s *db.Select) []db.JoinModel {
  50. return []db.JoinModel{}
  51. }
  52. type FinalOrderPunishStatist struct {
  53. OrderNo string `json:"order_no" label:"订单号" type:"string" prop:"select:order.order_no"`
  54. SupplierId int64 `json:"supplier_id" label:"材料商ID" type:"int" prop:"select:order.supplier_id"`
  55. ShopId int64 `json:"shop_id" label:"门店" type:"int" prop:"select:finalsite.shop_id"`
  56. Punished float64 `json:"punished" label:"已罚金额" type:"float" prop:"select:ifnull(deduction.deduction_total,0)"`
  57. UnPunished float64 `json:"unpunished" label:"未罚金额" type:"float" prop:"add:false select:zy_final_order_punish.amount-ifnull(deduction.deduction_total,0)"`
  58. FinalOrderPunish
  59. }
  60. type FinalOrderPunishStatistJoinDeduction struct {
  61. db.BaseModel
  62. }
  63. func (FinalOrderPunishStatistJoinDeduction) TableName() string {
  64. return "(select `deduction`.`supplierId`, `deduction`.`punishId`, ifnull(sum(`deduction`.`amount`),0) as `deduction_total` from `zy_final_order_punish_deduction` as `deduction` left join `zy_final_material_settle` as `settle` on `settle`.`id` = `deduction`.`settleId` where `deduction`.`deleted_at` = 0 and `settle`.`state` != -1 group by `deduction`.`punishId`)"
  65. }
  66. func (model FinalOrderPunishStatist) ListPrivilege(c *gin.Context, data map[string]interface{}, s *db.Select) bool {
  67. return model.FinalOrderPunish.ListPrivilege(c, data, s)
  68. }
  69. func (model FinalOrderPunishStatist) LeftJoin(data map[string]interface{}, s *db.Select) []db.JoinModel {
  70. return append(model.FinalOrderPunish.LeftJoin(data, s), db.JoinModel{
  71. Model: FinalOrderPunishStatistJoinDeduction{},
  72. As: "deduction",
  73. On: []string{
  74. fmt.Sprintf("`deduction`.`punishId` = `%s`.`id`", model.TableName()),
  75. },
  76. }, db.JoinModel{
  77. Model: FinalMaterialOrder{},
  78. As: "order",
  79. On: []string{
  80. fmt.Sprintf("`order`.`id` = `%s`.`orderId`", model.TableName()),
  81. },
  82. }, db.JoinModel{
  83. Model: FinalSite{},
  84. As: "finalsite",
  85. On: []string{"`finalsite`.`id` = `order`.`site_id`"},
  86. })
  87. }