diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxPayBillController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxPayBillController.java index eec42a7a7..c6d306f05 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxPayBillController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxPayBillController.java @@ -4,10 +4,12 @@ import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.WxAppinfo; +import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.WxPayBill; import com.iformall.enums.EnumPayStatus; import com.iformall.enums.EnumPayWay; import com.iformall.exception.MallinkException; +import com.iformall.service.WxMerchantService; import com.iformall.service.WxPayBillService; import com.iformall.utils.IPUtil; import io.swagger.annotations.Api; @@ -32,8 +34,11 @@ public class WxPayBillController extends BaseController { @Autowired private WxPayBillService wxPayBillService; + + @Autowired + WxMerchantService wxMerchantService; - @ApiOperation(value = "发起微信小程序支付订单", notes = "{\"billTypeValue\":\"string\",\"billId\":\"string\",\"appId\":\"string\",\"openId\":\"string\",\"bUserId\":\"string\"}") + @ApiOperation(value = "发起微信小程序支付订单", notes = "{\"billTypeValue\":\"string\",\"billId\":\"string\",\"appId\":\"string\",\"openId\":\"string\",\"bUserId\":\"string\",\"merchantId\":\"string\"}") @RequestMapping(value = "/create", method = RequestMethod.POST) public ResultData _create(@RequestBody Map paramMap, HttpServletRequest request) throws Exception { logger.info("/api/pay/create" + paramMap.toString()); @@ -53,7 +58,6 @@ public class WxPayBillController extends BaseController { String billTypeValueStr = paramMap.get("billTypeValue"); if (StringUtils.isEmpty(billTypeValueStr)) { - logger.info("billId不能为空: " + paramMap.toString()); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "billTypeValue不能为空"); } @@ -63,11 +67,27 @@ public class WxPayBillController extends BaseController { } catch (NumberFormatException e) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "billTypeValue参数不正确"); } + + String merchantIdStr = paramMap.get("merchantId"); + if (StringUtils.isEmpty(merchantIdStr)) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "merchantId不能为空"); + } + + Long merchantId = null; + try { + merchantId = Long.parseLong(merchantIdStr); + } catch (NumberFormatException e) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "merchantId参数不正确"); + } + + WxMerchant wxMerchant = wxMerchantService.getById(merchantId); + if(wxMerchant==null){ + return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND); + } //b_user_id String bUserIdStr = paramMap.get("bUserId"); if (StringUtils.isEmpty(bUserIdStr)) { - logger.info("bUserId不能为空: " + paramMap.toString()); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "bUserId不能为空"); } @@ -92,7 +112,7 @@ public class WxPayBillController extends BaseController { record.updateTenantInfo(getTenantInfo()); try { record.setIp(IPUtil.getIpAddr(request)); - return wxPayBillService.createPayBill(billTypeValue,appInfo, record, EnumPayWay.PAY_WAY_WECHAT); + return wxPayBillService.createPayBill(wxMerchant,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/mallinkService/src/main/java/com/iformall/domain/po/WxPayBill.java b/mallinkService/src/main/java/com/iformall/domain/po/WxPayBill.java index 07bb887a8..a1edde52c 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxPayBill.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxPayBill.java @@ -26,6 +26,7 @@ public class WxPayBill extends TenantEntity { private Long billId; @io.swagger.annotations.ApiModelProperty(value="用户ID",name="bUserId") private Long bUserId; + @io.swagger.annotations.ApiModelProperty(value="ip地址",name="ip") private String ip; @io.swagger.annotations.ApiModelProperty(value="支付金额(分)",name="payAmount") diff --git a/mallinkService/src/main/java/com/iformall/service/WxPayBillService.java b/mallinkService/src/main/java/com/iformall/service/WxPayBillService.java index 4102c33e8..a2d7e13a4 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxPayBillService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxPayBillService.java @@ -2,6 +2,7 @@ package com.iformall.service; import com.iformall.common.ResultData; import com.iformall.domain.po.WxAppinfo; +import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.WxPayBill; import com.iformall.enums.EnumPayWay; @@ -19,7 +20,7 @@ public interface WxPayBillService { * @param payWay * @return */ - ResultData createPayBill(Integer billTypeValue,WxAppinfo appInfo, WxPayBill record, EnumPayWay payWay); + ResultData createPayBill(WxMerchant merchant,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 6e92e63d6..ce094998e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java @@ -293,6 +293,7 @@ public class WxBillAllServiceImpl implements WxBillAllService { List> maps = null; //账单类型 wxBillAll.setBillTypeValue(EnumBillQueryType.getRealType(wxBillAll.getBillTypeValue())); + wxBillAll.setMerchantId(wxMerchant.getId()); if (wxBillAll.getBillTypeValue().equals(EnumBillQueryType.RENT.getCode())) { wxBillAll.setBillTypeValue(EnumBillQueryType.RENT.getCode()); maps = wxBillAllMapper.listRentBillData(wxBillAll); @@ -332,9 +333,7 @@ public class WxBillAllServiceImpl implements WxBillAllService { map.put("receivePay", settle.getBalance()); } } - if (null != wxMerchant) { - map.put("merchantName", wxMerchant.getName()); - } + map.put("merchantName", wxMerchant.getName()); if (hasShop) { Long shopId = (Long) map.get("shopId"); if (null != shopId) { 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 386214cfd..a5303be6a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayBillServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayBillServiceImpl.java @@ -9,6 +9,8 @@ import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxBillSettle; +import com.iformall.domain.po.WxMerchant; +import com.iformall.domain.po.WxMerchantBUser; import com.iformall.domain.po.WxPayAccountBill; import com.iformall.domain.po.WxPayBill; import com.iformall.domain.vo.WxBillAll; @@ -18,6 +20,8 @@ import com.iformall.mapper.*; import com.iformall.pay.*; import com.iformall.service.WxBillAllService; import com.iformall.service.WxBillSettleService; +import com.iformall.service.WxMerchantBUserService; +import com.iformall.service.WxMerchantService; import com.iformall.service.WxPayBillService; import com.iformall.utils.*; import org.apache.commons.lang3.StringUtils; @@ -61,6 +65,14 @@ public class WxPayBillServiceImpl implements WxPayBillService { @Lazy @Autowired private WxBillSettleService wxBillSettleService; + + @Lazy + @Autowired + WxMerchantBUserService wxMerchantBUserService; + + @Lazy + @Autowired + WxMerchantService wxMerchantService; JSONObject errorMap = JSON.parseObject("{" + "\"NOAUTH\":{\"detail\":\"商户无此接口权限\",\"reason\":\"商户未开通此接口权限\",\"resolution\":\"请商户前往申请此接口权限\"}," + @@ -92,7 +104,7 @@ public class WxPayBillServiceImpl implements WxPayBillService { "\"XML_FORMAT_ERROR\":{\"detail\":\"XML格式错误\t\",\"reason\":\"XML格式错误\",\"reason\":\"请检查XML参数格式是否正确\"}}"); @Override - public ResultData createPayBill(Integer billTypeValue,WxAppinfo appInfo, WxPayBill record, EnumPayWay payWay) { + public ResultData createPayBill(WxMerchant merchant,Integer billTypeValue,WxAppinfo appInfo, WxPayBill record, EnumPayWay payWay) { final IdWorker idworker = IdWorker.get(); EnumPayShare isShare = EnumPayShare.NO; @@ -102,7 +114,7 @@ public class WxPayBillServiceImpl implements WxPayBillService { wxBillAll.updateTenantInfo(record); wxBillAll.setId(record.getBillId()); wxBillAll.setBillTypeValue(billTypeValue); - List> bills = wxBillAllService.listBill(wxBillAll,null,true,false,false,false); + List> bills = wxBillAllService.listBill(wxBillAll,merchant,true,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); @@ -709,7 +721,9 @@ public class WxPayBillServiceImpl implements WxPayBillService { WxBillAll wxBillAll = new WxBillAll(); wxBillAll.setId(record.getBillId()); wxBillAll.setBillTypeValue(record.getBillTypeValue()); - List> bills = wxBillAllService.listBill(wxBillAll, null,false, false, false, false); + WxMerchantBUser buser = wxMerchantBUserService.getById(record.getbUserId()); + WxMerchant wxMerchant = wxMerchantService.getById(buser.getMerchantId()); + List> bills = wxBillAllService.listBill(wxBillAll, wxMerchant,false, false, false, false); if (bills.size() > 0) { Map bill = bills.get(0); bill.put("userId", record.getbUserId()); @@ -768,7 +782,9 @@ public class WxPayBillServiceImpl implements WxPayBillService { WxBillAll wxBillAll = new WxBillAll(); wxBillAll.setId(record.getBillId()); wxBillAll.setBillTypeValue(record.getBillTypeValue()); - List> bills = wxBillAllService.listBill(wxBillAll, null,false, false, false, false); + WxMerchantBUser buser = wxMerchantBUserService.getById(record.getbUserId()); + WxMerchant wxMerchant = wxMerchantService.getById(buser.getMerchantId()); + List> bills = wxBillAllService.listBill(wxBillAll, wxMerchant,false, 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);