| 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); | 
|         }); | 
|   | 
|     } | 
|   | 
|     @Override | 
|     public String getPreFixPath(String resourceCode, String targetCode) { | 
|   | 
|         if (StringUtils.isBlank(resourceCode) || StringUtils.isBlank(targetCode)){ | 
|             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"路径参数不完整"); | 
|         } | 
|         SystemDict queryDto = new SystemDict(); | 
|         queryDto.setCode(Constants.FTP); | 
|         queryDto.setDeleted(Boolean.FALSE); | 
|         SystemDict dictData = systemDictService.findOne(queryDto); | 
|         if (dictData == null) { | 
|             throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "数据值不存在"); | 
|         } | 
|         List<SystemDictData> list = systemDictDataService.findList(dictData.getId(), Arrays.asList(resourceCode, targetCode)); | 
|         String resourcePath = list.stream().filter(s->s.getLabel().equals(resourceCode)).findFirst().map(s->s.getCode()).orElse(""); | 
|         String targetPath = list.stream().filter(s -> s.getLabel().equals(targetCode)).findFirst().map(s -> s.getCode()).orElse(""); | 
|         return resourcePath+targetPath; | 
|     } | 
|   | 
| } |