diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillAllController.java b/mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillAllController.java index 0b9cc44a1..524449900 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillAllController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillAllController.java @@ -218,6 +218,7 @@ public class WxBillAllController extends BaseController { wxBillAll.setEndtime(wxBillAll.getEndtime() + " 23:59:59"); } wxBillAll.updateTenantInfo(getTenantInfo()); + wxBillAllService.exportOweBill(wxBillAll, request, response); } diff --git a/mallinkAdmin/src/main/resources/db/migration/V2022012000001__optimize.sql b/mallinkAdmin/src/main/resources/db/migration/V2022012000001__optimize.sql index e4ad69908..cd8493078 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V2022012000001__optimize.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V2022012000001__optimize.sql @@ -1028,4 +1028,6 @@ CREATE TABLE `wx_bill_settle_schedule` ( PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='结算单'; +ALTER TABLE `wx_pay_bill` ADD COLUMN `bill_type_value` int(1) NOT NULL DEFAULT 0 COMMENT '账单类型' ; + diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxBillController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxBillController.java index 9048a0ca6..67b205b0e 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxBillController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxBillController.java @@ -87,7 +87,7 @@ public class WxBillController extends BaseController { logger.info("开始时间和结束时间要同时存在或不存在"); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"starttime和endtime要同时存在或不存在"); } - return wxBillAllService.listBill(wxBillAll,wxMerchant); + return wxBillAllService.pageListBill(wxBillAll,wxMerchant,true,true,true); } diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxPayBillController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxPayBillController.java index 873bf5e86..eec42a7a7 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxPayBillController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxPayBillController.java @@ -33,7 +33,7 @@ public class WxPayBillController extends BaseController { @Autowired private WxPayBillService wxPayBillService; - @ApiOperation(value = "发起微信小程序支付订单", notes = "{\"billId\":\"string\",\"appId\":\"string\",\"openId\":\"string\",\"bUserId\":\"string\"}") + @ApiOperation(value = "发起微信小程序支付订单", notes = "{\"billTypeValue\":\"string\",\"billId\":\"string\",\"appId\":\"string\",\"openId\":\"string\",\"bUserId\":\"string\"}") @RequestMapping(value = "/create", method = RequestMethod.POST) public ResultData _create(@RequestBody Map paramMap, HttpServletRequest request) throws Exception { logger.info("/api/pay/create" + paramMap.toString()); @@ -50,6 +50,19 @@ public class WxPayBillController extends BaseController { } catch (NumberFormatException e) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "billId参数不正确"); } + + String billTypeValueStr = paramMap.get("billTypeValue"); + if (StringUtils.isEmpty(billTypeValueStr)) { + logger.info("billId不能为空: " + paramMap.toString()); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "billTypeValue不能为空"); + } + + Integer billTypeValue = null; + try { + billTypeValue = Integer.parseInt(billTypeValueStr); + } catch (NumberFormatException e) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "billTypeValue参数不正确"); + } //b_user_id String bUserIdStr = paramMap.get("bUserId"); @@ -79,7 +92,7 @@ public class WxPayBillController extends BaseController { record.updateTenantInfo(getTenantInfo()); try { record.setIp(IPUtil.getIpAddr(request)); - return wxPayBillService.createPayBill(appInfo, record, EnumPayWay.PAY_WAY_WECHAT); + return wxPayBillService.createPayBill(billTypeValue,appInfo, record, EnumPayWay.PAY_WAY_WECHAT); } catch (MallinkException e) { logger.error("payment wechat, order create error, req 2: " + record.toString() + ", e:" + e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage()); diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/BillSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/BillSchedule.java index 87c6e5a86..973023a11 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/BillSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/BillSchedule.java @@ -2,6 +2,7 @@ package com.iformall.schedule; import com.iformall.domain.vo.WxBillAll; import com.iformall.mapper.WxBillAllMapper; +import com.iformall.mapper.WxBillSettleScheduleMapper; import com.iformall.service.WxBillAllService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -17,11 +18,11 @@ public class BillSchedule { private final Logger logger = LoggerFactory.getLogger(this.getClass()); - @Autowired - private WxBillAllMapper wxBillAllMapper; - @Autowired WxBillAllService wxBillAllService; + + @Autowired + WxBillSettleScheduleMapper wxBillSettleScheduleMapper; /** * 每天1点执行 @@ -32,7 +33,7 @@ public class BillSchedule { public void settleBill() { WxBillAll wxBillAll = new WxBillAll(); //wxBillAll.updateTenantInfo(wxBillAll); - List settleBillIdList = wxBillAllMapper.listToSettleBillIdList(wxBillAll); + List settleBillIdList = wxBillSettleScheduleMapper.listToSettleBillIdList(wxBillAll); if (null != settleBillIdList && settleBillIdList.size() > 0 ) { for (int i = 0 ; i < settleBillIdList.size(); i ++) { Long settleId = settleBillIdList.get(i); diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxPayBill.java b/mallinkService/src/main/java/com/iformall/domain/po/WxPayBill.java index b806f9e6e..07bb887a8 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxPayBill.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxPayBill.java @@ -53,6 +53,9 @@ public class WxPayBill extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="openId",name="openId") private String openId; + + @io.swagger.annotations.ApiModelProperty(value="billTypeValue",name="billTypeValue") + private Integer billTypeValue; public Long getbUserId() { diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumBillQueryType.java b/mallinkService/src/main/java/com/iformall/enums/EnumBillQueryType.java index 5b408a9db..c78cf2a03 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumBillQueryType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumBillQueryType.java @@ -17,6 +17,14 @@ public enum EnumBillQueryType { SETTLE(10, "结算单") ; + public static Integer getRealType(Integer type) { + //查询的列表数据中 5:水费 6:电费 9:空调费 + if (type == 5 || type == 6 || type == 9) { + return WATER_POWER_AIR.getCode(); + } + return type; + } + public static EnumBillQueryType getEnum(Integer code) { for (EnumBillQueryType value : values()) { if (value.getCode().equals(code)) { diff --git a/mallinkService/src/main/java/com/iformall/service/WxBillAllService.java b/mallinkService/src/main/java/com/iformall/service/WxBillAllService.java index f5af0d28c..5b2b262f9 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxBillAllService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxBillAllService.java @@ -26,7 +26,8 @@ public interface WxBillAllService { //List> listBillOweAndWaitPay(WxBillAll wxBillAll); - ResultData listBill(WxBillAll wxBillAll,WxMerchant wxMerchant); + ResultData pageListBill(WxBillAll wxBillAll,WxMerchant wxMerchant,boolean hasShop,boolean hasPayBill,boolean hasReceivePay); + List> listBill(WxBillAll wxBillAll,WxMerchant wxMerchant,boolean hasShop,boolean hasPayBill,boolean hasReceivePay); void updateBill(Map bill); diff --git a/mallinkService/src/main/java/com/iformall/service/WxPayBillService.java b/mallinkService/src/main/java/com/iformall/service/WxPayBillService.java index b69dbc22c..4102c33e8 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxPayBillService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxPayBillService.java @@ -19,7 +19,7 @@ public interface WxPayBillService { * @param payWay * @return */ - ResultData createPayBill(WxAppinfo appInfo, WxPayBill record, EnumPayWay payWay); + ResultData createPayBill(Integer billTypeValue,WxAppinfo appInfo, WxPayBill record, EnumPayWay payWay); /** * 微信支付订单查询 diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java index 72a7e2e07..69dd86922 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java @@ -215,13 +215,20 @@ public class WxBillAllServiceImpl implements WxBillAllService { // } @Override - public ResultData listBill(WxBillAll wxBillAll,WxMerchant wxMerchant) { + public ResultData pageListBill(WxBillAll wxBillAll,WxMerchant wxMerchant,boolean hasShop,boolean hasPayBill,boolean hasReceivePay) { //更新各账单状态 //updateBillStatus(wxBillAll); PageHelper.startPage(wxBillAll.getPageIndex(), wxBillAll.getPageSize()); + PageInfo> pageInfo = new PageInfo<>(listBill(wxBillAll, wxMerchant, hasShop, hasPayBill, hasReceivePay)); + return new ResultData(pageInfo); + } + + @Override + public List> listBill(WxBillAll wxBillAll,WxMerchant wxMerchant,boolean hasShop,boolean hasPayBill,boolean hasReceivePay){ List> maps = null; //账单类型 if (wxBillAll.getBillTypeValue() != null) { + wxBillAll.setBillTypeValue(EnumBillQueryType.getRealType(wxBillAll.getBillTypeValue())); if (wxBillAll.getBillTypeValue().equals(EnumBillQueryType.RENT.getCode())) { wxBillAll.setBillTypeValue(EnumBillQueryType.RENT.getCode()); maps = wxBillAllMapper.listRentBillData(wxBillAll); @@ -257,37 +264,42 @@ public class WxBillAllServiceImpl implements WxBillAllService { Long id = (Long) map.get("id"); WxBillSettle settle = wxBillSettleService.getById(id, EnumFilterSettle.YES.getCode()); map.put("owe", settle.getBalance()); - settle = wxBillSettleService.getById(id, EnumFilterSettle.NO.getCode()); - map.put("receivePay", settle.getBalance()); + if (hasReceivePay) { + settle = wxBillSettleService.getById(id, EnumFilterSettle.NO.getCode()); + map.put("receivePay", settle.getBalance()); + } + } + if (null != wxMerchant) { + map.put("merchantName", wxMerchant.getName()); } - - map.put("merchantName", wxMerchant.getName()); - Long shopId = (Long) map.get("shopId"); - if (null != shopId) { - Map param = new HashMap(); - param.put("id", shopId); - Map shopResult = wxShopMapper.getMerchantShopByShopId(param); - if (null != shopResult) { - map.put("shopNumber", shopResult.get("shopNumber")); - } + if (hasShop) { + Long shopId = (Long) map.get("shopId"); + if (null != shopId) { + Map param = new HashMap(); + param.put("id", shopId); + Map shopResult = wxShopMapper.getMerchantShopByShopId(param); + if (null != shopResult) { + map.put("shopNumber", shopResult.get("shopNumber")); + } + } } - - Long billId = (Long) map.get("id"); - WxPayBill wxPayBill = new WxPayBill(); - wxPayBill.updateTenantInfo(wxMerchant); - wxPayBill.setBillId(billId); - List payBillList = wxPayBillMapper.findList(wxPayBill); - if (null != payBillList && payBillList.size() > 0 ) { - WxPayBill pb = payBillList.get(0); - map.put("payBillStatus", pb.getPayBillStatus()); - map.put("tradeTime", pb.getPayTimeEnd()); - map.put("transactionId", pb.getTransactionId()); - map.put("payAmount", pb.getPayAmount()); + if (hasPayBill) { + Long billId = (Long) map.get("id"); + WxPayBill wxPayBill = new WxPayBill(); + wxPayBill.updateTenantInfo(wxMerchant); + wxPayBill.setBillId(billId); + List payBillList = wxPayBillMapper.findList(wxPayBill); + if (null != payBillList && payBillList.size() > 0 ) { + WxPayBill pb = payBillList.get(0); + map.put("payBillStatus", pb.getPayBillStatus()); + map.put("tradeTime", pb.getPayTimeEnd()); + map.put("transactionId", pb.getTransactionId()); + map.put("payAmount", pb.getPayAmount()); + } } } } - PageInfo> pageInfo = new PageInfo<>(maps); - return new ResultData(pageInfo); + return maps; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayBillServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayBillServiceImpl.java index ebbfff2c2..1a8f53e2f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayBillServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayBillServiceImpl.java @@ -24,6 +24,7 @@ import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -50,12 +51,14 @@ public class WxPayBillServiceImpl implements WxPayBillService { @Autowired WxBillAllMapper wxBillAllMapper; + @Lazy @Autowired WxBillAllService wxBillAllService; @Autowired WxMerchantBUserMapper wxMerchantBUserMapper; + @Lazy @Autowired private WxBillSettleService wxBillSettleService; @@ -89,7 +92,7 @@ public class WxPayBillServiceImpl implements WxPayBillService { "\"XML_FORMAT_ERROR\":{\"detail\":\"XML格式错误\t\",\"reason\":\"XML格式错误\",\"reason\":\"请检查XML参数格式是否正确\"}}"); @Override - public ResultData createPayBill(WxAppinfo appInfo, WxPayBill record, EnumPayWay payWay) { + public ResultData createPayBill(Integer billTypeValue,WxAppinfo appInfo, WxPayBill record, EnumPayWay payWay) { final IdWorker idworker = IdWorker.get(); EnumPayShare isShare = EnumPayShare.NO; @@ -98,7 +101,8 @@ public class WxPayBillServiceImpl implements WxPayBillService { WxBillAll wxBillAll = new WxBillAll(); wxBillAll.updateTenantInfo(record); wxBillAll.setId(record.getBillId()); - List> bills = wxBillAllMapper.listData(wxBillAll); + wxBillAll.setBillTypeValue(billTypeValue); + List> bills = wxBillAllService.listBill(wxBillAll,null,false,false,false); if (bills.size()==0) { logger.error("pay bill, bill not allow, repaymentReq: " + JSONObject.toJSONString(record) + ", payWay: " + payWay.toString()); throw new MallinkException(ErrorCode.BILL_ROUTINE_IS_NOT_FOUND); @@ -106,14 +110,7 @@ public class WxPayBillServiceImpl implements WxPayBillService { //获取账单数据 Map bill = bills.get(0); Long owe = (Long) bill.get("owe"); - Integer billTypeValue = ((Long) bill.get("billTypeValue")).intValue(); - if(EnumBillType.SETTLE.getCode().equals(billTypeValue)){ - WxBillSettle wxBillSettle = wxBillSettleService.getById(record.getBillId(), EnumFilterSettle.YES.getCode()); - owe = wxBillSettle.getBalance(); - bill.put("owe",owe); - logger.info("wxBillSettle.balance:{}",owe); - } if (owe.longValue() <= 0) { logger.info("账单欠缴为0"); return new ResultData(ErrorCode.BILL_OWE_ZERO); @@ -144,7 +141,7 @@ public class WxPayBillServiceImpl implements WxPayBillService { record.setPayVendor(payWay.getCode()); record.setPayBillStatus(EnumPayStatus.PAY_STATUS_WAIT.getCode()); record.setShare(isShare.getCode()); - + record.setBillTypeValue(billTypeValue); int sqlRow = wxPayBillMapper.insert(record); if (sqlRow != 1) { logger.error("pay bill insert error: " + JSONObject.toJSONString(record)); @@ -711,7 +708,8 @@ public class WxPayBillServiceImpl implements WxPayBillService { wxPayBillMapper.updateById(record); WxBillAll wxBillAll = new WxBillAll(); wxBillAll.setId(record.getBillId()); - List> bills = wxBillAllMapper.listData(wxBillAll); + wxBillAll.setBillTypeValue(record.getBillTypeValue()); + List> bills = wxBillAllService.listBill(wxBillAll, null, false, false, false); if (bills.size() > 0) { Map bill = bills.get(0); bill.put("userId", record.getbUserId()); @@ -726,7 +724,7 @@ public class WxPayBillServiceImpl implements WxPayBillService { WxBillAll wxBillAll = new WxBillAll(); wxBillAll.setId(record.getBillId()); wxBillAll.updateTenantInfo(record); - List> bills = wxBillAllMapper.listData(wxBillAll); + List> bills = wxBillAllService.listBill(wxBillAll, null, false, false, false); if (bills.size()==0) { logger.error("pay success handle, bill " + record.getBillId() + " not found , payBillNo : " + record.getPayBillNo()); throw new MallinkException(ErrorCode.BILL_ROUTINE_IS_NOT_FOUND); @@ -769,7 +767,8 @@ public class WxPayBillServiceImpl implements WxPayBillService { } WxBillAll wxBillAll = new WxBillAll(); wxBillAll.setId(record.getBillId()); - List> bills = wxBillAllMapper.listData(wxBillAll); + wxBillAll.setBillTypeValue(record.getBillTypeValue()); + List> bills = wxBillAllService.listBill(wxBillAll, null, false, false, false); if (bills.size()==0) { logger.error("pay handle, bill " + record.getBillId() + " not found , payBillNo : " + record.getPayBillNo()); throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); diff --git a/mallinkService/src/main/resources/mapper/WxPayBillMapper.xml b/mallinkService/src/main/resources/mapper/WxPayBillMapper.xml index 768cf018f..21e237b63 100644 --- a/mallinkService/src/main/resources/mapper/WxPayBillMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxPayBillMapper.xml @@ -22,10 +22,12 @@ + - `id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`bill_id`,`b_user_id`,`ip`,`pay_amount`,`pay_time_start`,`pay_time_end`,`prepay_id`,`transaction_id`,`pay_vendor`,`pay_bill_no`,`pay_bill_status`,`share`,`share_amount`,`fail_reason`,`open_id` + `id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`bill_id`,`b_user_id`,`ip`,`pay_amount`,`pay_time_start`,`pay_time_end`,`prepay_id`,`transaction_id`,`pay_vendor`, + `pay_bill_no`,`pay_bill_status`,`share`,`share_amount`,`fail_reason`,`open_id`,`bill_type_value` @@ -85,6 +87,10 @@ and `pay_vendor` = #{payVendor} + + + and `bill_type_value` = #{billTypeValue} + and `pay_bill_no` like concat('%', #{payBillNo},'%')