From c53863f0eed9371140ae6827612a9f98d9f31044 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E7=AB=B9=E7=BA=A2?= Date: Wed, 9 Oct 2024 17:02:44 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E8=AF=81=E7=85=A7=E6=94=B9=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../license/BusinessLicenseRequest.java | 79 +++++++++++++++++++ .../request/license/FoodLicenseRequest.java | 70 ++++++++++++++++ .../store/service/ApplyLicenseService.java | 22 ++++++ .../service/impl/ApplyLicenseServiceImpl.java | 76 +++++++++++++----- .../webc/ApplyLicenseController.java | 20 +++++ 5 files changed, 249 insertions(+), 18 deletions(-) create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/request/license/BusinessLicenseRequest.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/request/license/FoodLicenseRequest.java diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/license/BusinessLicenseRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/license/BusinessLicenseRequest.java new file mode 100644 index 000000000..bf6883a5f --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/license/BusinessLicenseRequest.java @@ -0,0 +1,79 @@ +package com.cool.store.request.license; + +import com.cool.store.entity.LicenseTransactDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.Objects; + +/** + * @Author suzhuhong + * @Date 2024/10/9 16:01 + * @Version 1.0 + */ +@Data +public class BusinessLicenseRequest { + + @ApiModelProperty("主键id") + private Long id; + + private Long shopId; + + @ApiModelProperty("营业执照拍照上传") + private String licenseUrl; + + @ApiModelProperty("营业执照名称") + private String licenseName; + + @ApiModelProperty("营业执照类型 0.个体工商户 1.有限责任公司 2.独资企业 3.自然人经营") + private Integer licenseType; + + @ApiModelProperty("营业执照上的法人") + private String licenseLegalPerson; + + @ApiModelProperty("统一社会信用代码") + private String socialCreditCode; + + @ApiModelProperty("发证日期") + private Date issueTime; + + @ApiModelProperty("营业执照经营场所") + private String licenseAddress; + + @ApiModelProperty("有效期类型 0:长期有效(不用传validity) 1:效期内") + private Integer validityType; + + @ApiModelProperty("有效期") + private Date validity; + + @ApiModelProperty("营业执照备注") + private String businessLicenseRemark; + + @ApiModelProperty("0:保存 1:提交到待审核") + private Integer submitStatus; + + public LicenseTransactDO toLicenseTransactDO(LicenseTransactDO licenseTransactDO) { + if (Objects.isNull(licenseTransactDO)){ + licenseTransactDO = new LicenseTransactDO(); + } + licenseTransactDO.setId(licenseTransactDO.getId()); + licenseTransactDO.setLicenseType(this.licenseType); + licenseTransactDO.setLicenseLegalPerson(this.licenseLegalPerson); + licenseTransactDO.setLicenseAddress(this.licenseAddress); + licenseTransactDO.setIssueTime(this.issueTime); + licenseTransactDO.setBusinessLicenseRemark(this.businessLicenseRemark); + licenseTransactDO.setShopId(this.shopId); + licenseTransactDO.setBusinessLicense(this.licenseName); + licenseTransactDO.setCreditCode(this.socialCreditCode); + licenseTransactDO.setCreditUrl(this.licenseUrl); + if (this.validityType == 0){ + licenseTransactDO.setValidity(null); + }else if (this.validityType == 1){ + licenseTransactDO.setValidity(this.validity); + } + return licenseTransactDO; + } + + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/license/FoodLicenseRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/license/FoodLicenseRequest.java new file mode 100644 index 000000000..635b14569 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/license/FoodLicenseRequest.java @@ -0,0 +1,70 @@ +package com.cool.store.request.license; + +import com.cool.store.entity.LicenseTransactDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @Author suzhuhong + * @Date 2024/10/9 16:01 + * @Version 1.0 + */ +@Data +public class FoodLicenseRequest { + + @ApiModelProperty("主键id") + private Long id; + + private Long shopId; + + @ApiModelProperty("食品经营许可证图片上传") + private String foodLicenseUrl; + + @ApiModelProperty("经营者") + private String operator; + + @ApiModelProperty("食品经营许可证上的法人") + private String foodLicenseLegalPerson; + + @ApiModelProperty("食营经营场所") + private String businessPremises; + + @ApiModelProperty("主体业态") + private String mainBusiness; + + @ApiModelProperty("经营项目") + private String businessProject; + + @ApiModelProperty("许可证编号") + private String foodLicenseCode; + + @ApiModelProperty("许可证开始时间") + private Date foodLicenseStartTime; + + @ApiModelProperty("许可证截止时间") + private Date foodLicenseEndTime; + + @ApiModelProperty("备注") + private String foodLicenseRemark; + + @ApiModelProperty("0:保存 1:提交到待审核") + private Integer submitStatus; + + + public LicenseTransactDO toLicenseTransactDO(LicenseTransactDO licenseTransactDO) { + licenseTransactDO.setMainBusiness(this.mainBusiness); + licenseTransactDO.setOperator(this.operator); + licenseTransactDO.setFoodLicenseLegalPerson(this.foodLicenseLegalPerson); + licenseTransactDO.setBusinessProject(this.businessProject); + licenseTransactDO.setFoodLicenseRemark(this.foodLicenseRemark); + licenseTransactDO.setShopId(this.shopId); + licenseTransactDO.setFoodBusinessLicenseCode(this.foodLicenseCode); + licenseTransactDO.setFoodLicenseAddress(this.businessPremises); + licenseTransactDO.setFoodBusinessStartTime(this.foodLicenseStartTime); + licenseTransactDO.setFoodBusinessEndTime(this.foodLicenseEndTime); + licenseTransactDO.setFoodBusinessLicenseUrl(this.foodLicenseUrl); + return licenseTransactDO; + } +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/ApplyLicenseService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/ApplyLicenseService.java index 29066b7f5..cf948bea9 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/ApplyLicenseService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/ApplyLicenseService.java @@ -3,17 +3,39 @@ package com.cool.store.service; import com.cool.store.context.LoginUserInfo; import com.cool.store.request.LicenseListRequest; import com.cool.store.request.SubmitLicenseRequest; +import com.cool.store.request.license.BusinessLicenseRequest; +import com.cool.store.request.license.FoodLicenseRequest; import com.cool.store.response.LicenseListResponse; import com.cool.store.response.SubmitLicenseResponse; import com.cool.store.vo.PartnerUserInfoVO; import com.github.pagehelper.PageInfo; public interface ApplyLicenseService { + + + /** + * 加盟商提交营业执照 + * @param request + * @param user + * @return + */ + Boolean submitBusinessLicense(BusinessLicenseRequest request, PartnerUserInfoVO user); + + /** + * 加盟商提交食品许可证 + * @param request + * @param user + * @return + */ + Boolean submitFoodLicense(FoodLicenseRequest request, PartnerUserInfoVO user); + + /** * 提交证照信息 * @param request * @return */ + @Deprecated Boolean submitLicense(SubmitLicenseRequest request, PartnerUserInfoVO user); /** diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ApplyLicenseServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ApplyLicenseServiceImpl.java index c5bde2a5d..d2abb91c6 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ApplyLicenseServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ApplyLicenseServiceImpl.java @@ -14,6 +14,8 @@ import com.cool.store.exception.ServiceException; import com.cool.store.mapper.*; import com.cool.store.request.LicenseListRequest; import com.cool.store.request.SubmitLicenseRequest; +import com.cool.store.request.license.BusinessLicenseRequest; +import com.cool.store.request.license.FoodLicenseRequest; import com.cool.store.response.GetStoreInfoByCodeResponse; import com.cool.store.response.LicenseListResponse; import com.cool.store.response.SubmitLicenseResponse; @@ -94,6 +96,62 @@ public class ApplyLicenseServiceImpl implements ApplyLicenseService { UserAuthMappingService userAuthMappingService; + @Override + public Boolean submitBusinessLicense(BusinessLicenseRequest request, PartnerUserInfoVO user) { + log.info("submitBusinessLicense request:{}", JSONObject.toJSONString(request)); + if (Objects.isNull(request)) { + return false; + } + String lockKey = "submitBusinessLicense:" + request.getShopId(); + String lockValue = UUID.randomUUID().toString(); + boolean acquired = Boolean.FALSE; + acquired = redisUtilPool.setNxExpire(lockKey, lockValue, CommonConstants.ONE_SECONDS); + if (!acquired) { + throw new ServiceException(ErrorCodeEnum.DUPLICATE_SUBMISSION); + } + //防止一直在页面提交 + LicenseTransactDO license = applyLicenseMapper.selectByShopId(request.getShopId()); + LicenseTransactDO licenseTransactDO = request.toLicenseTransactDO(license); + if (licenseTransactDO.getId() == null) { + applyLicenseMapper.insertSelective(licenseTransactDO); + } else { + applyLicenseMapper.updateByPrimaryKey(licenseTransactDO); + } + if (Constants.ONE_INTEGER.equals(request.getSubmitStatus())) { + shopStageInfoDAO.updateShopStageAndAuditInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_33, null); + preparationService.licenseCompleted(request.getShopId()); + } + return Boolean.TRUE; + } + + @Override + public Boolean submitFoodLicense(FoodLicenseRequest request, PartnerUserInfoVO user) { + log.info("submitBusinessLicense request:{}", JSONObject.toJSONString(request)); + if (Objects.isNull(request)) { + return false; + } + String lockKey = "submitBusinessLicense:" + request.getShopId(); + String lockValue = UUID.randomUUID().toString(); + boolean acquired = Boolean.FALSE; + acquired = redisUtilPool.setNxExpire(lockKey, lockValue, CommonConstants.ONE_SECONDS); + if (!acquired) { + throw new ServiceException(ErrorCodeEnum.DUPLICATE_SUBMISSION); + } + //防止一直在页面提交 + LicenseTransactDO license = applyLicenseMapper.selectByShopId(request.getShopId()); + LicenseTransactDO licenseTransactDO = request.toLicenseTransactDO(license); + if (licenseTransactDO.getId() == null) { + applyLicenseMapper.insertSelective(licenseTransactDO); + } else { + applyLicenseMapper.updateByPrimaryKey(licenseTransactDO); + } + if (Constants.ONE_INTEGER.equals(request.getSubmitStatus())) { + shopStageInfoDAO.updateShopStageAndAuditInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_43, null); + preparationService.licenseCompleted(request.getShopId()); + } + return Boolean.TRUE; + } + @Override @Transactional(rollbackFor = Exception.class) public Boolean submitLicense(SubmitLicenseRequest request, PartnerUserInfoVO user) { @@ -171,24 +229,6 @@ public class ApplyLicenseServiceImpl implements ApplyLicenseService { SubmitLicenseResponse submitLicenseResponse = new SubmitLicenseResponse(); if (Objects.nonNull(result)) { submitLicenseResponse = SubmitLicenseResponse.from(result); - List listByShopIdAndType = shopAuditInfoMapper.getListByShopIdAndType(shopId, AuditTypeEnum.LICENSE_APPROVAL.getCode()); - List userIds = listByShopIdAndType.stream().map(ShopAuditInfoVO::getSubmittedUserId).collect(Collectors.toList()); - List userInfoByUserIds; - if (CollectionUtils.isNotEmpty(userIds)) { - userInfoByUserIds = userMapper.getUserInfoByUserIds(userIds); - Map userAvatarMap = userInfoByUserIds.stream() - .filter(item -> StringUtil.isNotBlank(item.getUserId()) && StringUtil.isNotBlank(item.getAvatar())) - .collect(Collectors.toMap(EnterpriseUserDO::getUserId, EnterpriseUserDO::getAvatar)); - listByShopIdAndType.forEach(item -> { - String avatar = userAvatarMap.get(item.getSubmittedUserId()); - if (StringUtils.isBlank(avatar)) { - item.setAvatar(Constants.AVATAR_DEFAULT); - } else { - item.setAvatar(avatar); - } - }); - } - submitLicenseResponse.setProcessRecords(listByShopIdAndType); } ShopInfoDO shopInfoDO = shopInfoMapper.selectByPrimaryKey(shopId); if (shopInfoDO!=null&&shopInfoDO.getSupervisorUserId()!=null){ diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/ApplyLicenseController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/ApplyLicenseController.java index 24076fcfa..45e9d4e8a 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/ApplyLicenseController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/ApplyLicenseController.java @@ -4,6 +4,8 @@ import com.cool.store.context.CurrentUserHolder; import com.cool.store.context.LoginUserInfo; import com.cool.store.context.PartnerUserHolder; import com.cool.store.request.SubmitLicenseRequest; +import com.cool.store.request.license.BusinessLicenseRequest; +import com.cool.store.request.license.FoodLicenseRequest; import com.cool.store.response.ResponseResult; import com.cool.store.response.SubmitLicenseResponse; import com.cool.store.service.ApplyLicenseService; @@ -29,8 +31,26 @@ public class ApplyLicenseController { @Resource ApplyLicenseService applyLicenseService; + + @ApiOperation("证照办理提交-营业执照") + @PostMapping("/submitBusinessLicense") + public ResponseResult submitBusinessLicense(@RequestBody BusinessLicenseRequest request) { + PartnerUserInfoVO user = PartnerUserHolder.getUser(); + return ResponseResult.success(applyLicenseService.submitBusinessLicense(request,user)); + } + + + @ApiOperation("证照办理提交-食品许可证") + @PostMapping("/submitFoodLicense") + public ResponseResult submitFoodLicense(@RequestBody FoodLicenseRequest request) { + PartnerUserInfoVO user = PartnerUserHolder.getUser(); + return ResponseResult.success(applyLicenseService.submitFoodLicense(request,user)); + } + + @ApiOperation("证照办理提交") @PostMapping("/submit") + @Deprecated public ResponseResult submitLicense(@RequestBody SubmitLicenseRequest request) { PartnerUserInfoVO user = PartnerUserHolder.getUser(); return ResponseResult.success(applyLicenseService.submitLicense(request,user));