| 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.DateUtil; | 
| import com.doumee.core.utils.SmsConstants; | 
| import com.doumee.core.utils.Utils; | 
| import com.doumee.dao.business.*; | 
| import com.doumee.dao.business.dao.SmsConfigMapper; | 
| import com.doumee.dao.business.dao.SmsEmailMapper; | 
| import com.doumee.dao.business.join.ApproveJoinMapper; | 
| import com.doumee.dao.business.model.*; | 
| import com.doumee.dao.business.vo.ApproveDataVO; | 
|   | 
| import com.doumee.dao.system.join.NoticesJoinMapper; | 
| import com.doumee.dao.web.reqeust.PlatformBooksApplyDTO; | 
| import com.doumee.dao.web.reqeust.PlatformBooksCheckNumDTO; | 
| import com.doumee.dao.web.reqeust.RevokeDTO; | 
| import com.doumee.service.business.ApproveService; | 
| import com.doumee.service.business.PlatformBooksService; | 
| 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.doumee.service.business.third.EmayService; | 
| import org.apache.commons.lang3.StringUtils; | 
| import org.springframework.beans.BeanUtils; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.stereotype.Service; | 
| import org.springframework.transaction.annotation.Transactional; | 
| import org.springframework.util.CollectionUtils; | 
|   | 
| import java.math.BigDecimal; | 
| import java.util.Date; | 
| import java.util.List; | 
| import java.util.Objects; | 
|   | 
| /** | 
|  * 月台入园预约信息表Service实现 | 
|  * @author 江蹄蹄 | 
|  * @date 2024/06/28 10:03 | 
|  */ | 
| @Service | 
| public class PlatformBooksServiceImpl implements PlatformBooksService { | 
|   | 
|     @Autowired | 
|     private PlatformBooksMapper platformBooksMapper; | 
|   | 
|     @Autowired | 
|     private NoticesJoinMapper noticesJoinMapper; | 
|   | 
|     @Autowired | 
|     private ApproveTemplMapper approveTemplMapper; | 
|   | 
|     @Autowired | 
|     private PlatformReasonMapper platformReasonMapper; | 
|   | 
|     @Autowired | 
|     private PlatformGroupMapper platformGroupMapper; | 
|   | 
|     @Autowired | 
|     private SystemDictDataBiz systemDictDataBiz; | 
|   | 
|     @Autowired | 
|     private ApproveService approveService; | 
|   | 
|     @Autowired | 
|     private MemberMapper memberMapper; | 
|   | 
|     @Autowired | 
|     private ApproveJoinMapper approveJoinMapper; | 
|   | 
|     @Autowired | 
|     private CarsMapper carsMapper; | 
|   | 
|     @Autowired | 
|     private SmsConfigMapper smsConfigMapper; | 
|   | 
|     @Autowired | 
|     private SmsEmailMapper smsEmailMapper; | 
|   | 
|     @Autowired | 
|     private EmayService emayService; | 
|   | 
|     @Override | 
|     public Integer create(PlatformBooks platformBooks) { | 
|   | 
|   | 
|         platformBooksMapper.insert(platformBooks); | 
|         return platformBooks.getId(); | 
|     } | 
|   | 
|     @Override | 
|     public void deleteById(Integer id) { | 
|         platformBooksMapper.deleteById(id); | 
|     } | 
|   | 
|     @Override | 
|     public void delete(PlatformBooks platformBooks) { | 
|         UpdateWrapper<PlatformBooks> deleteWrapper = new UpdateWrapper<>(platformBooks); | 
|         platformBooksMapper.delete(deleteWrapper); | 
|     } | 
|   | 
|     @Override | 
|     public void deleteByIdInBatch(List<Integer> ids) { | 
|         if (CollectionUtils.isEmpty(ids)) { | 
|             return; | 
|         } | 
|         platformBooksMapper.deleteBatchIds(ids); | 
|     } | 
|   | 
|     @Override | 
|     public void updateById(PlatformBooks platformBooks) { | 
|         platformBooksMapper.updateById(platformBooks); | 
|     } | 
|   | 
|     @Override | 
|     public void updateByIdInBatch(List<PlatformBooks> platformBookss) { | 
|         if (CollectionUtils.isEmpty(platformBookss)) { | 
|             return; | 
|         } | 
|         for (PlatformBooks platformBooks: platformBookss) { | 
|             this.updateById(platformBooks); | 
|         } | 
|     } | 
|   | 
|     @Override | 
|     public PlatformBooks findById(Integer id) { | 
|         return platformBooksMapper.selectById(id); | 
|     } | 
|   | 
|     @Override | 
|     public PlatformBooks findOne(PlatformBooks platformBooks) { | 
|         QueryWrapper<PlatformBooks> wrapper = new QueryWrapper<>(platformBooks); | 
|         return platformBooksMapper.selectOne(wrapper); | 
|     } | 
|   | 
|     @Override | 
|     public List<PlatformBooks> findList(PlatformBooks platformBooks) { | 
|         QueryWrapper<PlatformBooks> wrapper = new QueryWrapper<>(platformBooks); | 
|         return platformBooksMapper.selectList(wrapper); | 
|     } | 
|   | 
|     @Override | 
|     public PageData<PlatformBooks> findPage(PageWrap<PlatformBooks> pageWrap) { | 
|         IPage<PlatformBooks> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); | 
|         QueryWrapper<PlatformBooks> queryWrapper = new QueryWrapper<>(); | 
|         Utils.MP.blankToNull(pageWrap.getModel()); | 
|         queryWrapper.lambda() | 
|                 .eq(pageWrap.getModel().getId() != null, PlatformBooks::getId, pageWrap.getModel().getId()) | 
|                 .eq(pageWrap.getModel().getCreator() != null, PlatformBooks::getCreator, pageWrap.getModel().getCreator()) | 
|                 .ge(pageWrap.getModel().getCreateDate() != null, PlatformBooks::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())) | 
|                 .le(pageWrap.getModel().getCreateDate() != null, PlatformBooks::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())) | 
|                 .eq(pageWrap.getModel().getEditor() != null, PlatformBooks::getEditor, pageWrap.getModel().getEditor()) | 
|                 .ge(pageWrap.getModel().getEditDate() != null, PlatformBooks::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())) | 
|                 .le(pageWrap.getModel().getEditDate() != null, PlatformBooks::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())) | 
|                 .eq(pageWrap.getModel().getIsdeleted() != null, PlatformBooks::getIsdeleted, pageWrap.getModel().getIsdeleted()) | 
|                 .eq(pageWrap.getModel().getName() != null, PlatformBooks::getName, pageWrap.getModel().getName()) | 
|                 .eq(pageWrap.getModel().getRemark() != null, PlatformBooks::getRemark, pageWrap.getModel().getRemark()) | 
|                 .eq(pageWrap.getModel().getStatus() != null, PlatformBooks::getStatus, pageWrap.getModel().getStatus()) | 
|                 .eq(pageWrap.getModel().getContractNum() != null, PlatformBooks::getContractNum, pageWrap.getModel().getContractNum()) | 
|                 .ge(pageWrap.getModel().getArriveDate() != null, PlatformBooks::getArriveDate, Utils.Date.getStart(pageWrap.getModel().getArriveDate())) | 
|                 .le(pageWrap.getModel().getArriveDate() != null, PlatformBooks::getArriveDate, Utils.Date.getEnd(pageWrap.getModel().getArriveDate())) | 
|                 .eq(pageWrap.getModel().getInType() != null, PlatformBooks::getInType, pageWrap.getModel().getInType()) | 
|                 .eq(pageWrap.getModel().getTotalNum() != null, PlatformBooks::getTotalNum, pageWrap.getModel().getTotalNum()) | 
|                 .eq(pageWrap.getModel().getCarCodeFront() != null, PlatformBooks::getCarCodeFront, pageWrap.getModel().getCarCodeFront()) | 
|                 .eq(pageWrap.getModel().getCarCodeBack() != null, PlatformBooks::getCarCodeBack, pageWrap.getModel().getCarCodeBack()) | 
|                 .eq(pageWrap.getModel().getDriverId() != null, PlatformBooks::getDriverId, pageWrap.getModel().getDriverId()) | 
|                 .eq(pageWrap.getModel().getDriverName() != null, PlatformBooks::getDriverName, pageWrap.getModel().getDriverName()) | 
|                 .eq(pageWrap.getModel().getPlateNum() != null, PlatformBooks::getPlateNum, pageWrap.getModel().getPlateNum()) | 
|                 .eq(pageWrap.getModel().getDriverPhone() != null, PlatformBooks::getDriverPhone, pageWrap.getModel().getDriverPhone()) | 
|                 .ge(pageWrap.getModel().getQueryDate() != null, PlatformBooks::getCreateDate, pageWrap.getModel().getQueryDate()) | 
|                 .ge(pageWrap.getModel().getArriveDateStart() != null, PlatformBooks::getArriveDate, Utils.Date.getStart(pageWrap.getModel().getArriveDateStart())) | 
|                 .le(pageWrap.getModel().getArriveDateEnd() != null, PlatformBooks::getArriveDate, Utils.Date.getEnd(pageWrap.getModel().getArriveDateEnd())) | 
|                 .orderByDesc(PlatformBooks::getCreateDate) | 
|         ; | 
|         PageData<PlatformBooks> pageData = PageData.from(platformBooksMapper.selectPage(page, queryWrapper)); | 
|         for (PlatformBooks platformBooks:pageData.getRecords()) { | 
|             if(Constants.equalsInteger(platformBooks.getStatus(),Constants.ONE)||Constants.equalsInteger(platformBooks.getStatus(),Constants.ZERO)){ | 
|                 String auditName = approveService.getApproveUserName(platformBooks.getId(),Constants.approveObjectType.reason); | 
|                 platformBooks.setAuditName(auditName); | 
|             } | 
|         } | 
|   | 
|         return pageData; | 
|     } | 
|   | 
|   | 
|   | 
|   | 
|   | 
|     @Override | 
|     public long count(PlatformBooks platformBooks) { | 
|         QueryWrapper<PlatformBooks> wrapper = new QueryWrapper<>(platformBooks); | 
|         return platformBooksMapper.selectCount(wrapper); | 
|     } | 
|   | 
|   | 
|     @Override | 
|     public BigDecimal checkNum(PlatformBooksCheckNumDTO platformBooksCheckNumDTO){ | 
|         if(Objects.isNull(platformBooksCheckNumDTO) | 
|         || Objects.isNull(platformBooksCheckNumDTO.getTotalNum()) | 
|         || Objects.isNull(platformBooksCheckNumDTO.getReasonId()) | 
|         || Objects.isNull(platformBooksCheckNumDTO.getArriveDate())){ | 
|             return BigDecimal.ZERO; | 
|         } | 
|         //查询每日配置的总预约量 | 
|         PlatformReason platformReason = platformReasonMapper.selectById(platformBooksCheckNumDTO.getReasonId()); | 
|         if(Objects.isNull(platformReason)|| !Constants.equalsInteger(platformReason.getIsdeleted(),Constants.ZERO)){ | 
|             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"入园原因信息异常,请刷新重试"); | 
|         } | 
|         List<PlatformBooks> platformBooksList = platformBooksMapper.selectList(new QueryWrapper<PlatformBooks>().lambda() | 
|                 .eq(PlatformBooks::getReasonId,platformBooksCheckNumDTO.getReasonId()) | 
|                 .ne(PlatformBooks::getStatus,Constants.THREE) | 
|                 .like(PlatformBooks::getCreateDate, DateUtil.getDate(platformBooksCheckNumDTO.getArriveDate(),"yyyy-MM-dd")) | 
|         ); | 
|         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformBooksList)){ | 
|            BigDecimal countNum =  platformBooksList.stream().map(m->m.getTotalNum()).reduce(BigDecimal.ZERO,BigDecimal::add); | 
|            if(countNum.compareTo(platformReason.getLimitNum())>=Constants.ZERO){ | 
|                return BigDecimal.ZERO; | 
|            } | 
|            return platformReason.getLimitNum().subtract(countNum); | 
|         } | 
|         return platformReason.getLimitNum(); | 
|     } | 
|   | 
|   | 
|     @Override | 
|     @Transactional(rollbackFor = {BusinessException.class,Exception.class}) | 
|     public Integer apply(PlatformBooksApplyDTO platformBooksApplyDTO){ | 
|         if(Objects.isNull(platformBooksApplyDTO) | 
|             || StringUtils.isBlank(platformBooksApplyDTO.getContractNum()) | 
|             || Objects.isNull(platformBooksApplyDTO.getArriveDate()) | 
|             || Objects.isNull(platformBooksApplyDTO.getInType()) | 
|             || Objects.isNull(platformBooksApplyDTO.getTotalNum()) | 
|             || StringUtils.isBlank(platformBooksApplyDTO.getCarCodeFront()) | 
|             || StringUtils.isBlank(platformBooksApplyDTO.getCarCodeBack()) | 
|             || Objects.isNull(platformBooksApplyDTO.getDriverId()) | 
|             || StringUtils.isBlank(platformBooksApplyDTO.getDriverPhone()) | 
|             || StringUtils.isBlank(platformBooksApplyDTO.getDriverName()) | 
|             || StringUtils.isBlank(platformBooksApplyDTO.getTransportImg()) | 
|             || Objects.isNull(platformBooksApplyDTO.getReasonId()) | 
|             || StringUtils.isBlank(platformBooksApplyDTO.getInReason()) | 
|         ){ | 
|             throw new BusinessException(ResponseStatus.BAD_REQUEST); | 
|         } | 
|         PlatformReason platformReason = platformReasonMapper.selectById(platformBooksApplyDTO.getReasonId()); | 
|         if(Objects.isNull(platformReason)|| !Constants.equalsInteger(platformReason.getIsdeleted(),Constants.ZERO)){ | 
|             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"入园原因信息异常,请刷新重试"); | 
|         } | 
|         PlatformGroup platformGroup= platformGroupMapper.selectById(platformReason.getGroupId()); | 
|         if(Objects.isNull(platformGroup)){ | 
|             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到绑定月台组数据"); | 
|         } | 
|         if(!Constants.equalsInteger(platformGroup.getIsdeleted(),Constants.ZERO)){ | 
|             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"绑定月台组数据异常,请联系管理员"); | 
|         } | 
|         if(!Constants.checkCarNo(platformBooksApplyDTO.getCarCodeFront())){ | 
|             throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"请输入正确的车牌!"); | 
|         }; | 
|         //查询车辆是否为自有车 | 
|         if(carsMapper.selectCount(new QueryWrapper<Cars>().lambda().eq(Cars::getIsdeleted,Constants.ZERO).eq(Cars::getCode,platformBooksApplyDTO.getCarCodeFront()))>Constants.ZERO){ | 
|             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"["+platformBooksApplyDTO.getCarCodeFront()+"]属于内部车辆,无法预约"); | 
|         }; | 
|         ApproveTempl approveTempl = approveTemplMapper.selectById(platformReason.getApproveTemplId()); | 
|         if(Objects.isNull(approveTempl)){ | 
|             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未配置审批流,请联系管理员"); | 
|         } | 
|         if(!Constants.equalsInteger(approveTempl.getIsdeleted(),Constants.ZERO)){ | 
|             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"审批流已停用,请联系管理员"); | 
|         } | 
|         PlatformBooks platformBooks = new PlatformBooks(); | 
|         BeanUtils.copyProperties(platformBooksApplyDTO,platformBooks); | 
|         platformBooks.setCreateDate(new Date()); | 
|         platformBooks.setIsdeleted(Constants.ZERO); | 
|         platformBooks.setStatus(Constants.ZERO); | 
|         platformBooks.setDriverId(platformBooksApplyDTO.getUserId()); | 
|         platformBooks.setEditDate(new Date()); | 
|         platformBooksMapper.insert(platformBooks); | 
|   | 
|         //创建审批流信息 | 
|         approveService.createApproveForPlatfrom(approveTempl.getId(),platformBooks.getId(),platformBooks.getDriverId()); | 
|         return platformBooks.getId(); | 
|     } | 
|   | 
|   | 
|   | 
|     @Override | 
|     @Transactional(rollbackFor = {BusinessException.class,Exception.class}) | 
|     public Integer edit(PlatformBooksApplyDTO platformBooksApplyDTO){ | 
|         if(Objects.isNull(platformBooksApplyDTO) | 
|                 || Objects.isNull(platformBooksApplyDTO.getId()) | 
|                 || StringUtils.isBlank(platformBooksApplyDTO.getContractNum()) | 
|                 || Objects.isNull(platformBooksApplyDTO.getArriveDate()) | 
|                 || Objects.isNull(platformBooksApplyDTO.getInType()) | 
|                 || Objects.isNull(platformBooksApplyDTO.getTotalNum()) | 
|                 || StringUtils.isBlank(platformBooksApplyDTO.getCarCodeFront()) | 
|                 || StringUtils.isBlank(platformBooksApplyDTO.getCarCodeBack()) | 
|                 || Objects.isNull(platformBooksApplyDTO.getDriverId()) | 
|                 || StringUtils.isBlank(platformBooksApplyDTO.getDriverPhone()) | 
|                 || StringUtils.isBlank(platformBooksApplyDTO.getDriverName()) | 
|                 || StringUtils.isBlank(platformBooksApplyDTO.getTransportImg()) | 
|         ){ | 
|             throw new BusinessException(ResponseStatus.BAD_REQUEST); | 
|         } | 
|         //查询车辆是否为自有车 | 
|         if(carsMapper.selectCount(new QueryWrapper<Cars>().lambda().eq(Cars::getIsdeleted,Constants.ZERO).eq(Cars::getCode,platformBooksApplyDTO.getCarCodeFront()))>Constants.ZERO){ | 
|             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"["+platformBooksApplyDTO.getCarCodeFront()+"]属于内部车辆,无法预约"); | 
|         }; | 
|         PlatformBooks platformBooks = platformBooksMapper.selectById(platformBooksApplyDTO.getId()); | 
|         if(Objects.isNull(platformBooks)){ | 
|             throw new BusinessException(ResponseStatus.DATA_EMPTY); | 
|         } | 
|         if(!Constants.equalsInteger(platformBooks.getStatus(),Constants.ZERO)){ | 
|             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"业务状态已流转"); | 
|         } | 
|         BeanUtils.copyProperties(platformBooksApplyDTO,platformBooks); | 
|         platformBooks.setEditDate(new Date()); | 
|         platformBooks.setReasonId(null); | 
|         platformBooks.setInReason(null); | 
|         platformBooksMapper.updateById(platformBooks); | 
|         return platformBooks.getId(); | 
|     } | 
|   | 
|   | 
|   | 
|     @Override | 
|     public PlatformBooks getDetail(Integer id,Integer memberId){ | 
|         PlatformBooks model = platformBooksMapper.selectById(id); | 
|         if(Objects.isNull(model)){ | 
|             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到预约记录"); | 
|         } | 
|         String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() + | 
|                 systemDictDataBiz.queryByCode(Constants.FTP,Constants.PLATFORM).getCode(); | 
|         model.setPrefixUrl(prefixUrl); | 
|   | 
|         ApproveDataVO approveDataVO = approveService.arrangeApprovedData(id, | 
|                6, | 
|                 memberId); | 
|         model.setApproveDateVO(approveDataVO); | 
|         List<Approve> approveList = approveDataVO.getApproveList(); | 
|         if(Constants.equalsInteger(model.getStatus(),Constants.FOUR)){ | 
|             String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() | 
|                     +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode(); | 
|             Member member = memberMapper.selectById(model.getDriverId()); | 
|   | 
|             Approve approve = new Approve(); | 
|             approve.setApproveType(Constants.ZERO); | 
|             approve.setCreateDate(model.getCancelTime()); | 
|             approve.setTitle("撤销人"); | 
|             approve.setStatusInfo("已撤销"); | 
|             approve.setStatus(Constants.FOUR); | 
|             approve.setType(Constants.ZERO); | 
|             if(member!=null) { | 
|                 approve.setMemberName(member.getName()); | 
|                 if (StringUtils.isNotBlank(member.getFaceImg())) { | 
|                     approve.setFaceImg(path + member.getFaceImg()); | 
|                 } | 
|             } | 
|             approve.setCheckInfo(model.getCancelInfo()); | 
|             approve.setCheckDate(model.getCancelTime()); | 
|             approveList.add(approve); | 
|         } | 
|         return model; | 
|     } | 
|   | 
|   | 
|   | 
|     @Override | 
|     public void revoke(RevokeDTO revokeDTO, LoginUserInfo loginUserInfo){ | 
|         if(Objects.isNull(revokeDTO) | 
|                 || Objects.isNull(revokeDTO.getId()) | 
|                 || StringUtils.isBlank(revokeDTO.getInfo()) | 
|         ){ | 
|             throw new BusinessException(ResponseStatus.BAD_REQUEST); | 
|         } | 
|         PlatformBooks model = platformBooksMapper.selectById(revokeDTO.getId()); | 
|         if(Objects.isNull(model)){ | 
|             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到预约记录"); | 
|         } | 
|         if(!(Constants.equalsInteger(model.getStatus(),Constants.ZERO)||Constants.equalsInteger(model.getStatus(),Constants.ONE))){ | 
|             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"业务状态已流转,无法进行该操作"); | 
|         } | 
|         model.setCancelUser(loginUserInfo.getId()); | 
|         model.setCancelInfo(revokeDTO.getInfo()); | 
|         model.setCancelTime(new Date()); | 
|         model.setStatus(Constants.FOUR); | 
|         platformBooksMapper.updateById(model); | 
|         //处理审批记录 | 
|         approveJoinMapper.update(null,new UpdateWrapper<Approve>() | 
|                 .lambda() | 
|                 .set(Approve::getIsdeleted,Constants.ONE) | 
|                 .set(Approve::getStatus,Constants.FOUR) | 
|                 .set(Approve::getCheckInfo,"物流车预约申请取消") | 
|                 .in(Approve::getStatus,Constants.ZERO,Constants.ONE) | 
|                 .eq(Approve::getObjType,Constants.approveObjectType.logisticsCarUse) | 
|                 .eq(Approve::getObjId,revokeDTO.getId()) | 
|         ); | 
|   | 
|         //发送短信通知 | 
|         SmsEmailServiceImpl.sendPlatformBookSms(systemDictDataBiz, | 
|                 emayService,smsEmailMapper,smsConfigMapper,platformBooksMapper,model.getId(), | 
|                         SmsConstants.platformBookContent.platformBookCancel, | 
|                 null,null | 
|         ); | 
|   | 
|   | 
|     } | 
|   | 
|   | 
| } |