Merge #99 into master from cc_20260408_close_up

feat:歇业管理

* cc_20260408_close_up: (18 commits squashed)

  - fix:歇业管理(部分)

  - fix:歇业管理(部分)

  - fix:审批逻辑修改;拒绝审批实现

  - fix:恢复开业申请及审批

  - fix:主流程补充

  - fix:主流程补充

  - fix:字段补充及逻辑修改

  - fix:字段补充

  - fix

  - fix:平台处理新增字段

  - fix

  - Merge remote-tracking branch 'origin/cc_20260408_close_up' into cc_20260408_close_up

  - fix:歇业营业发送短信

  - fix:排序

  - fix:详情接口新增加盟商手机号字段;申请单日期和已有申请单存在交集时申请失败

  - fix:申请单详情接口新增品牌字段

  - fix:新增列表筛选条件;审批单状态校验

  - Merge branch 'master' into cc_20260408_close_up
    
    # Conflicts:
    #	coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java

Signed-off-by: 王非凡 <accounts_67eba0c5fee9c49c80c8e2b4@mail.teambition.com>
Merged-by: 正新 <accounts_6964c7bcd2a2c377c5bbd01b@mail.teambition.com>

CR-link: https://codeup.aliyun.com/692ea314dec569489f6f167c/hangzhou/java/custom_zxjp/change/99
This commit is contained in:
王非凡
2026-04-15 08:23:40 +00:00
committed by 正新
parent 1b3ae71c3a
commit 19bce915ac
51 changed files with 2502 additions and 9 deletions

View File

@@ -0,0 +1,112 @@
package com.cool.store.entity.closeup;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import javax.persistence.*;
/**
* 歇业开业申请单
*/
@Data
@Table(name = "zxjp_close_up_apply_form")
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class CloseUpApplyFormDO {
/**
* id
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
/**
* 类型0歇业申请 1开业申请
*/
private Integer type;
/**
* 门店id
*/
@Column(name = "store_id")
private String storeId;
/**
* 申请单号
*/
@Column(name = "apply_no")
private String applyNo;
/**
* 线索id
*/
@Column(name = "line_id")
private Long lineId;
/**
* 状态1-审批中 5-审批拒绝 10-审批通过
*/
private Integer status;
/**
* 计划歇业日期
*/
@Column(name = "plan_close_date")
private Date planCloseDate;
/**
* 实际歇业日期
*/
@Column(name = "actual_close_date")
private Date actualCloseDate;
/**
* 计划开业日期
*/
@Column(name = "plan_open_date")
private Date planOpenDate;
/**
* 实际开业日期
*/
@Column(name = "actual_open_date")
private Date actualOpenDate;
/**
* 代申请运营顾问id
*/
@Column(name = "user_id")
private String userId;
/**
* 附件列表
*/
private String urls;
/**
* 原因说明
*/
private String reason;
/**
* 源申请单id
*/
@Column(name = "source_apply_id")
private Long sourceApplyId;
/**
* 创建时间
*/
@Column(name = "create_time")
private Date createTime;
/**
* 更新时间
*/
@Column(name = "updated_time")
private Date updatedTime;
}

View File

@@ -0,0 +1,100 @@
package com.cool.store.entity.closeup;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import javax.persistence.*;
/**
* 歇业开业审批记录
*/
@Data
@Table(name = "zxjp_close_up_audit_record")
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class CloseUpAuditRecordDO {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
/**
* 申请单id
*/
@Column(name = "apply_id")
private Long applyId;
/**
* 申请单类型
*/
@Column(name = "apply_type")
private Integer applyType;
/**
* 记录类型1-申请提交2-审批操作
*/
@Column(name = "record_type")
private Integer recordType;
/**
* 备注
*/
@Column(name = "action_remark")
private String actionRemark;
/**
* 实际处理人
*/
@Column(name = "handler_user_id")
private String handlerUserId;
/**
* 实际处理人名称
*/
@Column(name = "handler_user_name")
private String handlerUserName;
/**
* 处理人集合
*/
@Column(name = "handler_user_ids")
private String handlerUserIds;
/**
* 收到任务时间
*/
@Column(name = "receive_task_time")
private Date receiveTaskTime;
/**
* 完成任务时间
*/
@Column(name = "finish_task_time")
private Date finishTaskTime;
/**
* 审核状态 0待处理,1通过,2拒绝
*/
@Column(name = "audit_status")
private Integer auditStatus;
/**
* 删除标识
*/
private Integer deleted;
/**
* 创建时间
*/
@Column(name = "create_time")
private Date createTime;
/**
* 更新时间
*/
@Column(name = "updated_time")
private Date updatedTime;
}

View File

@@ -0,0 +1,78 @@
package com.cool.store.entity.closeup;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import javax.persistence.*;
/**
* 歇业开业平台账号
*/
@Data
@Table(name = "zxjp_close_up_platform")
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class CloseUpPlatformDO {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
/**
* 申请单id
*/
@Column(name = "apply_id")
private Long applyId;
/**
* 申请单类型0歇业申请 1开业申请
*/
@Column(name = "apply_type")
private Integer applyType;
/**
* code
*/
private String code;
/**
* 名称
*/
private String name;
/**
* 状态0-待处理, 1-已处理
*/
private Integer status;
/**
* 关闭类型0手动关闭1自动关闭
*/
private Integer type;
/**
* 任务开始日期
*/
@Column(name = "task_start_date")
private Date taskStartDate;
/**
* 图标
*/
private String icon;
/**
* 创建时间
*/
@Column(name = "create_time")
private Date createTime;
/**
* 更新时间
*/
@Column(name = "update_time")
private Date updateTime;
}

View File

@@ -0,0 +1,41 @@
package com.cool.store.request.closeup;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* <p>
* 歇业申请Request
* </p>
*
* @author wangff
* @since 2026/4/8
*/
@Data
public class CloseUpApplyRequest {
@ApiModelProperty("申请单id")
private Long id;
@ApiModelProperty("门店id")
@NotBlank(message = "门店id不能为空")
private String storeId;
@ApiModelProperty("计划歇业日期")
@NotNull(message = "计划歇业日期不能为空")
private Date planCloseDate;
@ApiModelProperty("计划开业日期")
@NotNull(message = "计划开业日期不能为空")
private Date planOpenDate;
@ApiModelProperty("原因说明")
@NotBlank(message = "原因说明不能为空")
private String reason;
@ApiModelProperty("附件列表,逗号分割")
private String urls;
}

View File

@@ -0,0 +1,22 @@
package com.cool.store.request.closeup;
import com.cool.store.common.PageBasicInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* <p>
* 申请单简单信息查询Request
* </p>
*
* @author wangff
* @since 2026/4/9
*/
@Data
public class CloseUpApplySimpleQueryRequest extends PageBasicInfo {
@ApiModelProperty("门店id")
@NotBlank(message = "门店id不能为空")
private String storeId;
}

View File

@@ -0,0 +1,30 @@
package com.cool.store.request.closeup;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* <p>
* 歇业申请审批Request
* </p>
*
* @author wangff
* @since 2026/4/8
*/
@Data
public class CloseUpAuditRequest {
@ApiModelProperty("审批记录id")
@NotNull(message = "审批记录id不能为空")
private Long auditRecordId;
@ApiModelProperty("审批意见")
@Length(max = 300, message = "审批意见长度不能超过300")
private String remark;
@ApiModelProperty("正式歇业时间")
private Date actualCloseDate;
}

View File

@@ -0,0 +1,32 @@
package com.cool.store.request.closeup;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* <p>
* 营业申请Request
* </p>
*
* @author wangff
* @since 2026/4/9
*/
@Data
public class CloseUpOpenApplyRequest {
@ApiModelProperty("id")
private Long id;
@ApiModelProperty("源申请单id")
@NotNull(message = "源申请单id不能为空")
private Long sourceApplyId;
@ApiModelProperty("实际开业日期")
@NotNull(message = "实际开业日期不能为空")
private Date actualOpenDate;
@ApiModelProperty("原因说明")
private String reason;
}

View File

@@ -0,0 +1,25 @@
package com.cool.store.request.closeup;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* <p>
* 平台关闭开启处理Request
* </p>
*
* @author wangff
* @since 2026/4/12
*/
@Data
public class CloseUpPlatformHandleRequest {
@ApiModelProperty("id")
@NotNull(message = "id不能为空")
private Long id;
@ApiModelProperty("状态0-待处理, 1-已处理")
@NotNull(message = "状态不能为空")
private Integer status;
}

View File

@@ -0,0 +1,55 @@
package com.cool.store.request.closeup;
import com.cool.store.common.PageBasicInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* <p>
* 申请单查询Request
* </p>
*
* @author wangff
* @since 2026/4/9
*/
@Data
public class CloseUpQueryRequest extends PageBasicInfo {
@ApiModelProperty("申请单类型0-歇业 1-开业")
private Integer type;
@ApiModelProperty("加盟商姓名或手机号")
private String lineKeyword;
@ApiModelProperty("门店名称或编码")
private String storeKeyword;
@ApiModelProperty("状态")
private Integer status;
@ApiModelProperty("计划歇业开始时间")
private Date beginPlanCloseDate;
@ApiModelProperty("计划歇业结束时间")
private Date endPlanCloseDate;
@ApiModelProperty("实际开业开始时间")
private Date beginActualOpenDate;
@ApiModelProperty("实际开业结束时间")
private Date endActualOpenDate;
@ApiModelProperty("所属品牌")
private Integer joinBrand;
@ApiModelProperty("申请单号")
private String applyNo;
@ApiModelProperty("歇业申请单号(恢复申请单使用)")
private String closeUpApplyNo;
@ApiModelProperty(value = "管辖区域id", hidden = true)
private List<String> regionIds;
}

View File

@@ -0,0 +1,22 @@
package com.cool.store.request.closeup;
import com.cool.store.common.PageBasicInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 歇业申请待办查询Request
* </p>
*
* @author wangff
* @since 2026/4/9
*/
@Data
public class CloseUpTodoQueryRequest extends PageBasicInfo {
@ApiModelProperty("类型0歇业申请 1开业申请")
private Integer type;
@ApiModelProperty("门店名称或编码")
private String storeKeyword;
}

View File

@@ -0,0 +1,89 @@
package com.cool.store.vo.closeup;
import com.cool.store.enums.closeup.CloseUpStatusEnum;
import com.cool.store.enums.master.BrandTypeEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* <p>
* 歇业申请单简单列表VO
* </p>
*
* @author wangff
* @since 2026/4/9
*/
@Data
public class CloseUpApplyFormSimpleVO {
private Long id;
@ApiModelProperty("审批id")
private Long auditId;
@ApiModelProperty("门店id")
private String storeId;
@ApiModelProperty("门店名称")
private String storeName;
@ApiModelProperty("门店编码")
private String storeNum;
@ApiModelProperty("所属品牌")
private Integer joinBrand;
@ApiModelProperty("所属品牌名称")
private String joinBrandName;
@ApiModelProperty("申请单号")
private String applyNo;
@ApiModelProperty("歇业申请单号")
private String closeUpApplyNo;
@ApiModelProperty("线索id")
private Long lineId;
@ApiModelProperty("申请人手机号")
private String applyMobile;
@ApiModelProperty("申请人名称")
private String applyName;
@ApiModelProperty("申请人角色")
private String applyRoleName;
@ApiModelProperty("状态1-审批中 5-审批拒绝 10-审批通过 15-申请营业中 20-申请营业审批拒绝 25-申请营业审批通过")
private Integer status;
@ApiModelProperty("状态名称")
private String statusName;
@ApiModelProperty("计划歇业日期")
private Date planCloseDate;
@ApiModelProperty("实际歇业日期")
private Date actualCloseDate;
@ApiModelProperty("计划开业日期")
private Date planOpenDate;
@ApiModelProperty("实际开业日期")
private Date actualOpenDate;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty(value = "源申请单id", hidden = true)
private Long sourceApplyId;
public String getStatusName() {
return CloseUpStatusEnum.getDesc(status);
}
public String getJoinBrandName() {
return BrandTypeEnum.getDescByCode(joinBrand);
}
}

View File

@@ -0,0 +1,92 @@
package com.cool.store.vo.closeup;
import com.cool.store.enums.closeup.CloseUpStatusEnum;
import com.cool.store.enums.master.BrandTypeEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* <p>
* 歇业申请单VO
* </p>
*
* @author wangff
* @since 2026/4/9
*/
@Data
public class CloseUpApplyFormVO {
private Long id;
@ApiModelProperty("审批单id")
private Long auditId;
@ApiModelProperty("类型0歇业申请 1开业申请")
private Integer type;
@ApiModelProperty("门店id")
private String storeId;
@ApiModelProperty("门店名称")
private String storeName;
@ApiModelProperty("门店编码")
private String storeNum;
@ApiModelProperty("所属品牌")
private Integer joinBrand;
@ApiModelProperty("所属品牌名称")
private String joinBrandName;
@ApiModelProperty("申请单号")
private String applyNo;
@ApiModelProperty("线索id")
private Long lineId;
@ApiModelProperty("申请人手机号")
private String applyMobile;
@ApiModelProperty("申请人名称")
private String applyName;
@ApiModelProperty("申请人角色")
private String applyRoleName;
@ApiModelProperty("状态1-审批中 5-审批拒绝 10-审批通过")
private Integer status;
@ApiModelProperty("状态名称")
private String statusName;
@ApiModelProperty("计划歇业日期")
private Date planCloseDate;
@ApiModelProperty("实际歇业日期")
private Date actualCloseDate;
@ApiModelProperty("计划开业日期")
private Date planOpenDate;
@ApiModelProperty("实际开业日期")
private Date actualOpenDate;
@ApiModelProperty("附件列表")
private String urls;
@ApiModelProperty("原因说明")
private String reason;
@ApiModelProperty("审批拒绝原因")
private String rejectReason;
public String getJoinBrandName() {
return BrandTypeEnum.getDescByCode(joinBrand);
}
public String getStatusName() {
return CloseUpStatusEnum.getDesc(status);
}
}

View File

@@ -0,0 +1,33 @@
package com.cool.store.vo.closeup;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 歇业开业平台账号VO
* </p>
*
* @author wangff
* @since 2026/4/9
*/
@Data
public class CloseUpPlatformVO {
@ApiModelProperty("id")
private Long id;
@ApiModelProperty("申请单类型0歇业申请 1开业申请")
private Integer applyType;
@ApiModelProperty("code")
private String code;
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("状态0-待处理, 1-已处理")
private Integer status;
@ApiModelProperty("图标")
private String icon;
}