Merge branch 'feature/REQ-3488-zhh' into 'feature/REQ-3488'
Feature/req 3488 zhh See merge request universal/infrastructure/backend/orgmanax!137
This commit is contained in:
commit
6d9f60405b
@ -0,0 +1,23 @@
|
|||||||
|
package cn.axzo.orgmanax.api.project.team.feign;
|
||||||
|
|
||||||
|
import cn.axzo.foundation.result.ApiResult;
|
||||||
|
import cn.axzo.orgmanax.dto.project.team.req.ProjectTeamLogSaveReq;
|
||||||
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author : zhanghonghao@axzo.cn
|
||||||
|
* @since : 2025/1/8
|
||||||
|
*/
|
||||||
|
@FeignClient(
|
||||||
|
value = "orgmanax",
|
||||||
|
url = "${axzo.service.orgmanax:http://orgmanax:8080}")
|
||||||
|
public interface OrgProjectTeamLogApi {
|
||||||
|
/**
|
||||||
|
* 创建项目班组日志
|
||||||
|
*/
|
||||||
|
@PostMapping("/api/project/team-log/create")
|
||||||
|
ApiResult<Long> create(@RequestBody ProjectTeamLogSaveReq req);
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,84 @@
|
|||||||
|
package cn.axzo.orgmanax.dto.project.team.req;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author : zhanghonghao@axzo.cn
|
||||||
|
* @since : 2025/1/8
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class ProjectTeamLogSaveReq {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目内班组id
|
||||||
|
*/
|
||||||
|
private Long projectTeamId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 邀请/申请id
|
||||||
|
*/
|
||||||
|
private Long inviteId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 变更前状态
|
||||||
|
*/
|
||||||
|
private Integer preStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前状态
|
||||||
|
*/
|
||||||
|
private Integer nowStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 变更前状态描述
|
||||||
|
*/
|
||||||
|
private String preStatusDesc;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前状态描述
|
||||||
|
*/
|
||||||
|
private String nowStatusDesc;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 变更描述
|
||||||
|
*/
|
||||||
|
private String content;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作人姓名
|
||||||
|
*/
|
||||||
|
private String operatorName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作人身份
|
||||||
|
*/
|
||||||
|
private String operatorIdentity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作事件 JOIN_PROJECT:加入项目 QUIT_PROJECT:退出项目 TEAM_INVITE:邀请班组 TEAM_APPLY:班组申请
|
||||||
|
*/
|
||||||
|
private String actionType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作人手机号
|
||||||
|
*/
|
||||||
|
private String operatorPhone;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作人标签
|
||||||
|
*/
|
||||||
|
private String operatorTag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前事件事件
|
||||||
|
*/
|
||||||
|
private Date eventTime;
|
||||||
|
}
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
package cn.axzo.orgmanax.infra.dao.project.team.dao;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.infra.dao.project.team.entity.OrgProjectTeamLog;
|
||||||
|
import cn.axzo.orgmanax.infra.dao.project.team.mapper.OrgProjectTeamLogMapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author : zhanghonghao@axzo.cn
|
||||||
|
* @since : 2025/1/8
|
||||||
|
*/
|
||||||
|
@Repository
|
||||||
|
public class OrgProjectTeamLogDao extends ServiceImpl<OrgProjectTeamLogMapper, OrgProjectTeamLog> {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,137 @@
|
|||||||
|
package cn.axzo.orgmanax.infra.dao.project.team.entity;
|
||||||
|
|
||||||
|
import cn.axzo.trade.datasecurity.core.annotation.CryptField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 班组变更日志表
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author zhangtianyu
|
||||||
|
* @since 2022-07-12
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@SuperBuilder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
@TableName(value = "org_project_team_log", autoResultMap = true)
|
||||||
|
public class OrgProjectTeamLog implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键id
|
||||||
|
*/
|
||||||
|
@TableId(value = "id", type = IdType.AUTO)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目内班组id
|
||||||
|
*/
|
||||||
|
@TableField("project_team_id")
|
||||||
|
private Long projectTeamId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 邀请/申请id
|
||||||
|
*/
|
||||||
|
@TableField("invite_id")
|
||||||
|
private Long inviteId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 变更前状态
|
||||||
|
*/
|
||||||
|
@TableField("pre_status")
|
||||||
|
private Integer preStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前状态
|
||||||
|
*/
|
||||||
|
@TableField("now_status")
|
||||||
|
private Integer nowStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 变更前状态描述
|
||||||
|
*/
|
||||||
|
@TableField("pre_status_desc")
|
||||||
|
private String preStatusDesc;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前状态描述
|
||||||
|
*/
|
||||||
|
@TableField("now_status_desc")
|
||||||
|
private String nowStatusDesc;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 变更描述
|
||||||
|
*/
|
||||||
|
@TableField("content")
|
||||||
|
private String content;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否删除 0否1是
|
||||||
|
*/
|
||||||
|
@TableField("is_delete")
|
||||||
|
private Long isDelete;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
@TableField("create_at")
|
||||||
|
private Date createAt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新时间
|
||||||
|
*/
|
||||||
|
@TableField("update_at")
|
||||||
|
private Date updateAt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作人姓名
|
||||||
|
*/
|
||||||
|
@TableField("operator_name")
|
||||||
|
private String operatorName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作人身份
|
||||||
|
*/
|
||||||
|
@TableField("operator_identity")
|
||||||
|
private String operatorIdentity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作事件 JOIN_PROJECT:加入项目 QUIT_PROJECT:退出项目 TEAM_INVITE:邀请班组 TEAM_APPLY:班组申请
|
||||||
|
*/
|
||||||
|
@TableField("action_type")
|
||||||
|
private String actionType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作人手机号
|
||||||
|
*/
|
||||||
|
@TableField("operator_phone")
|
||||||
|
@CryptField
|
||||||
|
private String operatorPhone;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作人标签
|
||||||
|
*/
|
||||||
|
@TableField("operator_tag")
|
||||||
|
private String operatorTag;
|
||||||
|
/**
|
||||||
|
* 当前事件事件
|
||||||
|
*/
|
||||||
|
@TableField("event_time")
|
||||||
|
private Date eventTime;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
package cn.axzo.orgmanax.infra.dao.project.team.mapper;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.infra.dao.project.team.entity.OrgProjectTeamLog;
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface OrgProjectTeamLogMapper extends BaseMapper<OrgProjectTeamLog> {
|
||||||
|
}
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
package cn.axzo.orgmanax.infra.dao.project.team.repository;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.infra.dao.project.team.entity.OrgProjectTeamLog;
|
||||||
|
|
||||||
|
public interface OrgProjectTeamLogUpsertRepository {
|
||||||
|
|
||||||
|
Long save(OrgProjectTeamLog orgProjectTeamLog);
|
||||||
|
}
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
package cn.axzo.orgmanax.infra.dao.project.team.repository.impl;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.infra.dao.project.team.dao.OrgProjectTeamLogDao;
|
||||||
|
import cn.axzo.orgmanax.infra.dao.project.team.entity.OrgProjectTeamLog;
|
||||||
|
import cn.axzo.orgmanax.infra.dao.project.team.repository.OrgProjectTeamLogUpsertRepository;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author : zhanghonghao@axzo.cn
|
||||||
|
* @since : 2025/1/8
|
||||||
|
*/
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@Repository
|
||||||
|
public class OrgProjectTeamLogUpsertRepositoryImpl implements OrgProjectTeamLogUpsertRepository {
|
||||||
|
|
||||||
|
private final OrgProjectTeamLogDao orgProjectTeamLogDao;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long save(OrgProjectTeamLog orgProjectTeamLog) {
|
||||||
|
orgProjectTeamLogDao.save(orgProjectTeamLog);
|
||||||
|
return orgProjectTeamLog.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
package cn.axzo.orgmanax.server.project.team.controller;
|
||||||
|
|
||||||
|
import cn.axzo.foundation.result.ApiResult;
|
||||||
|
import cn.axzo.orgmanax.api.project.team.feign.OrgProjectTeamLogApi;
|
||||||
|
import cn.axzo.orgmanax.dto.project.team.req.ProjectTeamLogSaveReq;
|
||||||
|
import cn.axzo.orgmanax.server.project.team.service.ProjectTeamLogService;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author : zhanghonghao@axzo.cn
|
||||||
|
* @since : 2025/1/8
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class OrgProjectTeamLogController implements OrgProjectTeamLogApi {
|
||||||
|
|
||||||
|
private final ProjectTeamLogService projectTeamLogService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ApiResult<Long> create(ProjectTeamLogSaveReq req) {
|
||||||
|
return ApiResult.success(projectTeamLogService.save(req));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
package cn.axzo.orgmanax.server.project.team.foundation;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.dto.project.team.req.ProjectTeamLogSaveReq;
|
||||||
|
|
||||||
|
|
||||||
|
public interface ProjectTeamLogFoundationService {
|
||||||
|
|
||||||
|
Long save(ProjectTeamLogSaveReq req);
|
||||||
|
}
|
||||||
@ -0,0 +1,28 @@
|
|||||||
|
package cn.axzo.orgmanax.server.project.team.foundation.impl;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.infra.dao.project.team.entity.OrgProjectTeamLog;
|
||||||
|
import cn.axzo.orgmanax.infra.dao.project.team.repository.OrgProjectTeamLogUpsertRepository;
|
||||||
|
import cn.axzo.orgmanax.server.project.team.foundation.ProjectTeamLogFoundationService;
|
||||||
|
import cn.axzo.orgmanax.dto.project.team.req.ProjectTeamLogSaveReq;
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author : zhanghonghao@axzo.cn
|
||||||
|
* @since : 2025/1/8
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@Service
|
||||||
|
public class ProjectTeamLogFoundationServiceImpl implements ProjectTeamLogFoundationService {
|
||||||
|
|
||||||
|
private final OrgProjectTeamLogUpsertRepository orgProjectTeamLogUpsertRepository;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long save(ProjectTeamLogSaveReq req) {
|
||||||
|
OrgProjectTeamLog orgProjectTeamLog = BeanUtil.copyProperties(req, OrgProjectTeamLog.class);
|
||||||
|
return orgProjectTeamLogUpsertRepository.save(orgProjectTeamLog);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
package cn.axzo.orgmanax.server.project.team.service;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.dto.project.team.req.ProjectTeamLogSaveReq;
|
||||||
|
|
||||||
|
public interface ProjectTeamLogService {
|
||||||
|
|
||||||
|
Long save(ProjectTeamLogSaveReq req);
|
||||||
|
}
|
||||||
@ -0,0 +1,30 @@
|
|||||||
|
package cn.axzo.orgmanax.server.project.team.service.impl;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.dto.project.team.req.ProjectTeamLogSaveReq;
|
||||||
|
import cn.axzo.orgmanax.server.project.team.service.ProjectTeamLogService;
|
||||||
|
import cn.axzo.orgmanax.server.project.team.service.processor.OrgProjectTeamLogProcessor;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author : zhanghonghao@axzo.cn
|
||||||
|
* @since : 2025/1/8
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@Service
|
||||||
|
public class ProjectTeamLogServiceImpl implements ProjectTeamLogService {
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long save(ProjectTeamLogSaveReq req) {
|
||||||
|
OrgProjectTeamLogProcessor.ProcessContext<ProjectTeamLogSaveReq> processContext = OrgProjectTeamLogProcessor.ProcessContext.<ProjectTeamLogSaveReq>builder()
|
||||||
|
.action(OrgProjectTeamLogProcessor.Action.CREATE)
|
||||||
|
.params(req)
|
||||||
|
.build();
|
||||||
|
OrgProjectTeamLogProcessor projectTeamLogProcessor = processContext.getProcessor();
|
||||||
|
OrgProjectTeamLogProcessor.ProcessResult<Long> processResult = projectTeamLogProcessor.process(processContext);
|
||||||
|
return processResult.getResult();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,47 @@
|
|||||||
|
package cn.axzo.orgmanax.server.project.team.service.processor;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.server.project.team.service.processor.impl.OrgProjectTeamLogSaveProcessor;
|
||||||
|
import cn.hutool.extra.spring.SpringUtil;
|
||||||
|
import lombok.*;
|
||||||
|
import org.springframework.beans.factory.config.BeanPostProcessor;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
public interface OrgProjectTeamLogProcessor<T, R> extends BeanPostProcessor {
|
||||||
|
|
||||||
|
|
||||||
|
@Transactional(rollbackFor = Throwable.class)
|
||||||
|
OrgProjectTeamLogProcessor.ProcessResult<R> process(OrgProjectTeamLogProcessor.ProcessContext<T> context);
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
class ProcessContext<T> {
|
||||||
|
private OrgProjectTeamLogProcessor.Action action;
|
||||||
|
private T params;
|
||||||
|
|
||||||
|
public OrgProjectTeamLogProcessor getProcessor() {
|
||||||
|
SpringUtil.getBean(action.getProcessorClass());
|
||||||
|
return SpringUtil.getBean(action.getProcessorClass());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
class ProcessResult<R> {
|
||||||
|
private R result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
enum Action {
|
||||||
|
CREATE("创建", OrgProjectTeamLogSaveProcessor.class)
|
||||||
|
;
|
||||||
|
|
||||||
|
private String desc;
|
||||||
|
private Class<? extends OrgProjectTeamLogProcessor> processorClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,28 @@
|
|||||||
|
package cn.axzo.orgmanax.server.project.team.service.processor.impl;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.server.project.team.foundation.ProjectTeamLogFoundationService;
|
||||||
|
import cn.axzo.orgmanax.dto.project.team.req.ProjectTeamLogSaveReq;
|
||||||
|
import cn.axzo.orgmanax.server.project.team.service.processor.OrgProjectTeamLogProcessor;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author : zhanghonghao@axzo.cn
|
||||||
|
* @since : 2025/1/8
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Slf4j
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class OrgProjectTeamLogSaveProcessor implements OrgProjectTeamLogProcessor<ProjectTeamLogSaveReq, Long> {
|
||||||
|
|
||||||
|
private final ProjectTeamLogFoundationService foundationService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ProcessResult<Long> process(ProcessContext<ProjectTeamLogSaveReq> context) {
|
||||||
|
ProjectTeamLogSaveReq saveReq = context.getParams();
|
||||||
|
Long id = foundationService.save(saveReq);
|
||||||
|
return OrgProjectTeamLogSaveProcessor.ProcessResult.<Long>builder().result(id).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user