productManager.go 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package productManager
  2. import (
  3. "context"
  4. "github.com/gogf/gf/v2/frame/g"
  5. "github.com/gogf/gf/v2/os/gctx"
  6. "jyOrderManager/internal/model"
  7. "jyOrderManager/internal/service"
  8. )
  9. type (
  10. sProductManager struct {
  11. ProductRoot []*model.ProductTop
  12. ProductCodeMapping map[string]*model.Product
  13. }
  14. )
  15. func init() {
  16. ctx := gctx.New()
  17. productManager, err := getInitJyProduct(ctx)
  18. if err != nil {
  19. g.Log().Panicf(ctx, "初始化剑鱼商品异常%s", err)
  20. }
  21. service.RegisterProduct(productManager)
  22. }
  23. func getInitJyProduct(ctx context.Context) (*sProductManager, error) {
  24. var (
  25. productRoot []*model.ProductTop
  26. productCodeMapping = map[string]*model.Product{}
  27. productCLass []*model.ProductClass
  28. productArray []*model.Product
  29. )
  30. //查询产品类
  31. classList, err := g.DB().Query(ctx, "SELECT * FROM jy_product_class WHERE state =1")
  32. if err != nil {
  33. return nil, err
  34. }
  35. if err := classList.Structs(&productCLass); err != nil {
  36. return nil, err
  37. }
  38. //查询所有产品
  39. productList, err := g.DB().Query(ctx, "SELECT * FROM jy_product_item WHERE state =1")
  40. if err != nil {
  41. return nil, err
  42. }
  43. if err := productList.Structs(&productArray); err != nil {
  44. return nil, err
  45. }
  46. for _, class := range productCLass {
  47. var topRoot *model.ProductTop
  48. for _, top := range productRoot {
  49. if top.Name == class.TopClass {
  50. topRoot = top
  51. break
  52. }
  53. }
  54. if topRoot == nil {
  55. topRoot = &model.ProductTop{
  56. Name: class.TopClass,
  57. ProductClassList: []*model.ProductClass{},
  58. }
  59. productRoot = append(productRoot, topRoot)
  60. }
  61. for _, productItem := range productArray {
  62. productCodeMapping[productItem.Code] = productItem
  63. if class.ClassId == productItem.ProductClassId {
  64. class.ProductList = append(class.ProductList, productItem)
  65. }
  66. }
  67. topRoot.ProductClassList = append(topRoot.ProductClassList, class)
  68. }
  69. g.Dump(productRoot)
  70. return &sProductManager{
  71. ProductRoot: productRoot,
  72. ProductCodeMapping: productCodeMapping,
  73. }, nil
  74. }
  75. // GetList 获取商品列表
  76. func (p *sProductManager) GetList(classId int) map[string]interface{} {
  77. return nil
  78. }
  79. // GetPrice 根据产品code及请求参数获取价格
  80. func (p *sProductManager) GetPrice(productCode string, param interface{}) {
  81. }