规范maven,添加创建部门示例
This commit is contained in:
parent
19c1754f93
commit
19228b0412
@ -2,9 +2,9 @@
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>cn.axzo.infra</groupId>
|
||||
<artifactId>axzo-parent</artifactId>
|
||||
<version>2.4.13.4</version>
|
||||
<groupId>cn.axzo.orgmanax</groupId>
|
||||
<artifactId>orgmanax</artifactId>
|
||||
<version>${revision}</version>
|
||||
</parent>
|
||||
|
||||
<groupId>cn.axzo.orgmanax</groupId>
|
||||
@ -22,6 +22,15 @@
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-openfeign</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cn.axzo.framework</groupId>
|
||||
<artifactId>axzo-common-domain</artifactId>
|
||||
<version>1.0.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
|
||||
@ -0,0 +1,31 @@
|
||||
package cn.axzo.orgmanax.api.node.feign.basic;
|
||||
|
||||
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||
import cn.axzo.orgmanax.api.node.req.OrganizationalNodeCreateReq;
|
||||
import cn.axzo.orgmanax.api.node.resp.OrganizationalNodeInfoResp;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 部门相关基础API
|
||||
* @author tanjie@axzo.cn
|
||||
* @date 2024/12/2 15:40
|
||||
*/
|
||||
@FeignClient(
|
||||
value = "orgmanax",
|
||||
url = "${axzo.service.orgmanax:http://orgmanax:8080}")
|
||||
public interface OrganizationalNodeBasicApi {
|
||||
|
||||
|
||||
/**
|
||||
* 创建部门标准接口
|
||||
* @param organizationalNodeCreateReq
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/api/org/node/basic/create")
|
||||
ApiResult<OrganizationalNodeInfoResp> create(@RequestBody OrganizationalNodeCreateReq organizationalNodeCreateReq);
|
||||
|
||||
}
|
||||
@ -1,15 +1,18 @@
|
||||
package cn.axzo.orgmanax.api.feign;
|
||||
package cn.axzo.orgmanax.api.node.feign.biz;
|
||||
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
|
||||
/**
|
||||
* business-oriented api related to node
|
||||
* @author tanjie@axzo.cn
|
||||
* @date 2024/12/2 15:40
|
||||
*/
|
||||
@FeignClient(
|
||||
value = "orgmanax",
|
||||
url = "${axzo.service.orgmanax:http://orgmanax:8080}")
|
||||
public interface OrganizationalNodeApi {
|
||||
public interface OrganizationalNodeBizApi {
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,50 @@
|
||||
package cn.axzo.orgmanax.api.node.req;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
|
||||
/**
|
||||
* @author tanjie@axzo.cn
|
||||
* @date 2024/12/2 16:09
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class OrganizationalNodeCreateReq {
|
||||
|
||||
/**
|
||||
* 单位ID
|
||||
*/
|
||||
private Long organizationalUnitId;
|
||||
|
||||
/**
|
||||
* 部门名称
|
||||
*/
|
||||
private String organizationalNodeName;
|
||||
|
||||
/**
|
||||
* 部门类型
|
||||
*/
|
||||
private Integer nodeType;
|
||||
|
||||
/**
|
||||
* 上级部门ID
|
||||
*/
|
||||
private Long parentId;
|
||||
|
||||
/**
|
||||
* 简介
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private Long crateBy;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
package cn.axzo.orgmanax.api.node.req;
|
||||
@ -0,0 +1,58 @@
|
||||
package cn.axzo.orgmanax.api.node.resp;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 部门信息
|
||||
* @author tanjie@axzo.cn
|
||||
* @date 2024/12/2 16:20
|
||||
*/
|
||||
@Data
|
||||
public class OrganizationalNodeInfoResp {
|
||||
/**
|
||||
* 单位id
|
||||
*/
|
||||
private Long organizationalUnitId;
|
||||
/**
|
||||
* 部门名称
|
||||
*/
|
||||
private String organizationalNodeName;
|
||||
|
||||
/**
|
||||
* 节点类型 节点类型 1.部门 2.班组 3.小组
|
||||
*/
|
||||
private Integer nodeType;
|
||||
|
||||
/**
|
||||
* 上级部门ID
|
||||
*/
|
||||
private Long parentId;
|
||||
/**
|
||||
* 顶级部门ID
|
||||
*/
|
||||
private Long topNodeId;
|
||||
/**
|
||||
* 层级信息
|
||||
*/
|
||||
private String path;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
private Integer status;
|
||||
/**
|
||||
* 扩展信息
|
||||
*/
|
||||
private String extra;
|
||||
|
||||
/**
|
||||
* 创建人。自然人ID
|
||||
*/
|
||||
private Long createBy;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createAt;
|
||||
}
|
||||
@ -1 +0,0 @@
|
||||
package cn.axzo.orgmanax.api.req;
|
||||
@ -1 +0,0 @@
|
||||
package cn.axzo.orgmanax.api.resp;
|
||||
@ -1,4 +1,4 @@
|
||||
package cn.axzo.orgmanax.api.feign;
|
||||
package cn.axzo.orgmanax.api.unit.feign.basic;
|
||||
|
||||
|
||||
|
||||
@ -11,7 +11,7 @@ import org.springframework.cloud.openfeign.FeignClient;
|
||||
@FeignClient(
|
||||
value = "orgmanax",
|
||||
url = "${axzo.service.orgmanax:http://orgmanax:8080}")
|
||||
public interface OrganizationalUnitApi {
|
||||
public interface OrganizationalUnitBasicApi {
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,18 @@
|
||||
package cn.axzo.orgmanax.api.unit.feign.biz;
|
||||
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
|
||||
/**
|
||||
* business-oriented api related to unit
|
||||
* @author tanjie@axzo.cn
|
||||
* @date 2024/12/2 15:40
|
||||
*/
|
||||
@FeignClient(
|
||||
value = "orgmanax",
|
||||
url = "${axzo.service.orgmanax:http://orgmanax:8080}")
|
||||
public interface OrganizationalUnitBizApi {
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -17,4 +17,10 @@
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>cn.hutool</groupId>
|
||||
<artifactId>hutool-all</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
@ -0,0 +1,80 @@
|
||||
package cn.axzo.orgmanax.domain.node.entity;
|
||||
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 领域对象
|
||||
* @author tanjie@axzo.cn
|
||||
* @date 2024/12/2 17:08
|
||||
*/
|
||||
@Data
|
||||
public class OrganizationalNode {
|
||||
|
||||
|
||||
private Long id;
|
||||
/**
|
||||
* 单位id
|
||||
*/
|
||||
private Long organizationalUnitId;
|
||||
/**
|
||||
* 部门名称
|
||||
*/
|
||||
private String organizationalNodeName;
|
||||
|
||||
/**
|
||||
* 节点类型 节点类型 1.部门 2.班组 3.小组
|
||||
*/
|
||||
private Integer nodeType;
|
||||
|
||||
/**
|
||||
* 上级部门ID
|
||||
*/
|
||||
private Long parentId;
|
||||
/**
|
||||
* 顶级部门ID
|
||||
*/
|
||||
private Long topNodeId;
|
||||
/**
|
||||
* 层级信息
|
||||
*/
|
||||
private String path;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
private Integer status;
|
||||
/**
|
||||
* 扩展信息
|
||||
*/
|
||||
private String extra;
|
||||
|
||||
/**
|
||||
* 创建人。自然人ID
|
||||
*/
|
||||
private Long createBy;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createAt;
|
||||
|
||||
/**
|
||||
* 计算path、topNodeId等信息
|
||||
*
|
||||
* @param parentNode 父节点
|
||||
*/
|
||||
public void calcPath(OrganizationalNode parentNode) {
|
||||
if (Objects.equals(this.getParentId(), 0L)) {
|
||||
this.topNodeId = id;
|
||||
this.path = id + ",";
|
||||
return;
|
||||
}
|
||||
|
||||
Assert.notNull(parentNode, "重置路径时,父节点不能为空");
|
||||
this.topNodeId = parentNode.getTopNodeId();
|
||||
this.path = parentNode.path + id + ",";
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
package cn.axzo.orgmanax.domain.node.gateway;
|
||||
|
||||
import cn.axzo.orgmanax.domain.node.entity.OrganizationalNode;
|
||||
|
||||
/**
|
||||
* @author tanjie@axzo.cn
|
||||
* @date 2024/12/2 18:21
|
||||
*/
|
||||
public interface NodeUpsertGateway {
|
||||
|
||||
OrganizationalNode create(OrganizationalNode node);
|
||||
|
||||
OrganizationalNode update(OrganizationalNode node);
|
||||
}
|
||||
@ -22,22 +22,22 @@
|
||||
<artifactId>orgmanax-domain</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<!-- rocket相关的包 -->
|
||||
<dependency>
|
||||
<groupId>org.apache.rocketmq</groupId>
|
||||
<artifactId>rocketmq-spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
<!-- rocket相关的包 -->
|
||||
<!-- rocket相关的包 -->
|
||||
<dependency>
|
||||
<groupId>org.apache.rocketmq</groupId>
|
||||
<artifactId>rocketmq-spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
<!-- rocket相关的包 -->
|
||||
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>mybatis-plus-boot-starter</artifactId>
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>mybatis-plus-boot-starter</artifactId>
|
||||
|
||||
</dependency>
|
||||
</dependency>
|
||||
<!-- TODO 根据项目需要, 使用不同的组件-->
|
||||
|
||||
<!---->
|
||||
@ -64,10 +64,23 @@
|
||||
<artifactId>unittest-support-lib</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.logstash.logback</groupId>
|
||||
<artifactId>logstash-logback-encoder</artifactId>
|
||||
<version>6.6</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.logstash.logback</groupId>
|
||||
<artifactId>logstash-logback-encoder</artifactId>
|
||||
<version>6.6</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mapstruct</groupId>
|
||||
<artifactId>mapstruct</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mapstruct</groupId>
|
||||
<artifactId>mapstruct-jdk8</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mapstruct</groupId>
|
||||
<artifactId>mapstruct-processor</artifactId>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
</project>
|
||||
@ -14,7 +14,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
|
||||
|
||||
@Slf4j
|
||||
@EnableTransactionManagement
|
||||
@MapperScan("cn.axzo.**.mapper")
|
||||
@MapperScan("cn.axzo.orgmanax.**.mapper")
|
||||
public class MybatisPlusConfig {
|
||||
@Bean
|
||||
public MybatisPlusInterceptor mybatisPlusInterceptor() {
|
||||
|
||||
@ -18,7 +18,7 @@ import org.springframework.stereotype.Component;
|
||||
*/
|
||||
@Slf4j
|
||||
public class RocketMQEventConfig {
|
||||
public static final String DEFAULT_MODULE = "archetype-server";
|
||||
public static final String DEFAULT_MODULE = "orgmanax-server";
|
||||
|
||||
@Value("topic_${spring.application.name}_${spring.profiles.active}")
|
||||
private String currentTopic;
|
||||
|
||||
@ -0,0 +1,20 @@
|
||||
package cn.axzo.orgmanax.infra.dao.node.convert;
|
||||
|
||||
import cn.axzo.orgmanax.domain.node.entity.OrganizationalNode;
|
||||
import cn.axzo.orgmanax.infra.dao.node.entity.OrganizationalNodeDo;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
/**
|
||||
* @author tanjie@axzo.cn
|
||||
* @date 2024/12/2 18:13
|
||||
*/
|
||||
@Mapper
|
||||
public interface NodeInfraConvert {
|
||||
|
||||
NodeInfraConvert INSTANCE = Mappers.getMapper(NodeInfraConvert.class);
|
||||
|
||||
OrganizationalNode toDomain(OrganizationalNodeDo doo);
|
||||
|
||||
OrganizationalNodeDo toEntity(OrganizationalNode doo);
|
||||
}
|
||||
@ -0,0 +1,21 @@
|
||||
package cn.axzo.orgmanax.infra.dao.node.dao;
|
||||
|
||||
import cn.axzo.orgmanax.domain.node.entity.OrganizationalNode;
|
||||
import cn.axzo.orgmanax.infra.dao.node.convert.NodeInfraConvert;
|
||||
import cn.axzo.orgmanax.infra.dao.node.entity.OrganizationalNodeDo;
|
||||
import cn.axzo.orgmanax.infra.dao.node.mapper.OrganizationalNodeMapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/**
|
||||
* @author tanjie@axzo.cn
|
||||
* @date 2024/12/2 18:10
|
||||
*/
|
||||
@Repository
|
||||
public class NodeDao extends ServiceImpl<OrganizationalNodeMapper, OrganizationalNodeDo> {
|
||||
|
||||
public OrganizationalNode findById(Long id) {
|
||||
return NodeInfraConvert.INSTANCE.toDomain(getById(id));
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,37 @@
|
||||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by FernFlower decompiler)
|
||||
//
|
||||
|
||||
package cn.axzo.orgmanax.infra.dao.node.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.extension.activerecord.Model;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NonNull;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
public abstract class BaseEntity<T extends Model<T>> extends Model<T> implements Serializable {
|
||||
@TableId(
|
||||
type = IdType.AUTO
|
||||
)
|
||||
protected Long id;
|
||||
@TableField(
|
||||
fill = FieldFill.INSERT
|
||||
)
|
||||
protected Date createAt;
|
||||
@TableField(
|
||||
fill = FieldFill.UPDATE
|
||||
)
|
||||
protected Date updateAt;
|
||||
@TableField("is_delete")
|
||||
protected Long isDelete = 0L;
|
||||
|
||||
}
|
||||
@ -0,0 +1,127 @@
|
||||
package cn.axzo.orgmanax.infra.dao.node.entity;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
|
||||
import lombok.*;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 组织节点表表实体类
|
||||
*
|
||||
* @author makejava
|
||||
* @since 2022-06-05 10:59:31
|
||||
*/
|
||||
@TableName(value = "organizational_node", autoResultMap = true)
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Accessors(chain = true)
|
||||
public class OrganizationalNodeDo extends BaseEntity<OrganizationalNodeDo> implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -14708237380609631L;
|
||||
|
||||
/**
|
||||
* 上级id,为0时为顶级节点
|
||||
*/
|
||||
@TableField("parent_id")
|
||||
private Long parentId;
|
||||
|
||||
/**
|
||||
* 单位id
|
||||
*/
|
||||
@TableField("organizational_unit_id")
|
||||
private Long organizationalUnitId;
|
||||
|
||||
/**
|
||||
* 节点类型 1.部门 2.班组 3.小组
|
||||
*/
|
||||
@TableField("node_type")
|
||||
private Integer nodeType;
|
||||
|
||||
/**
|
||||
* 节点名称
|
||||
*/
|
||||
@TableField("node_name")
|
||||
private String nodeName;
|
||||
|
||||
/**
|
||||
* 层级路由
|
||||
*/
|
||||
@TableField("path")
|
||||
private String path;
|
||||
|
||||
/**
|
||||
* 扩展字段
|
||||
*/
|
||||
@TableField(value = "extra", typeHandler = FastjsonTypeHandler.class)
|
||||
private JSONObject extra;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
@TableField("sort")
|
||||
private Integer sort;
|
||||
|
||||
/**
|
||||
* 节点描述
|
||||
*/
|
||||
@TableField("remark")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 迁移数据原始id
|
||||
*/
|
||||
@TableField("temp_transfer_id")
|
||||
private Long tempTransferId;
|
||||
|
||||
/**
|
||||
* 顶级节点的nodeId
|
||||
*/
|
||||
@TableField("top_node_id")
|
||||
private Long topNodeId;
|
||||
/**
|
||||
* 节点状态 1-正常 0-停用
|
||||
**/
|
||||
@TableField("node_state")
|
||||
private Integer nodeState;
|
||||
|
||||
/**
|
||||
* 节点同步状态 1-正常 0-停用
|
||||
**/
|
||||
@TableField("sync_state")
|
||||
private Integer syncState;
|
||||
|
||||
/**
|
||||
* 节点扩展类型 1-正常 2-隐藏
|
||||
**/
|
||||
@TableField("ext_type")
|
||||
private Integer extType;
|
||||
|
||||
/**
|
||||
* 节点同步ID
|
||||
**/
|
||||
@TableField("sync_data_id")
|
||||
private Long syncDataId;
|
||||
|
||||
/**
|
||||
* 节点信息,json,不同的节点类型,格式不一。如班组节点的解散状态等
|
||||
*/
|
||||
@TableField(value = "profile", typeHandler = FastjsonTypeHandler.class)
|
||||
private JSONObject profile;
|
||||
|
||||
|
||||
/**
|
||||
* 获取主键值
|
||||
*
|
||||
* @return 主键值
|
||||
*/
|
||||
@Override
|
||||
protected Serializable pkVal() {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,11 @@
|
||||
package cn.axzo.orgmanax.infra.dao.node.gateway;
|
||||
|
||||
import cn.axzo.orgmanax.domain.node.entity.OrganizationalNode;
|
||||
|
||||
/**
|
||||
* @author tanjie@axzo.cn
|
||||
* @date 2024/12/2 18:00
|
||||
*/
|
||||
public interface NodeQueryGateway {
|
||||
OrganizationalNode findById(Long id);
|
||||
}
|
||||
@ -0,0 +1,22 @@
|
||||
package cn.axzo.orgmanax.infra.dao.node.gateway.impl;
|
||||
|
||||
import cn.axzo.orgmanax.domain.node.entity.OrganizationalNode;
|
||||
import cn.axzo.orgmanax.infra.dao.node.dao.NodeDao;
|
||||
import cn.axzo.orgmanax.infra.dao.node.gateway.NodeQueryGateway;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author tanjie@axzo.cn
|
||||
* @date 2024/12/2 18:05
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class NodeQueryGatewayImpl implements NodeQueryGateway {
|
||||
|
||||
private final NodeDao nodeDao;
|
||||
@Override
|
||||
public OrganizationalNode findById(Long id) {
|
||||
return nodeDao.findById(id);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,35 @@
|
||||
package cn.axzo.orgmanax.infra.dao.node.gateway.impl;
|
||||
|
||||
import cn.axzo.orgmanax.domain.node.entity.OrganizationalNode;
|
||||
import cn.axzo.orgmanax.domain.node.gateway.NodeUpsertGateway;
|
||||
import cn.axzo.orgmanax.infra.dao.node.convert.NodeInfraConvert;
|
||||
import cn.axzo.orgmanax.infra.dao.node.dao.NodeDao;
|
||||
import cn.axzo.orgmanax.infra.dao.node.entity.OrganizationalNodeDo;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/**
|
||||
* @author tanjie@axzo.cn
|
||||
* @date 2024/12/2 18:22
|
||||
*/
|
||||
|
||||
@Repository
|
||||
@RequiredArgsConstructor
|
||||
public class NodeUpsertGatewayImpl implements NodeUpsertGateway {
|
||||
|
||||
private final NodeDao nodeDao;
|
||||
@Override
|
||||
public OrganizationalNode create(OrganizationalNode node) {
|
||||
OrganizationalNodeDo nodeEntity = NodeInfraConvert.INSTANCE.toEntity(node);
|
||||
nodeDao.save(nodeEntity);
|
||||
node.setId(nodeEntity.getId());
|
||||
return node;
|
||||
}
|
||||
|
||||
@Override
|
||||
public OrganizationalNode update(OrganizationalNode node) {
|
||||
OrganizationalNodeDo nodeEntity = NodeInfraConvert.INSTANCE.toEntity(node);
|
||||
nodeDao.updateById(nodeEntity);
|
||||
return node;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,19 @@
|
||||
package cn.axzo.orgmanax.infra.dao.node.mapper;
|
||||
|
||||
|
||||
import cn.axzo.orgmanax.infra.dao.node.entity.OrganizationalNodeDo;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
|
||||
/**
|
||||
* 组织节点表表数据库访问层
|
||||
*
|
||||
* @author makejava
|
||||
* @since 2022-05-21 18:53:19
|
||||
*/
|
||||
@Mapper
|
||||
public interface OrganizationalNodeMapper extends BaseMapper<OrganizationalNodeDo> {
|
||||
|
||||
}
|
||||
|
||||
@ -18,6 +18,7 @@
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<!--内部依赖-->
|
||||
<dependency>
|
||||
<groupId>cn.axzo.orgmanax</groupId>
|
||||
<artifactId>orgmanax-domain</artifactId>
|
||||
@ -29,7 +30,12 @@
|
||||
<artifactId>orgmanax-infra</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>cn.axzo.orgmanax</groupId>
|
||||
<artifactId>orgmanax-api</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<!---->
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
|
||||
|
||||
@ -6,13 +6,18 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.context.ConfigurableApplicationContext;
|
||||
import org.springframework.core.env.Environment;
|
||||
|
||||
import static cn.axzo.orgmanax.server.OrgmanaxApplication.DEFAULT_DIR;
|
||||
|
||||
/**
|
||||
* @author tanjie@axzo.cn
|
||||
* @date 2024/11/28 15:54
|
||||
*/
|
||||
@SpringBootApplication
|
||||
@SpringBootApplication(scanBasePackages = DEFAULT_DIR)
|
||||
@Slf4j
|
||||
public class OrgmanaxApplication {
|
||||
|
||||
public static final String DEFAULT_DIR = "cn.axzo.orgmanax";
|
||||
|
||||
public static void main(String[] args) {
|
||||
ConfigurableApplicationContext run = SpringApplication.run(OrgmanaxApplication.class, args);
|
||||
Environment env = run.getEnvironment();
|
||||
|
||||
@ -0,0 +1,34 @@
|
||||
package cn.axzo.orgmanax.server.controller.node;
|
||||
|
||||
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||
import cn.axzo.orgmanax.api.node.feign.basic.OrganizationalNodeBasicApi;
|
||||
import cn.axzo.orgmanax.api.node.req.OrganizationalNodeCreateReq;
|
||||
import cn.axzo.orgmanax.api.node.resp.OrganizationalNodeInfoResp;
|
||||
import cn.axzo.orgmanax.server.service.node.NodeBasicService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* @author tanjie@axzo.cn
|
||||
* @date 2024/12/2 16:47
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping
|
||||
@RequiredArgsConstructor
|
||||
public class OrganizationalNodeBasicController implements OrganizationalNodeBasicApi {
|
||||
|
||||
private final NodeBasicService nodeBasicService;
|
||||
|
||||
/**
|
||||
* 创建部门
|
||||
* @param organizationalNodeCreateReq 创建部门参数
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public ApiResult<OrganizationalNodeInfoResp> create(OrganizationalNodeCreateReq organizationalNodeCreateReq) {
|
||||
return ApiResult.ok(nodeBasicService.create(organizationalNodeCreateReq));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,54 @@
|
||||
package cn.axzo.orgmanax.server.service.node;
|
||||
|
||||
import cn.axzo.orgmanax.api.node.req.OrganizationalNodeCreateReq;
|
||||
import cn.axzo.orgmanax.api.node.resp.OrganizationalNodeInfoResp;
|
||||
import cn.axzo.orgmanax.domain.node.entity.OrganizationalNode;
|
||||
import cn.axzo.orgmanax.domain.node.gateway.NodeUpsertGateway;
|
||||
import cn.axzo.orgmanax.infra.dao.node.gateway.NodeQueryGateway;
|
||||
import cn.axzo.orgmanax.server.service.node.convert.NodeConvert;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* @author tanjie@axzo.cn
|
||||
* @date 2024/12/2 16:55
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class NodeBasicService {
|
||||
|
||||
private final NodeQueryGateway nodeQueryGateway;
|
||||
private final NodeUpsertGateway nodeUpsertGateway;
|
||||
|
||||
|
||||
/**
|
||||
* 创建部门
|
||||
*
|
||||
* @param organizationalNodeCreateReq 创建部门参数
|
||||
* @return
|
||||
*/
|
||||
@Transactional
|
||||
public OrganizationalNodeInfoResp create(OrganizationalNodeCreateReq organizationalNodeCreateReq) {
|
||||
OrganizationalNode node = NodeConvert.INSTANCE.toNode(organizationalNodeCreateReq);
|
||||
// 业务校验
|
||||
|
||||
// 持久化
|
||||
nodeUpsertGateway.create(node);
|
||||
|
||||
// 获取上级节点,为了重新计算path、topNodeId等数据
|
||||
OrganizationalNode parentNode = nodeQueryGateway.findById(node.getParentId());
|
||||
|
||||
// 重新计算path、topNodeId等数据。 未来也可以添加workspaceId等信息
|
||||
node.calcPath(parentNode);
|
||||
|
||||
//更新数据
|
||||
nodeUpsertGateway.update(node);
|
||||
|
||||
// 发送消息
|
||||
|
||||
|
||||
// 返回结果
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,18 @@
|
||||
package cn.axzo.orgmanax.server.service.node.convert;
|
||||
|
||||
import cn.axzo.orgmanax.api.node.req.OrganizationalNodeCreateReq;
|
||||
import cn.axzo.orgmanax.domain.node.entity.OrganizationalNode;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
/**
|
||||
* @author tanjie@axzo.cn
|
||||
* @date 2024/12/2 17:26
|
||||
*/
|
||||
@Mapper
|
||||
public interface NodeConvert {
|
||||
NodeConvert INSTANCE = Mappers.getMapper(NodeConvert.class);
|
||||
|
||||
OrganizationalNode toNode(OrganizationalNodeCreateReq req);
|
||||
|
||||
}
|
||||
25
pom.xml
25
pom.xml
@ -13,16 +13,33 @@
|
||||
<maven.compiler.source>8</maven.compiler.source>
|
||||
<maven.compiler.target>8</maven.compiler.target>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<revision>2.0.0-SNAPSHOT</revision>
|
||||
<!-- 2nd dependencies -->
|
||||
<foundation-support-lib>2.0.0-SNAPSHOT</foundation-support-lib>
|
||||
<spring-cloud-starter-alibaba-nacos.version>2021.1</spring-cloud-starter-alibaba-nacos.version>
|
||||
<spring-cloud-starter-bootstrap.version>3.0.6</spring-cloud-starter-bootstrap.version>
|
||||
<mybatis-plus.version>3.5.6</mybatis-plus.version>
|
||||
<rocket-mq.version>2.2.3</rocket-mq.version>
|
||||
<revision>2.0.0-SNAPSHOT</revision>
|
||||
<axzo-bom.version>2.0.0-SNAPSHOT</axzo-bom.version>
|
||||
<axzo-dependencies.version>2.0.0-SNAPSHOT</axzo-dependencies.version>
|
||||
</properties>
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<!-- 导入axzo通用api依赖 -->
|
||||
<dependency>
|
||||
<groupId>cn.axzo.infra</groupId>
|
||||
<artifactId>axzo-bom</artifactId>
|
||||
<version>${axzo-bom.version}</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cn.axzo.infra</groupId>
|
||||
<artifactId>axzo-dependencies</artifactId>
|
||||
<version>${axzo-dependencies.version}</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
|
||||
@ -48,11 +65,7 @@
|
||||
<artifactId>event-support-lib</artifactId>
|
||||
<version>${foundation-support-lib}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cn.axzo.foundation</groupId>
|
||||
<artifactId>redis-support-lib</artifactId>
|
||||
<version>${foundation-support-lib}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>cn.axzo.foundation</groupId>
|
||||
<artifactId>unittest-support-lib</artifactId>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user