From 3e2b7827c48ad1e94156bd1b30c221bcf74d2167 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Tue, 23 Oct 2018 20:15:30 +0800 Subject: [PATCH] =?UTF-8?q?[=E6=8A=BC=E9=87=91=E8=B4=A6=E5=8D=95][?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0][=E4=B8=9A=E5=8A=A1=E9=80=BB=E8=BE=91]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxBillDepositController.java | 73 +++++ .../controller/WxRentContractController.java | 6 + .../com/iformall/domain/po/WxBillDeposit.java | 262 ++++++++++++++++++ .../iformall/domain/po/WxRentContract.java | 6 +- .../iformall/mapper/WxBillDepositMapper.java | 28 ++ .../iformall/mapper/WxRentContractMapper.java | 1 + .../service/WxBillDepositService.java | 50 ++++ .../service/WxRentContractService.java | 2 + .../impl/WxBillDepositServiceImpl.java | 145 ++++++++++ .../service/impl/WxMerchantServiceImpl.java | 57 ++++ .../impl/WxRentContractServiceImpl.java | 204 +++++++++----- .../resources/mapper/WxBillDepositMapper.xml | 102 +++++++ .../resources/mapper/WxRentContractMapper.xml | 6 +- 13 files changed, 870 insertions(+), 72 deletions(-) create mode 100644 mallinkAdmin/src/main/java/com/iformall/controller/WxBillDepositController.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/WxBillDeposit.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/WxBillDepositMapper.java create mode 100644 mallinkService/src/main/java/com/iformall/service/WxBillDepositService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/impl/WxBillDepositServiceImpl.java create mode 100644 mallinkService/src/main/resources/mapper/WxBillDepositMapper.xml diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxBillDepositController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxBillDepositController.java new file mode 100644 index 000000000..139488fc2 --- /dev/null +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxBillDepositController.java @@ -0,0 +1,73 @@ +package com.iformall.controller; + +import com.github.pagehelper.PageInfo; +import com.iformall.common.Result; +import com.iformall.common.ResultData; +import com.iformall.domain.po.WxBillDeposit; +import com.iformall.service.WxBillDepositService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +/** + * @author gongbiao + */ +@RestController +@RequestMapping("wxBillDeposit") +public class WxBillDepositController extends BaseController +{ + @Autowired + private WxBillDepositService wxBillDepositService; + + private Logger logger = LoggerFactory.getLogger(WxBillDepositController.class); + + @GetMapping("list") + @ApiImplicitParams({ + @ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true), + @ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)}) + public ResultData list(@ModelAttribute WxBillDeposit wxBillDeposit, Integer pageNum, Integer pageSize) { + if (null == wxBillDeposit) wxBillDeposit = new WxBillDeposit(); + wxBillDeposit.setTenantId(getTenantId()); + final PageInfo> page = wxBillDepositService.listAsPage(wxBillDeposit, pageNum, pageSize); + return new ResultData(page); + } + + @PostMapping("add") + public ResultData add(@RequestBody WxBillDeposit wxBillDeposit) { + wxBillDeposit.setTenantId(getTenantId()); + return wxBillDepositService.saveOrUpdate(wxBillDeposit); + + } + + @PostMapping("update") + public ResultData update(@RequestBody WxBillDeposit wxBillDeposit) { + return wxBillDepositService.saveOrUpdate(wxBillDeposit); + + } + + @GetMapping("/del") + @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true) + public ResultData delete(Long id) { + wxBillDepositService.deleteById(id); + return new ResultData(Result.SUCCESS, "删除成功", null); + } + + @GetMapping("/findById") + @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true) + public ResultData findById(Long id) { + return new ResultData(Result.SUCCESS,"查询成功",wxBillDepositService.getById(id)); + } + + @GetMapping("/updatePaid") + @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) + public ResultData updatePaid(Long id) { + return wxBillDepositService.updatePaid(id); + } + + +} diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxRentContractController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxRentContractController.java index 525826ed9..9c8945642 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxRentContractController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxRentContractController.java @@ -84,4 +84,10 @@ public class WxRentContractController extends BaseController { return wxRentContractService.updateMerchant(wxRentContract); } + @GetMapping("/getRentContractList") + public ResultData getRentContractList() { + return new ResultData(Result.SUCCESS, "查询成功", wxRentContractService.getRentContractList(getTenantId())); + } + + } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxBillDeposit.java b/mallinkService/src/main/java/com/iformall/domain/po/WxBillDeposit.java new file mode 100644 index 000000000..60dc05644 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxBillDeposit.java @@ -0,0 +1,262 @@ +package com.iformall.domain.po; + +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Transient; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @author gongbiao + */ +@Table(name = "wx_bill_deposit") +public class WxBillDeposit implements Serializable { + private static final long serialVersionUID = 1L; + + @Id + protected Long id; + + @Transient + protected List ids; + @Transient + protected String sortColumns; + + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + public String getSortColumns() { + return sortColumns; + } + + public List getIds() { + return ids; + } + public void setIds(List ids) { + this.ids = ids; + } + + + + /*租金合同ID**/ + @io.swagger.annotations.ApiModelProperty(value="租金合同ID",name="rentContractId") + private Long rentContractId; + /*实际应收金额**/ + @io.swagger.annotations.ApiModelProperty(value="实际应收金额",name="receivePay") + private Integer receivePay; + /*实收金额**/ + @io.swagger.annotations.ApiModelProperty(value="实收金额",name="pay") + private Integer pay; + /*收款日期**/ + @io.swagger.annotations.ApiModelProperty(value="收款日期",name="receiveDate") + private Date receiveDate; + /*到账日期**/ + @io.swagger.annotations.ApiModelProperty(value="到账日期",name="payDate") + private Date payDate; + /*创建时间**/ + @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createtime") + private Date createtime; + /*逾期天数**/ + @io.swagger.annotations.ApiModelProperty(value="逾期天数",name="expiredDay") + private Long expiredDay; + /*租户**/ + @io.swagger.annotations.ApiModelProperty(value="租户",name="tenantId") + private String tenantId; + /*欠缴**/ + @io.swagger.annotations.ApiModelProperty(value="欠缴",name="owe") + private Integer owe; + /*账单状态1未到期2待缴3欠缴4已结清**/ + @io.swagger.annotations.ApiModelProperty(value="账单状态1未到期2待缴3欠缴4已结清",name="status") + private Integer status; + /*是否删除 是1否0 未到期不显示**/ + @io.swagger.annotations.ApiModelProperty(value="是否删除 是1否0 未到期不显示",name="isDel") + private Integer isDel; + /*应收金额**/ + @io.swagger.annotations.ApiModelProperty(value="应收金额",name="needPay") + private Integer needPay; + /*商户ID**/ + @io.swagger.annotations.ApiModelProperty(value="商户ID",name="merchantId") + private Long merchantId; + /*账号ID**/ + @io.swagger.annotations.ApiModelProperty(value="账号ID",name="userId") + private Long userId; + /*商铺ID**/ + @io.swagger.annotations.ApiModelProperty(value="商铺ID",name="shopId") + private Long shopId; + /*更新时间**/ + @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updatetime") + private Date updatetime; + public Long getRentContractId() { + return rentContractId; + } + public void setRentContractId(Long _rentContractId) { + rentContractId = _rentContractId; + } + public Integer getReceivePay() { + return receivePay; + } + public void setReceivePay(Integer _receivePay) { + receivePay = _receivePay; + } + public Integer getPay() { + return pay; + } + public void setPay(Integer _pay) { + pay = _pay; + } + public Date getReceiveDate() { + return receiveDate; + } + public void setReceiveDate(Date _receiveDate) { + receiveDate = _receiveDate; + } + public Date getPayDate() { + return payDate; + } + public void setPayDate(Date _payDate) { + payDate = _payDate; + } + public Date getCreatetime() { + return createtime; + } + public void setCreatetime(Date _createtime) { + createtime = _createtime; + } + public Long getExpiredDay() { + return expiredDay; + } + public void setExpiredDay(Long _expiredDay) { + expiredDay = _expiredDay; + } + public String getTenantId() { + return tenantId; + } + public void setTenantId(String _tenantId) { + tenantId = _tenantId; + } + public Integer getOwe() { + return owe; + } + public void setOwe(Integer _owe) { + owe = _owe; + } + public Integer getStatus() { + return status; + } + public void setStatus(Integer _status) { + status = _status; + } + public Integer getIsDel() { + return isDel; + } + public void setIsDel(Integer _isDel) { + isDel = _isDel; + } + public Integer getNeedPay() { + return needPay; + } + public void setNeedPay(Integer _needPay) { + needPay = _needPay; + } + public Long getMerchantId() { + return merchantId; + } + public void setMerchantId(Long _merchantId) { + merchantId = _merchantId; + } + public Long getUserId() { + return userId; + } + public void setUserId(Long _userId) { + userId = _userId; + } + public Long getShopId() { + return shopId; + } + public void setShopId(Long _shopId) { + shopId = _shopId; + } + public Date getUpdatetime() { + return updatetime; + } + public void setUpdatetime(Date _updatetime) { + updatetime = _updatetime; + } + + + + public static enum Field + { + Id_ASC("`id` ASC"),Id_DESC("`id` DESC") + ,RentContractId_ASC("`rentContractId` ASC"),RentContractId_DESC("`rentContractId` DESC") + ,ReceivePay_ASC("`receivePay` ASC"),ReceivePay_DESC("`receivePay` DESC") + ,Pay_ASC("`pay` ASC"),Pay_DESC("`pay` DESC") + ,ReceiveDate_ASC("`receiveDate` ASC"),ReceiveDate_DESC("`receiveDate` DESC") + ,PayDate_ASC("`payDate` ASC"),PayDate_DESC("`payDate` DESC") + ,Createtime_ASC("`createtime` ASC"),Createtime_DESC("`createtime` DESC") + ,ExpiredDay_ASC("`expiredDay` ASC"),ExpiredDay_DESC("`expiredDay` DESC") + ,TenantId_ASC("`tenantId` ASC"),TenantId_DESC("`tenantId` DESC") + ,Owe_ASC("`owe` ASC"),Owe_DESC("`owe` DESC") + ,Status_ASC("`status` ASC"),Status_DESC("`status` DESC") + ,IsDel_ASC("`isDel` ASC"),IsDel_DESC("`isDel` DESC") + ,NeedPay_ASC("`needPay` ASC"),NeedPay_DESC("`needPay` DESC") + ,MerchantId_ASC("`merchantId` ASC"),MerchantId_DESC("`merchantId` DESC") + ,UserId_ASC("`userId` ASC"),UserId_DESC("`userId` DESC") + ,ShopId_ASC("`shopId` ASC"),ShopId_DESC("`shopId` DESC") + ,Updatetime_ASC("`updatetime` ASC"),Updatetime_DESC("`updatetime` DESC") + ; + private String value; + Field(String value){ + this.value = value; + } + public String getValue() { + return value; + } + public void setCol(String value) { + this.value = value; + } + @Override + public String toString() { + return this.getValue(); + } + } + + public void setSortColumns(Field... fields) + { + if (fields == null || fields.length == 0) { + return; + } + for (int k = 0; k < fields.length; k++) { + if (fields[k] == null) { + return; + } + } + StringBuilder sb = new StringBuilder(fields[0].toString()); + for (int k = 1; k < fields.length; k++) { + sb.append(","); + sb.append(fields[k].toString()); + } + + } + + public void setSortColumns(String sortColumns) + { + if (sortColumns == null || "".equals(sortColumns.trim())) { + return; + } + if (sortColumns.contains(",")) { + String[] cols = sortColumns.split(","); + List fList = new ArrayList(); + for (int k = 0; k < cols.length; k++) { + fList.add(Field.valueOf(cols[k])); + } + this.setSortColumns(fList.toArray(new Field[fList.size()])); + } else { + this.setSortColumns(Field.valueOf(sortColumns)); + } + } +} diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java b/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java index 2aa72574e..045e8495f 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java @@ -86,7 +86,7 @@ public class WxRentContract implements Serializable { private String contractNumber; /*押金**/ @io.swagger.annotations.ApiModelProperty(value = "押金", name = "deposit") - private String deposit; + private Integer deposit; /*交租日 计租开始时间减去交租日的天数为基数 提前多少日交租**/ @io.swagger.annotations.ApiModelProperty(value = "交租日 计租开始时间减去交租日的天数为基数 提前多少日交租", name = "payDate") @@ -215,11 +215,11 @@ public class WxRentContract implements Serializable { contractNumber = _contractNumber; } - public String getDeposit() { + public Integer getDeposit() { return deposit; } - public void setDeposit(String _deposit) { + public void setDeposit(Integer _deposit) { deposit = _deposit; } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxBillDepositMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxBillDepositMapper.java new file mode 100644 index 000000000..09e86d58b --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxBillDepositMapper.java @@ -0,0 +1,28 @@ +package com.iformall.mapper; + + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxBillDeposit; + +import java.util.List; +import java.util.Map; + +/** + * @author gongbiao + */ +public interface WxBillDepositMapper extends CommonMapper { + + List findList(WxBillDeposit wxBillDeposit); + + List> queryBillDepositList(WxBillDeposit record); + + Map queryPayInfo(Map params); + + void updateNotPaidStatus(Map params); + + void updateWaitPayStatus(Map params); + + + + +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxRentContractMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxRentContractMapper.java index 36581c8ce..a56cfb4db 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxRentContractMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxRentContractMapper.java @@ -33,4 +33,5 @@ public interface WxRentContractMapper extends CommonMapper getRentContractList(String tenantId); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxBillDepositService.java b/mallinkService/src/main/java/com/iformall/service/WxBillDepositService.java new file mode 100644 index 000000000..0e0c725f8 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/WxBillDepositService.java @@ -0,0 +1,50 @@ +package com.iformall.service; + +import com.github.pagehelper.PageInfo; +import com.iformall.common.ResultData; +import com.iformall.domain.po.WxBillDeposit; + +import java.util.Map; + +public interface WxBillDepositService { + + /** + * 根据实体查询分页列表 + * + * @param offset + * @param limit + * @param record + * @return + */ + PageInfo> listAsPage(WxBillDeposit record, Integer pageIndex, Integer pageSize); + + /** + * 根据Id获得实体 + * + * @param id + * @return + */ + Map getById(Long id); + + /** + * 保存或更新实体 + * + * @param record + */ + ResultData saveOrUpdate(WxBillDeposit record); + + /** + * 根据Id删除实体 + * + * @param id + */ + void deleteById(Long id); + + ResultData updatePaid(Long id); + + + + + + +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxRentContractService.java b/mallinkService/src/main/java/com/iformall/service/WxRentContractService.java index e0f11c100..c818765d7 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxRentContractService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxRentContractService.java @@ -53,4 +53,6 @@ public interface WxRentContractService { ResultData updateMerchant(WxRentContract wxRentContract); + Object getRentContractList(String tenantId); + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBillDepositServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBillDepositServiceImpl.java new file mode 100644 index 000000000..1a8cfcb07 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillDepositServiceImpl.java @@ -0,0 +1,145 @@ +package com.iformall.service.impl; + +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +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.WxBillDeposit; +import com.iformall.domain.po.WxBillRent; +import com.iformall.enums.EnumBillRentStatus; +import com.iformall.exception.MallinkException; +import com.iformall.mapper.WxBillDepositMapper; +import com.iformall.service.WxBillDepositService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; + +/** + * @author gongbiao + */ +@Service +public class WxBillDepositServiceImpl implements WxBillDepositService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + WxBillDepositMapper wxBillDepositMapper; + + + @Override + public PageInfo> listAsPage(WxBillDeposit record, Integer pageIndex, Integer pageSize) { + + //更新逾期天数及状态 + updateNotPaidStatus(record); + //更新待缴的状态 + updateWaidPayStatus(record); + PageHelper.startPage(pageIndex, pageSize); + List> billDepositList = wxBillDepositMapper.queryBillDepositList(record); + PageInfo> pageInfo = new PageInfo<>(billDepositList); + return pageInfo; + } + + + @Transactional(rollbackFor = {Exception.class}) + public void updateWaidPayStatus(WxBillDeposit record) { + Map params = new HashMap<>(); + params.put("tenantId", record.getTenantId()); + params.put("waitPay", EnumBillRentStatus.WAIT_PAY.getCode()); + params.put("paid", EnumBillRentStatus.PAID.getCode()); + + try { + wxBillDepositMapper.updateWaitPayStatus(params); + } catch (Exception e) { + logger.error("更新租赁待缴账单状态失败,e:" + e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); + } + } + + + @Transactional(rollbackFor = {Exception.class}) + public void updateNotPaidStatus(WxBillDeposit record) { + Map params = new HashMap<>(); + params.put("tenantId", record.getTenantId()); + params.put("notPaid", EnumBillRentStatus.NOT_PAID.getCode()); + params.put("paid", EnumBillRentStatus.PAID.getCode()); + try { + wxBillDepositMapper.updateNotPaidStatus(params); + } catch (Exception e) { + logger.error("更新租赁欠缴账单状态失败,e:" + e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); + } + } + + @Override + public Map getById(Long id) { + WxBillDeposit record = new WxBillDeposit(); + record.setId(id); + return wxBillDepositMapper.queryBillDepositList(record).get(0); + } + + @Override + public ResultData saveOrUpdate(WxBillDeposit record) { + + if (record.getId() == null) { + logger.info("新增押金账单"); + final IdWorker idWorker = IdWorker.get(); + record.setId(idWorker.nextId()); + Date date = new Date(); + record.setCreatetime(date); + record.setUpdatetime(date); + try { + wxBillDepositMapper.insertSelective(record); + } catch (Exception e) { + logger.error("保存押金账单失败,e:" + e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); + } + return new ResultData(Result.SUCCESS, "保存押金账单成功"); + } else { + logger.info("更新押金账单"); + WxBillDeposit wxBillDeposit = wxBillDepositMapper.selectByPrimaryKey(record.getId()); + wxBillDeposit.setPayDate(record.getPayDate()); + wxBillDeposit.setPay(record.getPay()*100); + wxBillDeposit.setReceivePay(record.getReceivePay()*100); + wxBillDeposit.setOwe(record.getOwe()*100); + wxBillDeposit.setStatus(record.getPay().equals(record.getReceivePay())?EnumBillRentStatus.PAID.getCode():wxBillDeposit.getStatus()); + wxBillDeposit.setUpdatetime(new Date()); + try { + wxBillDepositMapper.updateByPrimaryKeySelective(wxBillDeposit); + } catch (Exception e) { + logger.error("更新押金账单失败,e:" + e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); + } + return new ResultData(Result.SUCCESS, "更新押金账单成功"); + } + } + + @Override + public void deleteById(Long id) { + wxBillDepositMapper.deleteByPrimaryKey(id); + } + + @Transactional(rollbackFor = {Exception.class}) + @Override + public ResultData updatePaid(Long id) { + WxBillDeposit wxBillDeposit = wxBillDepositMapper.selectByPrimaryKey(id); + wxBillDeposit.setStatus(EnumBillRentStatus.PAID.getCode()); + try { + wxBillDepositMapper.updateByPrimaryKeySelective(wxBillDeposit); + } catch (Exception e) { + logger.error("押金结单失败,e:" + e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); + } + return new ResultData(Result.SUCCESS, "押金结单成功"); + } + + + + + + +} diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java index ab7f0645e..b5c1f7604 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java @@ -58,6 +58,9 @@ public class WxMerchantServiceImpl implements WxMerchantService { @Autowired WxProfitSharingReceiverService wxProfitSharingReceiverService; + @Autowired + WxBillDepositMapper wxBillDepositMapper; + @Override public PageInfo listAsPage(WxMerchant record, Integer pageIndex, Integer pageSize) { @@ -261,6 +264,8 @@ public class WxMerchantServiceImpl implements WxMerchantService { wxRentContractMapper.updateByPrimaryKeySelective(wxRentContract); //创建账单 buildRent(wxRentContract); + //创建押金 + buildDeposit(wxMerchant); } } else { @@ -369,6 +374,58 @@ public class WxMerchantServiceImpl implements WxMerchantService { } + @Transactional(rollbackFor = {Exception.class}) + public void buildDeposit(WxMerchant wxMerchant) { + MallUserInfo user = (MallUserInfo) SecurityUtils.getSubject().getSession().getAttribute("userSession"); + 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(); + final IdWorker idWorker = IdWorker.get(); + WxBillDeposit wxBillDeposit = new WxBillDeposit(); + wxBillDeposit.setId(idWorker.nextId()); + wxBillDeposit.setRentContractId(wxRentContract.getId()); + wxBillDeposit.setReceivePay(0); + wxBillDeposit.setPay(0); + int needpay = wxRentContract.getDeposit(); + wxBillDeposit.setNeedPay(needpay); + wxBillDeposit.setOwe(needpay); + + Date date = new Date(); + Calendar instance = Calendar.getInstance(); + instance.setTime(wxRentContract.getRentalStartDate()); + instance.add(Calendar.DAY_OF_MONTH, -1); + Date time = instance.getTime(); + wxBillDeposit.setReceiveDate(time); + //截止收租日在当前时间之前 + if (wxBillDeposit.getReceiveDate().before(date)) { + long day = (time.getTime() - date.getTime()) / (24 * 60 * 60 * 1000); + wxBillDeposit.setStatus(EnumBillRentStatus.NOT_PAID.getCode()); + wxBillDeposit.setExpiredDay(day); + wxBillDeposit.setReceiveDate(time); + } else { + wxBillDeposit.setStatus(EnumBillRentStatus.WAIT_PAY.getCode()); + wxBillDeposit.setExpiredDay(0L); + wxBillDeposit.setReceiveDate(time); + } + + wxBillDeposit.setTenantId(wxMerchant.getTenantId()); + wxBillDeposit.setIsDel(0); + wxBillDeposit.setMerchantId(wxMerchant.getId()); + wxBillDeposit.setUserId(user.getId()); + wxBillDeposit.setShopId(wxRentContract.getShopId()); + wxBillDeposit.setCreatetime(date); + wxBillDeposit.setUpdatetime(date); + try { + wxBillDepositMapper.insertSelective(wxBillDeposit); + } catch (Exception e) { + logger.error("添加押金账单失败,e:" + e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); + } + } + } @Transactional(rollbackFor = {Exception.class}) public void buildRent(WxRentContract wxRentContract) { 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 bf517a1a8..aebe0ec9c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -11,6 +11,7 @@ import com.iformall.enums.EnumBillRentStatus; import com.iformall.enums.EnumRentContractStatus; import com.iformall.enums.EnumShopStatus; import com.iformall.exception.MallinkException; +import com.iformall.mapper.WxBillDepositMapper; import com.iformall.mapper.WxBillRentMapper; import com.iformall.mapper.WxRentContractMapper; import com.iformall.mapper.WxShopMapper; @@ -50,42 +51,46 @@ public class WxRentContractServiceImpl implements WxRentContractService { @Autowired WxBillRentMapper wxBillRentMapper; + @Autowired + WxBillDepositMapper wxBillDepositMapper; + @Override public Map listAsPage(WxRentContract record, Integer pageIndex, Integer pageSize) { Object rentContractStatusInfo = getRentContractStatusInfo(record.getTenantId()); PageHelper.startPage(pageIndex, pageSize); List> rentContractData = wxRentContractMapper.queryRentContractData(record); PageInfo> pageInfo = new PageInfo<>(rentContractData); - Map result =new HashMap<>(); - result.put("rentContractStatusInfo",rentContractStatusInfo); - result.put("pageInfo",pageInfo); + Map result = new HashMap<>(); + result.put("rentContractStatusInfo", rentContractStatusInfo); + result.put("pageInfo", pageInfo); return result; - //return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxRentContractMapper.findList(record)); } @Override public ResultData getById(Long id) { - Map result=new HashMap<>(); + Map result = new HashMap<>(); WxRentContract wxRentContract = wxRentContractMapper.selectByPrimaryKey(id); - wxRentContract.setPrice(wxRentContract.getPrice()!=null?wxRentContract.getPrice()/100:0); - result.put("wxRentContract",wxRentContract); + wxRentContract.setPrice(wxRentContract.getPrice() != null ? wxRentContract.getPrice() / 100 : 0); + wxRentContract.setDeposit(wxRentContract.getDeposit() != null ? wxRentContract.getDeposit() * 100 : 0); + + result.put("wxRentContract", wxRentContract); //关联的商户 - if(wxRentContract.getMerchantId()!=null){ + if (wxRentContract.getMerchantId() != null) { WxMerchant wxMerchant = wxMerchantService.getById(wxRentContract.getMerchantId()); - result.put("wxMerchant",wxMerchant); - }else{ - result.put("wxMerchant",null); + result.put("wxMerchant", wxMerchant); + } else { + result.put("wxMerchant", null); } //关联的店铺 - if(wxRentContract.getShopId()!=null){ - List list=new ArrayList<>(); + if (wxRentContract.getShopId() != null) { + List list = new ArrayList<>(); WxShop wxShop = wxShopMapper.selectByPrimaryKey(wxRentContract.getShopId()); list.add(wxShop); - result.put("wxShops",list); - }else{ - result.put("wxShops",Collections.EMPTY_LIST); + result.put("wxShops", list); + } else { + result.put("wxShops", Collections.EMPTY_LIST); } - return new ResultData(Result.SUCCESS, "查询成功",result); + return new ResultData(Result.SUCCESS, "查询成功", result); } @Transactional(rollbackFor = {Exception.class}) @@ -97,8 +102,8 @@ public class WxRentContractServiceImpl implements WxRentContractService { record.setId(idWorker.nextId()); Calendar instance = Calendar.getInstance(); instance.setTime(record.getRentalStartDate()); - instance.add(Calendar.MONTH,record.getLease()); - instance.add(Calendar.DAY_OF_MONTH,-1); + instance.add(Calendar.MONTH, record.getLease()); + instance.add(Calendar.DAY_OF_MONTH, -1); record.setRentalEndDate(instance.getTime()); Date date = new Date(); record.setCreatetime(date); @@ -109,29 +114,33 @@ public class WxRentContractServiceImpl implements WxRentContractService { logger.error("保存租赁合同信息失败,e:" + e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); } - return new ResultData(Result.SUCCESS, "保存租赁合同信息成功",record); + return new ResultData(Result.SUCCESS, "保存租赁合同信息成功", record); } else {//更新租赁合同信息 Calendar instance = Calendar.getInstance(); instance.setTime(record.getRentalStartDate()); - instance.add(Calendar.MONTH,record.getLease()); - instance.add(Calendar.DAY_OF_MONTH,-1); + instance.add(Calendar.MONTH, record.getLease()); + instance.add(Calendar.DAY_OF_MONTH, -1); record.setRentalEndDate(instance.getTime()); - record.setPrice(record.getPrice()!=null?record.getPrice()*100:0); + record.setPrice(record.getPrice() != null ? record.getPrice() * 100 : 0); + record.setDeposit(record.getDeposit() != null ? record.getDeposit() * 100 : 0); record.setUpdatetime(new Date()); try { wxRentContractMapper.updateByPrimaryKeySelective(record); //建立账单 - if(record.getMerchantId()!=null && record.getStatus().equals(EnumRentContractStatus.SIGNED_RENT_UNPAID.getCode()) - && record.getReceivePeriod()!=null){ + if (record.getMerchantId() != null && record.getStatus().equals(EnumRentContractStatus.SIGNED_RENT_UNPAID.getCode()) + && record.getReceivePeriod() != null) { WxBillRent wxBillRent = new WxBillRent(); wxBillRent.setMerchantId(record.getMerchantId()); List> billRentList = wxBillRentMapper.queryBillRentList(wxBillRent); - if(billRentList.size()==0){ + if (billRentList.size() == 0) { WxMerchant wxMerchant = new WxMerchant(); wxMerchant.setId(record.getMerchantId()); wxMerchant.setTenantId(record.getTenantId()); + //租金 buildRent(wxMerchant); + //押金 + buildDeposit(wxMerchant); } } } catch (Exception e) { @@ -143,6 +152,60 @@ public class WxRentContractServiceImpl implements WxRentContractService { } + @Transactional(rollbackFor = {Exception.class}) + public void buildDeposit(WxMerchant wxMerchant) { + MallUserInfo user = (MallUserInfo) SecurityUtils.getSubject().getSession().getAttribute("userSession"); + 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(); + final IdWorker idWorker = IdWorker.get(); + WxBillDeposit wxBillDeposit = new WxBillDeposit(); + wxBillDeposit.setId(idWorker.nextId()); + wxBillDeposit.setRentContractId(wxRentContract.getId()); + wxBillDeposit.setReceivePay(0); + wxBillDeposit.setPay(0); + int needpay = wxRentContract.getDeposit(); + wxBillDeposit.setNeedPay(needpay); + wxBillDeposit.setOwe(needpay); + + Date date = new Date(); + Calendar instance = Calendar.getInstance(); + instance.setTime(wxRentContract.getRentalStartDate()); + instance.add(Calendar.MONTH, receivePeriod.intValue()); + instance.add(Calendar.DAY_OF_MONTH, -1); + Date time = instance.getTime(); + wxBillDeposit.setReceiveDate(time); + //截止收租日在当前时间之前 + if (wxBillDeposit.getReceiveDate().before(date)) { + long day = (time.getTime() - date.getTime()) / (24 * 60 * 60 * 1000); + wxBillDeposit.setStatus(EnumBillRentStatus.NOT_PAID.getCode()); + wxBillDeposit.setExpiredDay(day); + wxBillDeposit.setReceiveDate(time); + } else { + wxBillDeposit.setStatus(EnumBillRentStatus.WAIT_PAY.getCode()); + wxBillDeposit.setExpiredDay(0L); + wxBillDeposit.setReceiveDate(time); + } + + wxBillDeposit.setTenantId(wxMerchant.getTenantId()); + wxBillDeposit.setIsDel(0); + wxBillDeposit.setMerchantId(wxMerchant.getId()); + wxBillDeposit.setUserId(user.getId()); + wxBillDeposit.setShopId(wxRentContract.getShopId()); + wxBillDeposit.setCreatetime(date); + wxBillDeposit.setUpdatetime(date); + try { + wxBillDepositMapper.insertSelective(wxBillDeposit); + } catch (Exception e) { + logger.error("添加押金账单失败,e:" + e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); + } + } + } + @Transactional(rollbackFor = {Exception.class}) public void buildRent(WxMerchant wxMerchant) { @@ -186,11 +249,11 @@ public class WxRentContractServiceImpl implements WxRentContractService { now.add(Calendar.MONTH, receivePeriod.intValue()); Date currenttime = now.getTime(); //当前日期加上周期后小于截止收租日就是没有到期,否则当前待缴 - if(currenttime.before(wxBillRent.getReceiveDate())){ + if (currenttime.before(wxBillRent.getReceiveDate())) { wxBillRent.setStatus(EnumBillRentStatus.NOT_EXPIRED.getCode()); wxBillRent.setExpiredDay(0L); wxBillRent.setReceiveDate(time); - }else{ + } else { wxBillRent.setStatus(EnumBillRentStatus.WAIT_PAY.getCode()); wxBillRent.setExpiredDay(0L); wxBillRent.setReceiveDate(time); @@ -204,9 +267,9 @@ public class WxRentContractServiceImpl implements WxRentContractService { wxBillRent.setShopId(wxRentContract.getShopId()); wxBillRent.setCreatetime(date); wxBillRent.setUpdatetime(date); - try{ + try { wxBillRentMapper.insertSelective(wxBillRent); - }catch (Exception e){ + } catch (Exception e) { logger.error("添加租赁账单失败,e:" + e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); } @@ -216,7 +279,6 @@ public class WxRentContractServiceImpl implements WxRentContractService { } - @Transactional(rollbackFor = {Exception.class}) @Override public ResultData deleteById(String id) { @@ -230,7 +292,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { WxRentContract wxRentContract = wxRentContractMapper.selectByPrimaryKey(id); String filesuffix = wxRentContract.getFilepath().substring(wxRentContract.getFilepath().lastIndexOf(".")); - String filename=UUID.randomUUID()+filesuffix; + String filename = UUID.randomUUID() + filesuffix; String filepath = Constant.fileDirectory; String destPath = filepath + filename; File dest = new File(destPath); @@ -239,11 +301,11 @@ public class WxRentContractServiceImpl implements WxRentContractService { pDest.mkdirs(); } try { - downLoadFromUrl(wxRentContract.getFilepath(),filename,filepath); + downLoadFromUrl(wxRentContract.getFilepath(), filename, filepath); downFile(destPath, wxRentContract.getFilename(), response, request); org.apache.commons.io.FileUtils.forceDelete(dest); } catch (IOException e) { - logger.info("创建本地文件失败"+e.getMessage()); + logger.info("创建本地文件失败" + e.getMessage()); } } @@ -251,13 +313,13 @@ public class WxRentContractServiceImpl implements WxRentContractService { @Override public Object getRentContractStatusInfo(String tenantId) { - Map resultData=new HashMap(); + Map resultData = new HashMap(); //商铺信息 - Map shopparams=new HashMap<>(); - shopparams.put("tenantId",tenantId); - shopparams.put("status",EnumShopStatus.NOT_RENT.getCode()); - Map shopLeftInfo=wxShopMapper.queryShopLeftInfo(shopparams); - resultData.put("shopLeftInfo",shopLeftInfo); + Map shopparams = new HashMap<>(); + shopparams.put("tenantId", tenantId); + shopparams.put("status", EnumShopStatus.NOT_RENT.getCode()); + Map shopLeftInfo = wxShopMapper.queryShopLeftInfo(shopparams); + resultData.put("shopLeftInfo", shopLeftInfo); //需要更新的状态 resultData.putAll(updateStatus(tenantId)); @@ -274,8 +336,8 @@ public class WxRentContractServiceImpl implements WxRentContractService { wxRentContractMapper.updateByPrimaryKeySelective(wxRentContract); //停用商户 wxMerchantService.disable(wxRentContract.getMerchantId()); - }catch (MallinkException e){ - logger.info("终止合同失败:"+e.getMessage()); + } catch (MallinkException e) { + logger.info("终止合同失败:" + e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); } return new ResultData(Result.SUCCESS, "操作成功"); @@ -284,19 +346,25 @@ public class WxRentContractServiceImpl implements WxRentContractService { @Transactional(rollbackFor = {Exception.class}) @Override public ResultData updateMerchant(WxRentContract wxRentContract) { - WxRentContract record =wxRentContractMapper.selectByPrimaryKey(wxRentContract); + WxRentContract record = wxRentContractMapper.selectByPrimaryKey(wxRentContract); record.setMerchantId(wxRentContract.getMerchantId()); - try{ + try { wxRentContractMapper.updateByPrimaryKeySelective(record); - }catch (MallinkException e){ - logger.info("关联合同商户失败:"+e.getMessage()); + } catch (MallinkException e) { + logger.info("关联合同商户失败:" + e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); } return new ResultData(Result.SUCCESS, "操作成功"); } - public Map updateStatus(String tenantId){ - Map resultData=new HashMap(); + @Override + public Object getRentContractList(String tenantId) { + + return wxRentContractMapper.getRentContractList(tenantId); + } + + public Map updateStatus(String tenantId) { + Map resultData = new HashMap(); WxRentContract wxRentContract = new WxRentContract(); wxRentContract.setTenantId(tenantId); @@ -307,35 +375,35 @@ public class WxRentContractServiceImpl implements WxRentContractService { //待签约 wxRentContract.setStatus(EnumRentContractStatus.WAIT_SIGN.getCode()); wxRentContractMapper.updateRentWaitSignStatus(wxRentContract); - int waitSignCount=wxRentContractMapper.queryRentContractWaitSignStatus(wxRentContract); - resultData.put("waitSignCount",waitSignCount); + int waitSignCount = wxRentContractMapper.queryRentContractWaitSignStatus(wxRentContract); + resultData.put("waitSignCount", waitSignCount); //计租中 wxRentContract.setStatus(EnumRentContractStatus.RENT_PAID.getCode()); - int rendPaidCount =wxRentContractMapper.queryRentContractPaidStatus(wxRentContract); + int rendPaidCount = wxRentContractMapper.queryRentContractPaidStatus(wxRentContract); wxRentContractMapper.updateRentContractPaidStatus(wxRentContract); - resultData.put("rendPaidCount",rendPaidCount); + resultData.put("rendPaidCount", rendPaidCount); //将到期 wxRentContract.setStatus(EnumRentContractStatus.CONTRACT_END_SOON.getCode()); - int endSoonCount=wxRentContractMapper.queryRentContractEndSoonStatus(wxRentContract); + int endSoonCount = wxRentContractMapper.queryRentContractEndSoonStatus(wxRentContract); wxRentContractMapper.updateRentContractEndSoonStatus(wxRentContract); - resultData.put("endSoonCount",endSoonCount); + resultData.put("endSoonCount", endSoonCount); //到期 wxRentContract.setStatus(EnumRentContractStatus.CONTRACT_END.getCode()); - int endCount=wxRentContractMapper.queryRentContractEndStatus(wxRentContract); + int endCount = wxRentContractMapper.queryRentContractEndStatus(wxRentContract); wxRentContractMapper.updateRentContractEndStatus(wxRentContract); - resultData.put("endCount",endCount); + resultData.put("endCount", endCount); return resultData; } - public static void downLoadFromUrl(String urlStr,String fileName,String savePath) throws IOException{ + public static void downLoadFromUrl(String urlStr, String fileName, String savePath) throws IOException { URL url = new URL(urlStr); - HttpURLConnection conn = (HttpURLConnection)url.openConnection(); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); //设置超时间为3秒 - conn.setConnectTimeout(3*1000); + conn.setConnectTimeout(3 * 1000); //防止屏蔽程序抓取而返回403错误 conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"); @@ -346,29 +414,29 @@ public class WxRentContractServiceImpl implements WxRentContractService { //文件保存位置 File saveDir = new File(savePath); - if(!saveDir.exists()){ + if (!saveDir.exists()) { saveDir.mkdir(); } - File file = new File(saveDir+File.separator+fileName); + File file = new File(saveDir + File.separator + fileName); FileOutputStream fos = new FileOutputStream(file); fos.write(getData); - if(fos!=null){ + if (fos != null) { fos.close(); } - if(inputStream!=null){ + if (inputStream != null) { inputStream.close(); } - System.out.println("info:"+url+" download success"); + System.out.println("info:" + url + " download success"); } - public static byte[] readInputStream(InputStream inputStream) throws IOException { + public static byte[] readInputStream(InputStream inputStream) throws IOException { byte[] buffer = new byte[1024]; int len = 0; ByteArrayOutputStream bos = new ByteArrayOutputStream(); - while((len = inputStream.read(buffer)) != -1) { + while ((len = inputStream.read(buffer)) != -1) { bos.write(buffer, 0, len); } bos.close(); @@ -382,9 +450,9 @@ public class WxRentContractServiceImpl implements WxRentContractService { response.setContentType("bin"); String agent = req.getHeader("user-agent"); if (agent.contains("Firefox")) { - response.setHeader("Content-disposition", "attachment; filename=" + new String(filename.getBytes("GB2312"),"ISO-8859-1")); + response.setHeader("Content-disposition", "attachment; filename=" + new String(filename.getBytes("GB2312"), "ISO-8859-1")); } else { - response.setHeader("Content-disposition","attachment; filename=" + java.net.URLEncoder.encode(filename,"UTF-8")); + response.setHeader("Content-disposition", "attachment; filename=" + java.net.URLEncoder.encode(filename, "UTF-8")); } // 循环取出流中的数据 byte[] b = new byte[1024]; diff --git a/mallinkService/src/main/resources/mapper/WxBillDepositMapper.xml b/mallinkService/src/main/resources/mapper/WxBillDepositMapper.xml new file mode 100644 index 000000000..7f7bdf8de --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxBillDepositMapper.xml @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + `id`,`rent_contract_id`,`receive_pay`,`pay`,`receive_date`,`pay_date`,`createtime`,`expired_day`,`tenant_id`,`owe`,`status`,`is_del`,`need_pay`,`merchant_id`,`user_id`,`shop_id`,`updatetime` + + + + where 1 = 1 + and `id` = #{id} + and `rent_contract_id` = #{rentContractId} + and `receive_pay` = #{receivePay} + and `pay` = #{pay} + and `receive_date` = #{receiveDate} + and `pay_date` = #{payDate} + and `createtime` = #{createtime} + and `expired_day` = #{expiredDay} + and `tenant_id` = #{tenantId} + and `owe` = #{owe} + and `status` = #{status} + and `is_del` = #{isDel} + and `need_pay` = #{needPay} + and `merchant_id` = #{merchantId} + and `user_id` = #{userId} + and `shop_id` = #{shopId} + and `updatetime` = #{updatetime} + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + + + + + + update wx_bill_deposit set status=#{notPaid},expired_day=DATEDIFF(now(),receive_date) + where tenant_id=#{tenantId} and status!=#{paid} and DATEDIFF(now(),receive_date)>0 + + + + update wx_bill_deposit set status=#{waitPay} where id in( + select a.id from (select br.id,rc.receive_period,br.rent_contract_id,br.receive_date from wx_bill_deposit br + left join wx_rent_contract rc on br.rent_contract_id=rc.id + where br.tenant_id=#{tenantId} and br.status!=#{paid} and now() < br.receive_date + and DATE_ADD(now(),INTERVAL 1 MONTH)>br.receive_date) a) + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxRentContractMapper.xml b/mallinkService/src/main/resources/mapper/WxRentContractMapper.xml index fd71f3e25..984b79acf 100644 --- a/mallinkService/src/main/resources/mapper/WxRentContractMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxRentContractMapper.xml @@ -13,7 +13,7 @@ - + @@ -136,5 +136,9 @@ )s) and merchant_id is null and tenant_id=#{tenantId} +