From 10b32ade576485c9d80213b0576bd5d89a21cb9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B2=91=E6=BA=AA?= <1015733727@qq.com> Date: Wed, 1 Jul 2026 15:35:35 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20crud=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapter/web/AccountController.java | 64 +++++++++ .../web/QualFilingExpertController.java | 64 +++++++++ .../app/executor/AccountExecutor.java | 106 +++++++++++++++ .../executor/QualFilingExpertExecutor.java | 107 +++++++++++++++ .../safetyeval/client/api/AccountApi.java | 26 ++++ .../client/api/QualFilingExpertApi.java | 26 ++++ .../qinan/safetyeval/client/co/AccountCO.java | 34 +++++ .../client/co/QualFilingExpertCO.java | 37 ++++++ .../safetyeval/client/dto/AccountAddCmd.java | 30 +++++ .../client/dto/AccountModifyCmd.java | 33 +++++ .../client/dto/AccountPageQuery.java | 26 ++++ .../client/dto/QualFilingExpertAddCmd.java | 30 +++++ .../client/dto/QualFilingExpertModifyCmd.java | 33 +++++ .../client/dto/QualFilingExpertPageQuery.java | 26 ++++ .../domain/entity/AccountEntity.java | 36 +++++ .../domain/entity/QualFilingExpertEntity.java | 36 +++++ .../domain/gateway/AccountGateway.java | 25 ++++ .../gateway/QualFilingExpertGateway.java | 25 ++++ .../safetyeval/domain/query/AccountQuery.java | 33 +++++ .../domain/query/QualFilingExpertQuery.java | 33 +++++ .../domain/service/AccountDomainService.java | 64 +++++++++ .../QualFilingExpertDomainService.java | 64 +++++++++ .../infrastructure/dataobject/AccountDO.java | 37 ++++++ .../dataobject/QualFilingExpertDO.java | 37 ++++++ .../gatewayimpl/AccountGatewayImpl.java | 124 ++++++++++++++++++ .../QualFilingExpertGatewayImpl.java | 124 ++++++++++++++++++ .../infrastructure/mapper/AccountMapper.java | 9 ++ .../mapper/QualFilingExpertMapper.java | 9 ++ .../main/resources/mapper/AccountMapper.xml | 32 +++++ .../mapper/QualFilingExpertMapper.xml | 32 +++++ 30 files changed, 1362 insertions(+) create mode 100644 safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/AccountController.java create mode 100644 safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/QualFilingExpertController.java create mode 100644 safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/AccountExecutor.java create mode 100644 safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingExpertExecutor.java create mode 100644 safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/AccountApi.java create mode 100644 safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/QualFilingExpertApi.java create mode 100644 safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/AccountCO.java create mode 100644 safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingExpertCO.java create mode 100644 safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/AccountAddCmd.java create mode 100644 safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/AccountModifyCmd.java create mode 100644 safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/AccountPageQuery.java create mode 100644 safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingExpertAddCmd.java create mode 100644 safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingExpertModifyCmd.java create mode 100644 safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingExpertPageQuery.java create mode 100644 safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/AccountEntity.java create mode 100644 safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/QualFilingExpertEntity.java create mode 100644 safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/AccountGateway.java create mode 100644 safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/QualFilingExpertGateway.java create mode 100644 safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/query/AccountQuery.java create mode 100644 safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/query/QualFilingExpertQuery.java create mode 100644 safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/AccountDomainService.java create mode 100644 safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/QualFilingExpertDomainService.java create mode 100644 safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/AccountDO.java create mode 100644 safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/QualFilingExpertDO.java create mode 100644 safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/AccountGatewayImpl.java create mode 100644 safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingExpertGatewayImpl.java create mode 100644 safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/AccountMapper.java create mode 100644 safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/QualFilingExpertMapper.java create mode 100644 safety-eval-infrastructure/src/main/resources/mapper/AccountMapper.xml create mode 100644 safety-eval-infrastructure/src/main/resources/mapper/QualFilingExpertMapper.xml diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/AccountController.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/AccountController.java new file mode 100644 index 0000000..3d4afd8 --- /dev/null +++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/AccountController.java @@ -0,0 +1,64 @@ +package org.qinan.safetyeval.adapter.web; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.qinan.safetyeval.client.api.AccountApi; +import org.qinan.safetyeval.client.co.AccountCO; +import org.qinan.safetyeval.client.dto.AccountAddCmd; +import org.qinan.safetyeval.client.dto.AccountModifyCmd; +import org.qinan.safetyeval.client.dto.AccountPageQuery; +import org.qinan.safetyeval.client.dto.PageResponse; +import org.qinan.safetyeval.client.dto.SingleResponse; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * 用户适配层(Controller) + * + * @author safety-eval + */ +@Api(tags = "用户管理") +@RestController +@RequestMapping("/account") +public class AccountController { + + @Resource + private AccountApi accountApi; + + @ApiOperation("新增用户") + @PostMapping("/save") + public SingleResponse add(@Validated @RequestBody AccountAddCmd cmd) { + return accountApi.add(cmd); + } + + @ApiOperation("查询用户详情") + @GetMapping("/get") + public SingleResponse get(@RequestParam Long id) { + return accountApi.get(id); + } + + @ApiOperation("修改用户") + @PostMapping("/modify") + public SingleResponse modify(@Validated @RequestBody AccountModifyCmd cmd) { + return accountApi.modify(cmd); + } + + @ApiOperation("删除用户") + @PostMapping("/delete") + public SingleResponse delete(@RequestParam Long id) { + return accountApi.delete(id); + } + + @ApiOperation("分页查询用户") + @GetMapping("/page") + public PageResponse page(@Validated AccountPageQuery query) { + return accountApi.page(query); + } +} diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/QualFilingExpertController.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/QualFilingExpertController.java new file mode 100644 index 0000000..2e567f6 --- /dev/null +++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/QualFilingExpertController.java @@ -0,0 +1,64 @@ +package org.qinan.safetyeval.adapter.web; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.qinan.safetyeval.client.api.QualFilingExpertApi; +import org.qinan.safetyeval.client.co.QualFilingExpertCO; +import org.qinan.safetyeval.client.dto.PageResponse; +import org.qinan.safetyeval.client.dto.QualFilingExpertAddCmd; +import org.qinan.safetyeval.client.dto.QualFilingExpertModifyCmd; +import org.qinan.safetyeval.client.dto.QualFilingExpertPageQuery; +import org.qinan.safetyeval.client.dto.SingleResponse; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * 审核专家适配层(Controller) + * + * @author safety-eval + */ +@Api(tags = "审核专家管理") +@RestController +@RequestMapping("/qual-filing-expert") +public class QualFilingExpertController { + + @Resource + private QualFilingExpertApi qualFilingExpertApi; + + @ApiOperation("新增审核专家") + @PostMapping("/save") + public SingleResponse add(@Validated @RequestBody QualFilingExpertAddCmd cmd) { + return qualFilingExpertApi.add(cmd); + } + + @ApiOperation("查询审核专家详情") + @GetMapping("/get") + public SingleResponse get(@RequestParam Long id) { + return qualFilingExpertApi.get(id); + } + + @ApiOperation("修改审核专家") + @PostMapping("/modify") + public SingleResponse modify(@Validated @RequestBody QualFilingExpertModifyCmd cmd) { + return qualFilingExpertApi.modify(cmd); + } + + @ApiOperation("删除审核专家") + @PostMapping("/delete") + public SingleResponse delete(@RequestParam Long id) { + return qualFilingExpertApi.delete(id); + } + + @ApiOperation("分页查询审核专家") + @GetMapping("/page") + public PageResponse page(@Validated QualFilingExpertPageQuery query) { + return qualFilingExpertApi.page(query); + } +} diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/AccountExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/AccountExecutor.java new file mode 100644 index 0000000..22ba9a7 --- /dev/null +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/AccountExecutor.java @@ -0,0 +1,106 @@ +package org.qinan.safetyeval.app.executor; + +import org.qinan.safetyeval.client.api.AccountApi; +import org.qinan.safetyeval.client.co.AccountCO; +import org.qinan.safetyeval.client.dto.AccountAddCmd; +import org.qinan.safetyeval.client.dto.AccountModifyCmd; +import org.qinan.safetyeval.client.dto.AccountPageQuery; +import org.qinan.safetyeval.client.dto.PageResponse; +import org.qinan.safetyeval.client.dto.SingleResponse; +import org.qinan.safetyeval.domain.entity.AccountEntity; +import org.qinan.safetyeval.domain.query.AccountQuery; +import org.qinan.safetyeval.domain.query.PageResult; +import org.qinan.safetyeval.domain.service.AccountDomainService; +import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; + +/** + * 用户执行器(App层) + * + * @author safety-eval + */ +@Service +public class AccountExecutor implements AccountApi { + + @Lazy + @Autowired(required = false) + private AccountDomainService accountDomainService; + + @Override + public SingleResponse add(AccountAddCmd cmd) { + AccountEntity entity = new AccountEntity(); + entity.setUserName(cmd.getUserName()); + entity.setAccount(cmd.getAccount()); + entity.setPhone(cmd.getPhone()); + entity.setPassword(cmd.getPassword()); + entity.setProfileUrl(cmd.getProfileUrl()); + entity.setType(cmd.getType()); + + AccountEntity result = accountDomainService.add(entity); + return SingleResponse.success(toCO(result)); + } + + @Override + public SingleResponse get(Long id) { + AccountEntity entity = accountDomainService.get(id); + return SingleResponse.success(toCO(entity)); + } + + @Override + public SingleResponse modify(AccountModifyCmd cmd) { + AccountEntity entity = new AccountEntity(); + entity.setId(cmd.getId()); + entity.setUserName(cmd.getUserName()); + entity.setAccount(cmd.getAccount()); + entity.setPhone(cmd.getPhone()); + entity.setPassword(cmd.getPassword()); + entity.setProfileUrl(cmd.getProfileUrl()); + entity.setType(cmd.getType()); + + AccountEntity result = accountDomainService.modify(entity); + return SingleResponse.success(toCO(result)); + } + + @Override + public SingleResponse delete(Long id) { + accountDomainService.delete(id); + return SingleResponse.success(); + } + + @Override + public PageResponse page(AccountPageQuery query) { + AccountQuery domainQuery = new AccountQuery(); + domainQuery.setPageNum(query.getCurrent()); + domainQuery.setPageSize(query.getSize()); + domainQuery.setTenantId(AuthUserContextAdapter.getCurrentTenantId()); + domainQuery.setUserName(query.getUserName()); + domainQuery.setAccount(query.getAccount()); + domainQuery.setPhone(query.getPhone()); + domainQuery.setType(query.getType()); + + PageResult pageResult = accountDomainService.page(domainQuery); + + return PageResponse.of( + pageResult.getRecords().stream() + .map(this::toCO) + .collect(java.util.stream.Collectors.toList()), + pageResult.getTotal()); + } + + private AccountCO toCO(AccountEntity entity) { + if (entity == null) { + return null; + } + AccountCO co = new AccountCO(); + co.setId(entity.getId()); + co.setUserName(entity.getUserName()); + co.setAccount(entity.getAccount()); + co.setPhone(entity.getPhone()); + co.setProfileUrl(entity.getProfileUrl()); + co.setType(entity.getType()); + co.setTenantId(entity.getTenantId()); + return co; + } +} diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingExpertExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingExpertExecutor.java new file mode 100644 index 0000000..3154a86 --- /dev/null +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingExpertExecutor.java @@ -0,0 +1,107 @@ +package org.qinan.safetyeval.app.executor; + +import org.qinan.safetyeval.client.api.QualFilingExpertApi; +import org.qinan.safetyeval.client.co.QualFilingExpertCO; +import org.qinan.safetyeval.client.dto.PageResponse; +import org.qinan.safetyeval.client.dto.QualFilingExpertAddCmd; +import org.qinan.safetyeval.client.dto.QualFilingExpertModifyCmd; +import org.qinan.safetyeval.client.dto.QualFilingExpertPageQuery; +import org.qinan.safetyeval.client.dto.SingleResponse; +import org.qinan.safetyeval.domain.entity.QualFilingExpertEntity; +import org.qinan.safetyeval.domain.query.PageResult; +import org.qinan.safetyeval.domain.query.QualFilingExpertQuery; +import org.qinan.safetyeval.domain.service.QualFilingExpertDomainService; +import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; + +/** + * 审核专家执行器(App层) + * + * @author safety-eval + */ +@Service +public class QualFilingExpertExecutor implements QualFilingExpertApi { + + @Lazy + @Autowired(required = false) + private QualFilingExpertDomainService qualFilingExpertDomainService; + + @Override + public SingleResponse add(QualFilingExpertAddCmd cmd) { + QualFilingExpertEntity entity = new QualFilingExpertEntity(); + entity.setUserName(cmd.getUserName()); + entity.setAccount(cmd.getAccount()); + entity.setGenderCode(cmd.getGenderCode()); + entity.setGenderName(cmd.getGenderName()); + entity.setIdCardNo(cmd.getIdCardNo()); + entity.setCertificate(cmd.getCertificate()); + + QualFilingExpertEntity result = qualFilingExpertDomainService.add(entity); + return SingleResponse.success(toCO(result)); + } + + @Override + public SingleResponse get(Long id) { + QualFilingExpertEntity entity = qualFilingExpertDomainService.get(id); + return SingleResponse.success(toCO(entity)); + } + + @Override + public SingleResponse modify(QualFilingExpertModifyCmd cmd) { + QualFilingExpertEntity entity = new QualFilingExpertEntity(); + entity.setId(cmd.getId()); + entity.setUserName(cmd.getUserName()); + entity.setAccount(cmd.getAccount()); + entity.setGenderCode(cmd.getGenderCode()); + entity.setGenderName(cmd.getGenderName()); + entity.setIdCardNo(cmd.getIdCardNo()); + entity.setCertificate(cmd.getCertificate()); + + QualFilingExpertEntity result = qualFilingExpertDomainService.modify(entity); + return SingleResponse.success(toCO(result)); + } + + @Override + public SingleResponse delete(Long id) { + qualFilingExpertDomainService.delete(id); + return SingleResponse.success(); + } + + @Override + public PageResponse page(QualFilingExpertPageQuery query) { + QualFilingExpertQuery domainQuery = new QualFilingExpertQuery(); + domainQuery.setPageNum(query.getCurrent()); + domainQuery.setPageSize(query.getSize()); + domainQuery.setTenantId(AuthUserContextAdapter.getCurrentTenantId()); + domainQuery.setUserName(query.getUserName()); + domainQuery.setAccount(query.getAccount()); + domainQuery.setGenderCode(query.getGenderCode()); + domainQuery.setIdCardNo(query.getIdCardNo()); + + PageResult pageResult = qualFilingExpertDomainService.page(domainQuery); + + return PageResponse.of( + pageResult.getRecords().stream() + .map(this::toCO) + .collect(java.util.stream.Collectors.toList()), + pageResult.getTotal()); + } + + private QualFilingExpertCO toCO(QualFilingExpertEntity entity) { + if (entity == null) { + return null; + } + QualFilingExpertCO co = new QualFilingExpertCO(); + co.setId(entity.getId()); + co.setUserName(entity.getUserName()); + co.setAccount(entity.getAccount()); + co.setGenderCode(entity.getGenderCode()); + co.setGenderName(entity.getGenderName()); + co.setIdCardNo(entity.getIdCardNo()); + co.setCertificate(entity.getCertificate()); + co.setTenantId(entity.getTenantId()); + return co; + } +} diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/AccountApi.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/AccountApi.java new file mode 100644 index 0000000..702015f --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/AccountApi.java @@ -0,0 +1,26 @@ +package org.qinan.safetyeval.client.api; + +import org.qinan.safetyeval.client.co.AccountCO; +import org.qinan.safetyeval.client.dto.AccountAddCmd; +import org.qinan.safetyeval.client.dto.AccountModifyCmd; +import org.qinan.safetyeval.client.dto.AccountPageQuery; +import org.qinan.safetyeval.client.dto.PageResponse; +import org.qinan.safetyeval.client.dto.SingleResponse; + +/** + * 用户接口定义(Client层) + * + * @author safety-eval + */ +public interface AccountApi { + + SingleResponse add(AccountAddCmd cmd); + + SingleResponse get(Long id); + + SingleResponse modify(AccountModifyCmd cmd); + + SingleResponse delete(Long id); + + PageResponse page(AccountPageQuery query); +} diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/QualFilingExpertApi.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/QualFilingExpertApi.java new file mode 100644 index 0000000..8b43dbf --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/QualFilingExpertApi.java @@ -0,0 +1,26 @@ +package org.qinan.safetyeval.client.api; + +import org.qinan.safetyeval.client.co.QualFilingExpertCO; +import org.qinan.safetyeval.client.dto.PageResponse; +import org.qinan.safetyeval.client.dto.QualFilingExpertAddCmd; +import org.qinan.safetyeval.client.dto.QualFilingExpertModifyCmd; +import org.qinan.safetyeval.client.dto.QualFilingExpertPageQuery; +import org.qinan.safetyeval.client.dto.SingleResponse; + +/** + * 审核专家接口定义(Client层) + * + * @author safety-eval + */ +public interface QualFilingExpertApi { + + SingleResponse add(QualFilingExpertAddCmd cmd); + + SingleResponse get(Long id); + + SingleResponse modify(QualFilingExpertModifyCmd cmd); + + SingleResponse delete(Long id); + + PageResponse page(QualFilingExpertPageQuery query); +} diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/AccountCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/AccountCO.java new file mode 100644 index 0000000..54a6265 --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/AccountCO.java @@ -0,0 +1,34 @@ +package org.qinan.safetyeval.client.co; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 用户CO(Client Object) + * + * @author safety-eval + */ +@Data +public class AccountCO { + + @ApiModelProperty(value = "主键ID") + private Long id; + + @ApiModelProperty(value = "用户名称/姓名") + private String userName; + + @ApiModelProperty(value = "账号") + private String account; + + @ApiModelProperty(value = "手机号") + private String phone; + + @ApiModelProperty(value = "头像地址") + private String profileUrl; + + @ApiModelProperty(value = "类型: 1-机构端,2监管端") + private Integer type; + + @ApiModelProperty(value = "租户ID") + private Long tenantId; +} diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingExpertCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingExpertCO.java new file mode 100644 index 0000000..68cfd90 --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingExpertCO.java @@ -0,0 +1,37 @@ +package org.qinan.safetyeval.client.co; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 审核专家CO(Client Object) + * + * @author safety-eval + */ +@Data +public class QualFilingExpertCO { + + @ApiModelProperty(value = "主键ID") + private Long id; + + @ApiModelProperty(value = "用户名称/姓名") + private String userName; + + @ApiModelProperty(value = "账号") + private String account; + + @ApiModelProperty(value = "性别编码") + private Integer genderCode; + + @ApiModelProperty(value = "性别名称") + private String genderName; + + @ApiModelProperty(value = "身份证号") + private String idCardNo; + + @ApiModelProperty(value = "证书") + private String certificate; + + @ApiModelProperty(value = "租户ID") + private Long tenantId; +} diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/AccountAddCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/AccountAddCmd.java new file mode 100644 index 0000000..c489226 --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/AccountAddCmd.java @@ -0,0 +1,30 @@ +package org.qinan.safetyeval.client.dto; + +import lombok.Data; + +/** + * 用户新增命令 + * + * @author safety-eval + */ +@Data +public class AccountAddCmd { + + /** userName */ + private String userName; + + /** account */ + private String account; + + /** phone */ + private String phone; + + /** password */ + private String password; + + /** profileUrl */ + private String profileUrl; + + /** type: 1-机构端,2监管端 */ + private Integer type; +} diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/AccountModifyCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/AccountModifyCmd.java new file mode 100644 index 0000000..19cec98 --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/AccountModifyCmd.java @@ -0,0 +1,33 @@ +package org.qinan.safetyeval.client.dto; + +import lombok.Data; + +/** + * 用户修改命令 + * + * @author safety-eval + */ +@Data +public class AccountModifyCmd { + + /** 主键ID(必填) */ + private Long id; + + /** userName */ + private String userName; + + /** account */ + private String account; + + /** phone */ + private String phone; + + /** password(可选,为空时不更新) */ + private String password; + + /** profileUrl */ + private String profileUrl; + + /** type: 1-机构端,2监管端 */ + private Integer type; +} diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/AccountPageQuery.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/AccountPageQuery.java new file mode 100644 index 0000000..2e7867e --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/AccountPageQuery.java @@ -0,0 +1,26 @@ +package org.qinan.safetyeval.client.dto; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 用户分页查询参数 + * + * @author safety-eval + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class AccountPageQuery extends BasePageQuery { + + /** 用户名称/姓名 */ + private String userName; + + /** 账号 */ + private String account; + + /** 手机号 */ + private String phone; + + /** 类型: 1-机构端,2监管端 */ + private Integer type; +} diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingExpertAddCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingExpertAddCmd.java new file mode 100644 index 0000000..a2403dc --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingExpertAddCmd.java @@ -0,0 +1,30 @@ +package org.qinan.safetyeval.client.dto; + +import lombok.Data; + +/** + * 审核专家新增命令 + * + * @author safety-eval + */ +@Data +public class QualFilingExpertAddCmd { + + /** userName */ + private String userName; + + /** account */ + private String account; + + /** genderCode */ + private Integer genderCode; + + /** genderName */ + private String genderName; + + /** idCardNo */ + private String idCardNo; + + /** certificate */ + private String certificate; +} diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingExpertModifyCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingExpertModifyCmd.java new file mode 100644 index 0000000..7d4a2c5 --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingExpertModifyCmd.java @@ -0,0 +1,33 @@ +package org.qinan.safetyeval.client.dto; + +import lombok.Data; + +/** + * 审核专家修改命令 + * + * @author safety-eval + */ +@Data +public class QualFilingExpertModifyCmd { + + /** 主键ID(必填) */ + private Long id; + + /** userName */ + private String userName; + + /** account */ + private String account; + + /** genderCode */ + private Integer genderCode; + + /** genderName */ + private String genderName; + + /** idCardNo */ + private String idCardNo; + + /** certificate */ + private String certificate; +} diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingExpertPageQuery.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingExpertPageQuery.java new file mode 100644 index 0000000..5b50597 --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingExpertPageQuery.java @@ -0,0 +1,26 @@ +package org.qinan.safetyeval.client.dto; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 审核专家分页查询参数 + * + * @author safety-eval + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class QualFilingExpertPageQuery extends BasePageQuery { + + /** 用户名称/姓名 */ + private String userName; + + /** 账号 */ + private String account; + + /** 性别编码 */ + private Integer genderCode; + + /** 身份证号 */ + private String idCardNo; +} diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/AccountEntity.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/AccountEntity.java new file mode 100644 index 0000000..045bba4 --- /dev/null +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/AccountEntity.java @@ -0,0 +1,36 @@ +package org.qinan.safetyeval.domain.entity; + +import lombok.Data; + +/** + * 用户领域实体 + * + * @author safety-eval + */ +@Data +public class AccountEntity { + + /** 主键ID */ + private Long id; + + /** 用户名称/姓名 */ + private String userName; + + /** 账号 */ + private String account; + + /** 手机号 */ + private String phone; + + /** 密码 */ + private String password; + + /** 头像地址 */ + private String profileUrl; + + /** 类型: 1-机构端,2监管端 */ + private Integer type; + + /** 租户ID */ + private Long tenantId; +} diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/QualFilingExpertEntity.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/QualFilingExpertEntity.java new file mode 100644 index 0000000..62c464e --- /dev/null +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/QualFilingExpertEntity.java @@ -0,0 +1,36 @@ +package org.qinan.safetyeval.domain.entity; + +import lombok.Data; + +/** + * 审核专家领域实体 + * + * @author safety-eval + */ +@Data +public class QualFilingExpertEntity { + + /** 主键ID */ + private Long id; + + /** 用户名称/姓名 */ + private String userName; + + /** 账号 */ + private String account; + + /** 性别编码 */ + private Integer genderCode; + + /** 性别名称 */ + private String genderName; + + /** 身份证号 */ + private String idCardNo; + + /** 证书 */ + private String certificate; + + /** 租户ID */ + private Long tenantId; +} diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/AccountGateway.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/AccountGateway.java new file mode 100644 index 0000000..9a85ca8 --- /dev/null +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/AccountGateway.java @@ -0,0 +1,25 @@ +package org.qinan.safetyeval.domain.gateway; + +import org.qinan.safetyeval.domain.entity.AccountEntity; +import org.qinan.safetyeval.domain.query.AccountQuery; +import org.qinan.safetyeval.domain.query.PageResult; + +/** + * 用户Gateway接口(Domain层定义) + * + * @author safety-eval + */ +public interface AccountGateway { + + AccountEntity save(AccountEntity entity); + + AccountEntity get(Long id); + + AccountEntity getByAccount(String account); + + AccountEntity modify(AccountEntity entity); + + void delete(Long id); + + PageResult page(AccountQuery query); +} diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/QualFilingExpertGateway.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/QualFilingExpertGateway.java new file mode 100644 index 0000000..c9f438e --- /dev/null +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/QualFilingExpertGateway.java @@ -0,0 +1,25 @@ +package org.qinan.safetyeval.domain.gateway; + +import org.qinan.safetyeval.domain.entity.QualFilingExpertEntity; +import org.qinan.safetyeval.domain.query.PageResult; +import org.qinan.safetyeval.domain.query.QualFilingExpertQuery; + +/** + * 审核专家Gateway接口(Domain层定义) + * + * @author safety-eval + */ +public interface QualFilingExpertGateway { + + QualFilingExpertEntity save(QualFilingExpertEntity entity); + + QualFilingExpertEntity get(Long id); + + QualFilingExpertEntity getByAccount(String account); + + QualFilingExpertEntity modify(QualFilingExpertEntity entity); + + void delete(Long id); + + PageResult page(QualFilingExpertQuery query); +} diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/query/AccountQuery.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/query/AccountQuery.java new file mode 100644 index 0000000..56c4221 --- /dev/null +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/query/AccountQuery.java @@ -0,0 +1,33 @@ +package org.qinan.safetyeval.domain.query; + +import lombok.Data; + +/** + * 用户领域查询对象 + * + * @author safety-eval + */ +@Data +public class AccountQuery { + + /** 当前页 */ + private Long pageNum; + + /** 每页条数 */ + private Long pageSize; + + /** 租户ID */ + private Long tenantId; + + /** 用户名称/姓名 */ + private String userName; + + /** 账号 */ + private String account; + + /** 手机号 */ + private String phone; + + /** 类型: 1-机构端,2监管端 */ + private Integer type; +} diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/query/QualFilingExpertQuery.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/query/QualFilingExpertQuery.java new file mode 100644 index 0000000..ea958e3 --- /dev/null +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/query/QualFilingExpertQuery.java @@ -0,0 +1,33 @@ +package org.qinan.safetyeval.domain.query; + +import lombok.Data; + +/** + * 审核专家领域查询对象 + * + * @author safety-eval + */ +@Data +public class QualFilingExpertQuery { + + /** 当前页 */ + private Long pageNum; + + /** 每页条数 */ + private Long pageSize; + + /** 租户ID */ + private Long tenantId; + + /** 用户名称/姓名 */ + private String userName; + + /** 账号 */ + private String account; + + /** 性别编码 */ + private Integer genderCode; + + /** 身份证号 */ + private String idCardNo; +} diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/AccountDomainService.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/AccountDomainService.java new file mode 100644 index 0000000..619bc1a --- /dev/null +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/AccountDomainService.java @@ -0,0 +1,64 @@ +package org.qinan.safetyeval.domain.service; + +import org.qinan.safetyeval.domain.entity.AccountEntity; +import org.qinan.safetyeval.domain.exception.BizException; +import org.qinan.safetyeval.domain.exception.ErrorCode; +import org.qinan.safetyeval.domain.gateway.AccountGateway; +import org.qinan.safetyeval.domain.query.AccountQuery; +import org.qinan.safetyeval.domain.query.PageResult; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import javax.annotation.Resource; + +/** + * 用户领域服务 + * + * @author safety-eval + */ +@Service +public class AccountDomainService { + + @Resource + private AccountGateway accountGateway; + + public AccountEntity add(AccountEntity entity) { + assertAccountUnique(entity.getAccount(), null); + return accountGateway.save(entity); + } + + public AccountEntity get(Long id) { + return accountGateway.get(id); + } + + public AccountEntity modify(AccountEntity entity) { + AccountEntity existing = accountGateway.get(entity.getId()); + if (existing == null) { + throw new BizException(ErrorCode.ACCOUNT_NOT_FOUND); + } + assertAccountUnique(entity.getAccount(), entity.getId()); + return accountGateway.modify(entity); + } + + public void delete(Long id) { + AccountEntity existing = accountGateway.get(id); + if (existing == null) { + throw new BizException(ErrorCode.ACCOUNT_NOT_FOUND); + } + accountGateway.delete(id); + } + + public PageResult page(AccountQuery query) { + return accountGateway.page(query); + } + + private void assertAccountUnique(String account, Long excludeId) { + if (!StringUtils.hasText(account)) { + return; + } + AccountEntity found = accountGateway.getByAccount(account); + if (found != null && (excludeId == null || !excludeId.equals(found.getId()))) { + throw new BizException(ErrorCode.ACCOUNT_EXISTS); + } + } +} diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/QualFilingExpertDomainService.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/QualFilingExpertDomainService.java new file mode 100644 index 0000000..ead4c19 --- /dev/null +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/QualFilingExpertDomainService.java @@ -0,0 +1,64 @@ +package org.qinan.safetyeval.domain.service; + +import org.qinan.safetyeval.domain.entity.QualFilingExpertEntity; +import org.qinan.safetyeval.domain.exception.BizException; +import org.qinan.safetyeval.domain.exception.ErrorCode; +import org.qinan.safetyeval.domain.gateway.QualFilingExpertGateway; +import org.qinan.safetyeval.domain.query.PageResult; +import org.qinan.safetyeval.domain.query.QualFilingExpertQuery; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import javax.annotation.Resource; + +/** + * 审核专家领域服务 + * + * @author safety-eval + */ +@Service +public class QualFilingExpertDomainService { + + @Resource + private QualFilingExpertGateway qualFilingExpertGateway; + + public QualFilingExpertEntity add(QualFilingExpertEntity entity) { + assertAccountUnique(entity.getAccount(), null); + return qualFilingExpertGateway.save(entity); + } + + public QualFilingExpertEntity get(Long id) { + return qualFilingExpertGateway.get(id); + } + + public QualFilingExpertEntity modify(QualFilingExpertEntity entity) { + QualFilingExpertEntity existing = qualFilingExpertGateway.get(entity.getId()); + if (existing == null) { + throw new BizException(ErrorCode.QUAL_FILING_EXPERT_NOT_FOUND); + } + assertAccountUnique(entity.getAccount(), entity.getId()); + return qualFilingExpertGateway.modify(entity); + } + + public void delete(Long id) { + QualFilingExpertEntity existing = qualFilingExpertGateway.get(id); + if (existing == null) { + throw new BizException(ErrorCode.QUAL_FILING_EXPERT_NOT_FOUND); + } + qualFilingExpertGateway.delete(id); + } + + public PageResult page(QualFilingExpertQuery query) { + return qualFilingExpertGateway.page(query); + } + + private void assertAccountUnique(String account, Long excludeId) { + if (!StringUtils.hasText(account)) { + return; + } + QualFilingExpertEntity found = qualFilingExpertGateway.getByAccount(account); + if (found != null && (excludeId == null || !excludeId.equals(found.getId()))) { + throw new BizException(ErrorCode.QUAL_FILING_EXPERT_ACCOUNT_EXISTS); + } + } +} diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/AccountDO.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/AccountDO.java new file mode 100644 index 0000000..05ded4e --- /dev/null +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/AccountDO.java @@ -0,0 +1,37 @@ +package org.qinan.safetyeval.infrastructure.dataobject; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 用户数据对象 + * + * @author safety-eval + */ +@Data +@TableName("account") +public class AccountDO { + + private Long id; + private String userName; + private String account; + private String phone; + private String password; + private String profileUrl; + private Integer type; + + // ---- GBS默认字段 ---- + private String deleteEnum; + private String remarks; + private String createName; + private String updateName; + private Long tenantId; + private Integer version; + private LocalDateTime createTime; + private LocalDateTime updateTime; + private Long createId; + private Long updateId; + private String env; +} diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/QualFilingExpertDO.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/QualFilingExpertDO.java new file mode 100644 index 0000000..b17efb2 --- /dev/null +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/QualFilingExpertDO.java @@ -0,0 +1,37 @@ +package org.qinan.safetyeval.infrastructure.dataobject; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 审核专家数据对象 + * + * @author safety-eval + */ +@Data +@TableName("qual_filing_expert") +public class QualFilingExpertDO { + + private Long id; + private String userName; + private String account; + private Integer genderCode; + private String genderName; + private String idCardNo; + private String certificate; + + // ---- GBS默认字段 ---- + private String deleteEnum; + private String remarks; + private String createName; + private String updateName; + private Long tenantId; + private Integer version; + private LocalDateTime createTime; + private LocalDateTime updateTime; + private Long createId; + private Long updateId; + private String env; +} diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/AccountGatewayImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/AccountGatewayImpl.java new file mode 100644 index 0000000..2cde0b0 --- /dev/null +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/AccountGatewayImpl.java @@ -0,0 +1,124 @@ +package org.qinan.safetyeval.infrastructure.gatewayimpl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.qinan.safetyeval.domain.entity.AccountEntity; +import org.qinan.safetyeval.domain.gateway.AccountGateway; +import org.qinan.safetyeval.domain.query.AccountQuery; +import org.qinan.safetyeval.domain.query.PageResult; +import org.qinan.safetyeval.infrastructure.dataobject.AccountDO; +import org.qinan.safetyeval.infrastructure.mapper.AccountMapper; +import org.qinan.safetyeval.infrastructure.support.InsertFieldDefaults; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; + +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 用户Gateway实现(Infrastructure层) + * + * @author safety-eval + */ +@Component +public class AccountGatewayImpl implements AccountGateway { + + @Resource + private AccountMapper accountMapper; + + @Override + public AccountEntity save(AccountEntity entity) { + AccountDO dataObject = toDO(entity); + InsertFieldDefaults.applyIgnoreOrgId(dataObject); + accountMapper.insert(dataObject); + entity.setId(dataObject.getId()); + entity.setTenantId(dataObject.getTenantId()); + return entity; + } + + @Override + public AccountEntity get(Long id) { + AccountDO dataObject = accountMapper.selectById(id); + return toEntity(dataObject); + } + + @Override + public AccountEntity getByAccount(String account) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(AccountDO::getAccount, account); + wrapper.eq(AccountDO::getDeleteEnum, "false"); + AccountDO dataObject = accountMapper.selectOne(wrapper); + return toEntity(dataObject); + } + + @Override + public AccountEntity modify(AccountEntity entity) { + AccountDO dataObject = toDO(entity); + dataObject.setId(entity.getId()); + InsertFieldDefaults.applyForUpdate(dataObject); + accountMapper.updateById(dataObject); + return get(entity.getId()); + } + + @Override + public void delete(Long id) { + accountMapper.deleteById(id); + } + + @Override + public PageResult page(AccountQuery query) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(AccountDO::getDeleteEnum, "false"); + if (StringUtils.hasText(query.getUserName())) { + wrapper.like(AccountDO::getUserName, query.getUserName()); + } + if (StringUtils.hasText(query.getAccount())) { + wrapper.like(AccountDO::getAccount, query.getAccount()); + } + if (StringUtils.hasText(query.getPhone())) { + wrapper.like(AccountDO::getPhone, query.getPhone()); + } + if (query.getType() != null) { + wrapper.eq(AccountDO::getType, query.getType()); + } + + Page page = new Page<>(query.getPageNum(), query.getPageSize()); + IPage result = accountMapper.selectPage(page, wrapper); + + List entities = result.getRecords().stream() + .map(this::toEntity) + .collect(Collectors.toList()); + + return PageResult.of(entities, result.getTotal(), result.getCurrent(), result.getSize()); + } + + private AccountDO toDO(AccountEntity entity) { + AccountDO dataObject = new AccountDO(); + dataObject.setUserName(entity.getUserName()); + dataObject.setAccount(entity.getAccount()); + dataObject.setPhone(entity.getPhone()); + dataObject.setPassword(entity.getPassword()); + dataObject.setProfileUrl(entity.getProfileUrl()); + dataObject.setType(entity.getType()); + dataObject.setTenantId(entity.getTenantId()); + return dataObject; + } + + private AccountEntity toEntity(AccountDO dataObject) { + if (dataObject == null) { + return null; + } + AccountEntity entity = new AccountEntity(); + entity.setId(dataObject.getId()); + entity.setUserName(dataObject.getUserName()); + entity.setAccount(dataObject.getAccount()); + entity.setPhone(dataObject.getPhone()); + entity.setPassword(dataObject.getPassword()); + entity.setProfileUrl(dataObject.getProfileUrl()); + entity.setType(dataObject.getType()); + entity.setTenantId(dataObject.getTenantId()); + return entity; + } +} diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingExpertGatewayImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingExpertGatewayImpl.java new file mode 100644 index 0000000..3964279 --- /dev/null +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingExpertGatewayImpl.java @@ -0,0 +1,124 @@ +package org.qinan.safetyeval.infrastructure.gatewayimpl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.qinan.safetyeval.domain.entity.QualFilingExpertEntity; +import org.qinan.safetyeval.domain.gateway.QualFilingExpertGateway; +import org.qinan.safetyeval.domain.query.PageResult; +import org.qinan.safetyeval.domain.query.QualFilingExpertQuery; +import org.qinan.safetyeval.infrastructure.dataobject.QualFilingExpertDO; +import org.qinan.safetyeval.infrastructure.mapper.QualFilingExpertMapper; +import org.qinan.safetyeval.infrastructure.support.InsertFieldDefaults; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; + +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 审核专家Gateway实现(Infrastructure层) + * + * @author safety-eval + */ +@Component +public class QualFilingExpertGatewayImpl implements QualFilingExpertGateway { + + @Resource + private QualFilingExpertMapper qualFilingExpertMapper; + + @Override + public QualFilingExpertEntity save(QualFilingExpertEntity entity) { + QualFilingExpertDO dataObject = toDO(entity); + InsertFieldDefaults.applyIgnoreOrgId(dataObject); + qualFilingExpertMapper.insert(dataObject); + entity.setId(dataObject.getId()); + entity.setTenantId(dataObject.getTenantId()); + return entity; + } + + @Override + public QualFilingExpertEntity get(Long id) { + QualFilingExpertDO dataObject = qualFilingExpertMapper.selectById(id); + return toEntity(dataObject); + } + + @Override + public QualFilingExpertEntity getByAccount(String account) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(QualFilingExpertDO::getAccount, account); + wrapper.eq(QualFilingExpertDO::getDeleteEnum, "false"); + QualFilingExpertDO dataObject = qualFilingExpertMapper.selectOne(wrapper); + return toEntity(dataObject); + } + + @Override + public QualFilingExpertEntity modify(QualFilingExpertEntity entity) { + QualFilingExpertDO dataObject = toDO(entity); + dataObject.setId(entity.getId()); + InsertFieldDefaults.applyForUpdate(dataObject); + qualFilingExpertMapper.updateById(dataObject); + return get(entity.getId()); + } + + @Override + public void delete(Long id) { + qualFilingExpertMapper.deleteById(id); + } + + @Override + public PageResult page(QualFilingExpertQuery query) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(QualFilingExpertDO::getDeleteEnum, "false"); + if (StringUtils.hasText(query.getUserName())) { + wrapper.like(QualFilingExpertDO::getUserName, query.getUserName()); + } + if (StringUtils.hasText(query.getAccount())) { + wrapper.like(QualFilingExpertDO::getAccount, query.getAccount()); + } + if (query.getGenderCode() != null) { + wrapper.eq(QualFilingExpertDO::getGenderCode, query.getGenderCode()); + } + if (StringUtils.hasText(query.getIdCardNo())) { + wrapper.like(QualFilingExpertDO::getIdCardNo, query.getIdCardNo()); + } + + Page page = new Page<>(query.getPageNum(), query.getPageSize()); + IPage result = qualFilingExpertMapper.selectPage(page, wrapper); + + List entities = result.getRecords().stream() + .map(this::toEntity) + .collect(Collectors.toList()); + + return PageResult.of(entities, result.getTotal(), result.getCurrent(), result.getSize()); + } + + private QualFilingExpertDO toDO(QualFilingExpertEntity entity) { + QualFilingExpertDO dataObject = new QualFilingExpertDO(); + dataObject.setUserName(entity.getUserName()); + dataObject.setAccount(entity.getAccount()); + dataObject.setGenderCode(entity.getGenderCode()); + dataObject.setGenderName(entity.getGenderName()); + dataObject.setIdCardNo(entity.getIdCardNo()); + dataObject.setCertificate(entity.getCertificate()); + dataObject.setTenantId(entity.getTenantId()); + return dataObject; + } + + private QualFilingExpertEntity toEntity(QualFilingExpertDO dataObject) { + if (dataObject == null) { + return null; + } + QualFilingExpertEntity entity = new QualFilingExpertEntity(); + entity.setId(dataObject.getId()); + entity.setUserName(dataObject.getUserName()); + entity.setAccount(dataObject.getAccount()); + entity.setGenderCode(dataObject.getGenderCode()); + entity.setGenderName(dataObject.getGenderName()); + entity.setIdCardNo(dataObject.getIdCardNo()); + entity.setCertificate(dataObject.getCertificate()); + entity.setTenantId(dataObject.getTenantId()); + return entity; + } +} diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/AccountMapper.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/AccountMapper.java new file mode 100644 index 0000000..127d15d --- /dev/null +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/AccountMapper.java @@ -0,0 +1,9 @@ +package org.qinan.safetyeval.infrastructure.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.qinan.safetyeval.infrastructure.dataobject.AccountDO; + +@Mapper +public interface AccountMapper extends BaseMapper { +} diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/QualFilingExpertMapper.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/QualFilingExpertMapper.java new file mode 100644 index 0000000..e7f0fb3 --- /dev/null +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/QualFilingExpertMapper.java @@ -0,0 +1,9 @@ +package org.qinan.safetyeval.infrastructure.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.qinan.safetyeval.infrastructure.dataobject.QualFilingExpertDO; + +@Mapper +public interface QualFilingExpertMapper extends BaseMapper { +} diff --git a/safety-eval-infrastructure/src/main/resources/mapper/AccountMapper.xml b/safety-eval-infrastructure/src/main/resources/mapper/AccountMapper.xml new file mode 100644 index 0000000..3a68f2c --- /dev/null +++ b/safety-eval-infrastructure/src/main/resources/mapper/AccountMapper.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + `id`, `user_name`, `account`, `phone`, `password`, `profile_url`, `type`, `delete_enum`, `remarks`, `create_name`, `update_name`, `tenant_id`, `version`, `create_time`, `update_time`, `create_id`, `update_id`, `env` + + + diff --git a/safety-eval-infrastructure/src/main/resources/mapper/QualFilingExpertMapper.xml b/safety-eval-infrastructure/src/main/resources/mapper/QualFilingExpertMapper.xml new file mode 100644 index 0000000..071b996 --- /dev/null +++ b/safety-eval-infrastructure/src/main/resources/mapper/QualFilingExpertMapper.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + `id`, `user_name`, `account`, `gender_code`, `gender_name`, `id_card_no`, `certificate`, `delete_enum`, `remarks`, `create_name`, `update_name`, `tenant_id`, `version`, `create_time`, `update_time`, `create_id`, `update_id`, `env` + + +