Merge #37 into master from cc_20251208_visit

feat:拜访字段调整

* cc_20251208_visit: (19 commits squashed)

  - feat:拜访记录

  - fix:拜访详情接口新增字段

  - fix:新增状态转义字段

  - fix:惩处单查询提供惩处待处理、惩处已处理状态筛选

  - fix

  - fix:管理员能查看所有加盟商

  - fix:去掉部分字段非空校验

  - fix:空校验

  - Merge branch 'master' into cc_20251208_visit
    
    # Conflicts:
    #	coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java
    #	coolstore-partner-dao/src/main/java/com/cool/store/dao/store/StoreMasterSignerInfoDAO.java
    #	coolstore-partner-service/src/main/java/com/cool/store/service/impl/UserAuthMappingServiceImpl.java

  - fix

  - fix:拜访记录失效延时消息

  - fix:拜访记录统计

  - fix:拜访记录统计新增筛选条件

  - fix:字段转义

  - feat:拜访调整

  - feat:拜访调整_过滤我的

  - feat:拜访调整_过滤我的

  - feat:拜访字段调整

  - feat:拜访字段调整

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

CR-link: https://codeup.aliyun.com/692ea314dec569489f6f167c/hangzhou/java/custom_zxjp/change/37
This commit is contained in:
正新
2026-02-02 09:56:33 +00:00
parent 88e7d99f85
commit 83fcb84f9d
37 changed files with 1821 additions and 1 deletions

View File

@@ -0,0 +1,122 @@
package com.cool.store.entity.oplog;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import javax.persistence.*;
@Table(name = "sys_log_${enterpriseId}")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class SysLogDO {
/**
* 主键
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
/**
* 菜单
*/
private String menus;
/**
* 模块,取最后一级菜单
*/
private String module;
/**
* 功能
*/
private String func;
/**
* 子功能
*/
@Column(name = "sub_func")
private String subFunc;
/**
* 操作人id
*/
@Column(name = "op_user_id")
private String opUserId;
/**
* 操作人名称
*/
@Column(name = "op_user_name")
private String opUserName;
/**
* 操作人手机号
*/
@Column(name = "op_user_mobile")
private String opUserMobile;
/**
* 操作时间
*/
@Column(name = "op_time")
private Date opTime;
/**
* 操作类型
*/
@Column(name = "op_type")
private String opType;
/**
* 操作内容
*/
@Column(name = "op_content")
private String opContent;
/**
* 登录ip
*/
@Column(name = "op_ip")
private String opIp;
/**
* 设备信息
*/
@Column(name = "device_info")
private String deviceInfo;
/**
* 请求参数
*/
@Column(name = "req_params")
private String reqParams;
/**
* 响应参数
*/
@Column(name = "resp_params")
private String respParams;
/**
* 请求路径
*/
private String url;
/**
* 扩展字段
*/
@Column(name = "extend_info")
private String extendInfo;
/**
* 操作人工号
*/
@Column(name = "op_user_jobnumber")
private String opUserJobnumber;
}

View File

@@ -0,0 +1,142 @@
package com.cool.store.entity.visit;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import javax.persistence.*;
/**
* 拜访记录
*/
@Data
@Table(name = "zxjp_visit_record")
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class VisitRecordDO {
/**
* id
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
/**
* 拜访编号
*/
@Column(name = "visit_no")
private String visitNo;
/**
* 线索id
*/
@Column(name = "line_id")
private Long lineId;
/**
* 拜访状态0待签到 1待签退 2已完成 3已失效
*/
private Integer status;
/**
* 是否已完成拜访信息编辑 0否 1是
*/
@Column(name = "complete_edit")
private Integer completeEdit;
/**
* 签到时间
*/
@Column(name = "sign_in_time")
private Date signInTime;
/**
* 签到经纬度
*/
@Column(name = "sign_in_lon_lat")
private String signInLonLat;
/**
* 签到地址
*/
@Column(name = "sign_in_address")
private String signInAddress;
/**
* 签退时间
*/
@Column(name = "sign_out_time")
private Date signOutTime;
/**
* 签退经纬度
*/
@Column(name = "sign_out_lon_lat")
private String signOutLonLat;
/**
* 签退地址
*/
@Column(name = "sign_out_address")
private String signOutAddress;
/**
* 拜访日期
*/
@Column(name = "visit_date")
private Date visitDate;
/**
* 开新店意愿
*/
private String desire;
/**
* 意向开店城市
*/
@Column(name = "desire_city")
private String desireCity;
/**
* 具体区域
*/
@Column(name = "desire_district")
private String desireDistrict;
/**
* 是否对应现有铺位
*/
@Column(name = "existing_shop_point")
private Integer existingShopPoint;
/**
* 拜访备注
*/
private String remark;
/**
* 创建时间
*/
@Column(name = "create_time")
private Date createTime;
/**
* 更新时间
*/
@Column(name = "update_time")
private Date updateTime;
/**
* 加盟商合影图片列表
*/
private String photos;
/**
* 拜访用户id
*/
@Column(name = "user_id")
private String userId;
}

View File

@@ -0,0 +1,18 @@
package com.cool.store.request.visit;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 拜访记录取消Request
* </p>
*
* @author wangff
* @since 2025/12/9
*/
@Data
public class VisitCancelRequest {
@ApiModelProperty("拜访记录id")
private Long id;
}

View File

@@ -0,0 +1,47 @@
package com.cool.store.request.visit;
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 2025/12/8
*/
@Data
public class VisitEditRequest {
@ApiModelProperty("拜访记录id")
@NotNull(message = "拜访记录id不能为空")
private Long id;
@ApiModelProperty("拜访日期")
@NotNull(message = "拜访日期不能为空")
private Date visitDate;
@ApiModelProperty("开新店意愿字典表visit_desire")
@NotBlank(message = "开新店意愿不能为空")
private String desire;
@ApiModelProperty("意向开店城市")
private String desireCity;
@ApiModelProperty("具体区域")
private String desireDistrict;
@ApiModelProperty("是否对应现有铺位")
private Integer existingShopPoint;
@ApiModelProperty("拜访备注")
private String remark;
@ApiModelProperty("加盟商合影图片列表")
private String photos;
}

View File

@@ -0,0 +1,22 @@
package com.cool.store.request.visit;
import com.cool.store.common.PageBasicInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 拜访加盟商查询Request
* </p>
*
* @author wangff
* @since 2025/12/9
*/
@Data
public class VisitPartnerQueryRequest extends PageBasicInfo {
@ApiModelProperty("加盟商姓名或手机号")
private String keyword;
@ApiModelProperty(value = "拜访用户id,查询我的拜访时传当前用户", hidden = true)
private String userId;
}

View File

@@ -0,0 +1,42 @@
package com.cool.store.request.visit;
import com.cool.store.common.PageBasicInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* <p>
* 拜访记录查询Request
* </p>
*
* @author wangff
* @since 2025/12/9
*/
@Data
public class VisitRecordQueryRequest extends PageBasicInfo {
@ApiModelProperty("线索id")
private Long lineId;
@ApiModelProperty("加盟商姓名或手机号")
private String keyword;
@ApiModelProperty("拜访编号")
private String visitNo;
@ApiModelProperty("拜访人")
private String visitUserId;
@ApiModelProperty("拜访开始日期")
private Date visitStartDate;
@ApiModelProperty("拜访结束日期")
private Date visitEndDate;
@ApiModelProperty("拜访状态0待签到 1待签退 2已完成 3已失效")
private Integer status;
@ApiModelProperty(value = "拜访人id", hidden = true)
private String userId;
}

View File

@@ -0,0 +1,32 @@
package com.cool.store.request.visit;
import com.cool.store.common.PageBasicInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* <p>
* 拜访记录查询Request
* </p>
*
* @author wangff
* @since 2025/12/9
*/
@Data
public class VisitRecordSimpleQueryRequest extends PageBasicInfo {
@ApiModelProperty("线索id")
@NotNull(message = "线索id不能为空")
private Long lineId;
@ApiModelProperty("拜访开始日期")
private Date visitStartDate;
@ApiModelProperty("拜访结束日期")
private Date visitEndDate;
@ApiModelProperty(value = "拜访用户id,查询我的拜访时传当前用户", hidden = true)
private String userId;
}

View File

@@ -0,0 +1,30 @@
package com.cool.store.request.visit;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* <p>
* 拜访记录签到Request
* </p>
*
* @author wangff
* @since 2025/12/8
*/
@Data
public class VisitSignInRequest {
@ApiModelProperty("线索id")
@NotNull(message = "线索id不能为空")
private Long lineId;
@ApiModelProperty("签到经纬度,经度,维度")
@NotBlank(message = "签到经纬度不能为空")
private String signInLonLat;
@ApiModelProperty("签到地址")
@NotBlank(message = "签到地址不能为空")
private String signInAddress;
}

View File

@@ -0,0 +1,30 @@
package com.cool.store.request.visit;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* <p>
* 拜访记录签到Request
* </p>
*
* @author wangff
* @since 2025/12/8
*/
@Data
public class VisitSignOutRequest {
@ApiModelProperty("拜访记录id")
@NotNull(message = "拜访记录id不能为空")
private Long id;
@ApiModelProperty("签到经纬度,经度,维度")
@NotBlank(message = "签到经纬度不能为空")
private String signOutLonLat;
@ApiModelProperty("签到地址")
@NotBlank(message = "签到地址不能为空")
private String signOutAddress;
}

View File

@@ -236,4 +236,6 @@ public class LineInfoVO {
private String franchiseBrand;
@ApiModelProperty("被拜访次数")
private Integer visitNum;
}

View File

@@ -1,6 +1,7 @@
package com.cool.store.vo.tp;
import com.cool.store.annotation.DictField;
import com.cool.store.enums.tp.TpFormStatusEnum;
import com.cool.store.enums.tp.TpFormTypeEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -73,6 +74,13 @@ public class TpPenaltyApplyDetailVO {
@ApiModelProperty("状态")
private String status;
@ApiModelProperty("状态名称")
private String statusName;
public String getStatusName() {
return TpFormStatusEnum.getMsgByStatus(this.status);
}
public String getTypeName() {
return TpFormTypeEnum.getMsgByType(this.type);
}

View File

@@ -1,6 +1,7 @@
package com.cool.store.vo.tp;
import com.cool.store.annotation.DictField;
import com.cool.store.enums.tp.TpFormStatusEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -61,4 +62,11 @@ public class TpRewardApplyDetailVO {
@ApiModelProperty("状态")
private String status;
@ApiModelProperty("状态名称")
private String statusName;
public String getStatusName() {
return TpFormStatusEnum.getMsgByStatus(this.status);
}
}

View File

@@ -0,0 +1,36 @@
package com.cool.store.vo.visit;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 拜访加盟商列表VO
* </p>
*
* @author wangff
* @since 2025/12/9
*/
@Data
public class VisitPartnerListVO {
@ApiModelProperty("线索id")
private Long lineId;
@ApiModelProperty("加盟商姓名")
private String name;
@ApiModelProperty("加盟商手机号")
private String mobile;
@ApiModelProperty("开店数量")
private Integer openNum;
@ApiModelProperty("被拜访次数")
private Integer visitNum;
@ApiModelProperty("我的拜访次数")
private Integer myVisitNum;
@ApiModelProperty("新老加盟商0新 1老")
private Integer isVeteran;
}

View File

@@ -0,0 +1,99 @@
package com.cool.store.vo.visit;
import com.cool.store.annotation.DictField;
import com.cool.store.enums.visit.VisitStatusEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* <p>
* 拜访记录详情VO
* </p>
*
* @author wangff
* @since 2025/12/9
*/
@Data
public class VisitRecordDetailVO {
@ApiModelProperty("id")
private Long id;
@ApiModelProperty("加盟商姓名")
private String name;
@ApiModelProperty("加盟商手机号")
private String mobile;
@ApiModelProperty("开店数量")
private Integer openNum;
@ApiModelProperty("被拜访次数")
private Integer visitNum;
@ApiModelProperty("拜访编号")
private String visitNo;
@ApiModelProperty("拜访日期")
private Date visitDate;
@ApiModelProperty("签到地址")
private String signInAddress;
@ApiModelProperty("签到时间")
private Date signInTime;
@ApiModelProperty("签退地址")
private String signOutAddress;
@ApiModelProperty("签退时间")
private Date signOutTime;
@ApiModelProperty("开新店意愿")
private String desire;
@ApiModelProperty("开新店意愿名称")
@DictField
private String desireName;
@ApiModelProperty("意向开店城市")
private String desireCity;
@ApiModelProperty("意向开店城市名称")
private String desireCityName;
@ApiModelProperty("具体区域")
private String desireDistrict;
@ApiModelProperty("具体区域名称")
private String desireDistrictName;
@ApiModelProperty("是否对应现有铺位")
private Integer existingShopPoint;
@ApiModelProperty("拜访备注")
private String remark;
@ApiModelProperty("加盟商合影图片列表")
private String photos;
@ApiModelProperty("拜访状态")
private Integer status;
@ApiModelProperty("拜访状态名称")
private String statusName;
@ApiModelProperty("是否老加盟商")
private Integer isVeteran;
@ApiModelProperty("拜访人ID")
private String userId;
@ApiModelProperty("拜访人名称")
private String userName;
public String getStatusName() {
return VisitStatusEnum.getDescByStatus(status);
}
}

View File

@@ -0,0 +1,79 @@
package com.cool.store.vo.visit;
import com.cool.store.enums.visit.VisitStatusEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* <p>
* 拜访记录列表VO
* </p>
*
* @author wangff
* @since 2025/12/9
*/
@Data
public class VisitRecordListVO {
@ApiModelProperty("id")
private Long id;
@ApiModelProperty(value = "线索id", hidden = true)
private Long lineId;
@ApiModelProperty("加盟商姓名")
private String name;
@ApiModelProperty("加盟商手机号")
private String mobile;
@ApiModelProperty("拜访编号")
private String visitNo;
@ApiModelProperty("拜访日期")
private Date visitDate;
@ApiModelProperty("签到地址")
private String signInAddress;
@ApiModelProperty("开新店意愿")
private String desire;
@ApiModelProperty("意向开店城市")
private String desireCity;
@ApiModelProperty("意向开店城市名称")
private String desireCityName;
@ApiModelProperty("具体区域")
private String desireDistrict;
@ApiModelProperty("具体区域名称")
private String desireDistrictName;
@ApiModelProperty("是否对应现有铺位")
private Integer existingShopPoint;
@ApiModelProperty("加盟商合影图片列表")
private String photos;
@ApiModelProperty("拜访状态")
private Integer status;
@ApiModelProperty("拜访状态名称")
private String statusName;
@ApiModelProperty("新老加盟商0新 1老")
private Integer isVeteran;
@ApiModelProperty("拜访人userId")
private String visitUserId;
@ApiModelProperty("拜访人")
private String visitUserName;
public String getStatusName() {
return VisitStatusEnum.getDescByStatus(status);
}
}

View File

@@ -0,0 +1,52 @@
package com.cool.store.vo.visit;
import com.cool.store.enums.visit.VisitStatusEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* <p>
* 拜访记录简单信息列表VO
* </p>
*
* @author wangff
* @since 2025/12/9
*/
@Data
public class VisitRecordSimpleListVO {
@ApiModelProperty("拜访记录id")
private Long id;
@ApiModelProperty(hidden = true)
private Long lineId;
@ApiModelProperty("加盟商姓名")
private String name;
@ApiModelProperty("加盟商手机号")
private String mobile;
@ApiModelProperty("拜访编号")
private String visitNo;
@ApiModelProperty("拜访日期")
private Date visitDate;
@ApiModelProperty("拜访状态0待签到 1待签退 2已完成 3已失效")
private Integer status;
@ApiModelProperty("拜访状态名称")
private String statusName;
@ApiModelProperty("拜访人ID")
private String userId;
@ApiModelProperty("拜访人名称")
private String userName;
public String getStatusName() {
return VisitStatusEnum.getDescByStatus(status);
}
}

View File

@@ -0,0 +1,27 @@
package com.cool.store.vo.visit;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 拜访记录状态统计
* </p>
*
* @author wangff
* @since 2026/1/27
*/
@Data
public class VisitRecordStatusStatisticsVO {
@ApiModelProperty("本月已完成数量")
private Integer monthCompletedCount;
@ApiModelProperty("已完成数量")
private Integer completedCount;
@ApiModelProperty("未完成数量")
private Integer uncompletedCount;
@ApiModelProperty("已失效数量")
private Integer invalidCount;
}