package com.doumee.biz.system.impl; 
 | 
  
 | 
import com.doumee.biz.system.SystemDictDataBiz; 
 | 
import com.doumee.core.constants.Constants; 
 | 
import com.doumee.core.exception.BusinessException; 
 | 
import com.doumee.core.constants.ResponseStatus; 
 | 
import com.doumee.core.model.LoginUserInfo; 
 | 
import com.doumee.core.utils.qiyeweixin.QywxUtil; 
 | 
import com.doumee.dao.common.dto.UpdateSortDTO; 
 | 
import com.doumee.dao.system.model.SystemDict; 
 | 
import com.doumee.dao.system.model.SystemDictData; 
 | 
import com.doumee.service.system.SystemDictDataService; 
 | 
import com.doumee.service.system.SystemDictService; 
 | 
import org.apache.commons.lang3.StringUtils; 
 | 
import org.apache.shiro.SecurityUtils; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
  
 | 
import java.util.Arrays; 
 | 
import java.util.Date; 
 | 
import java.util.List; 
 | 
  
 | 
@Service 
 | 
public class SystemDictDataBizImpl implements SystemDictDataBiz { 
 | 
  
 | 
    @Autowired 
 | 
    private SystemDictDataService systemDictDataService; 
 | 
    @Autowired 
 | 
    private SystemDictService systemDictService; 
 | 
  
 | 
    @Override 
 | 
    public Integer create(SystemDictData systemDictData) { 
 | 
        SystemDictData queryDto = new SystemDictData(); 
 | 
        queryDto.setDictId(systemDictData.getDictId()); 
 | 
        queryDto.setCode(systemDictData.getCode()); 
 | 
        queryDto.setDeleted(Boolean.FALSE); 
 | 
        SystemDictData dictData = systemDictDataService.findOne(queryDto); 
 | 
        if (dictData != null) { 
 | 
            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "数据值已存在"); 
 | 
        } 
 | 
        // 排序处理 
 | 
        queryDto = new SystemDictData(); 
 | 
        queryDto.setDictId(systemDictData.getDictId()); 
 | 
        queryDto.setDeleted(Boolean.FALSE); 
 | 
        long maxSort = systemDictDataService.count(queryDto); 
 | 
        systemDictData.setSort(Integer.valueOf("" + maxSort)); 
 | 
        return systemDictDataService.create(systemDictData); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateById(SystemDictData systemDictData) { 
 | 
        systemDictDataService.updateById(systemDictData); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public     String updateQywxToken(){ 
 | 
        String corpid = queryByCode(Constants.QYWX,Constants.QYWX_CORPID).getCode(); 
 | 
        String secret = queryByCode(Constants.QYWX,Constants.QYWX_SECRET).getCode(); 
 | 
        String token = QywxUtil.getAccessToken(corpid,secret); 
 | 
       SystemDictData dictData = queryByCode(Constants.QYWX,Constants.QYWX_TOKEN); 
 | 
        if (dictData != null  ) { 
 | 
            dictData.setCode(token); 
 | 
            dictData.setUpdateTime(new Date()); 
 | 
            systemDictDataService.updateById(dictData); 
 | 
            String ticket = QywxUtil.getJsApiTicket(token); 
 | 
            SystemDictData ticketDictData = queryByCode(Constants.QYWX,Constants.QYWX_JS_API_TICKET); 
 | 
            if (dictData != null  ) { 
 | 
                ticketDictData.setCode(ticket); 
 | 
                ticketDictData.setUpdateTime(new Date()); 
 | 
                systemDictDataService.updateById(ticketDictData); 
 | 
            } 
 | 
        } 
 | 
        return  token; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void sort(UpdateSortDTO dto) { 
 | 
        SystemDictData dictData = systemDictDataService.findById(dto.getId()); 
 | 
        if (dictData == null || dictData.getDeleted()) { 
 | 
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "排序的数据不存在或已被删除"); 
 | 
        } 
 | 
        SystemDictData queryDto = new SystemDictData(); 
 | 
        queryDto.setDictId(dictData.getDictId()); 
 | 
        queryDto.setDeleted(Boolean.FALSE); 
 | 
        List<SystemDictData> dictDataList = systemDictDataService.findList(queryDto); 
 | 
        int index = 0; 
 | 
        for (int i = 0; i < dictDataList.size(); i++) { 
 | 
            if (dictDataList.get(i).getId().equals(dto.getId())) { 
 | 
                index = i; 
 | 
                break; 
 | 
            } 
 | 
        } 
 | 
        // 上移 
 | 
        if ("top".equals(dto.getDirection())) { 
 | 
            if (index - 1 < 0) { 
 | 
                return; 
 | 
            } 
 | 
            SystemDictData preDictData = dictDataList.remove(index - 1); 
 | 
            dictDataList.add(index, preDictData); 
 | 
        } 
 | 
        // 下移 
 | 
        else { 
 | 
            if (index + 1 > dictDataList.size() - 1) { 
 | 
                return; 
 | 
            } 
 | 
            SystemDictData nextDictData = dictDataList.remove(index + 1); 
 | 
            dictDataList.add(index, nextDictData); 
 | 
        } 
 | 
        for (int i = 0; i < dictDataList.size(); i++) { 
 | 
            dictDataList.get(i).setSort(i); 
 | 
        } 
 | 
        // 修改 
 | 
        systemDictDataService.updateByIdInBatch(dictDataList); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public SystemDictData queryByCode(String dicCode, String label){ 
 | 
        SystemDict queryDto = new SystemDict(); 
 | 
        queryDto.setCode(dicCode); 
 | 
        queryDto.setDeleted(Boolean.FALSE); 
 | 
        SystemDict dictData = systemDictService.findOne(queryDto); 
 | 
        if (dictData == null) { 
 | 
            return  new SystemDictData(); 
 | 
//            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "数据值不存在"); 
 | 
        } 
 | 
        SystemDictData data = new SystemDictData(); 
 | 
        data.setDictId(dictData.getId()); 
 | 
        data.setLabel(label); 
 | 
        data.setDeleted(Boolean.FALSE); 
 | 
        data = systemDictDataService.findOne(data); 
 | 
        if(data == null){ 
 | 
            data = new SystemDictData(); 
 | 
        } 
 | 
        return data; 
 | 
    } 
 | 
    @Override 
 | 
    public  String  queryCodeById(Integer id){ 
 | 
        SystemDictData data =  systemDictDataService.findById(id); 
 | 
        if(data != null){ 
 | 
            return  data.getCode(); 
 | 
        } 
 | 
        return null; 
 | 
    } 
 | 
  
 | 
  
 | 
    @Override 
 | 
    public List<SystemDictData> queryListByCode(String dicCode, String label){ 
 | 
        SystemDict queryDto = new SystemDict(); 
 | 
        queryDto.setCode(dicCode); 
 | 
        queryDto.setDeleted(Boolean.FALSE); 
 | 
        SystemDict dictData = systemDictService.findOne(queryDto); 
 | 
        if (dictData == null) { 
 | 
            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "数据值不存在"); 
 | 
        } 
 | 
        SystemDictData data = new SystemDictData(); 
 | 
        data.setDictId(dictData.getId()); 
 | 
        data.setLabel(label); 
 | 
        data.setDeleted(Boolean.FALSE); 
 | 
        List<SystemDictData> list= systemDictDataService.findList(data); 
 | 
  
 | 
        return list; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateByIdNew(SystemDictData systemDictData) { 
 | 
        systemDictDataService.updateById(systemDictData); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public List<SystemDictData> queryDataByCode(String dicCode, String code){ 
 | 
        SystemDict queryDto = new SystemDict(); 
 | 
        queryDto.setCode(dicCode); 
 | 
        queryDto.setDeleted(Boolean.FALSE); 
 | 
        SystemDict dictData = systemDictService.findOne(queryDto); 
 | 
        if (dictData == null) { 
 | 
            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "数据值不存在"); 
 | 
        } 
 | 
        SystemDictData data = new SystemDictData(); 
 | 
        data.setDictId(dictData.getId()); 
 | 
        data.setCode(code); 
 | 
        data.setDeleted(Boolean.FALSE); 
 | 
        List<SystemDictData> list= systemDictDataService.findList(data); 
 | 
  
 | 
        return list; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateByDicId(List<SystemDictData> list) { 
 | 
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); 
 | 
        list.stream().forEach(s->{ 
 | 
            s.setUpdateTime(new Date()); 
 | 
            s.setUpdateUser(user.getId()); 
 | 
            systemDictDataService.updateById(s); 
 | 
        }); 
 | 
  
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
} 
 |