Merge branch 'cc_20250520_ghostwriting' into 'master'

Cc 20250520 ghostwriting

See merge request hangzhou/java/custom_zxjp!97
This commit is contained in:
苏竹红
2025-05-27 05:48:29 +00:00
14 changed files with 237 additions and 23 deletions

View File

@@ -64,6 +64,8 @@ public enum UserRoleEnum {
OWN_SHOP_OFFICE(480000000L,"自有店财务"),
BRAND_HEAD(490000000L,"品牌负责人"),
QW_SUPERVISION(1725431698852L,"企微督导"),
;
private Long code;

View File

@@ -37,7 +37,10 @@
update_time,
deleted,
two_certificates_one,
legal_is_same_partner
legal_is_same_partner,
single_shop,
commitment_url,
food_shop_list_url
</sql>
<update id="updateByShopId">
update xfsg_license_transact

View File

@@ -87,4 +87,10 @@ public class LicenseTransactDO {
private Integer syncFlag;
@Column(name = "legal_is_same_partner")
private Boolean legalIsSamePartner;
@Column(name = "single_shop")
private Boolean singleShop;
@Column(name = "commitment_url")
private String commitmentUrl;
@Column(name = "food_shop_list_url")
private String foodShopListUrl;
}

View File

@@ -75,6 +75,16 @@ public class BusinessLicenseRequest {
//@NotBlank(message = "法人手机号不能为空")
private String licenseLegalMobile;
@ApiModelProperty("是否单店使用")
@NotNull(message = "是否单店使用不能为空")
private Boolean singleShop;
@ApiModelProperty("美食城承诺书")
private String commitmentUrl;
@ApiModelProperty("美食城档口列表")
private String foodShopListUrl;
public LicenseTransactDO toLicenseTransactDO(LicenseTransactDO licenseTransactDO) {
if (Objects.isNull(licenseTransactDO)){
licenseTransactDO = new LicenseTransactDO();
@@ -99,6 +109,9 @@ public class BusinessLicenseRequest {
}else if (this.validityType == 1){
licenseTransactDO.setValidity(this.validity);
}
licenseTransactDO.setSingleShop(this.singleShop);
licenseTransactDO.setCommitmentUrl(this.commitmentUrl);
licenseTransactDO.setFoodShopListUrl(this.foodShopListUrl);
return licenseTransactDO;
}

View File

@@ -10,6 +10,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@@ -122,7 +123,14 @@ public class SubmitLicenseResponse {
private StoreDocument storeDocument;
@ApiModelProperty("二证合一标识0否 1 是")
private Integer twoCertificatesOne;
@ApiModelProperty("是否单店使用")
private Boolean singleShop;
@ApiModelProperty("美食城承诺书")
private String commitmentUrl;
@ApiModelProperty("美食城档口列表")
private String foodShopListUrl;
@Data
public static class StoreDocument {
@ApiModelProperty("营业执照拍照上传")
@@ -227,6 +235,9 @@ public class SubmitLicenseResponse {
return new SubmitLicenseResponse();
}
SubmitLicenseResponse submitLicenseResponse = new SubmitLicenseResponse();
submitLicenseResponse.setSingleShop(licenseTransactDO.getSingleShop());
submitLicenseResponse.setCommitmentUrl(licenseTransactDO.getCommitmentUrl());
submitLicenseResponse.setFoodShopListUrl(licenseTransactDO.getFoodShopListUrl());
submitLicenseResponse.setLegalIsSamePartner(licenseTransactDO.getLegalIsSamePartner());
submitLicenseResponse.setLicenseLegalIdCardNo(licenseTransactDO.getLicenseLegalIdCardNo());
submitLicenseResponse.setLicenseLegalIdCardFront(licenseTransactDO.getLicenseLegalIdCardFront());

View File

@@ -186,4 +186,13 @@ public interface DeskService {
*/
PageInfo<PreparationCommonPendingVO> measurePendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);
/**
* 营业执照
*/
PageInfo<PreparationCommonPendingVO> businessLicensePendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);
/**
* 食品安全许可证
*/
PageInfo<PreparationCommonPendingVO> foodLicensePendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);
}

View File

@@ -53,7 +53,7 @@ import static com.cool.store.utils.poi.DateUtils.YYYY_MM_DD_HH_MM_SS;
public class DeskServiceImpl implements DeskService {
@Resource
private SignFranchiseDAO signFranchiseDAO;
private SignFranchiseDAO signFranchiseDAO;
@Resource
DecorationMeasureDAO decorationMeasureDAO;
@Resource
@@ -244,15 +244,21 @@ public class DeskServiceImpl implements DeskService {
PageInfo<PreparationCommonPendingVO> pageInfo = new PageInfo<>();
List<Integer> subStageStatusList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(userRoleIds)) {
if (userRoleIds.contains(UserRoleEnum.JOIN_OFFICE.getCode()) || userRoleIds.contains(UserRoleEnum.REGION_OFFICE.getCode())) {
subStageStatusList.add(SHOP_SUB_STAGE_STATUS_70.getShopSubStageStatus());
}
if (userRoleIds.contains(UserRoleEnum.BRANCH_OFFICE.getCode()) || userRoleIds.contains(UserRoleEnum.REGION_OFFICE.getCode())) {
subStageStatusList.add(SHOP_SUB_STAGE_STATUS_72.getShopSubStageStatus());
}
if (!subStageStatusList.isEmpty()) {
//督导代填
if (userRoleIds.contains(UserRoleEnum.QW_SUPERVISION.getCode()) || userRoleIds.contains(UserRoleEnum.SUPERVISION.getCode())) {
pageInfo = commonPendingVOPageInfo(pageNum, pageSize, user, ShopSubStageEnum.SHOP_STAGE_7,
subStageStatusList, Boolean.TRUE);
Arrays.asList(SHOP_SUB_STAGE_STATUS_71.getShopSubStageStatus(), SHOP_SUB_STAGE_STATUS_74.getShopSubStageStatus()), Boolean.FALSE);
} else {
if (userRoleIds.contains(UserRoleEnum.JOIN_OFFICE.getCode()) || userRoleIds.contains(UserRoleEnum.REGION_OFFICE.getCode())) {
subStageStatusList.add(SHOP_SUB_STAGE_STATUS_70.getShopSubStageStatus());
}
if (userRoleIds.contains(UserRoleEnum.BRANCH_OFFICE.getCode()) || userRoleIds.contains(UserRoleEnum.REGION_OFFICE.getCode())) {
subStageStatusList.add(SHOP_SUB_STAGE_STATUS_72.getShopSubStageStatus());
}
if (!subStageStatusList.isEmpty()) {
pageInfo = commonPendingVOPageInfo(pageNum, pageSize, user, ShopSubStageEnum.SHOP_STAGE_7,
subStageStatusList, Boolean.TRUE);
}
}
}
return pageInfo;
@@ -342,7 +348,7 @@ public class DeskServiceImpl implements DeskService {
List<LineInfoDO> lineInfoDOS = lineInfoDAO.getByLineIds(lineIds);
Map<Long, LineInfoDO> lineMap = lineInfoDOS.stream().collect(Collectors.toMap(LineInfoDO::getId, line -> line));
List<SignFranchiseDO> signType = signFranchiseDAO.getSignType(shopIds);
Map<Long,SignFranchiseDO> signTypeMap = signType.stream().collect(Collectors.toMap(SignFranchiseDO::getShopId, dto -> dto));
Map<Long, SignFranchiseDO> signTypeMap = signType.stream().collect(Collectors.toMap(SignFranchiseDO::getShopId, dto -> dto));
Set<Long> regionIdSet = list.stream().map(PreparationCommonPendingVO::getRegionId).collect(Collectors.toSet());
Map<Long, String> regionNameMap = regionService.getBelongWarRegionNameMap(new ArrayList<>(regionIdSet));
@@ -355,7 +361,7 @@ public class DeskServiceImpl implements DeskService {
if (lineInfoDO == null) {
continue;
}
SignFranchiseDO signFranchiseDO = signTypeMap.getOrDefault(preparationCommonPendingVO.getShopId(),new SignFranchiseDO());
SignFranchiseDO signFranchiseDO = signTypeMap.getOrDefault(preparationCommonPendingVO.getShopId(), new SignFranchiseDO());
preparationCommonPendingVO.setSignType(signFranchiseDO.getSignType());
preparationCommonPendingVO.setPartnerName(lineInfoDO.getUsername());
preparationCommonPendingVO.setPartnerPhone(lineInfoDO.getMobile());
@@ -429,6 +435,10 @@ public class DeskServiceImpl implements DeskService {
@Override
public PageInfo<PreparationCommonPendingVO> buildInformationPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user) {
List<Long> userRoleIds = enterpriseUserRoleMapper.getUserRoleIds(user.getUserId());
if (userRoleIds.contains(UserRoleEnum.QW_SUPERVISION.getCode()) || userRoleIds.contains(UserRoleEnum.SUPERVISION.getCode())) {
return commonPendingVOPageInfo(pageNum, pageSize, user, ShopSubStageEnum.SHOP_STAGE_15,
Collections.singletonList(SHOP_SUB_STAGE_STATUS_150.getShopSubStageStatus()), Boolean.FALSE );
}
//如果不是财务角色或者即是财务又是自有店财务 则不需要标识
Boolean ownShopFlag = null;
if (userRoleIds.contains(UserRoleEnum.FINANCE.getCode())&&userRoleIds.contains(UserRoleEnum.OWN_SHOP_OFFICE.getCode())){
@@ -490,7 +500,7 @@ public class DeskServiceImpl implements DeskService {
List<LineInfoDO> lineInfoDOS = lineInfoDAO.getByLineIds(lineIds);
Map<Long, LineInfoDO> lineMap = lineInfoDOS.stream().collect(Collectors.toMap(LineInfoDO::getId, line -> line));
List<SignFranchiseDO> signType = signFranchiseDAO.getSignType(shopIds);
Map<Long,SignFranchiseDO> signTypeMap = signType.stream().collect(Collectors.toMap(SignFranchiseDO::getShopId, dto -> dto));
Map<Long, SignFranchiseDO> signTypeMap = signType.stream().collect(Collectors.toMap(SignFranchiseDO::getShopId, dto -> dto));
Set<Long> regionIdSet = list.stream().map(PreparationCommonPendingVO::getRegionId).collect(Collectors.toSet());
Map<Long, String> regionNameMap = regionService.getBelongWarRegionNameMap(new ArrayList<>(regionIdSet));
@@ -514,6 +524,17 @@ public class DeskServiceImpl implements DeskService {
return new PageInfo<>();
}
@Override
public PageInfo<PreparationCommonPendingVO> businessLicensePendingList(Integer pageNum, Integer pageSize, LoginUserInfo user) {
return commonPendingVOPageInfo(pageNum, pageSize, user, ShopSubStageEnum.SHOP_STAGE_3,
Collections.singletonList(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_30.getShopSubStageStatus()), Boolean.FALSE );
}
@Override
public PageInfo<PreparationCommonPendingVO> foodLicensePendingList(Integer pageNum, Integer pageSize, LoginUserInfo user) {
return commonPendingVOPageInfo(pageNum, pageSize, user, ShopSubStageEnum.SHOP_STAGE_4,
Collections.singletonList(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_40.getShopSubStageStatus()), Boolean.FALSE );
}
/**
* 通用查询
@@ -557,7 +578,7 @@ public class DeskServiceImpl implements DeskService {
List<PlanLineDTO> lines = lineInfoDAO.getLines(lineIds);
List<SignFranchiseDO> signType = signFranchiseDAO.getSignType(shopIds);
Map<Long,SignFranchiseDO> signTypeMap = signType.stream().collect(Collectors.toMap(SignFranchiseDO::getShopId, dto -> dto));
Map<Long, SignFranchiseDO> signTypeMap = signType.stream().collect(Collectors.toMap(SignFranchiseDO::getShopId, dto -> dto));
//将shopInfoList 转为map
Map<Long, ShopInfoDO> shopInfoMap = shopInfoList.stream().collect(Collectors.toMap(ShopInfoDO::getId, shop -> shop));
//将lines 转为map
@@ -653,7 +674,7 @@ public class DeskServiceImpl implements DeskService {
Map<Long, PlanLineDTO> lineMap = lines.stream().collect(Collectors.toMap(PlanLineDTO::getLineId, line -> line));
List<SignFranchiseDO> signType = signFranchiseDAO.getSignType(shopIds);
Map<Long,SignFranchiseDO> signTypeMap = signType.stream().collect(Collectors.toMap(SignFranchiseDO::getShopId, dto -> dto));
Map<Long, SignFranchiseDO> signTypeMap = signType.stream().collect(Collectors.toMap(SignFranchiseDO::getShopId, dto -> dto));
List<Long> regionIds = shopInfoList.stream().map(ShopInfoDO::getRegionId).distinct().collect(Collectors.toList());
List<String> developmentManagers = shopInfoList.stream().filter(x -> StringUtil.isNotEmpty(x.getShopManagerUserId())).map(ShopInfoDO::getShopManagerUserId).distinct().collect(Collectors.toList());

View File

@@ -212,4 +212,20 @@ public class DeskController {
LoginUserInfo userInfo = CurrentUserHolder.getUser();
return ResponseResult.success(deskService.measurePendingList(pageNumber,pageSize,userInfo));
}
@ApiOperation("待处理-营业执照")
@GetMapping("/businessLicensePendingList")
public ResponseResult<PageInfo<PreparationCommonPendingVO>> businessLicensePendingList(@RequestParam(value = "pageNumber",required = true,defaultValue = "1")Integer pageNumber,
@RequestParam(value = "pageSize",required = true,defaultValue = "10")Integer pageSize) {
LoginUserInfo userInfo = CurrentUserHolder.getUser();
return ResponseResult.success(deskService.businessLicensePendingList(pageNumber,pageSize,userInfo));
}
@ApiOperation("待处理-食品许可证")
@GetMapping("/foodLicensePendingList")
public ResponseResult<PageInfo<PreparationCommonPendingVO>> foodLicensePendingList(@RequestParam(value = "pageNumber",required = true,defaultValue = "1")Integer pageNumber,
@RequestParam(value = "pageSize",required = true,defaultValue = "10")Integer pageSize) {
LoginUserInfo userInfo = CurrentUserHolder.getUser();
return ResponseResult.success(deskService.foodLicensePendingList(pageNumber,pageSize,userInfo));
}
}

View File

@@ -2,19 +2,21 @@ package com.cool.store.controller.webb;
import com.cool.store.context.CurrentUserHolder;
import com.cool.store.context.LoginUserInfo;
import com.cool.store.context.PartnerUserHolder;
import com.cool.store.request.LicenseListRequest;
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.ResponseResult;
import com.cool.store.response.SubmitLicenseResponse;
import com.cool.store.service.ApplyLicenseService;
import com.cool.store.vo.PartnerUserInfoVO;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -60,4 +62,22 @@ public class PCApplyLicenseController {
LoginUserInfo user = CurrentUserHolder.getUser();
return ResponseResult.success(applyLicenseService.licenseExamine(shopId, status, result, user));
}
@ApiOperation("证照办理提交-营业执照")
@PostMapping("/submitBusinessLicense")
public ResponseResult submitBusinessLicense(@RequestBody @Validated 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));
}
}

View File

@@ -0,0 +1,51 @@
package com.cool.store.controller.webb;
import com.cool.store.entity.BankdocDO;
import com.cool.store.entity.BanktypeDO;
import com.cool.store.request.BankRequest;
import com.cool.store.request.BranchBankPageRequest;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.BankService;
import com.github.pagehelper.PageInfo;
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.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author Fun Li 2023/8/10 14:20
* @version 1.0
*/
@RestController
@RequestMapping("/pc/bank")
@Api(tags = "PC银行信息")
@Slf4j
public class PCBankController {
@Autowired
private BankService bankService;
@ApiOperation("银行类型")
@GetMapping("/listBank")
public ResponseResult<List<BanktypeDO>> listBank() {
List<BanktypeDO> result = bankService.listBank();
return ResponseResult.success(result);
}
@ApiOperation("添加银行")
@PostMapping("/addBank")
public ResponseResult<Boolean> listBank(@RequestBody(required = true) BankRequest bankRequest) {
return ResponseResult.success( bankService.addBank(bankRequest.getName()));
}
@ApiOperation("支行列表查询")
@PostMapping("/listBranchBank")
public ResponseResult<PageInfo<BankdocDO>> listBranchBank(@RequestBody @Validated BranchBankPageRequest request) {
return ResponseResult.success(bankService.listBranchBank(request));
}
}

View File

@@ -1,14 +1,13 @@
package com.cool.store.controller.webb;
import com.cool.store.request.BuildInformationRequest;
import com.cool.store.response.BuildInformationResponse;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.BuildInformationService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -31,4 +30,16 @@ public class PCBuildInformationController {
return ResponseResult.success(buildInformationService.getBuildInformation(shopId));
}
@ApiOperation("提交/修改")
@PostMapping("/submitOrUpdate")
public ResponseResult<Integer> submitBuildInformation(@RequestBody @Validated BuildInformationRequest request) {
return ResponseResult.success(buildInformationService.submitOrUpdate(request));
}
@ApiOperation("获取加盟类型 1 - 个人加盟 2- 企业加盟")
@GetMapping("/getJoinType")
public ResponseResult<Integer> getJoinType(@RequestParam(value = "lineId", required = true) Long lineId) {
return ResponseResult.success(buildInformationService.getJoinType(lineId));
}
}

View File

@@ -44,4 +44,12 @@ public class PCLinePayController {
return ResponseResult.success(linePayService.getAmount(lineId));
}
@ApiOperation("缴纳意向金/加盟费")
@PostMapping("/submitPayInfo")
public ResponseResult<Long> submitPayInfo(@RequestBody LinePaySubmitRequest request){
PartnerUserInfoVO partnerUser = PartnerUserHolder.getUser();
return ResponseResult.success(linePayService.submitPayInfo(request, partnerUser));
}
}

View File

@@ -1,8 +1,14 @@
package com.cool.store.controller.webb;
import com.cool.store.dto.ocr.InvoiceDTO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.IDCardSideEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.AliyunService;
import com.cool.store.vo.BusinessLicenseInfoVO;
import com.cool.store.vo.FoodLicenseVO;
import com.cool.store.vo.IdentityCardInfoVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@@ -34,6 +40,37 @@ public class PCOcrController {
return ResponseResult.success(aliyunService.getRecognizeInvoiceWithOptions(imageUrl));
}
@GetMapping(path = "/getBusinessLicenseInfo")
@ApiOperation("根据营业证照解析获取数据")
public ResponseResult<BusinessLicenseInfoVO> getBusinessLicenseInfo(@RequestParam(value = "imageUrl")String imageUrl){
try {
BusinessLicenseInfoVO businessLicenseInfo = aliyunService.getBusinessLicenseInfo(imageUrl);
return ResponseResult.success(businessLicenseInfo);
} catch (Exception e) {
throw new ServiceException(ErrorCodeEnum.BUSINESS_LICENSE_PARSE_FAIL);
}
}
@GetMapping(path = "/getFoodBusinessLicense")
@ApiOperation("根据食营证照解析获取数据")
public ResponseResult<FoodLicenseVO> getFoodLicense(@RequestParam(value = "imageUrl")String imageUrl){
try {
FoodLicenseVO businessLicenseInfo = aliyunService.getFoodLicense(imageUrl);
return ResponseResult.success(businessLicenseInfo);
} catch (Exception e) {
throw new ServiceException(ErrorCodeEnum.FOOD_BUSINESS_LICENSE_PARSE_FAIL);
}
}
@GetMapping(path = "/getIdentityCardInfo")
@ApiOperation("根据身份证正面解析获取数据")
public ResponseResult<IdentityCardInfoVO> getIdentityCardInfo(@RequestParam(value = "faceImageUrl")String faceImageUrl,
@RequestParam("side") IDCardSideEnum sideEnum){
try {
IdentityCardInfoVO identityCardInfo = aliyunService.getIdentityCardInfo(faceImageUrl, sideEnum);
return ResponseResult.success(identityCardInfo);
} catch (Exception e) {
throw new ServiceException(ErrorCodeEnum.IDENTITY_CARD_PARSE_FAIL);
}
}
}

View File

@@ -152,4 +152,10 @@ public class PCShopController {
@RequestParam("subStage")Integer subStage) {
return ResponseResult.success(shopService.getSubStageHandle(shopId,subStage));
}
@ApiOperation("获取店铺所属品牌")
@GetMapping("/getFranchiseBrandName")
public ResponseResult<String> getFranchiseBrandName(@RequestParam(name = "shopId")Long shopId) {
return ResponseResult.success(shopService.getFranchiseBrandName(shopId));
}
}