feat(REQ-3282): 添加单位联系人api
This commit is contained in:
parent
ef9a061d41
commit
de35a23047
@ -0,0 +1,23 @@
|
||||
package cn.axzo.orgmanax.api.unit.feign;
|
||||
|
||||
import cn.axzo.foundation.result.ApiResult;
|
||||
import cn.axzo.orgmanax.api.unit.resp.OrgUnitContactResp;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 单位联系人API
|
||||
*/
|
||||
@FeignClient(
|
||||
value = "orgmanax",
|
||||
url = "${axzo.service.orgmanax:http://orgmanax:8080}")
|
||||
public interface OrgUnitContactApi {
|
||||
|
||||
/**
|
||||
* 通过单位id获取单位联系人列表
|
||||
*/
|
||||
@PostMapping("/api/org/unit/contact/list")
|
||||
ApiResult<List<OrgUnitContactResp>> list(List<Long> ouIds);
|
||||
}
|
||||
@ -0,0 +1,53 @@
|
||||
package cn.axzo.orgmanax.api.unit.resp;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
@NoArgsConstructor
|
||||
@SuperBuilder
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
public class OrgUnitContactResp implements Serializable {
|
||||
|
||||
/**
|
||||
* 联系人id
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 单位id
|
||||
*/
|
||||
private Long organizationalUnitId;
|
||||
|
||||
/**
|
||||
* 联系人姓名
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 联系人手机号码
|
||||
*/
|
||||
private String phone;
|
||||
|
||||
/**
|
||||
* 联系人手机号码(加密)
|
||||
*/
|
||||
private String phoneEncode;
|
||||
|
||||
/**
|
||||
* 联系人职务
|
||||
*/
|
||||
private String position;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String memo;
|
||||
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package cn.axzo.orgmanax.infra.dao.unit.dao;
|
||||
|
||||
import cn.axzo.orgmanax.infra.dao.unit.entity.OrganizationalContact;
|
||||
import cn.axzo.orgmanax.infra.dao.unit.mapper.OrganizationalContactMapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/**
|
||||
* @author : zhanghonghao@axzo.cn
|
||||
* @since : 2024/12/18
|
||||
*/
|
||||
@Repository
|
||||
public class UnitContactDao extends ServiceImpl<OrganizationalContactMapper, OrganizationalContact> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,84 @@
|
||||
package cn.axzo.orgmanax.infra.dao.unit.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.*;
|
||||
import lombok.experimental.Accessors;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 单位联系人表表实体类
|
||||
*
|
||||
* @author makejava
|
||||
* @since 2022-06-05 10:59:29
|
||||
*/
|
||||
@TableName(value = "organizational_contact", autoResultMap = true)
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@SuperBuilder
|
||||
@ToString(callSuper = true)
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class OrganizationalContact implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 972205950455439772L;
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@TableId(
|
||||
type = IdType.AUTO
|
||||
)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 单位id
|
||||
*/
|
||||
private Long organizationalUnitId;
|
||||
|
||||
/**
|
||||
* 联系人姓名
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 联系人手机号
|
||||
*/
|
||||
private String phone;
|
||||
|
||||
/**
|
||||
* 联系人职位
|
||||
*/
|
||||
private String position;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String memo;
|
||||
|
||||
/**
|
||||
* 创建人 todo 后续写入
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建人 todo 后续写入
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updateAt;
|
||||
}
|
||||
|
||||
@ -0,0 +1,10 @@
|
||||
package cn.axzo.orgmanax.infra.dao.unit.mapper;
|
||||
|
||||
import cn.axzo.orgmanax.infra.dao.unit.entity.OrganizationalContact;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface OrganizationalContactMapper extends BaseMapper<OrganizationalContact> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,67 @@
|
||||
package cn.axzo.orgmanax.infra.dao.unit.repository;
|
||||
|
||||
import cn.axzo.foundation.dao.support.wrapper.CriteriaField;
|
||||
import cn.axzo.foundation.dao.support.wrapper.Operator;
|
||||
import cn.axzo.foundation.page.IPageReq;
|
||||
import cn.axzo.foundation.page.PageResp;
|
||||
import cn.axzo.orgmanax.infra.dao.unit.entity.OrganizationalContact;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public interface UnitContactQueryRepository {
|
||||
|
||||
PageResp<UnitContactQueryRepository.UnitContactResp> page(UnitContactQueryRepository.ListReq paramReq);
|
||||
|
||||
default List<UnitContactQueryRepository.UnitContactResp> list(UnitContactQueryRepository.ListReq req) {
|
||||
UnitContactQueryRepository.PageReq pageReq = BeanUtil.toBean(req, UnitContactQueryRepository.PageReq.class);
|
||||
pageReq.setPage(1);
|
||||
pageReq.setPageSize(1000);
|
||||
return page(pageReq).getData();
|
||||
}
|
||||
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Data
|
||||
@SuperBuilder
|
||||
class ListReq implements IPageReq {
|
||||
@CriteriaField
|
||||
private Long id;
|
||||
@CriteriaField(field = "id", operator = Operator.IN)
|
||||
private Set<Long> ids;
|
||||
@CriteriaField
|
||||
private Long organizationalUnitId;
|
||||
@CriteriaField(field = "organizationalUnitId", operator = Operator.IN)
|
||||
private Set<Long> organizationalUnitIds;
|
||||
}
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Data
|
||||
@SuperBuilder
|
||||
class PageReq extends UnitContactQueryRepository.ListReq implements IPageReq {
|
||||
@CriteriaField(ignore = true)
|
||||
Integer page;
|
||||
@CriteriaField(ignore = true)
|
||||
Integer pageSize;
|
||||
@CriteriaField(ignore = true)
|
||||
List<String> sort;
|
||||
}
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Data
|
||||
@SuperBuilder
|
||||
class UnitContactResp extends OrganizationalContact {
|
||||
// 按需扩展字段,占个位。避免报错
|
||||
private String todo;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,35 @@
|
||||
package cn.axzo.orgmanax.infra.dao.unit.repository.impl;
|
||||
|
||||
import cn.axzo.foundation.dao.support.converter.PageConverter;
|
||||
import cn.axzo.foundation.dao.support.mysql.QueryWrapperHelper;
|
||||
import cn.axzo.foundation.page.PageResp;
|
||||
import cn.axzo.orgmanax.infra.dao.unit.dao.UnitContactDao;
|
||||
import cn.axzo.orgmanax.infra.dao.unit.entity.OrganizationalContact;
|
||||
import cn.axzo.orgmanax.infra.dao.unit.repository.UnitContactQueryRepository;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author : zhanghonghao@axzo.cn
|
||||
* @since : 2024/12/18
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class UnitContactQueryRepositoryImpl implements UnitContactQueryRepository {
|
||||
|
||||
private final UnitContactDao unitContactDao;
|
||||
|
||||
@Override
|
||||
public PageResp<UnitContactResp> page(ListReq req) {
|
||||
IPage<OrganizationalContact> page = PageConverter.toMybatis(req, OrganizationalContact.class);
|
||||
QueryWrapper<OrganizationalContact> wrapper = QueryWrapperHelper.fromBean(req, OrganizationalContact.class);
|
||||
IPage<UnitContactQueryRepository.UnitContactResp> results = unitContactDao.page(page, wrapper)
|
||||
.convert(e -> BeanUtil.toBean(e, UnitContactQueryRepository.UnitContactResp.class));
|
||||
return (PageResp<UnitContactResp>) PageConverter.toResp(results);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,32 @@
|
||||
package cn.axzo.orgmanax.server.unit.controller;
|
||||
|
||||
import cn.axzo.foundation.result.ApiResult;
|
||||
import cn.axzo.orgmanax.api.unit.feign.OrgUnitContactApi;
|
||||
import cn.axzo.orgmanax.api.unit.resp.OrgUnitContactResp;
|
||||
import cn.axzo.orgmanax.server.unit.service.UnitContactService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author : zhanghonghao@axzo.cn
|
||||
* @since : 2024/12/18
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping
|
||||
@RequiredArgsConstructor
|
||||
public class UnitContactController implements OrgUnitContactApi {
|
||||
|
||||
private final UnitContactService unitContactService;
|
||||
|
||||
@Override
|
||||
public ApiResult<List<OrgUnitContactResp>> list(List<Long> ouIds) {
|
||||
Set<Long> ouIdSet = new HashSet<>(ouIds);
|
||||
return ApiResult.success(unitContactService.list(ouIdSet));
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
package cn.axzo.orgmanax.server.unit.service;
|
||||
|
||||
import cn.axzo.orgmanax.api.unit.resp.OrgUnitContactResp;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public interface UnitContactService {
|
||||
|
||||
/**
|
||||
* 查询单位联系人信息
|
||||
*/
|
||||
List<OrgUnitContactResp> list(Set<Long> ouIds);
|
||||
}
|
||||
@ -0,0 +1,40 @@
|
||||
package cn.axzo.orgmanax.server.unit.service.impl;
|
||||
|
||||
import cn.axzo.orgmanax.api.unit.resp.OrgUnitContactResp;
|
||||
import cn.axzo.orgmanax.infra.dao.unit.repository.UnitContactQueryRepository;
|
||||
import cn.axzo.orgmanax.server.unit.service.UnitContactService;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author : zhanghonghao@axzo.cn
|
||||
* @since : 2024/12/18
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class UnitContactServiceImpl implements UnitContactService {
|
||||
|
||||
private final UnitContactQueryRepository unitContactQueryRepository;
|
||||
|
||||
@Override
|
||||
public List<OrgUnitContactResp> list(Set<Long> ouIds) {
|
||||
if (CollUtil.isEmpty(ouIds)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
UnitContactQueryRepository.ListReq req = new UnitContactQueryRepository.ListReq();
|
||||
req.setOrganizationalUnitIds(ouIds);
|
||||
List<UnitContactQueryRepository.UnitContactResp> respList = unitContactQueryRepository.list(req);
|
||||
if (CollUtil.isEmpty(respList)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return BeanUtil.copyToList(respList, OrgUnitContactResp.class);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user