|
@@ -2,31 +2,38 @@ package com.cyksj.web.controller.user;
|
|
|
|
|
|
|
|
import cn.hutool.core.date.DateTime;
|
|
import cn.hutool.core.date.DateTime;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
|
|
+import com.cyksj.common.annotation.NoSubmit;
|
|
|
|
|
+import com.cyksj.common.exception.BusinessRuntimeException;
|
|
|
import com.cyksj.dto.Result;
|
|
import com.cyksj.dto.Result;
|
|
|
import com.cyksj.enums.GatewayResponse;
|
|
import com.cyksj.enums.GatewayResponse;
|
|
|
import com.cyksj.mapper.OrderDonMapper;
|
|
import com.cyksj.mapper.OrderDonMapper;
|
|
|
import com.cyksj.mapper.manage.coupon.CouponUserMapper;
|
|
import com.cyksj.mapper.manage.coupon.CouponUserMapper;
|
|
|
import com.cyksj.mapper.market.task.UserBindDetailMapper;
|
|
import com.cyksj.mapper.market.task.UserBindDetailMapper;
|
|
|
import com.cyksj.model.dto.UserWhoami;
|
|
import com.cyksj.model.dto.UserWhoami;
|
|
|
-import com.cyksj.model.entity.CouponUser;
|
|
|
|
|
-import com.cyksj.model.entity.OrderDon;
|
|
|
|
|
-import com.cyksj.model.entity.User;
|
|
|
|
|
-import com.cyksj.model.entity.UserBindDetail;
|
|
|
|
|
|
|
+import com.cyksj.model.entity.*;
|
|
|
import com.cyksj.model.manage.views.GroupsRelationView;
|
|
import com.cyksj.model.manage.views.GroupsRelationView;
|
|
|
import com.cyksj.model.request.ExchangeCodeTicket;
|
|
import com.cyksj.model.request.ExchangeCodeTicket;
|
|
|
import com.cyksj.model.request.ReceiveBenefitsReq;
|
|
import com.cyksj.model.request.ReceiveBenefitsReq;
|
|
|
|
|
+import com.cyksj.model.request.WorkOrderReq;
|
|
|
import com.cyksj.model.views.RenewalView;
|
|
import com.cyksj.model.views.RenewalView;
|
|
|
import com.cyksj.model.views.UserAvailableGoodsTicketView;
|
|
import com.cyksj.model.views.UserAvailableGoodsTicketView;
|
|
|
import com.cyksj.model.views.UserPersonalView;
|
|
import com.cyksj.model.views.UserPersonalView;
|
|
|
|
|
+import com.cyksj.model.views.WorkOrderChatHistoryView;
|
|
|
import com.cyksj.service.exchange.ExchangeCodeService;
|
|
import com.cyksj.service.exchange.ExchangeCodeService;
|
|
|
import com.cyksj.service.order.UserRealOrderBenefitsService;
|
|
import com.cyksj.service.order.UserRealOrderBenefitsService;
|
|
|
import com.cyksj.service.relation.GroupRelationFrontService;
|
|
import com.cyksj.service.relation.GroupRelationFrontService;
|
|
|
import com.cyksj.service.user.UserService;
|
|
import com.cyksj.service.user.UserService;
|
|
|
|
|
+import com.cyksj.service.user.WorkOrderFrontService;
|
|
|
import com.cyksj.web.util.StpUserUtil;
|
|
import com.cyksj.web.util.StpUserUtil;
|
|
|
|
|
+import com.ejlchina.searcher.BeanSearcher;
|
|
|
|
|
+import com.ejlchina.searcher.SearchResult;
|
|
|
|
|
+import com.ejlchina.searcher.util.MapUtils;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import org.springframework.util.Assert;
|
|
import org.springframework.util.Assert;
|
|
|
|
|
+import org.springframework.validation.annotation.Validated;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
|
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
|
@@ -53,6 +60,12 @@ public class UserController {
|
|
|
|
|
|
|
|
private final UserRealOrderBenefitsService userRealOrderBenefitsService;
|
|
private final UserRealOrderBenefitsService userRealOrderBenefitsService;
|
|
|
|
|
|
|
|
|
|
+ private final BeanSearcher beanSearcher;
|
|
|
|
|
+
|
|
|
|
|
+ private final WorkOrderFrontService workOrderFrontService;
|
|
|
|
|
+
|
|
|
|
|
+ private final HttpServletRequest request;
|
|
|
|
|
+
|
|
|
@GetMapping(value = "/wx/whoami")
|
|
@GetMapping(value = "/wx/whoami")
|
|
|
public Result<UserWhoami> whoami() {
|
|
public Result<UserWhoami> whoami() {
|
|
|
long userId = StpUserUtil.getLoginIdAsLong();
|
|
long userId = StpUserUtil.getLoginIdAsLong();
|
|
@@ -135,4 +148,75 @@ public class UserController {
|
|
|
});
|
|
});
|
|
|
return GatewayResponse.SUCCESS.newBuilder().toResult(re);
|
|
return GatewayResponse.SUCCESS.newBuilder().toResult(re);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 用户提交工单
|
|
|
|
|
+ */
|
|
|
|
|
+ @PostMapping("/workOrder/submit")
|
|
|
|
|
+ @NoSubmit
|
|
|
|
|
+ public Result<String> submitWorkOrder(@RequestBody @Validated WorkOrderReq workOrderReq) {
|
|
|
|
|
+ long userId = StpUserUtil.getLoginIdAsLong();
|
|
|
|
|
+ workOrderReq.setUserId(userId);
|
|
|
|
|
+ workOrderFrontService.submitWorkOrder(workOrderReq);
|
|
|
|
|
+ return GatewayResponse.SUCCESS.newBuilder().toResult();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 用户工单历史列表
|
|
|
|
|
+ */
|
|
|
|
|
+ @GetMapping("/workOrder/get")
|
|
|
|
|
+ public Result<SearchResult<WorkOrder>> getWorkOrder() {
|
|
|
|
|
+ long userId = StpUserUtil.getLoginIdAsLong();
|
|
|
|
|
+ SearchResult<WorkOrder> search = beanSearcher.search(WorkOrder.class, MapUtils.flatBuilder(request.getParameterMap())
|
|
|
|
|
+ .field(WorkOrder::getUserId, userId)
|
|
|
|
|
+ .orderBy(WorkOrder::getId).desc()
|
|
|
|
|
+ .onlySelect(WorkOrder::getId, WorkOrder::getTopic, WorkOrder::getStatus, WorkOrder::getCreatedTime)
|
|
|
|
|
+ .build());
|
|
|
|
|
+ return GatewayResponse.SUCCESS.newBuilder().toResult(search);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 用户工单详情
|
|
|
|
|
+ */
|
|
|
|
|
+ @GetMapping("/workOrder/get/detail/{id}")
|
|
|
|
|
+ public Result<SearchResult<WorkOrderChatHistoryView>> getWorkOrderDetails(@PathVariable Long id) {
|
|
|
|
|
+ long userId = StpUserUtil.getLoginIdAsLong();
|
|
|
|
|
+ SearchResult<WorkOrderChatHistoryView> search = beanSearcher.search(WorkOrderChatHistoryView.class, MapUtils.builder()
|
|
|
|
|
+ .field(WorkOrderChatHistoryView::getUserId, userId)
|
|
|
|
|
+ .field(WorkOrderChatHistoryView::getWorkOrderId, id)
|
|
|
|
|
+ .orderBy(WorkOrderChatHistoryView::getId).desc()
|
|
|
|
|
+ .selectExclude(WorkOrderChatHistoryView::getReplyCustomerServiceId,
|
|
|
|
|
+ WorkOrderChatHistoryView::getCustomer)
|
|
|
|
|
+ .build());
|
|
|
|
|
+ return GatewayResponse.SUCCESS.newBuilder().toResult(search);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 工单状态查询
|
|
|
|
|
+ */
|
|
|
|
|
+ @GetMapping("/workOrder/get/status/{id}")
|
|
|
|
|
+ public Result<WorkOrder> getWorkOrderStatus(@PathVariable Long id) {
|
|
|
|
|
+ long userId = StpUserUtil.getLoginIdAsLong();
|
|
|
|
|
+ WorkOrder workOrder = beanSearcher.searchFirst(WorkOrder.class, MapUtils.builder()
|
|
|
|
|
+ .field(WorkOrder::getUserId, userId)
|
|
|
|
|
+ .field(WorkOrder::getId, id)
|
|
|
|
|
+ .onlySelect(WorkOrder::getId, WorkOrder::getUserId, WorkOrder::getStatus)
|
|
|
|
|
+ .build());
|
|
|
|
|
+ if (workOrder == null) {
|
|
|
|
|
+ throw BusinessRuntimeException.getInstance("该工单不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+ return GatewayResponse.SUCCESS.newBuilder().toResult(workOrder);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 用户回复客服
|
|
|
|
|
+ */
|
|
|
|
|
+ @PostMapping("/workOrder/reply")
|
|
|
|
|
+ public Result<String> userReplyWorkOrder(@RequestBody @Validated WorkOrderChatHistory history) {
|
|
|
|
|
+ long userId = StpUserUtil.getLoginIdAsLong();
|
|
|
|
|
+ history.setUserId(userId);
|
|
|
|
|
+ workOrderFrontService.replyCustomer(history);
|
|
|
|
|
+ return GatewayResponse.SUCCESS.newBuilder().toResult();
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|