module_shop_act_images_reorder.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package modules
  2. import (
  3. "encoding/json"
  4. "golang-fave/engine/wrapper"
  5. "golang-fave/utils"
  6. )
  7. type OrderItem struct {
  8. Id int
  9. Order int
  10. }
  11. type Orders struct {
  12. Items []OrderItem
  13. }
  14. func (this *Modules) RegisterAction_ShopImagesReorder() *Action {
  15. return this.newAction(AInfo{
  16. WantDB: true,
  17. Mount: "shop-images-reorder",
  18. WantAdmin: true,
  19. }, func(wrap *wrapper.Wrapper) {
  20. pf_data := utils.Trim(wrap.R.FormValue("data"))
  21. var orders Orders
  22. if err := json.Unmarshal([]byte(pf_data), &orders); err != nil {
  23. wrap.MsgError(err.Error())
  24. return
  25. }
  26. if len(orders.Items) > 0 {
  27. if err := wrap.DB.Transaction(func(tx *wrapper.Tx) error {
  28. for _, value := range orders.Items {
  29. if _, err := tx.Exec("UPDATE shop_product_images SET ord = ? WHERE id = ?;", value.Order, value.Id); err != nil {
  30. return err
  31. }
  32. }
  33. return nil
  34. }); err != nil {
  35. wrap.MsgError(err.Error())
  36. return
  37. }
  38. }
  39. wrap.RecreateProductXmlFile()
  40. wrap.ResetCacheBlocks()
  41. // Remove loading effect
  42. wrap.Write(`$('#list-images').removeClass('loading');`)
  43. })
  44. }