Selaa lähdekoodia

获客链接额外值班客服

zoujiajian 2 vuotta sitten
vanhempi
sitoutus
391f046980

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/mapper/corp/CorpCustomerAcquisitionLinkExtraCustomerMapper.java

@@ -0,0 +1,13 @@
+package com.cyksj.mapper.corp;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.CorpCustomerAcquisitionLinkExtraCustomer;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: CorpCustomerAcquisitionLinkExtraCustomerMapper
+ * 创建者: JavaZou
+ * 创建时间:2024/3/5 11:41
+ */
+public interface CorpCustomerAcquisitionLinkExtraCustomerMapper extends BaseMapper<CorpCustomerAcquisitionLinkExtraCustomer> {
+}

+ 30 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/CorpCustomerAcquisitionLinkExtraCustomer.java

@@ -0,0 +1,30 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: CorpCustomerAcquisitionLinkExtraCustomer
+ * 创建者: JavaZou
+ * 创建时间:2024/3/5 11:37
+ */
+@Getter
+@Setter
+public class CorpCustomerAcquisitionLinkExtraCustomer extends BaseEntity{
+	@NotNull
+	private Long acId;
+
+	@NotNull
+	private Integer serviceId;
+
+	@NotNull
+	private String startTime;
+
+	@NotNull
+	private String endTime;
+
+	private Boolean deleted;
+}

+ 45 - 0
netflix-dao/src/main/java/com/cyksj/model/views/CorpCustomerAcquisitionLinkExtraCustomerView.java

@@ -0,0 +1,45 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.DbIgnore;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: CorpCustomerAcquisitionLinkExtraCustomerView
+ * 创建者: JavaZou
+ * 创建时间:2024/3/5 11:52
+ */
+@Getter
+@Setter
+@SearchBean(tables = "corp_customer_acquisition_link_extra_customer cc inner join corp_customer_acquisition_link cl on cl.id = cc.ac_id",
+		where = "cc.deleted is true")
+public class CorpCustomerAcquisitionLinkExtraCustomerView {
+	@DbField("cc.id")
+	private Long id;
+
+	@DbField("cc.ac_id")
+	private Long acId;
+
+	@DbField("cl.link_name")
+	private String linkName;
+
+	@DbField("cc.service_id")
+	private Long serviceId;
+
+	@DbIgnore
+	private String serviceName;
+
+	@DbField("cc.start_time")
+	private String startTime;
+
+	@DbField("cc.end_time")
+	private String endTime;
+
+	@DbField("cc.created_time")
+	private Date createdTime;
+}

+ 59 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/corp/CorpCustomerAcquistionLinkController.java

@@ -6,21 +6,26 @@ import com.cyksj.common.constant.Constant;
 import com.cyksj.common.util.Jsons;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
+import com.cyksj.mapper.corp.CorpCustomerAcquisitionLinkExtraCustomerMapper;
 import com.cyksj.mapper.corp.CorpFollowMapper;
 import com.cyksj.mapper.corp.CorpTagMapper;
 import com.cyksj.mapper.corp.CorpWelcomeTemplateMapper;
 import com.cyksj.model.dto.CorpFollowServiceDto;
 import com.cyksj.model.entity.*;
+import com.cyksj.model.views.CorpCustomerAcquisitionLinkExtraCustomerView;
 import com.cyksj.service.corp.CorpCustomerAcquisitionLinkService;
 import com.cyksj.service.sys.SysConfigService;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.SearchResult;
 import com.ejlchina.searcher.util.MapUtils;
 import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.List;
+import java.util.Map;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 /**
@@ -47,6 +52,8 @@ public class CorpCustomerAcquistionLinkController {
 
     private final SysConfigService sysConfigService;
 
+    private final CorpCustomerAcquisitionLinkExtraCustomerMapper corpCustomerAcquisitionLinkExtraCustomerMapper;
+
     /**
      * 新增获客助手链接
      */
@@ -123,4 +130,56 @@ public class CorpCustomerAcquistionLinkController {
         return GatewayResponse.SUCCESS.newBuilder().toResult(search);
     }
 
+    /**
+     * 针对获客链接添加额外客服
+     */
+    @PostMapping("/add/extra/service")
+    public Result<String> addExtraService(@RequestBody @Validated CorpCustomerAcquisitionLinkExtraCustomer extraCustomer) {
+	    corpCustomerAcquisitionLinkExtraCustomerMapper.insert(extraCustomer);
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+    }
+
+    /**
+     * 修改获客链接添加额外客服
+     */
+    @PutMapping("/update/extra/service")
+    public Result<String> updateExtraService(@RequestBody @Validated CorpCustomerAcquisitionLinkExtraCustomer extraCustomer) {
+	    corpCustomerAcquisitionLinkExtraCustomerMapper.updateById(extraCustomer);
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+    }
+
+    /**
+     * 删除获客链接添加额外客服
+     */
+    @DeleteMapping("/del/extra/service/{id}")
+    public Result<String> delExtraService(@PathVariable Long id) {
+	    Optional.ofNullable(corpCustomerAcquisitionLinkExtraCustomerMapper.selectById(id))
+			    .ifPresent(e -> {
+				    if (e.getDeleted()) {
+					    e.setDeleted(false);
+					    corpCustomerAcquisitionLinkExtraCustomerMapper.updateById(e);
+				    }
+			    });
+	    return GatewayResponse.SUCCESS.newBuilder().toResult();
+    }
+
+    /**
+     * 获取获客链接添加额外客服
+     */
+    @GetMapping("/get/extra/service")
+    public Result<SearchResult<CorpCustomerAcquisitionLinkExtraCustomerView>> getExtraService() throws Exception {
+        SearchResult<CorpCustomerAcquisitionLinkExtraCustomerView> search = beanSearcher.search(CorpCustomerAcquisitionLinkExtraCustomerView.class, MapUtils.flatBuilder(request.getParameterMap())
+                .orderBy(CorpCustomerAcquisitionLinkExtraCustomerView::getAcId).asc()
+                .orderBy(CorpCustomerAcquisitionLinkExtraCustomerView::getCreatedTime).desc()
+                .build());
+        SysConfig config = sysConfigService.getOne(Wrappers.lambdaQuery(SysConfig.class)
+                .eq(SysConfig::getSysKey, Constant.serviceKeys.get(1)).last("limit 1"));
+        Map<Integer, List<CorpFollowServiceDto>> serviceMap = Jsons.parseList(config.getSysValue(), CorpFollowServiceDto.class).stream().collect(Collectors.groupingBy(CorpFollowServiceDto::getIndx));
+        search.getDataList().forEach(e->{
+            Optional.ofNullable(serviceMap.get(e.getServiceId()))
+                    .ifPresent(service -> e.setServiceName(service.get(0).getName()));
+        });
+        return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+    }
+
 }