Clojure--如何把多个数据放入到一个数组中

问题: 获取红包详情,红包关联了多个商品,查询的时候,根据商品id去查询出商品信息,放入到一个数组中,组装返回,怎么实现呢?

(defn coupon-detail
  "红包详情"
  [coupon company-id]
  (let [data (assemble-coupon (db/find-coupon coupon))
        proudct-list (get-product-list (:product_ids data) company-id)]
    (assoc data :product_list proudct-list)))

循环把对象放入到一个数组中方法:

for循环遍历product_ids,根据product_id获取商品,组装放如一个数组中返回:

(defn get-product-list
  "根据商品ids获取商品列表"
  [product-ids company-id]
  (let [result (for [product-id product-ids
                     :let [product (product-db/get-product-by-id {:product_id product-id :company_id company-id})]
                     :when (seq product)]
                 (conj (select-keys product [:product_id :product_name :product_no :vip_price :sales_price])))]
    (identity  result)))

返回结果:

{
  "code": 0,
  "msg": "操作成功",
  "data": {
    "coupon_total": -1,
    "coupon_type": 2,
    "per_total": -1,
    "product_list": [
      {
        "product_id": "400003",
        "product_name": "黑色经典纯色大气戗驳领单排双扣商务套装",
        "product_no": null,
        "vip_price": 3990,
        "sales_price": 4580
      },
      {
        "product_id": "400004",
        "product_name": null,
        "product_no": "CS19CSM01022A",
        "vip_price": 2793,
        "sales_price": 3206
      },
      {
        "product_id": "400005",
        "product_name": null,
        "product_no": "CS19CSM02022A",
        "vip_price": 1197,
        "sales_price": 1374
      }
    ],
    "expire_type": 2,
    "app_id": "1",
    "category_ids": [
      "1004"
    ],
    "coupon_state": 1,
    "extend_props": {},
    "over_amount": 0,
    "effective_value": 0,
    "effective_type": 2,
    "group_name": "",
    "id": "100",
    "create_time": 1565550265,
    "delete_flag": 0,
    "coupon_title": "价值399元纯棉衬衫1件",
    "product_ids": [
      "400003",
      "400004",
      "400005"
    ],
    "discount_amount": 399,
    "expire_value": 999
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值