Commit b3ee93b0 by xiongjiangtao

社群活动统计数据

parent cad08b94
......@@ -54,4 +54,19 @@ public interface StatisticsApolloKeyConstant {
* 用于好办链接列表数据 企业+链接
*/
String data_haoban_link_list = "data_haoban_link_list";
/**
* 社群邀请有礼 数据概览
*/
String data_mkt_group_chat_data_overview = "data_mkt_group_chat_data_overview";
/**
* 社群邀请有礼 阶段奖励
*/
String data_mkt_group_chat_data_reward_level = "data_mkt_group_chat_data_reward_level";
/**
* 社群邀请有礼 参与客户明细
*/
String data_mkt_group_chat_data_inviter_detail = "data_mkt_group_chat_data_inviter_detail";
}
package com.gic.haoban.manage.web.controller.chat;
import com.alibaba.fastjson.JSON;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.enterprise.api.dto.EnterpriseDTO;
import com.gic.enterprise.api.service.EnterpriseService;
import com.gic.haoban.base.api.common.pojo.dto.WebLoginDTO;
import com.gic.haoban.common.utils.AuthWebRequestUtil;
import com.gic.haoban.manage.api.constants.StatisticsApolloKeyConstant;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityInviteLogDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityRewardLogDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityInviteLogQDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityRewardLogQDTO;
import com.gic.haoban.manage.api.service.chat.GroupChatActivityLogApiService;
import com.gic.haoban.manage.web.dto.HmOverviewDTO;
import com.gic.haoban.manage.web.qo.chat.GroupChatActivityDataInviterDetailReq;
import com.gic.haoban.manage.web.qo.chat.GroupChatActivityDataOverviewReq;
import com.gic.haoban.manage.web.qo.chat.GroupChatActivityDataRewardLevelReq;
import com.gic.haoban.manage.web.vo.chat.*;
import com.gic.member.api.dto.MemberDocDTO;
import com.gic.member.api.service.MemberService;
import com.gic.web.common.utils.DataApiUtils;
import com.google.common.collect.Maps;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @author shangfeng
* @date 2024-10-10 15:56:56
*/
@RestController
@RequestMapping("/group-chat-activity-data")
public class GroupChatActivityDataController {
@Resource
private GroupChatActivityLogApiService groupChatActivityLogApiService;
@Resource
private EnterpriseService enterpriseService;
@Resource
private MemberService memberService;
/**
* 数据概览
*
* @param overviewReq
* @return
*/
@RequestMapping("data_mkt_group_chat_data_overview")
@ResponseBody
public RestResponse<GroupChatDataOverviewVO> overview(@RequestBody GroupChatActivityDataOverviewReq overviewReq) {
WebLoginDTO user = AuthWebRequestUtil.getLoginUser();
overviewReq.setEnterpriseId(user.getEnterpriseId());
Map<String, Object> res = DataApiUtils.http(JSON.toJSONString(overviewReq), StatisticsApolloKeyConstant.data_mkt_group_chat_data_overview);
List<GroupChatDataOverviewVO> resList = DataApiUtils.parseDataList(res, HmOverviewDTO.class);
GroupChatDataOverviewVO groupChatDataOverviewVO = CollectionUtils.isEmpty(resList) ? null : resList.get(0);
return RestResponse.successResult(groupChatDataOverviewVO);
}
/**
* 阶梯奖励数据
*
* @param rewardLevelReq
* @return
*/
@RequestMapping("data_mkt_group_chat_data_reward_level")
@ResponseBody
public RestResponse<GroupChatDataRewardLevelVO> rewardLevel(@RequestBody GroupChatActivityDataRewardLevelReq rewardLevelReq) {
WebLoginDTO user = AuthWebRequestUtil.getLoginUser();
rewardLevelReq.setEnterpriseId(user.getEnterpriseId());
Map<String, Object> res = DataApiUtils.http(JSON.toJSONString(rewardLevelReq), StatisticsApolloKeyConstant.data_mkt_group_chat_data_reward_level);
List<GroupChatDataRewardLevelVO> resList = DataApiUtils.parseDataList(res, HmOverviewDTO.class);
GroupChatDataRewardLevelVO groupChatDataOverviewVO = CollectionUtils.isEmpty(resList) ? null : resList.get(0);
return RestResponse.successResult(groupChatDataOverviewVO);
}
/**
* 参与客户明细
*
* @param inviterDetailReq
* @return
*/
@RequestMapping("data_mkt_group_chat_data_inviter_detail")
@ResponseBody
public RestResponse<GroupChatDataInviterDetailVO> joinDetail(@RequestBody GroupChatActivityDataInviterDetailReq inviterDetailReq) {
WebLoginDTO user = AuthWebRequestUtil.getLoginUser();
inviterDetailReq.setEnterpriseId(user.getEnterpriseId());
Map<String, Object> res = DataApiUtils.http(JSON.toJSONString(inviterDetailReq), StatisticsApolloKeyConstant.data_mkt_group_chat_data_inviter_detail);
List<GroupChatDataInviterDetailVO> resList = DataApiUtils.parseDataList(res, HmOverviewDTO.class);
GroupChatDataInviterDetailVO groupChatDataOverviewVO = CollectionUtils.isEmpty(resList) ? null : resList.get(0);
return RestResponse.successResult(groupChatDataOverviewVO);
}
/**
* 邀请明细
*
* @param inviteLogQDTO
* @return
*/
@RequestMapping("inviter_detail")
@ResponseBody
public RestResponse<Page<GroupChatActivityInviteVO>> inviterDetail(@RequestBody GroupChatActivityInviteLogQDTO inviteLogQDTO) {
WebLoginDTO user = AuthWebRequestUtil.getLoginUser();
inviteLogQDTO.setEnterpriseId(user.getEnterpriseId());
inviteLogQDTO.setSortFiled("create_time");
inviteLogQDTO.setSortType("desc");
ServiceResponse<Page<GroupChatActivityInviteLogDTO>> listServiceResponse = groupChatActivityLogApiService.queryInviteLogDetails(inviteLogQDTO);
if (!listServiceResponse.isSuccess()) {
return RestResponse.failure(listServiceResponse.getCode(), listServiceResponse.getMessage());
}
Page<GroupChatActivityInviteVO> page = new Page<>(inviteLogQDTO.getPageNum(), inviteLogQDTO.getPageSize(), 0, 0);
Page<GroupChatActivityInviteLogDTO> groupChatActivityInviteLogPage = listServiceResponse.getResult();
if (CollectionUtils.isEmpty(groupChatActivityInviteLogPage.getResult())) {
return RestResponse.successResult(page);
}
Map<String, MemberDocDTO> memberDocDTOMap = Maps.newHashMap();
List<String> inviteeMemberIdList = groupChatActivityInviteLogPage.getResult().stream()
.map(GroupChatActivityInviteLogDTO::getInviteeMemberId).filter(Objects::nonNull).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(inviteeMemberIdList)) {
EnterpriseDTO enterpriseDTO = enterpriseService.getEnterpriseById(inviteLogQDTO.getEnterpriseId());
List<MemberDocDTO> memberDocDTOList = memberService.getMembersFromSearchIndex(enterpriseDTO.getEnterpriseMicroSignal(), inviteeMemberIdList);
memberDocDTOMap = memberDocDTOList.stream().collect(Collectors.toMap(MemberDocDTO::getMemberId, memberDocDTO -> memberDocDTO));
}
Map<String, MemberDocDTO> finalMemberDocDTOMap = memberDocDTOMap;
List<GroupChatActivityInviteVO> groupChatActivityInviteVOList = groupChatActivityInviteLogPage.getResult().stream().map(groupChatActivityInviteLogDTO -> {
GroupChatActivityInviteVO groupChatActivityInviteVO = new GroupChatActivityInviteVO();
groupChatActivityInviteVO.setNickName(groupChatActivityInviteLogDTO.getNickName());
MemberDocDTO memberDocDTO = finalMemberDocDTOMap.get(groupChatActivityInviteLogDTO.getInviteeMemberId());
if (Objects.nonNull(memberDocDTO)) {
groupChatActivityInviteVO.setPhotoUrl(memberDocDTO.getPhotoUrl());
}
return groupChatActivityInviteVO;
}).collect(Collectors.toList());
page.setResult(groupChatActivityInviteVOList);
page.setResult(groupChatActivityInviteVOList);
page.setTotalCount(groupChatActivityInviteLogPage.getTotalCount());
page.setTotalPage(groupChatActivityInviteLogPage.getTotalPage());
return RestResponse.successResult(page);
}
/**
* 奖励明细
*
* @param rewardLogQDTO
* @return
*/
@RequestMapping("reward_detail")
@ResponseBody
public RestResponse<Page<GroupChatActivityRewardVO>> rewardDetail(@RequestBody GroupChatActivityRewardLogQDTO rewardLogQDTO) {
WebLoginDTO user = AuthWebRequestUtil.getLoginUser();
rewardLogQDTO.setEnterpriseId(user.getEnterpriseId());
ServiceResponse<Page<GroupChatActivityRewardLogDTO>> listServiceResponse = groupChatActivityLogApiService.queryRewardLogDetails(rewardLogQDTO);
if (!listServiceResponse.isSuccess()) {
return RestResponse.failure(listServiceResponse.getCode(), listServiceResponse.getMessage());
}
Page<GroupChatActivityRewardVO> page = new Page<>(rewardLogQDTO.getPageNum(), rewardLogQDTO.getPageSize(), 0, 0);
Page<GroupChatActivityRewardLogDTO> groupChatActivityInviteLogPage = listServiceResponse.getResult();
if (CollectionUtils.isEmpty(groupChatActivityInviteLogPage.getResult())) {
return RestResponse.successResult(page);
}
List<GroupChatActivityRewardVO> groupChatActivityInviteVOList = groupChatActivityInviteLogPage.getResult().stream().map(groupChatActivityRewardLogDTO -> {
GroupChatActivityRewardVO groupChatActivityRewardVO = new GroupChatActivityRewardVO();
BeanUtils.copyProperties(groupChatActivityRewardLogDTO, groupChatActivityRewardVO);
if (CollectionUtils.isNotEmpty(groupChatActivityRewardLogDTO.getRewardDetailLogDTOList())) {
List<GroupChatActivityRewardDetailVO> groupChatActivityRewardDetailVOS = groupChatActivityRewardLogDTO.getRewardDetailLogDTOList().stream().map(groupChatActivityRewardDetailLogDTO -> {
GroupChatActivityRewardDetailVO groupChatActivityRewardDetailVO = new GroupChatActivityRewardDetailVO();
BeanUtils.copyProperties(groupChatActivityRewardDetailLogDTO, groupChatActivityRewardDetailVO);
return groupChatActivityRewardDetailVO;
}).collect(Collectors.toList());
groupChatActivityRewardVO.setGroupChatActivityRewardDetailVOList(groupChatActivityRewardDetailVOS);
}
return groupChatActivityRewardVO;
}).collect(Collectors.toList());
page.setResult(groupChatActivityInviteVOList);
page.setResult(groupChatActivityInviteVOList);
page.setTotalCount(groupChatActivityInviteLogPage.getTotalCount());
page.setTotalPage(groupChatActivityInviteLogPage.getTotalPage());
return RestResponse.successResult(page);
}
}
package com.gic.haoban.manage.web.qo.chat;
import java.io.Serializable;
/**
* @author shangfeng
* @date 2024-10-10 16:26:38
*/
public class GroupChatActivityDataInviterDetailReq implements Serializable {
private static final long serialVersionUID = 2660355784426208294L;
/**
* 是否返回总数
*/
private Boolean returnTotalNum;
/**
* 页编号
*/
private Integer pageNum;
/**
* 页大小
*/
private Integer pageSize;
/**
* 企业id
*/
private String enterpriseId;
/**
* 活动id
*/
private String chatActivityId;
/**
* 参与客户会员id
*/
private String inviterMemberId;
/**
* 排序字段 3邀请进群人数 4有效邀请人数 5入群客户数 6入群游客数 7新增会员数 8发放积分数 9发放成长值数 10发放卡券数
*/
private Integer orderByFields;
/**
* 排序类型 1 升序 2降序
*/
private Integer orderByType;
public Boolean getReturnTotalNum() {
return returnTotalNum;
}
public void setReturnTotalNum(Boolean returnTotalNum) {
this.returnTotalNum = returnTotalNum;
}
public Integer getPageNum() {
return pageNum;
}
public void setPageNum(Integer pageNum) {
this.pageNum = pageNum;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getChatActivityId() {
return chatActivityId;
}
public void setChatActivityId(String chatActivityId) {
this.chatActivityId = chatActivityId;
}
public String getInviterMemberId() {
return inviterMemberId;
}
public void setInviterMemberId(String inviterMemberId) {
this.inviterMemberId = inviterMemberId;
}
public Integer getOrderByFields() {
return orderByFields;
}
public void setOrderByFields(Integer orderByFields) {
this.orderByFields = orderByFields;
}
public Integer getOrderByType() {
return orderByType;
}
public void setOrderByType(Integer orderByType) {
this.orderByType = orderByType;
}
}
package com.gic.haoban.manage.web.qo.chat;
import java.io.Serializable;
/**
* @author shangfeng
* @date 2024-10-10 16:14:12
*/
public class GroupChatActivityDataOverviewReq implements Serializable {
private static final long serialVersionUID = -7878927289202064971L;
/**
* 是否返回总数
*/
private Boolean returnTotalNum;
/**
* 页编号
*/
private Integer pageNum;
/**
* 页大小
*/
private Integer pageSize;
/**
* 企业id
*/
private String enterpriseId;
/**
* 活动id
*/
private String chatActivityId;
public Boolean getReturnTotalNum() {
return returnTotalNum;
}
public void setReturnTotalNum(Boolean returnTotalNum) {
this.returnTotalNum = returnTotalNum;
}
public Integer getPageNum() {
return pageNum;
}
public void setPageNum(Integer pageNum) {
this.pageNum = pageNum;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getChatActivityId() {
return chatActivityId;
}
public void setChatActivityId(String chatActivityId) {
this.chatActivityId = chatActivityId;
}
}
package com.gic.haoban.manage.web.qo.chat;
import java.io.Serializable;
/**
* @author shangfeng
* @date 2024-10-10 16:24:52
*/
public class GroupChatActivityDataRewardLevelReq implements Serializable {
private static final long serialVersionUID = 1575464177341207596L;
/**
* 是否返回总数
*/
private Boolean returnTotalNum;
/**
* 页编号
*/
private Integer pageNum;
/**
* 页大小
*/
private Integer pageSize;
/**
* 企业id
*/
private String enterpriseId;
/**
* 活动id
*/
private String chatActivityId;
public Boolean getReturnTotalNum() {
return returnTotalNum;
}
public void setReturnTotalNum(Boolean returnTotalNum) {
this.returnTotalNum = returnTotalNum;
}
public Integer getPageNum() {
return pageNum;
}
public void setPageNum(Integer pageNum) {
this.pageNum = pageNum;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getChatActivityId() {
return chatActivityId;
}
public void setChatActivityId(String chatActivityId) {
this.chatActivityId = chatActivityId;
}
}
package com.gic.haoban.manage.web.vo.chat;
import java.io.Serializable;
import java.util.Date;
/**
* @author shangfeng
* @date 2024-10-09 15:30:26
*/
public class GroupChatActivityInviteVO implements Serializable {
private static final long serialVersionUID = -7144700091431890994L;
/**
* 头像
*/
private String photoUrl;
/**
* 昵称
*/
private String nickName;
/**
* 有效邀请类型 1有效0无效
*/
private Integer inviteType;
/**
* 无效邀请类型 1非首次参与活动受邀入群2入群前已处于企业群聊内3非首次加入企业群聊
*/
private Integer invalidInviteType;
/**
* 邀请时间
*/
private Date createTime;
public String getPhotoUrl() {
return photoUrl;
}
public void setPhotoUrl(String photoUrl) {
this.photoUrl = photoUrl;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public Integer getInviteType() {
return inviteType;
}
public void setInviteType(Integer inviteType) {
this.inviteType = inviteType;
}
public Integer getInvalidInviteType() {
return invalidInviteType;
}
public void setInvalidInviteType(Integer invalidInviteType) {
this.invalidInviteType = invalidInviteType;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
}
package com.gic.haoban.manage.web.vo.chat;
import java.io.Serializable;
/**
* @author shangfeng
* @date 2024-10-10 15:47:12
*/
public class GroupChatActivityRewardDetailVO implements Serializable {
private static final long serialVersionUID = 5980530705451581421L;
private Long chatActivityRewardDetailId;
/**
* 社群活动奖励id
*/
private Long chatActivityRewardId;
/**
* 社群活动id
*/
private Long chatActivityId;
/**
* 社群活动奖励规则id
*/
private Long activityRewardId;
/**
* 会员ID
*/
private String memberId;
/**
* 奖励类型 1积分2成长值3卡券
*/
private Integer rewardType;
/**
* 奖励内容 积分值 成长值 卡券id
*/
private String rewardValue;
/**
* 奖励名称
*/
private String rewardName;
/**
* 奖励内容备注
*/
private String rewardRemark;
/**
* 奖励关联业务日志id
*/
private String rewardBusinessId;
/**
* 操作奖励是否成功 1是 0否
*/
private Integer successFlag;
public Long getChatActivityRewardDetailId() {
return chatActivityRewardDetailId;
}
public void setChatActivityRewardDetailId(Long chatActivityRewardDetailId) {
this.chatActivityRewardDetailId = chatActivityRewardDetailId;
}
public Long getChatActivityRewardId() {
return chatActivityRewardId;
}
public void setChatActivityRewardId(Long chatActivityRewardId) {
this.chatActivityRewardId = chatActivityRewardId;
}
public Long getChatActivityId() {
return chatActivityId;
}
public void setChatActivityId(Long chatActivityId) {
this.chatActivityId = chatActivityId;
}
public Long getActivityRewardId() {
return activityRewardId;
}
public void setActivityRewardId(Long activityRewardId) {
this.activityRewardId = activityRewardId;
}
public String getMemberId() {
return memberId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public Integer getRewardType() {
return rewardType;
}
public void setRewardType(Integer rewardType) {
this.rewardType = rewardType;
}
public String getRewardValue() {
return rewardValue;
}
public void setRewardValue(String rewardValue) {
this.rewardValue = rewardValue;
}
public String getRewardName() {
return rewardName;
}
public void setRewardName(String rewardName) {
this.rewardName = rewardName;
}
public String getRewardRemark() {
return rewardRemark;
}
public void setRewardRemark(String rewardRemark) {
this.rewardRemark = rewardRemark;
}
public String getRewardBusinessId() {
return rewardBusinessId;
}
public void setRewardBusinessId(String rewardBusinessId) {
this.rewardBusinessId = rewardBusinessId;
}
public Integer getSuccessFlag() {
return successFlag;
}
public void setSuccessFlag(Integer successFlag) {
this.successFlag = successFlag;
}
}
package com.gic.haoban.manage.web.vo.chat;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @author shangfeng
* @date 2024-10-10 15:40:38
*/
public class GroupChatActivityRewardVO implements Serializable {
private static final long serialVersionUID = -5069228984771030367L;
/**
* 社群活动奖励id
*/
private Long chatActivityRewardLogId;
/**
* 社群活动id
*/
private Long chatActivityId;
/**
* 会员ID
*/
private String memberId;
/**
* 奖励人类型 1邀请人2受邀人
*/
private Integer rewardInvite;
/**
* 奖励阶梯 阶梯奖励,其他奖励默认1
*/
private Integer inviteLevel;
/**
* 奖励时间
*/
private Date createTime;
/**
* 奖励明细 卡券、积分、成长值
*/
private List<GroupChatActivityRewardDetailVO> groupChatActivityRewardDetailVOList;
public Long getChatActivityRewardLogId() {
return chatActivityRewardLogId;
}
public void setChatActivityRewardLogId(Long chatActivityRewardLogId) {
this.chatActivityRewardLogId = chatActivityRewardLogId;
}
public Long getChatActivityId() {
return chatActivityId;
}
public void setChatActivityId(Long chatActivityId) {
this.chatActivityId = chatActivityId;
}
public String getMemberId() {
return memberId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public Integer getRewardInvite() {
return rewardInvite;
}
public void setRewardInvite(Integer rewardInvite) {
this.rewardInvite = rewardInvite;
}
public Integer getInviteLevel() {
return inviteLevel;
}
public void setInviteLevel(Integer inviteLevel) {
this.inviteLevel = inviteLevel;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public List<GroupChatActivityRewardDetailVO> getGroupChatActivityRewardDetailVOList() {
return groupChatActivityRewardDetailVOList;
}
public void setGroupChatActivityRewardDetailVOList(List<GroupChatActivityRewardDetailVO> groupChatActivityRewardDetailVOList) {
this.groupChatActivityRewardDetailVOList = groupChatActivityRewardDetailVOList;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment