package com.example.his.api.front.service;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.json.JSONUtil;
import com.example.his.api.db.dao.GoodsDao;
import com.example.his.api.db.dao.GoodsSnapshotDao;
import com.example.his.api.db.pojo.GoodsSnapshotEntity;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service("FrontGoodsServiceImpl")
@Slf4j
public class GoodsService {
    @Resource
    private GoodsDao goodsDao;

    @Resource
    private GoodsSnapshotDao goodsSnapshotDao;


    // 体检套餐-查询id
    @Cacheable(cacheNames = "goods", key = "#id")
    public HashMap searchGoodsById(int id) {
        Map param = new HashMap() {{
            put("id", id);
            put("status", true);
        }};
        HashMap goods = goodsDao.searchGoodsById(param);
        String[] ignoreColumns = {"tag", "checkup_1", "checkup_2", "checkup_3", "checkup_4"};
        if(goods != null) {
            for (String ignoreColumn : ignoreColumns) {
                goods.replace(ignoreColumn,JSONUtil.parseArray(goods.get(ignoreColumn)));
            }
            return goods;
        }
        return null;
    }

    // 体检套餐-推荐内容
    public HashMap searchGoodsByPartId(Map param) {
        List<Integer> partIdsList = MapUtil.get(param, "partIds", List.class);
        HashMap partIdMap = new HashMap();
        partIdsList.forEach(partId -> {
            partIdMap.put(partId, goodsDao.searchGoodsByPartId(partId));
        });
        return partIdMap;
    }

    // 体检套餐-查询商品
    public PageInfo<HashMap> searchGoodsByPage(Map param){
        PageHelper.startPage(MapUtil.getInt(param, "pageNum"), MapUtil.getInt(param, "pageSize"));
        ArrayList<HashMap> list = goodsDao.searchFrontGoodsByPage(param);
        PageInfo<HashMap> pageInfo = new PageInfo<>(list);
        return pageInfo;
    }

    // 查询商品快照
    public HashMap searchSnapshotById(String snapShotId){
        GoodsSnapshotEntity entity = goodsSnapshotDao.searchGoodsSnapshotById(snapShotId);
        HashMap map = BeanUtil.toBean(entity, HashMap.class);
        return map;
    }
}
