package com.lion.util;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import org.json.JSONObject;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.WebApplicationContext;

import com.lion.dao.OrganizationTreeDao;

import jodd.util.StringUtil;

public class Util {
	/**
	 * 方法描述 生成6位随机数
	 * 
	 * @author cpf
	 * @since 2019年6月17日
	 * @return
	 */
	public static int random() {
		return (int) ((Math.random() * 9 + 1) * 100000);
	}

	/**手动获取jdbc连接
	 * @return
	 */
	public static JdbcTemplate jdbc() {
		WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
		JdbcTemplate jdbc = (JdbcTemplate) wac.getBean("jdbcTemplate");
		return jdbc;
	}
	/**
	 * 方法描述 返回前台方法String
	 * @author dlm
	 * @since 2019年2月26日
	 * @param f
	 *            错误类型： false true warn
	 * @param msg
	 *            错误信息:操作成功或失败等
	 * @return
	 */
	public static String responseString(String f, String msg) {
		JSONObject json = new JSONObject();
		json.put("success", f);
		json.put("message", msg);
		return json.toString();
	}
	public static Map<String, Object> responseMap(int count) {
		Map<String, Object> map = new HashMap<String, Object>();
		if(count>0){
			map.put("success", "true");
			map.put("message", "操作成功");
		}else{
			map.put("success", "false");
			map.put("message", "操作失败");
		}
		return map;
	}
	public static Map<String, Object> responseMap(String success,String message) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("success",success);
		map.put("message",message);
		return map;
	} 
	public static Map<String, Object> responseMap(String success,String message,String data) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("success",success);
		map.put("message",message);
		map.put("data",data);
		return map;
	} 
	/**
	 * 方法描述 返回前台方法 map
	 * 
	 * @author dlm
	 * @since 2019年2月26日
	 * @param success:false
	 *            true warn
	 * @param list
	 * @param count
	 * @return
	 */
	public static Map<String, Object> responseMap(String success, List<Map<String, Object>> list, int count) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("success", success);
		map.put("list", list);
		map.put("count", count);
		return map;
	}

	public static Map<String, Object> responseMap(String success, Object list, int count, int totalpage,
			String currentPage) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("success", success);
		map.put("list", list);
		map.put("count", count);
		map.put("totalpages", totalpage);// 分页数
		map.put("currentPage", currentPage);
		return map;
	};

	public static Map<String, Object> responseMap(String success, List<Map<String, Object>> list) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("success", success);
		map.put("list", list);
		return map;
	}

	/**
	 * 方法描述 获取uuid
	 * 
	 * @author dlm
	 * @since 2019年3月1日
	 * @return
	 */
	public static String getUUID() {
		return UUID.randomUUID().toString().replaceAll("-", "");
	}
	/**
	 * 
	 * 方法描述 字符转换，转成 'num','num',....
	 * @author mt.W
	 * @since 2019年4月3日
	 * @param ids
	 * @return
	 */
	public static String substringId(String str) {
		if (StringUtil.isNotEmpty(str)) {
			String ids[] = str.split(",");
			String id = "";
			for (int i = 0; i < ids.length; i++) {
				id += "'" + ids[i] + "',";
			}
			if (id.length() > 0) {
				id = id.substring(0, id.length() - 1);
			}
			return id;
		}
		return "";
	}
	/**
	 * 方法描述 通过部门id获取其
	 * @author mt.W
	 * @since 2019年8月28日
	 * @param orgid
	 * @param oDao
	 * @return
	 */
	public static String getOrgids(String orgid, OrganizationTreeDao oDao) {
		boolean run = true;
		String ids = "";
		if (StringUtil.isNotEmpty(orgid)) {// orgid不为空时
			ids += orgid + ",";
			do {
				List<Map<String, Object>> listOrgids = oDao.getOrgIds(Util.substringId(orgid));// 通过id获取子节点的id
				if (listOrgids.size() > 0) {
					orgid = "";
					for (Map<String, Object> mapOrg : listOrgids) {
						ids += mapOrg.get("id").toString() + ",";
						orgid += mapOrg.get("id").toString() + ",";// 下一轮orgid查询条件值
					}
				} else {// 已无子节点，跳出循环
					run = false;
				}

			} while (run);
		}
		if (StringUtil.isNotEmpty(ids)) {
			ids = ids.substring(0, ids.length() - 1);
		}
		return ids;
	}

}
