日志处理

This commit is contained in:
zhangchenbiao
2023-06-27 14:17:41 +08:00
parent 56ebaefb6f
commit 0e2df38528
6 changed files with 335 additions and 126 deletions

View File

@@ -0,0 +1,44 @@
package com.cool.store.enums;
/**
* @author zhangchenbiao
* @FileName: OperateLogFieldValue
* @Description:
* @date 2023-06-27 10:44
*/
public enum OperateLogFieldValueEnum {
ALLOCATION_USERNAME("allocationUsername","分配人姓名"),
MOBILE("mobile","手机号"),
OPERATE_TIME("operateTime","操作时间"),
OPERATE_USER_NAME("operateUsername","操作人姓名"),
REASON("reason","原因"),
PASS_REASON("pass_reason","通过原因"),
REJECT_PUBLIC_REASON("reject_public_reason", "公开拒绝原因"),
REJECT_REAL_REASON("reject_real_reason", "真实拒绝原因"),
CERTIFY_FILE("certify_file", "上传的证明文件或凭证"),
BEFORE_INVESTMENT_MANAGER_USERNAME("before_investment_manager_username", "转让前的招商经理姓名"),
BEFORE_INVESTMENT_MANAGER_MOBILE("before_investment_manager_mobile", "转让前的招商经理手机号"),
AFTER_INVESTMENT_MANAGER_USERNAME("after_investment_manager_username", "转让后的招商经理姓名"),
AFTER_INVESTMENT_MANAGER_MOBILE("after_investment_manager_mobile", "转让后的招商经理手机好"),
;
private String code;
private String name;
OperateLogFieldValueEnum(String code, String name) {
this.code = code;
this.name = name;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
}

View File

@@ -0,0 +1,47 @@
package com.cool.store.enums;
import java.util.Arrays;
import java.util.List;
import static com.cool.store.enums.OperateLogFieldValueEnum.*;
/**
* @author zhangchenbiao
* @FileName: OperateTypeEnum
* @Description:
* @date 2023-06-27 10:41
*/
public enum OperateTypeEnum {
ALLOCATION_INVESTMENT_MANAGER("allocation_investment_manager", "分配招商经理", Arrays.asList(ALLOCATION_USERNAME, MOBILE, OPERATE_TIME)),
ADD_BLACKLIST("add_blacklist", "加入黑名单", Arrays.asList(OPERATE_USER_NAME, MOBILE, OPERATE_TIME, REASON)),
REMOVE_BLACKLIST("add_blacklist", "移除黑名单", Arrays.asList(OPERATE_USER_NAME, MOBILE, OPERATE_TIME, REASON)),
CLOSE_FOLLOW("close_follow", "结束跟进", Arrays.asList(OPERATE_USER_NAME, MOBILE, OPERATE_TIME, REJECT_PUBLIC_REASON, REJECT_REAL_REASON, CERTIFY_FILE)),
TRANSFER_INVESTMENT_MANAGER("transfer_investment_manager", "转让招商经理", Arrays.asList(OPERATE_USER_NAME, MOBILE, OPERATE_TIME, BEFORE_INVESTMENT_MANAGER_USERNAME, BEFORE_INVESTMENT_MANAGER_MOBILE, AFTER_INVESTMENT_MANAGER_USERNAME, AFTER_INVESTMENT_MANAGER_MOBILE));
;
private String code;
private String name;
private List<OperateLogFieldValueEnum> filedList;
OperateTypeEnum(String code, String name, List<OperateLogFieldValueEnum> filedList) {
this.code = code;
this.name = name;
this.filedList = filedList;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
public List<OperateLogFieldValueEnum> getFiledList() {
return filedList;
}
}

View File

@@ -1,6 +1,8 @@
package com.cool.store.dao;
import com.cool.store.dto.log.LineLogInfo;
import com.cool.store.entity.HyPartnerTaskInfoLogDO;
import com.cool.store.enums.OperateTypeEnum;
import com.cool.store.mapper.HyPartnerTaskInfoLogMapper;
import org.springframework.stereotype.Repository;
@@ -23,8 +25,20 @@ public class HyPartnerTaskInfoLogDAO {
return hyPartnerTaskInfoLogMapper.updateByPrimaryKeySelective(hyPartnerTaskInfoLogDO);
}
public int insertSelective( HyPartnerTaskInfoLogDO record){
public int insertSelective( HyPartnerTaskInfoLogDO record){
return hyPartnerTaskInfoLogMapper.insertSelective(record);
}
/**
* 新增操作日志
* @param lineLogInfo
*/
public void addOperateLog(LineLogInfo lineLogInfo){
if(!LineLogInfo.checkParams(lineLogInfo)){
return;
}
HyPartnerTaskInfoLogDO logInfo = LineLogInfo.convertDO(lineLogInfo);
insertSelective(logInfo);
}
}

View File

@@ -1,129 +1,136 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cool.store.mapper.HyPartnerTaskInfoLogMapper">
<resultMap id="BaseResultMap" type="com.cool.store.entity.HyPartnerTaskInfoLogDO">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="partner_line_id" jdbcType="BIGINT" property="partnerLineId" />
<result column="operate_user_id" jdbcType="VARCHAR" property="operateUserId" />
<result column="operate_username" jdbcType="VARCHAR" property="operateUsername" />
<result column="workflow_stage" jdbcType="VARCHAR" property="workflowStage" />
<result column="workflow_status" jdbcType="VARCHAR" property="workflowStatus" />
<result column="message" jdbcType="VARCHAR" property="message" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="partner_id" jdbcType="VARCHAR" property="partnerId" />
</resultMap>
<resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.cool.store.entity.HyPartnerTaskInfoLogDO">
<result column="field_copy" jdbcType="LONGVARCHAR" property="fieldCopy" />
</resultMap>
<sql id="Base_Column_List">
id, partner_line_id, operate_user_id, operate_username, workflow_stage, workflow_status,
message, create_time, update_time, partner_id
</sql>
<sql id="Blob_Column_List">
field_copy
</sql>
<insert id="insertSelective" keyColumn="id" keyProperty="record.id" useGeneratedKeys="true">
insert into hy_partner_task_info_log
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="record.partnerLineId != null">
partner_line_id,
</if>
<if test="record.operateUserId != null">
operate_user_id,
</if>
<if test="record.operateUsername != null">
operate_username,
</if>
<if test="record.workflowStage != null">
workflow_stage,
</if>
<if test="record.workflowStatus != null">
workflow_status,
</if>
<if test="record.message != null">
message,
</if>
<if test="record.createTime != null">
create_time,
</if>
<if test="record.updateTime != null">
update_time,
</if>
<if test="record.partnerId != null">
partner_id,
</if>
<if test="record.fieldCopy != null">
field_copy,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="record.partnerLineId != null">
#{record.partnerLineId},
</if>
<if test="record.operateUserId != null">
#{record.operateUserId},
</if>
<if test="record.operateUsername != null">
#{record.operateUsername},
</if>
<if test="record.workflowStage != null">
#{record.workflowStage},
</if>
<if test="record.workflowStatus != null">
#{record.workflowStatus},
</if>
<if test="record.message != null">
#{record.message},
</if>
<if test="record.createTime != null">
#{record.createTime},
</if>
<if test="record.updateTime != null">
#{record.updateTime},
</if>
<if test="record.partnerId != null">
#{record.partnerId},
</if>
<if test="record.fieldCopy != null">
#{record.fieldCopy},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective">
update hy_partner_task_info_log
<set>
<if test="record.partnerLineId != null">
partner_line_id = #{record.partnerLineId},
</if>
<if test="record.operateUserId != null">
operate_user_id = #{record.operateUserId},
</if>
<if test="record.operateUsername != null">
operate_username = #{record.operateUsername},
</if>
<if test="record.workflowStage != null">
workflow_stage = #{record.workflowStage},
</if>
<if test="record.workflowStatus != null">
workflow_status = #{record.workflowStatus},
</if>
<if test="record.message != null">
message = #{record.message},
</if>
<if test="record.createTime != null">
create_time = #{record.createTime},
</if>
<if test="record.updateTime != null">
update_time = #{record.updateTime},
</if>
<if test="record.partnerId != null">
partner_id = #{record.partnerId},
</if>
<if test="record.fieldCopy != null">
field_copy = #{record.fieldCopy},
</if>
</set>
where id = #{record.id}
</update>
<resultMap id="BaseResultMap" type="com.cool.store.entity.HyPartnerTaskInfoLogDO">
<id column="id" jdbcType="BIGINT" property="id"/>
<result column="partner_line_id" jdbcType="BIGINT" property="partnerLineId"/>
<result column="operate_user_id" jdbcType="VARCHAR" property="operateUserId"/>
<result column="operate_username" jdbcType="VARCHAR" property="operateUsername"/>
<result column="operate_type" jdbcType="VARCHAR" property="operateType"/>
<result column="workflow_stage" jdbcType="VARCHAR" property="workflowStage"/>
<result column="workflow_status" jdbcType="VARCHAR" property="workflowStatus"/>
<result column="message" jdbcType="VARCHAR" property="message"/>
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
<result column="partner_id" jdbcType="VARCHAR" property="partnerId"/>
</resultMap>
<resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.cool.store.entity.HyPartnerTaskInfoLogDO">
<result column="field_copy" jdbcType="LONGVARCHAR" property="fieldCopy"/>
</resultMap>
<sql id="Base_Column_List">
id, partner_line_id, operate_user_id, operate_username, workflow_stage, workflow_status,
message, create_time, update_time, partner_id
</sql>
<sql id="Blob_Column_List">
field_copy
</sql>
<insert id="insertSelective" keyColumn="id" keyProperty="record.id" useGeneratedKeys="true">
insert into hy_partner_task_info_log
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="record.partnerLineId != null">
partner_line_id,
</if>
<if test="record.operateUserId != null">
operate_user_id,
</if>
<if test="record.operateUsername != null">
operate_username,
</if>
<if test="record.operateType != null">
operate_type,
</if>
<if test="record.workflowStage != null">
workflow_stage,
</if>
<if test="record.workflowStatus != null">
workflow_status,
</if>
<if test="record.message != null">
message,
</if>
<if test="record.createTime != null">
create_time,
</if>
<if test="record.updateTime != null">
update_time,
</if>
<if test="record.partnerId != null">
partner_id,
</if>
<if test="record.fieldCopy != null">
field_copy,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="record.partnerLineId != null">
#{record.partnerLineId},
</if>
<if test="record.operateUserId != null">
#{record.operateUserId},
</if>
<if test="record.operateUsername != null">
#{record.operateUsername},
</if>
<if test="record.operateType != null">
#{record.operateType},
</if>
<if test="record.workflowStage != null">
#{record.workflowStage},
</if>
<if test="record.workflowStatus != null">
#{record.workflowStatus},
</if>
<if test="record.message != null">
#{record.message},
</if>
<if test="record.createTime != null">
#{record.createTime},
</if>
<if test="record.updateTime != null">
#{record.updateTime},
</if>
<if test="record.partnerId != null">
#{record.partnerId},
</if>
<if test="record.fieldCopy != null">
#{record.fieldCopy},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective">
update hy_partner_task_info_log
<set>
<if test="record.partnerLineId != null">
partner_line_id = #{record.partnerLineId},
</if>
<if test="record.operateUserId != null">
operate_user_id = #{record.operateUserId},
</if>
<if test="record.operateUsername != null">
operate_username = #{record.operateUsername},
</if>
<if test="record.workflowStage != null">
workflow_stage = #{record.workflowStage},
</if>
<if test="record.workflowStatus != null">
workflow_status = #{record.workflowStatus},
</if>
<if test="record.message != null">
message = #{record.message},
</if>
<if test="record.createTime != null">
create_time = #{record.createTime},
</if>
<if test="record.updateTime != null">
update_time = #{record.updateTime},
</if>
<if test="record.partnerId != null">
partner_id = #{record.partnerId},
</if>
<if test="record.fieldCopy != null">
field_copy = #{record.fieldCopy},
</if>
</set>
where id = #{record.id}
</update>
</mapper>

View File

@@ -0,0 +1,93 @@
package com.cool.store.dto.log;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils;
import com.cool.store.entity.HyPartnerTaskInfoLogDO;
import com.cool.store.enums.OperateLogFieldValueEnum;
import com.cool.store.enums.OperateTypeEnum;
import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.enums.WorkflowStatusEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import java.util.*;
/**
* @author zhangchenbiao
* @FileName: LineLogInfo
* @Description:
* @date 2023-06-27 13:44
*/
@Slf4j
@Data
public class LineLogInfo<T> {
@ApiModelProperty("hy_partner_user_info.partner_id")
private String partnerId;
@ApiModelProperty("hy_partner_line_info.id")
private Long partnerLineId;
@ApiModelProperty("操作人id")
private String operateUserId;
@ApiModelProperty("操作人姓名")
private String operateUsername;
@ApiModelProperty("操作类型")
private OperateTypeEnum operateType;
@ApiModelProperty("流程阶段:意向申请审核、预约面试时间、加盟资格面试、分配选址开发经理、商圈点位评估、上传店铺租赁信息、完善加盟签约信息、支付加盟费用、签订加盟合同")
private WorkflowStageEnum workflowStage;
@ApiModelProperty("流程子状态")
private WorkflowStatusEnum workflowStatus;
@ApiModelProperty("备注")
private String message;
@ApiModelProperty("数据处理字段")
private T data;
public static boolean checkParams(LineLogInfo params){
if(StringUtils.isAnyBlank(params.getPartnerId(), params.getOperateUserId(), params.getOperateUsername())){
log.info("lineLogInfo string:{}", JSONObject.toJSONString(params));
return false;
}
if(Objects.isNull(params.getOperateType()) || Objects.isNull(params.getWorkflowStage()) || Objects.isNull(params.getWorkflowStatus())){
log.info("lineLogInfo enum is null:{}", JSONObject.toJSONString(params));
return false;
}
return true;
}
public static HyPartnerTaskInfoLogDO convertDO(LineLogInfo params){
OperateTypeEnum operateType = params.getOperateType();
HyPartnerTaskInfoLogDO result = new HyPartnerTaskInfoLogDO();
result.setPartnerId(params.getPartnerId());
result.setPartnerLineId(params.getPartnerLineId());
result.setOperateType(params.getOperateType().getCode());
result.setWorkflowStage(params.getWorkflowStage().getCode());
result.setWorkflowStatus(params.getWorkflowStatus().getCode());
result.setOperateUserId(params.getOperateUserId());
result.setOperateUsername(params.getOperateUsername());
result.setMessage(params.getMessage());
result.setCreateTime(new Date());
result.setUpdateTime(new Date());
Object data = params.getData();
JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(data));
List<OperateLogFieldValueEnum> filedList = operateType.getFiledList();
List<Map<String, Object>> fieldMapList = new ArrayList<>();
for (OperateLogFieldValueEnum field : filedList) {
Map<String, Object> fieldMap = new HashMap<>();
fieldMap.put("code",field.getCode());
fieldMap.put("name",field.getName());
fieldMap.put("value",jsonObject.get(field.getCode()));
fieldMapList.add(fieldMap);
}
result.setFieldCopy(JSONObject.toJSONString(fieldMapList));
return result;
}
}

View File

@@ -18,6 +18,7 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
@AllArgsConstructor
public class HyPartnerTaskInfoLogDO implements Serializable {
@ApiModelProperty("")
private Long id;
@@ -30,6 +31,9 @@ public class HyPartnerTaskInfoLogDO implements Serializable {
@ApiModelProperty("操作人姓名")
private String operateUsername;
@ApiModelProperty("操作类型 参考代码中OperateTypeEnum")
private String operateType;
@ApiModelProperty("流程阶段:意向申请审核、预约面试时间、加盟资格面试、分配选址开发经理、商圈点位评估、上传店铺租赁信息、完善加盟签约信息、支付加盟费用、签订加盟合同")
private String workflowStage;