import { defHttp } from '/@/utils/http/axios';

import { useUserStore } from '/@/store/modules/user';

import { getAuthCache } from '/@/utils/auth';

import { DB_DICT_DATA_KEY } from '/@/enums/cacheEnum';



/**

 * 从缓存中获取字典配置

 * @param code

 */

export const getDictItemsByCode = (code) => {

  // update-begin--author:liaozhiyang---date:20230908---for:【QQYUN-6417】生产环境字典慢的问题

  const userStore = useUserStore();

  const dictItems = userStore.getAllDictItems;

  if (null != dictItems && typeof dictItems === 'object' && dictItems[code]) {

    return dictItems[code];

  }

  //update-begin-author:liusq---date:2023-10-13--for: 【issues/777】列表 分类字典不显示

  //兼容以前的旧写法

  if (getAuthCache(DB_DICT_DATA_KEY) && getAuthCache(DB_DICT_DATA_KEY)[code]) {

    return getAuthCache(DB_DICT_DATA_KEY)[code];

  }

  //update-end-author:liusq---date:2023-10-13--for:【issues/777】列表 分类字典不显示



  // update-end--author:liaozhiyang---date:20230908---for:【QQYUN-6417】生产环境字典慢的问题



};

/**

 * 从缓存中获取Pop字典配置

 * @param text

 * @param code

 */

export const getPopDictByCode = (text, codeStr) => {

  const [code, dictCode, dictText] = codeStr.split(',');

  if (!code || !dictCode || !dictText) {

    return [];

  }

  return defHttp.get(

    { url: `/online/api/cgreportGetDataPackage`, params: { code, dictText, dictCode, dataList: text } },

    { isTransformResponse: false }

  );

};

/**

 * 获取字典数组

 * @param dictCode 字典Code

 * @return List<Map>

 */

export const initDictOptions = (code) => {

  //1.优先从缓存中读取字典配置

  if (getDictItemsByCode(code)) {

    return new Promise((resolve, reject) => {

      resolve(getDictItemsByCode(code));

    });

  }

  //2.获取字典数组

  //update-begin-author:taoyan date:2022-6-21 for: 字典数据请求前将参数编码处理,但是不能直接编码,因为可能之前已经编码过了

  if (code.indexOf(',') > 0 && code.indexOf(' ') > 0) {

    // 编码后类似sys_user%20where%20username%20like%20xxx' 是不包含空格的,这里判断如果有空格和逗号说明需要编码处理

    code = encodeURI(code);

  }

  //update-end-author:taoyan date:2022-6-21 for: 字典数据请求前将参数编码处理,但是不能直接编码,因为可能之前已经编码过了

  return defHttp.get({ url: `/sys/dict/getDictItems/${code}` });

};

/**

 * 获取字典数组

 * @param code 字典Code

 * @param params 查询参数

 * @param options 查询配置

 * @return List<Map>

 */

export const ajaxGetDictItems = (code, params, options?) => defHttp.get({ url: `/sys/dict/getDictItems/${code}`, params }, options);