问题: 获取红包详情,红包关联了多个商品,查询的时候,根据商品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
}
}