统计查询需求

This commit is contained in:
easonzhu 2025-02-13 23:09:07 +08:00
parent 595225168d
commit 2a518ff533
11 changed files with 395 additions and 51 deletions

View File

@ -110,11 +110,6 @@
<artifactId>ahocorasick</artifactId>
<version>0.6.3</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>

View File

@ -1,11 +1,9 @@
package com.upchina.common.entity;
import com.upchina.video.query.external.ProcedureStateChangeEventQuery;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class VideoTransFlow {
private String fileId;
@ -37,4 +35,68 @@ public class VideoTransFlow {
this.fileUrl = event.getFileUrl();
this.createTime = LocalDateTime.now();
}
public String getFileId() {
return fileId;
}
public void setFileId(String fileId) {
this.fileId = fileId;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getTaskId() {
return taskId;
}
public void setTaskId(String taskId) {
this.taskId = taskId;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Integer getErrCode() {
return errCode;
}
public void setErrCode(Integer errCode) {
this.errCode = errCode;
}
public String getFileUrl() {
return fileUrl;
}
public void setFileUrl(String fileUrl) {
this.fileUrl = fileUrl;
}
public LocalDateTime getCreateTime() {
return createTime;
}
public void setCreateTime(LocalDateTime createTime) {
this.createTime = createTime;
}
}

View File

@ -1,19 +1,70 @@
package com.upchina.common.interceptor;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class SessionInfo {
private String userId;
private Integer productType;
private Integer productId;
private String sessionId;
private String sessionKey;
public boolean isValid() {
return userId != null && productType != null && productId != null
&& sessionId != null && sessionKey != null;
}
}
public SessionInfo() {
}
public SessionInfo(String userId, Integer productType, Integer productId, String sessionId, String sessionKey) {
this.userId = userId;
this.productType = productType;
this.productId = productId;
this.sessionId = sessionId;
this.sessionKey = sessionKey;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public Integer getProductType() {
return productType;
}
public void setProductType(Integer productType) {
this.productType = productType;
}
public Integer getProductId() {
return productId;
}
public void setProductId(Integer productId) {
this.productId = productId;
}
public String getSessionId() {
return sessionId;
}
public void setSessionId(String sessionId) {
this.sessionId = sessionId;
}
public String getSessionKey() {
return sessionKey;
}
public void setSessionKey(String sessionKey) {
this.sessionKey = sessionKey;
}
}

View File

@ -8,7 +8,6 @@ import com.upchina.common.handler.BizException;
import com.upchina.common.result.ResponseStatus;
import com.upchina.common.vo.BackendUserVO;
import com.upchina.common.vo.FrontUserVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.messaging.Message;
import org.springframework.messaging.simp.stomp.StompHeaderAccessor;
import org.springframework.stereotype.Component;
@ -17,7 +16,6 @@ import javax.annotation.Resource;
import java.util.Map;
import java.util.Set;
@Slf4j
@Component
public class WebSocketAuthHandler {
@ -47,7 +45,11 @@ public class WebSocketAuthHandler {
if (productId == null) {
throw new BizException(ResponseStatus.PARM_ERROR, "产品ID错误" + productId);
}
populateAttributes(attributes, userId, sessionId, productType, productId);
attributes.put("userId", userId);
attributes.put("sessionId", sessionId);
attributes.put("productType", productType);
attributes.put("productId", productId);
attributes.put("sessionKey", userId + "-" + sessionId);
return message;
}
@ -74,11 +76,4 @@ public class WebSocketAuthHandler {
return StrUtil.isNotEmpty(value) ? Integer.parseInt(value) : null;
}
private void populateAttributes(Map<String, Object> attributes, String userId, String sessionId, Integer productType, Integer productId) {
attributes.put("userId", userId);
attributes.put("sessionId", sessionId);
attributes.put("productType", productType);
attributes.put("productId", productId);
attributes.put("sessionKey", userId + "-" + sessionId);
}
}

View File

@ -64,13 +64,12 @@ public class WebSocketSessionHandler {
}
private SessionInfo extractSessionInfo(Map<String, Object> attributes) {
return SessionInfo.builder()
.userId((String) attributes.get("userId"))
.productType((Integer) attributes.get("productType"))
.productId((Integer)attributes.get("productId"))
.sessionId((String) attributes.get("sessionId"))
.sessionKey((String) attributes.get("sessionKey"))
.build();
return new SessionInfo(
(String) attributes.get("userId"),
(Integer) attributes.get("productType"),
(Integer)attributes.get("productId"),
(String) attributes.get("sessionId"),
(String) attributes.get("sessionKey"));
}
private OnlineUser createOnlineUser(SessionInfo sessionInfo, FrontUserVO frontUser) {

View File

@ -2,11 +2,9 @@ package com.upchina.common.vo;
import com.upchina.advisor.vo.AdvisorInfoAppVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class SearchResultVO {
/***************************公共字段**********************************/
@ -94,6 +92,14 @@ public class SearchResultVO {
this.advisorAvatar = advisorAvatar;
}
public String getOrgName() {
return orgName;
}
public void setOrgName(String orgName) {
this.orgName = orgName;
}
public Integer getReadCount() {
return readCount;
}
@ -102,6 +108,14 @@ public class SearchResultVO {
this.readCount = readCount;
}
public LocalDateTime getPublishTime() {
return publishTime;
}
public void setPublishTime(LocalDateTime publishTime) {
this.publishTime = publishTime;
}
public Integer getSubCount() {
return subCount;
}
@ -158,14 +172,6 @@ public class SearchResultVO {
this.type = type;
}
public LocalDateTime getPublishTime() {
return publishTime;
}
public void setPublishTime(LocalDateTime publishTime) {
this.publishTime = publishTime;
}
public LocalDateTime getCreateTime() {
return createTime;
}
@ -173,4 +179,12 @@ public class SearchResultVO {
public void setCreateTime(LocalDateTime createTime) {
this.createTime = createTime;
}
public double getTotalProfitRate() {
return totalProfitRate;
}
public void setTotalProfitRate(double totalProfitRate) {
this.totalProfitRate = totalProfitRate;
}
}

View File

@ -7,12 +7,9 @@ import com.upchina.common.result.CommonResult;
import com.upchina.common.result.Pager;
import com.upchina.common.vo.BackendUserVO;
import com.upchina.common.vo.InsertIdVO;
import com.upchina.group.query.ListGroupQuery;
import com.upchina.group.query.SaveGroupQuery;
import com.upchina.group.query.SetNoticeQuery;
import com.upchina.group.query.UpdateGroupQuery;
import com.upchina.group.query.UpdateGroupStatusQuery;
import com.upchina.group.query.*;
import com.upchina.group.service.GroupInfoService;
import com.upchina.group.vo.GroupCollectVO;
import com.upchina.group.vo.GroupVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -24,6 +21,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
@Api(tags = "交易圈admin接口")
@RestController
@ -82,4 +80,12 @@ public class AdminGroupInfoController {
groupInfoService.setNotice(query, backendUserVO);
return CommonResult.success();
}
}
@ApiOperation("后台查询交易圈统计")
@PostMapping("/admin/group/collect/query")
public CommonResult<List<GroupCollectVO>> queryCollect(@Validated @RequestBody @ApiParam(required = true) QueryGroupCollectQuery query,
@RequestAttribute(value = "backendUser", required = false) BackendUserVO backendUserVO) {
List<GroupCollectVO> list = groupInfoService.queryCollect(query, backendUserVO);
return CommonResult.success(list);
}
}

View File

@ -1,8 +1,6 @@
package com.upchina.group.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import java.time.LocalDate;
@ -22,7 +20,7 @@ public class GroupCollect implements Serializable {
/**
* ID
*/
@TableId(value = "group_id", type = IdType.AUTO)
@TableField("group_id")
private Integer groupId;
/**

View File

@ -0,0 +1,41 @@
package com.upchina.group.query;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
public class QueryGroupCollectQuery {
@ApiModelProperty("交易圈id")
private Integer groupId;
@ApiModelProperty("开始日期")
private LocalDate startDate;
@ApiModelProperty("结束日期")
private LocalDate endDate;
public Integer getGroupId() {
return groupId;
}
public void setGroupId(Integer groupId) {
this.groupId = groupId;
}
public LocalDate getStartDate() {
return startDate;
}
public void setStartDate(LocalDate startDate) {
this.startDate = startDate;
}
public LocalDate getEndDate() {
return endDate;
}
public void setEndDate(LocalDate endDate) {
this.endDate = endDate;
}
}

View File

@ -8,7 +8,6 @@ import com.hazelcast.map.IMap;
import com.upchina.advisor.entity.AdvisorBasic;
import com.upchina.advisor.service.AdvisorInfoService;
import com.upchina.common.config.cache.CacheKey;
import com.upchina.common.constant.IsDisplay;
import com.upchina.common.handler.BizException;
import com.upchina.common.query.OnlyIdQuery;
import com.upchina.common.result.AppPager;
@ -24,10 +23,13 @@ import com.upchina.common.vo.FrontUserVO;
import com.upchina.common.vo.InsertIdVO;
import com.upchina.course.service.PageService;
import com.upchina.group.constant.GroupInfoStatus;
import com.upchina.group.entity.GroupCollect;
import com.upchina.group.entity.GroupInfo;
import com.upchina.group.entity.GroupSortEntity;
import com.upchina.group.mapper.GroupCollectMapper;
import com.upchina.group.mapper.GroupInfoMapper;
import com.upchina.group.query.*;
import com.upchina.group.vo.GroupCollectVO;
import com.upchina.group.vo.GroupVO;
import com.upchina.rbac.entity.UserDept;
import com.upchina.rbac.service.AuthService;
@ -37,6 +39,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@ -74,6 +77,9 @@ public class GroupInfoService {
@Resource
private IMap<String, Object> groupCache;
@Resource
private GroupCollectMapper groupCollectMapper;
@Transactional(rollbackFor = Exception.class)
public InsertIdVO save(SaveGroupQuery query, BackendUserVO backendUserVO) {
sensitiveWordService.check(query.getName(), query.getRemark(), query.getDetail());
@ -293,8 +299,19 @@ public class GroupInfoService {
return advisorId;
}
public List<GroupCollectVO> queryCollect(QueryGroupCollectQuery query, BackendUserVO backendUserVO) {
Integer groupId = query.getGroupId();
LocalDate startDate = query.getStartDate();
LocalDate endDate = query.getEndDate();
LambdaQueryWrapper<GroupCollect> wrapper = Wrappers.<GroupCollect>lambdaQuery()
.eq(groupId != null && groupId != 0, GroupCollect::getGroupId, groupId)
.ge(startDate != null, GroupCollect::getDate, startDate)
.le(endDate != null, GroupCollect::getDate, endDate);
List<GroupCollect> list = groupCollectMapper.selectList(wrapper);
return list.stream().map(GroupCollectVO::new).collect(Collectors.toList());
}
public void clearCache(Integer id) {
groupCache.delete(CacheKey.GroupKey.GROUP_INFO + id);
}
}

View File

@ -0,0 +1,166 @@
package com.upchina.group.vo;
import com.upchina.group.entity.GroupCollect;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
public class GroupCollectVO {
@ApiModelProperty("交易圈ID")
private Integer groupId;
@ApiModelProperty("日期")
private LocalDate date;
@ApiModelProperty("总成员数")
private Integer totalMembers;
@ApiModelProperty("访问成员数")
private Integer visitedMembers;
@ApiModelProperty("新增成员数")
private Integer newMembers;
@ApiModelProperty("发互动成员数")
private Integer interactionMembers;
@ApiModelProperty("发私聊成员数")
private Integer privateChatMembers;
@ApiModelProperty("投顾发布互动数")
private Integer advisorGroupContent;
@ApiModelProperty("助教发布互动数")
private Integer assistantGroupContent;
@ApiModelProperty("用户发布互动数")
private Integer customerGroupContent;
@ApiModelProperty("投顾发布私聊数")
private Integer advisorPrivateContent;
@ApiModelProperty("助教发布私聊数")
private Integer assistantPrivateContent;
@ApiModelProperty("用户发布私聊数")
private Integer customerPrivateContent;
public GroupCollectVO(GroupCollect collect) {
this.groupId = collect.getGroupId();
this.date = collect.getDate();
this.totalMembers = collect.getTotalMembers();
this.visitedMembers = collect.getVisitedMembers();
this.newMembers = collect.getNewMembers();
this.interactionMembers = collect.getInteractionMembers();
this.privateChatMembers = collect.getPrivateChatMembers();
this.advisorGroupContent = collect.getAdvisorGroupContent();
this.assistantGroupContent = collect.getAssistantGroupContent();
this.customerGroupContent = collect.getCustomerGroupContent();
this.advisorPrivateContent = collect.getAdvisorPrivateContent();
}
public Integer getGroupId() {
return groupId;
}
public void setGroupId(Integer groupId) {
this.groupId = groupId;
}
public LocalDate getDate() {
return date;
}
public void setDate(LocalDate date) {
this.date = date;
}
public Integer getTotalMembers() {
return totalMembers;
}
public void setTotalMembers(Integer totalMembers) {
this.totalMembers = totalMembers;
}
public Integer getVisitedMembers() {
return visitedMembers;
}
public void setVisitedMembers(Integer visitedMembers) {
this.visitedMembers = visitedMembers;
}
public Integer getNewMembers() {
return newMembers;
}
public void setNewMembers(Integer newMembers) {
this.newMembers = newMembers;
}
public Integer getInteractionMembers() {
return interactionMembers;
}
public void setInteractionMembers(Integer interactionMembers) {
this.interactionMembers = interactionMembers;
}
public Integer getPrivateChatMembers() {
return privateChatMembers;
}
public void setPrivateChatMembers(Integer privateChatMembers) {
this.privateChatMembers = privateChatMembers;
}
public Integer getAdvisorGroupContent() {
return advisorGroupContent;
}
public void setAdvisorGroupContent(Integer advisorGroupContent) {
this.advisorGroupContent = advisorGroupContent;
}
public Integer getAssistantGroupContent() {
return assistantGroupContent;
}
public void setAssistantGroupContent(Integer assistantGroupContent) {
this.assistantGroupContent = assistantGroupContent;
}
public Integer getCustomerGroupContent() {
return customerGroupContent;
}
public void setCustomerGroupContent(Integer customerGroupContent) {
this.customerGroupContent = customerGroupContent;
}
public Integer getAdvisorPrivateContent() {
return advisorPrivateContent;
}
public void setAdvisorPrivateContent(Integer advisorPrivateContent) {
this.advisorPrivateContent = advisorPrivateContent;
}
public Integer getAssistantPrivateContent() {
return assistantPrivateContent;
}
public void setAssistantPrivateContent(Integer assistantPrivateContent) {
this.assistantPrivateContent = assistantPrivateContent;
}
public Integer getCustomerPrivateContent() {
return customerPrivateContent;
}
public void setCustomerPrivateContent(Integer customerPrivateContent) {
this.customerPrivateContent = customerPrivateContent;
}
}