From 2ed2296a8205bba76a6ae847746dcac8a87c9e73 Mon Sep 17 00:00:00 2001 From: zhangchenbiao Date: Wed, 14 Jun 2023 10:44:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A5=E5=8E=86=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cool/store/exception/ApiException.java | 92 ++++++++++++++++ .../dto/calendar/CreateCalendarEventDTO.java | 33 ++++++ .../dto/calendar/DeleteCalendarEventDTO.java | 24 +++++ .../dto/calendar/UpdateCalendarEventDTO.java | 39 +++++++ .../dto/calendar/UserCalendarsEventDTO.java | 37 +++++++ .../dto/calendar/UserFreeBusyInfoDTO.java | 22 ++++ .../store/response/error/ErrorResponse.java | 25 +++++ .../store/handler/CustomExceptionHandler.java | 39 +++++++ .../com/cool/store/http/ISVHttpRequest.java | 101 ++++++++++++++---- .../impl/EnterpriseSyncServiceImpl.java | 1 + .../cool/store/controller/TestController.java | 31 ++++++ 11 files changed, 423 insertions(+), 21 deletions(-) create mode 100644 coolstore-partner-common/src/main/java/com/cool/store/exception/ApiException.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/calendar/CreateCalendarEventDTO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/calendar/DeleteCalendarEventDTO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/calendar/UpdateCalendarEventDTO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/calendar/UserCalendarsEventDTO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/calendar/UserFreeBusyInfoDTO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/response/error/ErrorResponse.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/handler/CustomExceptionHandler.java diff --git a/coolstore-partner-common/src/main/java/com/cool/store/exception/ApiException.java b/coolstore-partner-common/src/main/java/com/cool/store/exception/ApiException.java new file mode 100644 index 000000000..b6e12b983 --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/exception/ApiException.java @@ -0,0 +1,92 @@ +package com.cool.store.exception; + +import com.cool.store.enums.ErrorCodeEnum; +import lombok.Data; + +import java.text.MessageFormat; + +/** + * @Description 业务异常类返回 + * @author Aaron + * @date 2019/12/20 + */ +@Data +public class ApiException extends Exception{ + private static final long serialVersionUID = -5068776742356414959L; + + /** + * 返回码 + */ + private Integer errorCode; + + /** + * 返回信息 + */ + private String errorMessage; + + private Object data; + + /** + * 构造函数 + * @param errorCode + * @param errorMessage + */ + @Deprecated + public ApiException(Integer errorCode, String errorMessage) { + super(errorMessage); + this.errorCode = errorCode; + this.errorMessage = errorMessage; + } + + + /** + * 构造函数 + * @param errorCode + * @param errorMessage + */ + @Deprecated + public ApiException(Integer errorCode, String errorMessage, Object data) { + super(errorMessage); + this.errorCode = errorCode; + this.errorMessage = errorMessage; + this.data = data; + } + + /** + * 构造函数 + * @param errorMessage + */ + public ApiException(String errorMessage) { + super(errorMessage); + this.errorMessage = errorMessage; + } + + /** + * 构造函数 + * @param errorCode + * @param errorMessage + * @param cause + */ + @Deprecated + public ApiException(Integer errorCode, String errorMessage, Throwable cause) { + super(errorMessage, cause); + this.errorCode = errorCode; + this.errorMessage = errorMessage; + } + + public ApiException(ErrorCodeEnum responseEnum) { + super(responseEnum.getMessage()); + this.errorCode = responseEnum.getCode(); + this.errorMessage = responseEnum.getMessage(); + } + + public ApiException(ErrorCodeEnum responseEnum, Object... objects) { + super(responseEnum.getMessage()); + String message = MessageFormat.format(responseEnum.getMessage(), objects); + this.errorCode = responseEnum.getCode(); + this.errorMessage = message; + } + + + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/calendar/CreateCalendarEventDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/calendar/CreateCalendarEventDTO.java new file mode 100644 index 000000000..fe8466aa2 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/calendar/CreateCalendarEventDTO.java @@ -0,0 +1,33 @@ +package com.cool.store.dto.calendar; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author zhangchenbiao + * @FileName: CreateCalendarEventDTO + * @Description: 创建用户日程到用户主日历 + * @date 2023-06-13 14:09 + */ +@Data +public class CreateCalendarEventDTO { + + @ApiModelProperty("发起人") + private String userId; + + @ApiModelProperty("日程标题") + private String summary; + + @ApiModelProperty("开始时间") + private Long startTime; + + @ApiModelProperty("截止时间") + private Long endTime; + + @ApiModelProperty("参与者") + private List joinUserIds; + + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/calendar/DeleteCalendarEventDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/calendar/DeleteCalendarEventDTO.java new file mode 100644 index 000000000..b3efa6b69 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/calendar/DeleteCalendarEventDTO.java @@ -0,0 +1,24 @@ +package com.cool.store.dto.calendar; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author zhangchenbiao + * @FileName: DeleteCalendarEventDTO + * @Description: + * @date 2023-06-13 15:02 + */ +@Data +public class DeleteCalendarEventDTO { + + @ApiModelProperty("发起人id") + private String userId; + + @ApiModelProperty("日历id") + private String calendarId; + + @ApiModelProperty("事件id") + private String eventId; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/calendar/UpdateCalendarEventDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/calendar/UpdateCalendarEventDTO.java new file mode 100644 index 000000000..396c8e656 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/calendar/UpdateCalendarEventDTO.java @@ -0,0 +1,39 @@ +package com.cool.store.dto.calendar; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author zhangchenbiao + * @FileName: CreateCalendarEventDTO + * @Description: 创建用户日程到用户主日历 + * @date 2023-06-13 14:09 + */ +@Data +public class UpdateCalendarEventDTO { + + @ApiModelProperty("发起人id") + private String userId; + + @ApiModelProperty("日历id") + private String calendarId; + + @ApiModelProperty("事件id") + private String eventId; + + @ApiModelProperty("日程标题") + private String summary; + + @ApiModelProperty("开始时间") + private Long startTime; + + @ApiModelProperty("截止时间") + private Long endTime; + + @ApiModelProperty("参与者") + private List joinUserIds; + + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/calendar/UserCalendarsEventDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/calendar/UserCalendarsEventDTO.java new file mode 100644 index 000000000..e2214530d --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/calendar/UserCalendarsEventDTO.java @@ -0,0 +1,37 @@ +package com.cool.store.dto.calendar; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author zhangchenbiao + * @FileName: UserCalendarsEventVO + * @Description: + * @date 2023-06-13 11:18 + */ +@Data +public class UserCalendarsEventDTO { + + @ApiModelProperty("日历id") + private String calendarId; + + @ApiModelProperty("日程id") + private String eventId; + + @ApiModelProperty("日程标题") + private String summary; + + @ApiModelProperty("开始时间") + private Long startTime; + + @ApiModelProperty("截止时间") + private Long endTime; + + public UserCalendarsEventDTO(String calendarId, String eventId, String summary, Long startTime, Long endTime) { + this.calendarId = calendarId; + this.eventId = eventId; + this.summary = summary; + this.startTime = startTime; + this.endTime = endTime; + } +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/calendar/UserFreeBusyInfoDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/calendar/UserFreeBusyInfoDTO.java new file mode 100644 index 000000000..72c5b24e9 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/calendar/UserFreeBusyInfoDTO.java @@ -0,0 +1,22 @@ +package com.cool.store.dto.calendar; + +import lombok.Data; + +/** + * @author zhangchenbiao + * @FileName: UserFreeBusyList + * @Description: + * @date 2023-06-13 10:06 + */ +@Data +public class UserFreeBusyInfoDTO { + + private Long startTime; + + private Long endTime; + + public UserFreeBusyInfoDTO(long startTime, long endTime) { + this.startTime = startTime; + this.endTime = endTime; + } +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/response/error/ErrorResponse.java b/coolstore-partner-model/src/main/java/com/cool/store/response/error/ErrorResponse.java new file mode 100644 index 000000000..049f497e9 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/response/error/ErrorResponse.java @@ -0,0 +1,25 @@ +package com.cool.store.response.error; + +/** + * @author zhangchenbiao + * @FileName: ErrorResponse + * @Description: + * @date 2023-06-13 19:43 + */ +public class ErrorResponse { + private Integer code; + private String message; + + public ErrorResponse(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/handler/CustomExceptionHandler.java b/coolstore-partner-service/src/main/java/com/cool/store/handler/CustomExceptionHandler.java new file mode 100644 index 000000000..c46c6182b --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/handler/CustomExceptionHandler.java @@ -0,0 +1,39 @@ +package com.cool.store.handler; + + +import com.cool.store.exception.ApiException; +import com.cool.store.exception.ServiceException; +import com.cool.store.response.error.ErrorResponse; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +/** + * @author zhangchenbiao + * @FileName: CustomExceptionHandler + * @Description: 自定义异常处理 + * @date 2023-06-13 19:42 + */ +@RestControllerAdvice +public class CustomExceptionHandler { + + @ExceptionHandler(value = ServiceException.class) + public ResponseEntity handleCustomException(ServiceException e) { + ErrorResponse errorResponse = new ErrorResponse(e.getErrorCode(), e.getMessage()); + return new ResponseEntity<>(errorResponse, HttpStatus.BAD_REQUEST); + } + + @ExceptionHandler(value = ApiException.class) + public ResponseEntity handleCustomException(ApiException e) { + ErrorResponse errorResponse = new ErrorResponse(e.getErrorCode(), e.getMessage()); + return new ResponseEntity<>(errorResponse, HttpStatus.BAD_REQUEST); + } + + @ExceptionHandler(value = Exception.class) + public ResponseEntity handleException(Exception e) { + ErrorResponse errorResponse = new ErrorResponse(HttpStatus.INTERNAL_SERVER_ERROR.value(), e.getMessage()); + return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR); + } + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/http/ISVHttpRequest.java b/coolstore-partner-service/src/main/java/com/cool/store/http/ISVHttpRequest.java index f6f6a38c4..58833267d 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/http/ISVHttpRequest.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/http/ISVHttpRequest.java @@ -1,6 +1,7 @@ package com.cool.store.http; import com.alibaba.fastjson.JSONObject; +import com.cool.store.dto.calendar.*; import com.cool.store.dto.enterprise.AuthInfoDTO; import com.cool.store.dto.enterprise.AuthScopeDTO; import com.cool.store.dto.enterprise.EnterpriseUserDTO; @@ -8,6 +9,8 @@ import com.cool.store.dto.enterprise.SysDepartmentDTO; import com.cool.store.dto.login.UserIdInfoDTO; import com.cool.store.dto.response.ResultDTO; import com.cool.store.entity.EnterpriseUserDO; +import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.exception.ApiException; import com.cool.store.mq.util.HttpRestTemplateService; import com.cool.store.request.EnterpriseUserRequest; import com.cool.store.utils.RestTemplateUtil; @@ -188,28 +191,84 @@ public class ISVHttpRequest { return null; } - public List getDeptUsers(String deptId) { - List departmentUsers = getDepartmentUsers(deptId); - if (CollectionUtils.isEmpty(departmentUsers)){ - return Lists.newArrayList(); - } - List userList = Lists.newArrayList(); - for (EnterpriseUserDTO enterpriseUserDTO:departmentUsers) { - EnterpriseUserDO enterpriseUser = new EnterpriseUserDO(); - enterpriseUser.setCreateTime(new Date()); - enterpriseUser.setIsAdmin(false); - enterpriseUser.setRemark(enterpriseUserDTO.getRemark()); - enterpriseUser.setUserId(enterpriseUserDTO.getUserId()); - if (enterpriseUserDTO.getIsLeaderInDepts() != null) { - //enterpriseUser.setIsLeaderInDepts(JSONObject.toJSONString(enterpriseUserDTO.getIsLeaderInDepts())); + /** + * 获取用户忙闲信息 + * @param userId + * @param startTime 开始时间 毫秒时间戳 + * @param endTime 截止时间 毫秒时间戳 + * @return + */ + public List getFreeBusyList(String userId, long startTime, long endTime) throws ApiException{ + String url = isvDomain + "/isv/user/getFreeBusyList"; + HashMap requestMap = new HashMap(); + requestMap.put("userId", userId); + requestMap.put("startTime", startTime); + requestMap.put("endTime", endTime); + ResultDTO responseEntity = null; + try { + responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap); + log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity)); + if(Objects.nonNull(responseEntity.getData()) && responseEntity.isSuccess()){ + return JSONObject.parseArray(JSONObject.toJSONString(responseEntity.getData()), UserFreeBusyInfoDTO.class); } - EnterpriseUserRequest enterpriseUserRequest = new EnterpriseUserRequest(); - //enterpriseUserRequest.setEnterpriseUserDO(enterpriseUser); - if (CollectionUtils.isNotEmpty(enterpriseUserDTO.getDepartmentLists())) { - enterpriseUserRequest.setDepartment(JSONObject.toJSONString(enterpriseUserDTO.getDepartmentLists())); - } - userList.add(enterpriseUserRequest); + } catch (Exception e) { + log.info("调用isv出错{}", e); + throw new ApiException(e.getMessage()); } - return userList; + return null; + } + + /** + * 创建飞书日程 + * @param param + * @return + * @throws ApiException + */ + public UserCalendarsEventDTO createUserCalendarEvent(CreateCalendarEventDTO param) throws ApiException{ + String url = isvDomain + "/isv/user/createUserCalendarEvent"; + ResultDTO responseEntity = null; + try { + responseEntity = httpRestTemplateService.postForObject(url, param, ResultDTO.class); + log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity)); + if(Objects.nonNull(responseEntity.getData()) && responseEntity.isSuccess()){ + return JSONObject.parseObject(JSONObject.toJSONString(responseEntity.getData()), UserCalendarsEventDTO.class); + } + } catch (Exception e) { + log.info("调用isv出错{}", e); + throw new ApiException(e.getMessage()); + } + return null; + } + + public UserCalendarsEventDTO updateUserCalendarEvent(UpdateCalendarEventDTO param) throws ApiException{ + String url = isvDomain + "/isv/user/updateUserCalendarEvent"; + ResultDTO responseEntity = null; + try { + responseEntity = httpRestTemplateService.postForObject(url, param, ResultDTO.class); + log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity)); + if(Objects.nonNull(responseEntity.getData()) && responseEntity.isSuccess()){ + return JSONObject.parseObject(JSONObject.toJSONString(responseEntity.getData()), UserCalendarsEventDTO.class); + } + } catch (Exception e) { + log.info("调用isv出错{}", e); + throw new ApiException(e.getMessage()); + } + return null; + } + + public UserCalendarsEventDTO deleteUserCalendarEvent(DeleteCalendarEventDTO param) throws ApiException { + String url = isvDomain + "/isv/user/deleteUserCalendarEvent"; + ResultDTO responseEntity = null; + try { + responseEntity = httpRestTemplateService.postForObject(url, param, ResultDTO.class); + log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity)); + if(Objects.nonNull(responseEntity.getData()) && responseEntity.isSuccess()){ + return JSONObject.parseObject(JSONObject.toJSONString(responseEntity.getData()), UserCalendarsEventDTO.class); + } + } catch (Exception e) { + log.info("调用isv出错{}", e); + throw new ApiException(e.getMessage()); + } + return null; } } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseSyncServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseSyncServiceImpl.java index 2d049e1f6..4c8710e53 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseSyncServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/EnterpriseSyncServiceImpl.java @@ -3,6 +3,7 @@ package com.cool.store.service.impl; import com.cool.store.constants.CommonConstants; import com.cool.store.dao.*; import com.cool.store.dto.buser.UserEventDTO; +import com.cool.store.dto.calendar.DeleteCalendarEventDTO; import com.cool.store.dto.enterprise.*; import com.cool.store.entity.*; import com.cool.store.enums.DataSourceEnum; diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/controller/TestController.java b/coolstore-partner-webb/src/main/java/com/cool/store/controller/TestController.java index 6c4075c13..7b0be9497 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/controller/TestController.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/controller/TestController.java @@ -1,10 +1,16 @@ package com.cool.store.controller; import com.alibaba.fastjson.JSONObject; +import com.cool.store.dto.calendar.CreateCalendarEventDTO; +import com.cool.store.dto.calendar.DeleteCalendarEventDTO; +import com.cool.store.dto.calendar.UpdateCalendarEventDTO; +import com.cool.store.dto.calendar.UserCalendarsEventDTO; +import com.cool.store.dto.response.ResultDTO; import com.cool.store.entity.HyOpenAreaInfoDO; import com.cool.store.entity.EnterpriseUserDO; import com.cool.store.enums.RocketMqTagEnum; +import com.cool.store.exception.ApiException; import com.cool.store.mapper.HyOpenAreaInfoMapper; import com.cool.store.http.ISVHttpRequest; import com.cool.store.mq.producer.SimpleMessageService; @@ -166,4 +172,29 @@ public class TestController { return ResponseResult.success(); } + @GetMapping("/user/getFreeBusyList") + public ResultDTO> getFreeBusyList(@RequestParam("userId") String userId, @RequestParam("startTime") long startTime, + @RequestParam("endTime") long endTime) throws ApiException { + log.info("getUserCalendarsEvents : corpId:{}, appType:{}, userId:{}, startTime:{}, endTime:{}", userId, startTime, endTime); + return ResultDTO.successResult(isvHttpRequest.getFreeBusyList(userId, startTime, endTime)); + } + + @PostMapping("/user/createUserCalendarEvent") + public ResultDTO createUserCalendarEvent(@RequestBody CreateCalendarEventDTO param) throws ApiException { + log.info("createUserCalendarEvent , param:{}", JSONObject.toJSONString(param)); + return ResultDTO.successResult(isvHttpRequest.createUserCalendarEvent(param)); + } + + @PostMapping("/user/updateUserCalendarEvent") + public ResultDTO updateUserCalendarEvent(@RequestBody UpdateCalendarEventDTO param) throws ApiException { + log.info("updateUserCalendarEvent , param:{}", JSONObject.toJSONString(param)); + return ResultDTO.successResult(isvHttpRequest.updateUserCalendarEvent(param)); + } + + @PostMapping("/user/deleteUserCalendarEvent") + public ResultDTO deleteUserCalendarEvent(@RequestBody DeleteCalendarEventDTO param) throws ApiException { + log.info("createUserCalendarEvent , param:{}", JSONObject.toJSONString(param)); + return ResultDTO.successResult(isvHttpRequest.deleteUserCalendarEvent(param)); + } + }