From 0e0d9c24ed04593bd92ebcffd7d98283fb8a4172 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Thu, 18 Oct 2018 17:24:42 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=90=88=E5=90=8C=E7=AE=A1=E7=90=86][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E5=85=B3=E8=81=94=E5=95=86=E6=88=B7?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E5=88=9B=E5=BB=BA=E8=B4=A6=E5=8D=95]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/WxRentContractServiceImpl.java | 94 +++++++++++++++++-- 1 file changed, 88 insertions(+), 6 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java index dbd1b1adc..cc52e68e3 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -6,18 +6,18 @@ import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.Result; import com.iformall.common.ResultData; -import com.iformall.domain.po.WxMerchant; -import com.iformall.domain.po.WxRentContract; -import com.iformall.domain.po.WxShop; +import com.iformall.domain.po.*; +import com.iformall.enums.EnumBillRentStatus; import com.iformall.enums.EnumRentContractStatus; import com.iformall.enums.EnumShopStatus; import com.iformall.exception.MallinkException; +import com.iformall.mapper.WxBillRentMapper; import com.iformall.mapper.WxRentContractMapper; import com.iformall.mapper.WxShopMapper; import com.iformall.service.WxMerchantService; import com.iformall.service.WxRentContractService; import com.iformall.utils.Constant; -import org.apache.commons.io.FileUtils; +import org.apache.shiro.SecurityUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -31,8 +31,6 @@ import java.net.HttpURLConnection; import java.net.URL; import java.util.*; -import static org.springframework.core.io.buffer.DataBufferUtils.readInputStream; - /** * @author gongbiao */ @@ -49,6 +47,9 @@ public class WxRentContractServiceImpl implements WxRentContractService { @Autowired WxMerchantService wxMerchantService; + @Autowired + WxBillRentMapper wxBillRentMapper; + @Override public Map listAsPage(WxRentContract record, Integer pageIndex, Integer pageSize) { Object rentContractStatusInfo = getRentContractStatusInfo(record.getTenantId()); @@ -98,6 +99,12 @@ public class WxRentContractServiceImpl implements WxRentContractService { record.setUpdatetime(date); try { wxRentContractMapper.insertSelective(record); + if(record.getMerchantId()!=null){ + WxMerchant wxMerchant = new WxMerchant(); + wxMerchant.setId(record.getMerchantId()); + wxMerchant.setTenantId(record.getTenantId()); + buildRent(wxMerchant); + } } catch (Exception e) { logger.error("保存租赁合同信息失败,e:" + e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); @@ -116,6 +123,81 @@ public class WxRentContractServiceImpl implements WxRentContractService { } + @Transactional(rollbackFor = {Exception.class}) + public void buildRent(WxMerchant wxMerchant) { + + //获取用户 + MallUserInfo user = (MallUserInfo) SecurityUtils.getSubject().getSession().getAttribute("userSession"); + + //根据商户ID找出合同 + WxRentContract wxRentContract = new WxRentContract(); + wxRentContract.setMerchantId(wxMerchant.getId()); + List list = wxRentContractMapper.findList(wxRentContract); + if (list.size() > 0) { + wxRentContract = list.get(0); + Integer receivePeriod = wxRentContract.getReceivePeriod(); + int paycount = 12 / receivePeriod.intValue(); + final IdWorker idWorker = IdWorker.get(); + for (int i = 0; i < paycount; i++) { + WxBillRent wxBillRent = new WxBillRent(); + wxBillRent.setId(idWorker.nextId()); + wxBillRent.setRentContractId(wxRentContract.getId()); + wxBillRent.setReceivePay(0); + wxBillRent.setPay(0); + int needpay = wxRentContract.getPrice() * i; + wxBillRent.setNeedPay(needpay); + wxBillRent.setOwe(needpay); + + Date date = new Date(); + Calendar instance = Calendar.getInstance(); + instance.setTime(wxRentContract.getRentalStartDate()); + instance.add(Calendar.MONTH, receivePeriod.intValue() * i); + instance.add(Calendar.DAY_OF_MONTH, -1); + Date time = instance.getTime(); + wxBillRent.setReceiveDate(time); + //截止收租日在当前时间之前 + if (wxBillRent.getReceiveDate().before(date)) { + long day = (time.getTime() - date.getTime()) / (24 * 60 * 60 * 1000); + wxBillRent.setStatus(EnumBillRentStatus.NOT_PAID.getCode()); + wxBillRent.setExpiredDay(day); + wxBillRent.setReceiveDate(time); + } else {//截止收租日在当前时间之后 + Calendar now = Calendar.getInstance(); + now.add(Calendar.MONTH, receivePeriod.intValue() * i); + now.add(Calendar.DAY_OF_MONTH, -1); + Date currenttime = now.getTime(); + //当前日期加上周期后小于截止收租日就是没有到期,否则当前待缴 + if(currenttime.before(wxBillRent.getReceiveDate())){ + wxBillRent.setStatus(EnumBillRentStatus.NOT_EXPIRED.getCode()); + wxBillRent.setExpiredDay(0L); + wxBillRent.setReceiveDate(time); + }else{ + wxBillRent.setStatus(EnumBillRentStatus.WAIT_PAY.getCode()); + wxBillRent.setExpiredDay(0L); + wxBillRent.setReceiveDate(time); + } + } + + wxBillRent.setTenantId(wxMerchant.getTenantId()); + wxBillRent.setIsDel(0); + wxBillRent.setMerchantId(wxMerchant.getId()); + wxBillRent.setUserId(user.getId()); + wxBillRent.setShopId(wxRentContract.getShopId()); + wxBillRent.setCreatetime(date); + wxBillRent.setUpdatetime(date); + try{ + wxBillRentMapper.insertSelective(wxBillRent); + }catch (Exception e){ + logger.error("添加租赁账单失败,e:" + e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); + } + } + + } + } + + + @Transactional(rollbackFor = {Exception.class}) @Override public ResultData deleteById(String id) {