feat:[REQ-3282] 暂时提交,编写单位相关代码

This commit is contained in:
liuyang 2024-12-12 18:47:26 +08:00
parent 5b65867e7f
commit 5737b3cd47
7 changed files with 80 additions and 8 deletions

View File

@ -27,13 +27,14 @@ public class UnitController implements OrgUnitApi {
@Override
public ApiResult<CreateUnitResp> create(CreateUnitReq req) {
// return unitService.create(BeanUtil.toBean(req, CreateUnitReq.class));
return null;
cn.axzo.orgmanax.server.unit.service.dto.CreateUnitResp resp = unitService.create(BeanUtil.copyProperties(req, cn.axzo.orgmanax.server.unit.service.dto.CreateUnitReq.class));
return ApiResult.success(BeanUtil.copyProperties(resp, CreateUnitResp.class));
}
@Override
public ApiResult<UpdateUnitResp> update(UpdateUnitReq req) {
return null;
cn.axzo.orgmanax.server.unit.service.dto.UpdateUnitResp resp = unitService.update(BeanUtil.copyProperties(req, cn.axzo.orgmanax.server.unit.service.dto.UpdateUnitReq.class));
return ApiResult.success(BeanUtil.copyProperties(resp, UpdateUnitResp.class));
}
@Override

View File

@ -1,14 +1,17 @@
package cn.axzo.orgmanax.server.unit.foundation.impl;
import cn.axzo.foundation.event.support.Event;
import cn.axzo.foundation.event.support.producer.EventProducer;
import cn.axzo.orgmanax.infra.dao.unit.entity.OrganizationalUnit;
import cn.axzo.orgmanax.infra.dao.unit.repository.UnitQueryRepository;
import cn.axzo.orgmanax.infra.dao.unit.repository.UnitUpsertRepository;
import cn.axzo.orgmanax.server.node.event.inner.NodeEventType;
import cn.axzo.orgmanax.server.unit.event.inner.payload.UnitUpsertedPayload;
import cn.axzo.orgmanax.server.unit.foundation.UnitFoundationService;
import cn.axzo.orgmanax.server.unit.foundation.dto.UnitCreator;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.StrUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -21,6 +24,7 @@ public class UnitFoundationServiceImpl implements UnitFoundationService {
private final UnitUpsertRepository unitUpsertRepository;
private final UnitQueryRepository unitQueryRepository;
private final EventProducer<Void> eventProducer;
@Override
public OrganizationalUnit create(UnitCreator creator) {
@ -28,15 +32,31 @@ public class UnitFoundationServiceImpl implements UnitFoundationService {
// 1. 重复校验
// 根据单位名称或信用代码查询
UnitQueryRepository.UnitResp unit = unitQueryRepository.one(UnitQueryRepository.OneReq.builder().name(creator.getName()).build());
if (unit != null) {
Assert.isFalse(CharSequenceUtil.equals(creator.getName(), unit.getName()), "创建失败, 单位名称重复");
Assert.isFalse(CharSequenceUtil.equals(creator.getName(), unit.getName()), "创建失败, 单位名称重复");
}
Assert.isFalse(unit != null && CharSequenceUtil.equals(creator.getName(), unit.getName()), "创建失败, 单位名称重复");
unit = unitQueryRepository.one(UnitQueryRepository.OneReq.builder().name(creator.getCertificationLetterUrl()).build());
Assert.isFalse(CharSequenceUtil.equals(creator.getCertificationLetterUrl(), unit.getCertificationLetterUrl()), "创建失败, 单位名称重复");
// todo 1. parentId 是否使用
// 2. 创建单位实体
OrganizationalUnit organizationalUnit = BeanUtil.copyProperties(creator, OrganizationalUnit.class);
unitUpsertRepository.save(organizationalUnit);
// 3. 发送数据变更基础MQ
eventProducer.send(Event.builder()
.eventCode(NodeEventType.NODE_UPSERTED.getEventCode())
.operatorId("")
.operatorType(getClass().getSimpleName())
.targetType("organizational_unit_id")
.targetId(organizationalUnit.getId() + "")
.shardingKey(organizationalUnit.getId() + "")
.data(UnitUpsertedPayload.builder()
.newValue(organizationalUnit)
.oldValue(null)
.ext(organizationalUnit.getExtra())
.build())
.build());
return organizationalUnit;
}
}

View File

@ -2,6 +2,8 @@ package cn.axzo.orgmanax.server.unit.service;
import cn.axzo.orgmanax.server.unit.service.dto.CreateUnitReq;
import cn.axzo.orgmanax.server.unit.service.dto.CreateUnitResp;
import cn.axzo.orgmanax.server.unit.service.dto.UpdateUnitReq;
import cn.axzo.orgmanax.server.unit.service.dto.UpdateUnitResp;
public interface UnitService {
@ -11,4 +13,11 @@ public interface UnitService {
* @return
*/
CreateUnitResp create(CreateUnitReq req);
/**
* 更新单位
* @param updateUnitReq
* @return
*/
UpdateUnitResp update(UpdateUnitReq updateUnitReq);
}

View File

@ -1,8 +1,14 @@
package cn.axzo.orgmanax.server.unit.service.dto;
import com.alibaba.fastjson.JSONObject;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Data
public class CreateUnitResp {

View File

@ -0,0 +1,7 @@
package cn.axzo.orgmanax.server.unit.service.dto;
import lombok.Data;
@Data
public class UpdateUnitReq {
}

View File

@ -0,0 +1,7 @@
package cn.axzo.orgmanax.server.unit.service.dto;
import lombok.Data;
@Data
public class UpdateUnitResp {
}

View File

@ -1,8 +1,14 @@
package cn.axzo.orgmanax.server.unit.service.impl;
import cn.axzo.orgmanax.infra.dao.unit.entity.OrganizationalUnit;
import cn.axzo.orgmanax.server.unit.foundation.UnitFoundationService;
import cn.axzo.orgmanax.server.unit.foundation.dto.UnitCreator;
import cn.axzo.orgmanax.server.unit.service.UnitService;
import cn.axzo.orgmanax.server.unit.service.dto.CreateUnitReq;
import cn.axzo.orgmanax.server.unit.service.dto.CreateUnitResp;
import cn.axzo.orgmanax.server.unit.service.dto.UpdateUnitReq;
import cn.axzo.orgmanax.server.unit.service.dto.UpdateUnitResp;
import cn.hutool.core.bean.BeanUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -11,8 +17,24 @@ import org.springframework.stereotype.Service;
@RequiredArgsConstructor
@Service
public class UnitServiceImpl implements UnitService {
private final UnitFoundationService unitFoundationService;
@Override
public CreateUnitResp create(CreateUnitReq req) {
// 构建单位创建者
UnitCreator unitCreator = BeanUtil.copyProperties(req, UnitCreator.class);
// 创建单位
OrganizationalUnit organizationalUnit = unitFoundationService.create(unitCreator);
// 返回
return CreateUnitResp.builder().id(organizationalUnit.getId()).build();
}
@Override
public UpdateUnitResp update(UpdateUnitReq updateUnitReq) {
return null;
}
}