| | |
| | | package com.ruoyi.system.service.impl; |
| | | |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.common.basic.PageInfo; |
| | | import com.ruoyi.common.core.domain.AjaxResult; |
| | | import com.ruoyi.common.core.domain.entity.SysRole; |
| | | import com.ruoyi.common.constant.AmountConstant; |
| | | import com.ruoyi.common.constant.CacheConstants; |
| | | import com.ruoyi.common.core.redis.RedisCache; |
| | | import com.ruoyi.common.exception.ServiceException; |
| | | import com.ruoyi.common.utils.DateUtils; |
| | | import com.ruoyi.common.utils.SmsUtil; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.common.utils.TencentMailUtil; |
| | | import com.ruoyi.common.utils.uuid.UUID; |
| | | import com.ruoyi.system.dto.OfflinePayCheckDto; |
| | | import com.ruoyi.system.dto.SmsByBillDto; |
| | | import com.ruoyi.system.dto.TBillDto; |
| | | import com.ruoyi.system.dto.TbillSaveDto; |
| | | import com.ruoyi.system.mapper.TBillMapper; |
| | | import com.ruoyi.system.model.*; |
| | | import com.ruoyi.system.query.TBillQuery; |
| | | import com.ruoyi.system.query.TInvoiceToBillQuery; |
| | | import com.ruoyi.system.service.*; |
| | | import com.ruoyi.system.vo.TBillVO; |
| | | import com.taxi591.bankapi.dto.ChargeBillRequest; |
| | | import com.tencentcloudapi.sms.v20190711.SmsClient; |
| | | import com.tencentcloudapi.sms.v20190711.models.SendSmsRequest; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.jetbrains.annotations.NotNull; |
| | | import org.springframework.beans.BeanUtils; |
| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.util.List; |
| | | import javax.annotation.Resource; |
| | | import javax.validation.constraints.NotEmpty; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | import java.math.BigDecimal; |
| | | import java.text.ParseException; |
| | | import java.util.Collections; |
| | | import java.util.Comparator; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.function.Consumer; |
| | | import java.util.stream.Collectors; |
| | | import java.util.stream.Stream; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | |
| | | @Autowired |
| | | TOrderBillService orderBillService; |
| | | |
| | | @Autowired |
| | | TInvoiceToBillService tInvoiceToBillService; |
| | | |
| | | |
| | | @Resource |
| | | SmsUtil smsUtil; |
| | | |
| | | @Resource |
| | | TencentMailUtil mailUtil; |
| | | |
| | | public PageInfo<TBillDto> queryPage(TBillQuery query){ |
| | | PageInfo<TBill> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); |
| | |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 根据发票编号查询账单列表 |
| | | * @param invoiceId |
| | | * @return |
| | | */ |
| | | @Override |
| | | public PageInfo<TBillDto> getBillByInvoiceId(String invoiceId){ |
| | | PageInfo<TBillDto> pageInfo = new PageInfo<>(); |
| | | ArrayList<TBillDto> bills = new ArrayList<>(); |
| | | TInvoiceToBillQuery query = new TInvoiceToBillQuery(); |
| | | query.setInvoiceId(invoiceId); |
| | | List<TInvoiceToBill> tInvoiceToBills = tInvoiceToBillService.makeQuery(query); |
| | | for (TInvoiceToBill tInvoiceToBill : tInvoiceToBills) { |
| | | TBill bill = getById(tInvoiceToBill.getBillId()); |
| | | if (bill != null && bill.getId() != null){ |
| | | TBillDto detailByBillId = getDetailByBillId(bill.getId()); |
| | | bills.add(detailByBillId); |
| | | } |
| | | } |
| | | pageInfo.setRecords(bills); |
| | | return pageInfo; |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | | public Integer sendSmsByBillIds(SmsByBillDto dto) { |
| | | int failNum = 0; |
| | | for (String billId : dto.getBillIds()) { |
| | | TBillDto bill = getDetailByBillId(billId); |
| | | if (bill.getSmsLastTime()!=null |
| | | && (System.currentTimeMillis()-bill.getSmsLastTime().getTime()<smsUtil.getPro().getBillSmsDelayPeriod()*60*1000L)){ |
| | | throw new ServiceException("有账单最近一次发送的时间是:"+DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,bill.getSmsLastTime())); |
| | | } |
| | | if (StringUtils.isEmpty(bill.getPhone())){ |
| | | failNum++; |
| | | continue; |
| | | } |
| | | TBill save = new TBill(); |
| | | save.setId(bill.getId()); |
| | | try { |
| | | smsUtil.sendSms(bill.getPhone(), "", new String[]{""}); |
| | | save.setSmsStatus(1); |
| | | }catch (ServiceException e){ |
| | | failNum++; |
| | | save.setSmsStatus(2); |
| | | } |
| | | save.setSmsLastTime(new Date()); |
| | | save.setSmsSendUserid(dto.getSendUserId()); |
| | | lockAndUpdateInfo(save,1); |
| | | } |
| | | return failNum; |
| | | } |
| | | |
| | | @Override |
| | | public Integer sendMailBatchByBillIds(SmsByBillDto dto) { |
| | | int failNum = 0; |
| | | for (String billId : dto.getBillIds()) { |
| | | TBillDto bill = getDetailByBillId(billId); |
| | | if (bill.getSmsLastTime()!=null |
| | | && (System.currentTimeMillis()-bill.getSmsLastTime().getTime()<mailUtil.getPro().getBillMailDelayPeriod()*60*1000L)){ |
| | | throw new ServiceException("有账单最近一次发送的时间是:"+DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,bill.getSmsLastTime())); |
| | | } |
| | | if (StringUtils.isEmpty(bill.getEmail())){ |
| | | failNum++; |
| | | continue; |
| | | } |
| | | TBill save = new TBill(); |
| | | save.setId(bill.getId()); |
| | | try { |
| | | mailUtil.send(bill.getEmail(),bill.getHouseName()); |
| | | save.setMailStatus(1); |
| | | }catch (ServiceException e){ |
| | | failNum++; |
| | | save.setMailStatus(2); |
| | | } |
| | | save.setMailLastTime(new Date()); |
| | | save.setMailSendUserid(dto.getSendUserId()); |
| | | lockAndUpdateInfo(save,1); |
| | | } |
| | | return failNum; |
| | | } |
| | | |
| | | public TBillDto getDetailByBillId(@NotEmpty String billId) { |
| | | return getBaseMapper().selectDetailByBillId(billId); |
| | | } |
| | | |
| | | |
| | | } |