package com.huatek.busi.service.impl;

import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;

import com.alibaba.dubbo.config.annotation.Service;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.huatek.busi.common.SiteConstants.Status;
import com.huatek.busi.dao.SysConfigDao;
import com.huatek.busi.dto.SysConfigDTO;
import com.huatek.busi.entity.SysConfig;
import com.huatek.busi.mapper.SysConfigMapper;
import com.huatek.busi.service.SysConfigService;
import com.huatek.busi.vo.SysConfigVO;
import com.huatek.frame.base.util.BeanUtils;
import com.huatek.torch.frame.tools.ConstantUtil;
import com.huatek.torch.frame.tools.ResultUtil;
import com.huatek.torch.util.uuid.Uuid;

/**
 * 系统配置 ServiceImpl
 * @author edward_luo
 * @date Jun 25, 2019 17:12:13 PM
 */
@Component
@Service(interfaceClass = SysConfigService.class)
@Transactional(rollbackFor = Exception.class)
public class SysConfigServiceImpl implements SysConfigService {

    @Autowired
    private SysConfigDao sysConfigDao;
    
    @Autowired
    private SysConfigMapper sysConfigMapper;

	@Override
	public Map<String, Object> findSysConfigPage(SysConfigDTO sysConfigDto) {
		if (sysConfigDto.getPage() != null && sysConfigDto.getLimit() != null) {
            PageHelper.startPage(sysConfigDto.getPage(), sysConfigDto.getLimit());
        }
        Page<SysConfigVO> busiSites = sysConfigMapper.selectSysConfigPage(sysConfigDto);
        return ResultUtil.put(ConstantUtil.REQUEST_SUCCESS, busiSites.getTotal(), "", busiSites.getResult());
	}
	
	@Override
	public int addSysConfig(SysConfigDTO sysConfigDto) {
		SysConfig sysConfig = new SysConfig();
        BeanUtils.copyPropertiesWithIgnoreNull(sysConfigDto, sysConfig);
        sysConfig.setId(Uuid.getUUID());
        int count = sysConfigDao.add(sysConfig);
        return count;
	}

	@Override
	public SysConfig findSysConfig(String id) {
		return sysConfigDao.get(id);
	}

	@Override
	public int updateSysConfig( SysConfigDTO sysConfigDto) {
		SysConfig sysConfig = new SysConfig();
        BeanUtils.copyPropertiesWithIgnoreNull(sysConfigDto, sysConfig);
        int count = sysConfigDao.updateLocal(sysConfig);
        return count;
	}

	@Override
	public int deleteSysConfig(String[] ids) {
        int count = 0;
        if (ids == null || ids.length == 0) {
            return count;
        }
        for (String id : ids) {
        	SysConfig sysConfig = sysConfigDao.get(id);
            if(ObjectUtils.isEmpty(sysConfig)) {
                continue;
            }
            sysConfig.setStatus(Status.DELETE.getValue());
            count += sysConfigDao.updateLocal(sysConfig);
        }
        return count;
	}

}