From 8c4f55ab20fee19114938bb904ed8c5b4526d64c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E9=9D=9E=E5=87=A1?= Date: Fri, 17 Apr 2026 08:53:50 +0000 Subject: [PATCH] Merge #102 into master from cc_20260414_invoice MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 开票管理 * cc_20260414_invoice: (6 commits squashed) - fix:门店开票信息 - fix:新增企业开票校验接口;闭店列表新增筛选条件 - fix - Merge branch 'master' into cc_20260414_invoice - Merge remote-tracking branch 'origin/cc_20260414_invoice' into cc_20260414_invoice # Conflicts: # coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java - Merge branch 'master' into cc_20260414_invoice # Conflicts: # coolstore-partner-model/src/main/java/com/cool/store/request/StoreMasterDTO.java Signed-off-by: 王非凡 Merged-by: 正新 CR-link: https://codeup.aliyun.com/692ea314dec569489f6f167c/hangzhou/java/custom_zxjp/change/102 --- .../com/cool/store/enums/ErrorCodeEnum.java | 1 + .../mapper/BuildInformationMapper.xml | 5 +++- .../resources/mapper/CloseStoreInfoMapper.xml | 5 +++- .../cool/store/entity/BuildInformationDO.java | 19 ++++++++++++ .../request/BuildInformationRequest.java | 12 ++++++++ .../cool/store/request/StoreMasterDTO.java | 9 ++++++ .../close/store/CloseStoreQueryRequest.java | 3 ++ .../response/BuildInformationResponse.java | 9 ++++++ .../service/BuildInformationService.java | 5 ++++ .../impl/BuildInformationServiceImpl.java | 30 +++++++++++++++++++ .../service/impl/SyncMainSysServerImpl.java | 3 ++ .../wallet/impl/WalletServiceImpl.java | 11 ++++++- .../webb/PCBuildInformationController.java | 6 ++++ .../webc/MiniBuildInformationController.java | 5 ++++ 14 files changed, 120 insertions(+), 3 deletions(-) diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java index 9f0155cab..ebfcfe168 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java @@ -475,6 +475,7 @@ public enum ErrorCodeEnum { WALLET_PAY_CANNOT_CANCEL(1830020, "该交易无法取消", null), TOTAL_FEES_NEED_EQUAL(1830021, "分账总金额需与合计缴费金额一致", null), NOT_EXIST_WANG_SHANG_ACCOUNT(1830022, "当前门店未开通网商钱包账户,请先开通!", null), + SIGNER_NOT_EQUAL_LEGAL_PERSON(1840022, "法人与签约人不一致", null), IP_LIMIT(1840000, "IP访问次数超限", null), diff --git a/coolstore-partner-dao/src/main/resources/mapper/BuildInformationMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/BuildInformationMapper.xml index 91a158fb1..ba4ee369c 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/BuildInformationMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/BuildInformationMapper.xml @@ -41,6 +41,9 @@ + + + @@ -52,7 +55,7 @@ settler_id_card_front,settler_id_card_reverse,settler_in_hand_front_picture,settler_in_hand_back_picture,settler_id_card_no, settler_bank_number,settler_bank_mobile,settler_bank_name, create_time,update_time,create_user, - update_user,c_shop_name,settler_bank_back_photo_url,settler_is_same_partner,juridical_is_same_partner,juridical_name + update_user,c_shop_name,settler_bank_back_photo_url,settler_is_same_partner,juridical_is_same_partner,juridical_name,invoice_type,invoice_title,invoice_tin diff --git a/coolstore-partner-dao/src/main/resources/mapper/CloseStoreInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/CloseStoreInfoMapper.xml index 0b79a0263..747f7b549 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/CloseStoreInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/CloseStoreInfoMapper.xml @@ -65,9 +65,12 @@ AND - c.region_path LIKE CONCAT('%', #{regionId}, '%') + c.region_path LIKE CONCAT('%/', #{regionId}, '/%') + + AND c.region_path LIKE CONCAT('%/', #{request.regionId}, '/%') + ORDER BY b.create_time DESC diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/BuildInformationDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/BuildInformationDO.java index 45fc4eb20..0af6977d0 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/BuildInformationDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/BuildInformationDO.java @@ -214,4 +214,23 @@ public class BuildInformationDO { @Column(name = "juridical_is_same_partner") private Boolean juridicalIsSamePartner; + + // ===== 开票信息 ===== + /** + * 抬头类型 + */ + @Column(name = "invoice_type") + private Integer invoiceType; + + /** + * 发票抬头 + */ + @Column(name = "invoice_title") + private String invoiceTitle; + + /** + * 税号 + */ + @Column(name = "invoice_tin") + private String invoiceTin; } \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/BuildInformationRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/BuildInformationRequest.java index 2a6ed014d..71a5f7750 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/BuildInformationRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/BuildInformationRequest.java @@ -178,6 +178,15 @@ public class BuildInformationRequest { @ApiModelProperty(value = "详细地址" ) private String addresseeAddress; + @ApiModelProperty("抬头类型") + private Integer invoiceType; + + @ApiModelProperty("发票抬头") + private String invoiceTitle; + + @ApiModelProperty("税号") + private String invoiceTin; + public BuildInformationDO toDO(){ BuildInformationDO buildInformationDO = new BuildInformationDO(); buildInformationDO.setShopId(this.shopId); @@ -210,6 +219,9 @@ public class BuildInformationRequest { buildInformationDO.setCShopName(this.miniProgramsShopName); buildInformationDO.setSettlerIsSamePartner(this.settlerIsSamePartner); buildInformationDO.setJuridicalIsSamePartner(this.juridicalIsSamePartner); + buildInformationDO.setInvoiceType(this.invoiceType); + buildInformationDO.setInvoiceTitle(this.invoiceTitle); + buildInformationDO.setInvoiceTin(this.invoiceTin); return buildInformationDO; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/StoreMasterDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/request/StoreMasterDTO.java index 31688a725..1812986ef 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/StoreMasterDTO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/StoreMasterDTO.java @@ -125,6 +125,15 @@ public class StoreMasterDTO { */ private String storeTypeName; + @ApiModelProperty("抬头类型") + private Integer invoiceType; + + @ApiModelProperty("发票抬头") + private String invoiceTitle; + + @ApiModelProperty("税号") + private String invoiceTin; + @Data public static class SignerInfo { @ApiModelProperty("签约人1姓名") diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/close/store/CloseStoreQueryRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/close/store/CloseStoreQueryRequest.java index 0dd5360d9..dfcba765e 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/close/store/CloseStoreQueryRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/close/store/CloseStoreQueryRequest.java @@ -48,4 +48,7 @@ public class CloseStoreQueryRequest extends PageBasicInfo { @ApiModelProperty(value = "所属品牌列表", hidden = true) private List joinBrands; + + @ApiModelProperty("区域id") + private Long regionId; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/response/BuildInformationResponse.java b/coolstore-partner-model/src/main/java/com/cool/store/response/BuildInformationResponse.java index 968d6d334..787ebaa28 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/response/BuildInformationResponse.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/response/BuildInformationResponse.java @@ -212,4 +212,13 @@ public class BuildInformationResponse { @ApiModelProperty("订货备注") private String orderRemark; + + @ApiModelProperty("抬头类型") + private Integer invoiceType; + + @ApiModelProperty("发票抬头") + private String invoiceTitle; + + @ApiModelProperty("税号") + private String invoiceTin; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/BuildInformationService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/BuildInformationService.java index 8634fb3a7..832184687 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/BuildInformationService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/BuildInformationService.java @@ -28,4 +28,9 @@ public interface BuildInformationService { * @param user 用户 */ Boolean operationsConsultantAudit(AuditApproveRequest request, LoginUserInfo user); + + /** + * 开票信息企业校验 + */ + Boolean companyInvoiceVerify(Long shopId); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/BuildInformationServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/BuildInformationServiceImpl.java index f5ef67124..4abc4b2a1 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/BuildInformationServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/BuildInformationServiceImpl.java @@ -12,10 +12,12 @@ import com.cool.store.enums.*; import com.cool.store.enums.point.ShopSubStageEnum; import com.cool.store.enums.point.ShopSubStageStatusEnum; import com.cool.store.exception.ServiceException; +import com.cool.store.mapper.ApplyLicenseMapper; import com.cool.store.mapper.WarehouseInfoMapper; import com.cool.store.request.AuditApproveRequest; import com.cool.store.request.BuildInformationRequest; import com.cool.store.request.BuildSettlerRequest; +import com.cool.store.response.AddSignFranchiseResponse; import com.cool.store.response.BuildInformationResponse; import com.cool.store.service.*; import com.cool.store.utils.RedisConstantUtil; @@ -88,6 +90,10 @@ public class BuildInformationServiceImpl implements BuildInformationService { private OperationLogDAO operationLogDAO; @Autowired private RegionDao regionDao; + @Resource + private SignFranchiseService signFranchiseService; + @Resource + private ApplyLicenseMapper applyLicenseMapper; @Override @@ -350,6 +356,9 @@ public class BuildInformationServiceImpl implements BuildInformationService { response.setSettlerBankBackPhotoUrl(informationDO.getSettlerBankBackPhotoUrl()); response.setSettlerIsSamePartner(informationDO.getSettlerIsSamePartner()); response.setJuridicalIsSamePartner(informationDO.getJuridicalIsSamePartner()); + response.setInvoiceType(informationDO.getInvoiceType()); + response.setInvoiceTitle(informationDO.getInvoiceTitle()); + response.setInvoiceTin(informationDO.getInvoiceTin()); } private static @NotNull OrderSysInfoDO getOrderSysInfoDO(BuildInformationRequest request) { @@ -465,6 +474,27 @@ public class BuildInformationServiceImpl implements BuildInformationService { return true; } + @Override + public Boolean companyInvoiceVerify(Long shopId) { + ShopInfoDO shopInfo = shopInfoDAO.getShopInfo(shopId); + if (Objects.isNull(shopInfo)) { + throw new ServiceException(ErrorCodeEnum.SHOP_NOT_EXIST); + } + ShopStageInfoDO stageInfo = shopStageInfoDAO.getShopSubStageInfo(shopId, ShopSubStageEnum.SHOP_STAGE_3); + if (!stageInfo.getShopSubStageStatus().equals(SHOP_SUB_STAGE_STATUS_33.getShopSubStageStatus())) { + throw new ServiceException(ErrorCodeEnum.LICENSE_LEGAL_STAGE_FAIL); + } + LicenseTransactDO license = applyLicenseMapper.selectByShopId(shopId); + if (Objects.isNull(license) || StringUtils.isBlank(license.getLicenseLegalPerson())) { + throw new ServiceException(ErrorCodeEnum.LICENSE_LEGAL_STAGE_FAIL); + } + AddSignFranchiseResponse signFranchise = signFranchiseService.getSignFranchise(shopId); + if (!signFranchise.getPartnershipSignatoryFirst().equals(license.getLicenseLegalPerson()) + && !signFranchise.getPartnershipSignatorySecond().equals(license.getLicenseLegalPerson())) { + throw new ServiceException(ErrorCodeEnum.SIGNER_NOT_EQUAL_LEGAL_PERSON); + } + return true; + } } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SyncMainSysServerImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SyncMainSysServerImpl.java index e2841b886..8e22da07d 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SyncMainSysServerImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SyncMainSysServerImpl.java @@ -150,6 +150,9 @@ public class SyncMainSysServerImpl implements SyncMainSysServer { settlerInfo.setSettlerBankPhotoUrl(buildInformationDO.getSettlerBankPhotoUrl()); settlerInfo.setSettlerBankBackPhotoUrl(buildInformationDO.getSettlerBankBackPhotoUrl()); storeMasterDTO.setSettlerInfo(settlerInfo); + storeMasterDTO.setInvoiceType(buildInformationDO.getInvoiceType()); + storeMasterDTO.setInvoiceTitle(buildInformationDO.getInvoiceTitle()); + storeMasterDTO.setInvoiceTin(buildInformationDO.getInvoiceTin()); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/wallet/impl/WalletServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/wallet/impl/WalletServiceImpl.java index c0ab009b7..e5976080d 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/wallet/impl/WalletServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/wallet/impl/WalletServiceImpl.java @@ -369,12 +369,21 @@ public class WalletServiceImpl implements WalletService { @Override public AccountDataVO getAccountList(AccountQueryRequest request) { String storeId = getStoreId(request); + // 处理shopInfo和store表storeId不一致的问题,使用开店shop_info表的storeId + if (StringUtils.isNotBlank(request.getStoreId())) { + StoreDO storeDO = storeDao.getByStoreId(request.getStoreId()); + ShopInfoDO shopInfo = shopInfoDAO.getShopInfoByShopCode(storeDO.getStoreNum()); + if (Objects.nonNull(shopInfo) && !storeDO.getStoreId().equals(shopInfo.getStoreId())) { + storeId = shopInfo.getStoreId(); + } + } List accountInfo = walletApiService.getAccountInfo(new OutStoreIdRequest(storeId)); + String finalStoreId = storeId; List accountList = accountInfo.stream() .filter(v -> Objects.isNull(request.getWalletType()) || request.getWalletType().equals(v.getWalletType())) .map(v -> { AccountInfoVO vo = BeanUtil.toBean(v, AccountInfoVO.class); - String key = MessageFormat.format(RedisConstant.WALLET_OPEN_FAIL, storeId, String.valueOf(v.getWalletType())); + String key = MessageFormat.format(RedisConstant.WALLET_OPEN_FAIL, finalStoreId, String.valueOf(v.getWalletType())); vo.setFailReason(redisUtilPool.getString(key)); return vo; }).collect(Collectors.toList()); diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCBuildInformationController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCBuildInformationController.java index 2a4d8b80a..209705ec7 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCBuildInformationController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCBuildInformationController.java @@ -52,4 +52,10 @@ public class PCBuildInformationController { LoginUserInfo user = CurrentUserHolder.getUser(); return ResponseResult.success(buildInformationService.operationsConsultantAudit(request, user)); } + + @ApiOperation("开票信息选择企业时校验") + @GetMapping("/companyInvoiceVerify") + public ResponseResult companyInvoiceVerify(@RequestParam(value = "shopId") Long shopId) { + return ResponseResult.success(buildInformationService.companyInvoiceVerify(shopId)); + } } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniBuildInformationController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniBuildInformationController.java index a80f9e880..1c244bf42 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniBuildInformationController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniBuildInformationController.java @@ -53,4 +53,9 @@ public class MiniBuildInformationController { return ResponseResult.success(buildInformationService.updateBuildSettler(request,user.getPartnerId())); } + @ApiOperation("开票信息选择企业时校验") + @GetMapping("/companyInvoiceVerify") + public ResponseResult companyInvoiceVerify(@RequestParam(value = "shopId") Long shopId) { + return ResponseResult.success(buildInformationService.companyInvoiceVerify(shopId)); + } }