面包店
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.
 
 
 
 
 

220 lines
6.1 KiB

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