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