面包店
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

191 lines
5.1 KiB

  1. package goods
  2. import (
  3. "applet/app/admin/md"
  4. "applet/app/db"
  5. "applet/app/svc"
  6. "applet/app/utils"
  7. "github.com/gin-gonic/gin"
  8. )
  9. // 获取列表数据
  10. func GetMallGoodsList(c *gin.Context, req *md.MallGoodsListReq) (interface{}, int64, error) {
  11. var goodsListResp []md.MallGoodListResp
  12. // 获取分库链接
  13. engine := db.Db
  14. // 查询goods数据表获取数据
  15. mallGoodsList, skus, total, err := db.GetMallGoodsListLeftOnMallSku(engine, req)
  16. if err != nil {
  17. return nil, 0, err
  18. }
  19. var tmpMap interface{}
  20. scheme, host, subDomain, moreSubDomain := svc.ImageBucketNew(c)
  21. if err != nil {
  22. return nil, 0, err
  23. }
  24. for _, item := range mallGoodsList {
  25. var goods md.MallGoodListResp
  26. goods.GoodsId = item["goods_id"]
  27. goods.SaleState = utils.StrToInt(item["sale_state"])
  28. goods.Sales = utils.StrToInt(item["sales"])
  29. goods.CreateAt = item["create_at"]
  30. // 商品主图
  31. if item["image_list"] != "" {
  32. utils.Unserialize([]byte(item["image_list"]), &tmpMap)
  33. var imageListUrlTmp []string
  34. for _, v := range tmpMap.([]interface{}) {
  35. imageListUrlTmp = append(imageListUrlTmp, svc.ImageFormatWithBucketNew(scheme, host, subDomain, moreSubDomain, v.(string)))
  36. }
  37. if imageListUrlTmp != nil {
  38. goods.Image = imageListUrlTmp[0]
  39. }
  40. }
  41. goods.UpdateAt = item["update_at"]
  42. goods.Title = item["title"]
  43. // 状态
  44. switch utils.StrToInt64(item["sale_state"]) {
  45. case 1.00:
  46. goods.SaleStateText = "銷售中"
  47. break
  48. case 2.00:
  49. goods.SaleStateText = "下架"
  50. break
  51. }
  52. // sku
  53. for _, skuItem := range skus {
  54. if skuItem.GoodsId == utils.StrToInt64(item["goods_id"]) {
  55. goods.SkuList = append(goods.SkuList, skuItem)
  56. }
  57. }
  58. // 获取价格、库存、重量范围、利润空间
  59. goods.Price = item["price"]
  60. // spe
  61. var spe []map[string]interface{}
  62. var speTmp []map[string]interface{}
  63. utils.Unserialize([]byte(item["spe"]), &spe)
  64. for _, itemSpe := range spe {
  65. tmp := make(map[string]interface{})
  66. tmp["type"] = "text"
  67. tmp["name"] = itemSpe["name"]
  68. subTmp := make([]map[string]interface{}, 0)
  69. for i, v := range itemSpe["values"].([]interface{}) {
  70. subTmp = append(subTmp, map[string]interface{}{
  71. "key": i,
  72. "name": v,
  73. })
  74. }
  75. tmp["values"] = subTmp
  76. speTmp = append(speTmp, tmp)
  77. }
  78. goods.Spe = speTmp
  79. goodsListResp = append(goodsListResp, goods)
  80. }
  81. return goodsListResp, total, err
  82. }
  83. // 获取列表数据(给方案用)
  84. //func GetMallGoodsListForScheme(c *gin.Context, req *md.MallGoodsListReq, schemeId int) (interface{}, int64, error) {
  85. // schemeDb := db.SchemeDb{}
  86. // schemeDb.Set()
  87. // schemeInfo, err := schemeDb.GetScheme(schemeId)
  88. // if err != nil {
  89. // return nil, 0, err
  90. // }
  91. // if schemeInfo == nil {
  92. // return nil, 0, errors.New("未查询到相应方案记录")
  93. // }
  94. //
  95. // var goodsListResp []md.MallGoodListResp
  96. // // 获取分库链接
  97. // engine := db.Db
  98. // // 查询goods数据表获取数据
  99. // mallGoodsList, skus, total, err := db.GetMallGoodsListLeftOnMallSku(engine, req)
  100. // if err != nil {
  101. // return nil, 0, err
  102. // }
  103. // var tmpMap interface{}
  104. // scheme, host, subDomain, moreSubDomain := svc.ImageBucketNew(c)
  105. // if err != nil {
  106. // return nil, 0, err
  107. // }
  108. //
  109. // //获取方案中sku的价格
  110. // var skuIds []string
  111. // for _, v := range skus {
  112. // skuIds = append(skuIds, utils.Int64ToStr(v.SkuId))
  113. // }
  114. //
  115. // var schemeWithSkusMap = map[int]*model.SchemeWithSku{}
  116. // if len(skuIds) > 0 {
  117. // var schemeWithSkus []*model.SchemeWithSku
  118. // err = engine.Where("1 = 1").And(fmt.Sprintf("sku_id In (%s)", strings.Join(skuIds, ","))).Find(&schemeWithSkus)
  119. // if err != nil {
  120. // return nil, 0, err
  121. // }
  122. // for _, v := range schemeWithSkus {
  123. // schemeWithSkusMap[v.SkuId] = v
  124. // }
  125. // }
  126. //
  127. // for _, item := range mallGoodsList {
  128. // var goods md.MallGoodListResp
  129. // goods.GoodsId = item["goods_id"]
  130. // goods.SaleState = utils.StrToInt(item["sale_state"])
  131. // goods.Sales = utils.StrToInt(item["sales"])
  132. // goods.CreateAt = item["create_at"]
  133. //
  134. // // 商品主图
  135. // if item["image_list"] != "" {
  136. // utils.Unserialize([]byte(item["image_list"]), &tmpMap)
  137. // var imageListUrlTmp []string
  138. // for _, v := range tmpMap.([]interface{}) {
  139. // imageListUrlTmp = append(imageListUrlTmp, svc.ImageFormatWithBucketNew(scheme, host, subDomain, moreSubDomain, v.(string)))
  140. // }
  141. // if imageListUrlTmp != nil {
  142. // goods.Image = imageListUrlTmp[0]
  143. // }
  144. // }
  145. //
  146. // goods.UpdateAt = item["update_at"]
  147. // goods.Title = item["title"]
  148. //
  149. // // 状态
  150. // switch utils.StrToInt64(item["sale_state"]) {
  151. // case 1.00:
  152. // goods.SaleStateText = "銷售中"
  153. // break
  154. // case 2.00:
  155. // goods.SaleStateText = "下架"
  156. // break
  157. // }
  158. //
  159. // // sku
  160. // for _, skuItem := range skus {
  161. // if skuItem.GoodsId == utils.StrToInt64(item["goods_id"]) {
  162. // goods.SkuList = append(goods.SkuList, skuItem)
  163. // }
  164. // }
  165. // // 获取价格、库存、重量范围、利润空间
  166. // goods.Price = item["price"]
  167. // goodsListResp = append(goodsListResp, goods)
  168. // }
  169. //
  170. // return goodsListResp, total, err
  171. //}
  172. func CheckSkuCode(c *gin.Context, skuCode, goodsId string) (bool, error) {
  173. engine := db.Db
  174. isHas, _, err := db.GetMallSkuBySkuCode(engine, skuCode, goodsId)
  175. if err != nil {
  176. return false, err
  177. }
  178. return isHas, nil
  179. }