calculate.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package material
  2. import (
  3. "reflect"
  4. "zhiyuan/models/calc"
  5. "zhiyuan/pkg/app"
  6. "zhiyuan/pkg/db"
  7. "zhiyuan/pkg/utils"
  8. "zhiyuan/services/calculate"
  9. "github.com/gin-gonic/gin"
  10. )
  11. func CalcList(c *gin.Context) {
  12. db.ModelList(reflect.TypeOf(calc.Calculate{}), map[string]interface{}{"state": 1}, c)
  13. }
  14. func CalcInfo(c *gin.Context) {
  15. id := utils.ToInt(c.Param("id"))
  16. if id <= 0 {
  17. app.ErrorMsg(c, "id must be a number", nil)
  18. return
  19. }
  20. calc := calc.GetCalculateModel(int64(id), false)
  21. app.Success(c, calc)
  22. }
  23. func Calc(c *gin.Context) {
  24. var form calculate.OrderFrom
  25. if app.Bind(c, &form) != nil {
  26. return
  27. }
  28. order, err := form.CreateOrder()
  29. if err != nil {
  30. app.ErrorMsg(c, err.Error(), nil)
  31. return
  32. }
  33. order.AdminId = int64(c.GetInt("adminID"))
  34. context := calculate.NewContext(order, c)
  35. context.Eval()
  36. err = order.Save()
  37. if err != nil {
  38. app.ErrorMsg(c, err.Error(), nil)
  39. return
  40. }
  41. app.Success(c, gin.H{"id": order.ID})
  42. }
  43. func OrderInfo(c *gin.Context) {
  44. id := utils.ToInt(c.Param("id"))
  45. if id <= 0 {
  46. app.ErrorMsg(c, "id must be a number", nil)
  47. return
  48. }
  49. var model calc.Order
  50. db.GetModel(map[string]interface{}{"id": id}, &model)
  51. if model.ID == 0 {
  52. app.ErrorMsg(c, "订单不存在", nil)
  53. return
  54. }
  55. order, err := calculate.LoadOrder(model)
  56. if err != nil {
  57. app.ErrorMsg(c, err.Error(), nil)
  58. return
  59. }
  60. calc := order.Calc.FilterShow()
  61. from := order.GetFrom(false)
  62. app.Success(c, gin.H{"calc": calc, "from": from})
  63. }
  64. func OrderEdit(c *gin.Context) {
  65. id := utils.ToInt(c.Param("id"))
  66. if id <= 0 {
  67. app.ErrorMsg(c, "id must be a number", nil)
  68. return
  69. }
  70. var form calculate.OrderFrom
  71. if app.Bind(c, &form) != nil {
  72. return
  73. }
  74. order, err := form.CreateOrder()
  75. if err != nil {
  76. app.ErrorMsg(c, err.Error(), nil)
  77. return
  78. }
  79. var model calc.Order
  80. db.GetModel(map[string]interface{}{"id": id}, &model)
  81. if model.ID == 0 {
  82. app.ErrorMsg(c, "订单不存在", nil)
  83. return
  84. }
  85. order.ID = model.ID
  86. order.AdminId = model.AdminId
  87. context := calculate.NewContext(order, c)
  88. context.Eval()
  89. err = order.Save()
  90. if err != nil {
  91. app.ErrorMsg(c, err.Error(), nil)
  92. return
  93. }
  94. app.Success(c, nil)
  95. }