| @@ -70,7 +70,7 @@ public class DmRecognizedRecordsPo extends TBaseEntity { | |||||
| /** 识别时间 */ | /** 识别时间 */ | ||||
| @Excel(name = "识别时间") | @Excel(name = "识别时间") | ||||
| @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") | |||||
| @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") | |||||
| @JsonDeserialize(using = LocalDateTimeDeserializer.class) | @JsonDeserialize(using = LocalDateTimeDeserializer.class) | ||||
| @JsonSerialize(using = LocalDateTimeSerializer.class) | @JsonSerialize(using = LocalDateTimeSerializer.class) | ||||
| protected LocalDateTime recognizedTime; | protected LocalDateTime recognizedTime; | ||||
| @@ -54,10 +54,6 @@ public class TokenController { | |||||
| @Autowired | @Autowired | ||||
| private SysLoginService sysLoginService; | private SysLoginService sysLoginService; | ||||
| @Autowired | |||||
| private RemoteSmsService smsService; | |||||
| @Autowired | @Autowired | ||||
| private RemoteSmsService remoteSmsService; | private RemoteSmsService remoteSmsService; | ||||
| @@ -1,15 +1,37 @@ | |||||
| package com.xueyi.system.staff.controller; | package com.xueyi.system.staff.controller; | ||||
| import cn.hutool.core.date.LocalDateTimeUtil; | |||||
| import com.alibaba.fastjson.JSONObject; | |||||
| import com.baomidou.mybatisplus.core.toolkit.StringUtils; | |||||
| import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||||
| import com.xueyi.common.core.constant.basic.SqlConstants; | |||||
| import com.xueyi.common.core.web.result.AjaxResult; | import com.xueyi.common.core.web.result.AjaxResult; | ||||
| import com.xueyi.common.core.web.validate.V_A; | import com.xueyi.common.core.web.validate.V_A; | ||||
| import com.xueyi.common.core.web.validate.V_E; | import com.xueyi.common.core.web.validate.V_E; | ||||
| import com.xueyi.common.log.annotation.Log; | import com.xueyi.common.log.annotation.Log; | ||||
| import com.xueyi.common.log.enums.BusinessType; | import com.xueyi.common.log.enums.BusinessType; | ||||
| import com.xueyi.common.security.annotation.RequiresPermissions; | import com.xueyi.common.security.annotation.RequiresPermissions; | ||||
| import com.xueyi.common.sms.configure.SmsProperties; | |||||
| import com.xueyi.common.web.entity.controller.BaseController; | import com.xueyi.common.web.entity.controller.BaseController; | ||||
| import com.xueyi.common.web.utils.MyDateUtils; | |||||
| import com.xueyi.system.api.digitalmans.domain.po.DmDigitalmanExtPo; | |||||
| import com.xueyi.system.api.digitalmans.domain.po.DmDigitalmanPo; | |||||
| import com.xueyi.system.api.digitalmans.domain.po.DmVisitRecordsPo; | |||||
| import com.xueyi.system.api.digitalmans.domain.po.DmVisitorsPo; | |||||
| import com.xueyi.system.api.sms.domain.vo.SmsReqEntity; | |||||
| import com.xueyi.system.api.sms.feign.RemoteSmsService; | |||||
| import com.xueyi.system.api.staff.domain.po.DmStaffPo; | |||||
| import com.xueyi.system.digitalmans.mapper.DmDigitalmanExtMapper; | |||||
| import com.xueyi.system.digitalmans.mapper.DmDigitalmanMapper; | |||||
| import com.xueyi.system.staff.domain.dto.DmVisitorSmsConfigDto; | import com.xueyi.system.staff.domain.dto.DmVisitorSmsConfigDto; | ||||
| import com.xueyi.system.staff.domain.po.DmVisitorSmsConfigPo; | |||||
| import com.xueyi.system.staff.domain.query.DmVisitorSmsConfigQuery; | import com.xueyi.system.staff.domain.query.DmVisitorSmsConfigQuery; | ||||
| import com.xueyi.system.staff.mapper.DmStaffMapper; | |||||
| import com.xueyi.system.staff.mapper.DmVisitRecordsMapper; | |||||
| import com.xueyi.system.staff.mapper.DmVisitorSmsConfigMapper; | |||||
| import com.xueyi.system.staff.mapper.DmVisitorsMapper; | |||||
| import com.xueyi.system.staff.service.IDmVisitorSmsConfigService; | import com.xueyi.system.staff.service.IDmVisitorSmsConfigService; | ||||
| import com.xueyi.system.staff.service.impl.DmVisitRecordsServiceImpl; | |||||
| import com.xueyi.system.staff.service.impl.DmVisitorSmsConfigServiceImpl; | import com.xueyi.system.staff.service.impl.DmVisitorSmsConfigServiceImpl; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.validation.annotation.Validated; | import org.springframework.validation.annotation.Validated; | ||||
| @@ -20,6 +42,7 @@ import org.springframework.web.bind.annotation.PostMapping; | |||||
| import org.springframework.web.bind.annotation.PutMapping; | import org.springframework.web.bind.annotation.PutMapping; | ||||
| import org.springframework.web.bind.annotation.RequestBody; | import org.springframework.web.bind.annotation.RequestBody; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RequestParam; | |||||
| import org.springframework.web.bind.annotation.RestController; | import org.springframework.web.bind.annotation.RestController; | ||||
| import java.io.Serializable; | import java.io.Serializable; | ||||
| @@ -37,6 +60,32 @@ public class DmVisitorSmsConfigController extends BaseController<DmVisitorSmsCon | |||||
| @Autowired | @Autowired | ||||
| private DmVisitorSmsConfigServiceImpl visitorSmsConfigService; | private DmVisitorSmsConfigServiceImpl visitorSmsConfigService; | ||||
| @Autowired | |||||
| private RemoteSmsService smsService; | |||||
| @Autowired | |||||
| private DmVisitRecordsServiceImpl visitRecordsService; | |||||
| @Autowired | |||||
| private DmVisitRecordsMapper visitRecordsMapper; | |||||
| @Autowired | |||||
| private DmVisitorsMapper visitorsMapper; | |||||
| @Autowired | |||||
| private SmsProperties smsProperties; | |||||
| @Autowired | |||||
| private DmVisitorSmsConfigMapper visitorSmsConfigMapper; | |||||
| @Autowired | |||||
| private DmDigitalmanExtMapper digitalmanExtMapper; | |||||
| @Autowired | |||||
| private DmDigitalmanMapper digitalmanMapper; | |||||
| @Autowired | |||||
| private DmStaffMapper staffMapper; | |||||
| /** 定义节点名称 */ | /** 定义节点名称 */ | ||||
| @Override | @Override | ||||
| protected String getNodeName() { | protected String getNodeName() { | ||||
| @@ -105,6 +154,49 @@ public class DmVisitorSmsConfigController extends BaseController<DmVisitorSmsCon | |||||
| return super.batchRemove(idList); | return super.batchRemove(idList); | ||||
| } | } | ||||
| @GetMapping("/send-sms") | |||||
| public AjaxResult sendVisitorSms(@RequestParam("visitRecordId") Long visitRecordId) { | |||||
| if (null != visitRecordId) { | |||||
| DmVisitRecordsPo po = visitRecordsMapper.selectById(visitRecordId); | |||||
| if (null != po && null != po.getVisitorId()) { | |||||
| DmVisitorsPo visitorsPo = visitorsMapper.selectById(po.getVisitorId()); | |||||
| SmsReqEntity send = new SmsReqEntity(); | |||||
| try { | |||||
| if (null != visitorsPo && StringUtils.isNotEmpty(visitorsPo.getPhone())) { | |||||
| DmVisitorSmsConfigPo dmVisitorSmsConfigPo = visitorSmsConfigMapper.selectOne(Wrappers.<DmVisitorSmsConfigPo>query().lambda().last(SqlConstants.LIMIT_ONE)); | |||||
| DmDigitalmanPo dmDigitalmanPo = digitalmanMapper.selectByCode(digitalmanExtMapper.selectOne(Wrappers.<DmDigitalmanExtPo>query().lambda().last(SqlConstants.LIMIT_ONE)).getManCode()); | |||||
| DmStaffPo staffPo = staffMapper.selectById(po.getUserId()); | |||||
| JSONObject json = new JSONObject(); | |||||
| String code = visitRecordsService.genVisitorCode(); | |||||
| json.put("code", code); | |||||
| json.put("nickName", visitorsPo.getName()); | |||||
| json.put("robotName", dmDigitalmanPo.getName()); | |||||
| json.put("dateTime", LocalDateTimeUtil.format(po.getVisitDate(), MyDateUtils.DEFAULT_DATE_PATTERN)); | |||||
| json.put("companyName", dmVisitorSmsConfigPo!=null?dmVisitorSmsConfigPo.getCompanyName():""); | |||||
| json.put("companyAddr", dmVisitorSmsConfigPo!=null?dmVisitorSmsConfigPo.getCompanyAddress():""); | |||||
| json.put("receiverName", staffPo!=null?staffPo.getUserName():""); | |||||
| json.put("receiverPhone", staffPo!=null?staffPo.getPhone():""); | |||||
| json.put("parkInfo", dmVisitorSmsConfigPo!=null?dmVisitorSmsConfigPo.getParkPrompt():""); | |||||
| //给访客发送短信 | |||||
| send.setPhone(visitorsPo.getPhone()); | |||||
| send.setTemplate(smsProperties.getVisitorTemplate()); | |||||
| send.setDataMap(json.toJSONString()); | |||||
| smsService.sendSms(send); | |||||
| } | |||||
| } catch (Exception e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| } | |||||
| } | |||||
| return AjaxResult.success(); | |||||
| } | |||||
| /** | /** | ||||
| * 获取租户访客接待短信模板配置选择框列表 | * 获取租户访客接待短信模板配置选择框列表 | ||||
| */ | */ | ||||
| @@ -0,0 +1,25 @@ | |||||
| package com.xueyi.system.staff.domain.dto; | |||||
| import com.xueyi.system.staff.domain.po.DmVisitorOperateLogPo; | |||||
| import lombok.Data; | |||||
| import lombok.EqualsAndHashCode; | |||||
| import java.io.Serial; | |||||
| /** | |||||
| * 租户访客接待短信模板配置 数据传输对象 | |||||
| * | |||||
| * @author xueyi | |||||
| */ | |||||
| @Data | |||||
| @EqualsAndHashCode(callSuper = true) | |||||
| public class DmVisitorOperateLogDto extends DmVisitorOperateLogPo { | |||||
| @Serial | |||||
| private static final long serialVersionUID = 1L; | |||||
| public static final Integer BUSINESS_TYPE_CREATE = 1; | |||||
| public static final Integer BUSINESS_TYPE_UPDATE = 2; | |||||
| public static final Integer BUSINESS_TYPE_DELETE = 3; | |||||
| public static final Integer BUSINESS_TYPE_OTHER = 0; | |||||
| } | |||||
| @@ -0,0 +1,64 @@ | |||||
| package com.xueyi.system.staff.domain.po; | |||||
| import com.baomidou.mybatisplus.annotation.OrderBy; | |||||
| import com.baomidou.mybatisplus.annotation.TableName; | |||||
| import com.fasterxml.jackson.annotation.JsonFormat; | |||||
| import com.xueyi.common.core.annotation.Excel; | |||||
| import com.xueyi.common.core.web.tenant.base.TBaseEntity; | |||||
| import lombok.Data; | |||||
| import lombok.EqualsAndHashCode; | |||||
| import java.io.Serial; | |||||
| import java.time.LocalDateTime; | |||||
| /** | |||||
| * 操作日志 持久化对象 | |||||
| * | |||||
| * @author xueyi | |||||
| */ | |||||
| @Data | |||||
| @EqualsAndHashCode(callSuper = true) | |||||
| @TableName(value = "dm_visitor_operate_log",excludeProperty = {"name","sort","createBy","createTime","updateBy","updateTime","remark"}) | |||||
| public class DmVisitorOperateLogPo extends TBaseEntity { | |||||
| @Serial | |||||
| private static final long serialVersionUID = 1L; | |||||
| /** 操作模块 */ | |||||
| protected String title; | |||||
| /** 业务类型(0其它 1新增 2修改 3删除) */ | |||||
| protected Integer businessType; | |||||
| /** 请求方法 */ | |||||
| protected String method; | |||||
| /** 请求方式 */ | |||||
| protected String requestMethod; | |||||
| protected Long visitorId; | |||||
| /** 操作Id */ | |||||
| protected Long userId; | |||||
| /** 操作人员账号 */ | |||||
| protected String userName; | |||||
| /** 操作人员名称 */ | |||||
| protected String userNick; | |||||
| /** 请求参数 */ | |||||
| protected String param; | |||||
| /** 返回参数 */ | |||||
| protected String jsonResult; | |||||
| /** 操作时间 */ | |||||
| @OrderBy(sort = 10) | |||||
| @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") | |||||
| @Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") | |||||
| protected LocalDateTime operateTime; | |||||
| } | |||||
| @@ -0,0 +1,21 @@ | |||||
| package com.xueyi.system.staff.domain.query; | |||||
| import com.xueyi.system.api.digitalmans.domain.po.DmVisitorsPo; | |||||
| import com.xueyi.system.staff.domain.po.DmVisitorOperateLogPo; | |||||
| import lombok.Data; | |||||
| import lombok.EqualsAndHashCode; | |||||
| import java.io.Serial; | |||||
| /** | |||||
| * 访客 数据查询对象 | |||||
| * | |||||
| * @author xueyi | |||||
| */ | |||||
| @Data | |||||
| @EqualsAndHashCode(callSuper = true) | |||||
| public class DmVisitorOperateLogQuery extends DmVisitorOperateLogPo { | |||||
| @Serial | |||||
| private static final long serialVersionUID = 1L; | |||||
| } | |||||
| @@ -26,15 +26,15 @@ class VisitRecordGraphQLMutationResolver implements GraphQLMutationResolver { | |||||
| private DmVisitRecordsConverter converter; | private DmVisitRecordsConverter converter; | ||||
| public boolean createVisitRecord(DmVisitRecordsPo input){ | |||||
| public boolean createVisitRecord(DmVisitRecordsPo input, Long staffId){ | |||||
| return mapper.insert(input) > 0; | return mapper.insert(input) > 0; | ||||
| } | } | ||||
| public boolean updateVisitRecord(DmVisitRecordsPo input){ | |||||
| public boolean updateVisitRecord(DmVisitRecordsPo input, Long staffId){ | |||||
| return mapper.updateById(input) > 0; | return mapper.updateById(input) > 0; | ||||
| } | } | ||||
| public Boolean deleteVisitRecord(Long id){ | |||||
| public Boolean deleteVisitRecord(Long id, Long staffId){ | |||||
| return mapper.deleteById(id) > 0; | return mapper.deleteById(id) > 0; | ||||
| } | } | ||||
| } | } | ||||
| @@ -43,15 +43,15 @@ class VisitorGraphQLMutationResolver implements GraphQLMutationResolver { | |||||
| return po; | return po; | ||||
| } | } | ||||
| public boolean updateVisitor(DmVisitorsPo po){ | |||||
| public boolean updateVisitor(DmVisitorsPo po, Long staffId){ | |||||
| return mapper.updateOne(initPo(po)) > 0; | return mapper.updateOne(initPo(po)) > 0; | ||||
| } | } | ||||
| public boolean createVisitor(DmVisitorsPo po){ | |||||
| public boolean createVisitor(DmVisitorsPo po, Long staffId){ | |||||
| return mapper.insert(initPo(po)) > 0; | return mapper.insert(initPo(po)) > 0; | ||||
| } | } | ||||
| public Boolean deleteVisitor(Long id){ | |||||
| public Boolean deleteVisitor(Long id, Long staffId){ | |||||
| return mapper.deleteById(id) > 0; | return mapper.deleteById(id) > 0; | ||||
| } | } | ||||
| } | } | ||||
| @@ -0,0 +1,58 @@ | |||||
| package com.xueyi.system.staff.graphql; | |||||
| import cn.hutool.core.date.LocalDateTimeUtil; | |||||
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |||||
| import com.baomidou.mybatisplus.core.toolkit.StringUtils; | |||||
| import com.xueyi.common.web.utils.MyDateUtils; | |||||
| import com.xueyi.system.staff.domain.po.DmVisitorOperateLogPo; | |||||
| import com.xueyi.system.staff.mapper.DmVisitorOperateLogMapper; | |||||
| import graphql.kickstart.tools.GraphQLQueryResolver; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.stereotype.Component; | |||||
| import java.time.LocalDate; | |||||
| import java.util.List; | |||||
| /* | |||||
| * @author yk | |||||
| * @description | |||||
| * @date 2023-12-25 19:55 | |||||
| */ | |||||
| @Component | |||||
| class VisitorLogsGraphQLQueryResolver implements GraphQLQueryResolver { | |||||
| @Autowired | |||||
| private DmVisitorOperateLogMapper mapper; | |||||
| public DmVisitorOperateLogPo visitorLog(Long id) { | |||||
| return mapper.selectById(id); | |||||
| } | |||||
| public List<DmVisitorOperateLogPo> visitorLogs(String userName, Long userId, Long visitorId, Integer businessType, LocalDate startDate, LocalDate endDate){ | |||||
| QueryWrapper<DmVisitorOperateLogPo> query = new QueryWrapper<>(); | |||||
| if (StringUtils.isNotEmpty(userName)) { | |||||
| query.like("user_name", userName); | |||||
| } | |||||
| if (null != userId) { | |||||
| query.eq("user_id", userId); | |||||
| } | |||||
| if (null != visitorId) { | |||||
| query.eq("visitor_id", visitorId); | |||||
| } | |||||
| if (null != businessType) { | |||||
| query.eq("business_type", businessType); | |||||
| } | |||||
| if (null != startDate && null != endDate){ | |||||
| query.between("operate_time", LocalDateTimeUtil.format(startDate, MyDateUtils.DEFAULT_DATE_PATTERN),LocalDateTimeUtil.format(endDate, MyDateUtils.DEFAULT_DATE_PATTERN)); | |||||
| } | |||||
| return mapper.selectList(query); | |||||
| } | |||||
| } | |||||
| @@ -1,89 +0,0 @@ | |||||
| 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.context.annotation.Import; | |||||
| import java.util.List; | |||||
| /** | |||||
| * @author yk | |||||
| * @description | |||||
| * @date 2024-01-04 22:03 | |||||
| */ | |||||
| @Configuration | |||||
| @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 InstrumentationContext<Object> beginFieldFetch(InstrumentationFieldFetchParameters parameters) { | |||||
| return null; | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,12 @@ | |||||
| package com.xueyi.system.staff.mapper; | |||||
| import com.xueyi.common.datasource.annotation.Isolate; | |||||
| import com.xueyi.common.web.entity.mapper.BaseMapper; | |||||
| import com.xueyi.system.staff.domain.dto.DmVisitorOperateLogDto; | |||||
| import com.xueyi.system.staff.domain.po.DmVisitorOperateLogPo; | |||||
| import com.xueyi.system.staff.domain.query.DmVisitorOperateLogQuery; | |||||
| @Isolate | |||||
| public interface DmVisitorOperateLogMapper extends BaseMapper<DmVisitorOperateLogQuery, DmVisitorOperateLogDto, DmVisitorOperateLogPo> { | |||||
| } | |||||
| @@ -16,6 +16,7 @@ type PassRecord { | |||||
| userName: String | userName: String | ||||
| userId: ID | userId: ID | ||||
| faceUrl: String | faceUrl: String | ||||
| recognizedTime: DateTime | |||||
| recognizedTime: String | |||||
| createTime: Date | |||||
| type: Int | type: Int | ||||
| } | } | ||||
| @@ -1,6 +1,7 @@ | |||||
| scalar Long | scalar Long | ||||
| scalar DateTime | scalar DateTime | ||||
| scalar Date | scalar Date | ||||
| scalar Time | |||||
| type Query { | type Query { | ||||
| @@ -21,12 +21,17 @@ input VisitRecordInput { | |||||
| extend type Mutation { | extend type Mutation { | ||||
| createVisitRecord( | createVisitRecord( | ||||
| input:VisitRecordInput! | input:VisitRecordInput! | ||||
| staffId: Long! | |||||
| ): Boolean | ): Boolean | ||||
| updateVisitRecord( | updateVisitRecord( | ||||
| input:VisitRecordInput! | input:VisitRecordInput! | ||||
| staffId: Long! | |||||
| ): Boolean | ): Boolean | ||||
| deleteVisitRecord(id:Long): Boolean | |||||
| deleteVisitRecord( | |||||
| id:Long! | |||||
| staffId: Long! | |||||
| ): Boolean | |||||
| } | } | ||||
| type VisitRecord { | type VisitRecord { | ||||
| @@ -24,13 +24,18 @@ input VisitorInput { | |||||
| extend type Mutation { | extend type Mutation { | ||||
| createVisitor( | createVisitor( | ||||
| input: VisitorInput! | input: VisitorInput! | ||||
| staffId: Long! | |||||
| ): Boolean | ): Boolean | ||||
| updateVisitor( | updateVisitor( | ||||
| input: VisitorInput! | input: VisitorInput! | ||||
| staffId: Long! | |||||
| ): Boolean | ): Boolean | ||||
| deleteVisitor(id: Long!): Boolean | |||||
| deleteVisitor( | |||||
| id: Long!, | |||||
| staffId: Long! | |||||
| ): Boolean | |||||
| } | } | ||||
| type Visitor { | type Visitor { | ||||
| @@ -0,0 +1,25 @@ | |||||
| extend type Query { | |||||
| visitorLogs( | |||||
| userName:String | |||||
| userId:ID | |||||
| visitorId:ID | |||||
| businessType:Int | |||||
| startDate:Date | |||||
| endDate:Date | |||||
| ): [VisitorLog!] | |||||
| visitorLog(id:Long!): VisitorLog | |||||
| } | |||||
| type VisitorLog { | |||||
| id: ID | |||||
| businessType: Int | |||||
| method: String | |||||
| visitorId: ID | |||||
| userId: ID | |||||
| userName: String | |||||
| param: String | |||||
| jsonResult: String | |||||
| operateTime: String | |||||
| } | |||||