Ver código fonte

1,graphQL 完善接口2

tags/B.2.6.4_20240106_base
yk 1 ano atrás
pai
commit
a623b2d56b
13 arquivos alterados com 291 adições e 26 exclusões
  1. +2
    -0
      xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/digitalmans/domain/dto/DmVisitRecordsDto.java
  2. +2
    -1
      xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/digitalmans/domain/po/DmVisitRecordsPo.java
  3. +5
    -0
      xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/staff/domain/dto/DmVisitCommonDto.java
  4. +30
    -0
      xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/staff/domain/dto/GraphqlVisitRecordInput.java
  5. +5
    -3
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmVisitorInnerApiController.java
  6. +53
    -0
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/VisitRecordGraphQLMutationResolver.java
  7. +54
    -0
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/VisitRecordsGraphQLQueryResolver.java
  8. +6
    -5
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/VisitorGraphQLMutationResolver.java
  9. +3
    -2
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/VisitorGraphQLQuery.java
  10. +76
    -6
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/config/GraphQLConfig.java
  11. +3
    -5
      xueyi-modules/xueyi-system/src/main/resources/graphql/root.graphqls
  12. +31
    -3
      xueyi-modules/xueyi-system/src/main/resources/graphql/visitRecords.graphqls
  13. +21
    -1
      xueyi-modules/xueyi-system/src/main/resources/graphql/visitor.graphqls

+ 2
- 0
xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/digitalmans/domain/dto/DmVisitRecordsDto.java Ver arquivo

@@ -26,4 +26,6 @@ public class DmVisitRecordsDto extends DmVisitRecordsPo {

private String visitorName;

private DmVisitorsDto visitor;

}

+ 2
- 1
xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/digitalmans/domain/po/DmVisitRecordsPo.java Ver arquivo

@@ -7,6 +7,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;
import java.time.LocalDate;
import java.util.Date;

import static com.xueyi.common.core.constant.basic.EntityConstants.NAME;
@@ -53,7 +54,7 @@ public class DmVisitRecordsPo extends TBaseEntity {

/** 邀约访问日期 */
@Excel(name = "邀约访问日期")
protected Date visitDate;
protected LocalDate visitDate;

/** 邀约访问时间 */
@Excel(name = "邀约访问时间")


+ 5
- 0
xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/staff/domain/dto/DmVisitCommonDto.java Ver arquivo

@@ -3,6 +3,8 @@ package com.xueyi.system.api.staff.domain.dto;
import com.alibaba.fastjson2.JSONObject;
import lombok.Data;

import java.util.Date;

/**
* 访客及数据的 数据传输对象
*
@@ -36,6 +38,9 @@ public class DmVisitCommonDto {
private String visitorBase64Img;





public String toSmsJson(String code, String name, String companyName, String companyAddress, String parkInfo){
JSONObject json = new JSONObject();
json.put("code", code);


+ 30
- 0
xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/staff/domain/dto/GraphqlVisitRecordInput.java Ver arquivo

@@ -0,0 +1,30 @@
package com.xueyi.system.api.staff.domain.dto;

import com.alibaba.fastjson2.JSON;
import lombok.Data;

import java.util.Date;

/**
* 访客及数据的 数据传输对象
*
* @author xueyi
*/
@Data
public class GraphqlVisitRecordInput {

private String name;
private String nickname;
private String phone;
private String visitorCompany;
private Boolean isVip;
private Boolean isVital;
private Date visitDate;


@Override
public String toString() {
return JSON.toJSONString(this);
}
}

+ 5
- 3
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmVisitorInnerApiController.java Ver arquivo

@@ -1,5 +1,6 @@
package com.xueyi.system.staff.controller.api;

import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@@ -57,6 +58,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -217,7 +219,7 @@ public class DmVisitorInnerApiController extends BaseApiController {
visitRecords.setDeptId(emp.getDeptId());
visitRecords.setVisitorId(v.getId());
if (StringUtils.isNotEmpty(commonDto.getVisitDate())) {
visitRecords.setVisitDate(DateUtils.parseStrToDate(commonDto.getVisitDate(), "yyyy-MM-dd"));
visitRecords.setVisitDate(LocalDateTimeUtil.of(DateUtils.parseStrToDate(commonDto.getVisitDate(), "yyyy-MM-dd")).toLocalDate());
}
visitRecords.setUserId(commonDto.getEmpId());
visitRecords.setRecordStatus(VisitRecordStatus.getRecordStatusStart());
@@ -323,7 +325,7 @@ public class DmVisitorInnerApiController extends BaseApiController {
d.setVisitorName(visitorsPo.getName());
}
if (null != item.getVisitDate()) {
d.setVisitDateStr(DateUtils.formatDate(item.getVisitDate(), "yyyy-MM-dd"));
d.setVisitDateStr(LocalDateTimeUtil.format(item.getVisitDate(), "yyyy-MM-dd"));
}
dtos.add(d);
});
@@ -353,7 +355,7 @@ public class DmVisitorInnerApiController extends BaseApiController {
d.setVisitorName(visitorsPo.getName());
}
if (null != item.getVisitDate()) {
d.setVisitDateStr(DateUtils.formatDate(item.getVisitDate(), "yyyy-MM-dd"));
d.setVisitDateStr(LocalDateTimeUtil.format(item.getVisitDate(), "yyyy-MM-dd"));
}
dtos.add(d);
}


+ 53
- 0
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/VisitRecordGraphQLMutationResolver.java Ver arquivo

@@ -0,0 +1,53 @@
package com.xueyi.system.staff.graphql;

import com.alibaba.fastjson2.JSONObject;
import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.A;
import com.xueyi.common.core.utils.core.IdUtil;
import com.xueyi.system.api.digitalmans.domain.po.DmVisitRecordsPo;
import com.xueyi.system.api.digitalmans.domain.po.DmVisitorsPo;
import com.xueyi.system.api.staff.domain.dto.DmVisitCommonDto;
import com.xueyi.system.api.staff.domain.dto.GraphqlVisitRecordInput;
import com.xueyi.system.staff.domain.model.DmVisitRecordsConverter;
import com.xueyi.system.staff.domain.model.DmVisitorsConverter;
import com.xueyi.system.staff.mapper.DmVisitRecordsMapper;
import com.xueyi.system.staff.mapper.DmVisitorsMapper;
import graphql.kickstart.tools.GraphQLMutationResolver;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.Date;

/*
* @author yk
* @description
* @date 2023-12-25 19:55
*/

@Component
class VisitRecordGraphQLMutationResolver implements GraphQLMutationResolver {
@Autowired
private DmVisitRecordsMapper mapper;

@Autowired
private DmVisitorsMapper visitorsMapper;

@Autowired
private DmVisitRecordsConverter converter;


public boolean saveVisitRecord(GraphqlVisitRecordInput input){
DmVisitorsPo po = JSONObject.parseObject(input.toString(), DmVisitorsPo.class);
Long id = IdUtil.getSnowflakeNextId();
po.setId(id);
visitorsMapper.insert(po);

DmVisitRecordsPo visitRecordsPo = JSONObject.parseObject(input.toString(), DmVisitRecordsPo.class);
visitRecordsPo.setVisitorId(id);

return mapper.insert(visitRecordsPo) > 0;
}

public Boolean deleteVisitRecord(Long id){
return mapper.deleteById(id) > 0;
}
}

+ 54
- 0
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/VisitRecordsGraphQLQueryResolver.java Ver arquivo

@@ -0,0 +1,54 @@
package com.xueyi.system.staff.graphql;

import com.xueyi.system.api.digitalmans.domain.dto.DmVisitRecordsDto;
import com.xueyi.system.api.digitalmans.domain.dto.DmVisitorsDto;
import com.xueyi.system.api.digitalmans.domain.po.DmVisitorsPo;
import com.xueyi.system.staff.domain.model.DmVisitRecordsConverter;
import com.xueyi.system.staff.domain.model.DmVisitorsConverter;
import com.xueyi.system.staff.mapper.DmVisitRecordsMapper;
import com.xueyi.system.staff.mapper.DmVisitorsMapper;
import graphql.kickstart.tools.GraphQLQueryResolver;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.stream.Collectors;

/*
* @author yk
* @description
* @date 2023-12-25 19:55
*/

@Component
class VisitRecordsGraphQLQueryResolver implements GraphQLQueryResolver {
@Autowired
private DmVisitRecordsMapper mapper;

@Autowired
private DmVisitorsMapper visitorsMapper;

@Autowired
private DmVisitRecordsConverter converter;

@Autowired
private DmVisitorsConverter visitorsConverter;

// public boolean saveVisitRecord(String phone, String name){
// return true;
// }
public DmVisitRecordsDto visitRecord(Long id) {
return converter.mapperDto(mapper.selectById(id));
}

public List<DmVisitRecordsDto> visitRecords(String receiverName, String receiverPhone){
return mapper.selectList(null).stream().map(
t -> {
DmVisitorsPo po = visitorsMapper.selectById(t.getVisitorId());
DmVisitRecordsDto dto = converter.mapperDto(t);
dto.setVisitor(visitorsConverter.mapperDto(po));
return dto;
}
).collect(Collectors.toList());
}
}

+ 6
- 5
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/VisitorGraphQLMutationResolver.java Ver arquivo

@@ -26,16 +26,17 @@ class VisitorGraphQLMutationResolver implements GraphQLMutationResolver {
@Autowired
private DmVisitorsConverter converter;

public Boolean update(Long id, String phone, String name, String nickName){
DmVisitorsPo dto = mapper.selectById(id);
if (dto == null) return null;
public boolean saveVisitor( String name, String nickname, String phone, Integer type){
DmVisitorsPo dto =new DmVisitorsPo();
dto.setPhone(phone);
dto.setNickname(nickName);
dto.setNickname(nickname);
dto.setName(name);
dto.setType(type.longValue());
return mapper.updateById(dto) > 0;
}

public Boolean delete(Long id){
public Boolean deleteVisitor(Long id){
return mapper.deleteById(id) > 0;
}
}

+ 3
- 2
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/VisitorGraphQLQuery.java Ver arquivo

@@ -3,6 +3,7 @@ package com.xueyi.system.staff.graphql;
import com.xueyi.system.api.digitalmans.domain.dto.DmVisitorsDto;
import com.xueyi.system.api.digitalmans.domain.po.DmVisitorsPo;
import com.xueyi.system.staff.domain.model.DmVisitorsConverter;
import com.xueyi.system.staff.domain.query.DmVisitorsQuery;
import com.xueyi.system.staff.mapper.DmVisitorsMapper;
import graphql.kickstart.tools.GraphQLQueryResolver;
import org.springframework.beans.factory.annotation.Autowired;
@@ -25,11 +26,11 @@ class VisitorGraphQLQueryResolver implements GraphQLQueryResolver {
@Autowired
private DmVisitorsConverter converter;

public DmVisitorsDto selectOne(Long id){
public DmVisitorsDto visitor(Long id){
return converter.mapperDto(mapper.selectById(id));
}

public List<DmVisitorsDto> list(){
public List<DmVisitorsDto> visitors(Long id, String name, Integer type, String phone){
return mapper.selectList(null).stream().map(t->converter.mapperDto(t)).collect(Collectors.toList());
}
}

+ 76
- 6
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/config/GraphQLConfig.java Ver arquivo

@@ -1,8 +1,30 @@
package com.xueyi.system.staff.graphql.config;

import graphql.ExecutionResult;
import graphql.GraphQL;
import graphql.GraphQLContext;
import graphql.execution.instrumentation.ExecutionStrategyInstrumentationContext;
import graphql.execution.instrumentation.Instrumentation;
import graphql.execution.instrumentation.InstrumentationContext;
import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters;
import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters;
import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters;
import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters;
import graphql.execution.instrumentation.parameters.InstrumentationFieldParameters;
import graphql.execution.instrumentation.parameters.InstrumentationValidationParameters;
import graphql.kickstart.autoconfigure.tools.GraphQLJavaToolsAutoConfiguration;
import graphql.kickstart.tools.GraphQLResolver;
import graphql.kickstart.tools.SchemaParser;
import graphql.language.Document;
import graphql.schema.GraphQLSchema;
import graphql.validation.ValidationError;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.context.annotation.Import;

import java.util.List;

/**
* @author yk
@@ -10,10 +32,58 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
* @date 2024-01-04 22:03
*/
@Configuration
public class GraphQLConfig implements WebMvcConfigurer {
@Import(GraphQLJavaToolsAutoConfiguration.class)
public class GraphQLConfig {

@Bean
public GraphQL graphQL(List<GraphQLResolver<?>> resolvers, List<SchemaParser> schemaParsers, GraphQLSchema graphQLSchema) {
return GraphQL.newGraphQL(graphQLSchema)
.instrumentation(new SimpleAuthInstrumentation())
.build();
}

private static class SimpleAuthInstrumentation implements Instrumentation {
Logger logger = LoggerFactory.getLogger(SimpleAuthInstrumentation.class);

@Override
public InstrumentationContext<ExecutionResult> beginExecution(InstrumentationExecutionParameters parameters) {
return null;
}

@Override
public InstrumentationContext<Document> beginParse(InstrumentationExecutionParameters parameters) {
return null;
}

@Override
public InstrumentationContext<List<ValidationError>> beginValidation(InstrumentationValidationParameters parameters) {
return null;
}

@Override
public InstrumentationContext<ExecutionResult> beginExecuteOperation(InstrumentationExecuteOperationParameters parameters) {
GraphQLContext context = parameters.getExecutionContext().getGraphQLContext();

// 从上下文中获取请求头中的token
String token = context.get("Authorization");
logger.error("token: {}", token);
return null;
}


@Override
public ExecutionStrategyInstrumentationContext beginExecutionStrategy(InstrumentationExecutionStrategyParameters parameters) {
return null;
}

@Override
public InstrumentationContext<ExecutionResult> beginField(InstrumentationFieldParameters parameters) {
return null;
}

@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/graphql").allowedOrigins("*");
@Override
public InstrumentationContext<Object> beginFieldFetch(InstrumentationFieldFetchParameters parameters) {
return null;
}
}
}

+ 3
- 5
xueyi-modules/xueyi-system/src/main/resources/graphql/root.graphqls Ver arquivo

@@ -1,12 +1,10 @@
scalar Long
scalar DateTime
scalar Date

type Query {
selectOne(id: Long): DmVisitorsDto
list: [DmVisitorsDto]
# queryVisitList: [DmVisitRecordsDto]

}
type Mutation {
update(id: Long, phone: String, name: String, nickName: String): Boolean
delete(id: Long): Boolean

}

+ 31
- 3
xueyi-modules/xueyi-system/src/main/resources/graphql/visitRecords.graphqls Ver arquivo

@@ -1,11 +1,39 @@
extend type Query {
visitRecords(
receiverName:String
receiverPhone:String
): [VisitRecord]

type DmVisitRecordsDto {
id: String
visitRecord(id:Long): VisitRecord
}

input visitRecordInput{
name:String
phone:String
nickname:String
visitDate:Date
visitorCompany:String
isVip:Boolean
isVital:Boolean
resourceId:Long
}


extend type Mutation {
saveVisitRecord(
input: visitRecordInput
): Boolean
deleteVisitRecord(id:Long): Boolean
}

type VisitRecord {
id: Long
visitorId: Long
userId: Long
receiverName: String
receiverPhone: String
recordStatus: Int
visitDate: DateTime
visitDate: Date
visitorCode: String
visitor: Visitor
}

+ 21
- 1
xueyi-modules/xueyi-system/src/main/resources/graphql/visitor.graphqls Ver arquivo

@@ -1,9 +1,29 @@
extend type Query {
visitors(
id: Long
name: String
type: Int
phone: String
): [Visitor!]

visitor(id: Long): Visitor
}

extend type Mutation {
saveVisitor(
name: String
nickname: String
type: Int
phone: String): Boolean

deleteVisitor(id: Long!): Boolean
}

type DmVisitorsDto {
type Visitor {
id: String
age: String
name: String
nickname: String
phone: String
type: Int
visitorCompany: String


Carregando…
Cancelar
Salvar