package com.doumee.service.business.impl; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.LoginUserInfo; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Constants; import com.doumee.core.utils.Utils; import com.doumee.dao.business.CardMapper; import com.doumee.dao.business.CardParamMapper; import com.doumee.dao.business.join.CardParamJoinMapper; import com.doumee.dao.business.model.Card; import com.doumee.dao.business.model.CardParam; import com.doumee.dao.web.dto.AddCardParamDTO; import com.doumee.dao.web.dto.CardParamDTO; import com.doumee.service.business.CardParamService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.List; /** * 充值卡配置信息表Service实现 * @author 江蹄蹄 * @date 2023/04/13 11:22 */ @Service public class CardParamServiceImpl implements CardParamService { @Autowired private CardParamMapper cardParamMapper; @Autowired CardParamJoinMapper cardParamJoinMapper; @Autowired private CardMapper cardMapper; @Autowired private SystemDictDataBiz systemDictDataBiz; @Override public Integer create(AddCardParamDTO cardParam) { LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda().eq(CardParam::getIndexNo,cardParam.getIndexNo()) .or() .eq(CardParam::getName,cardParam.getName()); List cardParams = cardParamMapper.selectList(wrapper); boolean nameMatch = cardParams.stream().map(s -> s.getName()).anyMatch(s -> s.equalsIgnoreCase(cardParam.getName())); boolean indexNoMatch = cardParams.stream().map(s -> s.getIndexNo()).anyMatch(s -> s.equalsIgnoreCase(cardParam.getIndexNo())); if (nameMatch){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"名称不能重复"); } if (indexNoMatch){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"卡号开头不能重复"); } CardParam insert = new CardParam(); insert.setCreator(loginUserInfo.getId()); insert.setEditor(loginUserInfo.getId()); insert.setName(cardParam.getName()); insert.setImgurl(cardParam.getImgurl()); insert.setIndexNo(String.format("%4s",cardParam.getIndexNo()).replace(" ","0")); insert.setStartNo(String.format("%7s",cardParam.getStartNo()).replace(" ","0")); // insert.setValidDate(); insert.setStatus(Constants.ZERO); insert.setSortnum(cardParam.getSortnum()); cardParamMapper.insert(insert); return insert.getId(); } @Override public void deleteById(Integer id) { cardParamMapper.deleteById(id); } @Override public void delete(CardParam cardParam) { UpdateWrapper deleteWrapper = new UpdateWrapper<>(cardParam); cardParamMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } cardParamMapper.deleteBatchIds(ids); } @Override public void updateById(AddCardParamDTO cardParam) { LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda().eq(Card::getParamId,cardParam.getId()); Long integer =Constants.formatLongNum( cardMapper.selectCount(wrapper)); if (integer!=null && integer > Constants.ZERO){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"卡已经生成不允许修改配置"); } CardParam update = new CardParam(); update.setId(cardParam.getId()); update.setCreator(loginUserInfo.getId()); update.setEditor(loginUserInfo.getId()); update.setName(cardParam.getName()); update.setImgurl(cardParam.getImgurl()); update.setIndexNo(cardParam.getIndexNo()); update.setStartNo(cardParam.getStartNo()); update.setStatus(cardParam.getStatus()); update.setSortnum(cardParam.getSortnum()); cardParamMapper.updateById(update); } @Override public void updateByIdInBatch(List cardParams) { if (CollectionUtils.isEmpty(cardParams)) { return; } for (AddCardParamDTO cardParam: cardParams) { this.updateById(cardParam); } } @Override public CardParam findById(Integer id) { return cardParamMapper.selectById(id); } @Override public CardParam findOne(CardParam cardParam) { QueryWrapper wrapper = new QueryWrapper<>(cardParam); return cardParamMapper.selectOne(wrapper); } @Override public List findList(CardParam cardParam) { QueryWrapper wrapper = new QueryWrapper<>(cardParam); return cardParamMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); // queryWrapper.leftJoin(Card.class,Card::getParamId,CardParam::getId); if (pageWrap.getModel().getId() != null) { queryWrapper.eq(CardParam::getId, pageWrap.getModel().getId()); } if (pageWrap.getModel().getCreator() != null) { queryWrapper.eq(CardParam::getCreator, pageWrap.getModel().getCreator()); } if (pageWrap.getModel().getCreateDate() != null) { queryWrapper.ge(CardParam::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); queryWrapper.le(CardParam::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); } if (pageWrap.getModel().getEditor() != null) { queryWrapper.eq(CardParam::getEditor, pageWrap.getModel().getEditor()); } if (pageWrap.getModel().getEditDate() != null) { queryWrapper.ge(CardParam::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); queryWrapper.le(CardParam::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); } if (pageWrap.getModel().getIsdeleted() != null) { queryWrapper.eq(CardParam::getIsdeleted, pageWrap.getModel().getIsdeleted()); } if (pageWrap.getModel().getRemark() != null) { queryWrapper.eq(CardParam::getRemark, pageWrap.getModel().getRemark()); } if (pageWrap.getModel().getName() != null) { queryWrapper.eq(CardParam::getName, pageWrap.getModel().getName()); } if (pageWrap.getModel().getImgurl() != null) { queryWrapper.eq(CardParam::getImgurl, pageWrap.getModel().getImgurl()); } if (pageWrap.getModel().getIndexNo() != null) { queryWrapper.eq(CardParam::getIndexNo, pageWrap.getModel().getIndexNo()); } if (pageWrap.getModel().getStartNo() != null) { queryWrapper.eq(CardParam::getStartNo, pageWrap.getModel().getStartNo()); } if (pageWrap.getModel().getValidDate() != null) { queryWrapper.eq(CardParam::getValidDate, pageWrap.getModel().getValidDate()); } if (pageWrap.getModel().getStatus() != null) { queryWrapper.eq(CardParam::getStatus, pageWrap.getModel().getStatus()); } if (pageWrap.getModel().getSortnum() != null) { queryWrapper.eq(CardParam::getSortnum, pageWrap.getModel().getSortnum()); } queryWrapper.orderByAsc(CardParam::getSortnum); for(PageWrap.SortData sortData: pageWrap.getSorts()) { if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { queryWrapper.orderByDesc(sortData.getProperty()); } else { queryWrapper.orderByAsc(sortData.getProperty()); } } String preFixPath = systemDictDataBiz.getPreFixPath(Constants.RESOURCE_PATH, Constants.GOODS_FILE); queryWrapper.selectAll(CardParam.class); queryWrapper.select("(select count(id) from card where param_id=t.id) as countNum"); //queryWrapper.select(Card::getId,CardParamDTO::getCountNum); // queryWrapper.groupBy(Card::getParamId); IPage cardParamDTOIPage = cardParamJoinMapper.selectJoinPage(page, CardParamDTO.class, queryWrapper); if (!CollectionUtils.isEmpty(cardParamDTOIPage.getRecords())){ cardParamDTOIPage.getRecords().forEach(s->s.setImgurlfull(preFixPath+s.getImgurl())); } return PageData.from(cardParamDTOIPage); } @Override public long count(CardParam cardParam) { QueryWrapper wrapper = new QueryWrapper<>(cardParam); return cardParamMapper.selectCount(wrapper); } }