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 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 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 list= systemDictDataService.findList(data); return list; } @Override public void updateByIdNew(SystemDictData systemDictData) { systemDictDataService.updateById(systemDictData); } @Override public List 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 list= systemDictDataService.findList(data); return list; } @Override public void updateByDicId(List list) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); list.stream().forEach(s->{ s.setUpdateTime(new Date()); s.setUpdateUser(user.getId()); systemDictDataService.updateById(s); }); } }