From c2a36b2c8e6b0fd6d52bd9d88ce76961cf789cf2 Mon Sep 17 00:00:00 2001 From: dy-hu Date: Tue, 25 Feb 2025 11:09:20 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=A1=E7=90=86=E7=AB=AF=E5=95=86=E5=AE=B6?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=8A=A0=E5=85=A5=E6=96=B0=E8=B4=A6=E9=80=9A?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E6=8E=A5=E5=85=A5=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/controller/BusinessWxpayController.java | 67 ++++++++++++++ .../admin/controller/HnaPayController.java | 103 +++++++++++++++++++++ .../dao/business/CerePlatformBusinessDAO.java | 4 + .../admin/dao/bwxpay/CereBusinessWxpayDao.java | 20 ++++ .../param/business/BusinessHnapayCreateParam.java | 87 +++++++++++++++++ .../cereshop/admin/pay/hnapay/HnaPayService.java | 15 +-- .../admin/pay/hnapay/impl/HnaPayServiceImpl.java | 26 +++--- .../business/CerePlatformBusinessService.java | 4 + .../impl/CerePlatformBusinessServiceImpl.java | 10 ++ .../service/bwxpay/CereBusinessWxpayService.java | 20 ++++ .../bwxpay/impl/CereBusinessWxpayServiceImpl.java | 40 ++++++++ .../mapper/business/CerePlatformBusinessDAO.xml | 11 ++- .../mybatis/mapper/bwxpay/CereBusinessWxpayDAO.xml | 19 ++++ .../app/dao/bwxpay/CereBusinessWxpayDao.java | 21 +++++ .../service/bwxpay/CereBusinessWxpayService.java | 21 +++++ .../bwxpay/impl/CereBusinessWxpayServiceImpl.java | 42 +++++++++ .../business/controller/HnaPayController.java | 54 +++++++++-- .../dao/business/CerePlatformBusinessDAO.java | 2 + .../business/CerePlatformBusinessService.java | 2 + .../impl/CerePlatformBusinessServiceImpl.java | 4 + .../mapper/business/CerePlatformBusinessDAO.xml | 4 + .../shop/cereshop/commons/config/HnaPayConfig.java | 5 +- .../domain/business/CerePlatformBusiness.java | 17 ++++ .../commons/domain/bwxpay/CereBusinessWxpay.java | 55 +++++++++++ doc/3.0/update.sql | 17 ++++ 25 files changed, 638 insertions(+), 32 deletions(-) create mode 100644 cereshop-admin/src/main/java/com/shop/cereshop/admin/controller/BusinessWxpayController.java create mode 100644 cereshop-admin/src/main/java/com/shop/cereshop/admin/controller/HnaPayController.java create mode 100644 cereshop-admin/src/main/java/com/shop/cereshop/admin/dao/bwxpay/CereBusinessWxpayDao.java create mode 100644 cereshop-admin/src/main/java/com/shop/cereshop/admin/param/business/BusinessHnapayCreateParam.java create mode 100644 cereshop-admin/src/main/java/com/shop/cereshop/admin/service/bwxpay/CereBusinessWxpayService.java create mode 100644 cereshop-admin/src/main/java/com/shop/cereshop/admin/service/bwxpay/impl/CereBusinessWxpayServiceImpl.java create mode 100644 cereshop-admin/src/main/resources/mybatis/mapper/bwxpay/CereBusinessWxpayDAO.xml create mode 100644 cereshop-app/src/main/java/com/shop/cereshop/app/dao/bwxpay/CereBusinessWxpayDao.java create mode 100644 cereshop-app/src/main/java/com/shop/cereshop/app/service/bwxpay/CereBusinessWxpayService.java create mode 100644 cereshop-app/src/main/java/com/shop/cereshop/app/service/bwxpay/impl/CereBusinessWxpayServiceImpl.java create mode 100644 cereshop-commons/src/main/java/com/shop/cereshop/commons/domain/bwxpay/CereBusinessWxpay.java diff --git a/cereshop-admin/src/main/java/com/shop/cereshop/admin/controller/BusinessWxpayController.java b/cereshop-admin/src/main/java/com/shop/cereshop/admin/controller/BusinessWxpayController.java new file mode 100644 index 0000000..1c8c2bf --- /dev/null +++ b/cereshop-admin/src/main/java/com/shop/cereshop/admin/controller/BusinessWxpayController.java @@ -0,0 +1,67 @@ +package com.shop.cereshop.admin.controller; + +/** + * 描述:商家微信配置模块 + * + * @author stevenhu + * @version 2025/02/20 14:38 + */ + +import com.shop.cereshop.admin.annotation.NoRepeatSubmit; +import com.shop.cereshop.admin.annotation.NoRepeatWebLog; +import com.shop.cereshop.admin.param.business.BusinessUpdateParam; +import com.shop.cereshop.admin.service.bwxpay.CereBusinessWxpayService; +import com.shop.cereshop.commons.constant.CoReturnFormat; +import com.shop.cereshop.commons.domain.business.CerePlatformBusiness; +import com.shop.cereshop.commons.domain.business.CerePlatformBusinessUser; +import com.shop.cereshop.commons.domain.bwxpay.CereBusinessWxpay; +import com.shop.cereshop.commons.domain.user.CerePlatformUser; +import com.shop.cereshop.commons.exception.CoBusinessException; +import com.shop.cereshop.commons.result.Result; +import com.shop.cereshop.commons.utils.GsonUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; + +@RestController +@RequestMapping("bwxpay") +/** + * 注解方式生成日志对象,指定topic生成对象类名 + */ +@Slf4j(topic = "BusinessWxpayController") +@Api(value = "商家微信配置模块", tags = "商家微信配置模块") +public class BusinessWxpayController { + + @Autowired + private CereBusinessWxpayService businessWxpayService; + + @PostMapping(value = "save") + @NoRepeatSubmit + @ApiOperation(value = "新建商家微信配置信息") + @NoRepeatWebLog + public Result save(@RequestBody CereBusinessWxpay wxpay, HttpServletRequest request) throws CoBusinessException { + //获取当前登录账户 + CerePlatformUser user = (CerePlatformUser) request.getAttribute("user"); + businessWxpayService.save(wxpay); + return new Result(user.getUsername(),"新建商家微信配置信息", GsonUtil.objectToGson(wxpay)); + } + + @PostMapping(value = "update") + @NoRepeatSubmit + @ApiOperation(value = "修改商家") + @NoRepeatWebLog + public Result update(@RequestBody CereBusinessWxpay wxpay, HttpServletRequest request) throws CoBusinessException{ + //校验商家名称是否存在 + //获取当前登录账户 + CerePlatformUser user = (CerePlatformUser) request.getAttribute("user"); + businessWxpayService.update(wxpay); + return new Result(user.getUsername(),"修改商家", GsonUtil.objectToGson(wxpay)); + } +} diff --git a/cereshop-admin/src/main/java/com/shop/cereshop/admin/controller/HnaPayController.java b/cereshop-admin/src/main/java/com/shop/cereshop/admin/controller/HnaPayController.java new file mode 100644 index 0000000..4e50565 --- /dev/null +++ b/cereshop-admin/src/main/java/com/shop/cereshop/admin/controller/HnaPayController.java @@ -0,0 +1,103 @@ +package com.shop.cereshop.admin.controller; + +import com.shop.cereshop.admin.annotation.NoRepeatSubmit; +import com.shop.cereshop.admin.annotation.NoRepeatWebLog; +import com.shop.cereshop.admin.param.business.BusinessHnapayCreateParam; +import com.shop.cereshop.admin.pay.hnapay.HnaPayService; +import com.shop.cereshop.admin.service.business.CerePlatformBusinessService; +import com.shop.cereshop.commons.exception.CoBusinessException; +import com.shop.cereshop.commons.result.Result; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Base64; +import java.util.Map; + +/** + * 描述:新生支付新账通回调处理 + * + * @author stevenhu + * @version 2025/02/14 9:24 + */ +@RestController +@RequestMapping("hnaPay") +@Slf4j(topic = "hnaPayController") +@Api(value = "新账通模块", tags = "新账通模块") +public class HnaPayController { + + @Autowired + private HnaPayService hnaPayService; + + @Autowired + private CerePlatformBusinessService businessService; + + + /** + * 新账通企业开户 + * @param param + * @return + */ + @PostMapping(value = "create") + @NoRepeatSubmit + @ApiOperation(value = "新账通企业开户") + @NoRepeatWebLog + public Result create(@RequestBody BusinessHnapayCreateParam param) throws CoBusinessException { + //新生支付新账通企业开户 + Map result = hnaPayService.createEntAccount(param); + String resultCode = String.valueOf(result.get("resultCode")); + String shareParId = ""; + if (resultCode.equals("0000")){ + shareParId = String.valueOf(result.get("userId")); + String bindCardAgrNo = String.valueOf(result.get("bindCardAgrNo")); + businessService.updateBusinessHnaPay(param.getBusinessId(),shareParId,bindCardAgrNo); + }else { + String errorMsg = String.valueOf(result.get("errorMsg")); + throw new CoBusinessException(errorMsg); + } + return new Result(shareParId); + } + + @PostMapping("uploadCertInfo") + @NoRepeatSubmit + @ApiOperation("企业开户资料上送") + @NoRepeatWebLog + public Result uploadCertInfo(MultipartFile file, String businessId, String shareParId, String type) throws CoBusinessException { + String base64 = getBase64(file); + Map result = hnaPayService.uploadEntFile(shareParId, type,base64); + String resultCode = String.valueOf(result.get("resultCode")); + if (resultCode.equals("0000")){ + businessService.updateBusinessHnapayState(Long.parseLong(businessId),1); + }else { + String errorMsg = String.valueOf(result.get("errorMsg")); + throw new CoBusinessException(errorMsg); + } + return new Result(base64); + } + + private String getBase64(MultipartFile file) { + InputStream in = null; + byte[] data = null; + String base64 = ""; + try { + in = file.getInputStream(); + data = new byte[in.available()]; + in.read(data); + in.close(); + base64 = Base64.getEncoder().encodeToString(data); + base64 = base64.replace("\n", "").replace("\r", ""); + }catch (IOException e) { + return null; + } + + return base64; + } +} diff --git a/cereshop-admin/src/main/java/com/shop/cereshop/admin/dao/business/CerePlatformBusinessDAO.java b/cereshop-admin/src/main/java/com/shop/cereshop/admin/dao/business/CerePlatformBusinessDAO.java index 3909a8e..0c707ee 100644 --- a/cereshop-admin/src/main/java/com/shop/cereshop/admin/dao/business/CerePlatformBusinessDAO.java +++ b/cereshop-admin/src/main/java/com/shop/cereshop/admin/dao/business/CerePlatformBusinessDAO.java @@ -69,4 +69,8 @@ public interface CerePlatformBusinessDAO extends BaseMapper getByIdList(@Param("businessIdList") List businessIdList); void updateDomain(BusinessDomainSet domainSet); + + void updateBusinessHnaPay(@Param("businessId") Long businessId, @Param("hnaPayId") String hnaPayId, @Param("bindCardAgrNo") String bindCardAgrNo); + + void updateBusinessHnapayState(@Param("businessId") Long businessId, @Param("hnapayStatus") Integer hnapayStatus); } diff --git a/cereshop-admin/src/main/java/com/shop/cereshop/admin/dao/bwxpay/CereBusinessWxpayDao.java b/cereshop-admin/src/main/java/com/shop/cereshop/admin/dao/bwxpay/CereBusinessWxpayDao.java new file mode 100644 index 0000000..c6e26f0 --- /dev/null +++ b/cereshop-admin/src/main/java/com/shop/cereshop/admin/dao/bwxpay/CereBusinessWxpayDao.java @@ -0,0 +1,20 @@ +package com.shop.cereshop.admin.dao.bwxpay; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.shop.cereshop.commons.domain.bwxpay.CereBusinessWxpay; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + + +/** + * 描述: + * + * @author stevenhu + * @version 2025/02/20 11:49 + */ +@Mapper +public interface CereBusinessWxpayDao extends BaseMapper { + + CereBusinessWxpay getByBusinessId(@Param("businessId") Long businessId); + +} diff --git a/cereshop-admin/src/main/java/com/shop/cereshop/admin/param/business/BusinessHnapayCreateParam.java b/cereshop-admin/src/main/java/com/shop/cereshop/admin/param/business/BusinessHnapayCreateParam.java new file mode 100644 index 0000000..73f19d0 --- /dev/null +++ b/cereshop-admin/src/main/java/com/shop/cereshop/admin/param/business/BusinessHnapayCreateParam.java @@ -0,0 +1,87 @@ +/* + * Copyright (C) 2017-2021 + * All rights reserved, Designed By 深圳中科鑫智科技有限公司 + * Copyright authorization contact 18814114118 + */ +package com.shop.cereshop.admin.param.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * 新账通企业开户 + */ +@Data +@ApiModel(value = "BusinessHnapayCreateParam", description = "新账通企业开户") +public class BusinessHnapayCreateParam { + + private Long businessId; + + /** + * 企业名称 + */ + @ApiModelProperty(value = "企业名称") + @NotBlank(message = "企业名称不能为空") + private String name; + + /** + * 营业执照号 + */ + @ApiModelProperty(value = "营业执照号") + @NotBlank(message = "营业执照号") + private String enterpriseCode; + + /** + * 执照效期 + */ + @ApiModelProperty(value = "执照效期") + @NotBlank(message = "执照效期") + private String validDate; + + /** + * 银行卡号 + */ + @ApiModelProperty(value = "银行卡号") + @NotBlank(message = "银行卡号") + private String bankCard; + + /** + * 银行简码 + */ + @ApiModelProperty(value = "银行简码") + @NotBlank(message = "银行简码") + private String bankCode; + + /** + * 开户省份 + */ + @ApiModelProperty(value = "开户省份") + @NotBlank(message = "开户省份") + private String bankProvince; + + /** + * 开户城市 + */ + @ApiModelProperty(value = "开户城市") + @NotBlank(message = "开户城市") + private String bankCity; + + + /** + * 开户城市 + */ + @ApiModelProperty(value = "开户支行") + @NotBlank(message = "开户支行") + private String bankBranch; + + /** + * 负责人电话 + */ + @ApiModelProperty(value = "负责人电话") + @NotBlank(message = "负责人电话") + private String contactPhone; + +} diff --git a/cereshop-admin/src/main/java/com/shop/cereshop/admin/pay/hnapay/HnaPayService.java b/cereshop-admin/src/main/java/com/shop/cereshop/admin/pay/hnapay/HnaPayService.java index d606029..2272224 100644 --- a/cereshop-admin/src/main/java/com/shop/cereshop/admin/pay/hnapay/HnaPayService.java +++ b/cereshop-admin/src/main/java/com/shop/cereshop/admin/pay/hnapay/HnaPayService.java @@ -1,5 +1,6 @@ package com.shop.cereshop.admin.pay.hnapay; +import com.shop.cereshop.admin.param.business.BusinessHnapayCreateParam; import com.shop.cereshop.admin.pay.PayService; import com.shop.cereshop.commons.exception.CoBusinessException; @@ -16,20 +17,10 @@ public interface HnaPayService extends PayService { /** * 企业开户 - * @param entId 企业id - * @param userName 企业名称 - * @param mobile 企业联系人手机号 - * @param certNo 营业执照号(统一社会信用代码) - * @param certValidate 证件有效期 格式:YYYYMMDD 永久则输入21990101 - * @param cardNo 银行卡号 - * @param bankCode 银行简码 - * @param province 开户行所属省份 - * @param city 开户行所属城市 - * @param branch 开户支行 + * @param param * @return */ - Map createEntAccount(Long entId, String userName, String mobile, String certNo, String certValidate, String cardNo, - String bankCode, String province, String city, String branch); + Map createEntAccount(BusinessHnapayCreateParam param); /** diff --git a/cereshop-admin/src/main/java/com/shop/cereshop/admin/pay/hnapay/impl/HnaPayServiceImpl.java b/cereshop-admin/src/main/java/com/shop/cereshop/admin/pay/hnapay/impl/HnaPayServiceImpl.java index 9efdca3..60dac6c 100644 --- a/cereshop-admin/src/main/java/com/shop/cereshop/admin/pay/hnapay/impl/HnaPayServiceImpl.java +++ b/cereshop-admin/src/main/java/com/shop/cereshop/admin/pay/hnapay/impl/HnaPayServiceImpl.java @@ -7,6 +7,7 @@ import com.shop.cereshop.admin.dao.order.CereShopOrderDAO; import com.shop.cereshop.admin.dao.shop.CereShopBankDAO; import com.shop.cereshop.admin.page.business.Business; import com.shop.cereshop.admin.page.business.BusinessGetAll; +import com.shop.cereshop.admin.param.business.BusinessHnapayCreateParam; import com.shop.cereshop.admin.pay.hnapay.HnaPayService; import com.shop.cereshop.admin.service.business.CerePlatformBusinessService; import com.shop.cereshop.admin.service.shop.CerePlatformShopService; @@ -60,24 +61,25 @@ public class HnaPayServiceImpl implements HnaPayService { private CereShopBankDAO cereShopBankDAO; @Override - public Map createEntAccount(Long entId, String userName, String mobile, String certNo, String certValidate, String cardNo, String bankCode, String province, String city, String branch) { + public Map createEntAccount(BusinessHnapayCreateParam param) { String result = ""; R001TransForm transForm = new R001TransForm(); transForm.setTranCode("R001"); transForm.initCommonParams("R001"); transForm.setSubmitUrl(InitForm.R001_SUBMIT_URL); - transForm.setMerUserId("ent_" + entId); - transForm.setUserName(userName); - transForm.setMobile(mobile); + transForm.setMerUserId("ent_" + param.getBusinessId()); + transForm.setUserName(param.getName()); + transForm.setMobile(param.getContactPhone()); transForm.setCertType("2"); - transForm.setCertNo(certNo); - transForm.setCertValidate(certValidate); - transForm.setCardNo(cardNo); - transForm.setBankCode(bankCode); - transForm.setProvince(province); - transForm.setCity(city); - transForm.setBranch(branch); - transForm.setNotifyServerUrl(HnaPayConfig.EXAMINE_NOTICE_URL); + transForm.setCertNo(param.getEnterpriseCode()); + transForm.setCertValidate(param.getValidDate()); + transForm.setCardNo(param.getBankCard()); + transForm.setBankCode(param.getBankCode()); + transForm.setProvince(param.getBankProvince()); + transForm.setCity(param.getBankCity()); + transForm.setBranch(param.getBankBranch()); + String notifyServerUrl = HnaPayConfig.CREATE_NOTICE_URL + "/" + param.getBusinessId(); + transForm.setNotifyServerUrl(notifyServerUrl); try { result = HttpUtils.commonReq(transForm, false); } catch (Exception e) { diff --git a/cereshop-admin/src/main/java/com/shop/cereshop/admin/service/business/CerePlatformBusinessService.java b/cereshop-admin/src/main/java/com/shop/cereshop/admin/service/business/CerePlatformBusinessService.java index 90c5c5f..0c78996 100644 --- a/cereshop-admin/src/main/java/com/shop/cereshop/admin/service/business/CerePlatformBusinessService.java +++ b/cereshop-admin/src/main/java/com/shop/cereshop/admin/service/business/CerePlatformBusinessService.java @@ -57,4 +57,8 @@ public interface CerePlatformBusinessService { List getByIdList(List businessIdList); void updateDomain(BusinessDomainSet domainSet); + + void updateBusinessHnaPay(Long businessId, String hnaPayId, String bindCardAgrNo); + + void updateBusinessHnapayState(Long businessId, Integer hnapayStatus); } diff --git a/cereshop-admin/src/main/java/com/shop/cereshop/admin/service/business/impl/CerePlatformBusinessServiceImpl.java b/cereshop-admin/src/main/java/com/shop/cereshop/admin/service/business/impl/CerePlatformBusinessServiceImpl.java index ee0ce2d..36964d7 100644 --- a/cereshop-admin/src/main/java/com/shop/cereshop/admin/service/business/impl/CerePlatformBusinessServiceImpl.java +++ b/cereshop-admin/src/main/java/com/shop/cereshop/admin/service/business/impl/CerePlatformBusinessServiceImpl.java @@ -280,4 +280,14 @@ public class CerePlatformBusinessServiceImpl implements CerePlatformBusinessServ public void updateDomain(BusinessDomainSet domainSet) { cerePlatformBusinessDAO.updateDomain(domainSet); } + + @Override + public void updateBusinessHnaPay(Long businessId, String hnaPayId, String bindCardAgrNo) { + cerePlatformBusinessDAO.updateBusinessHnaPay(businessId,hnaPayId,bindCardAgrNo); + } + + @Override + public void updateBusinessHnapayState(Long businessId, Integer hnapayStatus) { + cerePlatformBusinessDAO.updateBusinessHnapayState(businessId,hnapayStatus); + } } diff --git a/cereshop-admin/src/main/java/com/shop/cereshop/admin/service/bwxpay/CereBusinessWxpayService.java b/cereshop-admin/src/main/java/com/shop/cereshop/admin/service/bwxpay/CereBusinessWxpayService.java new file mode 100644 index 0000000..6327673 --- /dev/null +++ b/cereshop-admin/src/main/java/com/shop/cereshop/admin/service/bwxpay/CereBusinessWxpayService.java @@ -0,0 +1,20 @@ +package com.shop.cereshop.admin.service.bwxpay; + +import com.shop.cereshop.commons.domain.buyer.CereBuyerBank; +import com.shop.cereshop.commons.domain.bwxpay.CereBusinessWxpay; +import com.shop.cereshop.commons.exception.CoBusinessException; + +/** + * 描述: + * + * @author stevenhu + * @version 2025/02/20 14:19 + */ +public interface CereBusinessWxpayService { + + void save(CereBusinessWxpay record) throws CoBusinessException; + + void update(CereBusinessWxpay businessWxpay) throws CoBusinessException; + + CereBusinessWxpay getByBusinessId(Long businessId) throws CoBusinessException; +} diff --git a/cereshop-admin/src/main/java/com/shop/cereshop/admin/service/bwxpay/impl/CereBusinessWxpayServiceImpl.java b/cereshop-admin/src/main/java/com/shop/cereshop/admin/service/bwxpay/impl/CereBusinessWxpayServiceImpl.java new file mode 100644 index 0000000..e82aaa7 --- /dev/null +++ b/cereshop-admin/src/main/java/com/shop/cereshop/admin/service/bwxpay/impl/CereBusinessWxpayServiceImpl.java @@ -0,0 +1,40 @@ +package com.shop.cereshop.admin.service.bwxpay.impl; + +import com.shop.cereshop.admin.dao.bwxpay.CereBusinessWxpayDao; +import com.shop.cereshop.admin.service.bwxpay.CereBusinessWxpayService; +import com.shop.cereshop.commons.domain.bwxpay.CereBusinessWxpay; +import com.shop.cereshop.commons.exception.CoBusinessException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: + * + * @author stevenhu + * @version 2025/02/20 14:21 + */ +@Service +public class CereBusinessWxpayServiceImpl implements CereBusinessWxpayService { + + @Autowired + private CereBusinessWxpayDao cereBusinessWxpayDao; + + @Override + @Transactional(isolation= Isolation.DEFAULT,propagation= Propagation.REQUIRED,rollbackFor = {CoBusinessException.class, Exception.class}) + public void save(CereBusinessWxpay record) throws CoBusinessException { + cereBusinessWxpayDao.insert(record); + } + + @Override + public void update(CereBusinessWxpay businessWxpay) throws CoBusinessException { + cereBusinessWxpayDao.updateById(businessWxpay); + } + + @Override + public CereBusinessWxpay getByBusinessId(Long businessId) throws CoBusinessException { + return cereBusinessWxpayDao.getByBusinessId(businessId); + } +} diff --git a/cereshop-admin/src/main/resources/mybatis/mapper/business/CerePlatformBusinessDAO.xml b/cereshop-admin/src/main/resources/mybatis/mapper/business/CerePlatformBusinessDAO.xml index 81a2397..e246104 100644 --- a/cereshop-admin/src/main/resources/mybatis/mapper/business/CerePlatformBusinessDAO.xml +++ b/cereshop-admin/src/main/resources/mybatis/mapper/business/CerePlatformBusinessDAO.xml @@ -318,7 +318,7 @@ SELECT a.business_id, a.business_code, a.business_name, a.business_brief, a.business_phone, a.charge_person_name, a.charge_person_phone, a.business_adress, a.effective_date, a.effective_year, a.contract_state, a.authentication_state, a.check_state, a.`state`, a.authen_type, a.create_time, a.update_time, - a.audit_live, a.audit_live_product,a.pc_domain,a.mobile_domain, + a.audit_live, a.audit_live_product,a.pc_domain,a.mobile_domain,a.hna_pay_id, a.bind_card_agr_no,a.hnapay_status, b.business_user_id, c.password businessPassword FROM cere_platform_business a INNER JOIN cere_business_user b ON a.business_id = b.business_id AND b.is_main_user = 1 @@ -497,4 +497,13 @@ update cere_platform_business set pc_domain=#{pcDomain}, mobile_domain=#{mobileDomain} where business_id = #{businessId} + + + update cere_platform_business set hna_pay_id=#{hnaPayId}, bind_card_agr_no=#{bindCardAgrNo} where business_id = #{businessId} + + + + update cere_platform_business set hnapay_status=#{hnapayStatus} where business_id = #{businessId} + + diff --git a/cereshop-admin/src/main/resources/mybatis/mapper/bwxpay/CereBusinessWxpayDAO.xml b/cereshop-admin/src/main/resources/mybatis/mapper/bwxpay/CereBusinessWxpayDAO.xml new file mode 100644 index 0000000..5cf0a7e --- /dev/null +++ b/cereshop-admin/src/main/resources/mybatis/mapper/bwxpay/CereBusinessWxpayDAO.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + diff --git a/cereshop-app/src/main/java/com/shop/cereshop/app/dao/bwxpay/CereBusinessWxpayDao.java b/cereshop-app/src/main/java/com/shop/cereshop/app/dao/bwxpay/CereBusinessWxpayDao.java new file mode 100644 index 0000000..a6370a7 --- /dev/null +++ b/cereshop-app/src/main/java/com/shop/cereshop/app/dao/bwxpay/CereBusinessWxpayDao.java @@ -0,0 +1,21 @@ +package com.shop.cereshop.app.dao.bwxpay; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.shop.cereshop.commons.domain.bwxpay.CereBusinessWxpay; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + + +/** + * 描述: + * + * @author stevenhu + * @version 2025/02/20 11:49 + */ +@Mapper +public interface CereBusinessWxpayDao extends BaseMapper { + int insertSelective(CereBusinessWxpay record); + + CereBusinessWxpay getByBusinessId(@Param("businessId") Long businessId); + +} diff --git a/cereshop-app/src/main/java/com/shop/cereshop/app/service/bwxpay/CereBusinessWxpayService.java b/cereshop-app/src/main/java/com/shop/cereshop/app/service/bwxpay/CereBusinessWxpayService.java new file mode 100644 index 0000000..601de87 --- /dev/null +++ b/cereshop-app/src/main/java/com/shop/cereshop/app/service/bwxpay/CereBusinessWxpayService.java @@ -0,0 +1,21 @@ +package com.shop.cereshop.app.service.bwxpay; + +import com.shop.cereshop.commons.domain.buyer.CereBuyerBank; +import com.shop.cereshop.commons.domain.buyer.CereBuyerUser; +import com.shop.cereshop.commons.domain.bwxpay.CereBusinessWxpay; +import com.shop.cereshop.commons.exception.CoBusinessException; + +/** + * 描述: + * + * @author stevenhu + * @version 2025/02/20 14:19 + */ +public interface CereBusinessWxpayService { + + void save(CereBusinessWxpay record) throws CoBusinessException; + + void update(CereBusinessWxpay businessWxpay) throws CoBusinessException; + + CereBuyerBank getByBusinessId(Long businessId) throws CoBusinessException; +} diff --git a/cereshop-app/src/main/java/com/shop/cereshop/app/service/bwxpay/impl/CereBusinessWxpayServiceImpl.java b/cereshop-app/src/main/java/com/shop/cereshop/app/service/bwxpay/impl/CereBusinessWxpayServiceImpl.java new file mode 100644 index 0000000..7b11871 --- /dev/null +++ b/cereshop-app/src/main/java/com/shop/cereshop/app/service/bwxpay/impl/CereBusinessWxpayServiceImpl.java @@ -0,0 +1,42 @@ +package com.shop.cereshop.app.service.bwxpay.impl; + +import com.shop.cereshop.app.dao.bwxpay.CereBusinessWxpayDao; +import com.shop.cereshop.app.service.bwxpay.CereBusinessWxpayService; +import com.shop.cereshop.commons.domain.buyer.CereBuyerBank; +import com.shop.cereshop.commons.domain.bwxpay.CereBusinessWxpay; +import com.shop.cereshop.commons.exception.CoBusinessException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +/** + * 描述: + * + * @author stevenhu + * @version 2025/02/20 14:21 + */ +@Service +public class CereBusinessWxpayServiceImpl implements CereBusinessWxpayService { + + @Autowired + private CereBusinessWxpayDao cereBusinessWxpayDao; + + @Override + @Transactional(isolation= Isolation.DEFAULT,propagation= Propagation.REQUIRED,rollbackFor = {CoBusinessException.class, Exception.class}) + public void save(CereBusinessWxpay record) throws CoBusinessException { + cereBusinessWxpayDao.insert(record); + } + + @Override + public void update(CereBusinessWxpay businessWxpay) throws CoBusinessException { + cereBusinessWxpayDao.updateById(businessWxpay); + } + + @Override + public CereBuyerBank getByBusinessId(Long businessId) throws CoBusinessException { + cereBusinessWxpayDao.getByBusinessId(businessId); + return null; + } +} diff --git a/cereshop-business/src/main/java/com/shop/cereshop/business/controller/HnaPayController.java b/cereshop-business/src/main/java/com/shop/cereshop/business/controller/HnaPayController.java index d82e662..aeecaad 100644 --- a/cereshop-business/src/main/java/com/shop/cereshop/business/controller/HnaPayController.java +++ b/cereshop-business/src/main/java/com/shop/cereshop/business/controller/HnaPayController.java @@ -5,16 +5,14 @@ import com.google.gson.Gson; import com.shop.cereshop.business.pay.hnapay.HnaPayService; import com.shop.cereshop.business.pay.xs.domain.XsCallBackRequestVo; import com.shop.cereshop.business.service.after.CereOrderAfterService; +import com.shop.cereshop.business.service.business.CerePlatformBusinessService; import com.shop.cereshop.commons.constant.IntegerEnum; import com.shop.cereshop.commons.utils.SpringUtil; import com.shop.cereshop.commons.utils.StringUtils; import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; /** * 描述:新生支付新账通回调处理 @@ -31,6 +29,8 @@ public class HnaPayController { @Autowired private HnaPayService hnaPayService; + @Autowired + private CerePlatformBusinessService businessService; /** * 退款通知回调 @@ -64,14 +64,56 @@ public class HnaPayController { /** + * 企业开户审核结果通知 + * @param businessId + * @param msg + * @return + * @throws Exception + */ + @PostMapping("/hnaPay/create/notify/{businessId}") + public String onCreateNotify(@PathVariable String businessId, @RequestParam(name = "msg") String msg) { + log.info("onCreateNotify:" + msg); + return "200"; + } + + /** * 企业上送资料审核结果通知 + * @param businessId * @param msg * @return * @throws Exception */ - @PostMapping("/hnaPay/examine/notify") - public String onExamineNotify(@RequestParam(name = "msg") String msg) { + @PostMapping("/hnaPay/examine/notify/{businessId}") + public String onExamineNotify(@PathVariable String businessId, @RequestParam(name = "msg") String msg) { + log.info("onExamineNotify:" + msg); + try { + XsCallBackRequestVo xsCallBackRequestVo = hnaPayService.parseCallBackRequestVo(msg); + log.info(new Gson().toJson(xsCallBackRequestVo)); + String status = xsCallBackRequestVo.getContent().getString("status"); + //2成功 3失败 + if(StringUtils.equals(status, "1")){ + JSONObject content = xsCallBackRequestVo.getContent(); + String auditResult = content.getString("auditResult"); + if (auditResult.equals("1")){ + //审核通过 + businessService.updateBusinessHnapayState(Long.valueOf(businessId), 2); + }else { + //不通过原因 + String rejectReason = content.getString("rejectReason"); + //不通过证件类型列表, + //列出审批不通过证件类型,多个以英文逗号“,”分隔。如 1,2,4,7 + //1:身份证正面; + //2:身份证反面; + //4:营业执照; + //7:开户许可证; + String certTypeList = content.getString("certTypeList"); + } + } + } catch (Exception e) { + e.printStackTrace(); + } return "200"; } + } diff --git a/cereshop-business/src/main/java/com/shop/cereshop/business/dao/business/CerePlatformBusinessDAO.java b/cereshop-business/src/main/java/com/shop/cereshop/business/dao/business/CerePlatformBusinessDAO.java index 4679b4e..b49dba6 100644 --- a/cereshop-business/src/main/java/com/shop/cereshop/business/dao/business/CerePlatformBusinessDAO.java +++ b/cereshop-business/src/main/java/com/shop/cereshop/business/dao/business/CerePlatformBusinessDAO.java @@ -51,4 +51,6 @@ public interface CerePlatformBusinessDAO extends BaseMapper selectAll(); List getByIdList(@Param("businessIdList") List businessIdList); + + void updateBusinessHnapayState(@Param("businessId") Long businessId, @Param("hnapayStatus") Integer hnapayStatus); } diff --git a/cereshop-business/src/main/java/com/shop/cereshop/business/service/business/CerePlatformBusinessService.java b/cereshop-business/src/main/java/com/shop/cereshop/business/service/business/CerePlatformBusinessService.java index 85977ba..10c7076 100644 --- a/cereshop-business/src/main/java/com/shop/cereshop/business/service/business/CerePlatformBusinessService.java +++ b/cereshop-business/src/main/java/com/shop/cereshop/business/service/business/CerePlatformBusinessService.java @@ -51,4 +51,6 @@ public interface CerePlatformBusinessService { List selectHotProductForExport(IndexParam param); List getByIdList(List businessIdList); + + void updateBusinessHnapayState(Long businessId, Integer hnapayStatus); } diff --git a/cereshop-business/src/main/java/com/shop/cereshop/business/service/business/impl/CerePlatformBusinessServiceImpl.java b/cereshop-business/src/main/java/com/shop/cereshop/business/service/business/impl/CerePlatformBusinessServiceImpl.java index 83303c8..70c2ae9 100644 --- a/cereshop-business/src/main/java/com/shop/cereshop/business/service/business/impl/CerePlatformBusinessServiceImpl.java +++ b/cereshop-business/src/main/java/com/shop/cereshop/business/service/business/impl/CerePlatformBusinessServiceImpl.java @@ -417,4 +417,8 @@ public class CerePlatformBusinessServiceImpl implements CerePlatformBusinessServ return cerePlatformBusinessDAO.getByIdList(businessIdList); } + @Override + public void updateBusinessHnapayState(Long businessId, Integer hnapayStatus) { + cerePlatformBusinessDAO.updateBusinessHnapayState(businessId,hnapayStatus); + } } diff --git a/cereshop-business/src/main/resources/mybatis/mapper/business/CerePlatformBusinessDAO.xml b/cereshop-business/src/main/resources/mybatis/mapper/business/CerePlatformBusinessDAO.xml index ae96cb6..e6a4696 100644 --- a/cereshop-business/src/main/resources/mybatis/mapper/business/CerePlatformBusinessDAO.xml +++ b/cereshop-business/src/main/resources/mybatis/mapper/business/CerePlatformBusinessDAO.xml @@ -392,4 +392,8 @@ ) + + + update cere_platform_business set hnapay_status=#{hnapayStatus} where business_id = #{businessId} + diff --git a/cereshop-commons/src/main/java/com/shop/cereshop/commons/config/HnaPayConfig.java b/cereshop-commons/src/main/java/com/shop/cereshop/commons/config/HnaPayConfig.java index 245fe31..dbb050c 100644 --- a/cereshop-commons/src/main/java/com/shop/cereshop/commons/config/HnaPayConfig.java +++ b/cereshop-commons/src/main/java/com/shop/cereshop/commons/config/HnaPayConfig.java @@ -59,7 +59,10 @@ public class HnaPayConfig { // 退款回调地址 public static String REFUND_NOTICE_URL = "http://36.138.125.206/ceres-business-api/extend/hnaPay/refund/notify"; - //企业上送资料审核结果通知 + //企业开户审核结果通知 + public static String CREATE_NOTICE_URL = "http://36.138.125.206/ceres-business-api/extend/hnaPay/create/notify"; + + //企业上送资料审核结果通知(该异步通知接收地址在“商户后台-安全中心”设置) public static String EXAMINE_NOTICE_URL = "http://36.138.125.206/ceres-business-api/extend/hnaPay/examine/notify"; public static String GETMONEY_NOTICE_URL = "http://36.138.125.206/ceres-business-api/extend/hnaPay/getmoney/notify"; diff --git a/cereshop-commons/src/main/java/com/shop/cereshop/commons/domain/business/CerePlatformBusiness.java b/cereshop-commons/src/main/java/com/shop/cereshop/commons/domain/business/CerePlatformBusiness.java index f048621..8075081 100644 --- a/cereshop-commons/src/main/java/com/shop/cereshop/commons/domain/business/CerePlatformBusiness.java +++ b/cereshop-commons/src/main/java/com/shop/cereshop/commons/domain/business/CerePlatformBusiness.java @@ -203,6 +203,23 @@ public class CerePlatformBusiness implements Serializable { @ApiModelProperty(value = "移动端商城域名") private String mobileDomain; + /** + * 新账通支付商户Id/分账方id + */ + @ApiModelProperty(value = "新账通支付商户Id/分账方id") + private String hnaPayId; + + /** + * 新账通支付绑卡协议号 + */ + @ApiModelProperty(value = "新账通支付绑卡协议号") + private String bindCardAgrNo; + + /** + * 新账通开户审核状态:0-待上传 1-审核中 2-审核通过 3-审核拒绝 + */ + @ApiModelProperty(value = "新账通开户审核状态") + private String hnapayStatus; private static final long serialVersionUID = 1L; diff --git a/cereshop-commons/src/main/java/com/shop/cereshop/commons/domain/bwxpay/CereBusinessWxpay.java b/cereshop-commons/src/main/java/com/shop/cereshop/commons/domain/bwxpay/CereBusinessWxpay.java new file mode 100644 index 0000000..ddf5b10 --- /dev/null +++ b/cereshop-commons/src/main/java/com/shop/cereshop/commons/domain/bwxpay/CereBusinessWxpay.java @@ -0,0 +1,55 @@ +package com.shop.cereshop.commons.domain.bwxpay; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 描述: + * + * @author stevenhu + * @version 2025/02/20 11:12 + */ +@Data +public class CereBusinessWxpay implements Serializable { + /** + * 主键Id + */ + private Long id; + + /** + * 商家id + */ + private Long businessId; + + /** + * 支付小程序appid + */ + private String appId; + + /** + * 支付APP端的appid + */ + private String AppAppId; + + /** + * 商户号 + */ + private String mchId; + + /** + * 证书路径 + */ + private String certUrl; + + /** + * 商户秘钥 + */ + private String mchKey; + + /** + * 私钥 + */ + private String secret; + +} diff --git a/doc/3.0/update.sql b/doc/3.0/update.sql index 1dceab2..eed1ac0 100644 --- a/doc/3.0/update.sql +++ b/doc/3.0/update.sql @@ -303,3 +303,20 @@ ALTER TABLE `cere_platform_membership` -- 会员等级表增加商家表关联Id ALTER TABLE `cere_platform_member_level` ADD COLUMN `business_id` bigint(20) DEFAULT 0 COMMENT '商家Id'; + +CREATE TABLE `cere_business_wxpay` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', + `business_id` bigint(20) NULL DEFAULT 0 COMMENT '商家Id', + `app_id` varchar(100) NULL COMMENT '支付小程序appid', + `app_app_id` varchar(100) NULL COMMENT '支付APP端的appid', + `mch_id` varchar(100) NULL COMMENT '商户号', + `cert_url` varchar(256) NULL COMMENT '证书路径', + `mch_key` text NULL COMMENT '商户秘钥', + `secret` text NULL COMMENT '私钥', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '商家微信支付配置信息' ROW_FORMAT = DYNAMIC; + +ALTER TABLE cere_platform_business ADD hna_pay_id varchar(256) DEFAULT '' COMMENT '新账通支付商户Id/分账方id'; +ALTER TABLE cere_platform_business ADD bind_card_agr_no varchar(30) DEFAULT '' COMMENT '新账通支付绑卡协议号'; +ALTER TABLE cere_platform_business ADD COLUMN hnapay_status tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '0-待上传 1-审核中 2-审核通过 3-审核拒绝' AFTER bind_card_agr_no; +