Selaa lähdekoodia

更新我发起的和联系我的

DESKTOP-VAEGFGM\zqc 11 kuukautta sitten
vanhempi
commit
c6498f9544

+ 3 - 2
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/ImStatisticsController.java

@@ -3,6 +3,7 @@ package com.citu.module.menduner.im.controller.app;
 
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.module.menduner.im.controller.app.base.statistics.ImRecentConversationsStatisticsReqVo;
+import com.citu.module.menduner.im.controller.app.base.statistics.imRecentConversationsStatisticsRespVo;
 import com.citu.module.menduner.im.service.statistics.ImRecentConversationsStatisticsService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -12,7 +13,7 @@ import org.springframework.web.bind.annotation.RestController;
 /**
  * @eo.api-type http
  * @eo.groupName 新门墩.聊天.统计分析
- * @eo.path
+ * @eo.path /app-api
  */
 
 @RestController
@@ -30,7 +31,7 @@ public class ImStatisticsController {
      * @return CommonResult
      */
     @PostMapping("/im/recent/conversations/statistics")
-    public CommonResult imRecentConversationsStatistics(@RequestBody ImRecentConversationsStatisticsReqVo reqVo){
+    public CommonResult<imRecentConversationsStatisticsRespVo> imRecentConversationsStatistics(@RequestBody ImRecentConversationsStatisticsReqVo reqVo){
         return service.imRecentConversationsStatistics(reqVo);
     }
 

+ 51 - 21
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/statistics/ImRecentConversationsStatisticsReqVo.java

@@ -1,5 +1,12 @@
 package com.citu.module.menduner.im.controller.app.base.statistics;
 
+import io.swagger.v3.oas.annotations.media.Schema;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
 public class ImRecentConversationsStatisticsReqVo {
 
     /**
@@ -15,17 +22,17 @@ public class ImRecentConversationsStatisticsReqVo {
 
     private Long userId;
 
+    public static final String TYPE_RECENT_7_DAYS = "0";
+    public static final String TYPE_LAST_MONTH = "1";
+    public static final String TYPE_LAST_QUARTER = "2";
+    public static final String TYPE_CUSTOM = "99";
 
-    /**
-     * 开始时间(秒)
-     */
-    private Long startTime;
+    @Schema(description = "统计类型 0最近7天|1上个月|2上季度|99自定义",required = true)
+    private String type="0";
 
-
-    /**
-     * 结束时间(秒)
-     */
-    private Long endTime;
+    @Schema(description = "自定义时间范围")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] time;
 
     /**
      * 沟通类型
@@ -34,6 +41,27 @@ public class ImRecentConversationsStatisticsReqVo {
      */
     private Integer communicateType=0;
 
+    private Long startTime;
+
+    private Long endTime;
+
+
+    public Long getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Long startTime) {
+        this.startTime = startTime;
+    }
+
+    public Long getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Long endTime) {
+        this.endTime = endTime;
+    }
+
     public Long getEnterpriseId() {
         return enterpriseId;
     }
@@ -50,27 +78,29 @@ public class ImRecentConversationsStatisticsReqVo {
         this.userId = userId;
     }
 
-    public Long getStartTime() {
-        return startTime;
+
+
+    public Integer getCommunicateType() {
+        return communicateType;
     }
 
-    public void setStartTime(Long startTime) {
-        this.startTime = startTime;
+    public void setCommunicateType(Integer communicateType) {
+        this.communicateType = communicateType;
     }
 
-    public Long getEndTime() {
-        return endTime;
+    public String getType() {
+        return type;
     }
 
-    public void setEndTime(Long endTime) {
-        this.endTime = endTime;
+    public void setType(String type) {
+        this.type = type;
     }
 
-    public Integer getCommunicateType() {
-        return communicateType;
+    public LocalDateTime[] getTime() {
+        return time;
     }
 
-    public void setCommunicateType(Integer communicateType) {
-        this.communicateType = communicateType;
+    public void setTime(LocalDateTime[] time) {
+        this.time = time;
     }
 }

+ 2 - 2
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/controller/app/base/statistics/imRecentConversationsStatisticsRespVo.java

@@ -16,13 +16,13 @@ public class imRecentConversationsStatisticsRespVo {
 
 
     /**
-     * 主动联系的数量
+     * 主动联系的数量
      */
     private Long usContactCount;
 
 
     /**
-     * 主动联系我的 环比
+     * 我的主动联系 环比
      */
     private Double qqUsContactCount;
 

+ 42 - 1
menduner/menduner-im-biz/src/main/java/com/citu/module/menduner/im/service/statistics/ImRecentConversationsStatisticsServiceImpl.java

@@ -1,5 +1,6 @@
 package com.citu.module.menduner.im.service.statistics;
 
+import cn.hutool.core.date.DateUtil;
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.module.menduner.im.controller.app.base.statistics.ImRecentConversationsStatisticsReqVo;
 import com.citu.module.menduner.im.controller.app.base.statistics.imRecentConversationsStatisticsRespVo;
@@ -8,6 +9,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.temporal.ChronoField;
+import java.time.temporal.TemporalField;
 import java.util.List;
 import java.util.Map;
 
@@ -16,8 +20,14 @@ public class ImRecentConversationsStatisticsServiceImpl implements ImRecentConve
 
     ImRecentConversationsStatisticsMapper mapper;
 
+
+
     @Override
-    public CommonResult imRecentConversationsStatistics(ImRecentConversationsStatisticsReqVo reqVo) {
+    public CommonResult<imRecentConversationsStatisticsRespVo> imRecentConversationsStatistics(ImRecentConversationsStatisticsReqVo reqVo) {
+        LocalDateTime[] localDateTimes = generateDateTimeRange(reqVo);
+        reqVo.setStartTime(  DateUtil.date(localDateTimes[0]).getTime()/1000L);
+        reqVo.setEndTime( DateUtil.date(localDateTimes[1]).getTime()/1000L);
+
         imRecentConversationsStatisticsRespVo resp =new imRecentConversationsStatisticsRespVo();
         BigDecimal bigDecimal =new BigDecimal("100");
         reqVo.setCommunicateType(0);  // 我发起的
@@ -70,6 +80,37 @@ public class ImRecentConversationsStatisticsServiceImpl implements ImRecentConve
         return CommonResult.success(resp);
     }
 
+    public LocalDateTime[] generateDateTimeRange(ImRecentConversationsStatisticsReqVo reqVO) {
+        if (ImRecentConversationsStatisticsReqVo.TYPE_CUSTOM.equals(reqVO.getType())) {
+            return reqVO.getTime();
+        }
+        LocalDateTime[] dateTimeRange = new LocalDateTime[2];
+        LocalDateTime now = LocalDateTime.now();
+        switch (reqVO.getType()) {
+            case ImRecentConversationsStatisticsReqVo.TYPE_RECENT_7_DAYS:
+                // 最新7天内
+                dateTimeRange[0] = now.minusDays(7);
+                dateTimeRange[1] = now;
+                break;
+            case ImRecentConversationsStatisticsReqVo.TYPE_LAST_MONTH:
+                // 上个月
+                dateTimeRange[0] = now.minusMonths(1).withDayOfMonth(1);
+                dateTimeRange[1] = now.withDayOfMonth(1).minusNanos(1);
+                break;
+            case ImRecentConversationsStatisticsReqVo.TYPE_LAST_QUARTER:
+                // 上季度
+                int currentMonth = now.getMonthValue();
+                // 计算上一季度的起始月份
+                int quarterStartMonth = ((currentMonth - 1) / 3) * 3 + 1;
+                int lastQuarterStartMonth = quarterStartMonth - 3;
+                dateTimeRange[0] = now.withMonth(lastQuarterStartMonth).withDayOfMonth(1);
+                dateTimeRange[1] = now.withMonth(quarterStartMonth).withDayOfMonth(1).minusNanos(1);
+                break;
+        }
+        return dateTimeRange;
+    }
+
+
 
     @Autowired
     public void setMapper(ImRecentConversationsStatisticsMapper mapper) {