<?xml version="1.0" encoding="UTF-8"?>

<!--
  ~
  ~      Copyright (c) 2018-2025, lengleng All rights reserved.
  ~
  ~  Redistribution and use in source and binary forms, with or without
  ~  modification, are permitted provided that the following conditions are met:
  ~
  ~ Redistributions of source code must retain the above copyright notice,
  ~  this list of conditions and the following disclaimer.
  ~  Redistributions in binary form must reproduce the above copyright
  ~  notice, this list of conditions and the following disclaimer in the
  ~  documentation and/or other materials provided with the distribution.
  ~  Neither the name of the yifu4cloud.com developer nor the names of its
  ~  contributors may be used to endorse or promote products derived from
  ~  this software without specific prior written permission.
  ~  Author: lengleng (wangiegie@gmail.com)
  ~
  -->

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.yifu.cloud.plus.v1.yifu.admin.mapper.SysDictMapper">

  <resultMap id="sysDictMap" type="com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysDict">
    <id property="id" column="id"/>
    <result property="type" column="type"/>
    <result property="description" column="description"/>
    <result property="remark" column="remark"/>
    <result property="systemFlag" column="system_flag"/>
    <result property="delFlag" column="del_flag"/>
    <result property="parentItemType" column="parent_item_type"/>
    <result property="createTime" column="create_time"/>
    <result property="createBy" column="create_by"/>
    <result property="updateBy" column="update_by"/>
    <result property="updateTime" column="update_time"/>
    <result property="createName" column="create_name"/>
  </resultMap>

	<resultMap id="dictRedisMap" type="com.yifu.cloud.plus.v1.yifu.admin.api.vo.DictRedisVo">
		<result property="key" column="key"/>
		<result property="value" column="value"/>
	</resultMap>

	<select id="getParentDicLabelById" resultType="java.lang.String">
		SELECT
			i.label,
			i.type
		FROM
			sys_dict_item a
				LEFT JOIN sys_dict d ON d.type = a.type
				LEFT JOIN sys_dict_item i ON i.type = d.parent_item_type
		WHERE
			a.type = #{type}
		  AND i.`value` = a.parent_id
		  AND a.disable ='0'
		  AND a.`value` = #{value}
		  AND i.del_flag='0' limit 1
	</select>

	<select id="selectChildDictItemCount" resultType="java.lang.Integer">

		SELECT
			count(1)
		FROM
			sys_dict_item t
		WHERE
				t.type IN (
				SELECT
					a.type
				FROM
					sys_dict_item a
						LEFT JOIN sys_dict c ON c.type = a.type
				WHERE
					c.parent_item_type = #{parentItemType}
				    and t.parent_id= #{parentId} and t.del_flag='0'
			)
	</select>
	<select id="getDictRedisVo" resultMap="dictRedisMap">
		SELECT
			CONCAT(a.type,"_",a.`value`) as "key",
			a.label as "value"
		FROM
			sys_dict_item a
		WHERE
			a.del_flag='0'
	</select>
</mapper>
