From d53b89219cb43da38fdd1d81a0ad95a0f7d74a8b Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Wed, 22 Dec 2021 20:39:51 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=84=E4=BB=B7+=E5=8F=96=E6=B6=88=E9=9C=80?= =?UTF-8?q?=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tools/exception/EpmetErrorCode.java | 4 +- ...lFormDTO.java => CancelDemandFormDTO.java} | 13 +- .../form/demand/EvaluateDemandFormDTO.java | 44 +++++++ .../dto/result/demand/FinishResultDTO.java | 6 +- .../controller/IcUserDemandRecController.java | 18 +-- .../controller/ResiDemandController.java | 83 ++++++++++-- .../epmet/service/IcUserDemandRecService.java | 12 +- .../impl/IcUserDemandRecServiceImpl.java | 119 ++++++++++++------ 8 files changed, 233 insertions(+), 66 deletions(-) rename epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/{StaffCancelFormDTO.java => CancelDemandFormDTO.java} (67%) create mode 100644 epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/EvaluateDemandFormDTO.java diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java index e2b10856d9..803b801402 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java @@ -93,8 +93,8 @@ public enum EpmetErrorCode { DEMAND_CAN_NOT_UPDATE(8223,"当前状态,不可更新需求"), DEMAND_NOT_EXITS(8224,"需求不存在"), DEMAND_SERVICE_NOT_EXITS(8225,"服务记录不存在"), - DEMAND_CAN_NOT_TAKE_ORDER(8226, "当前状态,不可指派"), - + DEMAND_CAN_NOT_TAKE_ORDER(8226, "当前状态,不可接单"), + DEMAND_CAN_NOT_EVALUATE(8227, "当前状态,不可评价"), REQUIRE_PERMISSION(8301, "您没有足够的操作权限"), THIRD_PLAT_REQUEST_ERROR(8302, "请求第三方平台错误"), diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/StaffCancelFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/CancelDemandFormDTO.java similarity index 67% rename from epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/StaffCancelFormDTO.java rename to epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/CancelDemandFormDTO.java index 09d920f55c..3240a74515 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/StaffCancelFormDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/CancelDemandFormDTO.java @@ -4,8 +4,11 @@ import lombok.Data; import javax.validation.constraints.NotBlank; +/** + * 取消需求入参dto + */ @Data -public class StaffCancelFormDTO { +public class CancelDemandFormDTO { public interface AddUserInternalGroup {} @NotBlank(message = "需求id不能为空",groups = AddUserInternalGroup.class) private String demandRecId; @@ -14,4 +17,12 @@ public class StaffCancelFormDTO { private String userId; @NotBlank(message = "customerId不能为空", groups = AddUserInternalGroup.class) private String customerId; + + /** + * staff:pc工作人员取消 + * resi:居民端用户主动需求 + * 代码里写死的UserDemandConstant.RESI/STAFF + */ + private String userType; } + diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/EvaluateDemandFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/EvaluateDemandFormDTO.java new file mode 100644 index 0000000000..1a0a5d28f2 --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/EvaluateDemandFormDTO.java @@ -0,0 +1,44 @@ +package com.epmet.dto.form.demand; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 居民端-需求-服务评价入参 + */ +@Data +public class EvaluateDemandFormDTO implements Serializable { + public interface AddUserInternalGroup { + } + public interface ShowGroup extends CustomerClientShowGroup { + } + + + @NotBlank(message = "需求id不能为空", groups = AddUserInternalGroup.class) + private String demandRecId; + + @NotBlank(message = "服务id不能为空", groups = AddUserInternalGroup.class) + private String serviceId; + + @NotBlank(message = "完成结果不能为空", groups = ShowGroup.class) + private String finishResult; + + @Length(max = 1000,message = "最多输入1000字",groups = {ShowGroup.class}) + private String finishDesc; + + @NotNull(message = "得分不能为空", groups = ShowGroup.class) + private BigDecimal score; + + + + @NotBlank(message = "userId不能为空", groups = AddUserInternalGroup.class) + private String userId; + @NotBlank(message = "customerId不能为空", groups = AddUserInternalGroup.class) + private String customerId; +} diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/FinishResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/FinishResultDTO.java index 96d03b9c2d..db0bff7f8d 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/FinishResultDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/FinishResultDTO.java @@ -10,6 +10,8 @@ import java.io.Serializable; */ @Data public class FinishResultDTO implements Serializable { - private Boolean sendCalStatisfaction; - private String partyUnitId; + private String serverId; + private String serviceType; + private Boolean grantPoint; + private Integer awardPoint; } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcUserDemandRecController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcUserDemandRecController.java index 269cc17225..31c250bc83 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcUserDemandRecController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcUserDemandRecController.java @@ -19,6 +19,7 @@ package com.epmet.controller; import com.epmet.commons.rocketmq.messages.CalPartyUnitSatisfactionFormDTO; import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ExcelUtils; @@ -29,10 +30,6 @@ import com.epmet.constant.UserDemandConstant; import com.epmet.dto.form.SystemMsgFormDTO; import com.epmet.dto.form.demand.*; import com.epmet.dto.result.demand.*; -import com.epmet.dto.result.demand.DemandRecResultDTO; -import com.epmet.dto.result.demand.FinishResultDTO; -import com.epmet.dto.result.demand.IcResiUserReportDemandRes; -import com.epmet.dto.result.demand.OptionDTO; import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.service.*; import lombok.extern.slf4j.Slf4j; @@ -150,10 +147,11 @@ public class IcUserDemandRecController { * @return */ @PostMapping("cancel") - public Result cancel(@LoginUser TokenDto tokenDto,@RequestBody StaffCancelFormDTO formDTO){ + public Result cancel(@LoginUser TokenDto tokenDto,@RequestBody CancelDemandFormDTO formDTO){ formDTO.setCustomerId(tokenDto.getCustomerId()); formDTO.setUserId(tokenDto.getUserId()); - ValidatorUtils.validateEntity(formDTO,StaffCancelFormDTO.AddUserInternalGroup.class); + formDTO.setUserType(UserDemandConstant.STAFF); + ValidatorUtils.validateEntity(formDTO,CancelDemandFormDTO.AddUserInternalGroup.class); icUserDemandRecService.cancel(formDTO); return new Result(); } @@ -191,14 +189,18 @@ public class IcUserDemandRecController { formDTO.setUserType(UserDemandConstant.STAFF); ValidatorUtils.validateEntity(formDTO,FinishStaffFromDTO.IcShowGroup.class,FinishStaffFromDTO.AddUserInternalGroup.class); FinishResultDTO finishResultDTO=icUserDemandRecService.finish(formDTO); - if(finishResultDTO.getSendCalStatisfaction()){ + //如果服务方是区域化党建单位,需要实时去计算他的群众满意度=服务过的需求的评价分数相加➗ 需求的总个数。 + if(UserDemandConstant.PARTY_UNIT.equals(finishResultDTO.getServiceType())){ CalPartyUnitSatisfactionFormDTO mqMsg = new CalPartyUnitSatisfactionFormDTO(); mqMsg.setCustomerId(formDTO.getCustomerId()); - mqMsg.setPartyUnitId(finishResultDTO.getPartyUnitId()); + mqMsg.setPartyUnitId(finishResultDTO.getServerId()); SystemMsgFormDTO form = new SystemMsgFormDTO(); form.setMessageType(SystemMessageType.CAL_PARTY_UNIT_SATISFACTION); form.setContent(mqMsg); epmetMessageOpenFeignClient.sendSystemMsgByMQ(form); + } else if (UserDemandConstant.VOLUNTEER.equals(finishResultDTO.getServiceType()) && finishResultDTO.getAwardPoint() > NumConstant.ZERO) { + // todo + // 志愿者发放积分 } return new Result(); } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiDemandController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiDemandController.java index 679f8beee0..1e5dc8d033 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiDemandController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiDemandController.java @@ -1,19 +1,22 @@ package com.epmet.controller; +import com.epmet.commons.rocketmq.messages.CalPartyUnitSatisfactionFormDTO; import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.dto.form.PageFormDTO; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.constant.SystemMessageType; import com.epmet.constant.UserDemandConstant; -import com.epmet.dto.form.demand.DemandDetailFormDTO; -import com.epmet.dto.form.demand.FinishStaffFromDTO; -import com.epmet.dto.form.demand.ListHallFormDTO; -import com.epmet.dto.form.demand.TakeOrderFormDTO; +import com.epmet.dto.form.SystemMsgFormDTO; +import com.epmet.dto.form.demand.*; import com.epmet.dto.result.demand.DemandDetailResDTO; import com.epmet.dto.result.demand.DemandHallResultDTO; +import com.epmet.dto.result.demand.FinishResultDTO; import com.epmet.dto.result.demand.TakeOrderResultDTO; +import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.service.IcUserDemandRecService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -37,18 +40,21 @@ import java.util.List; public class ResiDemandController { @Autowired private IcUserDemandRecService icUserDemandRecService; + @Autowired + private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient; /** * 居民端-需求大厅(未处理、处理中、已完成) + * * @param tokenDto * @param formDTO * @return */ @PostMapping("list-hall") - public Result> listHall(@LoginUser TokenDto tokenDto, @RequestBody ListHallFormDTO formDTO){ + public Result> listHall(@LoginUser TokenDto tokenDto, @RequestBody ListHallFormDTO formDTO) { formDTO.setCurrentUserId(tokenDto.getUserId()); formDTO.setCustomerId(tokenDto.getCustomerId()); - ValidatorUtils.validateEntity(formDTO, PageFormDTO.AddUserInternalGroup.class,ListHallFormDTO.AddUserInternalGroup.class); + ValidatorUtils.validateEntity(formDTO, PageFormDTO.AddUserInternalGroup.class, ListHallFormDTO.AddUserInternalGroup.class); return new Result>().ok(icUserDemandRecService.listHall(formDTO)); } @@ -60,38 +66,91 @@ public class ResiDemandController { * @return */ @PostMapping("detail-hall") - public Result queryDetailHall(@LoginUser TokenDto tokenDto, @RequestBody DemandDetailFormDTO formDTO){ + public Result queryDetailHall(@LoginUser TokenDto tokenDto, @RequestBody DemandDetailFormDTO formDTO) { formDTO.setCustomerId(tokenDto.getCustomerId()); - ValidatorUtils.validateEntity(formDTO,DemandDetailFormDTO.AddUserInternalGroup.class); + ValidatorUtils.validateEntity(formDTO, DemandDetailFormDTO.AddUserInternalGroup.class); return new Result().ok(icUserDemandRecService.queryDetailHall(formDTO)); } /** * 需求大厅-我要接单 + * * @param tokenDto * @return */ @PostMapping("takeorder") - public Result takeOrder(@LoginUser TokenDto tokenDto, @RequestBody TakeOrderFormDTO formDTO){ + public Result takeOrder(@LoginUser TokenDto tokenDto, @RequestBody TakeOrderFormDTO formDTO) { formDTO.setUserId(tokenDto.getUserId()); - ValidatorUtils.validateEntity(formDTO,TakeOrderFormDTO.AddUserInternalGroup.class); + ValidatorUtils.validateEntity(formDTO, TakeOrderFormDTO.AddUserInternalGroup.class); return new Result().ok(icUserDemandRecService.takeOrder(formDTO)); } /** * 需求大厅-完成需求 + * * @param tokenDto * @param formDTO * @return */ @PostMapping("finish") - public Result finish(@LoginUser TokenDto tokenDto, @RequestBody FinishStaffFromDTO formDTO){ + public Result finish(@LoginUser TokenDto tokenDto, @RequestBody FinishStaffFromDTO formDTO) { formDTO.setCustomerId(tokenDto.getCustomerId()); formDTO.setUserId(tokenDto.getUserId()); formDTO.setType(UserDemandConstant.FINISHED); formDTO.setUserType(UserDemandConstant.RESI); - ValidatorUtils.validateEntity(formDTO,FinishStaffFromDTO.ResiShowGroup.class,FinishStaffFromDTO.AddUserInternalGroup.class); + ValidatorUtils.validateEntity(formDTO, FinishStaffFromDTO.ResiShowGroup.class, FinishStaffFromDTO.AddUserInternalGroup.class); icUserDemandRecService.finish(formDTO); return new Result(); } + + /** + * 我的需求-服务评价 + * 已经完成的可以评价 + * + * @param tokenDto + * @param formDTO + * @return + */ + @PostMapping("evaluate") + public Result evaluate(@LoginUser TokenDto tokenDto, @RequestBody EvaluateDemandFormDTO formDTO) { + formDTO.setUserId(tokenDto.getUserId()); + formDTO.setCustomerId(tokenDto.getCustomerId()); + ValidatorUtils.validateEntity(formDTO, EvaluateDemandFormDTO.ShowGroup.class, EvaluateDemandFormDTO.AddUserInternalGroup.class); + FinishResultDTO finishResultDTO = icUserDemandRecService.evaluate(formDTO); + //如果服务方是区域化党建单位,需要实时去计算他的群众满意度=服务过的需求的评价分数相加➗ 需求的总个数。 + if (UserDemandConstant.PARTY_UNIT.equals(finishResultDTO.getServiceType())) { + CalPartyUnitSatisfactionFormDTO mqMsg = new CalPartyUnitSatisfactionFormDTO(); + mqMsg.setCustomerId(formDTO.getCustomerId()); + mqMsg.setPartyUnitId(finishResultDTO.getServerId()); + SystemMsgFormDTO form = new SystemMsgFormDTO(); + form.setMessageType(SystemMessageType.CAL_PARTY_UNIT_SATISFACTION); + form.setContent(mqMsg); + epmetMessageOpenFeignClient.sendSystemMsgByMQ(form); + } else if (UserDemandConstant.VOLUNTEER.equals(finishResultDTO.getServiceType()) && finishResultDTO.getAwardPoint() > NumConstant.ZERO) { + // todo + // 志愿者发放积分 + } + return new Result(); + } + + /** + * 我的需求-取消需求 + * 取消,未完成之前都可以取消,pc和居民端小程序内部通用 + * + * @param tokenDto + * @param formDTO + * @return + */ + @PostMapping("cancel") + public Result cancel(@LoginUser TokenDto tokenDto,@RequestBody CancelDemandFormDTO formDTO){ + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setUserId(tokenDto.getUserId()); + formDTO.setUserType(UserDemandConstant.RESI); + ValidatorUtils.validateEntity(formDTO,CancelDemandFormDTO.AddUserInternalGroup.class); + icUserDemandRecService.cancel(formDTO); + return new Result(); + } + + + } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcUserDemandRecService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcUserDemandRecService.java index fe6d71e963..ffdf84580a 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcUserDemandRecService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcUserDemandRecService.java @@ -106,11 +106,11 @@ public interface IcUserDemandRecService extends BaseService pageList(UserDemandPageFormDTO formDTO); /** - * 未完成之前都可以取消 + * 未完成之前都可以取消,pc和居民端小程序内部通用 * * @param formDTO */ - void cancel(StaffCancelFormDTO formDTO); + void cancel(CancelDemandFormDTO formDTO); /** * 指派 @@ -196,4 +196,12 @@ public interface IcUserDemandRecService extends BaseService