
package com.lutao.cloud.admin.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lutao.cloud.admin.api.entity.SysDict;
import com.lutao.cloud.admin.api.entity.SysDictItem;
import com.lutao.cloud.admin.mapper.SysDictItemMapper;
import com.lutao.cloud.admin.service.SysDictItemService;
import com.lutao.cloud.admin.service.SysDictService;
import com.lutao.cloud.common.core.constant.CacheConstants;
import com.lutao.cloud.common.core.constant.enums.DictTypeEnum;
import com.lutao.cloud.common.core.util.MessageInfo;
import lombok.AllArgsConstructor;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.stereotype.Service;

/**
 * 字典项
 *

 * @date 2019/03/19
 */
@Service
@AllArgsConstructor
public class SysDictItemServiceImpl extends ServiceImpl<SysDictItemMapper, SysDictItem> implements SysDictItemService {

	private final SysDictService dictService;

	/**
	 * 删除字典项
	 * @param id 字典项ID
	 * @return
	 */
	@Override
	@CacheEvict(value = CacheConstants.DICT_DETAILS, allEntries = true)
	public MessageInfo removeDictItem(Integer id){
		// 根据ID查询字典ID
		SysDictItem dictItem = this.getById(id);
		SysDict dict = dictService.getById(dictItem.getDictId());
		// 系统内置
		if (DictTypeEnum.SYSTEM.getType().equals(dict.getSystem())){
			return MessageInfo.failed("系统内置字典项目不能删除");
		}
		return MessageInfo.ok(this.removeById(id));
	}

	/**
	 * 更新字典项
	 * @param item 字典项
	 * @return
	 */
	@Override
	@CacheEvict(value = CacheConstants.DICT_DETAILS, allEntries = true)
	public MessageInfo<Boolean> updateDictItem(SysDictItem item){
		// 查询字典
		SysDict dict = dictService.getById(item.getDictId());
		// 系统内置
		if (DictTypeEnum.SYSTEM.getType().equals(dict.getSystem())){
			return MessageInfo.failed("系统内置字典项目不能删除");
		}
		return MessageInfo.ok(this.updateById(item));
	}

}
