diff --git a/contact-center/app/src/main/java/com/chatopera/cc/controller/api/ApiQuickReplyController.java b/contact-center/app/src/main/java/com/chatopera/cc/controller/api/ApiQuickReplyController.java index 6d9a768b..5ec4e83c 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/controller/api/ApiQuickReplyController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/controller/api/ApiQuickReplyController.java @@ -22,15 +22,17 @@ import com.chatopera.cc.persistence.es.QuickReplyRepository; import com.chatopera.cc.util.Menu; import com.chatopera.cc.util.RestResult; import com.chatopera.cc.util.RestResultType; +import lombok.RequiredArgsConstructor; import org.apache.commons.lang.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.lang.NonNull; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.server.ResponseStatusException; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; @@ -41,22 +43,23 @@ import javax.validation.Valid; */ @RestController @RequestMapping("/api/quickreply") +@RequiredArgsConstructor public class ApiQuickReplyController extends Handler { - @Autowired - private QuickReplyRepository quickReplyRepository; + @NonNull + private final QuickReplyRepository quickReplyRepository; /** * 返回快捷回复列表,cate为分类id,通过/api/quicktype 获取分类id,支持分页,分页参数为 p=1&ps=50,默认分页尺寸为 20条每页 - * @param request - * @param cate 搜索分类id,精确搜索,通过/api/quicktype 获取分类id - * @return + * + * @param cate 搜索分类id,精确搜索,通过/api/quicktype 获取分类id */ @RequestMapping(method = RequestMethod.GET) @Menu(type = "apps", subtype = "quickreply", access = true) public ResponseEntity list(HttpServletRequest request, String id, @Valid String cate, @Valid String q, Integer p, Integer ps) { if (StringUtils.isNotBlank(id)) { - return new ResponseEntity<>(new RestResult(RestResultType.OK, quickReplyRepository.findOne(id)), HttpStatus.OK); + return new ResponseEntity<>(new RestResult(RestResultType.OK, quickReplyRepository.findById(id) + .orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, String.format("Quick reply %s not found", id)))), HttpStatus.OK); } Page replyList = quickReplyRepository.getByOrgiAndCate(getOrgi(request), cate, q, @@ -66,9 +69,6 @@ public class ApiQuickReplyController extends Handler { /** * 新增或修改快捷回复 - * @param request - * @param user - * @return */ @RequestMapping(method = RequestMethod.PUT) @Menu(type = "apps", subtype = "quickreply", access = true) @@ -83,21 +83,13 @@ public class ApiQuickReplyController extends Handler { /** * 删除用户,只提供 按照用户ID删除 - * @param request - * @param id - * @return */ @RequestMapping(method = RequestMethod.DELETE) @Menu(type = "apps", subtype = "quickreply", access = true) - public ResponseEntity delete(HttpServletRequest request, @Valid String id) { + public ResponseEntity delete(@Valid String id) { RestResult result = new RestResult(RestResultType.OK); if (!StringUtils.isBlank(id)) { - QuickReply reply = quickReplyRepository.findOne(id); - if (reply != null) { - quickReplyRepository.delete(reply); - } else { - return new ResponseEntity<>(new RestResult(RestResultType.ORGAN_DELETE), HttpStatus.OK); - } + quickReplyRepository.deleteById(id); } return new ResponseEntity<>(result, HttpStatus.OK); } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/controller/api/ApiQuickTypeController.java b/contact-center/app/src/main/java/com/chatopera/cc/controller/api/ApiQuickTypeController.java index 3dcd063a..cb556490 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/controller/api/ApiQuickTypeController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/controller/api/ApiQuickTypeController.java @@ -1,111 +1,105 @@ -/* - * Copyright (C) 2017 优客服-多渠道客服系统 - * Modifications copyright (C) 2018-2019 Chatopera Inc, - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.chatopera.cc.controller.api; - -import com.chatopera.cc.controller.Handler; -import com.chatopera.cc.model.QuickType; -import com.chatopera.cc.persistence.es.QuickReplyRepository; -import com.chatopera.cc.persistence.repository.QuickTypeRepository; -import com.chatopera.cc.util.Menu; -import com.chatopera.cc.util.RestResult; -import com.chatopera.cc.util.RestResultType; -import org.apache.commons.lang.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RestController; - -import javax.servlet.http.HttpServletRequest; -import javax.validation.Valid; -import java.util.Date; -import java.util.List; - -/** - * 快捷回复分类服务 - * 快捷回复分类管理功能 - */ -@RestController -@RequestMapping("/api/quicktype") -public class ApiQuickTypeController extends Handler { - - @Autowired - private QuickTypeRepository quickTypeRepository; - - @Autowired - private QuickReplyRepository quickReplyRepository; - - /** - * 返回快捷回复分类列表 - * @param request - * @param quicktype 搜索pub,pri - * @return - */ - @RequestMapping(method = RequestMethod.GET) - @Menu(type = "apps", subtype = "quicktype", access = true) - public ResponseEntity list(HttpServletRequest request, @Valid String id, @Valid String quicktype) { - if (StringUtils.isNotBlank(id)) { - return new ResponseEntity<>(new RestResult(RestResultType.OK, quickTypeRepository.findOne(id)), HttpStatus.OK); - } - List quickTypeList = quickTypeRepository.findByOrgiAndQuicktype(getOrgi(request), quicktype); - return new ResponseEntity<>(new RestResult(RestResultType.OK, quickTypeList), HttpStatus.OK); - } - - /** - * 新增或修改快捷回复分类 - * @param request - * @param user - * @return - */ - @RequestMapping(method = RequestMethod.PUT) - @Menu(type = "apps", subtype = "quicktype", access = true) - public ResponseEntity put(HttpServletRequest request, @Valid QuickType quickType) { - if (quickType != null && !StringUtils.isBlank(quickType.getName())) { - quickType.setOrgi(getOrgi(request)); - quickType.setCreater(getUser(request).getId()); - quickType.setCreatetime(new Date()); - if (StringUtils.isNotBlank(quickType.getId())) { - quickType.setUpdatetime(new Date()); - } - quickType = quickTypeRepository.save(quickType); - } - return new ResponseEntity<>(new RestResult(RestResultType.OK, quickType), HttpStatus.OK); - } - - /** - * 删除分类,并且删除分类下的快捷回复 - * @param request - * @param id - * @return - */ - @RequestMapping(method = RequestMethod.DELETE) - @Menu(type = "apps", subtype = "reply", access = true) - public ResponseEntity delete(HttpServletRequest request, @Valid String id) { - RestResult result = new RestResult(RestResultType.OK); - if (!StringUtils.isBlank(id)) { - QuickType quickType = quickTypeRepository.findOne(id); - if (quickType != null) { - quickReplyRepository.deleteByCate(quickType.getId(), quickType.getOrgi()); - quickTypeRepository.delete(quickType); - } else { - return new ResponseEntity<>(new RestResult(RestResultType.ORGAN_DELETE), HttpStatus.OK); - } - } - return new ResponseEntity<>(result, HttpStatus.OK); - } -} +/* + * Copyright (C) 2017 优客服-多渠道客服系统 + * Modifications copyright (C) 2018-2019 Chatopera Inc, + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.chatopera.cc.controller.api; + +import com.chatopera.cc.controller.Handler; +import com.chatopera.cc.model.QuickType; +import com.chatopera.cc.persistence.es.QuickReplyRepository; +import com.chatopera.cc.persistence.repository.QuickTypeRepository; +import com.chatopera.cc.util.Menu; +import com.chatopera.cc.util.RestResult; +import com.chatopera.cc.util.RestResultType; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.lang.NonNull; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.server.ResponseStatusException; + +import javax.servlet.http.HttpServletRequest; +import javax.validation.Valid; +import java.util.Date; +import java.util.List; + +/** + * 快捷回复分类服务 + * 快捷回复分类管理功能 + */ +@RestController +@RequestMapping("/api/quicktype") +@RequiredArgsConstructor +public class ApiQuickTypeController extends Handler { + + @NonNull + private final QuickTypeRepository quickTypeRepository; + + @NonNull + private final QuickReplyRepository quickReplyRepository; + + /** + * 返回快捷回复分类列表 + * + * @param quicktype 搜索pub,pri + */ + @RequestMapping(method = RequestMethod.GET) + @Menu(type = "apps", subtype = "quicktype", access = true) + public ResponseEntity list(HttpServletRequest request, @Valid String id, @Valid String quicktype) { + if (StringUtils.isNotBlank(id)) { + return new ResponseEntity<>(new RestResult(RestResultType.OK, quickTypeRepository.findById(id) + .orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, String.format("Quick type %s not found", id)))), HttpStatus.OK); + } + List quickTypeList = quickTypeRepository.findByOrgiAndQuicktype(getOrgi(request), quicktype); + return new ResponseEntity<>(new RestResult(RestResultType.OK, quickTypeList), HttpStatus.OK); + } + + /** + * 新增或修改快捷回复分类 + */ + @RequestMapping(method = RequestMethod.PUT) + @Menu(type = "apps", subtype = "quicktype", access = true) + public ResponseEntity put(HttpServletRequest request, @Valid QuickType quickType) { + if (quickType != null && !StringUtils.isBlank(quickType.getName())) { + quickType.setOrgi(getOrgi(request)); + quickType.setCreater(getUser(request).getId()); + quickType.setCreatetime(new Date()); + if (StringUtils.isNotBlank(quickType.getId())) { + quickType.setUpdatetime(new Date()); + } + quickType = quickTypeRepository.save(quickType); + } + return new ResponseEntity<>(new RestResult(RestResultType.OK, quickType), HttpStatus.OK); + } + + /** + * 删除分类,并且删除分类下的快捷回复 + */ + @RequestMapping(method = RequestMethod.DELETE) + @Menu(type = "apps", subtype = "reply", access = true) + public ResponseEntity delete(@Valid String id) { + RestResult result = new RestResult(RestResultType.OK); + if (!StringUtils.isBlank(id)) { + quickTypeRepository.findById(id).ifPresent(quickType -> { + quickReplyRepository.deleteByCate(quickType.getId(), quickType.getOrgi()); + quickTypeRepository.delete(quickType); + }); + } + return new ResponseEntity<>(result, HttpStatus.OK); + } +} diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/dsdata/process/QuickReplyProcess.java b/contact-center/app/src/main/java/com/chatopera/cc/util/dsdata/process/QuickReplyProcess.java index de57512c..d47146db 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/dsdata/process/QuickReplyProcess.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/util/dsdata/process/QuickReplyProcess.java @@ -1,40 +1,39 @@ -/* - * Copyright (C) 2017 优客服-多渠道客服系统 - * Modifications copyright (C) 2018-2019 Chatopera Inc, - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.chatopera.cc.util.dsdata.process; - -import com.chatopera.cc.model.QuickReply; -import com.chatopera.cc.persistence.es.QuickReplyRepository; - -public class QuickReplyProcess implements JPAProcess{ - - private QuickReplyRepository quickReplyRes ; - - public QuickReplyProcess(QuickReplyRepository quickReplyRes){ - this.quickReplyRes = quickReplyRes ; - } - - @Override - public void process(Object data) { - quickReplyRes.save((QuickReply)data) ; - } - - @Override - public void end() { - - } - -} +/* + * Copyright (C) 2017 优客服-多渠道客服系统 + * Modifications copyright (C) 2018-2019 Chatopera Inc, + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.chatopera.cc.util.dsdata.process; + +import com.chatopera.cc.model.QuickReply; +import com.chatopera.cc.persistence.es.QuickReplyRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.lang.NonNull; + +@RequiredArgsConstructor +public class QuickReplyProcess implements JPAProcess { + @NonNull + private final QuickReplyRepository quickReplyRes; + + @Override + public void process(Object data) { + quickReplyRes.save((QuickReply) data); + } + + @Override + public void end() { + + } + +}