Commit 897a1469 by 王祖波

Merge branch 'refs/heads/feature-chat-activity'

# Conflicts:
#	haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/dao/mapper/chat/GroupChatUserMapper.java
#	haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/impl/MaterialServiceImpl.java
#	haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/util/ApolloUtils.java
parents 903d4460 d34e898b
...@@ -54,4 +54,24 @@ public interface StatisticsApolloKeyConstant { ...@@ -54,4 +54,24 @@ public interface StatisticsApolloKeyConstant {
* 用于好办链接列表数据 企业+链接 * 用于好办链接列表数据 企业+链接
*/ */
String data_haoban_link_list = "data_haoban_link_list"; 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";
/**
* 社群邀请有礼,小程序端数据
*/
String DATA_MKT_GROUP_CHAT_DATA_MBR = "data_mkt_group_chat_data_mbr";
} }
package com.gic.haoban.manage.api.dto.chat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityJoinQDTO;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 社群邀请有礼表(TabHaobanGroupChatActivity)实体类
*
* @author makejava
* @since 2024-09-27 16:09:38
*/
public class GroupChatActivityBaseDTO implements Serializable {
private static final long serialVersionUID = 973688857967269973L;
/**
* 社群活动id
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long chatActivityId;
/**
* 活动名称
*/
private String activityName;
/**
* 开始时间
*/
private Date startDate;
/**
* 结束时间
*/
private Date endDate;
/**
* 终止/截止时间
*/
private Date limitDate;
/**
* 活动图片
*/
private String activityImg;
/**
* 活动受邀页图片
*/
private String activityInviteImg;
/**
* 活动说明
*/
private String activityDesc;
/**
* 活动分享标题
*/
private String activityShareTitle;
/**
* 活动分享卡片图片
*/
private String activityShareImg;
/**
* 活动分享海报图片
*/
private String activityPosterImg;
/**
* 状态1未开始2进行中3已终止4已结束
*/
private Integer status;
/**
* 奖励类型 1定额奖励2阶梯奖励
*/
private Integer inviteRewardType;
/**
* 入群方式 1规则入群2定向入群
*/
private Integer joinType;
/**
* 入群规则 1邀请人所在企微群2服务门店3协管门店4LBS定位 [{"openFlag":0,"val":1},{"openFlag":0,"val":2},{"openFlag":0,"val":3},{"openFlag":0,"val":4}]
*/
private String joinRule;
/**
* 入群兜底群活码id
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long joinChatHmId;
/**
* 邀请类型 0不限制1入群前未处于任何企业群聊内算有效邀请2首次加入企业群聊才算有效邀请
*/
private Integer inviteType;
/**
* 邀请会员类型 0所有用户1开卡会员
*/
private Integer inviteMemberType;
/**
* 打标签1是0否
*/
private Integer labelFlag;
/**
* {"id": 1, "name": "标签名称" }
*/
private String labelJson;
/**
* 异常提醒 0 不提醒 1短信提醒
*/
private Integer exceptionNotice;
/**
* 异常提醒数量
*/
private Integer exceptionNoticeNum;
/**
* 企业ID
*/
private String enterpriseId;
/**
* 微信企业ID
*/
private String wxEnterpriseId;
private Date createTime;
private Date updateTime;
private String creatorId;
private String creatorName;
public Long getChatActivityId() {
return chatActivityId;
}
public void setChatActivityId(Long chatActivityId) {
this.chatActivityId = chatActivityId;
}
public String getActivityName() {
return activityName;
}
public void setActivityName(String activityName) {
this.activityName = activityName;
}
public Date getStartDate() {
return startDate;
}
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
public Date getLimitDate() {
return limitDate;
}
public void setLimitDate(Date limitDate) {
this.limitDate = limitDate;
}
public String getActivityImg() {
return activityImg;
}
public void setActivityImg(String activityImg) {
this.activityImg = activityImg;
}
public String getActivityInviteImg() {
return activityInviteImg;
}
public void setActivityInviteImg(String activityInviteImg) {
this.activityInviteImg = activityInviteImg;
}
public String getActivityDesc() {
return activityDesc;
}
public void setActivityDesc(String activityDesc) {
this.activityDesc = activityDesc;
}
public String getActivityShareTitle() {
return activityShareTitle;
}
public void setActivityShareTitle(String activityShareTitle) {
this.activityShareTitle = activityShareTitle;
}
public String getActivityShareImg() {
return activityShareImg;
}
public void setActivityShareImg(String activityShareImg) {
this.activityShareImg = activityShareImg;
}
public String getActivityPosterImg() {
return activityPosterImg;
}
public void setActivityPosterImg(String activityPosterImg) {
this.activityPosterImg = activityPosterImg;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public Integer getInviteRewardType() {
return inviteRewardType;
}
public void setInviteRewardType(Integer inviteRewardType) {
this.inviteRewardType = inviteRewardType;
}
public Integer getJoinType() {
return joinType;
}
public void setJoinType(Integer joinType) {
this.joinType = joinType;
}
public String getJoinRule() {
return joinRule;
}
public void setJoinRule(String joinRule) {
this.joinRule = joinRule;
}
public Long getJoinChatHmId() {
return joinChatHmId;
}
public void setJoinChatHmId(Long joinChatHmId) {
this.joinChatHmId = joinChatHmId;
}
public Integer getInviteType() {
return inviteType;
}
public void setInviteType(Integer inviteType) {
this.inviteType = inviteType;
}
public Integer getInviteMemberType() {
return inviteMemberType;
}
public void setInviteMemberType(Integer inviteMemberType) {
this.inviteMemberType = inviteMemberType;
}
public Integer getLabelFlag() {
return labelFlag;
}
public void setLabelFlag(Integer labelFlag) {
this.labelFlag = labelFlag;
}
public String getLabelJson() {
return labelJson;
}
public void setLabelJson(String labelJson) {
this.labelJson = labelJson;
}
public Integer getExceptionNotice() {
return exceptionNotice;
}
public void setExceptionNotice(Integer exceptionNotice) {
this.exceptionNotice = exceptionNotice;
}
public Integer getExceptionNoticeNum() {
return exceptionNoticeNum;
}
public void setExceptionNoticeNum(Integer exceptionNoticeNum) {
this.exceptionNoticeNum = exceptionNoticeNum;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public String getCreatorId() {
return creatorId;
}
public void setCreatorId(String creatorId) {
this.creatorId = creatorId;
}
public String getCreatorName() {
return creatorName;
}
public void setCreatorName(String creatorName) {
this.creatorName = creatorName;
}
}
package com.gic.haoban.manage.api.dto.chat;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityJoinQDTO;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 社群邀请有礼表(TabHaobanGroupChatActivity)实体类
*
* @author makejava
* @since 2024-09-27 16:09:38
*/
public class GroupChatActivityDTO extends GroupChatActivityBaseDTO implements Serializable {
private static final long serialVersionUID = 973688857967269973L;
/**
* 奖励规则map key为奖励邀请人类型
*/
private Map<Integer,List<GroupChatActivityRewardDTO>> rewardMap;
/**
* 入群规则列表
*/
private List<GroupChatActivityJoinDTO> joinList;
public Map<Integer, List<GroupChatActivityRewardDTO>> getRewardMap() {
return rewardMap;
}
public void setRewardMap(Map<Integer, List<GroupChatActivityRewardDTO>> rewardMap) {
this.rewardMap = rewardMap;
}
public List<GroupChatActivityJoinDTO> getJoinList() {
return joinList;
}
public void setJoinList(List<GroupChatActivityJoinDTO> joinList) {
this.joinList = joinList;
}
}
package com.gic.haoban.manage.api.dto.chat;
import java.io.Serializable;
public class GroupChatActivityHmDTO extends GroupChatHmDTO implements Serializable {
/**
* 是否已经入群 1是0否
*/
private Integer joinGroup;
public Integer getJoinGroup() {
return joinGroup;
}
public void setJoinGroup(Integer joinGroup) {
this.joinGroup = joinGroup;
}
}
\ No newline at end of file
package com.gic.haoban.manage.api.dto.chat;
import java.io.Serializable;
import java.util.Date;
/**
* @author shangfeng
* @date 2024-10-08 13:56:35
*/
public class GroupChatActivityInviteLogDTO implements Serializable {
private static final long serialVersionUID = -5565985004891538070L;
/**
* 社群活动邀请id
*/
private Long chatActivityInviteId;
/**
* 社群活动id
*/
private Long chatActivityId;
/**
* 邀请人会员ID
*/
private String inviterMemberId;
/**
* 受邀人会员ID
*/
private String inviteeMemberId;
/**
* 受邀人外部联系人id
*/
private String inviteeUserId;
/**
* 姓名
*/
private String userName;
/**
* 昵称
*/
private String nickName;
/**
* 群id
*/
private Long groupChatId;
/**
* 有效邀请类型 1有效0无效
*/
private Integer inviteType;
/**
* 无效邀请类型 1非首次参与活动受邀入群2入群前已处于企业群聊内3非首次加入企业群聊
*/
private Integer invalidInviteType;
/**
* 是否新增会员 1是 0否 null未统计
*/
private Integer addMemberType;
/**
* 有效邀请达成的批次 达成所有奖励限制后为-1
*/
private Integer batchNumber;
/**
* 企业ID
*/
private String enterpriseId;
/**
* 微信企业ID
*/
private String wxEnterpriseId;
private Date createTime;
private Date updateTime;
public Long getChatActivityInviteId() {
return chatActivityInviteId;
}
public void setChatActivityInviteId(Long chatActivityInviteId) {
this.chatActivityInviteId = chatActivityInviteId;
}
public Long getChatActivityId() {
return chatActivityId;
}
public void setChatActivityId(Long chatActivityId) {
this.chatActivityId = chatActivityId;
}
public String getInviterMemberId() {
return inviterMemberId;
}
public void setInviterMemberId(String inviterMemberId) {
this.inviterMemberId = inviterMemberId;
}
public String getInviteeMemberId() {
return inviteeMemberId;
}
public void setInviteeMemberId(String inviteeMemberId) {
this.inviteeMemberId = inviteeMemberId;
}
public String getInviteeUserId() {
return inviteeUserId;
}
public void setInviteeUserId(String inviteeUserId) {
this.inviteeUserId = inviteeUserId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public Long getGroupChatId() {
return groupChatId;
}
public void setGroupChatId(Long groupChatId) {
this.groupChatId = groupChatId;
}
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 Integer getAddMemberType() {
return addMemberType;
}
public void setAddMemberType(Integer addMemberType) {
this.addMemberType = addMemberType;
}
public Integer getBatchNumber() {
return batchNumber;
}
public void setBatchNumber(Integer batchNumber) {
this.batchNumber = batchNumber;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
}
package com.gic.haoban.manage.api.dto.chat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.google.common.base.Objects;
import java.io.Serializable;
import java.util.Date;
/**
* 社群邀请有礼入群规则表(TabHaobanGroupChatActivityJoin)实体类
*
* @author makejava
* @since 2024-09-27 16:09:56
*/
public class GroupChatActivityJoinDTO implements Serializable {
private static final long serialVersionUID = -95747409578903881L;
/**
* 社群活动入群规则id
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long chatActivityJoinId;
/**
* 内容活动id
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long chatActivityId;
/**
* 会员类型(0:会员筛选,1:会员分组)
*/
private Integer memberType;
/**
* 人群
*/
private String filterJson;
/**
* 人群回显
*/
private String filterJsonView;
/**
* 序号 从小到大
*/
private Integer index;
/**
* 群活码id
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long chatHmId;
public Long getChatActivityJoinId() {
return chatActivityJoinId;
}
public void setChatActivityJoinId(Long chatActivityJoinId) {
this.chatActivityJoinId = chatActivityJoinId;
}
public Long getChatActivityId() {
return chatActivityId;
}
public void setChatActivityId(Long chatActivityId) {
this.chatActivityId = chatActivityId;
}
public Integer getMemberType() {
return memberType;
}
public void setMemberType(Integer memberType) {
this.memberType = memberType;
}
public String getFilterJson() {
return filterJson;
}
public void setFilterJson(String filterJson) {
this.filterJson = filterJson;
}
public String getFilterJsonView() {
return filterJsonView;
}
public void setFilterJsonView(String filterJsonView) {
this.filterJsonView = filterJsonView;
}
public Integer getIndex() {
return index;
}
public void setIndex(Integer index) {
this.index = index;
}
public Long getChatHmId() {
return chatHmId;
}
public void setChatHmId(Long chatHmId) {
this.chatHmId = chatHmId;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
GroupChatActivityJoinDTO that = (GroupChatActivityJoinDTO) o;
return Objects.equal(chatActivityId, that.chatActivityId) && Objects.equal(memberType, that.memberType) && Objects.equal(filterJson, that.filterJson) && Objects.equal(index, that.index) && Objects.equal(chatHmId, that.chatHmId);
}
@Override
public int hashCode() {
return Objects.hashCode(chatActivityId, memberType, filterJson, index, chatHmId);
}
}
package com.gic.haoban.manage.api.dto.chat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.google.common.base.Objects;
import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils;
import java.io.Serializable;
import java.util.*;
import java.util.stream.Collectors;
/**
* 社群邀请有礼奖励规则表(TabHaobanGroupChatActivityReward)实体类
*
* @author makejava
* @since 2024-09-27 16:09:56
*/
public class GroupChatActivityRewardBaseDTO implements Serializable {
private static final long serialVersionUID = -78111537762472232L;
/**
* 社群活动奖励规则id
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long chatActivityRewardId;
/**
* 内容活动id
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long chatActivityId;
/**
* 奖励邀请人数
*/
private Integer inviteNumber;
/**
* 奖励阶梯 固定奖励默认1
*/
private Integer inviteLevel;
/**
* 奖励人类型 1邀请人2受邀人
*/
private Integer rewardInvite;
/**
* 奖励类型 1积分2成长值3卡券
*/
private Integer rewardType;
/**
* 最多奖励数量
*/
private Integer limitReward;
/**
* 奖励内容 积分值 成长值 卡券id(逗号分隔)
*/
private String rewardValue;
/**
* 奖励名称 积分名称 成长值名称 卡券名称
*/
private String rewardName;
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 Integer getInviteNumber() {
return inviteNumber;
}
public void setInviteNumber(Integer inviteNumber) {
this.inviteNumber = inviteNumber;
}
public Integer getInviteLevel() {
return inviteLevel;
}
public void setInviteLevel(Integer inviteLevel) {
this.inviteLevel = inviteLevel;
}
public Integer getRewardInvite() {
return rewardInvite;
}
public void setRewardInvite(Integer rewardInvite) {
this.rewardInvite = rewardInvite;
}
public Integer getRewardType() {
return rewardType;
}
public void setRewardType(Integer rewardType) {
this.rewardType = rewardType;
}
public Integer getLimitReward() {
return limitReward;
}
public void setLimitReward(Integer limitReward) {
this.limitReward = limitReward;
}
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 static List<GroupChatActivityRewardBaseDTO> mapConvert(Map<Integer, List<GroupChatActivityRewardDTO>> rewardMap) {
List<GroupChatActivityRewardBaseDTO> list = new ArrayList<>();
rewardMap.forEach((k,v)->{
for (GroupChatActivityRewardDTO rewardDTO : v) {
List<GroupChatActivityRewardDetailDTO> detailList = rewardDTO.getDetailList();
for (GroupChatActivityRewardDetailDTO detailDTO : detailList) {
GroupChatActivityRewardBaseDTO rewardBaseDTO = new GroupChatActivityRewardBaseDTO();
rewardBaseDTO.setChatActivityRewardId(detailDTO.getChatActivityRewardId());
rewardBaseDTO.setRewardInvite(k);
rewardBaseDTO.setChatActivityId(rewardDTO.getChatActivityId());
rewardBaseDTO.setInviteNumber(rewardDTO.getInviteNumber());
rewardBaseDTO.setInviteLevel(rewardDTO.getInviteLevel());
rewardBaseDTO.setLimitReward(rewardDTO.getLimitReward());
rewardBaseDTO.setRewardType(detailDTO.getRewardType());
rewardBaseDTO.setRewardValue(detailDTO.getRewardValue());
rewardBaseDTO.setRewardName(detailDTO.getRewardName());
list.add(rewardBaseDTO);
}
}
});
return list;
}
public static Map<Integer, List<GroupChatActivityRewardDTO>> reverseMapConvert(List<GroupChatActivityRewardBaseDTO> baseDTOList) {
// 按 rewardInvite、chatActivityId 和 inviteLevel 进行分组
Map<Integer, List<GroupChatActivityRewardDTO>> rewardMap = baseDTOList.stream()
.collect(Collectors.groupingBy(
GroupChatActivityRewardBaseDTO::getRewardInvite,
Collectors.collectingAndThen(
Collectors.groupingBy(baseDTO -> Lists.newArrayList(baseDTO.getChatActivityId(), baseDTO.getInviteLevel())),
chatActivityGroups -> chatActivityGroups.values().stream()
.map(group -> {
GroupChatActivityRewardBaseDTO firstDTO = group.get(0);
GroupChatActivityRewardDTO rewardDTO = new GroupChatActivityRewardDTO();
rewardDTO.setRewardInvite(firstDTO.getRewardInvite());
rewardDTO.setChatActivityId(firstDTO.getChatActivityId());
rewardDTO.setInviteNumber(firstDTO.getInviteNumber());
rewardDTO.setInviteLevel(firstDTO.getInviteLevel());
rewardDTO.setLimitReward(firstDTO.getLimitReward());
List<GroupChatActivityRewardDetailDTO> detailList = group.stream()
.sorted(Comparator.comparing(GroupChatActivityRewardBaseDTO::getRewardType))
.map(baseDTO -> {
GroupChatActivityRewardDetailDTO detailDTO = new GroupChatActivityRewardDetailDTO();
detailDTO.setChatActivityRewardId(baseDTO.getChatActivityRewardId());
detailDTO.setRewardType(baseDTO.getRewardType());
detailDTO.setRewardValue(baseDTO.getRewardValue());
detailDTO.setRewardName(baseDTO.getRewardName());
return detailDTO;
})
.collect(Collectors.toList());
rewardDTO.setDetailList(detailList);
return rewardDTO;
})
.sorted(Comparator.comparing(GroupChatActivityRewardDTO::getInviteLevel))
.collect(Collectors.toList())
)
));
return rewardMap;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
GroupChatActivityRewardBaseDTO that = (GroupChatActivityRewardBaseDTO) o;
return Objects.equal(chatActivityId, that.chatActivityId) && Objects.equal(inviteNumber, that.inviteNumber) && Objects.equal(inviteLevel, that.inviteLevel) && Objects.equal(rewardInvite, that.rewardInvite) && Objects.equal(rewardType, that.rewardType) && Objects.equal(limitReward, that.limitReward) && Objects.equal(rewardValue, that.rewardValue);
}
@Override
public int hashCode() {
return Objects.hashCode(chatActivityId, inviteNumber, inviteLevel, rewardInvite, rewardType, limitReward, rewardValue);
}
}
package com.gic.haoban.manage.api.dto.chat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.google.common.base.Objects;
import java.io.Serializable;
import java.util.List;
/**
* 社群邀请有礼奖励规则表(TabHaobanGroupChatActivityReward)实体类
*
* @author makejava
* @since 2024-09-27 16:09:56
*/
public class GroupChatActivityRewardDTO implements Serializable {
private static final long serialVersionUID = -78111537762472232L;
/**
* 内容活动id
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long chatActivityId;
/**
* 奖励邀请人数
*/
private Integer inviteNumber;
/**
* 奖励阶梯 固定奖励默认1
*/
private Integer inviteLevel;
/**
* 奖励人类型 1邀请人2受邀人
*/
private Integer rewardInvite;
/**
* 最多奖励数量
*/
private Integer limitReward;
/**
* 奖励明细列表
*/
private List<GroupChatActivityRewardDetailDTO> detailList;
public Long getChatActivityId() {
return chatActivityId;
}
public void setChatActivityId(Long chatActivityId) {
this.chatActivityId = chatActivityId;
}
public Integer getInviteNumber() {
return inviteNumber;
}
public void setInviteNumber(Integer inviteNumber) {
this.inviteNumber = inviteNumber;
}
public Integer getInviteLevel() {
return inviteLevel;
}
public void setInviteLevel(Integer inviteLevel) {
this.inviteLevel = inviteLevel;
}
public Integer getRewardInvite() {
return rewardInvite;
}
public void setRewardInvite(Integer rewardInvite) {
this.rewardInvite = rewardInvite;
}
public Integer getLimitReward() {
return limitReward;
}
public void setLimitReward(Integer limitReward) {
this.limitReward = limitReward;
}
public List<GroupChatActivityRewardDetailDTO> getDetailList() {
return detailList;
}
public void setDetailList(List<GroupChatActivityRewardDetailDTO> detailList) {
this.detailList = detailList;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
GroupChatActivityRewardDTO rewardDTO = (GroupChatActivityRewardDTO) o;
return Objects.equal(chatActivityId, rewardDTO.chatActivityId) && Objects.equal(inviteNumber, rewardDTO.inviteNumber) && Objects.equal(inviteLevel, rewardDTO.inviteLevel) && Objects.equal(rewardInvite, rewardDTO.rewardInvite) && Objects.equal(limitReward, rewardDTO.limitReward) && Objects.equal(detailList, rewardDTO.detailList);
}
@Override
public int hashCode() {
return Objects.hashCode(chatActivityId, inviteNumber, inviteLevel, rewardInvite, limitReward, detailList);
}
}
package com.gic.haoban.manage.api.dto.chat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.google.common.base.Objects;
import java.io.Serializable;
public class GroupChatActivityRewardDetailDTO implements Serializable {
private static final long serialVersionUID = -78111537762472232L;
/**
* 社群活动奖励规则id
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long chatActivityRewardId;
/**
* 奖励类型 1积分2成长值3卡券
*/
private Integer rewardType;
/**
* 奖励内容 积分值 成长值 卡券id(逗号分隔)
*/
private String rewardValue;
/**
* 奖励名称 积分名称 成长值名称 卡券名称
*/
private String rewardName;
public Long getChatActivityRewardId() {
return chatActivityRewardId;
}
public void setChatActivityRewardId(Long chatActivityRewardId) {
this.chatActivityRewardId = chatActivityRewardId;
}
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;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
GroupChatActivityRewardDetailDTO that = (GroupChatActivityRewardDetailDTO) o;
return Objects.equal(rewardType, that.rewardType) && Objects.equal(rewardValue, that.rewardValue);
}
@Override
public int hashCode() {
return Objects.hashCode(rewardType, rewardValue);
}
}
package com.gic.haoban.manage.api.dto.chat;
import java.io.Serializable;
import java.util.Date;
/**
* @author shangfeng
* @date 2024-10-09 10:13:56
*/
public class GroupChatActivityRewardDetailLogDTO implements Serializable {
private static final long serialVersionUID = -6244377713277293414L;
/**
* 社群活动奖励明细id
*/
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;
/**
* 企业ID
*/
private String enterpriseId;
/**
* 微信企业ID
*/
private String wxEnterpriseId;
private Date createTime;
private Date updateTime;
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;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
}
package com.gic.haoban.manage.api.dto.chat;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @author shangfeng
* @date 2024-10-09 10:11:34
*/
public class GroupChatActivityRewardLogDTO implements Serializable {
private static final long serialVersionUID = -5926101376740603421L;
/**
* 社群活动奖励id
*/
private Long chatActivityRewardLogId;
/**
* 社群活动id
*/
private Long chatActivityId;
/**
* 会员ID
*/
private String memberId;
/**
* 奖励人类型 1邀请人2受邀人
*/
private Integer rewardInvite;
/**
* 奖励阶梯 阶梯奖励,其他奖励默认1
*/
private Integer inviteLevel;
/**
* 企业ID
*/
private String enterpriseId;
/**
* 微信企业ID
*/
private String wxEnterpriseId;
private Date createTime;
private Date updateTime;
private List<GroupChatActivityRewardDetailLogDTO> rewardDetailLogDTOList;
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 String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public List<GroupChatActivityRewardDetailLogDTO> getRewardDetailLogDTOList() {
return rewardDetailLogDTOList;
}
public void setRewardDetailLogDTOList(List<GroupChatActivityRewardDetailLogDTO> rewardDetailLogDTOList) {
this.rewardDetailLogDTOList = rewardDetailLogDTOList;
}
}
package com.gic.haoban.manage.api.enums.chat;
import java.util.Objects;
/**
* Created by wangzubo on 2023/3/13.
*/
public enum ChatActivityInvalidInviteTypeEnum {
/**
* 无效邀请类型 1非首次参与活动受邀入群2入群前已处于企业群聊内3非首次加入企业群聊
*/
ONE(1, "非首次参与活动受邀入群"),
TWO(2, "入群前未处于任何企业群聊内算有效邀请"),
THREE(3, "首次加入企业群聊才算有效邀请"),
;
public final Integer value;
public final String desc;
ChatActivityInvalidInviteTypeEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
public static String getDescByValue(Integer value) {
for (ChatActivityInvalidInviteTypeEnum inviteTypeEnum : ChatActivityInvalidInviteTypeEnum.values()) {
if (Objects.equals(value, inviteTypeEnum.value)) {
return inviteTypeEnum.desc;
}
}
return null;
}
public static ChatActivityInvalidInviteTypeEnum getByValue(Integer value) {
for (ChatActivityInvalidInviteTypeEnum inviteTypeEnum : ChatActivityInvalidInviteTypeEnum.values()) {
if (Objects.equals(value, inviteTypeEnum.value)) {
return inviteTypeEnum;
}
}
return null;
}
}
package com.gic.haoban.manage.api.enums.chat;
import java.util.Objects;
/**
* Created by wangzubo on 2023/3/13.
*/
public enum ChatActivityInviteMemberTypeEnum {
/**
* 邀请会员类型 0所有用户1开卡会员
*/
ALL(0, "所有用户"),
OPEN_CARD(1, "开卡会员"),
;
public final Integer value;
public final String desc;
ChatActivityInviteMemberTypeEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
public static String getDescByValue(Integer value) {
for (ChatActivityInviteMemberTypeEnum inviteMemberTypeEnum : ChatActivityInviteMemberTypeEnum.values()) {
if (Objects.equals(value, inviteMemberTypeEnum.value)) {
return inviteMemberTypeEnum.desc;
}
}
return null;
}
public static ChatActivityInviteMemberTypeEnum getByValue(Integer value) {
for (ChatActivityInviteMemberTypeEnum inviteMemberTypeEnum : ChatActivityInviteMemberTypeEnum.values()) {
if (Objects.equals(value, inviteMemberTypeEnum.value)) {
return inviteMemberTypeEnum;
}
}
return null;
}
}
package com.gic.haoban.manage.api.enums.chat;
import java.util.Objects;
/**
* Created by wangzubo on 2023/3/13.
*/
public enum ChatActivityInviteRewardEnum {
/**
* 奖励类型 1定额奖励2阶梯奖励
*/
FIXED_REWARD(1, "定额奖励"),
LADDER_REWARD(2, "阶梯奖励"),
;
public final Integer value;
public final String desc;
ChatActivityInviteRewardEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
public static String getDescByValue(Integer value) {
for (ChatActivityInviteRewardEnum inviteRewardEnum : ChatActivityInviteRewardEnum.values()) {
if (Objects.equals(value, inviteRewardEnum.value)) {
return inviteRewardEnum.desc;
}
}
return null;
}
}
package com.gic.haoban.manage.api.enums.chat;
import java.util.Objects;
/**
* Created by wangzubo on 2023/3/13.
*/
public enum ChatActivityInviteTypeEnum {
/**
* 邀请类型 0不限制1入群前未处于任何企业群聊内算有效邀请2首次加入企业群聊才算有效邀请
*/
NONE(0, "不限制"),
NONE_GROUP_CHAT(1, "入群前未处于任何企业群聊内算有效邀请"),
FIRST_GROUP_CHAT(2, "首次加入企业群聊才算有效邀请"),
;
public final Integer value;
public final String desc;
ChatActivityInviteTypeEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
public static String getDescByValue(Integer value) {
for (ChatActivityInviteTypeEnum inviteTypeEnum : ChatActivityInviteTypeEnum.values()) {
if (Objects.equals(value, inviteTypeEnum.value)) {
return inviteTypeEnum.desc;
}
}
return null;
}
public static ChatActivityInviteTypeEnum getByValue(Integer value) {
for (ChatActivityInviteTypeEnum inviteTypeEnum : ChatActivityInviteTypeEnum.values()) {
if (Objects.equals(value, inviteTypeEnum.value)) {
return inviteTypeEnum;
}
}
return null;
}
}
package com.gic.haoban.manage.api.enums.chat;
import java.util.Objects;
/**
* Created by wangzubo on 2023/3/13.
*/
public enum ChatActivityJoinEnum {
/**
* 入群方式 1规则入群2定向入群
*/
RULE(1, "规则入群"),
ORIENTED(2, "定向入群"),
;
public final Integer value;
public final String desc;
ChatActivityJoinEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
public static String getDescByValue(Integer value) {
for (ChatActivityJoinEnum joinEnum : ChatActivityJoinEnum.values()) {
if (Objects.equals(value, joinEnum.value)) {
return joinEnum.desc;
}
}
return null;
}
}
package com.gic.haoban.manage.api.enums.chat;
import java.util.Objects;
/**
* Created by wangzubo on 2023/3/13.
*/
public enum ChatActivityJoinRuleEnum {
/**
* 入群规则 1邀请人所在企微群2服务门店3协管门店4LBS定位
*/
INVITER_CHAT(1, "邀请人所在企微群"),
MAIN_STORE(2, "服务门店"),
OTHER_STORE(3, "协管门店"),
LBS(4, "LBS定位"),
;
public final Integer value;
public final String desc;
ChatActivityJoinRuleEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
public static String getDescByValue(Integer value) {
for (ChatActivityJoinRuleEnum joinRuleEnum : ChatActivityJoinRuleEnum.values()) {
if (Objects.equals(value, joinRuleEnum.value)) {
return joinRuleEnum.desc;
}
}
return null;
}
public static ChatActivityJoinRuleEnum getByValue(Integer value) {
for (ChatActivityJoinRuleEnum joinRuleEnum : ChatActivityJoinRuleEnum.values()) {
if (Objects.equals(value, joinRuleEnum.value)) {
return joinRuleEnum;
}
}
return null;
}
}
package com.gic.haoban.manage.api.enums.chat;
import java.util.Objects;
/**
* Created by wangzubo on 2023/3/13.
*/
public enum ChatActivityRewardEnum {
/**
* 奖励类型 1积分2成长值3卡券
*/
INTEGRAL(1, "积分"),
GROWTH(2, "成长值"),
COUPON(3, "卡券"),
;
public final Integer value;
public final String desc;
ChatActivityRewardEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
public static String getDescByValue(Integer value) {
for (ChatActivityRewardEnum activityRewardEnum : ChatActivityRewardEnum.values()) {
if (Objects.equals(value, activityRewardEnum.value)) {
return activityRewardEnum.desc;
}
}
return null;
}
public static ChatActivityRewardEnum getByValue(Integer value) {
for (ChatActivityRewardEnum activityRewardEnum : ChatActivityRewardEnum.values()) {
if (Objects.equals(value, activityRewardEnum.value)) {
return activityRewardEnum;
}
}
return null;
}
}
package com.gic.haoban.manage.api.enums.chat;
import java.util.Objects;
/**
* Created by wangzubo on 2023/3/13.
*/
public enum ChatActivityRewardInviteEnum {
/**
* 奖励人类型 1邀请人2受邀人
*/
INVITER(1, "邀请人"),
INVITEE(2, "受邀人"),
;
public final Integer value;
public final String desc;
ChatActivityRewardInviteEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
public static String getDescByValue(Integer value) {
for (ChatActivityRewardInviteEnum rewardInviteEnum : ChatActivityRewardInviteEnum.values()) {
if (Objects.equals(value, rewardInviteEnum.value)) {
return rewardInviteEnum.desc;
}
}
return null;
}
}
package com.gic.haoban.manage.api.enums.chat;
import java.util.Objects;
/**
* Created by wangzubo on 2023/3/13.
*/
public enum ChatActivityStatusEnum {
/**
* 活动状态1未开始2进行中3已终止4已结束
*/
NOT_START(1, "未开始"),
START(2, "进行中"),
STOP(3, "已终止"),
END(4, "已结束"),
;
public final Integer value;
public final String desc;
ChatActivityStatusEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
public static String getDescByValue(Integer value) {
for (ChatActivityStatusEnum activityStatusEnum : ChatActivityStatusEnum.values()) {
if (Objects.equals(value, activityStatusEnum.value)) {
return activityStatusEnum.desc;
}
}
return null;
}
}
package com.gic.haoban.manage.api.qdto.chat;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityDTO;
import java.io.Serializable;
public class GroupChatActivityHmQDTO implements Serializable {
private static final long serialVersionUID = -28454620622119889L;
/**
* 社群活动id
*/
private Long chatActivityId;
/**
* 邀请人会员ID
*/
private String inviterMemberId;
/**
* 受邀人会员ID
*/
private String inviteeMemberId;
/**
* 受邀人unionID
*/
private String inviteeUnionId;
/**
* 企业ID
*/
private String enterpriseId;
/**
* 纬度
*/
private String latitude;
/**
* 经度
*/
private String longitude;
/**
* 省市编码
*/
private String districtCode;
/**
* 是否跳过地区定位
*/
private boolean skipArea = false;
private GroupChatActivityDTO chatActivity;
public Long getChatActivityId() {
return chatActivityId;
}
public void setChatActivityId(Long chatActivityId) {
this.chatActivityId = chatActivityId;
}
public String getInviterMemberId() {
return inviterMemberId;
}
public void setInviterMemberId(String inviterMemberId) {
this.inviterMemberId = inviterMemberId;
}
public String getInviteeMemberId() {
return inviteeMemberId;
}
public void setInviteeMemberId(String inviteeMemberId) {
this.inviteeMemberId = inviteeMemberId;
}
public String getInviteeUnionId() {
return inviteeUnionId;
}
public void setInviteeUnionId(String inviteeUnionId) {
this.inviteeUnionId = inviteeUnionId;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getLatitude() {
return latitude;
}
public void setLatitude(String latitude) {
this.latitude = latitude;
}
public String getLongitude() {
return longitude;
}
public void setLongitude(String longitude) {
this.longitude = longitude;
}
public GroupChatActivityDTO getChatActivity() {
return chatActivity;
}
public void setChatActivity(GroupChatActivityDTO chatActivity) {
this.chatActivity = chatActivity;
}
public boolean isSkipArea() {
return skipArea;
}
public void setSkipArea(boolean skipArea) {
this.skipArea = skipArea;
}
public String getDistrictCode() {
return districtCode;
}
public void setDistrictCode(String districtCode) {
this.districtCode = districtCode;
}
}
package com.gic.haoban.manage.api.qdto.chat;
import com.gic.api.base.commons.BasePageInfo;
import com.gic.commons.web.qo.PageQo;
import java.io.Serializable;
import java.util.Date;
/**
* @author shangfeng
* @date 2024-10-08 14:00:59
*/
public class GroupChatActivityInviteLogQDTO extends BasePageInfo implements Serializable {
private static final long serialVersionUID = -3517354863714637621L;
private String enterpriseId;
/**
* 社群活动id
*/
private Long chatActivityId;
/**
* 邀请人会员ID
*/
private String inviterMemberId;
/**
* 受邀请人会员ID
*/
private String inviteeMemberId;
/**
* 有效邀请类型 1有效0无效
*/
private Integer inviteType;
/**
* 是否新增会员 1是 0否 null未统计
*/
private Integer addMemberType;
/**
* 批次
*/
private Integer batchNumber;
/**
* 开始时间
*/
private Date beginTime;
/**
* 结束时间
*/
private Date endTime;
/**
* 排序字段
*/
private String sortFiled;
/**
* 排序类型
*/
private String sortType;
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public Long getChatActivityId() {
return chatActivityId;
}
public void setChatActivityId(Long chatActivityId) {
this.chatActivityId = chatActivityId;
}
public String getInviterMemberId() {
return inviterMemberId;
}
public void setInviterMemberId(String inviterMemberId) {
this.inviterMemberId = inviterMemberId;
}
public Integer getInviteType() {
return inviteType;
}
public void setInviteType(Integer inviteType) {
this.inviteType = inviteType;
}
public String getInviteeMemberId() {
return inviteeMemberId;
}
public void setInviteeMemberId(String inviteeMemberId) {
this.inviteeMemberId = inviteeMemberId;
}
public Integer getAddMemberType() {
return addMemberType;
}
public void setAddMemberType(Integer addMemberType) {
this.addMemberType = addMemberType;
}
public Date getBeginTime() {
return beginTime;
}
public void setBeginTime(Date beginTime) {
this.beginTime = beginTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public Integer getBatchNumber() {
return batchNumber;
}
public void setBatchNumber(Integer batchNumber) {
this.batchNumber = batchNumber;
}
public String getSortFiled() {
return sortFiled;
}
public void setSortFiled(String sortFiled) {
this.sortFiled = sortFiled;
}
public String getSortType() {
return sortType;
}
public void setSortType(String sortType) {
this.sortType = sortType;
}
}
package com.gic.haoban.manage.api.qdto.chat;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityJoinDTO;
import java.io.Serializable;
import java.util.Date;
/**
* 社群邀请有礼入群规则表(TabHaobanGroupChatActivityJoin)实体类
*
* @author makejava
* @since 2024-09-27 16:09:56
*/
public class GroupChatActivityJoinQDTO extends GroupChatActivityJoinDTO implements Serializable {
private static final long serialVersionUID = -95747409578903881L;
/**
* 会员筛选-回显
*/
private String filterJsonView;
public String getFilterJsonView() {
return filterJsonView;
}
public void setFilterJsonView(String filterJsonView) {
this.filterJsonView = filterJsonView;
}
}
package com.gic.haoban.manage.api.qdto.chat;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityRewardDTO;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 社群邀请有礼表(TabHaobanGroupChatActivity)实体类
*
* @author makejava
* @since 2024-09-27 16:09:38
*/
public class GroupChatActivityQDTO implements Serializable {
private static final long serialVersionUID = 973688857967269973L;
/**
* 社群活动id
*/
private Long chatActivityId;
/**
* 活动名称
*/
private String activityName;
/**
* 开始时间
*/
private Date startDate;
/**
* 结束时间
*/
private Date endDate;
/**
* 状态1未开始2进行中3已终止4已结束
*/
private Integer status;
/**
* 活动图片
*/
private String activityImg;
/**
* 活动受邀页图片
*/
private String activityInviteImg;
/**
* 活动说明
*/
private String activityDesc;
/**
* 活动分享标题
*/
private String activityShareTitle;
/**
* 活动分享卡片图片
*/
private String activityShareImg;
/**
* 活动分享海报图片
*/
private String activityPosterImg;
/**
* 奖励类型 1定额奖励2阶梯奖励
*/
private Integer inviteRewardType;
/**
* 入群方式 1规则入群2定向入群
*/
private Integer joinType;
/**
* 入群规则 1邀请人所在企微群2服务门店3协管门店4LBS定位 [{"openFlag":0,"val":1},{"openFlag":0,"val":2},{"openFlag":0,"val":3},{"openFlag":0,"val":4}]
*/
private String joinRule;
/**
* 入群兜底群活码id
*/
private Long joinChatHmId;
/**
* 邀请类型 0不限制1入群前未处于任何企业群聊内算有效邀请2首次加入企业群聊才算有效邀请
*/
private Integer inviteType;
/**
* 邀请会员类型 0所有用户1开卡会员
*/
private Integer inviteMemberType;
/**
* 打标签1是0否
*/
private Integer labelFlag;
/**
* {"id": 1, "name": "标签名称" }
*/
private String labelJson;
/**
* 异常提醒 0 不提醒 1短信提醒
*/
private Integer exceptionNotice;
/**
* 异常提醒数量
*/
private Integer exceptionNoticeNum;
/**
* 企业ID
*/
private String enterpriseId;
/**
* 微信企业ID
*/
private String wxEnterpriseId;
private String creatorId;
private String creatorName;
/**
* 奖励规则map key为奖励邀请人类型
*/
private Map<Integer,List<GroupChatActivityRewardDTO>> rewardMap;
/**
* 入群规则列表
*/
private List<GroupChatActivityJoinQDTO> joinList;
public Long getChatActivityId() {
return chatActivityId;
}
public void setChatActivityId(Long chatActivityId) {
this.chatActivityId = chatActivityId;
}
public String getActivityName() {
return activityName;
}
public void setActivityName(String activityName) {
this.activityName = activityName;
}
public Date getStartDate() {
return startDate;
}
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getActivityImg() {
return activityImg;
}
public void setActivityImg(String activityImg) {
this.activityImg = activityImg;
}
public String getActivityInviteImg() {
return activityInviteImg;
}
public void setActivityInviteImg(String activityInviteImg) {
this.activityInviteImg = activityInviteImg;
}
public String getActivityDesc() {
return activityDesc;
}
public void setActivityDesc(String activityDesc) {
this.activityDesc = activityDesc;
}
public String getActivityShareTitle() {
return activityShareTitle;
}
public void setActivityShareTitle(String activityShareTitle) {
this.activityShareTitle = activityShareTitle;
}
public String getActivityShareImg() {
return activityShareImg;
}
public void setActivityShareImg(String activityShareImg) {
this.activityShareImg = activityShareImg;
}
public String getActivityPosterImg() {
return activityPosterImg;
}
public void setActivityPosterImg(String activityPosterImg) {
this.activityPosterImg = activityPosterImg;
}
public Integer getInviteRewardType() {
return inviteRewardType;
}
public void setInviteRewardType(Integer inviteRewardType) {
this.inviteRewardType = inviteRewardType;
}
public Integer getJoinType() {
return joinType;
}
public void setJoinType(Integer joinType) {
this.joinType = joinType;
}
public String getJoinRule() {
return joinRule;
}
public void setJoinRule(String joinRule) {
this.joinRule = joinRule;
}
public Long getJoinChatHmId() {
return joinChatHmId;
}
public void setJoinChatHmId(Long joinChatHmId) {
this.joinChatHmId = joinChatHmId;
}
public Integer getInviteType() {
return inviteType;
}
public void setInviteType(Integer inviteType) {
this.inviteType = inviteType;
}
public Integer getInviteMemberType() {
return inviteMemberType;
}
public void setInviteMemberType(Integer inviteMemberType) {
this.inviteMemberType = inviteMemberType;
}
public Integer getLabelFlag() {
return labelFlag;
}
public void setLabelFlag(Integer labelFlag) {
this.labelFlag = labelFlag;
}
public String getLabelJson() {
return labelJson;
}
public void setLabelJson(String labelJson) {
this.labelJson = labelJson;
}
public Integer getExceptionNotice() {
return exceptionNotice;
}
public void setExceptionNotice(Integer exceptionNotice) {
this.exceptionNotice = exceptionNotice;
}
public Integer getExceptionNoticeNum() {
return exceptionNoticeNum;
}
public void setExceptionNoticeNum(Integer exceptionNoticeNum) {
this.exceptionNoticeNum = exceptionNoticeNum;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public String getCreatorId() {
return creatorId;
}
public void setCreatorId(String creatorId) {
this.creatorId = creatorId;
}
public String getCreatorName() {
return creatorName;
}
public void setCreatorName(String creatorName) {
this.creatorName = creatorName;
}
public Map<Integer, List<GroupChatActivityRewardDTO>> getRewardMap() {
return rewardMap;
}
public void setRewardMap(Map<Integer, List<GroupChatActivityRewardDTO>> rewardMap) {
this.rewardMap = rewardMap;
}
public List<GroupChatActivityJoinQDTO> getJoinList() {
return joinList;
}
public void setJoinList(List<GroupChatActivityJoinQDTO> joinList) {
this.joinList = joinList;
}
}
package com.gic.haoban.manage.api.qdto.chat;
import java.io.Serializable;
import java.util.List;
/**
* @author shangfeng
* @date 2024-10-09 10:41:40
*/
public class GroupChatActivityRewardDetailLogQDTO implements Serializable {
private static final long serialVersionUID = -2314846257775934409L;
private List<Long> rewardLogIdList;
public List<Long> getRewardLogIdList() {
return rewardLogIdList;
}
public void setRewardLogIdList(List<Long> rewardLogIdList) {
this.rewardLogIdList = rewardLogIdList;
}
}
package com.gic.haoban.manage.api.qdto.chat;
import com.gic.api.base.commons.BasePageInfo;
import java.io.Serializable;
import java.util.Date;
/**
* @author shangfeng
* @date 2024-10-09 10:18:00
*/
public class GroupChatActivityRewardLogQDTO extends BasePageInfo implements Serializable {
private static final long serialVersionUID = -7610364164825668426L;
private String enterpriseId;
/**
* 社群活动id
*/
private Long chatActivityId;
/**
* 邀请人会员ID
*/
private String memberId;
/**
* 奖励人类型 1邀请人2受邀人
*/
private Integer rewardInvite;
/**
* 开始时间
*/
private Date beginTime;
/**
* 结束时间
*/
private Date endTime;
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
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 Date getBeginTime() {
return beginTime;
}
public void setBeginTime(Date beginTime) {
this.beginTime = beginTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
}
package com.gic.haoban.manage.api.qdto.chat;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
public class GroupChatActivitySearchQDTO implements Serializable {
private static final long serialVersionUID = 692426229105512689L;
private String wxEnterpriseId;
/**
* 搜索内容
*/
private String search;
/**
* 状态1未开始2进行中3已终止4已结束
*/
private Integer status;
/**
* 奖励类型 1定额奖励2阶梯奖励
*/
private Integer inviteRewardType;
/**
* 入群方式 1规则入群2定向入群
*/
private Integer joinType;
/**
* 开始时间
*/
private Date beginDate;
/**
* 结束时间
*/
private Date endDate;
/**
* 创建人id列表
*/
private List<String> creatorIdList;
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public String getSearch() {
return search;
}
public void setSearch(String search) {
this.search = search;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public Integer getInviteRewardType() {
return inviteRewardType;
}
public void setInviteRewardType(Integer inviteRewardType) {
this.inviteRewardType = inviteRewardType;
}
public Integer getJoinType() {
return joinType;
}
public void setJoinType(Integer joinType) {
this.joinType = joinType;
}
public Date getBeginDate() {
return beginDate;
}
public void setBeginDate(Date beginDate) {
this.beginDate = beginDate;
}
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
public List<String> getCreatorIdList() {
return creatorIdList;
}
public void setCreatorIdList(List<String> creatorIdList) {
this.creatorIdList = creatorIdList;
}
}
package com.gic.haoban.manage.api.qdto.chat;
import java.io.Serializable;
import java.util.Date;
public class GroupChatActivityShareBindQDTO implements Serializable {
private static final long serialVersionUID = -28454620622119889L;
/**
* 社群活动id
*/
private Long chatActivityId;
/**
* 邀请人会员ID
*/
private String inviterMemberId;
/**
* 受邀人会员ID
*/
private String inviteeMemberId;
/**
* 受邀人unionID
*/
private String inviteeUnionId;
/**
* 企业ID
*/
private String enterpriseId;
public Long getChatActivityId() {
return chatActivityId;
}
public void setChatActivityId(Long chatActivityId) {
this.chatActivityId = chatActivityId;
}
public String getInviterMemberId() {
return inviterMemberId;
}
public void setInviterMemberId(String inviterMemberId) {
this.inviterMemberId = inviterMemberId;
}
public String getInviteeMemberId() {
return inviteeMemberId;
}
public void setInviteeMemberId(String inviteeMemberId) {
this.inviteeMemberId = inviteeMemberId;
}
public String getInviteeUnionId() {
return inviteeUnionId;
}
public void setInviteeUnionId(String inviteeUnionId) {
this.inviteeUnionId = inviteeUnionId;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
}
package com.gic.haoban.manage.api.qdto.chat;
import java.io.Serializable;
public class GroupChatActivityShareQDTO implements Serializable {
private static final long serialVersionUID = -28454620622119889L;
/**
* 社群活动id
*/
private Long chatActivityId;
/**
* 邀请人会员ID
*/
private String inviterMemberId;
/**
* 企业ID
*/
private String enterpriseId;
public Long getChatActivityId() {
return chatActivityId;
}
public void setChatActivityId(Long chatActivityId) {
this.chatActivityId = chatActivityId;
}
public String getInviterMemberId() {
return inviterMemberId;
}
public void setInviterMemberId(String inviterMemberId) {
this.inviterMemberId = inviterMemberId;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
}
package com.gic.haoban.manage.api.qdto.combined;
import java.io.Serializable;
public class CombinedQDTO implements Serializable {
private static final long serialVersionUID = -28454620622119889L;
/**
* 主图url
*/
private String imageUrl;
/**
* 小程序码url
*/
private String qrCodeUrl;
/**
* 展示样式
*/
private Integer showStyle;
/**
* 第一行文字
*/
private String lineOne;
/**
* 第二行文字
*/
private String lineTwo;
/**
* 1群发 2朋友圈
*/
private Integer mediaType;
/**
* 导购id(作标识)
*/
private String clerkId;
/**
* 业务id(作标识)
*/
private String businessId;
public String getImageUrl() {
return imageUrl;
}
public void setImageUrl(String imageUrl) {
this.imageUrl = imageUrl;
}
public String getQrCodeUrl() {
return qrCodeUrl;
}
public void setQrCodeUrl(String qrCodeUrl) {
this.qrCodeUrl = qrCodeUrl;
}
public Integer getShowStyle() {
return showStyle;
}
public void setShowStyle(Integer showStyle) {
this.showStyle = showStyle;
}
public String getLineOne() {
return lineOne;
}
public void setLineOne(String lineOne) {
this.lineOne = lineOne;
}
public String getLineTwo() {
return lineTwo;
}
public void setLineTwo(String lineTwo) {
this.lineTwo = lineTwo;
}
public Integer getMediaType() {
return mediaType;
}
public void setMediaType(Integer mediaType) {
this.mediaType = mediaType;
}
public String getUnionString() {
return this.getImageUrl() + this.getQrCodeUrl() + this.getShowStyle() + this.getLineOne() + this.getLineTwo() + this.getMediaType();
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public String getBusinessId() {
return businessId;
}
public void setBusinessId(String businessId) {
this.businessId = businessId;
}
}
...@@ -134,4 +134,9 @@ public interface HaobanTimerApiService { ...@@ -134,4 +134,9 @@ public interface HaobanTimerApiService {
*/ */
void openStaffServiceTimer(String params) ; void openStaffServiceTimer(String params) ;
/**
* 社群活动定时任务
* @param params
*/
void groupChatActivityTime(String params);
} }
...@@ -7,6 +7,7 @@ import com.gic.haoban.manage.api.dto.BatchAddMaterialDTO; ...@@ -7,6 +7,7 @@ import com.gic.haoban.manage.api.dto.BatchAddMaterialDTO;
import com.gic.haoban.manage.api.dto.ContentMaterialDTO; import com.gic.haoban.manage.api.dto.ContentMaterialDTO;
import com.gic.haoban.manage.api.dto.MaterialCategoryDTO; import com.gic.haoban.manage.api.dto.MaterialCategoryDTO;
import com.gic.haoban.manage.api.dto.MaterialDTO; import com.gic.haoban.manage.api.dto.MaterialDTO;
import com.gic.haoban.manage.api.qdto.combined.CombinedQDTO;
import java.util.List; import java.util.List;
...@@ -85,4 +86,6 @@ public interface MaterialApiService { ...@@ -85,4 +86,6 @@ public interface MaterialApiService {
com.gic.api.base.commons.ServiceResponse<String> getMaterialIdByUrl(String wxEnterpriseId, ContentMaterialDTO dto) ; com.gic.api.base.commons.ServiceResponse<String> getMaterialIdByUrl(String wxEnterpriseId, ContentMaterialDTO dto) ;
com.gic.api.base.commons.ServiceResponse<String> getMaterialIdByCombined(String wxEnterpriseId, CombinedQDTO combinedQDTO);
} }
package com.gic.haoban.manage.api.service.chat;
import com.gic.api.base.commons.BasePageInfo;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityBaseDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityQDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivitySearchQDTO;
import java.util.List;
/**
* Created by wangzubo on 2022/10/31.
*/
public interface GroupChatActivityApiService {
/**
* 保存互动营销活动
* @param qdto
* @return
*/
ServiceResponse<Long> saveActivity(GroupChatActivityQDTO qdto) ;
/**
* 获取活动详情
* @param chatActivityId
* @return
*/
ServiceResponse<GroupChatActivityDTO> getActivityDetail(String enterpriseId, Long chatActivityId);
/**
* 获取活动详情(缓存)
* @param chatActivityId
* @return
*/
ServiceResponse<GroupChatActivityDTO> getActivityDetailCache(String enterpriseId,Long chatActivityId);
/**
* 通过活动id列表获取
* @param enterpriseId
* @param chatActivityIdList
* @return
*/
ServiceResponse<List<GroupChatActivityBaseDTO>> listByActivityIds(String enterpriseId, List<Long> chatActivityIdList);
/**
* 通过活动id列表获取(包含已删除)
* @param enterpriseId
* @param chatActivityIdList
* @return
*/
ServiceResponse<List<GroupChatActivityBaseDTO>> listByActivityIdsDel(String enterpriseId, List<Long> chatActivityIdList);
/**
* 分页查询活动列表
* @param enterpriseId 企业id
* @param searchQDTO 搜索条件
* @return
*/
ServiceResponse<Page<GroupChatActivityDTO>> pageActivity(String enterpriseId, GroupChatActivitySearchQDTO searchQDTO, BasePageInfo pageInfo);
/**
* 终止活动
* @param enterpriseId 企业id
* @param chatActivityId 活动id
*/
ServiceResponse<GroupChatActivityDTO> stopActivity(String enterpriseId, Long chatActivityId) ;
/**
* 删除活动
* @param enterpriseId 企业id
* @param chatActivityId 活动id
*/
ServiceResponse<Void> delActivity(String enterpriseId, Long chatActivityId) ;
}
package com.gic.haoban.manage.api.service.chat;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
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 java.util.List;
/**
* @author shangfeng
* @date 2024-10-08 14:38:18
*/
public interface GroupChatActivityLogApiService {
/**
* 查询C端邀请人数据
*
* @param inviteLogQDTO
* @return
*/
ServiceResponse<List<GroupChatActivityInviteLogDTO>> queryMaxBatchInviteLog(GroupChatActivityInviteLogQDTO inviteLogQDTO);
/**
* 邀请明细
*
* @param inviteLogQDTO
* @return
*/
ServiceResponse<Page<GroupChatActivityInviteLogDTO>> queryInviteLogDetails(GroupChatActivityInviteLogQDTO inviteLogQDTO);
/**
* 查询奖励明细
*
* @param rewardLogQDTO
* @return
*/
ServiceResponse<Page<GroupChatActivityRewardLogDTO>> queryRewardLogDetails(GroupChatActivityRewardLogQDTO rewardLogQDTO);
/**
* 查询奖励次数
*
* @param rewardLogQDTO
* @return
*/
ServiceResponse<Long> queryRewardNum(GroupChatActivityRewardLogQDTO rewardLogQDTO);
}
package com.gic.haoban.manage.api.service.chat;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityHmDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatHmDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityHmQDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityShareBindQDTO;
import java.util.List;
/**
* Created by wangzubo on 2022/10/31.
*/
public interface GroupChatActivityShareApiService {
/**
* 绑定分享关系
* @param shareBind
*/
ServiceResponse<Void> shareBind(GroupChatActivityShareBindQDTO shareBind);
/**
* 获取入群活码列表
* @param activityHmQDTO
* @return
*/
ServiceResponse<List<GroupChatActivityHmDTO>> listGroupChatHm(GroupChatActivityHmQDTO activityHmQDTO);
/**
* 社群入群MQ
* @param param
* @return
*/
ServiceResponse<Void> shareGroupChatInviteMQ(String param);
}
...@@ -159,7 +159,7 @@ ...@@ -159,7 +159,7 @@
<dependency> <dependency>
<groupId>cn.hutool</groupId> <groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId> <artifactId>hutool-all</artifactId>
<version>5.5.1</version> <version>5.6.2</version>
</dependency> </dependency>
<dependency> <dependency>
...@@ -229,6 +229,18 @@ ...@@ -229,6 +229,18 @@
<artifactId>gic-member-ext-api</artifactId> <artifactId>gic-member-ext-api</artifactId>
<version>${gic-member-ext-api}</version> <version>${gic-member-ext-api}</version>
</dependency> </dependency>
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>2.6.2</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
package com.gic.haoban.manage.service.context.chat;
import com.gic.api.base.commons.Constant;
import com.gic.enterprise.api.service.ScreeningDetailService;
import com.gic.haoban.manage.api.dto.chat.*;
import com.gic.haoban.manage.api.enums.chat.ChatActivityRewardEnum;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivity;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityJoin;
import com.gic.marketing.api.enums.MarketingBusinessTypeEnum;
import com.gic.marketing.api.enums.MarketingTagModuleEnum;
import com.gic.marketing.api.qdto.CouponReferAlarmQDTO;
import com.gic.marketing.api.service.CouponReferAlarmService;
import com.gic.member.tag.api.dto.MemberTagBusinessGroupDTO;
import com.gic.member.tag.api.service.MemberTagBusinessGroupApiService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* Created by wangzubo on 2024/8/23.
*/
@Component
public class BusinessManager {
private static final Logger logger = LoggerFactory.getLogger(BusinessManager.class);
@Autowired
private MemberTagBusinessGroupApiService memberTagBusinessGroupApiService;
@Autowired
private ScreeningDetailService screeningDetailService;
@Autowired
private CouponReferAlarmService couponReferAlarmService;
public void dealMemberTagByActivity(TabGroupChatActivity activityDTO, TabGroupChatActivityJoin activityJoin , boolean delete) {
String enterpriseId = activityDTO.getEnterpriseId();
Long chatActivityId = activityDTO.getChatActivityId();
if (delete) {
logger.info("删除计划使用人群分组关联关系chatActivityId:{}", chatActivityId);
memberTagBusinessGroupApiService.deleteByBusinessIdAndEnterpriseId(String.valueOf(chatActivityId), enterpriseId);
return;
}
Integer memberType = activityJoin.getMemberType();
String filterJson = activityJoin.getFilterJson();
String filterJsonView = activityJoin.getFilterJsonView();
if (StringUtils.isNotBlank(filterJson) && Objects.equals(memberType,1)) {
String[] split = filterJson.split(",");
MemberTagBusinessGroupDTO memberTagBusinessGroupDTO = new MemberTagBusinessGroupDTO();
memberTagBusinessGroupDTO.setTagGroupIdList(Arrays.asList(split));
memberTagBusinessGroupDTO.setBusinessId(String.valueOf(chatActivityId));
memberTagBusinessGroupDTO.setEnterpriseId(enterpriseId);
memberTagBusinessGroupDTO.setBusinessType(MarketingBusinessTypeEnum.Marketing_business_type.getCode());
memberTagBusinessGroupDTO.setBusinessModuleName(MarketingTagModuleEnum.GROUP_CHAT_ACTIVITY.getModuleTypeName());
memberTagBusinessGroupDTO.setBusinessName(activityDTO.getActivityName());
memberTagBusinessGroupDTO.setBusinessLink(MarketingTagModuleEnum.GROUP_CHAT_ACTIVITY.getPagePath());
logger.info("处理计划使用人群分组关联关系chatActivityId:{}", chatActivityId);
memberTagBusinessGroupApiService.batchDelAndAddByBusinessId(memberTagBusinessGroupDTO);
}
if (Objects.equals(memberType, 0) && filterJsonView != null) {
screeningDetailService.save("GROUP_CHAT_SEARCH_ID_" + activityDTO.getChatActivityId() + "-" + activityJoin.getIndex(), filterJsonView);
}
}
public void dealCouponAlarmByActivity(GroupChatActivityDTO activityDTO,boolean delete) {
if (Objects.equals(activityDTO.getExceptionNotice(), Constant.FLAG_TRUE) && !delete) {
CouponReferAlarmQDTO couponReferAlarmQDTO = new CouponReferAlarmQDTO();
couponReferAlarmQDTO.setSystemType(0);
couponReferAlarmQDTO.setStartTime(activityDTO.getStartDate());
couponReferAlarmQDTO.setEndTime(activityDTO.getLimitDate() != null ? activityDTO.getLimitDate() : activityDTO.getEndDate());
couponReferAlarmQDTO.setCreatorId(activityDTO.getCreatorId());
List<String> couponIdList = GroupChatActivityRewardBaseDTO.mapConvert(activityDTO.getRewardMap()).stream()
.filter(x -> Objects.equals(x.getRewardType(), ChatActivityRewardEnum.COUPON.value))
.map(GroupChatActivityRewardBaseDTO::getRewardValue)
.flatMap(x -> Arrays.stream(x.split(",")))
.distinct().collect(Collectors.toList());
couponReferAlarmQDTO.setCouponIdList(couponIdList);
couponReferAlarmQDTO.setEnterpriseId(activityDTO.getEnterpriseId());
couponReferAlarmQDTO.setReferType(3);
couponReferAlarmQDTO.setSystemType(1);
couponReferAlarmQDTO.setReferId(String.valueOf(activityDTO.getChatActivityId()));
couponReferAlarmQDTO.setTitle("社群邀请有礼-" + activityDTO.getActivityName());
couponReferAlarmQDTO.setAlarmStock(activityDTO.getExceptionNoticeNum());
couponReferAlarmQDTO.setDelAlarmFlag(1);
couponReferAlarmService.add(couponReferAlarmQDTO);
}else {
couponReferAlarmService.del(String.valueOf(activityDTO.getChatActivityId()),2);
}
}
}
package com.gic.haoban.manage.service.context.chat;
import cn.hutool.core.map.MapUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.BasePageInfo;
import com.gic.api.base.commons.BusinessException;
import com.gic.api.base.commons.Constant;
import com.gic.api.base.commons.Page;
import com.gic.clerk.api.dto.ClerkDTO;
import com.gic.clerk.api.service.ClerkService;
import com.gic.enterprise.api.dto.StoreDTO;
import com.gic.enterprise.api.dto.StoreGroupDTO;
import com.gic.enterprise.api.dto.StoreSearchDTO;
import com.gic.enterprise.api.service.StoreService;
import com.gic.haoban.common.utils.DistanceUtil;
import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityJoinDTO;
import com.gic.haoban.manage.api.dto.qdto.chat.ChatHmSearchQDTO;
import com.gic.haoban.manage.api.enums.chat.ChatActivityJoinEnum;
import com.gic.haoban.manage.api.enums.chat.ChatActivityJoinRuleEnum;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityHmQDTO;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatHmRelationMapper;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatMapper;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatUserMapper;
import com.gic.haoban.manage.service.entity.chat.TabGroupChat;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatHmRelation;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatUser;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatHmBO;
import com.gic.haoban.manage.service.service.ESMemberInfoService;
import com.gic.haoban.manage.service.service.StaffClerkRelationService;
import com.gic.haoban.manage.service.service.chat.GroupChatHmService;
import com.gic.member.api.dto.MemberDTO;
import com.gic.member.api.dto.store.MemberStoreResp;
import com.gic.member.api.service.MemberService;
import com.gic.member.api.service.MemberStoreService;
import com.gic.member.tag.api.dto.MemberExistDTO;
import com.gic.member.tag.api.service.MemberTagGroupApiService;
import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.*;
import java.util.stream.Collectors;
/**
* Created by wangzubo on 2024/8/23.
*/
@Component
public class JoinRuleManager {
private static final Logger logger = LoggerFactory.getLogger(JoinRuleManager.class);
@Autowired
private MemberService memberService;
@Autowired
private MemberStoreService memberStoreService;
@Autowired
private ClerkService clerkService;
@Autowired
private StoreService storeService;
@Autowired
private GroupChatUserMapper groupChatUserMapper;
@Autowired
private GroupChatHmRelationMapper groupChatHmRelationMapper;
@Autowired
private GroupChatMapper groupChatMapper;
@Autowired
private GroupChatHmService groupChatHmService;
@Autowired
private StaffClerkRelationService staffClerkRelationService;
@Autowired
private ESMemberInfoService esMemberInfoService;
@Autowired
private MemberTagGroupApiService memberTagGroupApiService;
private final Map<ChatActivityJoinRuleEnum, FunctionWithException<GroupChatActivityHmQDTO,List<GroupChatHmBO>>> ruleHandlers = new HashMap<>();
public JoinRuleManager() {
ruleHandlers.put(ChatActivityJoinRuleEnum.INVITER_CHAT, this::handleInviterChat);
ruleHandlers.put(ChatActivityJoinRuleEnum.MAIN_STORE, this::handleMainStore);
ruleHandlers.put(ChatActivityJoinRuleEnum.OTHER_STORE, this::handleOtherStore);
ruleHandlers.put(ChatActivityJoinRuleEnum.LBS, this::handleLbs);
}
@FunctionalInterface
public interface FunctionWithException<T, R> {
R apply(T t) throws BusinessException;
}
/**
* 获取入群群活码
* @param activityHmQDTO qdto
* @return
* @throws BusinessException
*/
public List<GroupChatHmBO> listGroupHm(GroupChatActivityHmQDTO activityHmQDTO) throws BusinessException{
GroupChatActivityDTO chatActivity = activityHmQDTO.getChatActivity();
String inviteeMemberId = activityHmQDTO.getInviteeMemberId();
if (chatActivity == null) {
return new ArrayList<>();
}
logger.info("入群规则:{}", JSON.toJSONString(activityHmQDTO));
Integer joinType = chatActivity.getJoinType();
if (Objects.equals(ChatActivityJoinEnum.RULE.value, joinType)) {
String joinRule = chatActivity.getJoinRule();
List<JSONObject> joinRuleList = JSONArray.parseArray(joinRule, JSONObject.class);
for (JSONObject jsonObject : joinRuleList) {
//是否开启
Integer openFlag = jsonObject.getInteger("openFlag");
Integer val = jsonObject.getInteger("val");
if (!Objects.equals(openFlag, Constant.FLAG_TRUE)) {
continue;
}
ChatActivityJoinRuleEnum ruleEnum = ChatActivityJoinRuleEnum.getByValue(val);
List<GroupChatHmBO> hmBOList = applyJoinRule(ruleEnum, activityHmQDTO);
if (CollectionUtils.isNotEmpty(hmBOList)) {
return hmBOList;
}
}
}else {
//受邀人没有memberId则取邀请人所在群的群活码
if (StringUtils.isBlank(inviteeMemberId)) {
logger.info("受邀人没有memberId则取邀请人所在群的群活码");
List<GroupChatHmBO> hmBOList = handleInviterChat(activityHmQDTO);
if (CollectionUtils.isNotEmpty(hmBOList)) {
return hmBOList;
}
}else {
List<GroupChatActivityJoinDTO> joinList = activityHmQDTO.getChatActivity().getJoinList();
for (GroupChatActivityJoinDTO joinDTO : joinList) {
boolean checked = checkActivityMember(chatActivity, joinDTO, inviteeMemberId);
if (checked) {
logger.info("命中会员条件joinId:{},index:{}", joinDTO.getChatActivityJoinId(), joinDTO.getIndex());
GroupChatHmBO chatHm = groupChatHmService.getById(joinDTO.getChatHmId());
if (chatHm != null && Objects.equals(chatHm.getStatusFlag(), 1)) {
return Lists.newArrayList(chatHm);
}
}
}
}
}
GroupChatHmBO chatHm = groupChatHmService.getById(chatActivity.getJoinChatHmId());
if (chatHm != null && Objects.equals(chatHm.getStatusFlag(), 1)) {
return Lists.newArrayList(chatHm);
}
return null;
}
/**
* 校验会员是否满足校验条件
* @param chatActivity 社群活动
* @param joinDTO 入群规则
* @param memberId 受邀人id
* @return
*/
private boolean checkActivityMember(GroupChatActivityDTO chatActivity,GroupChatActivityJoinDTO joinDTO,String memberId) {
String enterpriseId = chatActivity.getEnterpriseId();
Integer memberType = joinDTO.getMemberType();
String filterJson = joinDTO.getFilterJson();
String creatorId = chatActivity.getCreatorId();
boolean exist = true;
//校验是否有权限
if (memberType == 0) {
String searchParams = esMemberInfoService.getMemberSearchParamOld(enterpriseId, memberType, filterJson,creatorId,false);
JSONObject searchJson = JSON.parseObject(searchParams);
exist = esMemberInfoService.matchMember(enterpriseId, searchJson, memberId,creatorId);
} else if (memberType == 1) {
MemberExistDTO dto = new MemberExistDTO();
dto.setEnterpriseId(enterpriseId);
String[] tagGroupIdArr = filterJson.split(",");
List<String> list = Arrays.asList(tagGroupIdArr);
dto.setMemberTagGroupIds(list);
dto.setUseId(creatorId);
dto.setMemberId(memberId);
exist = memberTagGroupApiService.memberIsExistGroup(dto);
}
logger.info("activity:{},memberId:{},joinId:{},有无权限:{}",chatActivity.getChatActivityId(),memberId,joinDTO.getChatActivityJoinId(),exist);
return exist;
}
public List<GroupChatHmBO> applyJoinRule(ChatActivityJoinRuleEnum ruleEnum, GroupChatActivityHmQDTO activityHmQDTO) throws BusinessException{
FunctionWithException<GroupChatActivityHmQDTO, List<GroupChatHmBO>> handler = ruleHandlers.get(ruleEnum);
if (handler != null) {
List<GroupChatHmBO> apply = handler.apply(activityHmQDTO);
if (apply == null) {
apply = new ArrayList<>();
}
logger.info("规则:{},获取活码数:{}", ruleEnum.desc, apply.size());
return apply;
}
return null;
}
/**
* 获取邀请人所在群群活码
* @param activityHmQDTO qdto
* @return
*/
private List<GroupChatHmBO> handleInviterChat(GroupChatActivityHmQDTO activityHmQDTO) {
String wxEnterpriseId = activityHmQDTO.getChatActivity().getWxEnterpriseId();
String enterpriseId = activityHmQDTO.getEnterpriseId();
String inviterMemberId = activityHmQDTO.getInviterMemberId();
MemberDTO member = memberService.getMember(inviterMemberId);
if (member == null) {
return new ArrayList<>();
}
//根据邀请人unionId获取所在群
String thirdUnionid = member.getThirdUnionid();
List<TabGroupChatUser> chartUserList = groupChatUserMapper.getByUnionId(enterpriseId, thirdUnionid);
if (CollectionUtils.isEmpty(chartUserList)) {
return new ArrayList<>();
}
//根据群id获取所有关联的群活码
List<Long> groupChatIdList = chartUserList.stream().map(TabGroupChatUser::getGroupChatId).collect(Collectors.toList());
List<TabGroupChatHmRelation> chatHmList = groupChatHmRelationMapper.listChatHmByGroupChatIds(groupChatIdList);
if (CollectionUtils.isEmpty(chatHmList)) {
return new ArrayList<>();
}
ChatHmSearchQDTO hmSearchQDTO = new ChatHmSearchQDTO();
hmSearchQDTO.setEnterpriseId(enterpriseId);
hmSearchQDTO.setWxEnterpriseId(wxEnterpriseId);
List<Long> chatHmIdList = chatHmList.stream().map(TabGroupChatHmRelation::getChatHmId).collect(Collectors.toList());
hmSearchQDTO.setChatHmIdList(chatHmIdList);
hmSearchQDTO.setStatus(1);
BasePageInfo basePageInfo = new BasePageInfo();
basePageInfo.setPageNum(1);
basePageInfo.setPageSize(100);
Page<GroupChatHmBO> listPage = groupChatHmService.listPage(hmSearchQDTO, basePageInfo);
return listPage.getResult();
}
/**
* 获取会员主门店群活码
* @param activityHmQDTO qdto
* @return
*/
private List<GroupChatHmBO> handleMainStore(GroupChatActivityHmQDTO activityHmQDTO) {
String enterpriseId = activityHmQDTO.getEnterpriseId();
String wxEnterpriseId = activityHmQDTO.getChatActivity().getWxEnterpriseId();
MemberStoreResp memberStoreRelation = memberStoreService.getMemberStoreRelation(enterpriseId, activityHmQDTO.getInviteeMemberId());
if (memberStoreRelation == null) {
return new ArrayList<>();
}
String mainStoreId = memberStoreRelation.getMainStoreId();
if (StringUtils.isBlank(mainStoreId)) {
return new ArrayList<>();
}
return getByStoreIdList(enterpriseId,wxEnterpriseId, Lists.newArrayList(mainStoreId));
}
/**
* 获取会员协管门店群活码
* @param activityHmQDTO qdto
* @return
*/
private List<GroupChatHmBO> handleOtherStore(GroupChatActivityHmQDTO activityHmQDTO) {
String enterpriseId = activityHmQDTO.getEnterpriseId();
String wxEnterpriseId = activityHmQDTO.getChatActivity().getWxEnterpriseId();
MemberStoreResp memberStoreRelation = memberStoreService.getMemberStoreRelation(enterpriseId, activityHmQDTO.getInviteeMemberId());
if (memberStoreRelation == null) {
return new ArrayList<>();
}
List<String> assistantStoreIds = memberStoreRelation.getAssistantStoreIds();
if (CollectionUtils.isEmpty(assistantStoreIds)) {
return new ArrayList<>();
}
return getByStoreIdList(enterpriseId,wxEnterpriseId, assistantStoreIds);
}
/**
* 获取会员最近定位门店群活码
* @param activityHmQDTO qdto
* @return
* @throws BusinessException
*/
private List<GroupChatHmBO> handleLbs(GroupChatActivityHmQDTO activityHmQDTO) throws BusinessException {
String enterpriseId = activityHmQDTO.getEnterpriseId();
String wxEnterpriseId = activityHmQDTO.getChatActivity().getWxEnterpriseId();
boolean skipArea = activityHmQDTO.isSkipArea();
if (skipArea) {
logger.info("跳过LBS");
return new ArrayList<>();
}
String districtCode = activityHmQDTO.getDistrictCode();
if (StringUtils.isBlank(districtCode)) {
throw new BusinessException("777", "未获取到经纬度");
}
// 获取省市对应的门店
StoreSearchDTO storeSearchDTO = new StoreSearchDTO();
storeSearchDTO.setEnterpriseId(enterpriseId);
storeSearchDTO.setProvinceCityIdList(Lists.newArrayList(districtCode));
storeSearchDTO.setStatus("2");
List<String> storeIds = this.storeService.listStoreIds(storeSearchDTO);
if (CollectionUtils.isEmpty(storeIds)) {
return new ArrayList<>();
}
//获取storeId对应活码
Map<String, List<GroupChatHmBO>> storeToHmMap = getStoreIdToGroupChatHmBOMap(enterpriseId, wxEnterpriseId, storeIds);
if (MapUtil.isEmpty(storeToHmMap)) {
return new ArrayList<>();
}
Set<String> storeIdSet = storeToHmMap.keySet();
//获取最近的一个门店
List<StoreDTO> stores = storeService.getStores(storeIdSet.toArray(new String[0]));
if (CollectionUtils.isEmpty(stores)) {
return new ArrayList<>();
}
String storeId = stores.get(0).getStoreId();
List<StoreDTO> sortStores = stores.stream().filter(x -> StringUtils.isNotBlank(x.getLatitude()) && StringUtils.isNotBlank(x.getLongitude()))
.sorted(Comparator.comparing(x ->
DistanceUtil.getDistance(Double.parseDouble(x.getLatitude()),
Double.parseDouble(x.getLongitude()),
Double.parseDouble(activityHmQDTO.getLatitude()),
Double.parseDouble(activityHmQDTO.getLongitude())))).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(sortStores)) {
storeId = sortStores.get(0).getStoreId();
}
logger.info("最近的门店id:{}",storeId);
return storeToHmMap.get(storeId);
}
/**
* 根据门店id获取群活码
* @param enterpriseId 企业id
* @param wxEnterpriseId 好办企业id
* @param storeIdList 门店id列表
* @return
*/
private List<GroupChatHmBO> getByStoreIdList(String enterpriseId,String wxEnterpriseId,List<String> storeIdList) {
logger.info("门店id列表:{}",JSON.toJSONString(storeIdList));
// 获取导购列表
Page<ClerkDTO> page = clerkService.pageClerkByNameOrCode(enterpriseId,"",storeIdList,1,1000);
List<ClerkDTO> clerkList = page.getResult();
if (CollectionUtils.isEmpty(clerkList)) {
logger.info("导购不存在");
return new ArrayList<>();
}
// 获取导购ID列表
List<String> clerkIdList = clerkList.stream().map(ClerkDTO::getClerkId).collect(Collectors.toList());
// 通过导购id查询staffId
List<StaffClerkRelationDTO> relationDTOList = staffClerkRelationService.listByClerkIds(clerkIdList);
if (CollectionUtils.isEmpty(relationDTOList)) {
logger.info("导购staff关联不存在");
return new ArrayList<>();
}
List<String> staffIdList = relationDTOList.stream().map(StaffClerkRelationDTO::getStaffId).collect(Collectors.toList());
if (CollectionUtils.isEmpty(staffIdList)) {
return new ArrayList<>();
}
// 通过staffId查询群
List<TabGroupChat> groupChatList = groupChatMapper.listByStaffIds(enterpriseId, staffIdList);
if (CollectionUtils.isEmpty(groupChatList)) {
logger.info("导购关联社群关联不存在");
return new ArrayList<>();
}
List<Long> groupChatIdList = groupChatList.stream().map(TabGroupChat::getGroupChatId).collect(Collectors.toList());
List<TabGroupChatHmRelation> chatHmList = groupChatHmRelationMapper.listChatHmByGroupChatIds(groupChatIdList);
if (CollectionUtils.isEmpty(chatHmList)) {
return new ArrayList<>();
}
List<Long> chatHmIdList = chatHmList.stream().map(TabGroupChatHmRelation::getChatHmId).collect(Collectors.toList());
BasePageInfo basePageInfo = new BasePageInfo();
basePageInfo.setPageNum(1);
basePageInfo.setPageSize(1000);
ChatHmSearchQDTO hmSearchQDTO = new ChatHmSearchQDTO();
hmSearchQDTO.setEnterpriseId(enterpriseId);
hmSearchQDTO.setWxEnterpriseId(wxEnterpriseId);
hmSearchQDTO.setChatHmIdList(chatHmIdList);
hmSearchQDTO.setStatus(1);
Page<GroupChatHmBO> listPage = groupChatHmService.listPage(hmSearchQDTO, basePageInfo);
return listPage.getResult();
}
/**
* 获取门店id对应群活码映射
* @param enterpriseId 企业id
* @param wxEnterpriseId 好办企业id
* @param storeIdList 门店id列表
* @return
*/
private Map<String, List<GroupChatHmBO>> getStoreIdToGroupChatHmBOMap(String enterpriseId,String wxEnterpriseId,List<String> storeIdList) {
logger.info("门店id列表:{}",JSON.toJSONString(storeIdList));
Page<ClerkDTO> page = clerkService.pageClerkByNameOrCode(enterpriseId,"",storeIdList,1,10000);
List<ClerkDTO> clerkList = page.getResult();
if (CollectionUtils.isEmpty(clerkList)) {
logger.info("导购不存在");
return new HashMap<>();
}
List<String> clerkIdList = clerkList.stream().map(ClerkDTO::getClerkId).collect(Collectors.toList());
//通过导购id查询staffId
List<StaffClerkRelationDTO> relationDTOList = staffClerkRelationService.listByClerkIds(clerkIdList);
if (CollectionUtils.isEmpty(relationDTOList)) {
logger.info("导购staff关联不存在");
return new HashMap<>();
}
List<String> staffIdList = relationDTOList.stream().map(StaffClerkRelationDTO::getStaffId).collect(Collectors.toList());
if (CollectionUtils.isEmpty(staffIdList)) {
return new HashMap<>();
}
Map<String, Set<String>> storeToStaffMap = relationDTOList.stream().collect(Collectors.groupingBy(StaffClerkRelationDTO::getStoreId,
Collectors.mapping(StaffClerkRelationDTO::getStaffId, Collectors.toSet())));
//通过staffId查询群
List<TabGroupChat> groupChatList = groupChatMapper.listByStaffIds(enterpriseId, staffIdList);
if (CollectionUtils.isEmpty(groupChatList)) {
logger.info("导购关联社群关联不存在");
return new HashMap<>();
}
List<Long> groupChatIdList = groupChatList.stream().map(TabGroupChat::getGroupChatId).collect(Collectors.toList());
Map<String, Set<Long>> staffToGroupChatMap = groupChatList.stream().collect(Collectors.groupingBy(TabGroupChat::getStaffId,
Collectors.mapping(TabGroupChat::getGroupChatId, Collectors.toSet())));
List<TabGroupChatHmRelation> chatHmList = groupChatHmRelationMapper.listChatHmByGroupChatIds(groupChatIdList);
if (CollectionUtils.isEmpty(chatHmList)) {
return new HashMap<>();
}
List<Long> chatHmIdList = chatHmList.stream().map(TabGroupChatHmRelation::getChatHmId).collect(Collectors.toList());
//通过群查询群活码
Map<Long, Set<Long>> groupChatToHmMap = chatHmList.stream().collect(Collectors.groupingBy(TabGroupChatHmRelation::getGroupChatId,
Collectors.mapping(TabGroupChatHmRelation::getChatHmId, Collectors.toSet())));
BasePageInfo basePageInfo = new BasePageInfo();
basePageInfo.setPageNum(1);
basePageInfo.setPageSize(1000);
ChatHmSearchQDTO hmSearchQDTO = new ChatHmSearchQDTO();
hmSearchQDTO.setEnterpriseId(enterpriseId);
hmSearchQDTO.setWxEnterpriseId(wxEnterpriseId);
hmSearchQDTO.setChatHmIdList(chatHmIdList);
hmSearchQDTO.setStatus(1);
Page<GroupChatHmBO> listPage = groupChatHmService.listPage(hmSearchQDTO, basePageInfo);
if (CollectionUtils.isEmpty(listPage.getResult())) {
return new HashMap<>();
}
Map<Long, GroupChatHmBO> groupHmMap = listPage.getResult().stream().collect(Collectors.toMap(GroupChatHmBO::getChatHmId, v -> v, (e, x) -> e));
Map<String, List<GroupChatHmBO>> storeIdToGroupChatHmBOMap = convertMap(storeToStaffMap, staffToGroupChatMap, groupChatToHmMap, groupHmMap);
return storeIdToGroupChatHmBOMap;
}
private static Map<String, List<GroupChatHmBO>> convertMap(Map<String, Set<String>> storeToStaffMap, Map<String, Set<Long>> staffToGroupChatMap, Map<Long, Set<Long>> groupChatToHmMap, Map<Long, GroupChatHmBO> groupHmMap) {
// 1. 初始化结果Map,存储每个storeId对应的GroupChatHmBO列表
Map<String, List<GroupChatHmBO>> storeIdToGroupChatHmBOMap = new HashMap<>();
// 2. 遍历每个storeId
for (String storeId : storeToStaffMap.keySet()) {
Set<String> staffIds = storeToStaffMap.get(storeId);
// 3. 获取该storeId对应的所有chatHmIds
Set<Long> chatHmIds = new HashSet<>();
for (String staffId : staffIds) {
Set<Long> groupChatIds = staffToGroupChatMap.get(staffId);
if (groupChatIds != null) {
for (Long groupChatId : groupChatIds) {
Set<Long> hmIds = groupChatToHmMap.get(groupChatId);
if (hmIds != null) {
chatHmIds.addAll(hmIds);
}
}
}
}
// 4. 获取对应的GroupChatHmBO
List<GroupChatHmBO> groupChatHmBOList = new ArrayList<>();
for (Long chatHmId : chatHmIds) {
GroupChatHmBO groupChatHmBO = groupHmMap.get(chatHmId);
if (groupChatHmBO != null) {
groupChatHmBOList.add(groupChatHmBO);
}
}
// 5. 将结果存入storeIdToGroupChatHmBOMap
if (!groupChatHmBOList.isEmpty()) {
storeIdToGroupChatHmBOMap.put(storeId, groupChatHmBOList);
}
}
return storeIdToGroupChatHmBOMap;
}
}
package com.gic.haoban.manage.service.context.chat;
import com.alibaba.fastjson.JSON;
import com.gic.api.base.commons.BusinessException;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.content.api.enums.activity.ContentActivityRewardEnum;
import com.gic.enterprise.api.enums.PlatformChannelEnum;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityRewardDetailLog;
import com.gic.haoban.manage.service.pojo.bo.RewardReturnBO;
import com.gic.haoban.manage.service.util.ExecuteServiceUtil;
import com.gic.marketing.api.dto.CoupCardCode;
import com.gic.marketing.api.dto.CoupCardLogDTO;
import com.gic.marketing.api.enums.MarketingErrCode;
import com.gic.marketing.api.service.CoupCardDistributionService;
import com.gic.member.api.constant.integral.IntegralTypeEnum;
import com.gic.member.api.dto.integral.req.IntegralOperationFullReq;
import com.gic.member.api.dto.integral.resp.IntegralOperationResp;
import com.gic.member.api.service.integral.IntegralWriteApiService;
import com.gic.member.ext.api.dto.growth.constant.GrowthErrorCode;
import com.gic.member.ext.api.dto.growth.req.MemberGrowthChangeValueReq;
import com.gic.member.ext.api.dto.growth.resp.MemberGrowthOperateResp;
import com.gic.member.ext.api.enums.growth.GrowthRuleEnum;
import com.gic.member.ext.api.service.MemberGrowthWriteApiService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Objects;
@Component
public class RewardSender {
private static final Logger logger = LoggerFactory.getLogger(RewardSender.class);
private static final String BUSINESS_NAME = "社群邀请有礼";
@Autowired
private IntegralWriteApiService integralWriteApiService;
@Autowired
private CoupCardDistributionService coupCardDistributionService;
@Autowired
private MemberGrowthWriteApiService memberGrowthWriteApiService;
public RewardReturnBO sendReward(TabGroupChatActivityRewardDetailLog rewardDetailLog, String activityName) throws BusinessException {
String enterpriseId = rewardDetailLog.getEnterpriseId();
String memberId = rewardDetailLog.getMemberId();
Long chatActivityId = rewardDetailLog.getChatActivityId();
String rewardDetailLogId = String.valueOf(rewardDetailLog.getChatActivityRewardDetailId());
Integer rewardType = rewardDetailLog.getRewardType();
String rewardValue = rewardDetailLog.getRewardValue();
logger.info("处理奖励: enterpriseId={}, memberId={}, rewardType={}, rewardValue={}",
enterpriseId, memberId, rewardType, rewardValue);
switch (ContentActivityRewardEnum.getByValue(rewardType)) {
case INTEGRAL:
Integer integral = Integer.parseInt(rewardValue);
return sendIntegral(enterpriseId, memberId, integral, BUSINESS_NAME + "-" + activityName, rewardDetailLogId, rewardDetailLogId);
case GROWTH:
Integer growthValue = Integer.parseInt(rewardValue);
return sendGrowth(enterpriseId, memberId, growthValue, activityName, rewardDetailLogId, rewardDetailLogId);
case COUPON:
return sendCoupon(enterpriseId, memberId, rewardValue, String.valueOf(chatActivityId));
default:
throw new BusinessException("-1", "不支持的奖励类型");
}
}
public RewardReturnBO sendIntegral(String enterpriseId, String memberId, Integer integral, String remark, String relationId, String oRelationId) throws BusinessException {
Integer integralType = integral > 0 ? IntegralTypeEnum.TYPE_1122.getCode() : IntegralTypeEnum.TYPE_1242.getCode();
IntegralOperationFullReq req = new IntegralOperationFullReq();
req.setMemberId(memberId);
req.setEnterpriseId(enterpriseId);
req.setIntegralType(integralType);
req.setIntegral(integral);
req.setSourceChannel(PlatformChannelEnum.C_WECHAT_MINI.getChannelCode());
req.setRemark(remark);
req.setUniqueId(relationId);
req.setRelationId(relationId);
req.setoRelationId(oRelationId);
logger.info("发送积分:{}", JSON.toJSONString(req));
ServiceResponse<IntegralOperationResp> response = ExecuteServiceUtil.executeService(() ->
integralWriteApiService.integralOperation(req), "积分处理异常");
if (response.isSuccess() && response.getResult() != null) {
Integer realOperationIntegral = response.getResult().getRealOperationIntegral();
return new RewardReturnBO(response.getResult().getIntegralLogId(), realOperationIntegral != null ? realOperationIntegral : integral);
}
throw new BusinessException("-1", response.getMessage());
}
public RewardReturnBO sendGrowth(String enterpriseId, String memberId, Integer growthValue, String remark, String relationId, String oRelationId) throws BusinessException {
String ruleCode = GrowthRuleEnum.INVITE_ACTIVITY.getRuleCode();
MemberGrowthChangeValueReq req = new MemberGrowthChangeValueReq();
req.setEnterpriseId(enterpriseId);
req.setMemberId(memberId);
req.setChannelCode(PlatformChannelEnum.C_WECHAT_MINI.getChannelCode());
req.setRuleCode(ruleCode);
req.setGrowthChangeValue(growthValue);
req.desc(BUSINESS_NAME, remark);
req.setOuterChangeId(relationId);
req.setOriginChangeId(oRelationId);
logger.info("发送成长值: {}", JSON.toJSONString(req));
ServiceResponse<MemberGrowthOperateResp> response = ExecuteServiceUtil.executeService(() ->
memberGrowthWriteApiService.updateMemberGrowthChangeValue(req), "成长值发放异常");
if (response.isSuccess() && response.getResult() != null) {
MemberGrowthOperateResp growthResp = response.getResult();
return new RewardReturnBO(String.valueOf(growthResp.getChangeId()), growthResp.getActualChangeGrowth());
}
if (Objects.equals(response.getCode(), GrowthErrorCode.MEMBER_GROWTH_IS_ZERO.code())) {
//当前会员没有成长值,无法进行扣除
return new RewardReturnBO("", 0);
}
throw new BusinessException("-1", response.getMessage());
}
public RewardReturnBO sendCoupon(String enterpriseId, String memberId, String cardId, String relationId) throws BusinessException {
logger.info("发送卡券: enterpriseId={}, memberId={}, cardId={}, relationId={}", enterpriseId, memberId, cardId, relationId);
ServiceResponse<CoupCardLogDTO> response = ExecuteServiceUtil.executeService(() ->
coupCardDistributionService.sendCard(enterpriseId, cardId, memberId, "",
CoupCardCode.CARD_RECEIVE_CODE_GROUP_CHAT_ACTIVITY.getCode(),
CoupCardCode.CARD_RECEIVE_CODE_GROUP_CHAT_ACTIVITY.getRelationType(), relationId, true), "卡券发放异常");
if (response.isSuccess() && response.getResult() != null) {
CoupCardLogDTO cardLogDTO = response.getResult();
return new RewardReturnBO(cardLogDTO.getCardLogId(), null);
}
throw new BusinessException("-1", MarketingErrCode.convertCouponError(response.getMessage()));
}
}
package com.gic.haoban.manage.service.context.combined;
import com.ctrip.framework.apollo.Config;
import com.ctrip.framework.apollo.ConfigChangeListener;
import com.ctrip.framework.apollo.ConfigService;
import com.ctrip.framework.apollo.model.ConfigChange;
import com.ctrip.framework.apollo.model.ConfigChangeEvent;
import com.gic.commons.util.TraceIdUtil;
import com.gic.haoban.manage.api.qdto.combined.CombinedQDTO;
import com.gic.haoban.manage.service.util.ApolloUtils;
import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import net.coobird.thumbnailator.Thumbnails;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.annotation.PostConstruct;
import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Arrays;
import java.util.Iterator;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* Created by wangzubo on 2024/10/27.
*/
public class ImageCombined {
private static final String APPLICATION = "application";
private static final Logger logger = LoggerFactory.getLogger(ImageCombined.class);
private static final Cache<String, BufferedImage> imageCache = Caffeine.newBuilder()
.maximumWeight(50 * 1024 * 1024) // 50MB
.weigher((String key, BufferedImage image) -> image.getWidth() * image.getHeight() / 4)
.expireAfterAccess(30, TimeUnit.MINUTES) // 可设置失效时间
.build();
public static final ThreadPoolExecutor EXECUTOR = new ThreadPoolExecutor(
ApolloUtils.combinedCorePoolSize(),
ApolloUtils.combinedMaximumPoolSize(),
60L,
TimeUnit.SECONDS,
new ArrayBlockingQueue<>(40),
new ThreadPoolExecutor.AbortPolicy()
);
private static void refreshThreadPool(ConfigChangeEvent changeEvent) {
if (!StringUtils.equals(changeEvent.getNamespace(), APPLICATION)) {
return;
}
TraceIdUtil.traceBegin(TraceIdUtil.EntranceType.QUARTZ);
ConfigChange combinedCorePoolSizeChange = changeEvent.getChange("combinedCorePoolSize");
ConfigChange combinedMaximumPoolSizeChange = changeEvent.getChange("combinedMaximumPoolSize");
if ((combinedCorePoolSizeChange != null && combinedCorePoolSizeChange.getNewValue() != null)
|| (combinedMaximumPoolSizeChange != null && combinedMaximumPoolSizeChange.getNewValue() != null)) {
Integer corePoolSize = ApolloUtils.combinedCorePoolSize();
Integer maximumPoolSize = ApolloUtils.combinedMaximumPoolSize();
logger.info("动态调整线程池corePoolSize:{},maximumPoolSize:{}", corePoolSize, maximumPoolSize);
EXECUTOR.setCorePoolSize(corePoolSize);
EXECUTOR.setMaximumPoolSize(maximumPoolSize);
}
TraceIdUtil.traceEnd();
}
public static final String IMAGE_REDIS_KEY = "haoban-manage3-service:combined_image:";
private static final int MAX_HEIGHT_NO_WHITE_SPACE = 1500;
private static final int MAX_HEIGHT_WITH_WHITE_SPACE = 1340;
private static final int MIN_WIDTH = 500;
private static final int WHITE_SPACE_HEIGHT = 160;
private static final int QR_WIDTH_REFERENCE = 136;
private static final String LARGE_IMAGE_URL = "https://revan-1251519181.cos.ap-shanghai.myqcloud.com/image/material_content-29dd73e4f9fb4a9eaf38ae1a3158bc91.jpg?imageView2/2/w/1080/h/10800/format/jpg";
private static final String QR_CODE_URL = "https://gicinner-1251519181.cos.ap-shanghai.myqcloud.com/image/material_content-4ffc77073ca1476fb264bf1be9f11383.png";
private static final String STORE_NAME = "杭州大厦";
private static final String GUIDE_NAME = "翁坚鹏为您推荐";
private static final String OUTPUT_PATH = "/Users/wang/Downloads/output_image6.jpg";
static {
ImageIO.scanForPlugins(); // 初始化图像插件
Config config = ConfigService.getAppConfig();
config.addChangeListener(ImageCombined::refreshThreadPool);
}
public static void main(String[] args) throws Exception{
BufferedImage largeImage = loadImageWithCache(LARGE_IMAGE_URL);
BufferedImage qrCodeImage = ImageIO.read(new URL(QR_CODE_URL));
int showStyle = 0;
BufferedImage combinedImage = generateImage(largeImage, qrCodeImage, showStyle,STORE_NAME, GUIDE_NAME);
ImageIO.write(combinedImage, "jpg", new File(OUTPUT_PATH));
}
public static byte[] getCombinedImage(CombinedQDTO combinedQDTO) throws Exception{
String imageUrl = combinedQDTO.getImageUrl();
String qrCodeUrl = combinedQDTO.getQrCodeUrl();
Integer showStyle = combinedQDTO.getShowStyle();
String lineOne = combinedQDTO.getLineOne();
String lineTwo = combinedQDTO.getLineTwo();
if(imageUrl.contains("?")) {
logger.info("url有参数={}",imageUrl);
imageUrl = imageUrl.split("\\?")[0] ;
}
//压缩图片的参数
imageUrl = imageUrl + "?imageView2/2/w/1080/h/10800/format/jpg";
logger.info("加载要合成的图片开始1");
BufferedImage largeImage = loadImageWithCache(imageUrl);
logger.info("加载要合成的图片开始2");
BufferedImage qrCodeImage = loadImageWithReader(qrCodeUrl);
logger.info("加载要合成的图片结束");
if (largeImage == null || qrCodeImage == null) {
return null;
}
BufferedImage combinedImage = generateImage(largeImage, qrCodeImage, showStyle, lineOne, lineTwo);
if (combinedImage == null) {
return null;
}
// ImageIO.write(combinedImage, "jpg", new File(OUTPUT_PATH));
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
ImageIO.write(combinedImage, "jpg", baos);
// 返回字节数组
return baos.toByteArray();
}finally {
qrCodeImage.flush();
combinedImage.flush();
}
}
private static BufferedImage loadImageWithReader(String url) {
try {
URL imageUrl = new URL(url);
try (InputStream inputStream = imageUrl.openStream();
ImageInputStream imageInputStream = ImageIO.createImageInputStream(inputStream)) {
Iterator<ImageReader> readers = ImageIO.getImageReaders(imageInputStream);
if (readers.hasNext()) {
ImageReader reader = readers.next();
reader.setInput(imageInputStream, true);
return reader.read(0);
}
}
} catch (IOException e) {
logger.error("读取异常: {}", url, e);
}
return null;
}
/**
* 从缓存中加载图像
*/
private static BufferedImage loadImageWithCache(String url) {
return imageCache.get(url, key -> {
try {
logger.info("加载图片buffered:{},key:{}", url, key);
return loadImageWithReader(key); // 使用读取器方法
} catch (Exception e) {
logger.error("获取图片异常", e);
return null;
}
});
}
private static BufferedImage generateImage(BufferedImage image, BufferedImage qrCode, int showStyle,String lineOne,String lineTwo){
logger.info("合成图片开始");
int width = image.getWidth();
int height = image.getHeight();
int qrWidth = QR_WIDTH_REFERENCE;
if (showStyle == 1) {
if (height > MAX_HEIGHT_NO_WHITE_SPACE) {
width = width * MAX_HEIGHT_NO_WHITE_SPACE / height;
height = MAX_HEIGHT_NO_WHITE_SPACE;
}
} else {
if (height > MAX_HEIGHT_WITH_WHITE_SPACE) {
width = width * MAX_HEIGHT_WITH_WHITE_SPACE / height;
height = MAX_HEIGHT_WITH_WHITE_SPACE;
}
width = Math.max(width, MIN_WIDTH);
}
int finalHeight = height + (showStyle == 1 ? 0 : WHITE_SPACE_HEIGHT);
BufferedImage resizedQRCode = null;
BufferedImage resizedImage = null;
try {
BufferedImage combinedImage = new BufferedImage(width, finalHeight, BufferedImage.TYPE_INT_RGB);
if (showStyle == 1) {
qrWidth = width * QR_WIDTH_REFERENCE / 750;
}
resizedQRCode = Thumbnails.of(qrCode).size(qrWidth, qrWidth).asBufferedImage();
resizedImage = Thumbnails.of(image).size(width, height).asBufferedImage();
Graphics2D g = combinedImage.createGraphics();
g.setColor(Color.WHITE);
g.drawImage(resizedImage, 0, 1, null);
if (showStyle == 1) {
// 不需要留白时,QR码距离底部20px
g.drawImage(resizedQRCode, width - qrWidth - 20, finalHeight - qrWidth - 20, null);
} else {
// 需要留白时
addWhiteSpace(g, width, finalHeight, resizedQRCode, qrWidth, lineOne, lineTwo);
}
g.dispose();
logger.info("合成图片结束");
return combinedImage;
} catch (Exception e) {
logger.error("生成合成图像时发生异常:", e);
return null;
} finally {
if (resizedQRCode != null) {
resizedQRCode.flush();
}
if (resizedImage != null) {
resizedImage.flush();
}
}
}
private static void addWhiteSpace(Graphics2D g, int width, int finalHeight, BufferedImage qrCode, int qrWidth,String lineOne,String lineTwo) {
// 添加白色背景
g.setColor(Color.WHITE);
g.fillRect(0, finalHeight - WHITE_SPACE_HEIGHT, width, WHITE_SPACE_HEIGHT);
// 添加门店名称,距底部88px
g.setColor(new Color(36, 40, 53));
g.setFont(new Font("Arial", Font.PLAIN, 30));
drawSingleLineText(g, lineOne, 30, finalHeight - WHITE_SPACE_HEIGHT + 72, width - 196); // 留出左右边距
// 添加推荐人信息,距底部40px
g.setColor(new Color(151, 155, 165));
g.setFont(new Font("Arial", Font.PLAIN, 26));
drawSingleLineText(g, lineTwo, 30, finalHeight - WHITE_SPACE_HEIGHT + 120, width - 196); // 留出左右边距
// 添加二维码,距底部12px
int qrBottomPadding = 12;
g.drawImage(qrCode, width - qrWidth - qrBottomPadding, finalHeight - qrWidth - qrBottomPadding, null);
}
private static void drawSingleLineText(Graphics2D g, String text, int x, int y, int maxWidth) {
FontMetrics metrics = g.getFontMetrics(g.getFont());
String truncatedText = text;
// 计算文本宽度并进行截断
if (metrics.stringWidth(text) > maxWidth) {
while (metrics.stringWidth(truncatedText + "...") > maxWidth && !truncatedText.isEmpty()) {
truncatedText = truncatedText.substring(0, truncatedText.length() - 2);
}
truncatedText += "..."; // 添加省略号
}
g.drawString(truncatedText, x, y);
}
}
package com.gic.haoban.manage.service.dao.mapper.chat;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityInviteLogQDTO;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityInviteLog;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Pageable;
import java.util.List;
/**
* 社群邀请有礼邀请日志表(TabHaobanGroupChatActivityInviteLog)表数据库访问层
*
* @author makejava
* @since 2024-09-27 16:09:55
*/
public interface GroupChatActivityInviteLogMapper {
/**
* 通过ID查询单条数据
*
* @param chatActivityInviteId 主键
* @return 实例对象
*/
TabGroupChatActivityInviteLog queryById(Long chatActivityInviteId);
/**
* 查询指定行数据
*
* @param tabGroupChatActivityInviteLog 查询条件
* @param pageable 分页对象
* @return 对象列表
*/
List<TabGroupChatActivityInviteLog> queryAll(TabGroupChatActivityInviteLog tabGroupChatActivityInviteLog);
/**
* 统计总行数
*
* @param tabGroupChatActivityInviteLog 查询条件
* @return 总行数
*/
long count(TabGroupChatActivityInviteLog tabGroupChatActivityInviteLog);
/**
* 新增数据
*
* @param tabGroupChatActivityInviteLog 实例对象
* @return 影响行数
*/
int insert(TabGroupChatActivityInviteLog tabGroupChatActivityInviteLog);
/**
* 根据活动id和要求人查询当前最大批次
* 有效邀请
*
* @param chatActivityId
* @param inviterMemberId
* @return
*/
Integer queryMaxBatchByChatActivityIdAndInviterMemberId(@Param("chatActivityId") Long chatActivityId,
@Param("inviterMemberId") String inviterMemberId);
/**
* 查询邀请记录日志
*
* @param inviteLogQDTO
* @return
*/
List<TabGroupChatActivityInviteLog> queryList(GroupChatActivityInviteLogQDTO inviteLogQDTO);
}
package com.gic.haoban.manage.service.dao.mapper.chat;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityJoin;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityReward;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Pageable;
import java.util.List;
/**
* 社群邀请有礼入群规则表(TabHaobanGroupChatActivityJoin)表数据库访问层
*
* @author makejava
* @since 2024-09-27 16:09:56
*/
public interface GroupChatActivityJoinMapper {
/**
* 通过ID查询单条数据
*
* @param chatActivityJoinId 主键
* @return 实例对象
*/
TabGroupChatActivityJoin queryById(Long chatActivityJoinId);
/**
* 通过ID列表查询多条数据
* @param chatActivityIds
* @return
*/
List<TabGroupChatActivityJoin> queryByChatActivityIds(@Param("chatActivityIds")List<Long> chatActivityIds);
/**
* 查询指定行数据
*
* @param tabGroupChatActivityJoin 查询条件
* @param pageable 分页对象
* @return 对象列表
*/
List<TabGroupChatActivityJoin> queryAllByLimit(TabGroupChatActivityJoin tabGroupChatActivityJoin, @Param("pageable") Pageable pageable);
/**
* 统计总行数
*
* @param tabGroupChatActivityJoin 查询条件
* @return 总行数
*/
long count(TabGroupChatActivityJoin tabGroupChatActivityJoin);
/**
* 新增数据
*
* @param tabGroupChatActivityJoin 实例对象
* @return 影响行数
*/
int insert(TabGroupChatActivityJoin tabGroupChatActivityJoin);
/**
* 修改数据
*
* @param tabGroupChatActivityJoin 实例对象
* @return 影响行数
*/
int update(TabGroupChatActivityJoin tabGroupChatActivityJoin);
/**
* 通过主键删除数据
*
* @param chatActivityJoinId 主键
* @return 影响行数
*/
int deleteById(Long chatActivityJoinId);
}
package com.gic.haoban.manage.service.dao.mapper.chat;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivitySearchQDTO;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivity;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 社群邀请有礼表(TabHaobanGroupChatActivity)表数据库访问层
*
* @author makejava
* @since 2024-09-27 16:09:35
*/
public interface GroupChatActivityMapper {
/**
* 通过ID查询单条数据
*
* @param chatActivityId 主键
* @return 实例对象
*/
TabGroupChatActivity queryById(Long chatActivityId);
/**
* 通过ID列表查询多条数据
* @param chatActivityIds
* @return
*/
List<TabGroupChatActivity> queryByIds(@Param("chatActivityIds") List<Long> chatActivityIds);
/**
* 通过ID列表查询多条数据
* @param chatActivityIds
* @return
*/
List<TabGroupChatActivity> queryByIdsDel(@Param("chatActivityIds")List<Long> chatActivityIds);
/**
* 分页查询数据
* @param enterpriseId
* @param searchQDTO
* @return
*/
List<TabGroupChatActivity> listActivity(@Param("enterpriseId") String enterpriseId,
@Param("search") GroupChatActivitySearchQDTO searchQDTO);
List<TabGroupChatActivity> listActivityByDate(TabGroupChatActivity tabGroupChatActivity);
/**
* 统计总行数
*
* @param tabGroupChatActivity 查询条件
* @return 总行数
*/
long count(TabGroupChatActivity tabGroupChatActivity);
/**
* 新增数据
*
* @param tabGroupChatActivity 实例对象
* @return 影响行数
*/
int insert(TabGroupChatActivity tabGroupChatActivity);
/**
* 修改数据
*
* @param tabGroupChatActivity 实例对象
* @return 影响行数
*/
int update(TabGroupChatActivity tabGroupChatActivity);
/**
* 通过主键删除数据
*
* @param chatActivityId 主键
* @return 影响行数
*/
int deleteById(@Param("enterpriseId") String enterpriseId,@Param("chatActivityId")Long chatActivityId);
}
package com.gic.haoban.manage.service.dao.mapper.chat;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityRewardDetailLogQDTO;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityRewardDetailLog;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Pageable;
import java.util.List;
/**
* 社群活动完成奖励明细表(TabHaobanGroupChatActivityRewardDetailLog)表数据库访问层
*
* @author makejava
* @since 2024-09-27 16:09:57
*/
public interface GroupChatActivityRewardDetailLogMapper {
/**
* 通过ID查询单条数据
*
* @param chatActivityRewardDetailId 主键
* @return 实例对象
*/
TabGroupChatActivityRewardDetailLog queryById(Long chatActivityRewardDetailId);
/**
* 查询指定行数据
*
* @param tabGroupChatActivityRewardDetailLog 查询条件
* @param pageable 分页对象
* @return 对象列表
*/
List<TabGroupChatActivityRewardDetailLog> queryAllByLimit(TabGroupChatActivityRewardDetailLog tabGroupChatActivityRewardDetailLog, @Param("pageable") Pageable pageable);
/**
* 统计总行数
*
* @param tabGroupChatActivityRewardDetailLog 查询条件
* @return 总行数
*/
long count(TabGroupChatActivityRewardDetailLog tabGroupChatActivityRewardDetailLog);
/**
* 新增数据
*
* @param tabGroupChatActivityRewardDetailLog 实例对象
* @return 影响行数
*/
int insert(TabGroupChatActivityRewardDetailLog tabGroupChatActivityRewardDetailLog);
/**
* 修改数据
*
* @param tabGroupChatActivityRewardDetailLog 实例对象
* @return 影响行数
*/
int update(TabGroupChatActivityRewardDetailLog tabGroupChatActivityRewardDetailLog);
/**
* 批量查询奖励明细
*
* @param rewardDetailLogQDTO
* @return
*/
List<TabGroupChatActivityRewardDetailLog> queryList(GroupChatActivityRewardDetailLogQDTO rewardDetailLogQDTO);
}
package com.gic.haoban.manage.service.dao.mapper.chat;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityRewardLogDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityRewardLogQDTO;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityRewardLog;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Pageable;
import java.util.List;
/**
* 内容活动完成奖励表(TabHaobanGroupChatActivityRewardLog)表数据库访问层
*
* @author makejava
* @since 2024-09-27 16:09:57
*/
public interface GroupChatActivityRewardLogMapper {
/**
* 通过ID查询单条数据
*
* @param chatActivityRewardId 主键
* @return 实例对象
*/
TabGroupChatActivityRewardLog queryById(Long chatActivityRewardId);
/**
* 查询指定行数据
*
* @param tabGroupChatActivityRewardLog 查询条件
* @param pageable 分页对象
* @return 对象列表
*/
List<TabGroupChatActivityRewardLog> queryAllByLimit(TabGroupChatActivityRewardLog tabGroupChatActivityRewardLog, @Param("pageable") Pageable pageable);
/**
* 统计总行数
*
* @param tabGroupChatActivityRewardLog 查询条件
* @return 总行数
*/
long count(TabGroupChatActivityRewardLog tabGroupChatActivityRewardLog);
/**
* 新增数据
*
* @param tabGroupChatActivityRewardLog 实例对象
* @return 影响行数
*/
int insert(TabGroupChatActivityRewardLog tabGroupChatActivityRewardLog);
/**
* 修改数据
*
* @param tabGroupChatActivityRewardLog 实例对象
* @return 影响行数
*/
int update(TabGroupChatActivityRewardLog tabGroupChatActivityRewardLog);
/**
* 通过主键删除数据
*
* @param chatActivityRewardId 主键
* @return 影响行数
*/
int deleteById(Long chatActivityRewardId);
/**
* 查询奖励数据
*
* @param rewardLogQDTO
* @return
*/
List<TabGroupChatActivityRewardLog> queryList(GroupChatActivityRewardLogQDTO rewardLogQDTO);
}
package com.gic.haoban.manage.service.dao.mapper.chat;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityReward;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Pageable;
import java.util.List;
/**
* 社群邀请有礼奖励规则表(TabHaobanGroupChatActivityReward)表数据库访问层
*
* @author makejava
* @since 2024-09-27 16:09:56
*/
public interface GroupChatActivityRewardMapper {
/**
* 通过ID查询单条数据
*
* @param chatActivityRewardId 主键
* @return 实例对象
*/
TabGroupChatActivityReward queryById(Long chatActivityRewardId);
/**
* 通过ID列表查询多条数据
* @param chatActivityIds
* @return
*/
List<TabGroupChatActivityReward> queryByChatActivityIds(@Param("chatActivityIds")List<Long> chatActivityIds);
/**
* 查询指定行数据
*
* @param tabGroupChatActivityReward 查询条件
* @param pageable 分页对象
* @return 对象列表
*/
List<TabGroupChatActivityReward> queryAllByLimit(TabGroupChatActivityReward tabGroupChatActivityReward, @Param("pageable") Pageable pageable);
/**
* 统计总行数
*
* @param tabGroupChatActivityReward 查询条件
* @return 总行数
*/
long count(TabGroupChatActivityReward tabGroupChatActivityReward);
/**
* 新增数据
*
* @param tabGroupChatActivityReward 实例对象
* @return 影响行数
*/
int insert(TabGroupChatActivityReward tabGroupChatActivityReward);
/**
* 修改数据
*
* @param tabGroupChatActivityReward 实例对象
* @return 影响行数
*/
int update(TabGroupChatActivityReward tabGroupChatActivityReward);
/**
* 通过主键删除数据
*
* @param chatActivityRewardId 主键
* @return 影响行数
*/
int deleteById(Long chatActivityRewardId);
}
package com.gic.haoban.manage.service.dao.mapper.chat;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityShareBind;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Pageable;
import java.util.List;
/**
* 社群邀请有礼邀请人和受邀人绑定表(TabHaobanGroupChatActivityShareBind)表数据库访问层
*
* @author makejava
* @since 2024-09-27 16:09:57
*/
public interface GroupChatActivityShareBindMapper {
/**
* 通过ID查询单条数据
*
* @param chatActivityBindId 主键
* @return 实例对象
*/
TabGroupChatActivityShareBind queryById(Long chatActivityBindId);
/**
* 获取24小时内有效记录
* @param inviteeUnionId
* @return
*/
List<TabGroupChatActivityShareBind> query24Record(@Param("inviteeUnionIds")List<String> inviteeUnionId);
/**
* 查询指定行数据
*
* @param tabGroupChatActivityShareBind 查询条件
* @param pageable 分页对象
* @return 对象列表
*/
List<TabGroupChatActivityShareBind> queryAllByLimit(TabGroupChatActivityShareBind tabGroupChatActivityShareBind, @Param("pageable") Pageable pageable);
/**
* 统计总行数
*
* @param tabGroupChatActivityShareBind 查询条件
* @return 总行数
*/
long count(TabGroupChatActivityShareBind tabGroupChatActivityShareBind);
/**
* 新增数据
*
* @param tabGroupChatActivityShareBind 实例对象
* @return 影响行数
*/
int insert(TabGroupChatActivityShareBind tabGroupChatActivityShareBind);
/**
* 修改数据
*
* @param tabGroupChatActivityShareBind 实例对象
* @return 影响行数
*/
int update(TabGroupChatActivityShareBind tabGroupChatActivityShareBind);
/**
* 通过主键删除数据
*
* @param chatActivityBindId 主键
* @return 影响行数
*/
int deleteById(Long chatActivityBindId);
}
...@@ -37,7 +37,8 @@ public interface GroupChatHmRelationMapper { ...@@ -37,7 +37,8 @@ public interface GroupChatHmRelationMapper {
* @throws * @throws
*/ */
public List<Long> listChatHmId(@Param("groupChatId") Long groupChatId); public List<Long> listChatHmId(@Param("groupChatId") Long groupChatId);
public List<TabGroupChatHmRelation> listChatHmByGroupChatIds(@Param("groupChatIds") List<Long> groupChatIds);
public List<GroupChatHmRelationBO> getHmValidChatCount(@Param("hmList") List<Long> hmList) ; public List<GroupChatHmRelationBO> getHmValidChatCount(@Param("hmList") List<Long> hmList) ;
......
...@@ -77,4 +77,6 @@ public interface GroupChatMapper { ...@@ -77,4 +77,6 @@ public interface GroupChatMapper {
public List<GroupChatDTO> listChangeOwner() ; public List<GroupChatDTO> listChangeOwner() ;
List<String> listOpenGroupChatDK(@Param("enterpriseId")String enterpriseId, @Param("staffId") String staffId); List<String> listOpenGroupChatDK(@Param("enterpriseId")String enterpriseId, @Param("staffId") String staffId);
List<TabGroupChat> listByStaffIds(@Param("enterpriseId")String enterpriseId, @Param("staffIds") List<String> staffId);
} }
\ No newline at end of file
...@@ -41,6 +41,9 @@ public interface GroupChatUserMapper { ...@@ -41,6 +41,9 @@ public interface GroupChatUserMapper {
public List<TabGroupChatUser> listAllChatUser(@Param("wxEnterpriseId") String wxEnterpriseId, public List<TabGroupChatUser> listAllChatUser(@Param("wxEnterpriseId") String wxEnterpriseId,
@Param("groupChatId") Long groupChatId); @Param("groupChatId") Long groupChatId);
public List<TabGroupChatUser> listByUserId(@Param("enterpriseId") String enterpriseId,
@Param("userId") String userId, @Param("statusFlag") Integer statusFlag);
public List<GroupChatUserDTO> listPage(GroupChatUserSearchQDTO qdto); public List<GroupChatUserDTO> listPage(GroupChatUserSearchQDTO qdto);
/** /**
...@@ -87,4 +90,8 @@ public interface GroupChatUserMapper { ...@@ -87,4 +90,8 @@ public interface GroupChatUserMapper {
* @return * @return
*/ */
List<GroupChatHmMemberRelationBO> listMemberChatHmIdByChatHmIdsAndMemberId(@Param("chatHmIds")List<Long> chatHmIds, @Param("enterpriseId")String enterpriseId, @Param("memberId")String memberId); List<GroupChatHmMemberRelationBO> listMemberChatHmIdByChatHmIdsAndMemberId(@Param("chatHmIds")List<Long> chatHmIds, @Param("enterpriseId")String enterpriseId, @Param("memberId")String memberId);
List<TabGroupChatUser> getByUnionId(@Param("enterpriseId")String enterpriseId, @Param("unionid")String unionid);
List<Long> listByUnionIdAndChatHmId(@Param("enterpriseId")String enterpriseId, @Param("unionid")String unionid,@Param("chatHmIdList")List<Long> chatHmIdList);
} }
\ No newline at end of file
...@@ -54,6 +54,7 @@ public class HoloDataSource implements InitializingBean, DisposableBean { ...@@ -54,6 +54,7 @@ public class HoloDataSource implements InitializingBean, DisposableBean {
holoConfig.setJdbcUrl(holoUrl); holoConfig.setJdbcUrl(holoUrl);
holoConfig.setUsername(holoUserName); holoConfig.setUsername(holoUserName);
holoConfig.setPassword(holoPassword); holoConfig.setPassword(holoPassword);
log.info("holo链接初始化,holoUrl:{},holoUserName:{},holoPassword:{}",holoUrl,holoUserName,holoPassword);
holoConfig.setConnectionMaxIdleMs(13000); holoConfig.setConnectionMaxIdleMs(13000);
HoloClient newClient = new HoloClient(holoConfig); HoloClient newClient = new HoloClient(holoConfig);
newClient.setAsyncCommit(false); newClient.setAsyncCommit(false);
......
package com.gic.haoban.manage.service.entity.chat;
import java.util.Date;
import java.io.Serializable;
/**
* 社群邀请有礼表(TabHaobanGroupChatActivity)实体类
*
* @author makejava
* @since 2024-09-27 16:09:38
*/
public class TabGroupChatActivity implements Serializable {
private static final long serialVersionUID = 973688857967269973L;
/**
* 社群活动id
*/
private Long chatActivityId;
/**
* 活动名称
*/
private String activityName;
/**
* 开始时间
*/
private Date startDate;
/**
* 结束时间
*/
private Date endDate;
/**
* 终止/截止时间
*/
private Date limitDate;
/**
* 活动图片
*/
private String activityImg;
/**
* 活动受邀页图片
*/
private String activityInviteImg;
/**
* 活动说明
*/
private String activityDesc;
/**
* 活动分享标题
*/
private String activityShareTitle;
/**
* 活动分享卡片图片
*/
private String activityShareImg;
/**
* 活动分享海报图片
*/
private String activityPosterImg;
/**
* 状态1未开始2进行中3已终止4已结束
*/
private Integer status;
/**
* 奖励类型 1定额奖励2阶梯奖励
*/
private Integer inviteRewardType;
/**
* 入群方式 1规则入群2定向入群
*/
private Integer joinType;
/**
* 入群规则 1邀请人所在企微群2服务门店3协管门店4LBS定位 [{"openFlag":0,"val":1},{"openFlag":0,"val":2},{"openFlag":0,"val":3},{"openFlag":0,"val":4}]
*/
private String joinRule;
/**
* 入群兜底群活码id
*/
private Long joinChatHmId;
/**
* 邀请类型 0不限制1入群前未处于任何企业群聊内算有效邀请2首次加入企业群聊才算有效邀请
*/
private Integer inviteType;
/**
* 邀请会员类型 0所有用户1开卡会员
*/
private Integer inviteMemberType;
/**
* 打标签1是0否
*/
private Integer labelFlag;
/**
* {"id": 1, "name": "标签名称" }
*/
private String labelJson;
/**
* 异常提醒 0 不提醒 1短信提醒
*/
private Integer exceptionNotice;
/**
* 异常提醒数量
*/
private Integer exceptionNoticeNum;
/**
* 企业ID
*/
private String enterpriseId;
/**
* 微信企业ID
*/
private String wxEnterpriseId;
private Date createTime;
private Date updateTime;
private String creatorId;
private String creatorName;
private Integer deleteFlag;
public Long getChatActivityId() {
return chatActivityId;
}
public void setChatActivityId(Long chatActivityId) {
this.chatActivityId = chatActivityId;
}
public String getActivityName() {
return activityName;
}
public void setActivityName(String activityName) {
this.activityName = activityName;
}
public Date getStartDate() {
return startDate;
}
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
public Date getLimitDate() {
return limitDate;
}
public void setLimitDate(Date limitDate) {
this.limitDate = limitDate;
}
public String getActivityImg() {
return activityImg;
}
public void setActivityImg(String activityImg) {
this.activityImg = activityImg;
}
public String getActivityInviteImg() {
return activityInviteImg;
}
public void setActivityInviteImg(String activityInviteImg) {
this.activityInviteImg = activityInviteImg;
}
public String getActivityDesc() {
return activityDesc;
}
public void setActivityDesc(String activityDesc) {
this.activityDesc = activityDesc;
}
public String getActivityShareTitle() {
return activityShareTitle;
}
public void setActivityShareTitle(String activityShareTitle) {
this.activityShareTitle = activityShareTitle;
}
public String getActivityShareImg() {
return activityShareImg;
}
public void setActivityShareImg(String activityShareImg) {
this.activityShareImg = activityShareImg;
}
public String getActivityPosterImg() {
return activityPosterImg;
}
public void setActivityPosterImg(String activityPosterImg) {
this.activityPosterImg = activityPosterImg;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public Integer getInviteRewardType() {
return inviteRewardType;
}
public void setInviteRewardType(Integer inviteRewardType) {
this.inviteRewardType = inviteRewardType;
}
public Integer getJoinType() {
return joinType;
}
public void setJoinType(Integer joinType) {
this.joinType = joinType;
}
public String getJoinRule() {
return joinRule;
}
public void setJoinRule(String joinRule) {
this.joinRule = joinRule;
}
public Long getJoinChatHmId() {
return joinChatHmId;
}
public void setJoinChatHmId(Long joinChatHmId) {
this.joinChatHmId = joinChatHmId;
}
public Integer getInviteType() {
return inviteType;
}
public void setInviteType(Integer inviteType) {
this.inviteType = inviteType;
}
public Integer getInviteMemberType() {
return inviteMemberType;
}
public void setInviteMemberType(Integer inviteMemberType) {
this.inviteMemberType = inviteMemberType;
}
public Integer getLabelFlag() {
return labelFlag;
}
public void setLabelFlag(Integer labelFlag) {
this.labelFlag = labelFlag;
}
public String getLabelJson() {
return labelJson;
}
public void setLabelJson(String labelJson) {
this.labelJson = labelJson;
}
public Integer getExceptionNotice() {
return exceptionNotice;
}
public void setExceptionNotice(Integer exceptionNotice) {
this.exceptionNotice = exceptionNotice;
}
public Integer getExceptionNoticeNum() {
return exceptionNoticeNum;
}
public void setExceptionNoticeNum(Integer exceptionNoticeNum) {
this.exceptionNoticeNum = exceptionNoticeNum;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public String getCreatorId() {
return creatorId;
}
public void setCreatorId(String creatorId) {
this.creatorId = creatorId;
}
public String getCreatorName() {
return creatorName;
}
public void setCreatorName(String creatorName) {
this.creatorName = creatorName;
}
public Integer getDeleteFlag() {
return deleteFlag;
}
public void setDeleteFlag(Integer deleteFlag) {
this.deleteFlag = deleteFlag;
}
}
package com.gic.haoban.manage.service.entity.chat;
import java.util.Date;
import java.io.Serializable;
/**
* 社群邀请有礼邀请日志表(TabHaobanGroupChatActivityInviteLog)实体类
*
* @author makejava
* @since 2024-09-27 16:09:55
*/
public class TabGroupChatActivityInviteLog implements Serializable {
private static final long serialVersionUID = 383845466789440463L;
/**
* 社群活动邀请id
*/
private Long chatActivityInviteId;
/**
* 社群活动id
*/
private Long chatActivityId;
/**
* 邀请人会员ID
*/
private String inviterMemberId;
/**
* 受邀人会员ID
*/
private String inviteeMemberId;
/**
* 受邀人外部联系人id
*/
private String inviteeUserId;
/**
* 受邀人unionId
*/
private String inviteeUnionId;
/**
* 姓名
*/
private String userName;
/**
* 昵称
*/
private String nickName;
/**
* 群id
*/
private Long groupChatId;
/**
* 有效邀请类型 1有效0无效
*/
private Integer inviteType;
/**
* 无效邀请类型 1非首次参与活动受邀入群2入群前已处于企业群聊内3非首次加入企业群聊
*/
private Integer invalidInviteType;
/**
* 是否新增会员 1是 0否 null未统计
*/
private Integer addMemberType;
/**
* 有效邀请达成的批次 达成所有奖励限制后为-1
*/
private Integer batchNumber;
/**
* 企业ID
*/
private String enterpriseId;
/**
* 微信企业ID
*/
private String wxEnterpriseId;
private Date createTime;
private Date updateTime;
private Integer deleteFlag;
public Long getChatActivityInviteId() {
return chatActivityInviteId;
}
public void setChatActivityInviteId(Long chatActivityInviteId) {
this.chatActivityInviteId = chatActivityInviteId;
}
public Long getChatActivityId() {
return chatActivityId;
}
public void setChatActivityId(Long chatActivityId) {
this.chatActivityId = chatActivityId;
}
public String getInviterMemberId() {
return inviterMemberId;
}
public void setInviterMemberId(String inviterMemberId) {
this.inviterMemberId = inviterMemberId;
}
public String getInviteeMemberId() {
return inviteeMemberId;
}
public void setInviteeMemberId(String inviteeMemberId) {
this.inviteeMemberId = inviteeMemberId;
}
public String getInviteeUserId() {
return inviteeUserId;
}
public void setInviteeUserId(String inviteeUserId) {
this.inviteeUserId = inviteeUserId;
}
public String getInviteeUnionId() {
return inviteeUnionId;
}
public void setInviteeUnionId(String inviteeUnionId) {
this.inviteeUnionId = inviteeUnionId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public Long getGroupChatId() {
return groupChatId;
}
public void setGroupChatId(Long groupChatId) {
this.groupChatId = groupChatId;
}
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 Integer getAddMemberType() {
return addMemberType;
}
public void setAddMemberType(Integer addMemberType) {
this.addMemberType = addMemberType;
}
public Integer getBatchNumber() {
return batchNumber;
}
public void setBatchNumber(Integer batchNumber) {
this.batchNumber = batchNumber;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Integer getDeleteFlag() {
return deleteFlag;
}
public void setDeleteFlag(Integer deleteFlag) {
this.deleteFlag = deleteFlag;
}
}
package com.gic.haoban.manage.service.entity.chat;
import java.util.Date;
import java.io.Serializable;
/**
* 社群邀请有礼入群规则表(TabHaobanGroupChatActivityJoin)实体类
*
* @author makejava
* @since 2024-09-27 16:09:56
*/
public class TabGroupChatActivityJoin implements Serializable {
private static final long serialVersionUID = -95747409578903881L;
/**
* 社群活动入群规则id
*/
private Long chatActivityJoinId;
/**
* 内容活动id
*/
private Long chatActivityId;
/**
* 会员类型(0:会员筛选,1:会员分组)
*/
private Integer memberType;
/**
* 人群
*/
private String filterJson;
/**
* 人群回显
*/
private String filterJsonView;
/**
* 序号 从小到大
*/
private Integer index;
/**
* 群活码id
*/
private Long chatHmId;
/**
* 企业ID
*/
private String enterpriseId;
/**
* 微信企业ID
*/
private String wxEnterpriseId;
private Date createTime;
private Date updateTime;
private Integer deleteFlag;
public Long getChatActivityJoinId() {
return chatActivityJoinId;
}
public void setChatActivityJoinId(Long chatActivityJoinId) {
this.chatActivityJoinId = chatActivityJoinId;
}
public Long getChatActivityId() {
return chatActivityId;
}
public void setChatActivityId(Long chatActivityId) {
this.chatActivityId = chatActivityId;
}
public Integer getMemberType() {
return memberType;
}
public void setMemberType(Integer memberType) {
this.memberType = memberType;
}
public String getFilterJson() {
return filterJson;
}
public void setFilterJson(String filterJson) {
this.filterJson = filterJson;
}
public String getFilterJsonView() {
return filterJsonView;
}
public void setFilterJsonView(String filterJsonView) {
this.filterJsonView = filterJsonView;
}
public Integer getIndex() {
return index;
}
public void setIndex(Integer index) {
this.index = index;
}
public Long getChatHmId() {
return chatHmId;
}
public void setChatHmId(Long chatHmId) {
this.chatHmId = chatHmId;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Integer getDeleteFlag() {
return deleteFlag;
}
public void setDeleteFlag(Integer deleteFlag) {
this.deleteFlag = deleteFlag;
}
}
package com.gic.haoban.manage.service.entity.chat;
import java.util.Date;
import java.io.Serializable;
/**
* 社群邀请有礼奖励规则表(TabHaobanGroupChatActivityReward)实体类
*
* @author makejava
* @since 2024-09-27 16:09:56
*/
public class TabGroupChatActivityReward implements Serializable {
private static final long serialVersionUID = -78111537762472232L;
/**
* 社群活动奖励规则id
*/
private Long chatActivityRewardId;
/**
* 内容活动id
*/
private Long chatActivityId;
/**
* 奖励邀请人数
*/
private Integer inviteNumber;
/**
* 奖励阶梯 固定奖励默认1
*/
private Integer inviteLevel;
/**
* 奖励人类型 1邀请人2受邀人
*/
private Integer rewardInvite;
/**
* 奖励类型 1积分2成长值3卡券
*/
private Integer rewardType;
/**
* 最多奖励数量
*/
private Integer limitReward;
/**
* 奖励内容 积分值 成长值 卡券id(逗号分隔)
*/
private String rewardValue;
/**
* 奖励名称 积分名称 成长值名称 卡券名称
*/
private String rewardName;
/**
* 企业ID
*/
private String enterpriseId;
/**
* 微信企业ID
*/
private String wxEnterpriseId;
private Date createTime;
private Date updateTime;
private Integer deleteFlag;
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 Integer getInviteNumber() {
return inviteNumber;
}
public void setInviteNumber(Integer inviteNumber) {
this.inviteNumber = inviteNumber;
}
public Integer getInviteLevel() {
return inviteLevel;
}
public void setInviteLevel(Integer inviteLevel) {
this.inviteLevel = inviteLevel;
}
public Integer getRewardInvite() {
return rewardInvite;
}
public void setRewardInvite(Integer rewardInvite) {
this.rewardInvite = rewardInvite;
}
public Integer getRewardType() {
return rewardType;
}
public void setRewardType(Integer rewardType) {
this.rewardType = rewardType;
}
public Integer getLimitReward() {
return limitReward;
}
public void setLimitReward(Integer limitReward) {
this.limitReward = limitReward;
}
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 getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Integer getDeleteFlag() {
return deleteFlag;
}
public void setDeleteFlag(Integer deleteFlag) {
this.deleteFlag = deleteFlag;
}
}
package com.gic.haoban.manage.service.entity.chat;
import java.util.Date;
import java.io.Serializable;
/**
* 社群活动完成奖励明细表(TabHaobanGroupChatActivityRewardDetailLog)实体类
*
* @author makejava
* @since 2024-09-27 16:09:57
*/
public class TabGroupChatActivityRewardDetailLog implements Serializable {
private static final long serialVersionUID = -71645364064743328L;
/**
* 社群活动奖励明细id
*/
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;
/**
* 企业ID
*/
private String enterpriseId;
/**
* 微信企业ID
*/
private String wxEnterpriseId;
private Date createTime;
private Date updateTime;
private Integer deleteFlag;
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;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Integer getDeleteFlag() {
return deleteFlag;
}
public void setDeleteFlag(Integer deleteFlag) {
this.deleteFlag = deleteFlag;
}
}
package com.gic.haoban.manage.service.entity.chat;
import java.util.Date;
import java.io.Serializable;
/**
* 内容活动完成奖励表(TabHaobanGroupChatActivityRewardLog)实体类
*
* @author makejava
* @since 2024-09-27 16:09:57
*/
public class TabGroupChatActivityRewardLog implements Serializable {
private static final long serialVersionUID = 825094751550440080L;
/**
* 社群活动奖励id
*/
private Long chatActivityRewardLogId;
/**
* 社群活动id
*/
private Long chatActivityId;
/**
* 会员ID
*/
private String memberId;
/**
* 奖励人类型 1邀请人2受邀人
*/
private Integer rewardInvite;
/**
* 奖励阶梯 阶梯奖励,其他奖励默认1
*/
private Integer inviteLevel;
/**
* 企业ID
*/
private String enterpriseId;
/**
* 微信企业ID
*/
private String wxEnterpriseId;
private Date createTime;
private Date updateTime;
private Integer deleteFlag;
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 String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Integer getDeleteFlag() {
return deleteFlag;
}
public void setDeleteFlag(Integer deleteFlag) {
this.deleteFlag = deleteFlag;
}
}
package com.gic.haoban.manage.service.entity.chat;
import java.util.Date;
import java.io.Serializable;
/**
* 社群邀请有礼邀请人和受邀人绑定表(TabHaobanGroupChatActivityShareBind)实体类
*
* @author makejava
* @since 2024-09-27 16:09:58
*/
public class TabGroupChatActivityShareBind implements Serializable {
private static final long serialVersionUID = -28454620622119889L;
/**
* 社群活动邀请id
*/
private Long chatActivityBindId;
/**
* 社群活动id
*/
private Long chatActivityId;
/**
* 邀请人会员ID
*/
private String inviterMemberId;
/**
* 受邀人会员ID
*/
private String inviteeMemberId;
/**
* 受邀人unionID
*/
private String inviteeUnionId;
/**
* 企业ID
*/
private String enterpriseId;
/**
* 微信企业ID
*/
private String wxEnterpriseId;
private Date createTime;
private Date updateTime;
private Integer deleteFlag;
public Long getChatActivityBindId() {
return chatActivityBindId;
}
public void setChatActivityBindId(Long chatActivityBindId) {
this.chatActivityBindId = chatActivityBindId;
}
public Long getChatActivityId() {
return chatActivityId;
}
public void setChatActivityId(Long chatActivityId) {
this.chatActivityId = chatActivityId;
}
public String getInviterMemberId() {
return inviterMemberId;
}
public void setInviterMemberId(String inviterMemberId) {
this.inviterMemberId = inviterMemberId;
}
public String getInviteeMemberId() {
return inviteeMemberId;
}
public void setInviteeMemberId(String inviteeMemberId) {
this.inviteeMemberId = inviteeMemberId;
}
public String getInviteeUnionId() {
return inviteeUnionId;
}
public void setInviteeUnionId(String inviteeUnionId) {
this.inviteeUnionId = inviteeUnionId;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Integer getDeleteFlag() {
return deleteFlag;
}
public void setDeleteFlag(Integer deleteFlag) {
this.deleteFlag = deleteFlag;
}
}
package com.gic.haoban.manage.service.pojo.bo;
/**
* Created by wangzubo on 2024/8/24.
*/
public class RewardReturnBO {
/**
* 奖励业务日志id
*/
private String rewardBusinessId;
/**
* 奖励或返回实际值
*/
private Integer rewardValue;
public RewardReturnBO(String rewardBusinessId, Integer rewardValue) {
this.rewardBusinessId = rewardBusinessId;
this.rewardValue = rewardValue;
}
public String getRewardBusinessId() {
return rewardBusinessId;
}
public void setRewardBusinessId(String rewardBusinessId) {
this.rewardBusinessId = rewardBusinessId;
}
public Integer getRewardValue() {
return rewardValue;
}
public void setRewardValue(Integer rewardValue) {
this.rewardValue = rewardValue;
}
}
package com.gic.haoban.manage.service.pojo.bo.chat;
import java.util.Date;
/**
* Created by wangzubo on 2024/10/9.
*/
public class GroupChatActivityBaseContext {
/**
* 入群详情id
*/
private Long chatUserId;
/**
* 社群活动id
*/
private Long chatActivityId;
/**
* 邀请人会员ID
*/
private String inviterMemberId;
/**
* 企业id
*/
private String enterpriseId;
/**
* 唯一id
*/
private String uniqueId;
/**
* 最后一次访问邀请页时间
*/
private Date lastShareTime;
public Long getChatUserId() {
return chatUserId;
}
public void setChatUserId(Long chatUserId) {
this.chatUserId = chatUserId;
}
public Long getChatActivityId() {
return chatActivityId;
}
public void setChatActivityId(Long chatActivityId) {
this.chatActivityId = chatActivityId;
}
public String getInviterMemberId() {
return inviterMemberId;
}
public void setInviterMemberId(String inviterMemberId) {
this.inviterMemberId = inviterMemberId;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getUniqueId() {
return uniqueId;
}
public void setUniqueId(String uniqueId) {
this.uniqueId = uniqueId;
}
public Date getLastShareTime() {
return lastShareTime;
}
public void setLastShareTime(Date lastShareTime) {
this.lastShareTime = lastShareTime;
}
}
package com.gic.haoban.manage.service.pojo.bo.chat;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityDTO;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatUser;
/**
* Created by wangzubo on 2024/10/9.
*/
public class GroupChatActivityContext extends GroupChatActivityBaseContext{
/**
* 群详情
*/
private TabGroupChatUser chatUser;
/**
* 社群活动
*/
private GroupChatActivityDTO chatActivityDTO;
public TabGroupChatUser getChatUser() {
return chatUser;
}
public void setChatUser(TabGroupChatUser chatUser) {
this.chatUser = chatUser;
}
public GroupChatActivityDTO getChatActivityDTO() {
return chatActivityDTO;
}
public void setChatActivityDTO(GroupChatActivityDTO chatActivityDTO) {
this.chatActivityDTO = chatActivityDTO;
}
}
package com.gic.haoban.manage.service.pojo.bo.chat;
public class GroupChatActivityHmBO extends GroupChatHmBO{
private static final long serialVersionUID = 21518878229500L;
/**
* 是否已经入群 1是0否
*/
private Integer joinGroup;
public Integer getJoinGroup() {
return joinGroup;
}
public void setJoinGroup(Integer joinGroup) {
this.joinGroup = joinGroup;
}
}
\ No newline at end of file
package com.gic.haoban.manage.service.pojo.bo.chat;
import com.google.common.base.Objects;
import java.io.Serializable;
import java.util.Date;
/**
* 社群邀请有礼奖励规则表(TabHaobanGroupChatActivityReward)实体类
*
* @author makejava
* @since 2024-09-27 16:09:56
*/
public class GroupChatActivityRewardBO implements Serializable {
private static final long serialVersionUID = -78111537762472232L;
/**
* 内容活动id
*/
private Long chatActivityId;
/**
* 奖励阶梯 固定奖励默认1
*/
private Integer inviteLevel;
/**
* 奖励人类型 1邀请人2受邀人
*/
private Integer rewardInvite;
/**
* 奖励类型 1积分2成长值3卡券
*/
private Integer rewardType;
public GroupChatActivityRewardBO(Long chatActivityId, Integer inviteLevel, Integer rewardInvite, Integer rewardType) {
this.chatActivityId = chatActivityId;
this.inviteLevel = inviteLevel;
this.rewardInvite = rewardInvite;
this.rewardType = rewardType;
}
public Long getChatActivityId() {
return chatActivityId;
}
public void setChatActivityId(Long chatActivityId) {
this.chatActivityId = chatActivityId;
}
public Integer getInviteLevel() {
return inviteLevel;
}
public void setInviteLevel(Integer inviteLevel) {
this.inviteLevel = inviteLevel;
}
public Integer getRewardInvite() {
return rewardInvite;
}
public void setRewardInvite(Integer rewardInvite) {
this.rewardInvite = rewardInvite;
}
public Integer getRewardType() {
return rewardType;
}
public void setRewardType(Integer rewardType) {
this.rewardType = rewardType;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
GroupChatActivityRewardBO that = (GroupChatActivityRewardBO) o;
return Objects.equal(chatActivityId, that.chatActivityId) && Objects.equal(inviteLevel, that.inviteLevel) && Objects.equal(rewardInvite, that.rewardInvite) && Objects.equal(rewardType, that.rewardType);
}
@Override
public int hashCode() {
return Objects.hashCode(chatActivityId, inviteLevel, rewardInvite, rewardType);
}
}
package com.gic.haoban.manage.service.service;
import com.alibaba.fastjson.JSONObject;
import com.gic.content.api.dto.common.MemberSearchDTO;
import com.gic.member.api.dto.es.MemberDataDTO;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @author: YuZhi
* @date: 2022/3/14 10:01
*/
public interface ESMemberInfoService {
/**
* 获取会员查询条件(老的筛选器存的查询条件)
* @param enterpriseId 企业id
* @param memberType 查询会员类型0人群1分组
* @param filterJson 查询条件
* @param creatorId 创建人id
* @param readyFlag 是否需要判断分组准备完成
* @return
*/
String getMemberSearchParamOld(String enterpriseId, Integer memberType, String filterJson, String creatorId,boolean readyFlag);
/**
* 单个会员条件匹配
* @param enterpriseId 企业id
* @param searchJson 条件json
* @param memberId 会员id
* @return
*/
boolean matchMember(String enterpriseId, JSONObject searchJson,String memberId,String creatorId);
/**
*
* @Title: queryDataSingle
* @Description: 单个会员
* @author xugh
* @param enterpriseId
* @param memberId
* @param returnFields
* @return
* @throws
*/
JSONObject queryDataSingle(String enterpriseId, String memberId, String returnFields) ;
}
...@@ -3,6 +3,7 @@ package com.gic.haoban.manage.service.service; ...@@ -3,6 +3,7 @@ package com.gic.haoban.manage.service.service;
import com.gic.api.base.commons.JSONResponse; import com.gic.api.base.commons.JSONResponse;
import com.gic.haoban.manage.api.dto.ContentMaterialDTO; import com.gic.haoban.manage.api.dto.ContentMaterialDTO;
import com.gic.haoban.manage.api.dto.MaterialDTO; import com.gic.haoban.manage.api.dto.MaterialDTO;
import com.gic.haoban.manage.api.qdto.combined.CombinedQDTO;
import java.util.List; import java.util.List;
...@@ -59,4 +60,7 @@ public interface MaterialService { ...@@ -59,4 +60,7 @@ public interface MaterialService {
public List<String> getImageMediaId(String wxEnterpriseId, List<ContentMaterialDTO> imageList, int mediaType) ; public List<String> getImageMediaId(String wxEnterpriseId, List<ContentMaterialDTO> imageList, int mediaType) ;
List<MaterialDTO> listContentMaterialByIds(List<String> materialIds,Integer mediaType); List<MaterialDTO> listContentMaterialByIds(List<String> materialIds,Integer mediaType);
JSONResponse getMaterialIdByCombined(String wxEnterpriseId, CombinedQDTO combinedQDTO);
} }
package com.gic.haoban.manage.service.service.chat;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityInviteLogDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityInviteLogQDTO;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatUser;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatActivityBaseContext;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatActivityContext;
import java.util.List;
/**
* 社群邀请有礼邀请日志表(TabHaobanGroupChatActivityInviteLog)表服务接口
*
* @author makejava
* @since 2024-09-27 16:09:56
*/
public interface GroupChatActivityInviteLogService {
/**
* 查询C端邀请人数据
*
* @param groupChatActivityInviteLogQDTO
* @return
*/
List<GroupChatActivityInviteLogDTO> queryMaxBatchInviteLog(GroupChatActivityInviteLogQDTO groupChatActivityInviteLogQDTO);
/**
* 查询邀请明细
*
* @param inviteLogQDTO
* @return
*/
Page<GroupChatActivityInviteLogDTO> queryInviteLogDetails(GroupChatActivityInviteLogQDTO inviteLogQDTO);
/**
* 入群异步处理参与社群活动
* @param list
*/
void groupChatInviteMQ(List<TabGroupChatUser> list);
/**
* 入群参与社群活动
* @param context
*/
void groupChatInvite(GroupChatActivityBaseContext context);
}
package com.gic.haoban.manage.service.service.chat;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivity;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityJoin;
import java.util.List;
import java.util.Map;
/**
* 社群邀请有礼入群规则表(TabHaobanGroupChatActivityJoin)表服务接口
*
* @author makejava
* @since 2024-09-27 16:09:56
*/
public interface GroupChatActivityJoinService {
/**
* 获取活动的入群规则
* @param chatActivityId
* @return
*/
List<TabGroupChatActivityJoin> listByActivityId(Long chatActivityId);
/**
* 批量获取活动的入群规则
* @param chatActivityIdList
* @return
*/
Map<Long,List<TabGroupChatActivityJoin>> listByActivityIdList(List<Long> chatActivityIdList);
/**
* 保存活动奖励规则
* @param joinList
*/
void saveActivityJoin(TabGroupChatActivity activity, List<TabGroupChatActivityJoin> joinList);
}
package com.gic.haoban.manage.service.service.chat;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityRewardDetailLogDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityRewardDetailLogQDTO;
import java.util.List;
/**
* 社群活动完成奖励明细表(TabHaobanGroupChatActivityRewardDetailLog)表服务接口
*
* @author makejava
* @since 2024-09-27 16:09:57
*/
public interface GroupChatActivityRewardDetailLogService {
/**
* 查询奖励明细数据
*
* @param rewardDetailLogQDTO
* @return
*/
List<GroupChatActivityRewardDetailLogDTO> queryList(GroupChatActivityRewardDetailLogQDTO rewardDetailLogQDTO);
}
package com.gic.haoban.manage.service.service.chat;
import com.gic.api.base.commons.Page;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityRewardLogDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityRewardLogQDTO;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatActivityContext;
/**
* 内容活动完成奖励表(TabHaobanGroupChatActivityRewardLog)表服务接口
*
* @author makejava
* @since 2024-09-27 16:09:57
*/
public interface GroupChatActivityRewardLogService {
/**
* 奖励明细
*
* @param rewardLogQDTO
* @return
*/
Page<GroupChatActivityRewardLogDTO> queryRewardLogDetails(GroupChatActivityRewardLogQDTO rewardLogQDTO);
/**
* 处理奖励发放并保存日志
* @param context
*/
void dealRewardAndSaveLog(GroupChatActivityContext context);
/**
* 查询奖励次数
*
* @param rewardLogQDTO
* @return
*/
Long queryRewardNum(GroupChatActivityRewardLogQDTO rewardLogQDTO);
}
package com.gic.haoban.manage.service.service.chat;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityReward;
import java.util.List;
import java.util.Map;
/**
* 社群邀请有礼奖励规则表(TabHaobanGroupChatActivityReward)表服务接口
*
* @author makejava
* @since 2024-09-27 16:09:57
*/
public interface GroupChatActivityRewardService {
/**
* 获取活动的奖励规则
* @param chatActivityId
* @return
*/
List<TabGroupChatActivityReward> listByActivityId(Long chatActivityId);
/**
* 批量获取活动的奖励规则
* @param chatActivityIdList
* @return
*/
Map<Long,List<TabGroupChatActivityReward>> listByActivityIdList(List<Long> chatActivityIdList);
/**
* 保存活动奖励规则
* @param rewardList
*/
void saveActivityReward(Long chatActivityId, List<TabGroupChatActivityReward> rewardList);
}
package com.gic.haoban.manage.service.service.chat;
import com.gic.api.base.commons.BasePageInfo;
import com.gic.api.base.commons.BusinessException;
import com.gic.api.base.commons.Page;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityHmQDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityQDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivitySearchQDTO;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivity;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatActivityHmBO;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatHmBO;
import java.util.List;
/**
* 社群邀请有礼表(TabHaobanGroupChatActivity)表服务接口
*
* @author makejava
* @since 2024-09-27 16:09:43
*/
public interface GroupChatActivityService {
/**
* 保存社群活动
* @param qdto
* @return
* @throws BusinessException
*/
Long saveActivity(GroupChatActivityQDTO qdto) throws BusinessException;
/**
* 获取活动详情
* @param chatActivityId
* @return
*/
GroupChatActivityDTO getActivityDetail(String enterpriseId, Long chatActivityId);
/**
* 删除活动缓存
* @param enterpriseId 企业id
* @param chatActivityId 活动id
*/
void delActivityDetailCache(String enterpriseId,Long chatActivityId);
/**
* 获取活动详情(缓存)
* @param chatActivityId
* @return
*/
GroupChatActivityDTO getActivityDetailCache(String enterpriseId,Long chatActivityId);
/**
* 通过活动id列表获取
* @param enterpriseId 企业id
* @param chatActivityIdList 活动id列表
* @return
*/
List<TabGroupChatActivity> listByActivityIds(String enterpriseId, List<Long> chatActivityIdList);
/**
* 通过活动id列表获取(包含删除的)
* @param enterpriseId
* @param chatActivityIdList
* @return
*/
List<TabGroupChatActivity> listByActivityIdsDel(String enterpriseId, List<Long> chatActivityIdList);
/**
* 分页查询活动列表
* @param enterpriseId 企业id
* @param searchQDTO 搜索条件
* @return
*/
Page<GroupChatActivityDTO> pageActivity(String enterpriseId, GroupChatActivitySearchQDTO searchQDTO, BasePageInfo pageInfo);
/**
* 终止活动
* @param enterpriseId 企业id
* @param chatActivityId 活动id
*/
GroupChatActivityDTO stopActivity(String enterpriseId, Long chatActivityId) throws BusinessException;
/**
* 删除活动
* @param enterpriseId 企业id
* @param chatActivityId 活动id
*/
void delActivity(String enterpriseId, Long chatActivityId) throws BusinessException;
/**
* 更新活动状态
* @param enterpriseId 企业id
* @param chatActivityId 活动id
* @param status 状态
*/
void updateStatusActivity(String enterpriseId, Long chatActivityId,Integer status);
/**
* 获取有效的活动计划列表
* @param enterpriseId 企业id
* @return
*/
List<TabGroupChatActivity> listEffectiveActivity(String enterpriseId);
/**
* 定时活动状态更新
*/
void activityQuartzUpdateStatus();
/**
* 获取入群活码列表
* @param activityHmQDTO
* @return
*/
List<GroupChatActivityHmBO> listGroupChatHm(GroupChatActivityHmQDTO activityHmQDTO) throws BusinessException;
}
package com.gic.haoban.manage.service.service.chat;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityShareBind;
import java.util.List;
/**
* 社群邀请有礼邀请人和受邀人绑定表(TabHaobanGroupChatActivityShareBind)表服务接口
*
* @author makejava
* @since 2024-09-27 16:09:58
*/
public interface GroupChatActivityShareBindService {
/**
* 绑定分享关系
* @param shareBind
*/
void shareBind(TabGroupChatActivityShareBind shareBind);
/**
* 获取24小时内有效的记录
* @param inviteeUnionId
* @return
*/
List<TabGroupChatActivityShareBind> query24Record(List<String> inviteeUnionId);
}
package com.gic.haoban.manage.service.service.chat.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Constant;
import com.gic.api.base.commons.Page;
import com.gic.commons.util.EntityUtil;
import com.gic.commons.util.GICMQClientUtil;
import com.gic.commons.util.PageHelperUtils;
import com.gic.commons.util.UniqueIdUtils;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityInviteLogDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityRewardDTO;
import com.gic.haoban.manage.api.enums.chat.*;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityInviteLogQDTO;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatActivityInviteLogMapper;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatUserMapper;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityInviteLog;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityShareBind;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatUser;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatActivityBaseContext;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatActivityContext;
import com.gic.haoban.manage.service.service.chat.GroupChatActivityInviteLogService;
import com.gic.haoban.manage.service.service.chat.GroupChatActivityRewardLogService;
import com.gic.haoban.manage.service.service.chat.GroupChatActivityService;
import com.gic.haoban.manage.service.service.chat.GroupChatActivityShareBindService;
import com.gic.member.api.dto.MemberDTO;
import com.gic.member.api.service.MemberService;
import com.gic.member.tag.api.dto.outapi.MemberTagSingleDTO;
import com.gic.member.tag.api.service.MemberTagOpenApiService;
import com.gic.redis.data.util.RedisUtil;
import com.github.pagehelper.PageHelper;
import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
/**
* 社群邀请有礼邀请日志表(TabHaobanGroupChatActivityInviteLog)表服务实现类
*
* @author makejava
* @since 2024-09-27 16:09:56
*/
@Service("groupChatActivityInviteLogService")
public class GroupChatActivityInviteLogServiceImpl implements GroupChatActivityInviteLogService {
private static final Logger logger = LogManager.getLogger(GroupChatActivityInviteLogService.class);
public static final String ACTIVITY_GROUP_CHAT_KEY = "haoban-manage3-service:activity_group_chat:";
@Autowired
private GroupChatActivityInviteLogMapper groupChatActivityInviteLogMapper;
@Autowired
private GroupChatActivityService groupChatActivityService;
@Autowired
private GroupChatActivityRewardLogService groupChatActivityRewardLogService;
@Autowired
private GroupChatUserMapper groupChatUserMapper;
@Autowired
private GroupChatActivityShareBindService groupChatActivityShareBindService;
@Autowired
private MemberTagOpenApiService memberTagOpenApiService;
@Autowired
private MemberService memberService;
private GroupChatActivityInviteLogDTO convertToDTO(TabGroupChatActivityInviteLog tabGroupChatActivityInviteLog){
GroupChatActivityInviteLogDTO groupChatActivityInviteLogDTO = new GroupChatActivityInviteLogDTO();
BeanUtils.copyProperties(tabGroupChatActivityInviteLog,groupChatActivityInviteLogDTO);
return groupChatActivityInviteLogDTO;
}
@Override
public List<GroupChatActivityInviteLogDTO> queryMaxBatchInviteLog(GroupChatActivityInviteLogQDTO inviteLogQDTO) {
// Integer maxBatch = groupChatActivityInviteLogMapper.queryMaxBatchByChatActivityIdAndInviterMemberId(inviteLogQDTO.getChatActivityId(), inviteLogQDTO.getInviterMemberId());
// //没有最大批次数据表示没有任何邀请数据 直接返回
// if (Objects.isNull(maxBatch)) {
// return Lists.newArrayList();
// }
// inviteLogQDTO.setBatchNumber(maxBatch);
List<TabGroupChatActivityInviteLog> logList = groupChatActivityInviteLogMapper.queryList(inviteLogQDTO);
if(CollectionUtils.isEmpty(logList)){
return Lists.newArrayList();
}
return logList.stream().map(this::convertToDTO).collect(Collectors.toList());
}
@Override
public Page<GroupChatActivityInviteLogDTO> queryInviteLogDetails(GroupChatActivityInviteLogQDTO inviteLogQDTO) {
PageHelper.startPage(inviteLogQDTO);
List<TabGroupChatActivityInviteLog> logList = groupChatActivityInviteLogMapper.queryList(inviteLogQDTO);
return PageHelperUtils.changePageHelperToCurrentPage(logList, GroupChatActivityInviteLogDTO.class);
}
@Override
public void groupChatInviteMQ(List<TabGroupChatUser> chatUserList) {
chatUserList = chatUserList.stream().filter(x ->
!Objects.equals(x.getUserType(), 1)
&& StringUtils.isNotBlank(x.getUnionid()))
.collect(Collectors.toList());
logger.info("入群逻辑处理数:{}", chatUserList.size());
if (CollectionUtils.isEmpty(chatUserList)) {
return;
}
List<String> unionIdList = chatUserList.stream().map(TabGroupChatUser::getUnionid).collect(Collectors.toList());
List<List<String>> partition = Lists.partition(unionIdList, 100);
for (List<String> unionIds : partition) {
List<TabGroupChatActivityShareBind> shareBindList = groupChatActivityShareBindService.query24Record(unionIds);
if (CollectionUtils.isEmpty(shareBindList)) {
return;
}
logger.info("入群有邀请绑定数:{}", shareBindList.size());
Map<String, List<TabGroupChatActivityShareBind>> map = shareBindList.stream().collect(Collectors.groupingBy(TabGroupChatActivityShareBind::getInviteeUnionId));
for (TabGroupChatUser groupChatUser : chatUserList) {
Long chatUserId = groupChatUser.getChatUserId();
Date joinTime = groupChatUser.getJoinTime();
String unionid = groupChatUser.getUnionid();
List<TabGroupChatActivityShareBind> list = map.get(unionid);
if (CollectionUtils.isEmpty(list)) {
continue;
}
Set<Long> chatActivityIdSet = new HashSet<>();
//同个活动取最近一条绑定信息
for (TabGroupChatActivityShareBind shareBind : list) {
if (DateUtil.compare(shareBind.getCreateTime(),joinTime) >= 0) {
logger.info("分享绑定时间大于入群时间 过滤");
continue;
}
Long chatActivityId = shareBind.getChatActivityId();
if (chatActivityIdSet.add(chatActivityId)) {
GroupChatActivityBaseContext chatActivityContext = new GroupChatActivityBaseContext();
chatActivityContext.setChatUserId(chatUserId);
chatActivityContext.setChatActivityId(chatActivityId);
chatActivityContext.setInviterMemberId(shareBind.getInviterMemberId());
chatActivityContext.setEnterpriseId(shareBind.getEnterpriseId());
chatActivityContext.setUniqueId(shareBind.getInviteeUnionId());
chatActivityContext.setLastShareTime(shareBind.getCreateTime());
// groupChatInvite(chatActivityContext);
try {
GICMQClientUtil.getClientInstance().sendMessage("shareGroupChatInviteMQ",JSON.toJSONString(chatActivityContext));
} catch (Exception e) {
logger.info("社群邀请MQ发送异常",e);
}
}
}
}
}
}
@Override
public void groupChatInvite(GroupChatActivityBaseContext baseContext) {
logger.info("社群活动邀请:{}", JSON.toJSONString(baseContext));
Long chatUserId = baseContext.getChatUserId();
GroupChatActivityContext context = EntityUtil.changeEntityNew(GroupChatActivityContext.class, baseContext);
TabGroupChatUser groupChatUser = groupChatUserMapper.selectById(chatUserId);
if (groupChatUser == null) {
logger.info("社群群明细为空");
return;
}
context.setChatUser(groupChatUser);
String inviterMemberId = context.getInviterMemberId();
String enterpriseId = context.getEnterpriseId();
Long chatActivityId = context.getChatActivityId();
String key = ACTIVITY_GROUP_CHAT_KEY + inviterMemberId;
RedisUtil.lock(key, 30L);
try {
GroupChatActivityDTO chatActivityDTO = groupChatActivityService.getActivityDetailCache(enterpriseId, chatActivityId);
if (chatActivityDTO == null) {
logger.info("社群活动为空");
return;
}
context.setChatActivityDTO(chatActivityDTO);
boolean checked = checkActivity(context);
if (!checked) {
return;
}
Integer inviteType = Constant.FLAG_FALSE;
int batchNumber = -1;
Integer invalidInviteType = getActivityEffective(context);
logger.info("获取本次入群有效状态:{},{}", invalidInviteType,ChatActivityInvalidInviteTypeEnum.getDescByValue(invalidInviteType));
if (invalidInviteType == null) {
inviteType = Constant.FLAG_TRUE;
//获取奖励批次
batchNumber = getActivityBatchNumber(context);
}
//保存邀请记录
saveChatActivityInvite(context, batchNumber, inviteType, invalidInviteType);
//有效发放奖励
if (Objects.equals(inviteType, Constant.FLAG_TRUE)) {
groupChatActivityRewardLogService.dealRewardAndSaveLog(context);
}
//受邀人打标
Integer labelFlag = chatActivityDTO.getLabelFlag();
String labelJson = chatActivityDTO.getLabelJson();
if (Objects.equals(labelFlag, Constant.FLAG_TRUE) && StringUtils.isNotBlank(labelJson)) {
MemberTagSingleDTO dto = new MemberTagSingleDTO();
dto.setEnterpriseId(enterpriseId);
dto.setOptType(0);
dto.setMemberId(context.getChatUser().getMemberId());
String id = JSONObject.parseObject(labelJson).getString("id");
dto.setTagItemIdList(Lists.newArrayList(id));
this.memberTagOpenApiService.saveMemberTagSingle(dto);
}
} catch (Exception e) {
logger.info("社群活动处理异常",e);
} finally {
RedisUtil.unlock(key);
}
}
/**
* 校验活动是否写邀请记录
* @param context
* @return
*/
private boolean checkActivity(GroupChatActivityContext context) {
GroupChatActivityDTO activity = context.getChatActivityDTO();
TabGroupChatUser chatUser = context.getChatUser();
Date joinTime = chatUser.getJoinTime();
Date startDate = activity.getStartDate();
Date endDate = activity.getEndDate();
Date limitDate = activity.getLimitDate();
if (DateUtil.compare(startDate, joinTime) > 0) {
logger.info("活动开始时间大于入群时间");
return false;
}
if (limitDate != null) {
endDate = limitDate;
}
logger.info("校验活动判断时间:{}", endDate);
//入群时间大于结束时间
if (DateUtil.compare(joinTime, endDate) > 0) {
logger.info("入群时间大于结束时间");
return false;
}
Integer inviteMemberType = activity.getInviteMemberType();
if (Objects.equals(inviteMemberType, ChatActivityInviteMemberTypeEnum.OPEN_CARD.value)) {
logger.info("邀请会员类型限制为开卡会员");
String memberId = chatUser.getMemberId();
if (StringUtils.isBlank(memberId)) {
logger.info("memberId为空");
return false;
}
MemberDTO member = memberService.getMember(memberId);
if (member == null || StringUtils.isBlank(member.getCardNum())) {
logger.info("会员为开卡");
return false;
}
}
String memberId = chatUser.getMemberId();
if (Objects.equals(memberId, context.getInviterMemberId())) {
logger.info("无法邀请自己");
return false;
}
TabGroupChatActivityInviteLog inviteLog = new TabGroupChatActivityInviteLog();
inviteLog.setChatActivityId(context.getChatActivityId());
inviteLog.setInviteeUserId(chatUser.getUserId());
inviteLog.setEnterpriseId(context.getEnterpriseId());
inviteLog.setInviterMemberId(context.getInviterMemberId());
List<TabGroupChatActivityInviteLog> list = groupChatActivityInviteLogMapper.queryAll(inviteLog);
if (CollectionUtils.isNotEmpty(list)) {
logger.info("已有邀请记录:{}",JSON.toJSONString(inviteLog));
return false;
}
return true;
}
/**
* 获取本次入群有效状态
*
* @param context
* @return
*/
private Integer getActivityEffective(GroupChatActivityContext context) {
GroupChatActivityDTO activity = context.getChatActivityDTO();
String enterpriseId = activity.getEnterpriseId();
TabGroupChatUser chatUser = context.getChatUser();
String userId = chatUser.getUserId();
Long chatActivityId = context.getChatActivityId();
Date lastShareTime = context.getLastShareTime();
Integer inviteType = activity.getInviteType();
TabGroupChatActivityInviteLog inviteLog = new TabGroupChatActivityInviteLog();
inviteLog.setChatActivityId(chatActivityId);
inviteLog.setInviteeUserId(userId);
inviteLog.setEnterpriseId(enterpriseId);
List<TabGroupChatActivityInviteLog> list = groupChatActivityInviteLogMapper.queryAll(inviteLog);
if (CollectionUtils.isNotEmpty(list)) {
return ChatActivityInvalidInviteTypeEnum.ONE.value;
}
if (Objects.equals(ChatActivityInviteTypeEnum.NONE_GROUP_CHAT.value, inviteType)) {
List<TabGroupChatUser> chatUserList = groupChatUserMapper.listByUserId(enterpriseId, userId, 1);
if (CollectionUtils.isNotEmpty(chatUserList)) {
// 入群时间在访问分享页之前的才算无效入群
chatUserList = chatUserList.stream().filter(u -> DateUtil.compare(lastShareTime, u.getJoinTime()) >= 0).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(chatUserList)) {
return ChatActivityInvalidInviteTypeEnum.TWO.value;
}
}
}
if (Objects.equals(ChatActivityInviteTypeEnum.FIRST_GROUP_CHAT.value, inviteType)) {
List<TabGroupChatUser> chatUserList2 = groupChatUserMapper.listByUserId(enterpriseId, userId, null);
// 入群时间在访问分享页之前的才算无效入群
chatUserList2 = chatUserList2.stream().filter(u -> DateUtil.compare(lastShareTime, u.getJoinTime()) >= 0).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(chatUserList2)) {
return ChatActivityInvalidInviteTypeEnum.THREE.value;
}
}
return null;
}
/**
* 获取完成批次
* @param context
* @return
*/
private int getActivityBatchNumber(GroupChatActivityContext context) {
GroupChatActivityDTO activity = context.getChatActivityDTO();
String enterpriseId = activity.getEnterpriseId();
String inviterMemberId = context.getInviterMemberId();
Long chatActivityId = context.getChatActivityId();
TabGroupChatActivityInviteLog inviteLog = new TabGroupChatActivityInviteLog();
inviteLog.setChatActivityId(chatActivityId);
inviteLog.setInviterMemberId(inviterMemberId);
inviteLog.setEnterpriseId(enterpriseId);
inviteLog.setInviteType(Constant.FLAG_TRUE);
Long count = groupChatActivityInviteLogMapper.count(inviteLog) + 1;
logger.info("有效邀请数:{}", count);
Integer inviteRewardType = activity.getInviteRewardType();
int batchNumber = -1;
Map<Integer, List<GroupChatActivityRewardDTO>> rewardMap = activity.getRewardMap();
List<GroupChatActivityRewardDTO> rewardDTOList = rewardMap.get(ChatActivityRewardInviteEnum.INVITER.value);
if (Objects.equals(inviteRewardType, ChatActivityInviteRewardEnum.FIXED_REWARD.value)) {
GroupChatActivityRewardDTO rewardDTO = rewardDTOList.get(0);
Integer limitReward = rewardDTO.getLimitReward();
Integer inviteNumber = rewardDTO.getInviteNumber();
batchNumber = (count.intValue() + inviteNumber - 1) / inviteNumber;
batchNumber = batchNumber > limitReward ? -1 : batchNumber;
} else {
List<GroupChatActivityRewardDTO> list = rewardDTOList.stream().sorted(Comparator.comparing(GroupChatActivityRewardDTO::getInviteNumber).reversed())
.collect(Collectors.toList());
Integer maxInviteNumber = list.get(0).getInviteNumber();
Integer minInviteNumber = list.get(list.size() - 1).getInviteNumber();
batchNumber = list.get(0).getInviteLevel();
if (count.intValue() > maxInviteNumber) {
batchNumber = -1;
}else if (count.intValue() <= minInviteNumber) {
batchNumber = 1;
} else {
for (GroupChatActivityRewardDTO rewardDTO : list) {
Integer inviteNumber = rewardDTO.getInviteNumber();
if (count.intValue() == inviteNumber) {
batchNumber = rewardDTO.getInviteLevel();
break;
} else if (count.intValue() > inviteNumber) {
batchNumber = rewardDTO.getInviteLevel() + 1;
break;
}
}
}
}
logger.info("有效邀请批次:{}", batchNumber);
return batchNumber;
}
private void saveChatActivityInvite(GroupChatActivityContext context,Integer batchNumber,Integer inviteType,Integer invalidInviteType) {
TabGroupChatActivityInviteLog inviteLog = new TabGroupChatActivityInviteLog();
inviteLog.setChatActivityInviteId(UniqueIdUtils.uniqueLong());
inviteLog.setChatActivityId(context.getChatActivityId());
inviteLog.setInviterMemberId(context.getInviterMemberId());
TabGroupChatUser chatUser = context.getChatUser();
if (StringUtils.isBlank(chatUser.getMemberId())) {
inviteLog.setInviteeMemberId("-1");
}else {
inviteLog.setInviteeMemberId(chatUser.getMemberId());
}
inviteLog.setInviteeUserId(chatUser.getUserId());
inviteLog.setInviteeUnionId(chatUser.getUnionid());
inviteLog.setUserName(chatUser.getUserName());
inviteLog.setNickName(chatUser.getNickName());
inviteLog.setGroupChatId(chatUser.getGroupChatId());
inviteLog.setInviteType(inviteType);
inviteLog.setInvalidInviteType(invalidInviteType);
inviteLog.setBatchNumber(batchNumber);
inviteLog.setEnterpriseId(chatUser.getEnterpriseId());
inviteLog.setWxEnterpriseId(chatUser.getWxEnterpriseId());
groupChatActivityInviteLogMapper.insert(inviteLog);
}
}
package com.gic.haoban.manage.service.service.chat.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.gic.commons.util.UniqueIdUtils;
import com.gic.haoban.manage.service.context.chat.BusinessManager;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatActivityJoinMapper;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivity;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityJoin;
import com.gic.haoban.manage.service.service.chat.GroupChatActivityJoinService;
import com.google.common.collect.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 社群邀请有礼入群规则表(TabHaobanGroupChatActivityJoin)表服务实现类
*
* @author makejava
* @since 2024-09-27 16:09:56
*/
@Service("groupChatActivityJoinService")
public class GroupChatActivityJoinServiceImpl implements GroupChatActivityJoinService {
@Autowired
private GroupChatActivityJoinMapper groupChatActivityJoinMapper;
@Autowired
private BusinessManager businessManager;
@Override
public List<TabGroupChatActivityJoin> listByActivityId(Long chatActivityId) {
if (chatActivityId == null) {
return new ArrayList<>();
}
List<TabGroupChatActivityJoin> activityRewards =
groupChatActivityJoinMapper.queryByChatActivityIds(Lists.newArrayList(chatActivityId));
return activityRewards;
}
@Override
public Map<Long, List<TabGroupChatActivityJoin>> listByActivityIdList(List<Long> chatActivityIdList) {
if (CollectionUtil.isEmpty(chatActivityIdList)) {
return new HashMap<>();
}
List<TabGroupChatActivityJoin> list = groupChatActivityJoinMapper.queryByChatActivityIds(Lists.newArrayList(chatActivityIdList));
Map<Long, List<TabGroupChatActivityJoin>> map = list.stream().collect(Collectors.groupingBy(TabGroupChatActivityJoin::getChatActivityId));
return map;
}
@Override
public void saveActivityJoin(TabGroupChatActivity activity, List<TabGroupChatActivityJoin> joinList) {
Long chatActivityId = activity.getChatActivityId();
List<TabGroupChatActivityJoin> oldJoinList = listByActivityId(chatActivityId);
Map<Long, TabGroupChatActivityJoin> oldRewardMap = oldJoinList.stream().collect(
Collectors.toMap(TabGroupChatActivityJoin::getChatActivityJoinId, v -> v));
//先删除
businessManager.dealMemberTagByActivity(activity,null,true);
joinList.forEach(rule->{
Long chatActivityJoinId = rule.getChatActivityJoinId();
if (chatActivityJoinId != null) {
oldRewardMap.remove(chatActivityJoinId);
}
if (chatActivityJoinId == null) {
rule.setChatActivityJoinId(UniqueIdUtils.uniqueLong());
groupChatActivityJoinMapper.insert(rule);
}else {
groupChatActivityJoinMapper.update(rule);
}
businessManager.dealMemberTagByActivity(activity,rule,false);
});
oldRewardMap.forEach((k, v) -> groupChatActivityJoinMapper.deleteById(v.getChatActivityJoinId()));
}
}
package com.gic.haoban.manage.service.service.chat.impl;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityInviteLogDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityRewardDetailLogDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityRewardDetailLogQDTO;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatActivityRewardDetailLogMapper;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityInviteLog;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityRewardDetailLog;
import com.gic.haoban.manage.service.service.chat.GroupChatActivityRewardDetailLogService;
import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/**
* 社群活动完成奖励明细表(TabHaobanGroupChatActivityRewardDetailLog)表服务实现类
*
* @author makejava
* @since 2024-09-27 16:09:57
*/
@Service("groupChatActivityRewardDetailLogService")
public class GroupChatActivityRewardDetailLogServiceImpl implements GroupChatActivityRewardDetailLogService {
@Resource
private GroupChatActivityRewardDetailLogMapper groupChatActivityRewardDetailLogMapper;
private GroupChatActivityRewardDetailLogDTO convertToDTO(TabGroupChatActivityRewardDetailLog tabGroupChatActivityRewardDetailLog){
GroupChatActivityRewardDetailLogDTO groupChatActivityRewardDetailLogDTO = new GroupChatActivityRewardDetailLogDTO();
BeanUtils.copyProperties(tabGroupChatActivityRewardDetailLog,groupChatActivityRewardDetailLogDTO);
return groupChatActivityRewardDetailLogDTO;
}
@Override
public List<GroupChatActivityRewardDetailLogDTO> queryList(GroupChatActivityRewardDetailLogQDTO rewardDetailLogQDTO) {
List<TabGroupChatActivityRewardDetailLog> rewardDetailLogDTOList = groupChatActivityRewardDetailLogMapper.queryList(rewardDetailLogQDTO);
if(CollectionUtils.isEmpty(rewardDetailLogDTOList)){
return Lists.newArrayList();
}
return rewardDetailLogDTOList.stream().map(this::convertToDTO).collect(Collectors.toList());
}
}
package com.gic.haoban.manage.service.service.chat.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.BusinessException;
import com.gic.api.base.commons.Constant;
import com.gic.commons.util.UniqueIdUtils;
import com.gic.haoban.manage.api.dto.chat.*;
import com.gic.haoban.manage.api.enums.chat.ChatActivityInviteRewardEnum;
import com.gic.haoban.manage.api.enums.chat.ChatActivityRewardInviteEnum;
import com.gic.haoban.manage.service.context.chat.RewardSender;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatActivityInviteLogMapper;
import com.gic.api.base.commons.Page;
import com.gic.commons.util.PageHelperUtils;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityRewardDetailLogQDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityRewardLogQDTO;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatActivityRewardDetailLogMapper;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatActivityRewardLogMapper;
import com.gic.haoban.manage.service.entity.chat.*;
import com.gic.haoban.manage.service.pojo.bo.RewardReturnBO;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatActivityContext;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityInviteLog;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityRewardLog;
import com.gic.haoban.manage.service.service.chat.GroupChatActivityRewardDetailLogService;
import com.gic.haoban.manage.service.service.chat.GroupChatActivityRewardLogService;
import com.github.pagehelper.PageHelper;
import com.google.common.collect.Maps;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 内容活动完成奖励表(TabHaobanGroupChatActivityRewardLog)表服务实现类
*
* @author makejava
* @since 2024-09-27 16:09:57
*/
@Service("groupChatActivityRewardLogService")
public class GroupChatActivityRewardLogServiceImpl implements GroupChatActivityRewardLogService {
private static final Logger logger = LoggerFactory.getLogger(GroupChatActivityRewardLogService.class);
@Autowired
private GroupChatActivityRewardLogMapper groupChatActivityRewardLogMapper;
@Autowired
private GroupChatActivityInviteLogMapper groupChatActivityInviteLogMapper;
@Autowired
private GroupChatActivityRewardDetailLogMapper groupChatActivityRewardDetailLogMapper;
@Autowired
private GroupChatActivityRewardDetailLogService groupChatActivityRewardDetailLogService;
@Autowired
private RewardSender rewardSender;
private GroupChatActivityRewardLogDTO convertToDTO(TabGroupChatActivityRewardLog tabGroupChatActivityRewardLog) {
GroupChatActivityRewardLogDTO groupChatActivityRewardLogDTO = new GroupChatActivityRewardLogDTO();
BeanUtils.copyProperties(tabGroupChatActivityRewardLog, groupChatActivityRewardLogDTO);
return groupChatActivityRewardLogDTO;
}
@Override
public Page<GroupChatActivityRewardLogDTO> queryRewardLogDetails(GroupChatActivityRewardLogQDTO rewardLogQDTO) {
PageHelper.startPage(rewardLogQDTO);
List<TabGroupChatActivityRewardLog> rewardLogList = groupChatActivityRewardLogMapper.queryList(rewardLogQDTO);
if (CollectionUtils.isEmpty(rewardLogList)) {
return PageHelperUtils.changePageHelperToCurrentPage(rewardLogList, GroupChatActivityRewardLogDTO.class);
}
Page<GroupChatActivityRewardLogDTO> page = PageHelperUtils.changePageHelperToCurrentPage(rewardLogList, GroupChatActivityRewardLogDTO.class);
List<Long> rewardLogIdList = rewardLogList.stream()
.map(TabGroupChatActivityRewardLog::getChatActivityRewardLogId).collect(Collectors.toList());
GroupChatActivityRewardDetailLogQDTO rewardDetailLogQDTO = new GroupChatActivityRewardDetailLogQDTO();
rewardDetailLogQDTO.setRewardLogIdList(rewardLogIdList);
List<GroupChatActivityRewardDetailLogDTO> rewardDetailLogDTOList = groupChatActivityRewardDetailLogService.queryList(rewardDetailLogQDTO);
Map<Long, List<GroupChatActivityRewardDetailLogDTO>> rewardDetailLogDTOMap = Maps.newHashMap();
if (CollectionUtils.isNotEmpty(rewardDetailLogDTOList)) {
rewardDetailLogDTOMap = rewardDetailLogDTOList.stream()
.collect(Collectors.groupingBy(GroupChatActivityRewardDetailLogDTO::getChatActivityRewardId));
}
Map<Long, List<GroupChatActivityRewardDetailLogDTO>> finalRewardDetailLogDTOMap = rewardDetailLogDTOMap;
List<GroupChatActivityRewardLogDTO> rewardLogDTOList = rewardLogList.stream().map(tabGroupChatActivityRewardLog -> {
GroupChatActivityRewardLogDTO rewardLogDTO = convertToDTO(tabGroupChatActivityRewardLog);
rewardLogDTO.setRewardDetailLogDTOList(finalRewardDetailLogDTOMap.get(rewardLogDTO.getChatActivityRewardLogId()));
return rewardLogDTO;
}).collect(Collectors.toList());
page.setResult(rewardLogDTOList);
return page;
}
@Override
public Long queryRewardNum(GroupChatActivityRewardLogQDTO rewardLogQDTO) {
TabGroupChatActivityRewardLog tabGroupChatActivityRewardLog = new TabGroupChatActivityRewardLog();
tabGroupChatActivityRewardLog.setChatActivityId(rewardLogQDTO.getChatActivityId());
tabGroupChatActivityRewardLog.setRewardInvite(1);
tabGroupChatActivityRewardLog.setMemberId(rewardLogQDTO.getMemberId());
return groupChatActivityRewardLogMapper.count(tabGroupChatActivityRewardLog);
}
@Override
public void dealRewardAndSaveLog(GroupChatActivityContext context) {
Long chatActivityId = context.getChatActivityId();
String inviterMemberId = context.getInviterMemberId();
String enterpriseId = context.getEnterpriseId();
GroupChatActivityDTO chatActivityDTO = context.getChatActivityDTO();
Integer inviteRewardType = chatActivityDTO.getInviteRewardType();
Map<Integer, List<GroupChatActivityRewardDTO>> rewardMap = chatActivityDTO.getRewardMap();
TabGroupChatActivityInviteLog inviteLog = new TabGroupChatActivityInviteLog();
inviteLog.setChatActivityId(chatActivityId);
inviteLog.setInviterMemberId(inviterMemberId);
inviteLog.setEnterpriseId(enterpriseId);
inviteLog.setInviteType(Constant.FLAG_TRUE);
Long count = groupChatActivityInviteLogMapper.count(inviteLog);
if (count <= 0) {
return;
}
//发送邀请人奖励
List<GroupChatActivityRewardDTO> inviterRewardDTOList = rewardMap.get(ChatActivityRewardInviteEnum.INVITER.value);
if (CollectionUtils.isNotEmpty(inviterRewardDTOList)) {
List<GroupChatActivityRewardDTO> sendReward = new ArrayList<>();
Integer inviteLevel = 1;
for (GroupChatActivityRewardDTO rewardDTO : inviterRewardDTOList) {
Integer inviteNumber = rewardDTO.getInviteNumber();
Integer limitReward = rewardDTO.getLimitReward();
if (Objects.equals(ChatActivityInviteRewardEnum.FIXED_REWARD.value, inviteRewardType)) {
//固定奖励 有效邀请为整数倍 且 完成奖励次数小于等于奖励上限
if (count.intValue() % inviteNumber == 0 && count.intValue() / inviteNumber <= limitReward) {
sendReward.add(rewardDTO);
}
} else if (Objects.equals(ChatActivityInviteRewardEnum.LADDER_REWARD.value, inviteRewardType)) {
// 阶梯奖励 有效邀请次数相等
if (count.intValue() == inviteNumber) {
sendReward.add(rewardDTO);
inviteLevel = rewardDTO.getInviteLevel();
}
}
}
if (CollectionUtils.isNotEmpty(sendReward)) {
dealInviteReward(chatActivityId, inviterMemberId, inviteLevel, ChatActivityRewardInviteEnum.INVITER.value, sendReward, chatActivityDTO);
}
}
List<GroupChatActivityRewardDTO> inviteeRewardDTOList = rewardMap.get(ChatActivityRewardInviteEnum.INVITEE.value);
//发送受邀人奖励
if (CollectionUtils.isNotEmpty(inviteeRewardDTOList)) {
String memberId = context.getChatUser().getMemberId();
if (StringUtils.isBlank(memberId)) {
logger.info("受邀人memberId为空");
return;
}
dealInviteReward(chatActivityId, memberId, 1, ChatActivityRewardInviteEnum.INVITEE.value, inviteeRewardDTOList, chatActivityDTO);
}
}
/**
* 发送奖励并保存日志
* @param chatActivityId 活动id
* @param memberId 会员id
* @param inviteLevel 完成的层级
* @param rewardInvite 奖励人类型
* @param sendReward 发送的奖励明细
* @param activityDTO 活动DTO
*/
private void dealInviteReward(Long chatActivityId, String memberId, Integer inviteLevel,Integer rewardInvite, List<GroupChatActivityRewardDTO> sendReward, GroupChatActivityDTO activityDTO) {
String enterpriseId = activityDTO.getEnterpriseId();
String wxEnterpriseId = activityDTO.getWxEnterpriseId();
String activityName = activityDTO.getActivityName();
//保存奖励记录
Long rewardLogId = UniqueIdUtils.uniqueLong();
TabGroupChatActivityRewardLog rewardLog = new TabGroupChatActivityRewardLog();
rewardLog.setChatActivityRewardLogId(rewardLogId);
rewardLog.setChatActivityId(chatActivityId);
rewardLog.setMemberId(memberId);
rewardLog.setRewardInvite(rewardInvite);
rewardLog.setInviteLevel(inviteLevel);
rewardLog.setEnterpriseId(enterpriseId);
rewardLog.setWxEnterpriseId(wxEnterpriseId);
groupChatActivityRewardLogMapper.insert(rewardLog);
for (GroupChatActivityRewardDTO rewardDTO : sendReward) {
List<GroupChatActivityRewardDetailDTO> detailList = rewardDTO.getDetailList();
for (GroupChatActivityRewardDetailDTO rewardDetailDTO : detailList) {
String rewardValue = rewardDetailDTO.getRewardValue();
List<JSONObject> list = JSONArray.parseArray(rewardDetailDTO.getRewardName(), JSONObject.class);
String[] rewardList = rewardValue.split(",");
for (int i = 0; i < rewardList.length; i++) {
String rewardV = rewardList[i];
String rewardName = list.get(i).getString("name");
TabGroupChatActivityRewardDetailLog rewardDetailLog = new TabGroupChatActivityRewardDetailLog();
Long rewardDetailId = UniqueIdUtils.uniqueLong();
rewardDetailLog.setChatActivityRewardDetailId(rewardDetailId);
rewardDetailLog.setChatActivityRewardId(rewardLogId);
rewardDetailLog.setChatActivityId(rewardDTO.getChatActivityId());
rewardDetailLog.setActivityRewardId(rewardDetailDTO.getChatActivityRewardId());
rewardDetailLog.setMemberId(memberId);
rewardDetailLog.setRewardType(rewardDetailDTO.getRewardType());
rewardDetailLog.setRewardValue(rewardV);
rewardDetailLog.setRewardName(rewardName);
rewardDetailLog.setSuccessFlag(Constant.FLAG_FALSE);
rewardDetailLog.setEnterpriseId(enterpriseId);
rewardDetailLog.setWxEnterpriseId(wxEnterpriseId);
groupChatActivityRewardDetailLogMapper.insert(rewardDetailLog);
RewardReturnBO rewardReturnBO = null;
String rewardRemark = null;
try {
rewardReturnBO = rewardSender.sendReward(rewardDetailLog, activityName);
} catch (BusinessException e) {
logger.info("发放奖励失败 rewardDetailLogId:{}", rewardDetailId, e);
rewardRemark = e.getMessage();
}
rewardDetailLog.setRewardRemark(rewardRemark);
if (rewardReturnBO != null) {
rewardDetailLog.setRewardBusinessId(rewardReturnBO.getRewardBusinessId());
rewardDetailLog.setSuccessFlag(Constant.FLAG_TRUE);
}
groupChatActivityRewardDetailLogMapper.update(rewardDetailLog);
}
}
}
}
}
package com.gic.haoban.manage.service.service.chat.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.gic.commons.util.UniqueIdUtils;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatActivityRewardMapper;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityReward;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatActivityRewardBO;
import com.gic.haoban.manage.service.service.chat.GroupChatActivityRewardService;
import com.google.common.collect.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 社群邀请有礼奖励规则表(TabHaobanGroupChatActivityReward)表服务实现类
*
* @author makejava
* @since 2024-09-27 16:09:57
*/
@Service("groupChatActivityRewardService")
public class GroupChatActivityRewardServiceImpl implements GroupChatActivityRewardService {
@Autowired
private GroupChatActivityRewardMapper groupChatActivityRewardMapper;
@Override
public List<TabGroupChatActivityReward> listByActivityId(Long chatActivityId) {
if (chatActivityId == null) {
return new ArrayList<>();
}
List<TabGroupChatActivityReward> activityRewards =
groupChatActivityRewardMapper.queryByChatActivityIds(Lists.newArrayList(chatActivityId));
return activityRewards;
}
@Override
public Map<Long, List<TabGroupChatActivityReward>> listByActivityIdList(List<Long> chatActivityIdList) {
if (CollectionUtil.isEmpty(chatActivityIdList)) {
return new HashMap<>();
}
List<TabGroupChatActivityReward> list = groupChatActivityRewardMapper.queryByChatActivityIds(Lists.newArrayList(chatActivityIdList));
Map<Long, List<TabGroupChatActivityReward>> map = list.stream().collect(Collectors.groupingBy(TabGroupChatActivityReward::getChatActivityId));
return map;
}
@Override
public void saveActivityReward(Long chatActivityId, List<TabGroupChatActivityReward> rewardList) {
List<TabGroupChatActivityReward> oldRewardList = listByActivityId(chatActivityId);
Map<GroupChatActivityRewardBO, TabGroupChatActivityReward> oldRewardMap = oldRewardList.stream().collect(
Collectors.toMap(x ->
new GroupChatActivityRewardBO(x.getChatActivityId(), x.getInviteLevel(), x.getRewardInvite(), x.getRewardType()), v -> v));
rewardList.forEach(rule->{
GroupChatActivityRewardBO ruleKey = new GroupChatActivityRewardBO(rule.getChatActivityId(), rule.getInviteLevel(), rule.getRewardInvite(), rule.getRewardType());
TabGroupChatActivityReward oldRule = oldRewardMap.get(ruleKey);
if (oldRule != null) {
oldRewardMap.remove(ruleKey);
rule.setChatActivityRewardId(oldRule.getChatActivityRewardId());
}
Long chatActivityRewardId = rule.getChatActivityRewardId();
if (chatActivityRewardId == null) {
rule.setChatActivityRewardId(UniqueIdUtils.uniqueLong());
groupChatActivityRewardMapper.insert(rule);
}else {
groupChatActivityRewardMapper.update(rule);
}
});
oldRewardMap.forEach((k, v) -> groupChatActivityRewardMapper.deleteById(v.getChatActivityRewardId()));
}
}
package com.gic.haoban.manage.service.service.chat.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.gic.api.base.commons.BasePageInfo;
import com.gic.api.base.commons.BusinessException;
import com.gic.api.base.commons.Constant;
import com.gic.api.base.commons.Page;
import com.gic.commons.util.EntityUtil;
import com.gic.commons.util.PageHelperUtils;
import com.gic.commons.util.UniqueIdUtils;
import com.gic.content.api.enums.activity.ContentActivityStatusEnum;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityJoinDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityRewardBaseDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityRewardDTO;
import com.gic.haoban.manage.api.enums.chat.ChatActivityJoinEnum;
import com.gic.haoban.manage.api.enums.chat.ChatActivityStatusEnum;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityHmQDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityJoinQDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityQDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivitySearchQDTO;
import com.gic.haoban.manage.service.context.chat.BusinessManager;
import com.gic.haoban.manage.service.context.chat.JoinRuleManager;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatActivityMapper;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatUserMapper;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivity;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityJoin;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityReward;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatActivityHmBO;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatHmBO;
import com.gic.haoban.manage.service.service.chat.GroupChatActivityJoinService;
import com.gic.haoban.manage.service.service.chat.GroupChatActivityRewardService;
import com.gic.haoban.manage.service.service.chat.GroupChatActivityService;
import com.gic.redis.data.util.RedisUtil;
import com.github.pagehelper.PageHelper;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.swing.text.html.parser.Entity;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
* 社群邀请有礼表(TabHaobanGroupChatActivity)表服务实现类
*
* @author makejava
* @since 2024-09-27 16:09:51
*/
@Service("groupChatActivityService")
public class GroupChatActivityServiceImpl implements GroupChatActivityService {
private static final Logger logger = LogManager.getLogger(GroupChatActivityService.class);
private static final String ACTIVITY_KEY = "haoban-manage3:group_chat:activity:";
@Autowired
private GroupChatActivityMapper groupChatActivityMapper;
@Autowired
private GroupChatUserMapper groupChatUserMapper;
@Autowired
private GroupChatActivityRewardService groupChatActivityRewardService;
@Autowired
private GroupChatActivityJoinService groupChatActivityJoinService;
@Autowired
private BusinessManager businessManager;
@Autowired
private JoinRuleManager joinRuleManager;
@Override
@Transactional(rollbackFor = Exception.class)
public Long saveActivity(GroupChatActivityQDTO qdto) throws BusinessException {
logger.info("保存社群活动:{}", JSON.toJSONString(qdto));
boolean save = false;
Long contentActivityId = qdto.getChatActivityId();
String enterpriseId = qdto.getEnterpriseId();
String wxEnterpriseId = qdto.getWxEnterpriseId();
GroupChatActivityDTO activityDTO = null;
if (contentActivityId == null) {
save = true;
}else {
activityDTO = getActivityDetail(enterpriseId, contentActivityId);
}
//校验活动参数
checkActivity(save, qdto,activityDTO);
TabGroupChatActivity activity = EntityUtil.changeEntity(TabGroupChatActivity.class, qdto);
if (contentActivityId == null) {
activity.setChatActivityId(UniqueIdUtils.uniqueLong());
groupChatActivityMapper.insert(activity);
}else {
groupChatActivityMapper.update(activity);
}
Map<Integer, List<GroupChatActivityRewardDTO>> rewardMap = qdto.getRewardMap();
List<GroupChatActivityRewardBaseDTO> rewardList = GroupChatActivityRewardBaseDTO.mapConvert(rewardMap);
List<TabGroupChatActivityReward> activityRewards = EntityUtil.changeEntityListNew(TabGroupChatActivityReward.class, rewardList);
activityRewards.forEach(rule->{
rule.setEnterpriseId(enterpriseId);
rule.setWxEnterpriseId(wxEnterpriseId);
rule.setChatActivityId(activity.getChatActivityId());
});
//保存活动奖励规则
groupChatActivityRewardService.saveActivityReward(activity.getChatActivityId(),activityRewards);
List<GroupChatActivityJoinQDTO> joinList = qdto.getJoinList();
if (CollectionUtils.isNotEmpty(joinList)) {
List<TabGroupChatActivityJoin> activityJoins = EntityUtil.changeEntityListNew(TabGroupChatActivityJoin.class, joinList);
activityJoins.forEach(rule->{
rule.setEnterpriseId(enterpriseId);
rule.setWxEnterpriseId(wxEnterpriseId);
rule.setChatActivityId(activity.getChatActivityId());
});
//保存活动入群规则
groupChatActivityJoinService.saveActivityJoin(activity,activityJoins);
}
activityDTO = getActivityDetail(enterpriseId, activity.getChatActivityId());
//处理卡券异常通知
businessManager.dealCouponAlarmByActivity(activityDTO,false);
return activity.getChatActivityId();
}
private void checkActivity(boolean save, GroupChatActivityQDTO qdto,GroupChatActivityDTO activity) throws BusinessException {
Long chatActivityId = qdto.getChatActivityId();
String enterpriseId = qdto.getEnterpriseId();
qdto.setEndDate(DateUtil.endOfDay(qdto.getEndDate()));
Date startDate = qdto.getStartDate();
Map<Integer, List<GroupChatActivityRewardDTO>> rewardMap = qdto.getRewardMap();
if (MapUtils.isEmpty(rewardMap)) {
throw new BusinessException("500", "奖励规则不能为空");
}
List<GroupChatActivityJoinQDTO> joinList = qdto.getJoinList();
Integer joinType = qdto.getJoinType();
if (Objects.equals(joinType, ChatActivityJoinEnum.ORIENTED.value) && CollectionUtils.isEmpty(joinList)) {
throw new BusinessException("500", "入群规则不能为空");
}
DateTime now = DateUtil.date();
if (!save) {
if (activity == null) {
throw new BusinessException("500", "营销活动不存在");
}
Integer status = activity.getStatus();
if (Objects.equals(ChatActivityStatusEnum.STOP.value, status)) {
throw new BusinessException("500", "活动已终止,不支持编辑");
}
if (Objects.equals(ChatActivityStatusEnum.END.value, status)) {
throw new BusinessException("500", "活动已结束,不支持编辑");
}
if (Objects.equals(ChatActivityStatusEnum.START.value, status)) {
if (!Objects.equals(qdto.getStartDate(), activity.getStartDate())) {
throw new BusinessException("500", "活动已开始,活动开始时间不支持编辑");
}
if (DateUtil.compare(activity.getEndDate(), qdto.getEndDate()) > 0) {
throw new BusinessException("500", "活动已开始,活动结束时间不允许小于之前的时间");
}
String labelJson = activity.getLabelJson();
Integer labelFlag = activity.getLabelFlag();
if (!Objects.equals(qdto.getLabelFlag(), labelFlag) || !Objects.equals(qdto.getLabelJson(), labelJson)) {
throw new BusinessException("500", "活动已开始,客户标签不支持编辑");
}
Integer inviteMemberType = activity.getInviteMemberType();
if (!Objects.equals(qdto.getInviteMemberType(), inviteMemberType)) {
throw new BusinessException("500", "活动已开始,限制入群客户不支持编辑");
}
Integer inviteType = activity.getInviteType();
if (!Objects.equals(qdto.getInviteType(), inviteType)) {
throw new BusinessException("500", "活动已开始,有效邀请限制不支持编辑");
}
Integer inviteRewardType = activity.getInviteRewardType();
if (!Objects.equals(qdto.getInviteRewardType(), inviteRewardType)) {
throw new BusinessException("500", "活动已开始,奖励类型不支持编辑");
}
Map<Integer, List<GroupChatActivityRewardDTO>> oldRewardMap = activity.getRewardMap();
if (!Objects.equals(oldRewardMap.size(), rewardMap.size())) {
throw new BusinessException("500", "活动已开始,奖励规则不支持编辑");
}
for(Map.Entry<Integer, List<GroupChatActivityRewardDTO>> entry : rewardMap.entrySet()){
if (!CollectionUtil.isEqualList(entry.getValue(), oldRewardMap.get(entry.getKey()))) {
throw new BusinessException("500", "活动已开始,奖励规则不支持编辑");
}
}
if (!Objects.equals(qdto.getJoinType(), activity.getJoinType())) {
throw new BusinessException("500", "活动已开始,入群方式不支持编辑");
}
if (!Objects.equals(qdto.getJoinRule(), activity.getJoinRule())) {
throw new BusinessException("500", "活动已开始,入群方式层级规则不支持编辑");
}
List<GroupChatActivityJoinDTO> oldJoinList = activity.getJoinList();
if (!(CollectionUtils.isEmpty(oldJoinList) && CollectionUtils.isEmpty(joinList))
&& !CollUtil.isEqualList(oldJoinList, EntityUtil.changeEntityListNew(GroupChatActivityJoinDTO.class, joinList))) {
throw new BusinessException("500", "活动已开始,入群规则不支持编辑");
}
}
}else {
if (DateUtil.compare(
DateUtil.beginOfDay(now),
startDate) > 0) {
throw new BusinessException("500", "活动仅支持选择当前日期及之后的日期");
}
}
Date endDate = qdto.getEndDate();
if (DateUtil.compare(now, endDate) > 0 ||
DateUtil.compare(startDate, endDate) > 0) {
throw new BusinessException("500", "活动仅支持选择当前日期及之后的日期,结束时间必须晚于开始日期");
}
if (DateUtil.compare(now, startDate) > 0) {
qdto.setStatus(ChatActivityStatusEnum.START.value);
} else if (DateUtil.compare(startDate, now) >= 0) {
qdto.setStatus(ChatActivityStatusEnum.NOT_START.value);
}
}
@Override
public GroupChatActivityDTO getActivityDetail(String enterpriseId, Long chatActivityId) {
TabGroupChatActivity chatActivity = groupChatActivityMapper.queryById(chatActivityId);
if (chatActivity == null) {
return null;
}
GroupChatActivityDTO chatActivityDTO = EntityUtil.changeEntityNew(GroupChatActivityDTO.class, chatActivity);
//组装奖励规则
List<TabGroupChatActivityReward> activityRewards = groupChatActivityRewardService.listByActivityId(chatActivityId);
List<GroupChatActivityRewardBaseDTO> rewardList = EntityUtil.changeEntityListNew(GroupChatActivityRewardBaseDTO.class, activityRewards);
chatActivityDTO.setRewardMap(GroupChatActivityRewardBaseDTO.reverseMapConvert(rewardList));
//组装奖励规则
List<TabGroupChatActivityJoin> activityJoins = groupChatActivityJoinService.listByActivityId(chatActivityId);
List<GroupChatActivityJoinDTO> joinList = EntityUtil.changeEntityListNew(GroupChatActivityJoinDTO.class, activityJoins);
chatActivityDTO.setJoinList(joinList);
return chatActivityDTO;
}
@Override
public void delActivityDetailCache(String enterpriseId, Long chatActivityId) {
String activityKey = ACTIVITY_KEY + chatActivityId;
RedisUtil.delCache(activityKey);
}
@Override
public GroupChatActivityDTO getActivityDetailCache(String enterpriseId, Long chatActivityId) {
String activityKey = ACTIVITY_KEY + chatActivityId;
GroupChatActivityDTO cache = RedisUtil.getCache(activityKey, GroupChatActivityDTO.class);
if (cache != null) {
return cache;
}
GroupChatActivityDTO activityDetail = getActivityDetail(enterpriseId, chatActivityId);
if (activityDetail == null) {
return null;
}
RedisUtil.setCache(activityKey,activityDetail,1L, TimeUnit.HOURS);
return activityDetail;
}
@Override
public List<TabGroupChatActivity> listByActivityIds(String enterpriseId, List<Long> chatActivityIdList) {
List<TabGroupChatActivity> chatActivities = groupChatActivityMapper.queryByIds(chatActivityIdList);
return chatActivities;
}
@Override
public List<TabGroupChatActivity> listByActivityIdsDel(String enterpriseId, List<Long> chatActivityIdList) {
List<TabGroupChatActivity> chatActivities = groupChatActivityMapper.queryByIdsDel(chatActivityIdList);
return chatActivities;
}
@Override
public Page<GroupChatActivityDTO> pageActivity(String enterpriseId, GroupChatActivitySearchQDTO searchQDTO, BasePageInfo pageInfo) {
PageHelper.startPage(pageInfo);
List<TabGroupChatActivity> list = groupChatActivityMapper.listActivity(enterpriseId, searchQDTO);
Page<GroupChatActivityDTO> page = PageHelperUtils.changePageHelperToCurrentPage(list, GroupChatActivityDTO.class);
List<GroupChatActivityDTO> result = page.getResult();
if (CollectionUtil.isNotEmpty(result)) {
List<Long> activityIdList = result.stream().map(GroupChatActivityDTO::getChatActivityId).collect(Collectors.toList());
Map<Long, List<TabGroupChatActivityReward>> rewardMap = groupChatActivityRewardService.listByActivityIdList(activityIdList);
if (MapUtils.isNotEmpty(rewardMap)) {
result.forEach(activity->{
List<TabGroupChatActivityReward> activityRewards = rewardMap.get(activity.getChatActivityId());
if (CollectionUtils.isNotEmpty(activityRewards)) {
List<GroupChatActivityRewardBaseDTO> rewardList = EntityUtil.changeEntityListNew(GroupChatActivityRewardBaseDTO.class, activityRewards);
activity.setRewardMap(GroupChatActivityRewardBaseDTO.reverseMapConvert(rewardList));
}
});
}
}
return page;
}
@Override
public GroupChatActivityDTO stopActivity(String enterpriseId, Long chatActivityId) throws BusinessException {
GroupChatActivityDTO detail = getActivityDetail(enterpriseId, chatActivityId);
if (detail == null) {
return null;
}
Integer status = detail.getStatus();
if (Objects.equals(status, ChatActivityStatusEnum.STOP.value) ||
Objects.equals(status, ChatActivityStatusEnum.END.value)) {
throw new BusinessException("500", "已终止或已结束的活动无法终止");
}
TabGroupChatActivity chatActivity = new TabGroupChatActivity();
chatActivity.setChatActivityId(chatActivityId);
chatActivity.setStatus(ChatActivityStatusEnum.STOP.value);
chatActivity.setLimitDate(DateUtil.date());
groupChatActivityMapper.update(chatActivity);
detail.setStatus(ChatActivityStatusEnum.STOP.value);
//处理会员分组
businessManager.dealMemberTagByActivity(EntityUtil.changeEntityNew(TabGroupChatActivity.class,detail),null,true);
//处理卡券异常通知
businessManager.dealCouponAlarmByActivity(detail,true);
return detail;
}
@Override
public void delActivity(String enterpriseId, Long chatActivityId) throws BusinessException {
int update = groupChatActivityMapper.deleteById(enterpriseId, chatActivityId);
if (update <= 0) {
throw new BusinessException("500","活动已删除");
}
}
@Override
public void updateStatusActivity(String enterpriseId, Long chatActivityId, Integer status) {
TabGroupChatActivity chatActivity = new TabGroupChatActivity();
chatActivity.setChatActivityId(chatActivityId);
chatActivity.setStatus(status);
groupChatActivityMapper.update(chatActivity);
delActivityDetailCache(enterpriseId, chatActivityId);
}
@Override
public List<TabGroupChatActivity> listEffectiveActivity(String enterpriseId) {
GroupChatActivitySearchQDTO searchQDTO = new GroupChatActivitySearchQDTO();
searchQDTO.setStatus(ChatActivityStatusEnum.START.value);
List<TabGroupChatActivity> list = groupChatActivityMapper.listActivity(enterpriseId, searchQDTO);
return list;
}
@Override
public void activityQuartzUpdateStatus() {
Date now = DateUtil.date();
logger.info("处理活动状态:{}",now);
TabGroupChatActivity startSearchQDTO = new TabGroupChatActivity();
startSearchQDTO.setStatus(ChatActivityStatusEnum.NOT_START.value);
startSearchQDTO.setStartDate(now);
List<TabGroupChatActivity> startList = groupChatActivityMapper.listActivityByDate(startSearchQDTO);
if (CollectionUtils.isNotEmpty(startList)) {
for (TabGroupChatActivity activity : startList) {
try {
updateStatusActivity(activity.getEnterpriseId(),activity.getChatActivityId(),ContentActivityStatusEnum.START.value);
} catch (Exception e) {
logger.info("处理活动状态异常",e);
}
}
}
TabGroupChatActivity endSearchQDTO = new TabGroupChatActivity();
endSearchQDTO.setStatus(ChatActivityStatusEnum.START.value);
endSearchQDTO.setEndDate(now);
List<TabGroupChatActivity> endList = groupChatActivityMapper.listActivityByDate(endSearchQDTO);
if (CollectionUtils.isNotEmpty(endList)) {
for (TabGroupChatActivity activity : endList) {
try {
updateStatusActivity(activity.getEnterpriseId(),activity.getChatActivityId(),ContentActivityStatusEnum.END.value);
//处理会员分组
businessManager.dealMemberTagByActivity(activity,null,true);
GroupChatActivityDTO activityDTO = EntityUtil.changeEntityNew(GroupChatActivityDTO.class, activity);
//处理卡券异常通知
businessManager.dealCouponAlarmByActivity(activityDTO,true);
} catch (Exception e) {
logger.info("处理活动状态异常",e);
}
}
}
}
@Override
public List<GroupChatActivityHmBO> listGroupChatHm(GroupChatActivityHmQDTO activityHmQDTO) throws BusinessException{
Long chatActivityId = activityHmQDTO.getChatActivityId();
String enterpriseId = activityHmQDTO.getEnterpriseId();
GroupChatActivityDTO chatActivity = getActivityDetailCache(enterpriseId,chatActivityId);
if (chatActivity == null) {
return Collections.emptyList();
}
activityHmQDTO.setChatActivity(chatActivity);
List<GroupChatHmBO> hmBOList = joinRuleManager.listGroupHm(activityHmQDTO);
if (CollectionUtils.isEmpty(hmBOList)) {
return Collections.emptyList();
}
List<Long> chatHmIdList = hmBOList.stream().map(GroupChatHmBO::getChatHmId).collect(Collectors.toList());
List<Long> existChatHmIdList = groupChatUserMapper.listByUnionIdAndChatHmId(enterpriseId, activityHmQDTO.getInviteeUnionId(), chatHmIdList);
List<GroupChatActivityHmBO> activityHmBOList = EntityUtil.changeEntityListByJSON(GroupChatActivityHmBO.class, hmBOList);
for (GroupChatActivityHmBO activityHmBO : activityHmBOList) {
Long chatHmId = activityHmBO.getChatHmId();
activityHmBO.setJoinGroup(existChatHmIdList.contains(chatHmId) ? Constant.FLAG_TRUE : Constant.FLAG_FALSE);
}
return activityHmBOList;
}
}
package com.gic.haoban.manage.service.service.chat.impl;
import com.alibaba.fastjson.JSON;
import com.gic.commons.util.UniqueIdUtils;
import com.gic.haoban.manage.api.enums.chat.ChatActivityStatusEnum;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatActivityMapper;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatActivityShareBindMapper;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivity;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityShareBind;
import com.gic.haoban.manage.service.service.chat.GroupChatActivityShareBindService;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
/**
* 社群邀请有礼邀请人和受邀人绑定表(TabHaobanGroupChatActivityShareBind)表服务实现类
*
* @author makejava
* @since 2024-09-27 16:09:58
*/
@Service("groupChatActivityShareBindService")
public class GroupChatActivityShareBindServiceImpl implements GroupChatActivityShareBindService {
private static final Logger logger = LogManager.getLogger(GroupChatActivityShareBindService.class);
@Autowired
private GroupChatActivityShareBindMapper groupChatActivityShareBindMapper;
@Autowired
private GroupChatActivityMapper groupChatActivityMapper;
@Override
public void shareBind(TabGroupChatActivityShareBind shareBind) {
logger.info("绑定分享关系参数:{}", JSON.toJSONString(shareBind));
Long chatActivityId = shareBind.getChatActivityId();
String inviteeUnionId = shareBind.getInviteeUnionId();
String inviterMemberId = shareBind.getInviterMemberId();
if (chatActivityId == null || StringUtils.isAnyBlank(inviteeUnionId, inviterMemberId)) {
logger.info("绑定分享关系参数异常");
return;
}
TabGroupChatActivity chatActivity = groupChatActivityMapper.queryById(chatActivityId);
if (chatActivity == null) {
return;
}
Integer status = chatActivity.getStatus();
if (Objects.equals(status, ChatActivityStatusEnum.END.value) || Objects.equals(status, ChatActivityStatusEnum.STOP.value)) {
logger.info("活动已结束");
return;
}
shareBind.setEnterpriseId(chatActivity.getEnterpriseId());
shareBind.setWxEnterpriseId(chatActivity.getWxEnterpriseId());
shareBind.setChatActivityBindId(UniqueIdUtils.uniqueLong());
groupChatActivityShareBindMapper.insert(shareBind);
}
@Override
public List<TabGroupChatActivityShareBind> query24Record(List<String> inviteeUnionId) {
return groupChatActivityShareBindMapper.query24Record(inviteeUnionId);
}
}
...@@ -14,6 +14,8 @@ import com.gic.enterprise.api.dto.StoreDTO; ...@@ -14,6 +14,8 @@ import com.gic.enterprise.api.dto.StoreDTO;
import com.gic.enterprise.api.service.StoreService; import com.gic.enterprise.api.service.StoreService;
import com.gic.haoban.manage.service.dao.mapper.WxEnterpriseMapper; import com.gic.haoban.manage.service.dao.mapper.WxEnterpriseMapper;
import com.gic.haoban.manage.service.service.*; import com.gic.haoban.manage.service.service.*;
import com.gic.haoban.manage.service.service.chat.GroupChatActivityInviteLogService;
import com.gic.haoban.manage.service.util.ExecuteServiceUtil;
import com.gic.member.ext.api.enums.growth.GrowthRuleEnum; import com.gic.member.ext.api.enums.growth.GrowthRuleEnum;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
...@@ -128,6 +130,8 @@ public class GroupChatServiceImpl implements GroupChatService { ...@@ -128,6 +130,8 @@ public class GroupChatServiceImpl implements GroupChatService {
private WxEnterpriseMapper wxEnterpriseMapper ; private WxEnterpriseMapper wxEnterpriseMapper ;
@Autowired @Autowired
private ExternalMemberService externalMemberService ; private ExternalMemberService externalMemberService ;
@Autowired
private GroupChatActivityInviteLogService groupChatActivityInviteLogService;
private static GicMQClient mqClient = GICMQClientUtil.getClientInstance(); private static GicMQClient mqClient = GICMQClientUtil.getClientInstance();
...@@ -749,6 +753,7 @@ public class GroupChatServiceImpl implements GroupChatService { ...@@ -749,6 +753,7 @@ public class GroupChatServiceImpl implements GroupChatService {
} }
if (CollectionUtils.isNotEmpty(needAddUserList)) { if (CollectionUtils.isNotEmpty(needAddUserList)) {
this.groupChatUserMapper.batchInsert(needAddUserList); this.groupChatUserMapper.batchInsert(needAddUserList);
ExecuteServiceUtil.executeService(() -> groupChatActivityInviteLogService.groupChatInviteMQ(needAddUserList), "社群邀请异常");
} }
// 删除退群的人 // 删除退群的人
List<Long> deleteIdList = new ArrayList<>(); List<Long> deleteIdList = new ArrayList<>();
......
package com.gic.haoban.manage.service.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.DateUtil;
import com.gic.commons.util.EntityUtil;
import com.gic.content.api.dto.common.MemberSearchDTO;
import com.gic.enterprise.api.service.StoreService;
import com.gic.haoban.manage.service.service.ESMemberInfoService;
import com.gic.member.api.dto.es.MemberDataDTO;
import com.gic.member.ext.api.service.MemberCrowdApiService;
import com.gic.member.tag.api.dto.MemberExistDTO;
import com.gic.member.tag.api.service.MemberTagEsApiService;
import com.gic.member.tag.api.service.MemberTagGroupApiService;
import com.gic.search.engine.api.constant.OperateEnum;
import com.gic.search.engine.api.dto.ESResponseQueryBatch;
import com.gic.search.engine.api.dto.ESResponseQueryBatchByScroll;
import com.gic.search.engine.api.dto.ESResponseQueryCount;
import com.gic.search.engine.api.dto.ESResponseQuerySingle;
import com.gic.search.engine.api.dto.dynamic.DynamicSearchDTO;
import com.gic.search.engine.api.filter.NewNodeAddUtil;
import com.gic.search.engine.api.service.dynamic.ESDataDynamicOperationApiService;
import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author: YuZhi
* @date: 2022/3/14 10:02
*/
@Service
public class ESMemberInfoServiceImpl implements ESMemberInfoService {
Logger logger = LogManager.getLogger(ESMemberInfoService.class);
@Autowired
private ESDataDynamicOperationApiService esApiService;
@Autowired
private StoreService storeService;
@Autowired
private MemberTagGroupApiService memberTagGroupApiService;
@Autowired
private MemberTagEsApiService memberTagEsApiService;
@Override
public String getMemberSearchParamOld(String enterpriseId, Integer memberType, String filterJson, String creatorId, boolean readyFlag) {
String searchParams = "{}";
if (StringUtils.isBlank(filterJson)) {
return searchParams;
}
logger.info("人群条件参数enterpriseId:{},memberType:{},filterJson:{}",enterpriseId,memberType,filterJson);
if (memberType == 0) {
searchParams = filterJson;
} else if (memberType == 1) {
MemberExistDTO dto = new MemberExistDTO();
dto.setEnterpriseId(enterpriseId);
String[] tagGroupIdArr = filterJson.split(",");
List<String> list = Arrays.asList(tagGroupIdArr);
if (readyFlag) {
// 是否准备好,true可以执行
boolean finishFlag = memberTagEsApiService.memberTagReady(enterpriseId, list) ;
if (!finishFlag) {
return null;
}
}
dto.setMemberTagGroupIds(list);
dto.setUseId(creatorId);
searchParams = memberTagGroupApiService.getSearchJsonByGroupId(dto);
}
logger.info("人群条件:{}",searchParams);
return searchParams;
}
@Override
public boolean matchMember(String enterpriseId, JSONObject searchJson, String memberId,String creatorId) {
JSONObject jsonObject = queryDataSingle(enterpriseId, memberId, "");
if (jsonObject == null) {
return false;
}
searchJson = this.storeService.parseSelectData(searchJson, enterpriseId,creatorId,null);
return esApiService.matchMember(searchJson, enterpriseId, jsonObject);
}
@Override
public JSONObject queryDataSingle(String enterpriseId, String memberId, String returnFields) {
JSONObject searchRes = null;
try {
JSONObject searchJson = new JSONObject();
DynamicSearchDTO search = new DynamicSearchDTO();
searchJson.put("id", memberId);
search.setSearchJson(searchJson);
search.setEnterpriseId(enterpriseId);
search.setColumnCategoryCode("member");
if (StringUtils.isNotBlank(returnFields)) {
search.setReturnFileds(returnFields);
}
ESResponseQuerySingle single = esApiService.queryDataSingle(search);
searchRes = single.getRes();
} catch (Exception e) {
logger.warn("从搜索引擎搜索会员数据异常memberId: {}", memberId, e);
}
return searchRes;
}
}
...@@ -6,10 +6,11 @@ import java.util.*; ...@@ -6,10 +6,11 @@ import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.gic.commons.util.HttpClient; import com.gic.commons.util.HttpClient;
import com.gic.haoban.manage.service.util.ApolloUtils; import com.gic.haoban.manage.service.util.ApolloUtils;
import com.gic.haoban.manage.api.qdto.combined.CombinedQDTO;
import com.gic.haoban.manage.service.context.combined.ImageCombined;
import com.gic.redis.data.util.RedisUtil; import com.gic.redis.data.util.RedisUtil;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.lang3.time.DateUtils;
...@@ -349,4 +350,38 @@ public class MaterialServiceImpl implements MaterialService { ...@@ -349,4 +350,38 @@ public class MaterialServiceImpl implements MaterialService {
}).collect(Collectors.toList()); }).collect(Collectors.toList());
return materialDTOS; return materialDTOS;
} }
@Override
public JSONResponse getMaterialIdByCombined(String wxEnterpriseId, CombinedQDTO combinedQDTO) {
WxEnterpriseQwDTO qwDTO = this.wxEnterpriseService.getQwInfo(wxEnterpriseId) ;
JSONResponse jsonResponse = new JSONResponse();
jsonResponse.setErrorCode(9999);
jsonResponse.setErrorMessage("获取媒体id失败");
try {
String[] arr = null ;
String imageUrl = combinedQDTO.getImageUrl();
//合成图片
byte[] combinedImageData = ImageCombined.getCombinedImage(combinedQDTO);
if (combinedImageData == null) {
logger.info("合成图片的数据为空");
return jsonResponse;
}
if(imageUrl.contains("?")) {
arr = imageUrl.split("\\?")[0].split("/") ;
}else {
arr = imageUrl.split("/");
}
JSONResponse json = null;
Integer mediaType = combinedQDTO.getMediaType();
if (Objects.equals(1,mediaType)) {
json = qywxSuiteApiService.uploadMedia(qwDTO.getThirdCorpid(), qwDTO.getSelf3thSecret(), combinedImageData, arr[arr.length - 1], QywxMediaTypeEnum.IMAGE.getCode(), qwDTO.isSelf(), qwDTO.getUrlHost());
}else if (Objects.equals(2,mediaType)) {
json = qywxSuiteApiService.uploadAttachment(qwDTO.getThirdCorpid(), qwDTO.getSelf3thSecret(), combinedImageData, arr[arr.length - 1], QywxMediaTypeEnum.IMAGE.getCode(), qwDTO.isSelf(), qwDTO.getUrlHost());
}
return json;
} catch (Exception e) {
logger.info("合成图片获取媒体id异常",e);
return jsonResponse;
}
}
} }
...@@ -8,6 +8,8 @@ import com.gic.haoban.manage.service.dao.mapper.hm.WxUserAddLogMapper; ...@@ -8,6 +8,8 @@ import com.gic.haoban.manage.service.dao.mapper.hm.WxUserAddLogMapper;
import com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated; import com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated;
import com.gic.haoban.manage.service.entity.hm.TabWxUserAddLog; import com.gic.haoban.manage.service.entity.hm.TabWxUserAddLog;
import com.gic.haoban.manage.service.service.*; import com.gic.haoban.manage.service.service.*;
import com.gic.haoban.manage.service.service.chat.GroupChatActivityInviteLogService;
import com.gic.haoban.manage.service.service.chat.GroupChatActivityService;
import com.gic.haoban.manage.service.service.chat.GroupChatDataService; import com.gic.haoban.manage.service.service.chat.GroupChatDataService;
import com.gic.haoban.manage.service.util.DingUtils; import com.gic.haoban.manage.service.util.DingUtils;
import com.gic.haoban.manage.service.util.HBQwMonitorUtils; import com.gic.haoban.manage.service.util.HBQwMonitorUtils;
...@@ -54,6 +56,8 @@ public class HaobanTimerApiServiceImpl implements HaobanTimerApiService { ...@@ -54,6 +56,8 @@ public class HaobanTimerApiServiceImpl implements HaobanTimerApiService {
private HaobanCommonMQApiService haobanCommonMQApiService ; private HaobanCommonMQApiService haobanCommonMQApiService ;
@Autowired @Autowired
private OpenStaffService openStaffService ; private OpenStaffService openStaffService ;
@Autowired
private GroupChatActivityService groupChatActivityService;
@Override @Override
...@@ -186,4 +190,9 @@ public class HaobanTimerApiServiceImpl implements HaobanTimerApiService { ...@@ -186,4 +190,9 @@ public class HaobanTimerApiServiceImpl implements HaobanTimerApiService {
public void openStaffServiceTimer(String params) { public void openStaffServiceTimer(String params) {
this.openStaffService.openStaffServiceTimer() ; this.openStaffService.openStaffServiceTimer() ;
} }
@Override
public void groupChatActivityTime(String params) {
groupChatActivityService.activityQuartzUpdateStatus();
}
} }
package com.gic.haoban.manage.service.service.out.impl; package com.gic.haoban.manage.service.service.out.impl;
import java.util.ArrayList; import java.nio.charset.StandardCharsets;
import java.util.Arrays; import java.util.*;
import java.util.Collections; import java.util.concurrent.Callable;
import java.util.Date; import java.util.concurrent.Future;
import java.util.List; import java.util.concurrent.TimeUnit;
import java.util.Map;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import cn.hutool.core.collection.ListUtil; import com.gic.commons.util.TraceIdUtil;
import com.gic.dubbo.entity.ProviderLocalTag;
import com.gic.haoban.manage.api.qdto.combined.CombinedQDTO;
import com.gic.haoban.manage.service.context.combined.ImageCombined;
import com.gic.redis.data.util.RedisUtil;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.lang3.time.DateUtils;
import org.bouncycastle.crypto.MacDerivationFunction;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -41,7 +45,6 @@ import com.gic.haoban.manage.service.service.MaterialCategoryService; ...@@ -41,7 +45,6 @@ import com.gic.haoban.manage.service.service.MaterialCategoryService;
import com.gic.haoban.manage.service.service.MaterialService; import com.gic.haoban.manage.service.service.MaterialService;
import com.gic.haoban.manage.service.service.MiniprogramSettingService; import com.gic.haoban.manage.service.service.MiniprogramSettingService;
import com.gic.haoban.manage.service.service.WxEnterpriseService; import com.gic.haoban.manage.service.service.WxEnterpriseService;
import com.gic.haoban.manage.service.util.CommonUtil;
import com.gic.wechat.api.enums.QywxMediaTypeEnum; import com.gic.wechat.api.enums.QywxMediaTypeEnum;
import com.gic.wechat.api.service.qywx.QywxSuiteApiService; import com.gic.wechat.api.service.qywx.QywxSuiteApiService;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
...@@ -516,4 +519,46 @@ public class MaterialApiServiceImpl implements MaterialApiService { ...@@ -516,4 +519,46 @@ public class MaterialApiServiceImpl implements MaterialApiService {
String materialId = materialIdList.get(0) ; String materialId = materialIdList.get(0) ;
return com.gic.api.base.commons.ServiceResponse.success(materialId) ; return com.gic.api.base.commons.ServiceResponse.success(materialId) ;
} }
@Override
public com.gic.api.base.commons.ServiceResponse<String> getMaterialIdByCombined(String wxEnterpriseId, CombinedQDTO combinedQDTO) {
if (StringUtils.isAnyBlank(combinedQDTO.getImageUrl(), combinedQDTO.getQrCodeUrl())) {
return com.gic.api.base.commons.ServiceResponse.failure("9999","参数异常") ;
}
logger.info("请求合成图片并上传企微:{}",JSON.toJSONString(combinedQDTO));
String unionString = combinedQDTO.getUnionString();
String key = ImageCombined.IMAGE_REDIS_KEY + wxEnterpriseId + ":" + UUID.nameUUIDFromBytes(unionString.getBytes(StandardCharsets.UTF_8));
String cache = (String)RedisUtil.getCache(key);
if (StringUtils.isNotBlank(cache)) {
return com.gic.api.base.commons.ServiceResponse.success(cache);
}
ProviderLocalTag localTag = ProviderLocalTag.tag.get();
String traceId = localTag.traceId;
Future<JSONResponse> future = null;
JSONResponse json = null;
try {
future = ImageCombined.EXECUTOR.submit(() -> {
TraceIdUtil.traceBegin(TraceIdUtil.EntranceType.THREAD_POOL);
logger.info("线程池合成图片clerkId:{},businessId:{},traceId:{}", combinedQDTO.getClerkId(), combinedQDTO.getBusinessId(), traceId);
JSONResponse jr = materialService.getMaterialIdByCombined(wxEnterpriseId, combinedQDTO);
TraceIdUtil.traceEnd();
return jr;
});
json = future.get();
if (json == null) {
return com.gic.api.base.commons.ServiceResponse.failure("9999", "获取图片失败,请稍后再试");
}
if (json.getErrorCode() == 0) {
String mediaId= json.getResult().toString() ;
logger.info("设置缓存key:{},value:{}", key, mediaId);
RedisUtil.setCache(key, mediaId, 1L, TimeUnit.DAYS);
return com.gic.api.base.commons.ServiceResponse.success(mediaId) ;
}else {
return com.gic.api.base.commons.ServiceResponse.failure("9999",json.getErrorMessage()) ;
}
} catch (Exception e) {
logger.info("获取素材id失败", e);
return com.gic.api.base.commons.ServiceResponse.failure("9999", "获取图片失败,请稍后再试");
}
}
} }
package com.gic.haoban.manage.service.service.out.impl.chat;
import com.gic.api.base.commons.BasePageInfo;
import com.gic.api.base.commons.BusinessException;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.EntityUtil;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityBaseDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityQDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivitySearchQDTO;
import com.gic.haoban.manage.api.service.chat.GroupChatActivityApiService;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivity;
import com.gic.haoban.manage.service.service.chat.GroupChatActivityService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* Created by wangzubo on 2022/11/1.
*/
@Service("groupChatActivityApiService")
public class GroupChatActivityApiServiceImpl implements GroupChatActivityApiService {
@Autowired
private GroupChatActivityService activityService;
@Override
public ServiceResponse<Long> saveActivity(GroupChatActivityQDTO qdto) {
if (StringUtils.isAnyBlank(
qdto.getEnterpriseId(),
qdto.getWxEnterpriseId(),
qdto.getCreatorId(),
qdto.getCreatorName(),
qdto.getActivityName())) {
return ServiceResponse.failure("500", "参数异常");
}
try {
Long chatActivityId = activityService.saveActivity(qdto);
activityService.delActivityDetailCache(qdto.getEnterpriseId(),chatActivityId);
return ServiceResponse.success(chatActivityId);
} catch (BusinessException e) {
return ServiceResponse.failure(e.getCode(), e.getMessage());
}
}
@Override
public ServiceResponse<GroupChatActivityDTO> getActivityDetail(String enterpriseId, Long chatActivityId) {
if (StringUtils.isBlank(enterpriseId) || chatActivityId == null) {
return ServiceResponse.failure("500", "参数异常");
}
GroupChatActivityDTO activityDetail = activityService.getActivityDetail(enterpriseId, chatActivityId);
return ServiceResponse.success(activityDetail);
}
@Override
public ServiceResponse<GroupChatActivityDTO> getActivityDetailCache(String enterpriseId, Long chatActivityId) {
if (StringUtils.isBlank(enterpriseId) || chatActivityId == null) {
return ServiceResponse.failure("500", "参数异常");
}
GroupChatActivityDTO activityDetail = activityService.getActivityDetailCache(enterpriseId, chatActivityId);
return ServiceResponse.success(activityDetail);
}
@Override
public ServiceResponse<List<GroupChatActivityBaseDTO>> listByActivityIds(String enterpriseId, List<Long> chatActivityIdList) {
if (StringUtils.isBlank(enterpriseId) || CollectionUtils.isEmpty(chatActivityIdList)) {
return ServiceResponse.failure("500", "参数异常");
}
List<TabGroupChatActivity> list = activityService.listByActivityIds(enterpriseId, chatActivityIdList);
return ServiceResponse.success(EntityUtil.changeEntityListNew(GroupChatActivityBaseDTO.class,list));
}
@Override
public ServiceResponse<List<GroupChatActivityBaseDTO>> listByActivityIdsDel(String enterpriseId, List<Long> chatActivityIdList) {
if (StringUtils.isBlank(enterpriseId) || CollectionUtils.isEmpty(chatActivityIdList)) {
return ServiceResponse.failure("500", "参数异常");
}
List<TabGroupChatActivity> list = activityService.listByActivityIdsDel(enterpriseId, chatActivityIdList);
return ServiceResponse.success(EntityUtil.changeEntityListNew(GroupChatActivityBaseDTO.class,list));
}
@Override
public ServiceResponse<Page<GroupChatActivityDTO>> pageActivity(String enterpriseId, GroupChatActivitySearchQDTO searchQDTO, BasePageInfo pageInfo) {
if (StringUtils.isBlank(enterpriseId)) {
return ServiceResponse.failure("500", "参数异常");
}
Page<GroupChatActivityDTO> page = activityService.pageActivity(enterpriseId, searchQDTO, pageInfo);
return ServiceResponse.success(page);
}
@Override
public ServiceResponse<GroupChatActivityDTO> stopActivity(String enterpriseId, Long chatActivityId) {
if (StringUtils.isBlank(enterpriseId) || chatActivityId == null) {
return ServiceResponse.failure("500", "参数异常");
}
try {
GroupChatActivityDTO activityDTO = activityService.stopActivity(enterpriseId, chatActivityId);
activityService.delActivityDetailCache(enterpriseId,chatActivityId);
return ServiceResponse.success(activityDTO);
} catch (BusinessException e) {
return ServiceResponse.failure(e.getCode(), e.getMessage());
}
}
@Override
public ServiceResponse<Void> delActivity(String enterpriseId, Long chatActivityId) {
if (StringUtils.isBlank(enterpriseId) || chatActivityId == null) {
return ServiceResponse.failure("500", "参数异常");
}
try {
activityService.delActivity(enterpriseId, chatActivityId);
activityService.delActivityDetailCache(enterpriseId,chatActivityId);
return ServiceResponse.success();
} catch (BusinessException e) {
return ServiceResponse.failure(e.getCode(), e.getMessage());
}
}
}
package com.gic.haoban.manage.service.service.out.impl.chat;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
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.service.service.chat.GroupChatActivityInviteLogService;
import com.gic.haoban.manage.service.service.chat.GroupChatActivityRewardLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* @author shangfeng
* @date 2024-10-08 14:37:46
*/
@Service("groupChatActivityLogApiService")
public class GroupChatActivityLogApiServiceImpl implements GroupChatActivityLogApiService {
@Resource
private GroupChatActivityInviteLogService groupChatActivityInviteLogService;
@Resource
private GroupChatActivityRewardLogService groupChatActivityRewardLogService;
@Override
public ServiceResponse<List<GroupChatActivityInviteLogDTO>> queryMaxBatchInviteLog(GroupChatActivityInviteLogQDTO inviteLogQDTO) {
return ServiceResponse.success(groupChatActivityInviteLogService.queryMaxBatchInviteLog(inviteLogQDTO));
}
@Override
public ServiceResponse<Page<GroupChatActivityInviteLogDTO>> queryInviteLogDetails(GroupChatActivityInviteLogQDTO inviteLogQDTO) {
return ServiceResponse.success(groupChatActivityInviteLogService.queryInviteLogDetails(inviteLogQDTO));
}
@Override
public ServiceResponse<Page<GroupChatActivityRewardLogDTO>> queryRewardLogDetails(GroupChatActivityRewardLogQDTO rewardLogQDTO) {
return ServiceResponse.success(groupChatActivityRewardLogService.queryRewardLogDetails(rewardLogQDTO));
}
@Override
public ServiceResponse<Long> queryRewardNum(GroupChatActivityRewardLogQDTO rewardLogQDTO) {
return ServiceResponse.success(groupChatActivityRewardLogService.queryRewardNum(rewardLogQDTO));
}
}
package com.gic.haoban.manage.service.service.out.impl.chat;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.BusinessException;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.EntityUtil;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityHmDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatHmDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityHmQDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityShareBindQDTO;
import com.gic.haoban.manage.api.service.chat.GroupChatActivityShareApiService;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityShareBind;
//import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatActivityBaseContext;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatActivityBaseContext;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatActivityHmBO;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatHmBO;
import com.gic.haoban.manage.service.service.chat.GroupChatActivityInviteLogService;
import com.gic.haoban.manage.service.service.chat.GroupChatActivityService;
import com.gic.haoban.manage.service.service.chat.GroupChatActivityShareBindService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
@Service("groupChatActivityShareApiService")
public class GroupChatActivityShareApiServiceImpl implements GroupChatActivityShareApiService {
@Autowired
private GroupChatActivityShareBindService activityShareBindService;
@Autowired
private GroupChatActivityService groupChatActivityService;
@Autowired
private GroupChatActivityInviteLogService groupChatActivityInviteLogService;
@Override
public ServiceResponse<Void> shareBind(GroupChatActivityShareBindQDTO shareBind) {
String enterpriseId = shareBind.getEnterpriseId();
Long chatActivityId = shareBind.getChatActivityId();
String inviterMemberId = shareBind.getInviterMemberId();
String inviteeUnionId = shareBind.getInviteeUnionId();
String inviteeMemberId = shareBind.getInviteeMemberId();
if (chatActivityId == null || StringUtils.isAnyBlank(enterpriseId,inviteeUnionId, inviterMemberId)) {
return ServiceResponse.failure("500","参数异常");
}
if (Objects.equals(inviterMemberId, inviteeMemberId)) {
return ServiceResponse.success();
}
TabGroupChatActivityShareBind bind = EntityUtil.changeEntityNew(TabGroupChatActivityShareBind.class, shareBind);
activityShareBindService.shareBind(bind);
return ServiceResponse.success();
}
@Override
public ServiceResponse<List<GroupChatActivityHmDTO>> listGroupChatHm(GroupChatActivityHmQDTO activityHmQDTO) {
if (StringUtils.isAnyBlank(activityHmQDTO.getEnterpriseId(),
activityHmQDTO.getInviterMemberId()) || activityHmQDTO.getChatActivityId() == null) {
return ServiceResponse.failure("500", "参数异常");
}
try {
List<GroupChatActivityHmBO> hmBOList = groupChatActivityService.listGroupChatHm(activityHmQDTO);
return ServiceResponse.success(EntityUtil.changeEntityListNew(GroupChatActivityHmDTO.class,hmBOList));
} catch (BusinessException e) {
return ServiceResponse.failure(e.getCode(), e.getMessage());
}
}
@Override
public ServiceResponse<Void> shareGroupChatInviteMQ(String param) {
GroupChatActivityBaseContext chatActivityContext = JSONObject.parseObject(param, GroupChatActivityBaseContext.class);
groupChatActivityInviteLogService.groupChatInvite(chatActivityContext);
return ServiceResponse.success();
}
}
...@@ -6,6 +6,8 @@ import org.apache.commons.lang3.StringUtils; ...@@ -6,6 +6,8 @@ import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.util.Map;
public class ApolloUtils { public class ApolloUtils {
private static final Logger log = LoggerFactory.getLogger(ApolloUtils.class); private static final Logger log = LoggerFactory.getLogger(ApolloUtils.class);
...@@ -45,4 +47,24 @@ public class ApolloUtils { ...@@ -45,4 +47,24 @@ public class ApolloUtils {
log.info("导购通知一批次间隔时间:{}", notifyBatchInterval); log.info("导购通知一批次间隔时间:{}", notifyBatchInterval);
return Integer.parseInt(notifyBatchInterval); return Integer.parseInt(notifyBatchInterval);
} }
/**
* 线程池核心线程数
* @return
*/
public static Integer combinedCorePoolSize() {
Config config = ConfigService.getAppConfig();
String corePoolSize = config.getProperty("combinedCorePoolSize", "20");
return Integer.parseInt(corePoolSize);
}
/**
* 线程池最大线程数
* @return
*/
public static Integer combinedMaximumPoolSize() {
Config config = ConfigService.getAppConfig();
String maximumPoolSize = config.getProperty("combinedMaximumPoolSize", "40");
return Integer.parseInt(maximumPoolSize);
}
} }
package com.gic.haoban.manage.service.util;
import com.gic.api.base.commons.BusinessException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.function.Supplier;
/**
* Created by wangzubo on 2024/9/8.
*/
public class ExecuteServiceUtil {
private static final Logger logger = LoggerFactory.getLogger(ExecuteServiceUtil.class);
public static <T> T executeService(Supplier<T> serviceCall, String errorMsg) throws BusinessException {
try {
return serviceCall.get();
} catch (Exception e) {
logger.error(errorMsg, e);
throw new BusinessException("-1", errorMsg);
}
}
public static void executeService(Runnable serviceCall, String errorMsg) {
try {
serviceCall.run();
} catch (Exception e) {
logger.error(errorMsg, e);
}
}
}
...@@ -28,6 +28,10 @@ ...@@ -28,6 +28,10 @@
<dubbo:service interface="com.gic.haoban.manage.api.service.chat.GroupChatPlanApiService" ref="groupChatPlanApiService" timeout="10000"/> <dubbo:service interface="com.gic.haoban.manage.api.service.chat.GroupChatPlanApiService" ref="groupChatPlanApiService" timeout="10000"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.chat.GroupChatHmApiService" ref="groupChatHmApiService" timeout="10000"/> <dubbo:service interface="com.gic.haoban.manage.api.service.chat.GroupChatHmApiService" ref="groupChatHmApiService" timeout="10000"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.chat.GroupChatApiService" ref="groupChatApiService" timeout="10000"/> <dubbo:service interface="com.gic.haoban.manage.api.service.chat.GroupChatApiService" ref="groupChatApiService" timeout="10000"/>
<!-- 社群邀请有礼 -->
<dubbo:service interface="com.gic.haoban.manage.api.service.chat.GroupChatActivityApiService" ref="groupChatActivityApiService" timeout="10000"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.chat.GroupChatActivityLogApiService" ref="groupChatActivityLogApiService" timeout="10000"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.chat.GroupChatActivityShareApiService" ref="groupChatActivityShareApiService" timeout="10000"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.HaobanCommonMQApiService" ref="haobanCommonMQApiService" timeout="10000"/> <dubbo:service interface="com.gic.haoban.manage.api.service.HaobanCommonMQApiService" ref="haobanCommonMQApiService" timeout="10000"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.hm.WxUserAddLogApiService" ref="wxUserAddLogApiService" timeout="10000"/> <dubbo:service interface="com.gic.haoban.manage.api.service.hm.WxUserAddLogApiService" ref="wxUserAddLogApiService" timeout="10000"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.KeyDataApiService" ref="keyDataApiService" timeout="10000"/> <dubbo:service interface="com.gic.haoban.manage.api.service.KeyDataApiService" ref="keyDataApiService" timeout="10000"/>
...@@ -198,6 +202,7 @@ ...@@ -198,6 +202,7 @@
<dubbo:reference interface="com.gic.wechat.api.service.qywx.QywxExternalUserService" id="qywxExternalUserService"/> <dubbo:reference interface="com.gic.wechat.api.service.qywx.QywxExternalUserService" id="qywxExternalUserService"/>
<dubbo:reference interface="com.gic.marketing.api.service.SmsService" id="smsService" timeout="10000" retries="0"/> <dubbo:reference interface="com.gic.marketing.api.service.SmsService" id="smsService" timeout="10000" retries="0"/>
<dubbo:reference interface="com.gic.marketing.api.service.AccountOverdueSmsSendService" id="accountOverdueSmsSendService" timeout="10000" retries="0"/> <dubbo:reference interface="com.gic.marketing.api.service.AccountOverdueSmsSendService" id="accountOverdueSmsSendService" timeout="10000" retries="0"/>
<dubbo:reference interface="com.gic.marketing.api.service.CouponReferAlarmService" id="couponReferAlarmService" retries="0" check="false"/>
<dubbo:reference interface="com.gic.thirdparty.api.service.VoiceService" id="voiceService" timeout="10000" retries="0"/> <dubbo:reference interface="com.gic.thirdparty.api.service.VoiceService" id="voiceService" timeout="10000" retries="0"/>
<dubbo:reference interface="com.gic.thirdparty.api.service.CommunicationService" id="communicationService" timeout="10000" retries="0"/> <dubbo:reference interface="com.gic.thirdparty.api.service.CommunicationService" id="communicationService" timeout="10000" retries="0"/>
...@@ -206,6 +211,7 @@ ...@@ -206,6 +211,7 @@
<dubbo:reference interface="com.gic.wechat.api.service.qywx.QywxChatApiService" id="qywxChatApiService" timeout="10000" retries="0"/> <dubbo:reference interface="com.gic.wechat.api.service.qywx.QywxChatApiService" id="qywxChatApiService" timeout="10000" retries="0"/>
<dubbo:reference interface="com.gic.member.tag.api.service.MemberTagGroupApiService" id="memberTagGroupApiService" timeout="10000" retries="0"/> <dubbo:reference interface="com.gic.member.tag.api.service.MemberTagGroupApiService" id="memberTagGroupApiService" timeout="10000" retries="0"/>
<dubbo:reference interface="com.gic.enterprise.api.service.ScreeningDetailService" id="screeningDetailService" timeout="10000" retries="0"/> <dubbo:reference interface="com.gic.enterprise.api.service.ScreeningDetailService" id="screeningDetailService" timeout="10000" retries="0"/>
<dubbo:reference interface="com.gic.member.tag.api.service.MemberTagBusinessGroupApiService" id="memberTagBusinessGroupApiService" timeout="100000" retries="0" check="false"/>
<dubbo:reference interface="com.gic.wechat.api.service.qywx.QywxOrderApiService" id="qywxOrderApiService" timeout="10000" retries="0"/> <dubbo:reference interface="com.gic.wechat.api.service.qywx.QywxOrderApiService" id="qywxOrderApiService" timeout="10000" retries="0"/>
<dubbo:reference id="pay4WXService" interface="com.gic.thirdparty.api.service.Pay4WXService" timeout="10000" retries="0" check="false"/> <dubbo:reference id="pay4WXService" interface="com.gic.thirdparty.api.service.Pay4WXService" timeout="10000" retries="0" check="false"/>
...@@ -240,5 +246,10 @@ ...@@ -240,5 +246,10 @@
<dubbo:reference interface="com.gic.content.api.service.ContentSettingApiService" id="contentSettingApiService" timeout="10000" retries="0" check="false" /> <dubbo:reference interface="com.gic.content.api.service.ContentSettingApiService" id="contentSettingApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference interface="com.gic.clerk.api.service.MenuApiService" id="menuApiService" timeout="10000" retries="0" check="false" /> <dubbo:reference interface="com.gic.clerk.api.service.MenuApiService" id="menuApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference interface="com.gic.member.ext.api.service.MemberGrowthWriteApiService" id="memberGrowthWriteApiService" timeout="10000" retries="0" check="false" /> <dubbo:reference interface="com.gic.member.ext.api.service.MemberGrowthWriteApiService" id="memberGrowthWriteApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference interface="com.gic.member.api.service.integral.IntegralWriteApiService" id="integralWriteApiService" timeout="10000" retries="0" check="false"/>
<dubbo:reference id="memberTagEsApiService" interface="com.gic.member.tag.api.service.MemberTagEsApiService" timeout="100000" retries="0" check="false"/>
<dubbo:reference id="memberCrowdApiService" interface="com.gic.member.ext.api.service.MemberCrowdApiService" timeout="10000" retries="0" check="false"/>
<dubbo:reference id="coupCardDistributionService" interface="com.gic.marketing.api.service.CoupCardDistributionService" timeout="30000" retries="0" check="false"/>
</beans> </beans>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gic.haoban.manage.service.dao.mapper.chat.GroupChatActivityInviteLogMapper">
<resultMap type="com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityInviteLog"
id="TabHaobanGroupChatActivityInviteLogMap">
<result property="chatActivityInviteId" column="chat_activity_invite_id" jdbcType="INTEGER"/>
<result property="chatActivityId" column="chat_activity_id" jdbcType="INTEGER"/>
<result property="inviterMemberId" column="inviter_member_id" jdbcType="VARCHAR"/>
<result property="inviteeMemberId" column="invitee_member_id" jdbcType="VARCHAR"/>
<result property="inviteeUserId" column="invitee_user_id" jdbcType="VARCHAR"/>
<result property="inviteeUnionId" column="invitee_union_id" jdbcType="VARCHAR"/>
<result property="userName" column="user_name" jdbcType="VARCHAR"/>
<result property="nickName" column="nick_name" jdbcType="VARCHAR"/>
<result property="groupChatId" column="group_chat_id" jdbcType="INTEGER"/>
<result property="inviteType" column="invite_type" jdbcType="INTEGER"/>
<result property="invalidInviteType" column="invalid_invite_type" jdbcType="INTEGER"/>
<result property="addMemberType" column="add_member_type" jdbcType="INTEGER"/>
<result property="batchNumber" column="batch_number" jdbcType="INTEGER"/>
<result property="enterpriseId" column="enterprise_id" jdbcType="VARCHAR"/>
<result property="wxEnterpriseId" column="wx_enterprise_id" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="deleteFlag" column="delete_flag" jdbcType="INTEGER"/>
</resultMap>
<sql id="Base_Column_List">
chat_activity_invite_id
, chat_activity_id, inviter_member_id, invitee_member_id, invitee_user_id,invitee_union_id,
user_name, nick_name, group_chat_id, invite_type, invalid_invite_type, add_member_type, batch_number,
enterprise_id, wx_enterprise_id, create_time, update_time, delete_flag
</sql>
<!--查询单个-->
<select id="queryById" resultMap="TabHaobanGroupChatActivityInviteLogMap">
select
<include refid="Base_Column_List"/>
from tab_haoban_group_chat_activity_invite_log
where chat_activity_invite_id = #{chatActivityInviteId}
</select>
<!--查询指定行数据-->
<select id="queryAll" resultMap="TabHaobanGroupChatActivityInviteLogMap">
select
<include refid="Base_Column_List"/>
from tab_haoban_group_chat_activity_invite_log
<where>
and enterprise_id = #{enterpriseId} and delete_flag = 0
<if test="chatActivityInviteId != null">
and chat_activity_invite_id = #{chatActivityInviteId}
</if>
<if test="chatActivityId != null">
and chat_activity_id = #{chatActivityId}
</if>
<if test="inviterMemberId != null and inviterMemberId != ''">
and inviter_member_id = #{inviterMemberId}
</if>
<if test="inviteeMemberId != null and inviteeMemberId != ''">
and invitee_member_id = #{inviteeMemberId}
</if>
<if test="inviteeUserId != null and inviteeUserId != ''">
and invitee_user_id = #{inviteeUserId}
</if>
<if test="userName != null and userName != ''">
and user_name = #{userName}
</if>
<if test="nickName != null and nickName != ''">
and nick_name = #{nickName}
</if>
<if test="groupChatId != null">
and group_chat_id = #{groupChatId}
</if>
<if test="inviteType != null">
and invite_type = #{inviteType}
</if>
<if test="invalidInviteType != null">
and invalid_invite_type = #{invalidInviteType}
</if>
<if test="addMemberType != null">
and add_member_type = #{addMemberType}
</if>
<if test="batchNumber != null">
and batch_number = #{batchNumber}
</if>
<if test="wxEnterpriseId != null and wxEnterpriseId != ''">
and wx_enterprise_id = #{wxEnterpriseId}
</if>
</where>
</select>
<!--统计总行数-->
<select id="count" resultType="java.lang.Long">
select count(1)
from tab_haoban_group_chat_activity_invite_log
<where>
and enterprise_id = #{enterpriseId} and delete_flag = 0
<if test="chatActivityInviteId != null">
and chat_activity_invite_id = #{chatActivityInviteId}
</if>
<if test="chatActivityId != null">
and chat_activity_id = #{chatActivityId}
</if>
<if test="inviterMemberId != null and inviterMemberId != ''">
and inviter_member_id = #{inviterMemberId}
</if>
<if test="inviteeMemberId != null and inviteeMemberId != ''">
and invitee_member_id = #{inviteeMemberId}
</if>
<if test="inviteeUserId != null and inviteeUserId != ''">
and invitee_user_id = #{inviteeUserId}
</if>
<if test="userName != null and userName != ''">
and user_name = #{userName}
</if>
<if test="nickName != null and nickName != ''">
and nick_name = #{nickName}
</if>
<if test="groupChatId != null">
and group_chat_id = #{groupChatId}
</if>
<if test="inviteType != null">
and invite_type = #{inviteType}
</if>
<if test="invalidInviteType != null">
and invalid_invite_type = #{invalidInviteType}
</if>
<if test="addMemberType != null">
and add_member_type = #{addMemberType}
</if>
<if test="batchNumber != null">
and batch_number = #{batchNumber}
</if>
<if test="wxEnterpriseId != null and wxEnterpriseId != ''">
and wx_enterprise_id = #{wxEnterpriseId}
</if>
</where>
</select>
<!--新增所有列-->
<insert id="insert" keyProperty="chatActivityInviteId" useGeneratedKeys="true">
insert into tab_haoban_group_chat_activity_invite_log(chat_activity_invite_id,chat_activity_id, inviter_member_id, invitee_member_id, invitee_user_id,invitee_union_id,
user_name, nick_name, group_chat_id, invite_type, invalid_invite_type, add_member_type, batch_number,
enterprise_id, wx_enterprise_id)
values (#{chatActivityInviteId},#{chatActivityId}, #{inviterMemberId}, #{inviteeMemberId}, #{inviteeUserId},#{inviteeUnionId}, #{userName}, #{nickName},
#{groupChatId}, #{inviteType}, #{invalidInviteType}, #{addMemberType}, #{batchNumber}, #{enterpriseId},
#{wxEnterpriseId})
</insert>
<select id="queryMaxBatchByChatActivityIdAndInviterMemberId" resultType="integer">
select max(batch_number)
from tab_haoban_group_chat_activity_invite_log
where chat_activity_id = #{chatActivityId}
and inviter_member_id = #{inviterMemberId}
and invite_type = 1
and delete_flag = 0
</select>
<select id="queryList" resultMap="TabHaobanGroupChatActivityInviteLogMap">
select
<include refid="Base_Column_List"/>
from tab_haoban_group_chat_activity_invite_log
where delete_flag = 0
<if test="enterpriseId != null and enterpriseId != '' ">
and enterprise_id = #{enterpriseId}
</if>
<if test="chatActivityId != null">
and chat_activity_id = #{chatActivityId}
</if>
<if test="inviterMemberId != null and inviterMemberId != ''">
and inviter_member_id = #{inviterMemberId}
</if>
<if test="inviteeMemberId != null and inviteeMemberId != ''">
and invitee_member_id = #{inviteeMemberId}
</if>
<if test="batchNumber != null">
and batch_number = #{batchNumber}
</if>
<if test="inviteType != null">
and invite_type = #{inviteType}
</if>
<if test="addMemberType != null">
and add_member_type = #{addMemberType}
</if>
<if test="beginTime != null">
and create_time &gt; #{beginTime}
</if>
<if test="endTime != null">
and create_time &lt; #{endTime}
</if>
<if test="sortFiled != null">
order by ${sortFiled} ${sortType}
</if>
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gic.haoban.manage.service.dao.mapper.chat.GroupChatActivityJoinMapper">
<resultMap type="com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityJoin" id="TabHaobanGroupChatActivityJoinMap">
<result property="chatActivityJoinId" column="chat_activity_join_id" jdbcType="INTEGER"/>
<result property="chatActivityId" column="chat_activity_id" jdbcType="INTEGER"/>
<result property="memberType" column="member_type" jdbcType="INTEGER"/>
<result property="filterJson" column="filter_json" jdbcType="VARCHAR"/>
<result property="index" column="index" jdbcType="INTEGER"/>
<result property="chatHmId" column="chat_hm_id" jdbcType="INTEGER"/>
<result property="enterpriseId" column="enterprise_id" jdbcType="VARCHAR"/>
<result property="wxEnterpriseId" column="wx_enterprise_id" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="deleteFlag" column="delete_flag" jdbcType="INTEGER"/>
</resultMap>
<!--查询单个-->
<select id="queryById" resultMap="TabHaobanGroupChatActivityJoinMap">
select *
from tab_haoban_group_chat_activity_join
where chat_activity_join_id = #{chatActivityJoinId}
</select>
<select id="queryByChatActivityIds" resultMap="TabHaobanGroupChatActivityJoinMap">
select *
from tab_haoban_group_chat_activity_join
where delete_flag = 0 and chat_activity_id in
<foreach collection="chatActivityIds" open="(" close=")" separator="," item="item">
#{item}
</foreach>
order by `index` asc
</select>
<!--查询指定行数据-->
<select id="queryAllByLimit" resultMap="TabHaobanGroupChatActivityJoinMap">
select
chat_activity_join_id,chat_activity_id,member_type,filter_json,`index`,chat_hm_id,enterprise_id,wx_enterprise_id,create_time,update_time,delete_flag
from tab_haoban_group_chat_activity_join
<where>
<if test="chatActivityJoinId != null">
and chat_activity_join_id = #{chatActivityJoinId}
</if>
<if test="chatActivityId != null">
and chat_activity_id = #{chatActivityId}
</if>
<if test="memberType != null">
and member_type = #{memberType}
</if>
<if test="filterJson != null and filterJson != ''">
and filter_json = #{filterJson}
</if>
<if test="index != null">
and `index` = #{index}
</if>
<if test="enterpriseId != null and enterpriseId != ''">
and enterprise_id = #{enterpriseId}
</if>
<if test="wxEnterpriseId != null and wxEnterpriseId != ''">
and wx_enterprise_id = #{wxEnterpriseId}
</if>
</where>
limit #{pageable.offset}, #{pageable.pageSize}
</select>
<!--统计总行数-->
<select id="count" resultType="java.lang.Long">
select count(1)
from tab_haoban_group_chat_activity_join
<where>
<if test="chatActivityJoinId != null">
and chat_activity_join_id = #{chatActivityJoinId}
</if>
<if test="chatActivityId != null">
and chat_activity_id = #{chatActivityId}
</if>
<if test="memberType != null">
and member_type = #{memberType}
</if>
<if test="filterJson != null and filterJson != ''">
and filter_json = #{filterJson}
</if>
<if test="index != null">
and `index` = #{index}
</if>
<if test="enterpriseId != null and enterpriseId != ''">
and enterprise_id = #{enterpriseId}
</if>
<if test="wxEnterpriseId != null and wxEnterpriseId != ''">
and wx_enterprise_id = #{wxEnterpriseId}
</if>
</where>
</select>
<!--新增所有列-->
<insert id="insert" keyProperty="chatActivityJoinId" useGeneratedKeys="true">
insert into tab_haoban_group_chat_activity_join(chat_activity_join_id,chat_activity_id,member_type,filter_json,`index`,chat_hm_id,enterprise_id,wx_enterprise_id)
values (#{chatActivityJoinId},#{chatActivityId},#{memberType},#{filterJson},#{index},#{chatHmId},#{enterpriseId},#{wxEnterpriseId})
</insert>
<!--通过主键修改数据-->
<update id="update">
update tab_haoban_group_chat_activity_join
<set>
<if test="chatActivityId != null">
chat_activity_id = #{chatActivityId},
</if>
<if test="memberType != null">
member_type = #{memberType},
</if>
<if test="filterJson != null and filterJson != ''">
filter_json = #{filterJson},
</if>
<if test="index != null">
`index` = #{index},
</if>
<if test="enterpriseId != null and enterpriseId != ''">
enterprise_id = #{enterpriseId},
</if>
<if test="wxEnterpriseId != null and wxEnterpriseId != ''">
wx_enterprise_id = #{wxEnterpriseId},
</if>
</set>
where chat_activity_join_id = #{chatActivityJoinId}
</update>
<!--通过主键删除-->
<delete id="deleteById">
update
tab_haoban_group_chat_activity_join set delete_flag = 1
where chat_activity_join_id = #{chatActivityJoinId}
</delete>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gic.haoban.manage.service.dao.mapper.chat.GroupChatActivityMapper">
<resultMap type="com.gic.haoban.manage.service.entity.chat.TabGroupChatActivity" id="TabHaobanGroupChatActivityMap">
<result property="chatActivityId" column="chat_activity_id" jdbcType="INTEGER"/>
<result property="activityName" column="activity_name" jdbcType="VARCHAR"/>
<result property="startDate" column="start_date" jdbcType="TIMESTAMP"/>
<result property="endDate" column="end_date" jdbcType="TIMESTAMP"/>
<result property="limitDate" column="limit_date" jdbcType="TIMESTAMP"/>
<result property="activityImg" column="activity_img" jdbcType="VARCHAR"/>
<result property="activityInviteImg" column="activity_invite_img" jdbcType="VARCHAR"/>
<result property="activityDesc" column="activity_desc" jdbcType="VARCHAR"/>
<result property="activityShareTitle" column="activity_share_title" jdbcType="VARCHAR"/>
<result property="activityShareImg" column="activity_share_img" jdbcType="VARCHAR"/>
<result property="activityPosterImg" column="activity_poster_img" jdbcType="VARCHAR"/>
<result property="status" column="status" jdbcType="INTEGER"/>
<result property="inviteRewardType" column="invite_reward_type" jdbcType="INTEGER"/>
<result property="joinType" column="join_type" jdbcType="INTEGER"/>
<result property="joinRule" column="join_rule" jdbcType="VARCHAR"/>
<result property="joinChatHmId" column="join_chat_hm_id" jdbcType="INTEGER"/>
<result property="inviteType" column="invite_type" jdbcType="INTEGER"/>
<result property="inviteMemberType" column="invite_member_type" jdbcType="INTEGER"/>
<result property="labelFlag" column="label_flag" jdbcType="INTEGER"/>
<result property="labelJson" column="label_json" jdbcType="VARCHAR"/>
<result property="exceptionNotice" column="exception_notice" jdbcType="INTEGER"/>
<result property="exceptionNoticeNum" column="exception_notice_num" jdbcType="INTEGER"/>
<result property="enterpriseId" column="enterprise_id" jdbcType="VARCHAR"/>
<result property="wxEnterpriseId" column="wx_enterprise_id" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="creatorId" column="creator_id" jdbcType="VARCHAR"/>
<result property="creatorName" column="creator_name" jdbcType="VARCHAR"/>
<result property="deleteFlag" column="delete_flag" jdbcType="INTEGER"/>
</resultMap>
<!--查询单个-->
<select id="queryById" resultMap="TabHaobanGroupChatActivityMap">
select *
from tab_haoban_group_chat_activity
where chat_activity_id = #{chatActivityId} and delete_flag = 0
</select>
<select id="queryByIds" resultMap="TabHaobanGroupChatActivityMap">
select *
from tab_haoban_group_chat_activity
where delete_flag = 0 and chat_activity_id in
<foreach collection="chatActivityIds" open="(" close=")" separator="," item="item">
#{item}
</foreach>
order by create_time desc
</select>
<select id="queryByIdsDel" resultMap="TabHaobanGroupChatActivityMap">
select *
from tab_haoban_group_chat_activity
where chat_activity_id in
<foreach collection="chatActivityIds" open="(" close=")" separator="," item="item">
#{item}
</foreach>
order by create_time desc
</select>
<select id="listActivity" resultMap="TabHaobanGroupChatActivityMap">
select
a.*
from tab_haoban_group_chat_activity a
where a.enterprise_id = #{enterpriseId} and a.delete_flag = 0
<if test="search.search != null and search.search != ''">
and (a.activity_name like concat('%',#{search.search},'%') or a.chat_activity_id = #{search.search})
</if>
<if test="search.wxEnterpriseId != null">
and a.wx_enterprise_id = #{search.wxEnterpriseId}
</if>
<if test="search.status != null">
and a.status = #{search.status}
</if>
<if test="search.joinType != null">
and a.join_type = #{search.joinType}
</if>
<if test="search.inviteRewardType != null">
and a.invite_reward_type = #{search.inviteRewardType}
</if>
<if test="search.beginDate != null">
and a.create_time >= #{search.beginDate}
</if>
<if test="search.endDate != null">
and a.create_time <![CDATA[<=]]> #{search.endDate}
</if>
<if test="search.creatorIdList != null and search.creatorIdList.size > 0 ">
and a.creator_id in
<foreach collection="search.creatorIdList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
order by a.create_time desc,a.chat_activity_id desc
</select>
<select id="listActivityByDate" resultMap="TabHaobanGroupChatActivityMap">
select
a.*
from tab_haoban_group_chat_activity a
where a.delete_flag = 0
<if test="enterpriseId != null and enterpriseId != ''">
and enterprise_id = #{enterpriseId}
</if>
<if test="status != null">
and status = #{status}
</if>
<if test="startDate != null">
and start_date <![CDATA[<=]]> #{startDate}
</if>
<if test="endDate != null">
and end_date <![CDATA[<=]]> #{endDate}
</if>
order by a.create_time desc,a.chat_activity_id desc
</select>
<!--统计总行数-->
<select id="count" resultType="java.lang.Long">
select count(1)
from tab_haoban_group_chat_activity
<where>
<if test="chatActivityId != null">
and chat_activity_id = #{chatActivityId}
</if>
<if test="activityName != null and activityName != ''">
and activity_name = #{activityName}
</if>
<if test="startDate != null">
and start_date = #{startDate}
</if>
<if test="endDate != null">
and end_date = #{endDate}
</if>
<if test="limitDate != null">
and limit_date = #{limitDate}
</if>
<if test="activityImg != null and activityImg != ''">
and activity_img = #{activityImg}
</if>
<if test="activityInviteImg != null and activityInviteImg != ''">
and activity_invite_img = #{activityInviteImg}
</if>
<if test="activityDesc != null and activityDesc != ''">
and activity_desc = #{activityDesc}
</if>
<if test="activityShareTitle != null and activityShareTitle != ''">
and activity_share_title = #{activityShareTitle}
</if>
<if test="activityShareImg != null and activityShareImg != ''">
and activity_share_img = #{activityShareImg}
</if>
<if test="activityPosterImg != null and activityPosterImg != ''">
and activity_poster_img = #{activityPosterImg}
</if>
<if test="status != null">
and status = #{status}
</if>
<if test="inviteRewardType != null">
and invite_reward_type = #{inviteRewardType}
</if>
<if test="joinType != null">
and join_type = #{joinType}
</if>
<if test="joinRule != null and joinRule != ''">
and join_rule = #{joinRule}
</if>
<if test="joinChatHmId != null">
and join_chat_hm_id = #{joinChatHmId}
</if>
<if test="inviteType != null">
and invite_type = #{inviteType}
</if>
<if test="inviteMemberType != null">
and invite_member_type = #{inviteMemberType}
</if>
<if test="labelFlag != null">
and label_flag = #{labelFlag}
</if>
<if test="labelJson != null and labelJson != ''">
and label_json = #{labelJson}
</if>
<if test="exceptionNotice != null">
and exception_notice = #{exceptionNotice}
</if>
<if test="exceptionNoticeNum != null">
and exception_notice_num = #{exceptionNoticeNum}
</if>
<if test="enterpriseId != null and enterpriseId != ''">
and enterprise_id = #{enterpriseId}
</if>
<if test="wxEnterpriseId != null and wxEnterpriseId != ''">
and wx_enterprise_id = #{wxEnterpriseId}
</if>
</where>
</select>
<!--新增所有列-->
<insert id="insert" keyProperty="chatActivityId" useGeneratedKeys="true">
insert into tab_haoban_group_chat_activity(
chat_activity_id,
activity_name,
start_date,
end_date,
limit_date,
activity_img,
activity_invite_img,
activity_desc,
activity_share_title,
activity_share_img,
activity_poster_img,
status,
invite_reward_type,
join_type,
join_rule,
join_chat_hm_id,
invite_type,
invite_member_type,
label_flag,
label_json,
exception_notice,
exception_notice_num,
enterprise_id,
wx_enterprise_id,
creator_id,
creator_name)
values (
#{chatActivityId},
#{activityName},
#{startDate},
#{endDate},
#{limitDate},
#{activityImg},
#{activityInviteImg},
#{activityDesc},
#{activityShareTitle},
#{activityShareImg},
#{activityPosterImg},
#{status},
#{inviteRewardType},
#{joinType},
#{joinRule},
#{joinChatHmId},
#{inviteType},
#{inviteMemberType},
#{labelFlag},
#{labelJson},
#{exceptionNotice},
#{exceptionNoticeNum},
#{enterpriseId},
#{wxEnterpriseId},
#{creatorId},
#{creatorName})
</insert>
<!--通过主键修改数据-->
<update id="update">
update tab_haoban_group_chat_activity
<set>
<if test="activityName != null and activityName != ''">
activity_name = #{activityName},
</if>
<if test="startDate != null">
start_date = #{startDate},
</if>
<if test="endDate != null">
end_date = #{endDate},
</if>
<if test="limitDate != null">
limit_date = #{limitDate},
</if>
<if test="activityImg != null and activityImg != ''">
activity_img = #{activityImg},
</if>
<if test="activityInviteImg != null and activityInviteImg != ''">
activity_invite_img = #{activityInviteImg},
</if>
<if test="activityDesc != null and activityDesc != ''">
activity_desc = #{activityDesc},
</if>
<if test="activityShareTitle != null and activityShareTitle != ''">
activity_share_title = #{activityShareTitle},
</if>
<if test="activityShareImg != null and activityShareImg != ''">
activity_share_img = #{activityShareImg},
</if>
<if test="activityPosterImg != null and activityPosterImg != ''">
activity_poster_img = #{activityPosterImg},
</if>
<if test="status != null">
status = #{status},
</if>
<if test="inviteRewardType != null">
invite_reward_type = #{inviteRewardType},
</if>
<if test="joinType != null">
join_type = #{joinType},
</if>
<if test="joinRule != null and joinRule != ''">
join_rule = #{joinRule},
</if>
<if test="joinChatHmId != null">
join_chat_hm_id = #{joinChatHmId},
</if>
<if test="inviteType != null">
invite_type = #{inviteType},
</if>
<if test="inviteMemberType != null">
invite_member_type = #{inviteMemberType},
</if>
<if test="labelFlag != null">
label_flag = #{labelFlag},
</if>
<if test="labelJson != null and labelJson != ''">
label_json = #{labelJson},
</if>
<if test="exceptionNotice != null">
exception_notice = #{exceptionNotice},
</if>
<if test="exceptionNoticeNum != null">
exception_notice_num = #{exceptionNoticeNum},
</if>
<if test="enterpriseId != null and enterpriseId != ''">
enterprise_id = #{enterpriseId},
</if>
<if test="wxEnterpriseId != null and wxEnterpriseId != ''">
wx_enterprise_id = #{wxEnterpriseId},
</if>
</set>
where chat_activity_id = #{chatActivityId}
</update>
<!--通过主键删除-->
<delete id="deleteById">
update tab_haoban_group_chat_activity set delete_flag = 1
where enterprise_id = #{enterpriseId} and chat_activity_id = #{chatActivityId} and delete_flag = 0
</delete>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gic.haoban.manage.service.dao.mapper.chat.GroupChatActivityRewardDetailLogMapper">
<resultMap type="com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityRewardDetailLog"
id="TabHaobanGroupChatActivityRewardDetailLogMap">
<result property="chatActivityRewardDetailId" column="chat_activity_reward_detail_id" jdbcType="INTEGER"/>
<result property="chatActivityRewardId" column="chat_activity_reward_id" jdbcType="INTEGER"/>
<result property="chatActivityId" column="chat_activity_id" jdbcType="INTEGER"/>
<result property="activityRewardId" column="activity_reward_id" jdbcType="INTEGER"/>
<result property="memberId" column="member_id" jdbcType="VARCHAR"/>
<result property="rewardType" column="reward_type" jdbcType="INTEGER"/>
<result property="rewardValue" column="reward_value" jdbcType="VARCHAR"/>
<result property="rewardName" column="reward_name" jdbcType="VARCHAR"/>
<result property="rewardRemark" column="reward_remark" jdbcType="VARCHAR"/>
<result property="rewardBusinessId" column="reward_business_id" jdbcType="VARCHAR"/>
<result property="successFlag" column="success_flag" jdbcType="INTEGER"/>
<result property="enterpriseId" column="enterprise_id" jdbcType="VARCHAR"/>
<result property="wxEnterpriseId" column="wx_enterprise_id" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="deleteFlag" column="delete_flag" jdbcType="INTEGER"/>
</resultMap>
<sql id="Base_Column_List">
chat_activity_reward_detail_id
, chat_activity_reward_id, chat_activity_id,
activity_reward_id, member_id, reward_type, reward_value,
reward_name, reward_remark, reward_business_id,
success_flag, enterprise_id, wx_enterprise_id, create_time, update_time, delete_flag
</sql>
<!--查询单个-->
<select id="queryById" resultMap="TabHaobanGroupChatActivityRewardDetailLogMap">
select chat_activity_reward_detail_id, chat_activity_reward_id, chat_activity_id, activity_reward_id, member_id, reward_type, reward_value, reward_name, reward_remark, reward_business_id, success_flag, enterprise_id, wx_enterprise_id, create_time, update_time, delete_flag
from tab_haoban_group_chat_activity_reward_detail_log
where chat_activity_reward_detail_id = #{chatActivityRewardDetailId}
</select>
<!--查询指定行数据-->
<select id="queryAllByLimit" resultMap="TabHaobanGroupChatActivityRewardDetailLogMap">
select
chat_activity_reward_detail_id, chat_activity_reward_id, chat_activity_id, activity_reward_id, member_id, reward_type, reward_value, reward_name, reward_remark, reward_business_id, success_flag, enterprise_id, wx_enterprise_id, create_time, update_time, delete_flag
from tab_haoban_group_chat_activity_reward_detail_log
<where>
<if test="chatActivityRewardDetailId != null">
and chat_activity_reward_detail_id = #{chatActivityRewardDetailId}
</if>
<if test="chatActivityRewardId != null">
and chat_activity_reward_id = #{chatActivityRewardId}
</if>
<if test="chatActivityId != null">
and chat_activity_id = #{chatActivityId}
</if>
<if test="activityRewardId != null">
and activity_reward_id = #{activityRewardId}
</if>
<if test="memberId != null and memberId != ''">
and member_id = #{memberId}
</if>
<if test="rewardType != null">
and reward_type = #{rewardType}
</if>
<if test="rewardValue != null and rewardValue != ''">
and reward_value = #{rewardValue}
</if>
<if test="rewardName != null and rewardName != ''">
and reward_name = #{rewardName}
</if>
<if test="rewardRemark != null and rewardRemark != ''">
and reward_remark = #{rewardRemark}
</if>
<if test="rewardBusinessId != null and rewardBusinessId != ''">
and reward_business_id = #{rewardBusinessId}
</if>
<if test="successFlag != null">
and success_flag = #{successFlag}
</if>
<if test="enterpriseId != null and enterpriseId != ''">
and enterprise_id = #{enterpriseId}
</if>
<if test="wxEnterpriseId != null and wxEnterpriseId != ''">
and wx_enterprise_id = #{wxEnterpriseId}
</if>
<if test="createTime != null">
and create_time = #{createTime}
</if>
<if test="updateTime != null">
and update_time = #{updateTime}
</if>
<if test="deleteFlag != null">
and delete_flag = #{deleteFlag}
</if>
</where>
limit #{pageable.offset}, #{pageable.pageSize}
</select>
<!--统计总行数-->
<select id="count" resultType="java.lang.Long">
select count(1)
from tab_haoban_group_chat_activity_reward_detail_log
<where>
<if test="chatActivityRewardDetailId != null">
and chat_activity_reward_detail_id = #{chatActivityRewardDetailId}
</if>
<if test="chatActivityRewardId != null">
and chat_activity_reward_id = #{chatActivityRewardId}
</if>
<if test="chatActivityId != null">
and chat_activity_id = #{chatActivityId}
</if>
<if test="activityRewardId != null">
and activity_reward_id = #{activityRewardId}
</if>
<if test="memberId != null and memberId != ''">
and member_id = #{memberId}
</if>
<if test="rewardType != null">
and reward_type = #{rewardType}
</if>
<if test="rewardValue != null and rewardValue != ''">
and reward_value = #{rewardValue}
</if>
<if test="rewardName != null and rewardName != ''">
and reward_name = #{rewardName}
</if>
<if test="rewardRemark != null and rewardRemark != ''">
and reward_remark = #{rewardRemark}
</if>
<if test="rewardBusinessId != null and rewardBusinessId != ''">
and reward_business_id = #{rewardBusinessId}
</if>
<if test="successFlag != null">
and success_flag = #{successFlag}
</if>
<if test="enterpriseId != null and enterpriseId != ''">
and enterprise_id = #{enterpriseId}
</if>
<if test="wxEnterpriseId != null and wxEnterpriseId != ''">
and wx_enterprise_id = #{wxEnterpriseId}
</if>
<if test="createTime != null">
and create_time = #{createTime}
</if>
<if test="updateTime != null">
and update_time = #{updateTime}
</if>
<if test="deleteFlag != null">
and delete_flag = #{deleteFlag}
</if>
</where>
</select>
<!--新增所有列-->
<insert id="insert" keyProperty="chatActivityRewardDetailId" useGeneratedKeys="true">
insert into tab_haoban_group_chat_activity_reward_detail_log(
chat_activity_reward_detail_id,
chat_activity_reward_id,
chat_activity_id,
activity_reward_id,
member_id,
reward_type,
reward_value,
reward_name,
reward_remark,
reward_business_id,
success_flag,
enterprise_id,
wx_enterprise_id
)
values (
#{chatActivityRewardDetailId},
#{chatActivityRewardId},
#{chatActivityId},
#{activityRewardId},
#{memberId},
#{rewardType},
#{rewardValue},
#{rewardName},
#{rewardRemark},
#{rewardBusinessId},
#{successFlag},
#{enterpriseId},
#{wxEnterpriseId}
)
</insert>
<!--通过主键修改数据-->
<update id="update">
update tab_haoban_group_chat_activity_reward_detail_log
<set>
<if test="chatActivityRewardId != null">
chat_activity_reward_id = #{chatActivityRewardId},
</if>
<if test="chatActivityId != null">
chat_activity_id = #{chatActivityId},
</if>
<if test="activityRewardId != null">
activity_reward_id = #{activityRewardId},
</if>
<if test="memberId != null and memberId != ''">
member_id = #{memberId},
</if>
<if test="rewardType != null">
reward_type = #{rewardType},
</if>
<if test="rewardValue != null and rewardValue != ''">
reward_value = #{rewardValue},
</if>
<if test="rewardName != null and rewardName != ''">
reward_name = #{rewardName},
</if>
<if test="rewardRemark != null and rewardRemark != ''">
reward_remark = #{rewardRemark},
</if>
<if test="rewardBusinessId != null and rewardBusinessId != ''">
reward_business_id = #{rewardBusinessId},
</if>
<if test="successFlag != null">
success_flag = #{successFlag},
</if>
</set>
where chat_activity_reward_detail_id = #{chatActivityRewardDetailId}
</update>
<select id="queryList" resultMap="TabHaobanGroupChatActivityRewardDetailLogMap">
select
<include refid="Base_Column_List"></include>
from tab_haoban_group_chat_activity_reward_detail_log
where delete_flag = 0
<if test="rewardLogIdList != null">
and chat_activity_reward_id in
<foreach collection="rewardLogIdList" item="rewardLogId" separator="," open="(" close=")">
#{rewardLogId}
</foreach>
</if>
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gic.haoban.manage.service.dao.mapper.chat.GroupChatActivityRewardLogMapper">
<resultMap type="com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityRewardLog" id="TabHaobanGroupChatActivityRewardLogMap">
<result property="chatActivityRewardLogId" column="chat_activity_reward_log_id" jdbcType="INTEGER"/>
<result property="chatActivityId" column="chat_activity_id" jdbcType="INTEGER"/>
<result property="memberId" column="member_id" jdbcType="VARCHAR"/>
<result property="rewardInvite" column="reward_invite" jdbcType="INTEGER"/>
<result property="inviteLevel" column="invite_level" jdbcType="INTEGER"/>
<result property="enterpriseId" column="enterprise_id" jdbcType="VARCHAR"/>
<result property="wxEnterpriseId" column="wx_enterprise_id" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="deleteFlag" column="delete_flag" jdbcType="INTEGER"/>
</resultMap>
<sql id="Base_Column_List">
chat_activity_reward_log_id
, chat_activity_id,
member_id, reward_invite, invite_level,
enterprise_id, wx_enterprise_id,
create_time, update_time, delete_flag
</sql>
<!--查询单个-->
<select id="queryById" resultMap="TabHaobanGroupChatActivityRewardLogMap">
select chat_activity_reward_log_id, chat_activity_id, member_id, reward_invite, invite_level, enterprise_id, wx_enterprise_id, create_time, update_time, delete_flag
from tab_haoban_group_chat_activity_reward_log
where chat_activity_reward_log_id = #{chatActivityRewardLogId}
</select>
<!--查询指定行数据-->
<select id="queryAllByLimit" resultMap="TabHaobanGroupChatActivityRewardLogMap">
select
chat_activity_reward_log_id, chat_activity_id, member_id, reward_invite, invite_level, enterprise_id, wx_enterprise_id, create_time, update_time, delete_flag
from tab_haoban_group_chat_activity_reward_log
<where>
<if test="chatActivityRewardLogId != null">
and chat_activity_reward_log_id = #{chatActivityRewardLogId}
</if>
<if test="chatActivityId != null">
and chat_activity_id = #{chatActivityId}
</if>
<if test="memberId != null and memberId != ''">
and member_id = #{memberId}
</if>
<if test="rewardInvite != null">
and reward_invite = #{rewardInvite}
</if>
<if test="inviteLevel != null">
and invite_level = #{inviteLevel}
</if>
<if test="enterpriseId != null and enterpriseId != ''">
and enterprise_id = #{enterpriseId}
</if>
<if test="wxEnterpriseId != null and wxEnterpriseId != ''">
and wx_enterprise_id = #{wxEnterpriseId}
</if>
<if test="createTime != null">
and create_time = #{createTime}
</if>
<if test="updateTime != null">
and update_time = #{updateTime}
</if>
<if test="deleteFlag != null">
and delete_flag = #{deleteFlag}
</if>
</where>
limit #{pageable.offset}, #{pageable.pageSize}
</select>
<!--统计总行数-->
<select id="count" resultType="java.lang.Long">
select count(1)
from tab_haoban_group_chat_activity_reward_log
<where>
<if test="chatActivityRewardLogId != null">
and chat_activity_reward_log_id = #{chatActivityRewardLogId}
</if>
<if test="chatActivityId != null">
and chat_activity_id = #{chatActivityId}
</if>
<if test="memberId != null and memberId != ''">
and member_id = #{memberId}
</if>
<if test="rewardInvite != null">
and reward_invite = #{rewardInvite}
</if>
<if test="inviteLevel != null">
and invite_level = #{inviteLevel}
</if>
<if test="enterpriseId != null and enterpriseId != ''">
and enterprise_id = #{enterpriseId}
</if>
<if test="wxEnterpriseId != null and wxEnterpriseId != ''">
and wx_enterprise_id = #{wxEnterpriseId}
</if>
<if test="createTime != null">
and create_time = #{createTime}
</if>
<if test="updateTime != null">
and update_time = #{updateTime}
</if>
<if test="deleteFlag != null">
and delete_flag = #{deleteFlag}
</if>
</where>
</select>
<!--新增所有列-->
<insert id="insert" keyProperty="chatActivityRewardLogId" useGeneratedKeys="true">
insert into tab_haoban_group_chat_activity_reward_log(chat_activity_reward_log_id,chat_activity_id, member_id, reward_invite, invite_level, enterprise_id, wx_enterprise_id)
values (#{chatActivityRewardLogId},#{chatActivityId}, #{memberId}, #{rewardInvite}, #{inviteLevel}, #{enterpriseId}, #{wxEnterpriseId})
</insert>
<!--通过主键修改数据-->
<update id="update">
update tab_haoban_group_chat_activity_reward_log
<set>
<if test="chatActivityId != null">
chat_activity_id = #{chatActivityId},
</if>
<if test="memberId != null and memberId != ''">
member_id = #{memberId},
</if>
<if test="rewardInvite != null">
reward_invite = #{rewardInvite},
</if>
<if test="inviteLevel != null">
invite_level = #{inviteLevel},
</if>
<if test="enterpriseId != null and enterpriseId != ''">
enterprise_id = #{enterpriseId},
</if>
<if test="wxEnterpriseId != null and wxEnterpriseId != ''">
wx_enterprise_id = #{wxEnterpriseId},
</if>
</set>
where chat_activity_reward_log_id = #{chatActivityRewardLogId}
</update>
<!--通过主键删除-->
<delete id="deleteById">
delete
from tab_haoban_group_chat_activity_reward_log
where chat_activity_reward_log_id = #{chatActivityRewardLogId}
</delete>
<select id="queryList" resultMap="TabHaobanGroupChatActivityRewardLogMap">
select
<include refid="Base_Column_List"></include>
from tab_haoban_group_chat_activity_reward_log
where delete_flag = 0
<if test="enterpriseId != null and enterpriseId != ''">
and enterprise_id = #{enterpriseId}
</if>
<if test="chatActivityId != null">
and chat_activity_id = #{chatActivityId}
</if>
<if test="memberId != null and memberId != ''">
and member_id = #{memberId}
</if>
<if test="rewardInvite != null">
and reward_invite = #{rewardInvite}
</if>
<if test="beginTime != null">
and create_time &gt; #{beginTime}
</if>
<if test="endTime != null">
and create_time &lt; #{endTime}
</if>
order by create_time desc
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gic.haoban.manage.service.dao.mapper.chat.GroupChatActivityRewardMapper">
<resultMap type="com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityReward" id="TabHaobanGroupChatActivityRewardMap">
<result property="chatActivityRewardId" column="chat_activity_reward_id" jdbcType="INTEGER"/>
<result property="chatActivityId" column="chat_activity_id" jdbcType="INTEGER"/>
<result property="inviteNumber" column="invite_number" jdbcType="INTEGER"/>
<result property="inviteLevel" column="invite_level" jdbcType="INTEGER"/>
<result property="rewardInvite" column="reward_invite" jdbcType="INTEGER"/>
<result property="rewardType" column="reward_type" jdbcType="INTEGER"/>
<result property="limitReward" column="limit_reward" jdbcType="INTEGER"/>
<result property="rewardValue" column="reward_value" jdbcType="VARCHAR"/>
<result property="rewardName" column="reward_name" jdbcType="VARCHAR"/>
<result property="enterpriseId" column="enterprise_id" jdbcType="VARCHAR"/>
<result property="wxEnterpriseId" column="wx_enterprise_id" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="deleteFlag" column="delete_flag" jdbcType="INTEGER"/>
</resultMap>
<!--查询单个-->
<select id="queryById" resultMap="TabHaobanGroupChatActivityRewardMap">
select chat_activity_reward_id, chat_activity_id, invite_number, invite_level, reward_invite, reward_type, limit_reward, reward_value, reward_name, enterprise_id, wx_enterprise_id, create_time, update_time, delete_flag
from tab_haoban_group_chat_activity_reward
where chat_activity_reward_id = #{chatActivityRewardId}
</select>
<select id="queryByChatActivityIds" resultMap="TabHaobanGroupChatActivityRewardMap">
select chat_activity_reward_id, chat_activity_id, invite_number, invite_level, reward_invite, reward_type, limit_reward, reward_value, reward_name, enterprise_id, wx_enterprise_id, create_time, update_time, delete_flag
from tab_haoban_group_chat_activity_reward
where delete_flag = 0 and chat_activity_id in
<foreach collection="chatActivityIds" open="(" close=")" separator="," item="item">
#{item}
</foreach>
order by reward_invite asc,invite_level asc,reward_type asc
</select>
<!--查询指定行数据-->
<select id="queryAllByLimit" resultMap="TabHaobanGroupChatActivityRewardMap">
select
chat_activity_reward_id, chat_activity_id, invite_number, invite_level, reward_invite, reward_type, limit_reward, reward_value, reward_name, enterprise_id, wx_enterprise_id, create_time, update_time, delete_flag
from tab_haoban_group_chat_activity_reward
<where>
<if test="chatActivityRewardId != null">
and chat_activity_reward_id = #{chatActivityRewardId}
</if>
<if test="chatActivityId != null">
and chat_activity_id = #{chatActivityId}
</if>
<if test="inviteNumber != null">
and invite_number = #{inviteNumber}
</if>
<if test="inviteLevel != null">
and invite_level = #{inviteLevel}
</if>
<if test="rewardInvite != null">
and reward_invite = #{rewardInvite}
</if>
<if test="rewardType != null">
and reward_type = #{rewardType}
</if>
<if test="limitReward != null">
and limit_reward = #{limitReward}
</if>
<if test="rewardValue != null and rewardValue != ''">
and reward_value = #{rewardValue}
</if>
<if test="rewardName != null and rewardName != ''">
and reward_name = #{rewardName}
</if>
<if test="enterpriseId != null and enterpriseId != ''">
and enterprise_id = #{enterpriseId}
</if>
<if test="wxEnterpriseId != null and wxEnterpriseId != ''">
and wx_enterprise_id = #{wxEnterpriseId}
</if>
</where>
limit #{pageable.offset}, #{pageable.pageSize}
</select>
<!--统计总行数-->
<select id="count" resultType="java.lang.Long">
select count(1)
from tab_haoban_group_chat_activity_reward
<where>
<if test="chatActivityRewardId != null">
and chat_activity_reward_id = #{chatActivityRewardId}
</if>
<if test="chatActivityId != null">
and chat_activity_id = #{chatActivityId}
</if>
<if test="inviteNumber != null">
and invite_number = #{inviteNumber}
</if>
<if test="inviteLevel != null">
and invite_level = #{inviteLevel}
</if>
<if test="rewardInvite != null">
and reward_invite = #{rewardInvite}
</if>
<if test="rewardType != null">
and reward_type = #{rewardType}
</if>
<if test="limitReward != null">
and limit_reward = #{limitReward}
</if>
<if test="rewardValue != null and rewardValue != ''">
and reward_value = #{rewardValue}
</if>
<if test="rewardName != null and rewardName != ''">
and reward_name = #{rewardName}
</if>
<if test="enterpriseId != null and enterpriseId != ''">
and enterprise_id = #{enterpriseId}
</if>
<if test="wxEnterpriseId != null and wxEnterpriseId != ''">
and wx_enterprise_id = #{wxEnterpriseId}
</if>
</where>
</select>
<!--新增所有列-->
<insert id="insert" keyProperty="chatActivityRewardId" useGeneratedKeys="true">
insert into tab_haoban_group_chat_activity_reward(chat_activity_reward_id,chat_activity_id, invite_number, invite_level, reward_invite, reward_type, limit_reward, reward_value, reward_name, enterprise_id, wx_enterprise_id)
values (#{chatActivityRewardId},#{chatActivityId}, #{inviteNumber}, #{inviteLevel}, #{rewardInvite}, #{rewardType}, #{limitReward}, #{rewardValue}, #{rewardName}, #{enterpriseId}, #{wxEnterpriseId})
</insert>
<!--通过主键修改数据-->
<update id="update">
update tab_haoban_group_chat_activity_reward
<set>
<if test="chatActivityId != null">
chat_activity_id = #{chatActivityId},
</if>
<if test="inviteNumber != null">
invite_number = #{inviteNumber},
</if>
<if test="inviteLevel != null">
invite_level = #{inviteLevel},
</if>
<if test="rewardInvite != null">
reward_invite = #{rewardInvite},
</if>
<if test="rewardType != null">
reward_type = #{rewardType},
</if>
<if test="limitReward != null">
limit_reward = #{limitReward},
</if>
<if test="rewardValue != null and rewardValue != ''">
reward_value = #{rewardValue},
</if>
<if test="rewardName != null and rewardName != ''">
reward_name = #{rewardName},
</if>
<if test="enterpriseId != null and enterpriseId != ''">
enterprise_id = #{enterpriseId},
</if>
<if test="wxEnterpriseId != null and wxEnterpriseId != ''">
wx_enterprise_id = #{wxEnterpriseId},
</if>
</set>
where chat_activity_reward_id = #{chatActivityRewardId}
</update>
<!--通过主键删除-->
<delete id="deleteById">
update tab_haoban_group_chat_activity_reward set delete_flag = 1
where chat_activity_reward_id = #{chatActivityRewardId}
</delete>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gic.haoban.manage.service.dao.mapper.chat.GroupChatActivityShareBindMapper">
<resultMap type="com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityShareBind" id="TabHaobanGroupChatActivityShareBindMap">
<result property="chatActivityBindId" column="chat_activity_bind_id" jdbcType="INTEGER"/>
<result property="chatActivityId" column="chat_activity_id" jdbcType="INTEGER"/>
<result property="inviterMemberId" column="inviter_member_id" jdbcType="VARCHAR"/>
<result property="inviteeMemberId" column="invitee_member_id" jdbcType="VARCHAR"/>
<result property="inviteeUnionId" column="invitee_union_id" jdbcType="VARCHAR"/>
<result property="enterpriseId" column="enterprise_id" jdbcType="VARCHAR"/>
<result property="wxEnterpriseId" column="wx_enterprise_id" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="deleteFlag" column="delete_flag" jdbcType="INTEGER"/>
</resultMap>
<!--查询单个-->
<select id="queryById" resultMap="TabHaobanGroupChatActivityShareBindMap">
select chat_activity_bind_id, chat_activity_id, inviter_member_id, invitee_member_id, invitee_union_id, enterprise_id, wx_enterprise_id, create_time, update_time, delete_flag
from tab_haoban_group_chat_activity_share_bind
where chat_activity_bind_id = #{chatActivityBindId}
</select>
<select id="query24Record" resultMap="TabHaobanGroupChatActivityShareBindMap">
select chat_activity_bind_id, chat_activity_id, inviter_member_id, invitee_member_id, invitee_union_id, enterprise_id, wx_enterprise_id, create_time, update_time, delete_flag
from tab_haoban_group_chat_activity_share_bind
where delete_flag = 0
and invitee_union_id in
<foreach collection="inviteeUnionIds" open="(" close=")" separator="," item="item">
#{item}
</foreach>
and create_time > now() - interval 1 day
order by create_time desc
</select>
<!--查询指定行数据-->
<select id="queryAllByLimit" resultMap="TabHaobanGroupChatActivityShareBindMap">
select
chat_activity_bind_id, chat_activity_id, inviter_member_id, invitee_member_id, invitee_union_id, enterprise_id, wx_enterprise_id, create_time, update_time, delete_flag
from tab_haoban_group_chat_activity_share_bind
<where>
<if test="chatActivityBindId != null">
and chat_activity_bind_id = #{chatActivityBindId}
</if>
<if test="chatActivityId != null">
and chat_activity_id = #{chatActivityId}
</if>
<if test="inviterMemberId != null and inviterMemberId != ''">
and inviter_member_id = #{inviterMemberId}
</if>
<if test="inviteeMemberId != null and inviteeMemberId != ''">
and invitee_member_id = #{inviteeMemberId}
</if>
<if test="inviteeUnionId != null and inviteeUnionId != ''">
and invitee_union_id = #{inviteeUnionId}
</if>
<if test="enterpriseId != null and enterpriseId != ''">
and enterprise_id = #{enterpriseId}
</if>
<if test="wxEnterpriseId != null and wxEnterpriseId != ''">
and wx_enterprise_id = #{wxEnterpriseId}
</if>
</where>
limit #{pageable.offset}, #{pageable.pageSize}
</select>
<!--统计总行数-->
<select id="count" resultType="java.lang.Long">
select count(1)
from tab_haoban_group_chat_activity_share_bind
<where>
<if test="chatActivityBindId != null">
and chat_activity_bind_id = #{chatActivityBindId}
</if>
<if test="chatActivityId != null">
and chat_activity_id = #{chatActivityId}
</if>
<if test="inviterMemberId != null and inviterMemberId != ''">
and inviter_member_id = #{inviterMemberId}
</if>
<if test="inviteeMemberId != null and inviteeMemberId != ''">
and invitee_member_id = #{inviteeMemberId}
</if>
<if test="inviteeUnionId != null and inviteeUnionId != ''">
and invitee_union_id = #{inviteeUnionId}
</if>
<if test="enterpriseId != null and enterpriseId != ''">
and enterprise_id = #{enterpriseId}
</if>
<if test="wxEnterpriseId != null and wxEnterpriseId != ''">
and wx_enterprise_id = #{wxEnterpriseId}
</if>
</where>
</select>
<!--新增所有列-->
<!--新增所有列-->
<insert id="insert" keyProperty="chatActivityBindId" useGeneratedKeys="true">
insert into tab_haoban_group_chat_activity_share_bind(chat_activity_bind_id, chat_activity_id, inviter_member_id, invitee_member_id, invitee_union_id, enterprise_id,wx_enterprise_id)
values (#{chatActivityBindId}, #{chatActivityId}, #{inviterMemberId}, #{inviteeMemberId}, #{inviteeUnionId}, #{enterpriseId}, #{wxEnterpriseId})
</insert>
<!--通过主键修改数据-->
<update id="update">
update tab_haoban_group_chat_activity_share_bind
<set>
<if test="chatActivityId != null">
chat_activity_id = #{chatActivityId},
</if>
<if test="inviterMemberId != null and inviterMemberId != ''">
inviter_member_id = #{inviterMemberId},
</if>
<if test="inviteeMemberId != null and inviteeMemberId != ''">
invitee_member_id = #{inviteeMemberId},
</if>
<if test="inviteeUnionId != null and inviteeUnionId != ''">
invitee_union_id = #{inviteeUnionId},
</if>
<if test="enterpriseId != null and enterpriseId != ''">
enterprise_id = #{enterpriseId},
</if>
<if test="wxEnterpriseId != null and wxEnterpriseId != ''">
wx_enterprise_id = #{wxEnterpriseId},
</if>
</set>
where chat_activity_bind_id = #{chatActivityBindId}
</update>
<!--通过主键删除-->
<delete id="deleteById">
delete
from tab_haoban_group_chat_activity_share_bind
where chat_activity_bind_id = #{chatActivityBindId}
</delete>
</mapper>
...@@ -90,6 +90,16 @@ ...@@ -90,6 +90,16 @@
distinct(chat_hm_id) distinct(chat_hm_id)
from tab_haoban_group_chat_hm_relation where group_chat_id = #{groupChatId} and delete_flag = 0 from tab_haoban_group_chat_hm_relation where group_chat_id = #{groupChatId} and delete_flag = 0
</select> </select>
<select id="listChatHmByGroupChatIds" resultMap="result-map-tabHaobanGroupChatHmRelation">
select
<include refid="Base_Column_List" />
from tab_haoban_group_chat_hm_relation where group_chat_id in
<foreach collection="groupChatIds" open="(" close=")" item="item" separator=",">
#{item}
</foreach>
and delete_flag = 0 and status_flag = 1
</select>
<select id="getHmValidChatCount" resultType="com.gic.haoban.manage.service.pojo.bo.chat.GroupChatHmRelationBO"> <select id="getHmValidChatCount" resultType="com.gic.haoban.manage.service.pojo.bo.chat.GroupChatHmRelationBO">
......
...@@ -369,4 +369,14 @@ ...@@ -369,4 +369,14 @@
select wx_chat_id from tab_haoban_group_chat where enterprise_id=#{enterpriseId} and staff_id = #{staffId} and delete_flag=0 and chat_status != 4 and wx_chat_id_dk is not null select wx_chat_id from tab_haoban_group_chat where enterprise_id=#{enterpriseId} and staff_id = #{staffId} and delete_flag=0 and chat_status != 4 and wx_chat_id_dk is not null
</select> </select>
<select id="listByStaffIds" resultMap="result-map-tabHaobanGroupChat">
select
<include refid="Base_Column_List" />
from tab_haoban_group_chat where enterprise_id=#{enterpriseId} and delete_flag=0 and chat_status != 4
and staff_id in
<foreach collection="staffIds" open="(" close=")" item="item" separator=",">
#{item}
</foreach>
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -208,7 +208,17 @@ ...@@ -208,7 +208,17 @@
<select id="listAllChatUser" resultMap="result-map-tabHaobanGroupChatUser"> <select id="listAllChatUser" resultMap="result-map-tabHaobanGroupChatUser">
select <include refid="Base_Column_List" /> from tab_haoban_group_chat_user where group_chat_id = #{groupChatId} and wx_enterprise_id = #{wxEnterpriseId} and status_flag = 1 and delete_flag = 0 select <include refid="Base_Column_List" /> from tab_haoban_group_chat_user where group_chat_id = #{groupChatId} and wx_enterprise_id = #{wxEnterpriseId} and status_flag = 1 and delete_flag = 0
</select> </select>
<select id="listByUserId" resultMap="result-map-tabHaobanGroupChatUser">
select <include refid="Base_Column_List" /> from tab_haoban_group_chat_user
where enterprise_id = #{enterpriseId} and user_id = #{userId}
<if test="statusFlag != null ">
and status_flag = #{statusFlag}
</if>
and delete_flag = 0
order by join_time asc,chat_user_id asc
</select>
<select id="listByExternalUseridForMatch" resultMap="result-map-tabHaobanGroupChatUser"> <select id="listByExternalUseridForMatch" resultMap="result-map-tabHaobanGroupChatUser">
select <include refid="Base_Column_List" /> from tab_haoban_group_chat_user where user_id = #{externalUserid} select <include refid="Base_Column_List" /> from tab_haoban_group_chat_user where user_id = #{externalUserid}
and wx_enterprise_id = #{wxEnterpriseId} and enterprise_id = #{enterpriseId} and wx_enterprise_id = #{wxEnterpriseId} and enterprise_id = #{enterpriseId}
...@@ -337,4 +347,22 @@ ...@@ -337,4 +347,22 @@
and t2.status_flag = 1 and t2.status_flag = 1
</select> </select>
<select id="getByUnionId" resultMap="result-map-tabHaobanGroupChatUser">
select <include refid="Base_Column_List"/> from tab_haoban_group_chat_user where enterprise_id = #{enterpriseId}
and unionid = #{unionid} and status_flag = 1 and delete_flag = 0 order by create_time desc
</select>
<select id="listByUnionIdAndChatHmId" resultType="java.lang.Long">
select distinct chr.chat_hm_id
from tab_haoban_group_chat_hm_relation chr left join
tab_haoban_group_chat_user cu on chr.group_chat_id = cu.group_chat_id
where chr.enterprise_id = #{enterpriseId} and chr.delete_flag = 0 and chr.status_flag = 1
and chr.chat_hm_id in
<foreach collection="chatHmIdList" close=")" open="(" index="index" item="item" separator=",">
#{item}
</foreach>
and cu.unionid = #{unionid} and cu.status_flag = 1 and cu.delete_flag = 0
</select>
</mapper> </mapper>
\ No newline at end of file
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
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 org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.Date;
import java.util.List;
/**
* @author shangfeng
* @date 2024-10-08 14:46:55
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext-conf.xml"})
public class GroupChatInviteActivityTest {
@Autowired
private GroupChatActivityLogApiService groupChatActivityLogApiService;
@Test
public void queryMaxBatchInviteLog(){
GroupChatActivityInviteLogQDTO inviteLogQDTO = new GroupChatActivityInviteLogQDTO();
inviteLogQDTO.setEnterpriseId("ff8080815dacd3a2015dacd3ef5c0000");
inviteLogQDTO.setChatActivityId(716721754221821953L);
// inviteLogQDTO.setInviteType(1);
inviteLogQDTO.setSortFiled("create_time");
inviteLogQDTO.setSortType("desc");
inviteLogQDTO.setInviterMemberId("ff808081906def5201907645bfc7005a");
ServiceResponse<List<GroupChatActivityInviteLogDTO>> listServiceResponse = groupChatActivityLogApiService.queryMaxBatchInviteLog(inviteLogQDTO);
System.out.println(listServiceResponse.getResult());
}
@Test
public void queryInviteLogDetails(){
GroupChatActivityInviteLogQDTO inviteLogQDTO = new GroupChatActivityInviteLogQDTO();
inviteLogQDTO.setEnterpriseId("ff8080815dacd3a2015dacd3ef5c0000");
inviteLogQDTO.setChatActivityId(719939940078608608L);
inviteLogQDTO.setInviterMemberId("ff808081906def5201907645bfc7005a");
inviteLogQDTO.setBeginTime(new Date());
inviteLogQDTO.setEndTime(new Date());
inviteLogQDTO.setSortFiled("create_time");
inviteLogQDTO.setSortType("desc");
ServiceResponse<Page<GroupChatActivityInviteLogDTO>> listServiceResponse = groupChatActivityLogApiService.queryInviteLogDetails(inviteLogQDTO);
System.out.println(listServiceResponse.getResult());
}
@Test
public void queryRewardLogDetails(){
GroupChatActivityRewardLogQDTO inviteLogQDTO = new GroupChatActivityRewardLogQDTO();
inviteLogQDTO.setEnterpriseId("ff8080815dacd3a2015dacd3ef5c0000");
inviteLogQDTO.setChatActivityId(719939940078608608L);
inviteLogQDTO.setMemberId("ff808081906def5201907645bfc7005a");
ServiceResponse<Page<GroupChatActivityRewardLogDTO>> listServiceResponse = groupChatActivityLogApiService.queryRewardLogDetails(inviteLogQDTO);
System.out.println(listServiceResponse.getResult());
}
}
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.content.api.qdto.activity.ContentActivityQDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityHmDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityRewardDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityRewardDetailDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatHmDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityHmQDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityJoinQDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityQDTO;
import com.gic.haoban.manage.api.service.chat.GroupChatActivityApiService;
import com.gic.haoban.manage.api.service.chat.GroupChatActivityShareApiService;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatActivityBaseContext;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatActivityContext;
import com.gic.haoban.manage.service.service.chat.GroupChatActivityInviteLogService;
import com.gic.haoban.manage.service.service.chat.GroupChatActivityRewardLogService;
import com.gic.haoban.manage.service.service.chat.GroupChatActivityService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.*;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext-conf.xml"})
public class GroupChatTest {
private static Logger logger = LoggerFactory.getLogger(GroupChatTest.class);
@Autowired
private GroupChatActivityApiService groupChatActivityApiService;
@Autowired
private GroupChatActivityService groupChatActivityService;
@Autowired
private GroupChatActivityShareApiService groupChatActivityShareApiService;
@Autowired
private GroupChatActivityInviteLogService groupChatActivityInviteLogService;
@Test
public void saveActivity() throws Exception{
GroupChatActivityQDTO qdto = new GroupChatActivityQDTO();
qdto.setActivityName("测试活动2");
qdto.setStartDate(new Date("2024/10/11"));
qdto.setEndDate(new Date("2025/10/10"));
qdto.setActivityImg("123");
qdto.setActivityInviteImg("123");
qdto.setActivityDesc("123");
qdto.setActivityShareTitle("123");
qdto.setActivityShareImg("123");
qdto.setActivityPosterImg("123");
qdto.setInviteRewardType(2);
qdto.setJoinType(2);
// qdto.setJoinRule();
qdto.setJoinChatHmId(709467854075881635L);
qdto.setInviteType(1);
qdto.setInviteMemberType(1);
qdto.setLabelFlag(0);
// qdto.setLabelJson();
qdto.setExceptionNotice(0);
qdto.setExceptionNoticeNum(0);
qdto.setEnterpriseId("ff8080815dacd3a2015dacd3ef5c0000");
qdto.setWxEnterpriseId("ca66a01b79474c40b3e7c7f93daf1a3b");
qdto.setCreatorId("fefd1c81641711e69d0818c58a146fd2");
qdto.setCreatorName("达摩管理");
List<GroupChatActivityRewardDTO> rewardList = new ArrayList<>();
GroupChatActivityRewardDTO rewardDTO = new GroupChatActivityRewardDTO();
rewardDTO.setInviteNumber(1);
rewardDTO.setInviteLevel(1);
rewardDTO.setRewardInvite(1);
rewardDTO.setLimitReward(3);
Map<Integer, List<GroupChatActivityRewardDTO>> rewardMap = new HashMap<>();
List<GroupChatActivityRewardDetailDTO> detailList = new ArrayList<>();
GroupChatActivityRewardDetailDTO rewardDetail = new GroupChatActivityRewardDetailDTO();
rewardDetail.setRewardType(1);
rewardDetail.setRewardValue("2");
rewardDetail.setRewardName("2积分");
detailList.add(rewardDetail);
rewardDTO.setDetailList(detailList);
rewardList.add(rewardDTO);
rewardMap.put(1, rewardList);
rewardDTO = new GroupChatActivityRewardDTO();
rewardDTO.setInviteNumber(1);
rewardDTO.setInviteLevel(1);
rewardDTO.setRewardInvite(2);
rewardDTO.setLimitReward(1);
List<GroupChatActivityRewardDetailDTO> detailList2 = new ArrayList<>();
GroupChatActivityRewardDetailDTO rewardDetail2 = new GroupChatActivityRewardDetailDTO();
rewardDetail2.setRewardType(1);
rewardDetail2.setRewardValue("8");
rewardDetail2.setRewardName("8积分");
detailList2.add(rewardDetail2);
rewardDTO.setDetailList(detailList2);
rewardList.add(rewardDTO);
rewardMap.put(2, rewardList);
qdto.setRewardMap(rewardMap);
List<GroupChatActivityJoinQDTO> joinList = new ArrayList<>();
GroupChatActivityJoinQDTO join = new GroupChatActivityJoinQDTO();
join.setMemberType(0);
join.setFilterJson("");
join.setFilterJsonView("");
join.setIndex(2);
join.setChatHmId(709467854075881635L);
joinList.add(join);
qdto.setJoinList(joinList);
join = new GroupChatActivityJoinQDTO();
join.setMemberType(0);
join.setFilterJson("");
join.setFilterJsonView("");
join.setIndex(1);
join.setChatHmId(709467854075881635L);
joinList.add(join);
qdto.setJoinList(joinList);
ServiceResponse<Long> response = groupChatActivityApiService.saveActivity(qdto);
System.out.println(JSONObject.toJSONString(response));
}
@Test
public void saveActivity2() throws Exception{
String s = "{\"activityDesc\":\"亲爱的用户,为了回馈大家对我们社群的支持,我们推出了邀请有礼活动!只需邀请好友加入我们的社群,您和好友都有机会获得丰厚奖励!\\n\\n活动规则:\\n\\n邀请方式:分享专属邀请链接,好友通过链接成功加入社群后即算有效邀请。\\n奖励机制:\\n成功邀请1名好友,即获【XX奖励】。\\n成功邀请3名好友,即获【XX奖励】。\\n成功邀请5名好友及以上,还有机会赢取神秘大礼!\\n活动时间:XX年XX月XX日至XX年XX月XX日。\\n快来邀请你的好友们一起加入吧!更多好友,更多奖励,等你来拿!\",\"activityImg\":\"https://platform-1251519181.cos.ap-shanghai.myqcloud.com/image/communityImgs/activity_img.png\",\"activityInviteImg\":\"https://platform-1251519181.cos.ap-shanghai.myqcloud.com/image/communityImgs/invite_img.png\",\"activityName\":\"邀请好友,共享好礼!定向\",\"activityPosterImg\":\"https://platform-1251519181.cos.ap-shanghai.myqcloud.com/image/communityImgs/poster_img.png\",\"activityShareImg\":\"https://platform-1251519181.cos.ap-shanghai.myqcloud.com/image/communityImgs/share_card.png\",\"activityShareTitle\":\"进群获取奖励,快来和我一起参加吧\",\"chatActivityId\":720266914303074307,\"creatorId\":\"fefd1c81641711e69d0818c58a146fd2\",\"creatorName\":\"达摩管理\",\"endDate\":1730390399000,\"enterpriseId\":\"ff8080815dacd3a2015dacd3ef5c0000\",\"exceptionNotice\":0,\"inviteMemberType\":0,\"inviteRewardType\":2,\"inviteType\":0,\"joinChatHmId\":640618380658762018,\"joinList\":[{\"chatActivityId\":720266914303074307,\"chatActivityJoinId\":720266914529566729,\"chatHmId\":640618380658762018,\"filterJson\":\"{\\\"list\\\":[{\\\"type\\\":\\\"or\\\",\\\"list\\\":[{\\\"type\\\":\\\"data\\\",\\\"data\\\":{\\\"key\\\":\\\"costTimes\\\",\\\"compute\\\":\\\"=\\\",\\\"value\\\":\\\"10\\\"}}]}],\\\"type\\\":\\\"and\\\"}\",\"filterJsonView\":\"\",\"index\":1,\"memberType\":0},{\"chatActivityId\":720266914303074307,\"chatActivityJoinId\":720266914630230026,\"chatHmId\":719956093060538621,\"filterJson\":\"0bead493b5454f339dce99127a43fd9b\",\"filterJsonView\":\"\",\"index\":2,\"memberType\":1},{\"chatActivityId\":720266914303074307,\"chatActivityJoinId\":720266914705727499,\"chatHmId\":720265997814095873,\"filterJson\":\"\",\"filterJsonView\":\"\",\"index\":3,\"memberType\":0}],\"joinRule\":\"[{\\\"openFlag\\\":0,\\\"val\\\":1},{\\\"openFlag\\\":0,\\\"val\\\":2},{\\\"openFlag\\\":0,\\\"val\\\":3},{\\\"openFlag\\\":0,\\\"val\\\":4}]\",\"joinType\":2,\"labelFlag\":1,\"labelJson\":\"{\\\"id\\\":\\\"10678a05583047a2836a43852c5d6123\\\",\\\"name\\\":\\\"7777\\\"}\",\"rewardMap\":{\"1\":[{\"chatActivityId\":720266914303074307,\"detailList\":[{\"chatActivityRewardId\":720266914449874950,\"rewardName\":\"[{\\\"name\\\":\\\"3积分\\\"}]\",\"rewardType\":1,\"rewardValue\":\"3\"},{\"chatActivityRewardId\":720266914458263559,\"rewardName\":\"[{\\\"name\\\":\\\"3成长值\\\"}]\",\"rewardType\":2,\"rewardValue\":\"3\"},{\"chatActivityRewardId\":720266914466652168,\"rewardName\":\"[{\\\"id\\\":\\\"ff8080818edf6b8b018ee07e6b53001f\\\",\\\"name\\\":\\\"子管理创建\\\",\\\"status\\\":0}]\",\"rewardType\":3,\"rewardValue\":\"ff8080818edf6b8b018ee07e6b53001f\"}],\"inviteLevel\":1,\"inviteNumber\":1,\"limitReward\":1,\"rewardInvite\":1},{\"chatActivityId\":720266914303074307,\"detailList\":[{\"chatActivityRewardId\":720266914449874950,\"rewardName\":\"[{\\\"name\\\":\\\"3积分\\\"}]\",\"rewardType\":1,\"rewardValue\":\"3\"},{\"chatActivityRewardId\":720266914458263559,\"rewardName\":\"[{\\\"name\\\":\\\"3成长值\\\"}]\",\"rewardType\":2,\"rewardValue\":\"3\"},{\"chatActivityRewardId\":720266914466652168,\"rewardName\":\"[{\\\"id\\\":\\\"ff8080818edf6b8b018ee07e6b53001f\\\",\\\"name\\\":\\\"子管理创建\\\",\\\"status\\\":0}]\",\"rewardType\":3,\"rewardValue\":\"ff8080818edf6b8b018ee07e6b53001f\"}],\"inviteLevel\":2,\"inviteNumber\":2,\"limitReward\":1,\"rewardInvite\":1},{\"chatActivityId\":720266914303074307,\"detailList\":[{\"chatActivityRewardId\":720266914449874950,\"rewardName\":\"[{\\\"name\\\":\\\"3积分\\\"}]\",\"rewardType\":1,\"rewardValue\":\"3\"},{\"chatActivityRewardId\":720266914458263559,\"rewardName\":\"[{\\\"name\\\":\\\"3成长值\\\"}]\",\"rewardType\":2,\"rewardValue\":\"3\"},{\"chatActivityRewardId\":720266914466652168,\"rewardName\":\"[{\\\"id\\\":\\\"ff8080818edf6b8b018ee07e6b53001f\\\",\\\"name\\\":\\\"子管理创建\\\",\\\"status\\\":0}]\",\"rewardType\":3,\"rewardValue\":\"ff8080818edf6b8b018ee07e6b53001f\"}],\"inviteLevel\":3,\"inviteNumber\":3,\"limitReward\":1,\"rewardInvite\":1}]},\"startDate\":1729180800000,\"wxEnterpriseId\":\"b18ffdc9d0644912865a248859914d80\"}";
groupChatActivityService.saveActivity(JSONObject.parseObject(s,GroupChatActivityQDTO.class));
}
@Test
public void listGroupChatHm() throws Exception{
GroupChatActivityHmQDTO groupChatActivityHmQDTO = new GroupChatActivityHmQDTO();
groupChatActivityHmQDTO.setChatActivityId(716721754221821953L);
groupChatActivityHmQDTO.setInviterMemberId("ff808081906def5201907645bfc7005a");
groupChatActivityHmQDTO.setInviteeMemberId("ff8080818215878101821949a845003c");
groupChatActivityHmQDTO.setInviteeUnionId("123456");
groupChatActivityHmQDTO.setEnterpriseId("ff8080815dacd3a2015dacd3ef5c0000");
groupChatActivityHmQDTO.setDistrictCode("330100");
groupChatActivityHmQDTO.setLatitude("30.247100");
groupChatActivityHmQDTO.setLongitude("120.209000");
groupChatActivityHmQDTO.setSkipArea(false);
ServiceResponse<List<GroupChatActivityHmDTO>> listServiceResponse = groupChatActivityShareApiService.listGroupChatHm(groupChatActivityHmQDTO);
System.out.println(JSONObject.toJSONString(listServiceResponse));
}
@Test
public void groupChatInviteMQ() throws Exception{
// groupChatActivityInviteLogService.groupChatInviteMQ("ff8080815dacd3a2015dacd3ef5c0000","123456",717384135185809471L);
}
@Test
public void dealRewardAndSaveLog() throws Exception{
GroupChatActivityBaseContext context = new GroupChatActivityBaseContext();
context.setChatUserId(717384135185809471L);
context.setChatActivityId(716721754221821953L);
context.setInviterMemberId("ff808081906def5201907645bfc7005a");
context.setEnterpriseId("ff8080815dacd3a2015dacd3ef5c0000");
groupChatActivityInviteLogService.groupChatInvite(context);
}
}
import cn.hutool.core.io.FileUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.JSONResponse;
import com.gic.haoban.manage.api.dto.WxEnterpriseQwDTO;
import com.gic.haoban.manage.api.qdto.combined.CombinedQDTO;
import com.gic.haoban.manage.service.context.combined.ImageCombined;
import com.gic.haoban.manage.service.service.MaterialService;
import com.gic.haoban.manage.service.service.WxEnterpriseService;
import com.gic.wechat.api.enums.QywxMediaTypeEnum;
import com.gic.wechat.api.service.qywx.QywxSuiteApiService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.List;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicLong;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext-conf.xml"})
public class QWmediaTest {
private static Logger logger = LoggerFactory.getLogger(QWmediaTest.class);
@Autowired
private QywxSuiteApiService qywxSuiteApiService ;
@Autowired
private WxEnterpriseService wxEnterpriseService;
@Autowired
private MaterialService materialService;
private static final String LARGE_IMAGE_URL = "https://jhdm-1251519181.cos.ap-shanghai.myqcloud.com/image/material_content-4582434f589b494aa4f27df6e3aa3770.png?imageView2/2/w/1080/h/10800/format/jpg";
private static final String QR_CODE_URL = "https://gicinner-1251519181.cos.ap-shanghai.myqcloud.com/image/material_content-4ffc77073ca1476fb264bf1be9f11383.png";
private static final String STORE_NAME = "门店CCA";
private static final String GUIDE_NAME = "宇智222";
@Test
public void test() throws Exception{
CombinedQDTO combinedQDTO = new CombinedQDTO();
combinedQDTO.setImageUrl(LARGE_IMAGE_URL);
combinedQDTO.setQrCodeUrl(QR_CODE_URL);
combinedQDTO.setShowStyle(1);
combinedQDTO.setLineOne(STORE_NAME);
combinedQDTO.setLineTwo(GUIDE_NAME);
JSONResponse json = materialService.getMaterialIdByCombined("b18ffdc9d0644912865a248859914d80", combinedQDTO);
System.out.println(JSON.toJSONString(json));
}
public static void main(String[] args) {
int TOTAL_REQUESTS = 1800; // 总请求数
List<String> list = FileUtil.readLines("/Users/wang/Downloads/image.txt", "UTF-8");
List<String> qrList = FileUtil.readLines("/Users/wang/Downloads/qrcode.txt", "UTF-8");
ExecutorService executorService = Executors.newFixedThreadPool(30); // 创建线程池
Semaphore semaphore = new Semaphore(30); // 限制并发请求数为30
// 用于统计请求耗时
AtomicLong totalTime = new AtomicLong(0);
AtomicLong maxTime = new AtomicLong(0);
AtomicLong minTime = new AtomicLong(Long.MAX_VALUE);
for (int i = 0; i < TOTAL_REQUESTS; i++) {
final int imageId = i % 9;
final int qrId = i / 9;
executorService.submit(() -> {
long startTime = System.currentTimeMillis();
try {
semaphore.acquire(); // 获取许可,控制并发请求
JSONObject jo = new JSONObject();
jo.put("wxEnterpriseId", "b18ffdc9d0644912865a248859914d80");
jo.put("qrCodeUrl", "https://gicinner-1251519181.cos.ap-shanghai.myqcloud.com/image/material_content-4ffc77073ca1476fb264bf1be9f11383.png");
jo.put("showStyle", "0");
jo.put("lineOne", "门店CCA");
jo.put("lineTwo", "宇智222为您推荐");
jo.put("mediaType", 1);
jo.put("imageUrl", list.get(imageId));
jo.put("qrCodeUrl", qrList.get(qrId));
HttpResponse execute = HttpRequest.post("https://www.gicdev.com/haoban-manage3-wx/combined-qw-materialid.json").timeout(-1).body(jo.toJSONString()).execute();
String body = execute.body();
String headerValue = execute.header("x-request-id");
// String post = HttpUtil.post("https://www.gicdev.com/haoban-manage3-wx/combined-qw-materialid.json", jo.toJSONString());
System.out.println(body);
System.out.println(headerValue);
} catch (Exception e) {
System.out.println("异常: " + e.getMessage());
} finally {
long duration = System.currentTimeMillis() - startTime;
System.out.println(duration);
totalTime.addAndGet(duration);
maxTime.updateAndGet(x -> Math.max(x, duration));
minTime.updateAndGet(x -> Math.min(x, duration));
semaphore.release(); // 释放许可
}
});
}
executorService.shutdown(); // 关闭线程池
// 打印统计信息
try {
if (!executorService.awaitTermination(1, TimeUnit.MINUTES)) {
executorService.shutdownNow(); // 强制关闭
}
} catch (InterruptedException e) {
executorService.shutdownNow();
}
long averageTime = totalTime.get() / TOTAL_REQUESTS;
System.out.println("完成所有请求");
System.out.println("平均耗时: " + averageTime + " ms");
System.out.println("最大耗时: " + maxTime.get() + " ms");
System.out.println("最小耗时: " + (minTime.get() == Long.MAX_VALUE ? 0 : minTime.get()) + " ms");
}
}
...@@ -216,6 +216,11 @@ ...@@ -216,6 +216,11 @@
<artifactId>gic-marketing-api</artifactId> <artifactId>gic-marketing-api</artifactId>
<version>${gic-marketing-api}</version> <version>${gic-marketing-api}</version>
</dependency> </dependency>
<dependency>
<groupId>com.gic</groupId>
<artifactId>gic-member-tag-api</artifactId>
<version>${gic-member-tag-api}</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
package com.gic.haoban.manage.web.controller.chat;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.BasePageInfo;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.clerk.api.dto.AuthorizedUser;
import com.gic.commons.util.EntityUtil;
import com.gic.commons.util.PageHelperUtils;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.enterprise.api.service.EnterpriseWxaLinkService;
import com.gic.haoban.base.api.common.pojo.dto.WebLoginDTO;
import com.gic.haoban.common.utils.AuthWebRequestUtil;
import com.gic.haoban.manage.api.dto.chat.*;
import com.gic.haoban.manage.api.dto.qdto.chat.ChatHmSearchQDTO;
import com.gic.haoban.manage.api.enums.chat.ChatActivityRewardEnum;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityQDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivitySearchQDTO;
import com.gic.haoban.manage.api.service.chat.GroupChatActivityApiService;
import com.gic.haoban.manage.api.service.chat.GroupChatHmApiService;
import com.gic.haoban.manage.web.log.LogRecordAfterGroupChatActivityServiceImpl;
import com.gic.haoban.manage.web.log.LogRecordUserServiceImpl;
import com.gic.haoban.manage.web.qo.chat.GroupChatActivitySaveQO;
import com.gic.haoban.manage.web.qo.chat.GroupChatActivitySearchQO;
import com.gic.haoban.manage.web.utils.CreatorUtils;
import com.gic.haoban.manage.web.vo.MemberLabelVO;
import com.gic.haoban.manage.web.vo.MemberTagGroupVO;
import com.gic.haoban.manage.web.vo.chat.GroupChatActivityVO;
import com.gic.haoban.manage.web.vo.chat.GroupChatHmVO;
import com.gic.log.record.anno.GicLogRecord;
import com.gic.log.record.util.GicLogRecordCategoryEnum;
import com.gic.log.record.util.GicLogRecordEvaluationContext;
import com.gic.log.record.util.GicLogRecordOptTypeEnum;
import com.gic.marketing.api.dto.card.CardStockAndInvalidDTO;
import com.gic.marketing.api.service.CouponCardService;
import com.gic.member.tag.api.dto.MemberTagDTO;
import com.gic.member.tag.api.dto.MemberTagGroupDTO;
import com.gic.member.tag.api.dto.MemberTagItemDTO;
import com.gic.member.tag.api.service.MemberTagApiService;
import com.gic.member.tag.api.service.MemberTagGroupApiService;
import com.gic.web.common.utils.SessionContextUtils;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.*;
import java.util.stream.Collectors;
/**
* 社群活动
*/
@RestController
@RequestMapping("/chat")
public class GroupChatActivityController {
private static Logger logger = LogManager.getLogger(GroupChatActivityController.class);
@Autowired
private GroupChatActivityApiService groupChatActivityApiService;
@Autowired
private CouponCardService couponCardService;
@Autowired
private MemberTagGroupApiService memberTagGroupService;
@Autowired
private GroupChatHmApiService groupChatHmApiService;
@Autowired
private EnterpriseWxaLinkService enterpriseWxaLinkService ;
@Autowired
private MemberTagApiService memberTagApiService;
/**
* 社群活动分页查询
*
* @param search search
* @return RestResponse
*/
@RequestMapping("/page-activity")
@ResponseBody
public RestResponse<Page<GroupChatActivityVO>> queryByPage(@RequestBody GroupChatActivitySearchQO search) {
WebLoginDTO user = AuthWebRequestUtil.getLoginUser();
List<String> creatorIdList = CreatorUtils.getCreatorIdList(search.getShowSelfFlag());
GroupChatActivitySearchQDTO activitySearchQDTO = EntityUtil.changeEntityNew(GroupChatActivitySearchQDTO.class, search);
activitySearchQDTO.setCreatorIdList(creatorIdList);
activitySearchQDTO.setWxEnterpriseId(user.getWxEnterpriseId());
BasePageInfo basePageInfo = search.getBasePageInfo();
ServiceResponse<Page<GroupChatActivityDTO>> response = groupChatActivityApiService.pageActivity(user.getEnterpriseId(),activitySearchQDTO,basePageInfo);
if (!response.isSuccess()) {
return RestResponse.failure(response.getCode(), response.getMessage());
}
Page<GroupChatActivityDTO> result = response.getResult();
Page<GroupChatActivityVO> ret = PageHelperUtils.changePageToCurrentPage(result, GroupChatActivityVO.class);
return RestResponse.successResult(ret);
}
/**
* 社群活动详情查询
*
* @param chatActivityId 主键ID
* @return RestResponse
*/
@RequestMapping("detail-activity")
@ResponseBody
public RestResponse<GroupChatActivityVO> detailActivity(Long chatActivityId) {
WebLoginDTO user = AuthWebRequestUtil.getLoginUser();
ServiceResponse<GroupChatActivityDTO> response = groupChatActivityApiService.getActivityDetail(user.getEnterpriseId(),chatActivityId);
if (!response.isSuccess()) {
return RestResponse.failure(response.getCode(), response.getMessage());
}
GroupChatActivityVO result = EntityUtil.changeEntityNew(GroupChatActivityVO.class, response.getResult());
buildActivityExtend(result);
return RestResponse.successResult(result);
}
private void buildActivityExtend(GroupChatActivityVO activityVO) {
if (activityVO == null) {
return;
}
List<Long> hmIdList = new ArrayList<>();
Long joinChatHmId = activityVO.getJoinChatHmId();
if (joinChatHmId != null) {
hmIdList.add(joinChatHmId);
}
//构建卡券map
List<String> couponIdList = GroupChatActivityRewardBaseDTO.mapConvert(activityVO.getRewardMap()).stream()
.filter(x -> Objects.equals(x.getRewardType(), ChatActivityRewardEnum.COUPON.value))
.map(GroupChatActivityRewardBaseDTO::getRewardValue)
.flatMap(rewardValue -> Arrays.stream(rewardValue.split(",")))
.distinct().collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(couponIdList)) {
Map<String, CardStockAndInvalidDTO> couponMap = couponCardService.getCardInvalidList(couponIdList);
activityVO.setCouponMap(couponMap);
}
//构建会员分组map
List<Map<String, Object>> memberWeightViewList = Lists.newArrayList();
List<GroupChatActivityJoinDTO> joinList = activityVO.getJoinList();
if (CollectionUtils.isNotEmpty(joinList)) {
for (GroupChatActivityJoinDTO joinDTO : joinList) {
Map<String, Object> memberWeightView = Maps.newHashMap();
Integer memberType = joinDTO.getMemberType();
// 会员信息
if (Objects.equals(memberType,0)) {
// 查询人群筛选器搜索条件主键ID
memberWeightView.put("searchId", "GROUP_CHAT_SEARCH_ID_" + joinDTO.getChatActivityId() + "-" + joinDTO.getIndex());
} else if (Objects.equals(memberType,1)) {
// 会员分组
memberWeightView.put("tagGroupList", listMemberTagGroupInfoByGroupIds(joinDTO.getFilterJson()));
}
memberWeightViewList.add(memberWeightView);
activityVO.setMemberWeightViewList(memberWeightViewList);
Long chatHmId = joinDTO.getChatHmId();
if (chatHmId != null) {
hmIdList.add(chatHmId);
}
}
}
//构建活码map
if (CollectionUtils.isNotEmpty(hmIdList)) {
ChatHmSearchQDTO hmSearchQDTO = new ChatHmSearchQDTO();
hmSearchQDTO.setEnterpriseId(activityVO.getEnterpriseId());
hmSearchQDTO.setWxEnterpriseId(activityVO.getWxEnterpriseId());
hmSearchQDTO.setChatHmIdList(hmIdList);
BasePageInfo basePageInfo = new BasePageInfo();
basePageInfo.setPageNum(1);
basePageInfo.setPageSize(1000);
ServiceResponse<Page<GroupChatHmDTO>> pageResp = this.groupChatHmApiService.listPage(hmSearchQDTO, basePageInfo);
if (pageResp.isSuccess() && pageResp.getResult() != null && CollectionUtils.isNotEmpty(pageResp.getResult().getResult())) {
List<GroupChatHmDTO> chatHmList = pageResp.getResult().getResult();
Map<String, GroupChatHmVO> chatHmMap = chatHmList.stream().map(x -> EntityUtil.changeEntityNew(GroupChatHmVO.class, x))
.collect(Collectors.toMap(k -> String.valueOf(k.getChatHmId()), v -> v, (e, x) -> e));
activityVO.setChatHmMap(chatHmMap);
}
}
//构建标签回显
String labelJson = activityVO.getLabelJson();
if (StringUtils.isNotBlank(labelJson)) {
String id = JSONObject.parseObject(labelJson).getString("id");
List<MemberLabelVO> memberLabelList = getMemberLabelList(id);
if (CollectionUtils.isNotEmpty(memberLabelList)) {
Map<String, MemberLabelVO> labelMap = memberLabelList.stream().collect(Collectors.toMap(MemberLabelVO::getLabelValueId, v -> v, (e, x) -> e));
activityVO.setLabelMap(labelMap);
}
}
}
public List<MemberTagGroupVO> listMemberTagGroupInfoByGroupIds(String tagGroupIds) {
List<MemberTagGroupVO> result = new ArrayList<>();
if (StringUtils.isBlank(tagGroupIds)) {
return result;
}
String[] tagGroupIdArr = tagGroupIds.split(",");
if (ArrayUtils.isEmpty(tagGroupIdArr)) {
return result;
}
List<MemberTagGroupDTO> memberTagGroupDTOList = memberTagGroupService.findListByIds(
new ArrayList<>(Arrays.asList(tagGroupIdArr)));
if (CollectionUtils.isNotEmpty(memberTagGroupDTOList)) {
for (MemberTagGroupDTO memberTagGroupDTO : memberTagGroupDTOList) {
MemberTagGroupVO memberTagGroupVO = new MemberTagGroupVO();
memberTagGroupVO.setGroupName(memberTagGroupDTO.getGroupName());
memberTagGroupVO.setMemberTagGroupId(memberTagGroupDTO.getMemberTagGroupId());
memberTagGroupVO.setEffectiveStatus(memberTagGroupDTO.getEffectiveStatus());
memberTagGroupVO.setIsRealTime(memberTagGroupDTO.getIsRealTime());
memberTagGroupVO.setFixedType(memberTagGroupDTO.getFixedType());
result.add(memberTagGroupVO);
}
}
return result;
}
private List<MemberLabelVO> getMemberLabelList(String memberTags) {
if (StringUtils.isBlank(memberTags)) {
return null;
}
List<String> list = new ArrayList<>();
String[] arr = memberTags.split(",");
for (int i = 0; i < arr.length; i++) {
String s = arr[i];
if (StringUtils.isNotBlank(s)) {
list.add(s);
}
}
List<MemberLabelVO> memberLabelVOList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(list)) {
for (String memberLabelId : list) {
MemberTagItemDTO tagItem = this.memberTagApiService.findMemberTagItem(memberLabelId);
if (null != tagItem) {
String tagId = tagItem.getTagId();
MemberTagDTO tag = this.memberTagApiService.getMemberTagById(tagId);
MemberLabelVO vo = new MemberLabelVO();
vo.setLabelName(tag.getTagName());
vo.setLabelValueName(tagItem.getTagItemName());
vo.setLabelValueStatus(tagItem.getStatus());
if(tagItem.getStatus()!=0) {
vo.setLabelValueStatus(1);
}
vo.setLabelValueId(memberLabelId);
vo.setLabelId(tagId);
memberLabelVOList.add(vo);
}
}
}
return memberLabelVOList;
}
/**
* 社群活动终止
*
* @param chatActivityId 主键ID
* @return RestResponse
*/
@RequestMapping("stop-activity")
@ResponseBody
@GicLogRecord(value = "【${#activityName}+${#chatActivityId}】活动被终止"
, category = GicLogRecordCategoryEnum.HB_QHM_ACTIVITY
, optType = GicLogRecordOptTypeEnum.HB_1005_03
, optPage = "营销-社群营销-社群邀请有礼"
, userFunc = LogRecordUserServiceImpl.class)
public RestResponse<Void> stopActivity(Long chatActivityId) {
AuthorizedUser user = SessionContextUtils.getLoginUser();
ServiceResponse<GroupChatActivityDTO> response = groupChatActivityApiService.stopActivity(user.getEnterpriseId(),chatActivityId);
if (!response.isSuccess()) {
GicLogRecordEvaluationContext.noWriteLog();
return RestResponse.failure(response.getCode(), response.getMessage());
}
GicLogRecordEvaluationContext.putAttribute("activityName", response.getResult().getActivityName());
GicLogRecordEvaluationContext.putAttribute("chatActivityId", chatActivityId);
return RestResponse.successResult();
}
/**
* 社群活动删除
*
* @param chatActivityId 主键ID
* @return RestResponse
*/
@RequestMapping("del-activity")
@ResponseBody
@GicLogRecord(value = "【${#activityName}+${#chatActivityId}】活动被删除"
, category = GicLogRecordCategoryEnum.HB_QHM_ACTIVITY
, optType = GicLogRecordOptTypeEnum.HB_1005_02
, optPage = "营销-社群营销-社群邀请有礼"
, userFunc = LogRecordUserServiceImpl.class)
public RestResponse<Void> delActivity(Long chatActivityId) {
WebLoginDTO user = AuthWebRequestUtil.getLoginUser();
ServiceResponse<GroupChatActivityDTO> response = groupChatActivityApiService.getActivityDetail(user.getEnterpriseId(),chatActivityId);
if (!response.isSuccess()) {
GicLogRecordEvaluationContext.noWriteLog();
return RestResponse.failure(response.getCode(), response.getMessage());
}
ServiceResponse<Void> delResponse = groupChatActivityApiService.delActivity(user.getEnterpriseId(),chatActivityId);
if (!delResponse.isSuccess()) {
GicLogRecordEvaluationContext.noWriteLog();
return RestResponse.failure(delResponse.getCode(), delResponse.getMessage());
}
GicLogRecordEvaluationContext.putAttribute("activityName", response.getResult().getActivityName());
GicLogRecordEvaluationContext.putAttribute("chatActivityId", chatActivityId);
return RestResponse.successResult();
}
/**
* 社群活动保存
*
* @param activitySaveQO
* @return RestResponse
*/
@GicLogRecord(value = ""
, category = GicLogRecordCategoryEnum.HB_QHM_ACTIVITY
, optType = GicLogRecordOptTypeEnum.HB_1005_01
, optPage = "营销-社群营销-社群邀请有礼"
, userFunc = LogRecordUserServiceImpl.class
,afterFunc = LogRecordAfterGroupChatActivityServiceImpl.class)
@RequestMapping("save-activity")
@ResponseBody
public RestResponse<String> saveActivity(@RequestBody GroupChatActivitySaveQO activitySaveQO) {
WebLoginDTO user = AuthWebRequestUtil.getLoginUser();
if (activitySaveQO.getChatActivityId() != null) {
ServiceResponse<GroupChatActivityDTO> oldResponse = groupChatActivityApiService.getActivityDetailCache(user.getEnterpriseId(),activitySaveQO.getChatActivityId());
if (!oldResponse.isSuccess()) {
return RestResponse.failure(oldResponse.getCode(), oldResponse.getMessage());
}
GicLogRecordEvaluationContext.putAttribute("oldActivityDTO", oldResponse.getResult());
}
GroupChatActivityQDTO activityQDTO = EntityUtil.changeEntityNew(GroupChatActivityQDTO.class, activitySaveQO);
activityQDTO.setWxEnterpriseId(user.getWxEnterpriseId());
activityQDTO.setEnterpriseId(user.getEnterpriseId());
activityQDTO.setCreatorId(user.getClerkId());
activityQDTO.setCreatorName(user.getClerkName());
ServiceResponse<Long> response = groupChatActivityApiService.saveActivity(activityQDTO);
if (!response.isSuccess()) {
GicLogRecordEvaluationContext.noWriteLog();
return RestResponse.failure(response.getCode(), response.getMessage());
}
if (activitySaveQO.getChatActivityId() != null) {
ServiceResponse<GroupChatActivityDTO> newResponse = groupChatActivityApiService.getActivityDetailCache(user.getEnterpriseId(),activitySaveQO.getChatActivityId());
if (!newResponse.isSuccess()) {
return RestResponse.failure(newResponse.getCode(), newResponse.getMessage());
}
GicLogRecordEvaluationContext.putAttribute("newActivityDTO", newResponse.getResult());
}
return RestResponse.successResult(String.valueOf(response.getResult()));
}
/**
* 获取社群活动二维码
*
* @param chatActivityId
* @return
*/
@RequestMapping("get-group-chat-activity-qrcode")
@ResponseBody
public RestResponse<Object> getGroupChatActivityQrcode(@RequestParam Long chatActivityId) {
AuthorizedUser user = SessionContextUtils.getLoginUser();
String enterpriseId = user.getEnterpriseId();
ServiceResponse<GroupChatActivityDTO> activityDetailResult = groupChatActivityApiService.getActivityDetail(enterpriseId, chatActivityId);
if (!activityDetailResult.isSuccess() || Objects.isNull(activityDetailResult.getResult())) {
return RestResponse.failure("9999", "活动不存在或者活动已删除");
}
JSONObject param = new JSONObject();
JSONObject activityIdParam = new JSONObject();
activityIdParam.put("chatActivityId", chatActivityId.toString());
param.put("params", activityIdParam);
param.put("id", "group_chat_activity");
Map<String, Object> wxaLinkAndQrCode = enterpriseWxaLinkService.getWxaLinkAndQrCode(enterpriseId, param.toJSONString());
Map<String, String> map = new HashMap<>();
map.put("link", wxaLinkAndQrCode.get("link").toString());
map.put("url", wxaLinkAndQrCode.get("url").toString());
return RestResponse.successResult(map);
}
}
package com.gic.haoban.manage.web.controller.chat;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.JSONResponse;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.clerk.api.dto.AuthorizedUser;
import com.gic.commons.webapi.reponse.RestResponse;
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.*;
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.GroupChatActivityApiService;
import com.gic.haoban.manage.api.service.chat.GroupChatActivityLogApiService;
import com.gic.haoban.manage.api.service.chat.GroupChatApiService;
import com.gic.haoban.manage.web.handle.GroupChatActivityInviterHandle;
import com.gic.haoban.manage.web.handle.GroupChatActivityJoinHandle;
import com.gic.haoban.manage.web.handle.GroupChatActivityRewardHandle;
import com.gic.haoban.manage.web.qo.chat.*;
import com.gic.haoban.manage.web.vo.chat.*;
import com.gic.member.api.constant.RewardResultTypeEnum;
import com.gic.member.api.dto.MemberDTO;
import com.gic.member.api.service.MemberService;
import com.gic.qcloud.BucketNameEnum;
import com.gic.web.common.download.DownloadTask;
import com.gic.web.common.download.DownloadTaskUtil;
import com.gic.web.common.download.constants.TaskTypeEnum;
import com.gic.web.common.utils.DataApiUtils;
import com.gic.web.common.utils.SessionContextUtils;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
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.*;
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 GroupChatActivityApiService groupChatActivityApiService;
@Resource
private GroupChatApiService groupChatApiService;
@Resource
private EnterpriseService enterpriseService;
@Resource
private MemberService memberService;
@Resource
private GroupChatActivityJoinHandle groupChatActivityJoinHandle;
@Resource
private GroupChatActivityInviterHandle groupChatActivityInviterHandle;
@Resource
private GroupChatActivityRewardHandle groupChatActivityRewardHandle;
/**
* 列表统计数据
*
* @param joinDataReq
* @return
*/
@RequestMapping("get-join-data-list")
@ResponseBody
public RestResponse<List<GroupChatActivityJoinDataVO>> getJoinDataList(@RequestBody GroupChatActivityJoinDataReq joinDataReq) {
WebLoginDTO user = AuthWebRequestUtil.getLoginUser();
GroupChatActivityDataOverviewReq overviewReq = new GroupChatActivityDataOverviewReq();
overviewReq.setEnterpriseId(user.getEnterpriseId());
overviewReq.setChatActivityId(StringUtils.join(joinDataReq.getChatActivityIdList(), ","));
overviewReq.setPageSize(joinDataReq.getChatActivityIdList().size());
Map<String, Object> res = DataApiUtils.http(JSON.toJSONString(overviewReq), StatisticsApolloKeyConstant.data_mkt_group_chat_data_overview);
Map<String, GroupChatDataOverviewVO> map = Maps.newHashMap();
List<GroupChatDataOverviewVO> list = DataApiUtils.parsePageDataList(res, GroupChatDataOverviewVO.class);
if (CollectionUtils.isNotEmpty(list)) {
map = list.stream().collect(Collectors.toMap(GroupChatDataOverviewVO::getChatActivityId, groupChatDataOverviewVO -> groupChatDataOverviewVO));
}
Map<String, GroupChatDataOverviewVO> finalMap = map;
List<GroupChatActivityJoinDataVO> joinDataVOList = joinDataReq.getChatActivityIdList().stream().map(chatActivityId -> {
GroupChatActivityJoinDataVO groupChatActivityJoinDataVO = new GroupChatActivityJoinDataVO();
groupChatActivityJoinDataVO.setChatActivityId(chatActivityId);
GroupChatDataOverviewVO groupChatDataOverviewVO = finalMap.get(chatActivityId.toString());
if (Objects.nonNull(groupChatDataOverviewVO)) {
if (Objects.nonNull(groupChatDataOverviewVO.getInviterNum())) {
groupChatActivityJoinDataVO.setInviterNum(groupChatDataOverviewVO.getInviterNum());
}
if (Objects.nonNull(groupChatDataOverviewVO.getInviteeNum())) {
groupChatActivityJoinDataVO.setInviteeNum(groupChatDataOverviewVO.getInviteeNum());
}
if (Objects.nonNull(groupChatDataOverviewVO.getEffectiveInviteeNum())) {
groupChatActivityJoinDataVO.setEffectiveInviteeNum(groupChatDataOverviewVO.getEffectiveInviteeNum());
}
}
return groupChatActivityJoinDataVO;
}).collect(Collectors.toList());
return RestResponse.successResult(joinDataVOList);
}
/**
* 数据概览
*
* @param overviewReq
* @return
*/
@RequestMapping("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);
Page page = DataApiUtils.getPageData(res);
List<JSONObject> result = page.getResult();
if (CollectionUtils.isEmpty(result)) {
return RestResponse.successResult(null);
}
GroupChatDataOverviewVO groupChatDataOverviewVO = JSON.parseObject(JSON.toJSONString(result.get(0)), GroupChatDataOverviewVO.class);
return RestResponse.successResult(groupChatDataOverviewVO);
}
/**
* 阶梯奖励数据
*
* @param rewardLevelReq
* @return
*/
@RequestMapping("reward_level")
@ResponseBody
public RestResponse<List<GroupChatDataRewardLevelVO>> rewardLevel(@RequestBody GroupChatActivityDataRewardLevelReq rewardLevelReq) {
List<GroupChatDataRewardLevelVO> groupChatDataOverviewVOList = Lists.newArrayList();
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);
Page page = DataApiUtils.getPageData(res);
if(CollectionUtils.isEmpty(page.getResult())){
return RestResponse.successResult(groupChatDataOverviewVOList);
}
groupChatDataOverviewVOList = JSON.parseArray(JSON.toJSONString(page.getResult()), GroupChatDataRewardLevelVO.class);
return RestResponse.successResult(groupChatDataOverviewVOList);
}
/**
* 参与客户明细
*
* @param inviterDetailReq
* @return
*/
@RequestMapping("join_detail")
@ResponseBody
public RestResponse<Page<GroupChatDataJoinDetailVO>> joinDetail(@RequestBody GroupChatActivityJoinDetailReq inviterDetailReq) {
if (StringUtils.isEmpty(inviterDetailReq.getEnterpriseId())) {
WebLoginDTO user = AuthWebRequestUtil.getLoginUser();
inviterDetailReq.setEnterpriseId(user.getEnterpriseId());
}
if(Objects.isNull(inviterDetailReq.getOrderByFields())){
inviterDetailReq.setOrderByFields(3);
}
if(Objects.isNull(inviterDetailReq.getOrderByType())){
inviterDetailReq.setOrderByType(2);
}
Map<String, Object> res = DataApiUtils.http(JSON.toJSONString(inviterDetailReq), StatisticsApolloKeyConstant.data_mkt_group_chat_data_inviter_detail);
Page page = DataApiUtils.getPageData(res);
if (CollectionUtils.isNotEmpty(page.getResult())) {
List<GroupChatDataJoinDetailVO> groupChatDataJoinDetailVOS = JSON.parseArray(JSON.toJSONString(page.getResult()), GroupChatDataJoinDetailVO.class);
List<String> memberIdList = groupChatDataJoinDetailVOS.stream().map(GroupChatDataJoinDetailVO::getInviterMemberId).collect(Collectors.toList());
Map<String, MemberDTO> memberDTOMap = queryMemberByMemberIdList(memberIdList);
groupChatDataJoinDetailVOS.forEach(groupChatDataJoinDetailVO -> {
MemberDTO memberDTO = memberDTOMap.get(groupChatDataJoinDetailVO.getInviterMemberId());
if (Objects.nonNull(memberDTO)) {
groupChatDataJoinDetailVO.setName(memberDTO.getMemberName());
groupChatDataJoinDetailVO.setNickName(memberDTO.getThirdNickname());
groupChatDataJoinDetailVO.setPhoneNumber(memberDTO.getPhoneNumber());
groupChatDataJoinDetailVO.setMemberDeleteFlag(0);
} else {
groupChatDataJoinDetailVO.setMemberDeleteFlag(1);
}
});
page.setResult(groupChatDataJoinDetailVOS);
}
return RestResponse.successResult(page);
}
/**
* 参与客户明细导出
*
* @param inviterDetailReq
* @return
*/
@RequestMapping("join_detail_export")
@ResponseBody
public RestResponse<Object> joinDetailExport(@RequestBody GroupChatActivityJoinDetailReq inviterDetailReq) {
WebLoginDTO user = AuthWebRequestUtil.getLoginUser();
inviterDetailReq.setEnterpriseId(user.getEnterpriseId());
AuthorizedUser loginUser = SessionContextUtils.getLoginUser();
DownloadTask task = new DownloadTask();
JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(inviterDetailReq));
task.setTaskTypeEnum(TaskTypeEnum.GROUP_CHAT_ACTIVITY_JOIN);
task.setDataType(inviterDetailReq.getDataType());
task.setUser(loginUser);
task.setTotalCount(joinDetail(inviterDetailReq).getResult().getTotalCount());
//查询奖励配置
GroupChatActivityDTO groupChatActivityDTO = getActivityDetail(inviterDetailReq.getEnterpriseId(), Long.parseLong(inviterDetailReq.getChatActivityId()));
boolean isSettingIntegral = isSettingRewardType(groupChatActivityDTO,RewardResultTypeEnum.integral.getType());
boolean isSettingGrowth = isSettingRewardType(groupChatActivityDTO,RewardResultTypeEnum.growth.getType());
boolean isSettingCoupon = isSettingRewardType(groupChatActivityDTO,RewardResultTypeEnum.coupon.getType());
List<String> fieldList = new ArrayList<>();
List<String> indexList = new ArrayList<>();
fieldList.add("name");
indexList.add("邀请人姓名");
fieldList.add("nickName");
indexList.add("邀请人昵称");
fieldList.add("phoneNumber");
indexList.add("邀请人手机号");
fieldList.add("inviteeNum");
indexList.add("邀请进群人数");
fieldList.add("effectiveInviteeNum");
indexList.add("有效进群人数");
fieldList.add("newMemberNum");
indexList.add("新增会员数");
if (isSettingIntegral) {
fieldList.add("integralCnt");
indexList.add("奖励积分");
}
if (isSettingGrowth) {
fieldList.add("growCnt");
indexList.add("奖励成长值");
}
if (isSettingCoupon) {
fieldList.add("cardCnt");
indexList.add("奖励卡券数");
}
task.setFileName("社群邀请有礼-" + groupChatActivityDTO.getActivityName() + "-参与客户");
task.setChannelName("社群邀请有礼-" + groupChatActivityDTO.getActivityName() + "-参与客户");
task.setBucketName(BucketNameEnum.REPORT_50000.getName());
jsonObject.put("indexList", indexList);
jsonObject.put("fieldList", fieldList);
task.setSearchDataParams(jsonObject.toJSONString());
task.setHandler(groupChatActivityJoinHandle);
JSONResponse downloadTask = DownloadTaskUtil.createDownloadTask(task);
return RestResponse.successResult(downloadTask.getResult());
}
/**
* 邀请明细
*
* @param inviteLogQDTO
* @return
*/
@RequestMapping("inviter_detail")
@ResponseBody
public RestResponse<Page<GroupChatActivityInviteLogVO>> inviterDetail(@RequestBody GroupChatActivityInviteLogReq inviteLogQDTO) {
if (StringUtils.isEmpty(inviteLogQDTO.getEnterpriseId())) {
WebLoginDTO user = AuthWebRequestUtil.getLoginUser();
inviteLogQDTO.setEnterpriseId(user.getEnterpriseId());
}
GroupChatActivityInviteLogQDTO activityInviteLogQDTO = new GroupChatActivityInviteLogQDTO();
BeanUtils.copyProperties(inviteLogQDTO, activityInviteLogQDTO);
activityInviteLogQDTO.setSortFiled("create_time");
activityInviteLogQDTO.setSortType("desc");
ServiceResponse<Page<GroupChatActivityInviteLogDTO>> listServiceResponse = groupChatActivityLogApiService.queryInviteLogDetails(activityInviteLogQDTO);
if (!listServiceResponse.isSuccess()) {
return RestResponse.failure(listServiceResponse.getCode(), listServiceResponse.getMessage());
}
Page<GroupChatActivityInviteLogVO> page = new Page<>(inviteLogQDTO.getPageNum(), inviteLogQDTO.getPageSize(), 0, 0);
Page<GroupChatActivityInviteLogDTO> groupChatActivityInviteLogPage = listServiceResponse.getResult();
if (CollectionUtils.isEmpty(groupChatActivityInviteLogPage.getResult())) {
return RestResponse.successResult(page);
}
List<GroupChatActivityInviteLogVO> groupChatActivityInviteLogVOList = convertToInviterDetailVO(groupChatActivityInviteLogPage.getResult());
page.setResult(groupChatActivityInviteLogVOList);
page.setTotalCount(groupChatActivityInviteLogPage.getTotalCount());
page.setTotalPage(groupChatActivityInviteLogPage.getTotalPage());
return RestResponse.successResult(page);
}
/**
* 邀请明细导出
*
* @param inviteLogQDTO
* @return
*/
@RequestMapping("inviter_detail_export")
@ResponseBody
public RestResponse<Object> inviterDetailExport(@RequestBody GroupChatActivityInviteLogReq inviteLogQDTO) {
WebLoginDTO user = AuthWebRequestUtil.getLoginUser();
inviteLogQDTO.setEnterpriseId(user.getEnterpriseId());
AuthorizedUser loginUser = SessionContextUtils.getLoginUser();
DownloadTask task = new DownloadTask();
JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(inviteLogQDTO));
task.setTaskTypeEnum(TaskTypeEnum.GROUP_CHAT_ACTIVITY_INVITER);
task.setDataType(inviteLogQDTO.getDataType());
task.setUser(loginUser);
task.setTotalCount(inviterDetail(inviteLogQDTO).getResult().getTotalCount());
//查询奖励配置
GroupChatActivityDTO groupChatActivityDTO = getActivityDetail(inviteLogQDTO.getEnterpriseId(), inviteLogQDTO.getChatActivityId());
List<String> fieldList = new ArrayList<>();
List<String> indexList = new ArrayList<>();
fieldList.add("name");
indexList.add("邀请人姓名");
fieldList.add("nickName");
indexList.add("邀请人昵称");
fieldList.add("phoneNumber");
indexList.add("邀请人手机号");
fieldList.add("inviteeName");
indexList.add("受邀人姓名");
fieldList.add("inviteeNickName");
indexList.add("受邀人昵称");
fieldList.add("inviteePhoneNumber");
indexList.add("受邀人手机号");
fieldList.add("inviteTypeDesc");
indexList.add("是否有效邀请");
fieldList.add("invalidInviteTypeDesc");
indexList.add("无效邀请说明");
fieldList.add("addMemberTypeDesc");
indexList.add("新增会员");
fieldList.add("groupChatName");
indexList.add("加入群聊名称");
fieldList.add("groupChatId");
indexList.add("加入群聊ID");
fieldList.add("joinGroupChatTimeDesc");
indexList.add("入群时间");
task.setFileName("社群邀请有礼-" + groupChatActivityDTO.getActivityName() + "-邀请明细");
task.setChannelName("社群邀请有礼-" + groupChatActivityDTO.getActivityName() + "-邀请明细");
task.setBucketName(BucketNameEnum.REPORT_50000.getName());
jsonObject.put("indexList", indexList);
jsonObject.put("fieldList", fieldList);
task.setSearchDataParams(jsonObject.toJSONString());
task.setHandler(groupChatActivityInviterHandle);
JSONResponse downloadTask = DownloadTaskUtil.createDownloadTask(task);
return RestResponse.successResult(downloadTask.getResult());
}
/**
* 奖励明细
*
* @param rewardLogReq
* @return
*/
@RequestMapping("reward_detail")
@ResponseBody
public RestResponse<Page<GroupChatActivityRewardLogVO>> rewardDetail(@RequestBody GroupChatActivityRewardLogReq rewardLogReq) {
if (StringUtils.isEmpty(rewardLogReq.getEnterpriseId())) {
WebLoginDTO user = AuthWebRequestUtil.getLoginUser();
rewardLogReq.setEnterpriseId(user.getEnterpriseId());
}
GroupChatActivityRewardLogQDTO rewardLogQDTO = new GroupChatActivityRewardLogQDTO();
BeanUtils.copyProperties(rewardLogReq, rewardLogQDTO);
ServiceResponse<Page<GroupChatActivityRewardLogDTO>> listServiceResponse = groupChatActivityLogApiService.queryRewardLogDetails(rewardLogQDTO);
if (!listServiceResponse.isSuccess()) {
return RestResponse.failure(listServiceResponse.getCode(), listServiceResponse.getMessage());
}
Page<GroupChatActivityRewardLogVO> page = new Page<>(rewardLogQDTO.getPageNum(), rewardLogQDTO.getPageSize(), 0, 0);
Page<GroupChatActivityRewardLogDTO> groupChatActivityInviteLogPage = listServiceResponse.getResult();
if (CollectionUtils.isEmpty(groupChatActivityInviteLogPage.getResult())) {
return RestResponse.successResult(page);
}
List<GroupChatActivityRewardLogVO> groupChatActivityInviteVOList = convertToRewardDetailVO(groupChatActivityInviteLogPage.getResult());
page.setResult(groupChatActivityInviteVOList);
page.setResult(groupChatActivityInviteVOList);
page.setTotalCount(groupChatActivityInviteLogPage.getTotalCount());
page.setTotalPage(groupChatActivityInviteLogPage.getTotalPage());
return RestResponse.successResult(page);
}
/**
* 奖励明细导出
*
* @param rewardLogReq
* @return
*/
@RequestMapping("reward_detail_export")
@ResponseBody
public RestResponse<Object> rewardDetailExport(@RequestBody GroupChatActivityRewardLogReq rewardLogReq) {
WebLoginDTO user = AuthWebRequestUtil.getLoginUser();
rewardLogReq.setEnterpriseId(user.getEnterpriseId());
AuthorizedUser loginUser = SessionContextUtils.getLoginUser();
DownloadTask task = new DownloadTask();
JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(rewardLogReq));
task.setTaskTypeEnum(TaskTypeEnum.GROUP_CHAT_ACTIVITY_REWARD);
task.setDataType(rewardLogReq.getDataType());
task.setUser(loginUser);
task.setTotalCount(rewardDetail(rewardLogReq).getResult().getTotalCount());
//查询奖励配置
GroupChatActivityDTO groupChatActivityDTO = getActivityDetail(rewardLogReq.getEnterpriseId(), rewardLogReq.getChatActivityId());
boolean isSettingIntegral = isSettingRewardType(groupChatActivityDTO,RewardResultTypeEnum.integral.getType());
boolean isSettingGrowth = isSettingRewardType(groupChatActivityDTO,RewardResultTypeEnum.growth.getType());
boolean isSettingCoupon = isSettingRewardType(groupChatActivityDTO,RewardResultTypeEnum.coupon.getType());
List<String> fieldList = new ArrayList<>();
List<String> indexList = new ArrayList<>();
fieldList.add("name");
indexList.add("客户姓名");
fieldList.add("nickName");
indexList.add("客户昵称");
fieldList.add("phoneNumber");
indexList.add("客户手机号");
fieldList.add("rewardInviteType");
indexList.add("奖励类型");
fieldList.add("inviteLevelType");
indexList.add("奖励说明");
if (isSettingIntegral) {
fieldList.add("integral");
indexList.add("奖励积分");
}
if (isSettingGrowth) {
fieldList.add("growth");
indexList.add("奖励成长值");
}
if (isSettingCoupon) {
fieldList.add("cardInfo");
indexList.add("奖励卡券");
}
fieldList.add("rewardTimeDesc");
indexList.add("发放时间");
task.setFileName("社群邀请有礼-" + groupChatActivityDTO.getActivityName() + "-奖励明细");
task.setChannelName("社群邀请有礼-" + groupChatActivityDTO.getActivityName() + "-奖励明细");
task.setBucketName(BucketNameEnum.REPORT_50000.getName());
jsonObject.put("indexList", indexList);
jsonObject.put("fieldList", fieldList);
task.setSearchDataParams(jsonObject.toJSONString());
task.setHandler(groupChatActivityRewardHandle);
JSONResponse downloadTask = DownloadTaskUtil.createDownloadTask(task);
return RestResponse.successResult(downloadTask.getResult());
}
/**
* 奖励明细数据转换
*
* @param groupChatActivityRewardLogDTOS
* @return
*/
private List<GroupChatActivityRewardLogVO> convertToRewardDetailVO(List<GroupChatActivityRewardLogDTO> groupChatActivityRewardLogDTOS) {
List<String> memberIds = groupChatActivityRewardLogDTOS.stream().map(GroupChatActivityRewardLogDTO::getMemberId).collect(Collectors.toList());
Map<String, MemberDTO> memberDTOMap = queryMemberByMemberIdList(memberIds);
return groupChatActivityRewardLogDTOS.stream().map(groupChatActivityRewardLogDTO -> {
GroupChatActivityRewardLogVO groupChatActivityRewardLogVO = new GroupChatActivityRewardLogVO();
BeanUtils.copyProperties(groupChatActivityRewardLogDTO, groupChatActivityRewardLogVO);
MemberDTO memberDTO = memberDTOMap.get(groupChatActivityRewardLogDTO.getMemberId());
if (Objects.nonNull(memberDTO)) {
groupChatActivityRewardLogVO.setName(memberDTO.getMemberName());
groupChatActivityRewardLogVO.setNickName(memberDTO.getThirdNickname());
groupChatActivityRewardLogVO.setPhoneNumber(memberDTO.getPhoneNumber());
groupChatActivityRewardLogVO.setMemberDeleteFlag(0);
} else {
groupChatActivityRewardLogVO.setMemberDeleteFlag(1);
}
if (CollectionUtils.isNotEmpty(groupChatActivityRewardLogDTO.getRewardDetailLogDTOList())) {
int integral = 0;
int growth = 0;
List<String> cardList = Lists.newArrayList();
List<GroupChatActivityRewardLogVO.CouponInfo> couponInfoList = Lists.newArrayList();
for (GroupChatActivityRewardDetailLogDTO groupChatActivityRewardDetailLogDTO : groupChatActivityRewardLogDTO.getRewardDetailLogDTOList()) {
if (groupChatActivityRewardDetailLogDTO.getRewardType().equals(RewardResultTypeEnum.integral.getType())) {
integral += Integer.parseInt(groupChatActivityRewardDetailLogDTO.getRewardValue());
}
if (groupChatActivityRewardDetailLogDTO.getRewardType().equals(RewardResultTypeEnum.growth.getType())) {
growth += Integer.parseInt(groupChatActivityRewardDetailLogDTO.getRewardValue());
}
if (groupChatActivityRewardDetailLogDTO.getRewardType().equals(RewardResultTypeEnum.coupon.getType())) {
String card = groupChatActivityRewardDetailLogDTO.getRewardName() + "(";
if (groupChatActivityRewardDetailLogDTO.getSuccessFlag() == 1) {
card += groupChatActivityRewardDetailLogDTO.getRewardValue() + ")";
} else {
card += groupChatActivityRewardDetailLogDTO.getRewardRemark() + ")";
}
cardList.add(card);
GroupChatActivityRewardLogVO.CouponInfo couponInfo = new GroupChatActivityRewardLogVO.CouponInfo();
couponInfo.setCouponCardId(groupChatActivityRewardDetailLogDTO.getRewardValue());
couponInfo.setCouponName(groupChatActivityRewardDetailLogDTO.getRewardName());
couponInfo.setSuccessFlag(groupChatActivityRewardDetailLogDTO.getSuccessFlag());
couponInfo.setFailReason(groupChatActivityRewardDetailLogDTO.getRewardRemark());
couponInfoList.add(couponInfo);
}
}
groupChatActivityRewardLogVO.setIntegral(integral);
groupChatActivityRewardLogVO.setGrowth(growth);
groupChatActivityRewardLogVO.setCardInfo(StringUtils.join(cardList, "、"));
groupChatActivityRewardLogVO.setCouponInfoList(couponInfoList);
}
return groupChatActivityRewardLogVO;
}).collect(Collectors.toList());
}
/**
* 邀请明细数据转换
*
* @param groupChatActivityInviteLogDTOS
* @return
*/
private List<GroupChatActivityInviteLogVO> convertToInviterDetailVO(List<GroupChatActivityInviteLogDTO> groupChatActivityInviteLogDTOS) {
//会员信息
List<String> memberIds = Lists.newArrayList();
groupChatActivityInviteLogDTOS.forEach(groupChatActivityInviteLogDTO -> {
if (StringUtils.isNotEmpty(groupChatActivityInviteLogDTO.getInviterMemberId())) {
memberIds.add(groupChatActivityInviteLogDTO.getInviterMemberId());
}
if (StringUtils.isNotEmpty(groupChatActivityInviteLogDTO.getInviteeMemberId())) {
memberIds.add(groupChatActivityInviteLogDTO.getInviteeMemberId());
}
});
Map<String, MemberDTO> memberDTOMap = queryMemberByMemberIdList(memberIds);
//企微群信息
Map<Long, GroupChatDTO> groupChatDTOMap = Maps.newHashMap();
List<Long> groupChatIdList = groupChatActivityInviteLogDTOS.stream().map(GroupChatActivityInviteLogDTO::getGroupChatId).distinct().collect(Collectors.toList());
ServiceResponse<List<GroupChatDTO>> groupChatDTOResponse = groupChatApiService.listChatByIdList(groupChatActivityInviteLogDTOS.get(0).getWxEnterpriseId(), groupChatIdList);
if (CollectionUtils.isNotEmpty(groupChatDTOResponse.getResult())) {
groupChatDTOMap = groupChatDTOResponse.getResult().stream()
.collect(Collectors.toMap(GroupChatDTO::getGroupChatId, groupChatDTO -> groupChatDTO));
}
Map<Long, GroupChatDTO> finalGroupChatDTOMap = groupChatDTOMap;
return groupChatActivityInviteLogDTOS.stream().map(groupChatActivityInviteLogDTO -> {
GroupChatActivityInviteLogVO groupChatActivityInviteLogVO = new GroupChatActivityInviteLogVO();
BeanUtils.copyProperties(groupChatActivityInviteLogDTO, groupChatActivityInviteLogVO);
MemberDTO inviterMemberDTO = memberDTOMap.get(groupChatActivityInviteLogDTO.getInviterMemberId());
if (Objects.nonNull(inviterMemberDTO)) {
groupChatActivityInviteLogVO.setName(inviterMemberDTO.getMemberName());
groupChatActivityInviteLogVO.setNickName(inviterMemberDTO.getThirdNickname());
groupChatActivityInviteLogVO.setPhoneNumber(inviterMemberDTO.getPhoneNumber());
groupChatActivityInviteLogVO.setMemberDeleteFlag(0);
} else {
groupChatActivityInviteLogVO.setMemberDeleteFlag(1);
}
MemberDTO inviteeMemberDTO = memberDTOMap.get(groupChatActivityInviteLogDTO.getInviteeMemberId());
if (Objects.nonNull(inviteeMemberDTO)) {
groupChatActivityInviteLogVO.setInviteeName(inviteeMemberDTO.getMemberName());
groupChatActivityInviteLogVO.setInviteeNickName(inviteeMemberDTO.getThirdNickname());
groupChatActivityInviteLogVO.setInviteePhoneNumber(inviteeMemberDTO.getPhoneNumber());
} else {
groupChatActivityInviteLogVO.setInviteeName(groupChatActivityInviteLogDTO.getUserName());
groupChatActivityInviteLogVO.setInviteeNickName(groupChatActivityInviteLogDTO.getNickName());
}
GroupChatDTO groupChatDTO = finalGroupChatDTOMap.get(groupChatActivityInviteLogDTO.getGroupChatId());
if (Objects.nonNull(groupChatDTO)) {
groupChatActivityInviteLogVO.setGroupChatName(groupChatDTO.getName());
}
return groupChatActivityInviteLogVO;
}).collect(Collectors.toList());
}
/**
* 查询会员信息
*
* @param memberIdList
* @return
*/
private Map<String, MemberDTO> queryMemberByMemberIdList(List<String> memberIdList) {
Map<String, MemberDTO> memberDTOMap = Maps.newHashMap();
if (CollectionUtils.isEmpty(memberIdList)) {
return memberDTOMap;
}
//会员信息
List<MemberDTO> memberDtoList = memberService.getMemberDtoList(memberIdList);
//会员map
memberDTOMap = memberDtoList.stream().collect(Collectors.toMap(MemberDTO::getMemberId, m -> m, (m1, m2) -> m2));
return memberDTOMap;
}
private GroupChatActivityDTO getActivityDetail(String enterpriseId, Long chatActivityId) {
ServiceResponse<GroupChatActivityDTO> serviceActivityDetail = groupChatActivityApiService
.getActivityDetail(enterpriseId, chatActivityId);
return serviceActivityDetail.getResult();
}
/**
* 是否配置指定奖项、
*
* @param groupChatActivityDTO
* @param rewardType
* @return
*/
private boolean isSettingRewardType(GroupChatActivityDTO groupChatActivityDTO,Integer rewardType){
//获取所有奖励类型
Set<Integer> rewardTypeList = Sets.newHashSet();
Map<Integer, List<GroupChatActivityRewardDTO>> rewardMap = groupChatActivityDTO.getRewardMap();
rewardMap.forEach((key, value) -> {
value.forEach(groupChatActivityRewardDTO -> {
groupChatActivityRewardDTO.getDetailList().forEach(groupChatActivityRewardDetailDTO -> {
rewardTypeList.add(groupChatActivityRewardDetailDTO.getRewardType());
});
});
});
return rewardTypeList.contains(rewardType);
}
}
package com.gic.haoban.manage.web.handle;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.enterprise.api.dto.security.DownloadReportDTO;
import com.gic.haoban.manage.api.enums.chat.ChatActivityInvalidInviteTypeEnum;
import com.gic.haoban.manage.web.controller.chat.GroupChatActivityDataController;
import com.gic.haoban.manage.web.qo.chat.GroupChatActivityInviteLogReq;
import com.gic.haoban.manage.web.vo.chat.GroupChatActivityInviteLogExportVO;
import com.gic.haoban.manage.web.vo.chat.GroupChatActivityInviteLogVO;
import com.gic.web.common.download.DownloadHandlerAbstract;
import com.gic.web.common.download.context.Context;
import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Objects;
/**
* @author shangfeng
* @date 2024-10-11 17:27:51
*/
@Component
public class GroupChatActivityInviterHandle extends DownloadHandlerAbstract<GroupChatActivityInviteLogExportVO> {
private static Logger log = LogManager.getLogger(GroupChatActivityInviterHandle.class);
@Resource
private GroupChatActivityDataController groupChatActivityDataController;
@Override
public List<GroupChatActivityInviteLogExportVO> getData(Context context, String searchDataParams, Integer currentPage) {
GroupChatActivityInviteLogReq inviteLogReq = JSON.parseObject(searchDataParams, GroupChatActivityInviteLogReq.class);
inviteLogReq.setPageNum(currentPage);
inviteLogReq.setPageSize(getPageSize());
log.info("社群邀请有礼邀请明细数据导出,请求参数={}", JSON.toJSONString(inviteLogReq));
RestResponse<Page<GroupChatActivityInviteLogVO>> dataPageVORestResponse = groupChatActivityDataController.inviterDetail(inviteLogReq);
List<GroupChatActivityInviteLogVO> groupChatActivityInviteLogVOS = dataPageVORestResponse.getResult().getResult();
if (CollectionUtils.isEmpty(groupChatActivityInviteLogVOS)) {
return Lists.newArrayList();
}
List<GroupChatActivityInviteLogExportVO> groupChatActivityInviteLogExportVOS = Lists.newArrayList();
for (GroupChatActivityInviteLogVO groupChatActivityInviteLogVO : groupChatActivityInviteLogVOS) {
GroupChatActivityInviteLogExportVO groupChatActivityRewardLogExportVO = new GroupChatActivityInviteLogExportVO();
BeanUtils.copyProperties(groupChatActivityInviteLogVO, groupChatActivityRewardLogExportVO);
if(groupChatActivityInviteLogVO.getMemberDeleteFlag() == 1){
groupChatActivityInviteLogVO.setName("账号已注销");
}
if (groupChatActivityInviteLogVO.getInviteType() == 0) {
groupChatActivityRewardLogExportVO.setInviteTypeDesc("否");
}else {
groupChatActivityRewardLogExportVO.setInviteTypeDesc("是");
}
if (Objects.nonNull(groupChatActivityInviteLogVO.getInvalidInviteType())) {
if(groupChatActivityInviteLogVO.getInvalidInviteType().equals(ChatActivityInvalidInviteTypeEnum.ONE.value)){
groupChatActivityRewardLogExportVO.setInvalidInviteTypeDesc("非首次参与活动受邀入群");
}else if (groupChatActivityInviteLogVO.getInvalidInviteType().equals(ChatActivityInvalidInviteTypeEnum.TWO.value)){
groupChatActivityRewardLogExportVO.setInvalidInviteTypeDesc("入群前已处于品牌群聊内");
}else if (groupChatActivityInviteLogVO.getInvalidInviteType().equals(ChatActivityInvalidInviteTypeEnum.THREE.value)){
groupChatActivityRewardLogExportVO.setInvalidInviteTypeDesc("非首次加入品牌群聊");
}
}
if (Objects.nonNull(groupChatActivityInviteLogVO.getAddMemberType())) {
if (groupChatActivityInviteLogVO.getAddMemberType() == 1) {
groupChatActivityRewardLogExportVO.setAddMemberTypeDesc("是");
}else {
groupChatActivityRewardLogExportVO.setAddMemberTypeDesc("否");
}
}
if(Objects.nonNull(groupChatActivityInviteLogVO.getCreateTime())){
groupChatActivityRewardLogExportVO.setJoinGroupChatTimeDesc(DateUtil.formatDateTime(groupChatActivityInviteLogVO.getCreateTime()));
}
groupChatActivityInviteLogExportVOS.add(groupChatActivityRewardLogExportVO);
}
log.info("社群邀请有礼邀请明细数据导出={}", JSON.toJSONString(groupChatActivityInviteLogExportVOS));
return groupChatActivityInviteLogExportVOS;
}
@Override
public List<String> getColumnNames() {
return Lists.newArrayList();
}
@Override
public LinkedHashMap<String, List<String>> doubleColumnNames() {
return null;
}
@Override
public List<String> getColumns() {
return Lists.newArrayList();
}
@Override
public List<String> getColumns(Context context) {
DownloadReportDTO downloadReportDTO = context.getDownloadReportDTO();
String searchDataParams = downloadReportDTO.getSearchDataParams();
JSONObject jsonObject = JSONObject.parseObject(searchDataParams);
List<String> list = (List<String>) jsonObject.get("fieldList");
return list;
}
@Override
public List<String> getColumnNames(Context context) {
DownloadReportDTO downloadReportDTO = context.getDownloadReportDTO();
String searchDataParams = downloadReportDTO.getSearchDataParams();
JSONObject jsonObject = JSONObject.parseObject(searchDataParams);
List<String> list = (List<String>) jsonObject.get("indexList");
return list;
}
}
package com.gic.haoban.manage.web.handle;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
import com.gic.commons.util.DateUtil;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.enterprise.api.dto.security.DownloadReportDTO;
import com.gic.haoban.manage.web.controller.chat.GroupChatActivityDataController;
import com.gic.haoban.manage.web.qo.chat.GroupChatActivityInviteLogReq;
import com.gic.haoban.manage.web.qo.chat.GroupChatActivityJoinDetailReq;
import com.gic.haoban.manage.web.qo.chat.GroupChatActivityRewardLogReq;
import com.gic.haoban.manage.web.vo.chat.GroupChatActivityInviteLogVO;
import com.gic.haoban.manage.web.vo.chat.GroupChatActivityRewardLogExportVO;
import com.gic.haoban.manage.web.vo.chat.GroupChatActivityRewardLogVO;
import com.gic.haoban.manage.web.vo.chat.GroupChatDataJoinDetailVO;
import com.gic.web.common.download.DownloadHandlerAbstract;
import com.gic.web.common.download.context.Context;
import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.LinkedHashMap;
import java.util.List;
/**
* @author shangfeng
* @date 2024-10-11 17:29:51
*/
@Component
public class GroupChatActivityJoinHandle extends DownloadHandlerAbstract<GroupChatDataJoinDetailVO> {
private static Logger log = LogManager.getLogger(GroupChatActivityJoinHandle.class);
@Resource
private GroupChatActivityDataController groupChatActivityDataController;
@Override
public List<GroupChatDataJoinDetailVO> getData(Context context, String searchDataParams, Integer currentPage) {
GroupChatActivityJoinDetailReq joinDetailReq = JSON.parseObject(searchDataParams, GroupChatActivityJoinDetailReq.class);
joinDetailReq.setPageNum(currentPage);
joinDetailReq.setPageSize(getPageSize());
log.info("社群邀请有礼参与客户数据导出,请求参数={}", JSON.toJSONString(joinDetailReq));
RestResponse<Page<GroupChatDataJoinDetailVO>> dataPageVORestResponse = groupChatActivityDataController.joinDetail(joinDetailReq);
List<GroupChatDataJoinDetailVO> groupChatDataJoinDetailVOS = dataPageVORestResponse.getResult().getResult();
if (CollectionUtils.isEmpty(groupChatDataJoinDetailVOS)) {
return Lists.newArrayList();
}
for (GroupChatDataJoinDetailVO groupChatDataJoinDetailVO : groupChatDataJoinDetailVOS) {
if(groupChatDataJoinDetailVO.getMemberDeleteFlag() == 1){
groupChatDataJoinDetailVO.setName("账号已注销");
}
}
log.info("社群邀请有礼参与客户数据导出={}", JSON.toJSONString(groupChatDataJoinDetailVOS));
return groupChatDataJoinDetailVOS;
}
@Override
public List<String> getColumnNames() {
return Lists.newArrayList();
}
@Override
public LinkedHashMap<String, List<String>> doubleColumnNames() {
return null;
}
@Override
public List<String> getColumns() {
return Lists.newArrayList();
}
@Override
public List<String> getColumns(Context context) {
DownloadReportDTO downloadReportDTO = context.getDownloadReportDTO();
String searchDataParams = downloadReportDTO.getSearchDataParams();
JSONObject jsonObject = JSONObject.parseObject(searchDataParams);
List<String> list = (List<String>) jsonObject.get("fieldList");
return list;
}
@Override
public List<String> getColumnNames(Context context) {
DownloadReportDTO downloadReportDTO = context.getDownloadReportDTO();
String searchDataParams = downloadReportDTO.getSearchDataParams();
JSONObject jsonObject = JSONObject.parseObject(searchDataParams);
List<String> list = (List<String>) jsonObject.get("indexList");
return list;
}
}
package com.gic.haoban.manage.web.handle;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.enterprise.api.dto.security.DownloadReportDTO;
import com.gic.haoban.manage.web.controller.chat.GroupChatActivityDataController;
import com.gic.haoban.manage.web.qo.chat.GroupChatActivityRewardLogReq;
import com.gic.haoban.manage.web.vo.chat.GroupChatActivityRewardLogExportVO;
import com.gic.haoban.manage.web.vo.chat.GroupChatActivityRewardLogVO;
import com.gic.web.common.download.DownloadHandlerAbstract;
import com.gic.web.common.download.context.Context;
import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Objects;
/**
* @author shangfeng
* @date 2024-10-11 17:30:10
*/
@Component
public class GroupChatActivityRewardHandle extends DownloadHandlerAbstract<GroupChatActivityRewardLogExportVO> {
private static Logger log = LogManager.getLogger(GroupChatActivityRewardHandle.class);
@Resource
private GroupChatActivityDataController groupChatActivityDataController;
@Override
public List<GroupChatActivityRewardLogExportVO> getData(Context context, String searchDataParams, Integer currentPage) {
GroupChatActivityRewardLogReq rewardLogReq = JSON.parseObject(searchDataParams, GroupChatActivityRewardLogReq.class);
rewardLogReq.setPageNum(currentPage);
rewardLogReq.setPageSize(getPageSize());
log.info("社群邀请有礼奖励明细数据导出,请求参数={}", JSON.toJSONString(rewardLogReq));
RestResponse<Page<GroupChatActivityRewardLogVO>> dataPageVORestResponse = groupChatActivityDataController.rewardDetail(rewardLogReq);
List<GroupChatActivityRewardLogVO> groupChatActivityRewardLogVOS = dataPageVORestResponse.getResult().getResult();
if (CollectionUtils.isEmpty(groupChatActivityRewardLogVOS)) {
return Lists.newArrayList();
}
List<GroupChatActivityRewardLogExportVO> groupChatActivityRewardLogExportVOS = Lists.newArrayList();
for (GroupChatActivityRewardLogVO groupChatActivityRewardLogVO : groupChatActivityRewardLogVOS) {
GroupChatActivityRewardLogExportVO groupChatActivityRewardLogExportVO = new GroupChatActivityRewardLogExportVO();
BeanUtils.copyProperties(groupChatActivityRewardLogVO, groupChatActivityRewardLogExportVO);
if (groupChatActivityRewardLogVO.getRewardInvite() == 1) {
groupChatActivityRewardLogExportVO.setRewardInviteType("邀请奖励");
groupChatActivityRewardLogExportVO.setInviteLevelType("达成第" + groupChatActivityRewardLogVO.getInviteLevel() + "阶梯邀请奖励");
} else {
groupChatActivityRewardLogExportVO.setRewardInviteType("受邀奖励");
groupChatActivityRewardLogExportVO.setInviteLevelType("受邀进群奖励");
}
if (Objects.nonNull(groupChatActivityRewardLogVO.getCreateTime())) {
groupChatActivityRewardLogExportVO.setRewardTimeDesc(DateUtil.formatDateTime(groupChatActivityRewardLogVO.getCreateTime()));
}
groupChatActivityRewardLogExportVOS.add(groupChatActivityRewardLogExportVO);
}
log.info("社群邀请有礼奖励明细数据导出={}", JSON.toJSONString(groupChatActivityRewardLogExportVOS));
return groupChatActivityRewardLogExportVOS;
}
@Override
public List<String> getColumnNames() {
return Lists.newArrayList();
}
@Override
public LinkedHashMap<String, List<String>> doubleColumnNames() {
return null;
}
@Override
public List<String> getColumns() {
return Lists.newArrayList();
}
@Override
public List<String> getColumns(Context context) {
DownloadReportDTO downloadReportDTO = context.getDownloadReportDTO();
String searchDataParams = downloadReportDTO.getSearchDataParams();
JSONObject jsonObject = JSONObject.parseObject(searchDataParams);
List<String> list = (List<String>) jsonObject.get("fieldList");
return list;
}
@Override
public List<String> getColumnNames(Context context) {
DownloadReportDTO downloadReportDTO = context.getDownloadReportDTO();
String searchDataParams = downloadReportDTO.getSearchDataParams();
JSONObject jsonObject = JSONObject.parseObject(searchDataParams);
List<String> list = (List<String>) jsonObject.get("indexList");
return list;
}
}
package com.gic.haoban.manage.web.log;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityDTO;
import com.gic.log.record.bean.GicLogRecordBean;
import com.gic.log.record.service.LogRecordAfterService;
import com.gic.log.record.util.GicLogRecordEvaluationContext;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.Objects;
/**
* Created by wangzubo on 2022/11/14.
*/
@Service
public class LogRecordAfterGroupChatActivityServiceImpl extends LogRecordAfterService {
private static final Logger logger = LogManager.getLogger(LogRecordAfterGroupChatActivityServiceImpl.class);
/**
{活动名称-活动id}的
1、活动名称从【XX】修改为【XX】
2、活动时间从2022.10,23修改为2023.10.23
3、活动图片更换
4、活动说明调整
5、分享配置调整
* @param record
*/
@Override
public void deal(GicLogRecordBean record) {
try {
GroupChatActivityDTO oldActivityDTO = GicLogRecordEvaluationContext.getAttribute("oldActivityDTO", GroupChatActivityDTO.class);
GroupChatActivityDTO newActivityDTO = GicLogRecordEvaluationContext.getAttribute("newActivityDTO", GroupChatActivityDTO.class);
logger.info("活动操作前信息 {}", JSON.toJSONString(oldActivityDTO));
logger.info("活动操作后信息 {}", JSON.toJSONString(newActivityDTO));
if (oldActivityDTO == null || newActivityDTO == null) {
record.setStatusFlag(0);
return;
}
String content = StrUtil.format("【{}+{}】",oldActivityDTO.getActivityName(),oldActivityDTO.getChatActivityId());
StringBuilder cdSb = new StringBuilder();
String oldActivityName = oldActivityDTO.getActivityName();
String newActivityName = newActivityDTO.getActivityName();
Date oldStartDate = oldActivityDTO.getStartDate();
Date oldEndDate = oldActivityDTO.getEndDate();
Date newStartDate = newActivityDTO.getStartDate();
Date newEndDate = newActivityDTO.getEndDate();
if (!Objects.equals(oldActivityName,newActivityName)) {
cdSb.append(" ")
.append(StrUtil.format("活动名称从【{}】修改为【{}】",
oldActivityName,
newActivityName));
}
if (!Objects.equals(oldStartDate,newStartDate) || !Objects.equals(oldEndDate,newEndDate)) {
cdSb.append(" ")
.append(StrUtil.format("活动时间从【{}】修改为【{}】",
DateUtil.formatDate(oldStartDate) + "-" + DateUtil.formatDate(oldEndDate),
DateUtil.formatDate(newStartDate) + "-" + DateUtil.formatDate(newEndDate)));
}
String oldActivityDesc = oldActivityDTO.getActivityDesc();
String newActivityDesc = newActivityDTO.getActivityDesc();
if (!Objects.equals(oldActivityDesc,newActivityDesc)) {
cdSb.append(" ")
.append("活动说明调整");
}
String oldActivityImg = oldActivityDTO.getActivityImg();
String oldActivityInviteImg = oldActivityDTO.getActivityInviteImg();
String newActivityImg = newActivityDTO.getActivityImg();
String newActivityInviteImg = newActivityDTO.getActivityInviteImg();
if (!Objects.equals(oldActivityImg,newActivityImg)||
!Objects.equals(oldActivityInviteImg,newActivityInviteImg)
) {
cdSb.append(" ")
.append("活动图片更换");
}
String oldActivityShareTitle = oldActivityDTO.getActivityShareTitle();
String oldActivityPosterImg = oldActivityDTO.getActivityPosterImg();
String oldActivityShareImg = oldActivityDTO.getActivityShareImg();
String newActivityShareTitle = newActivityDTO.getActivityShareTitle();
String newActivityPosterImg = newActivityDTO.getActivityPosterImg();
String newActivityShareImg = newActivityDTO.getActivityShareImg();
if (!Objects.equals(oldActivityShareTitle, newActivityShareTitle) ||
!Objects.equals(oldActivityShareImg, newActivityShareImg) ||
!Objects.equals(oldActivityPosterImg, newActivityPosterImg)) {
cdSb.append(" ")
.append("分享配置调整");
}
String s = cdSb.toString();
if (StringUtils.isBlank(s)) {
GicLogRecordEvaluationContext.noWriteLog();
record.setStatusFlag(0);
}else {
content += s;
}
record.setContent(content);
} catch (Exception e) {
record.setStatusFlag(0);
record.setContent("日志记录异常!");
logger.info("日志记录异常执行失败", e);
}
}
}
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.qo.chat;
import java.io.Serializable;
import java.util.Date;
/**
* @author shangfeng
* @date 2024-10-12 14:40:12
*/
public class GroupChatActivityInviteLogReq implements Serializable {
private static final long serialVersionUID = 4318122460400124472L;
/**
* 页编号
*/
private Integer pageNum;
/**
* 页大小
*/
private Integer pageSize;
/**
* 企业id
*/
private String enterpriseId;
/**
* 社群活动id
*/
private Long chatActivityId;
/**
* 邀请人会员ID
*/
private String inviterMemberId;
/**
* 受邀请人会员ID
*/
private String inviteeMemberId;
/**
* 有效邀请类型 1有效0无效
*/
private Integer inviteType;
/**
* 是否新增会员 1是 0否 null未统计
*/
private Integer addMemberType;
/**
* 批次
*/
private Integer batchNumber;
/**
* 开始时间
*/
private Date beginTime;
/**
* 结束时间
*/
private Date endTime;
/**
* 下载导出参数:数据脱敏 1:脱敏 2:完整
*/
private Integer dataType;
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 Long getChatActivityId() {
return chatActivityId;
}
public void setChatActivityId(Long chatActivityId) {
this.chatActivityId = chatActivityId;
}
public String getInviterMemberId() {
return inviterMemberId;
}
public void setInviterMemberId(String inviterMemberId) {
this.inviterMemberId = inviterMemberId;
}
public String getInviteeMemberId() {
return inviteeMemberId;
}
public void setInviteeMemberId(String inviteeMemberId) {
this.inviteeMemberId = inviteeMemberId;
}
public Integer getInviteType() {
return inviteType;
}
public void setInviteType(Integer inviteType) {
this.inviteType = inviteType;
}
public Integer getAddMemberType() {
return addMemberType;
}
public void setAddMemberType(Integer addMemberType) {
this.addMemberType = addMemberType;
}
public Integer getBatchNumber() {
return batchNumber;
}
public void setBatchNumber(Integer batchNumber) {
this.batchNumber = batchNumber;
}
public Date getBeginTime() {
return beginTime;
}
public void setBeginTime(Date beginTime) {
this.beginTime = beginTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public Integer getDataType() {
return dataType;
}
public void setDataType(Integer dataType) {
this.dataType = dataType;
}
}
package com.gic.haoban.manage.web.qo.chat;
import java.io.Serializable;
import java.util.List;
/**
* @author shangfeng
* @date 2024-10-12 10:12:32
*/
public class GroupChatActivityJoinDataReq implements Serializable {
private static final long serialVersionUID = 8101720675682708878L;
private List<Long> chatActivityIdList;
public List<Long> getChatActivityIdList() {
return chatActivityIdList;
}
public void setChatActivityIdList(List<Long> chatActivityIdList) {
this.chatActivityIdList = chatActivityIdList;
}
}
package com.gic.haoban.manage.web.qo.chat;
import java.io.Serializable;
/**
* @author shangfeng
* @date 2024-10-10 16:26:38
*/
public class GroupChatActivityJoinDetailReq 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;
/**
* 下载导出参数:数据脱敏 1:脱敏 2:完整
*/
private Integer dataType;
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;
}
public Integer getDataType() {
return dataType;
}
public void setDataType(Integer dataType) {
this.dataType = dataType;
}
}
package com.gic.haoban.manage.web.qo.chat;
import java.io.Serializable;
import java.util.Date;
/**
* @author shangfeng
* @date 2024-10-12 10:54:22
*/
public class GroupChatActivityRewardLogReq implements Serializable {
private static final long serialVersionUID = -8126068400193316985L;
private String enterpriseId;
/**
* 社群活动id
*/
private Long chatActivityId;
/**
* 邀请人会员ID
*/
private String memberId;
/**
* 奖励人类型 1邀请人2受邀人
*/
private Integer rewardInvite;
/**
* 开始时间
*/
private Date beginTime;
/**
* 结束时间
*/
private Date endTime;
/**
* 下载导出参数:数据脱敏 1:脱敏 2:完整
*/
private Integer dataType;
private Integer pageNum;
private Integer pageSize;
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
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 Date getBeginTime() {
return beginTime;
}
public void setBeginTime(Date beginTime) {
this.beginTime = beginTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public Integer getDataType() {
return dataType;
}
public void setDataType(Integer dataType) {
this.dataType = dataType;
}
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;
}
}
package com.gic.haoban.manage.web.qo.chat;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityDTO;
import java.io.Serializable;
public class GroupChatActivitySaveQO extends GroupChatActivityDTO implements Serializable {
}
package com.gic.haoban.manage.web.qo.chat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.gic.commons.web.qo.PageQo;
import java.io.Serializable;
import java.util.Date;
@JsonIgnoreProperties(ignoreUnknown = true)
public class GroupChatActivitySearchQO extends PageQo implements Serializable {
private static final long serialVersionUID = 692426229105512689L;
/**
* 搜索内容
*/
private String search;
/**
* 状态1未开始2进行中3已终止4已结束
*/
private Integer status;
/**
* 入群方式 1规则入群2定向入群
*/
private Integer joinType;
/**
* 奖励类型 1定额奖励2阶梯奖励
*/
private Integer inviteRewardType;
/**
* 开始时间
*/
private Date beginDate;
/**
* 结束时间
*/
private Date endDate;
private Integer showSelfFlag = 0;
public String getSearch() {
return search;
}
public void setSearch(String search) {
this.search = search;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public Integer getJoinType() {
return joinType;
}
public void setJoinType(Integer joinType) {
this.joinType = joinType;
}
public Integer getInviteRewardType() {
return inviteRewardType;
}
public void setInviteRewardType(Integer inviteRewardType) {
this.inviteRewardType = inviteRewardType;
}
public Date getBeginDate() {
return beginDate;
}
public void setBeginDate(Date beginDate) {
this.beginDate = beginDate;
}
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
public Integer getShowSelfFlag() {
return showSelfFlag;
}
public void setShowSelfFlag(Integer showSelfFlag) {
this.showSelfFlag = showSelfFlag;
}
}
package com.gic.haoban.manage.web.vo;
import java.io.Serializable;
public class MemberLabelVO implements Serializable {
private String labelValueId;
private String labelValueName ;
private int labelValueStatus ;
private String labelName ;
private String labelId ;
public String getLabelId() {
return labelId;
}
public void setLabelId(String labelId) {
this.labelId = labelId;
}
public String getLabelValueId() {
return labelValueId;
}
public void setLabelValueId(String labelValueId) {
this.labelValueId = labelValueId;
}
public String getLabelValueName() {
return labelValueName;
}
public void setLabelValueName(String labelValueName) {
this.labelValueName = labelValueName;
}
public int getLabelValueStatus() {
return labelValueStatus;
}
public void setLabelValueStatus(int labelValueStatus) {
this.labelValueStatus = labelValueStatus;
}
public String getLabelName() {
return labelName;
}
public void setLabelName(String labelName) {
this.labelName = labelName;
}
}
package com.gic.haoban.manage.web.vo.chat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.gic.web.common.jsonSeralizer.PhoneNumberJsonSeralizer;
import java.io.Serializable;
/**
* @author shangfeng
* @date 2024-10-12 14:52:09
*/
public class GroupChatActivityInviteLogExportVO implements Serializable {
private static final long serialVersionUID = 8280940488482343219L;
/**
* 会员名称
*/
private String name;
/**
* 会员手机
*/
@JsonSerialize(using = PhoneNumberJsonSeralizer.class)
private String phoneNumber;
/**
* 会员别名昵称
*/
private String nickName;
/**
* 会员是否删除
* 0 正常
* 1 已删除
*/
private Integer memberDeleteFlag;
/**
* 受邀人姓名
*/
private String inviteeName;
/**
* 受邀人手机号
*/
@JsonSerialize(using = PhoneNumberJsonSeralizer.class)
private String inviteePhoneNumber;
/**
* 受邀人昵称
*/
private String inviteeNickName;
/**
* 群id
*/
private Long groupChatId;
/**
* 群名称
*/
private String groupChatName;
/**
* 有效邀请类型 1有效0无效
*/
private String inviteTypeDesc;
/**
* 无效邀请类型 1非首次参与活动受邀入群2入群前已处于企业群聊内3非首次加入企业群聊
*/
private String invalidInviteTypeDesc;
/**
* 是否新增会员 1是 0否 null未统计
*/
private String addMemberTypeDesc;
/**
* 入群时间
*/
private String joinGroupChatTimeDesc;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public Integer getMemberDeleteFlag() {
return memberDeleteFlag;
}
public void setMemberDeleteFlag(Integer memberDeleteFlag) {
this.memberDeleteFlag = memberDeleteFlag;
}
public String getInviteeName() {
return inviteeName;
}
public void setInviteeName(String inviteeName) {
this.inviteeName = inviteeName;
}
public String getInviteePhoneNumber() {
return inviteePhoneNumber;
}
public void setInviteePhoneNumber(String inviteePhoneNumber) {
this.inviteePhoneNumber = inviteePhoneNumber;
}
public String getInviteeNickName() {
return inviteeNickName;
}
public void setInviteeNickName(String inviteeNickName) {
this.inviteeNickName = inviteeNickName;
}
public Long getGroupChatId() {
return groupChatId;
}
public void setGroupChatId(Long groupChatId) {
this.groupChatId = groupChatId;
}
public String getGroupChatName() {
return groupChatName;
}
public void setGroupChatName(String groupChatName) {
this.groupChatName = groupChatName;
}
public String getInviteTypeDesc() {
return inviteTypeDesc;
}
public void setInviteTypeDesc(String inviteTypeDesc) {
this.inviteTypeDesc = inviteTypeDesc;
}
public String getInvalidInviteTypeDesc() {
return invalidInviteTypeDesc;
}
public void setInvalidInviteTypeDesc(String invalidInviteTypeDesc) {
this.invalidInviteTypeDesc = invalidInviteTypeDesc;
}
public String getAddMemberTypeDesc() {
return addMemberTypeDesc;
}
public void setAddMemberTypeDesc(String addMemberTypeDesc) {
this.addMemberTypeDesc = addMemberTypeDesc;
}
public String getJoinGroupChatTimeDesc() {
return joinGroupChatTimeDesc;
}
public void setJoinGroupChatTimeDesc(String joinGroupChatTimeDesc) {
this.joinGroupChatTimeDesc = joinGroupChatTimeDesc;
}
}
package com.gic.haoban.manage.web.vo.chat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.gic.web.common.jsonSeralizer.PhoneNumberJsonSeralizer;
import java.io.Serializable;
import java.util.Date;
/**
* @author shangfeng
* @date 2024-10-09 15:30:26
*/
public class GroupChatActivityInviteLogVO implements Serializable {
private static final long serialVersionUID = -7144700091431890994L;
/**
* 会员名称
*/
private String name;
/**
* 会员手机
*/
@JsonSerialize(using = PhoneNumberJsonSeralizer.class)
private String phoneNumber;
/**
* 会员别名昵称
*/
private String nickName;
/**
* 会员是否删除
* 0 正常
* 1 已删除
*/
private Integer memberDeleteFlag;
/**
* 受邀人会员名称
*/
private String inviteeName;
/**
* 受邀人会员手机
*/
@JsonSerialize(using = PhoneNumberJsonSeralizer.class)
private String inviteePhoneNumber;
/**
* 受邀人会员别名昵称
*/
private String inviteeNickName;
/**
* 社群活动id
*/
private Long chatActivityId;
/**
* 邀请人会员ID
*/
private String inviterMemberId;
/**
* 受邀人会员ID
*/
private String inviteeMemberId;
/**
* 受邀人外部联系人id
*/
private String inviteeUserId;
/**
* 姓名
*/
private String userName;
/**
* 群id
*/
private Long groupChatId;
/**
* 群名称
*/
private String groupChatName;
/**
* 有效邀请类型 1有效0无效
*/
private Integer inviteType;
/**
* 无效邀请类型 1非首次参与活动受邀入群2入群前已处于企业群聊内3非首次加入企业群聊
*/
private Integer invalidInviteType;
/**
* 是否新增会员 1是 0否 null未统计
*/
private Integer addMemberType;
/**
* 企业ID
*/
private String enterpriseId;
/**
* 入群时间
*/
private Date createTime;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public Integer getMemberDeleteFlag() {
return memberDeleteFlag;
}
public void setMemberDeleteFlag(Integer memberDeleteFlag) {
this.memberDeleteFlag = memberDeleteFlag;
}
public String getInviteeName() {
return inviteeName;
}
public void setInviteeName(String inviteeName) {
this.inviteeName = inviteeName;
}
public String getInviteePhoneNumber() {
return inviteePhoneNumber;
}
public void setInviteePhoneNumber(String inviteePhoneNumber) {
this.inviteePhoneNumber = inviteePhoneNumber;
}
public String getInviteeNickName() {
return inviteeNickName;
}
public void setInviteeNickName(String inviteeNickName) {
this.inviteeNickName = inviteeNickName;
}
public Long getChatActivityId() {
return chatActivityId;
}
public void setChatActivityId(Long chatActivityId) {
this.chatActivityId = chatActivityId;
}
public String getInviterMemberId() {
return inviterMemberId;
}
public void setInviterMemberId(String inviterMemberId) {
this.inviterMemberId = inviterMemberId;
}
public String getInviteeMemberId() {
return inviteeMemberId;
}
public void setInviteeMemberId(String inviteeMemberId) {
this.inviteeMemberId = inviteeMemberId;
}
public String getInviteeUserId() {
return inviteeUserId;
}
public void setInviteeUserId(String inviteeUserId) {
this.inviteeUserId = inviteeUserId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Long getGroupChatId() {
return groupChatId;
}
public void setGroupChatId(Long groupChatId) {
this.groupChatId = groupChatId;
}
public String getGroupChatName() {
return groupChatName;
}
public void setGroupChatName(String groupChatName) {
this.groupChatName = groupChatName;
}
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 Integer getAddMemberType() {
return addMemberType;
}
public void setAddMemberType(Integer addMemberType) {
this.addMemberType = addMemberType;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
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-12 10:07:35
*/
public class GroupChatActivityJoinDataVO implements Serializable {
private static final long serialVersionUID = 753629197049532832L;
private Long chatActivityId;
/**
* 参与人数
*/
private Integer inviterNum = 0;
/**
* 邀请进群人数
*/
private Integer inviteeNum = 0;
/**
* 有效邀请人数
*/
private Integer effectiveInviteeNum = 0;
public Long getChatActivityId() {
return chatActivityId;
}
public void setChatActivityId(Long chatActivityId) {
this.chatActivityId = chatActivityId;
}
public Integer getInviterNum() {
return inviterNum;
}
public void setInviterNum(Integer inviterNum) {
this.inviterNum = inviterNum;
}
public Integer getInviteeNum() {
return inviteeNum;
}
public void setInviteeNum(Integer inviteeNum) {
this.inviteeNum = inviteeNum;
}
public Integer getEffectiveInviteeNum() {
return effectiveInviteeNum;
}
public void setEffectiveInviteeNum(Integer effectiveInviteeNum) {
this.effectiveInviteeNum = effectiveInviteeNum;
}
}
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 com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.gic.web.common.jsonSeralizer.PhoneNumberJsonSeralizer;
import java.io.Serializable;
import java.util.Date;
/**
* @author shangfeng
* @date 2024-10-12 11:04:43
*/
public class GroupChatActivityRewardLogExportVO implements Serializable {
private static final long serialVersionUID = 881973792150280113L;
/**
* 会员是否删除
* 0 正常
* 1 已删除
*/
private Integer memberDeleteFlag;
/**
* 奖励人类型 1邀请人2受邀人
*/
private String rewardInviteType;
/**
* 奖励阶梯 阶梯奖励,其他奖励默认1
*/
private String inviteLevelType;
/**
* 会员名称
*/
private String name;
/**
* 会员手机
*/
@JsonSerialize(using = PhoneNumberJsonSeralizer.class)
private String phoneNumber;
/**
* 会员别名昵称
*/
private String nickName;
/**
* 奖励积分
*/
private Integer integral;
/**
* 奖励成长值
*/
private Integer growth;
/**
* 奖励卡券
*/
private String cardInfo;
/**
* 奖励时间
*/
private String rewardTimeDesc;
public Integer getMemberDeleteFlag() {
return memberDeleteFlag;
}
public void setMemberDeleteFlag(Integer memberDeleteFlag) {
this.memberDeleteFlag = memberDeleteFlag;
}
public String getRewardInviteType() {
return rewardInviteType;
}
public void setRewardInviteType(String rewardInviteType) {
this.rewardInviteType = rewardInviteType;
}
public String getInviteLevelType() {
return inviteLevelType;
}
public void setInviteLevelType(String inviteLevelType) {
this.inviteLevelType = inviteLevelType;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public Integer getIntegral() {
return integral;
}
public void setIntegral(Integer integral) {
this.integral = integral;
}
public Integer getGrowth() {
return growth;
}
public void setGrowth(Integer growth) {
this.growth = growth;
}
public String getCardInfo() {
return cardInfo;
}
public void setCardInfo(String cardInfo) {
this.cardInfo = cardInfo;
}
public String getRewardTimeDesc() {
return rewardTimeDesc;
}
public void setRewardTimeDesc(String rewardTimeDesc) {
this.rewardTimeDesc = rewardTimeDesc;
}
}
package com.gic.haoban.manage.web.vo.chat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.gic.web.common.jsonSeralizer.PhoneNumberJsonSeralizer;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @author shangfeng
* @date 2024-10-10 15:40:38
*/
public class GroupChatActivityRewardLogVO implements Serializable {
private static final long serialVersionUID = -5069228984771030367L;
/**
* 社群活动奖励id
*/
private Long chatActivityRewardLogId;
/**
* 社群活动id
*/
private Long chatActivityId;
/**
* 会员ID
*/
private String memberId;
/**
* 会员是否删除
* 0 正常
* 1 已删除
*/
private Integer memberDeleteFlag;
/**
* 奖励人类型 1邀请人2受邀人
*/
private Integer rewardInvite;
/**
* 奖励阶梯 阶梯奖励,其他奖励默认1
*/
private Integer inviteLevel;
/**
* 奖励时间
*/
private Date createTime;
/**
* 会员名称
*/
private String name;
/**
* 会员手机
*/
@JsonSerialize(using = PhoneNumberJsonSeralizer.class)
private String phoneNumber;
/**
* 会员别名昵称
*/
private String nickName;
/**
* 奖励积分
*/
private Integer integral = 0;
/**
* 奖励成长值
*/
private Integer growth = 0;
/**
* 奖励卡券
*/
private String cardInfo;
/**
* 卡券信息
*/
private List<CouponInfo> couponInfoList;
public static class CouponInfo implements Serializable{
private static final long serialVersionUID = -3497165176440213961L;
/**
* 卡券名称
*/
private String couponName;
/**
* 奖励id
*/
private String couponCardId;
/**
* 奖励关联业务日志id
*/
private String failReason;
/**
* 操作奖励是否成功 1是 0否
*/
private Integer successFlag;
public String getCouponName() {
return couponName;
}
public void setCouponName(String couponName) {
this.couponName = couponName;
}
public String getCouponCardId() {
return couponCardId;
}
public void setCouponCardId(String couponCardId) {
this.couponCardId = couponCardId;
}
public String getFailReason() {
return failReason;
}
public void setFailReason(String failReason) {
this.failReason = failReason;
}
public Integer getSuccessFlag() {
return successFlag;
}
public void setSuccessFlag(Integer successFlag) {
this.successFlag = successFlag;
}
}
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 getMemberDeleteFlag() {
return memberDeleteFlag;
}
public void setMemberDeleteFlag(Integer memberDeleteFlag) {
this.memberDeleteFlag = memberDeleteFlag;
}
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 String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public Integer getIntegral() {
return integral;
}
public void setIntegral(Integer integral) {
this.integral = integral;
}
public Integer getGrowth() {
return growth;
}
public void setGrowth(Integer growth) {
this.growth = growth;
}
public String getCardInfo() {
return cardInfo;
}
public void setCardInfo(String cardInfo) {
this.cardInfo = cardInfo;
}
public List<CouponInfo> getCouponInfoList() {
return couponInfoList;
}
public void setCouponInfoList(List<CouponInfo> couponInfoList) {
this.couponInfoList = couponInfoList;
}
}
package com.gic.haoban.manage.web.vo.chat;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityDTO;
import com.gic.haoban.manage.web.vo.MemberLabelVO;
import com.gic.marketing.api.dto.card.CardStockAndInvalidDTO;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
public class GroupChatActivityVO extends GroupChatActivityDTO implements Serializable {
/**
* 卡券信息Map key:卡券id value:卡券基本信息(包括卡券库存、状态、名称)
*/
private Map<String, CardStockAndInvalidDTO> couponMap;
/**
* 群活码Map
*/
private Map<String,GroupChatHmVO> chatHmMap;
/**
* 标签Map
*/
private Map<String, MemberLabelVO> labelMap;
/**
* 人群回显 会员筛选key:searchId,客户分组key:tagGroupList
*/
private List<Map<String, Object>> memberWeightViewList;
public Map<String, CardStockAndInvalidDTO> getCouponMap() {
return couponMap;
}
public void setCouponMap(Map<String, CardStockAndInvalidDTO> couponMap) {
this.couponMap = couponMap;
}
public Map<String, GroupChatHmVO> getChatHmMap() {
return chatHmMap;
}
public void setChatHmMap(Map<String, GroupChatHmVO> chatHmMap) {
this.chatHmMap = chatHmMap;
}
public List<Map<String, Object>> getMemberWeightViewList() {
return memberWeightViewList;
}
public void setMemberWeightViewList(List<Map<String, Object>> memberWeightViewList) {
this.memberWeightViewList = memberWeightViewList;
}
public Map<String, MemberLabelVO> getLabelMap() {
return labelMap;
}
public void setLabelMap(Map<String, MemberLabelVO> labelMap) {
this.labelMap = labelMap;
}
}
package com.gic.haoban.manage.web.vo.chat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.gic.web.common.jsonSeralizer.PhoneNumberJsonSeralizer;
import java.io.Serializable;
/**
* @author shangfeng
* @date 2024-10-09 13:48:42
*/
public class GroupChatDataJoinDetailVO implements Serializable {
private static final long serialVersionUID = -9115767612425777699L;
/**
* 活动id
*/
private String chatActivityId;
/**
* 会员名称
*/
private String name;
/**
* 会员手机
*/
@JsonSerialize(using = PhoneNumberJsonSeralizer.class)
private String phoneNumber;
/**
* 会员别名昵称
*/
private String nickName;
/**
* 会员是否删除
* 0 正常
* 1 已删除
*/
private Integer memberDeleteFlag;
/**
* 邀请进群人数
*/
private Integer inviteeNum;
/**
* 有效邀请人数
*/
private Integer effectiveInviteeNum;
/**
* 入群客户数
*/
private Integer inviteeMemberNum;
/**
* 入群游客数
*/
private Integer inviteeNonMemberNum;
/**
* 新增会员数
*/
private Integer newMemberNum;
/**
* 发放积分数
*/
private Integer integralCnt;
/**
* 发放成长值数
*/
private Integer growCnt;
/**
* 发放卡券数
*/
private Integer cardCnt;
/**
* 参与会员id
*/
private String inviterMemberId;
public String getChatActivityId() {
return chatActivityId;
}
public void setChatActivityId(String chatActivityId) {
this.chatActivityId = chatActivityId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public Integer getMemberDeleteFlag() {
return memberDeleteFlag;
}
public void setMemberDeleteFlag(Integer memberDeleteFlag) {
this.memberDeleteFlag = memberDeleteFlag;
}
public Integer getInviteeNum() {
return inviteeNum;
}
public void setInviteeNum(Integer inviteeNum) {
this.inviteeNum = inviteeNum;
}
public Integer getEffectiveInviteeNum() {
return effectiveInviteeNum;
}
public void setEffectiveInviteeNum(Integer effectiveInviteeNum) {
this.effectiveInviteeNum = effectiveInviteeNum;
}
public Integer getInviteeMemberNum() {
return inviteeMemberNum;
}
public void setInviteeMemberNum(Integer inviteeMemberNum) {
this.inviteeMemberNum = inviteeMemberNum;
}
public Integer getInviteeNonMemberNum() {
return inviteeNonMemberNum;
}
public void setInviteeNonMemberNum(Integer inviteeNonMemberNum) {
this.inviteeNonMemberNum = inviteeNonMemberNum;
}
public Integer getNewMemberNum() {
return newMemberNum;
}
public void setNewMemberNum(Integer newMemberNum) {
this.newMemberNum = newMemberNum;
}
public Integer getIntegralCnt() {
return integralCnt;
}
public void setIntegralCnt(Integer integralCnt) {
this.integralCnt = integralCnt;
}
public Integer getGrowCnt() {
return growCnt;
}
public void setGrowCnt(Integer growCnt) {
this.growCnt = growCnt;
}
public Integer getCardCnt() {
return cardCnt;
}
public void setCardCnt(Integer cardCnt) {
this.cardCnt = cardCnt;
}
public String getInviterMemberId() {
return inviterMemberId;
}
public void setInviterMemberId(String inviterMemberId) {
this.inviterMemberId = inviterMemberId;
}
}
package com.gic.haoban.manage.web.vo.chat;
import java.io.Serializable;
/**
* @author shangfeng
* @date 2024-10-09 13:39:59
*/
public class GroupChatDataOverviewVO implements Serializable {
private static final long serialVersionUID = 8755443030113022176L;
/**
* 活动id
*/
private String chatActivityId;
/**
* 分享人数
*/
private Integer shareNum;
/**
* 参与人数
*/
private Integer inviterNum;
/**
* 邀请进群人数
*/
private Integer inviteeNum;
/**
* 有效邀请人数
*/
private Integer effectiveInviteeNum;
/**
* 入群客户数
*/
private Integer inviteeMemberNum;
/**
* 入群游客数
*/
private Integer inviteeNonMemberNum;
/**
* 新增会员数
*/
private Integer newMemberNum;
/**
* 发放积分数
*/
private Integer integralCnt;
/**
* 发放成长值数
*/
private Integer growCnt;
/**
* 发放卡券数
*/
private Integer cardCnt;
public String getChatActivityId() {
return chatActivityId;
}
public void setChatActivityId(String chatActivityId) {
this.chatActivityId = chatActivityId;
}
public Integer getShareNum() {
return shareNum;
}
public void setShareNum(Integer shareNum) {
this.shareNum = shareNum;
}
public Integer getInviterNum() {
return inviterNum;
}
public void setInviterNum(Integer inviterNum) {
this.inviterNum = inviterNum;
}
public Integer getInviteeNum() {
return inviteeNum;
}
public void setInviteeNum(Integer inviteeNum) {
this.inviteeNum = inviteeNum;
}
public Integer getEffectiveInviteeNum() {
return effectiveInviteeNum;
}
public void setEffectiveInviteeNum(Integer effectiveInviteeNum) {
this.effectiveInviteeNum = effectiveInviteeNum;
}
public Integer getInviteeMemberNum() {
return inviteeMemberNum;
}
public void setInviteeMemberNum(Integer inviteeMemberNum) {
this.inviteeMemberNum = inviteeMemberNum;
}
public Integer getInviteeNonMemberNum() {
return inviteeNonMemberNum;
}
public void setInviteeNonMemberNum(Integer inviteeNonMemberNum) {
this.inviteeNonMemberNum = inviteeNonMemberNum;
}
public Integer getNewMemberNum() {
return newMemberNum;
}
public void setNewMemberNum(Integer newMemberNum) {
this.newMemberNum = newMemberNum;
}
public Integer getIntegralCnt() {
return integralCnt;
}
public void setIntegralCnt(Integer integralCnt) {
this.integralCnt = integralCnt;
}
public Integer getGrowCnt() {
return growCnt;
}
public void setGrowCnt(Integer growCnt) {
this.growCnt = growCnt;
}
public Integer getCardCnt() {
return cardCnt;
}
public void setCardCnt(Integer cardCnt) {
this.cardCnt = cardCnt;
}
}
package com.gic.haoban.manage.web.vo.chat;
import java.io.Serializable;
/**
* @author shangfeng
* @date 2024-10-09 13:44:27
*/
public class GroupChatDataRewardLevelVO implements Serializable {
private static final long serialVersionUID = -7250228098078933442L;
/**
* 活动id
*/
private String chatActivityId;
/**
* 奖励阶梯
*/
private Integer inviteLevel;
/**
* 阶梯达成人数
*/
private Integer rewardNum;
public String getChatActivityId() {
return chatActivityId;
}
public void setChatActivityId(String chatActivityId) {
this.chatActivityId = chatActivityId;
}
public Integer getInviteLevel() {
return inviteLevel;
}
public void setInviteLevel(Integer inviteLevel) {
this.inviteLevel = inviteLevel;
}
public Integer getRewardNum() {
return rewardNum;
}
public void setRewardNum(Integer rewardNum) {
this.rewardNum = rewardNum;
}
}
...@@ -25,6 +25,9 @@ ...@@ -25,6 +25,9 @@
<dubbo:reference interface="com.gic.haoban.manage.api.service.chat.GroupChatPlanApiService" id="groupChatPlanApiService" timeout="10000"/> <dubbo:reference interface="com.gic.haoban.manage.api.service.chat.GroupChatPlanApiService" id="groupChatPlanApiService" timeout="10000"/>
<dubbo:reference interface="com.gic.haoban.manage.api.service.chat.GroupChatApiService" id="groupChatApiService" timeout="10000"/> <dubbo:reference interface="com.gic.haoban.manage.api.service.chat.GroupChatApiService" id="groupChatApiService" timeout="10000"/>
<dubbo:reference interface="com.gic.haoban.manage.api.service.chat.GroupChatHmApiService" id="groupChatHmApiService" timeout="10000"/> <dubbo:reference interface="com.gic.haoban.manage.api.service.chat.GroupChatHmApiService" id="groupChatHmApiService" timeout="10000"/>
<dubbo:reference interface="com.gic.haoban.manage.api.service.chat.GroupChatActivityApiService" id="groupChatActivityApiService" timeout="10000"/>
<dubbo:reference interface="com.gic.haoban.manage.api.service.chat.GroupChatActivityLogApiService" id="groupChatActivityLogApiService" timeout="10000"/>
<dubbo:reference interface="com.gic.enterprise.api.service.EnterpriseWxaLinkService" id="enterpriseWxaLinkService" timeout="100000" retries="0" check="false" />
<dubbo:reference interface="com.gic.haoban.manage.api.service.QwFriendApiService" id="qwFriendApiService" timeout="10000"/> <dubbo:reference interface="com.gic.haoban.manage.api.service.QwFriendApiService" id="qwFriendApiService" timeout="10000"/>
<dubbo:reference interface="com.gic.haoban.manage.api.service.hm.WxUserAddLogApiService" id="wxUserAddLogApiService" timeout="10000"/> <dubbo:reference interface="com.gic.haoban.manage.api.service.hm.WxUserAddLogApiService" id="wxUserAddLogApiService" timeout="10000"/>
<dubbo:reference interface="com.gic.member.tag.api.service.MemberTagApiService" id="memberTagApiService" timeout="10000"/> <dubbo:reference interface="com.gic.member.tag.api.service.MemberTagApiService" id="memberTagApiService" timeout="10000"/>
...@@ -139,5 +142,6 @@ ...@@ -139,5 +142,6 @@
<dubbo:reference interface="com.gic.haoban.manage.api.service.licence.LicenceOrderApiService" id="licenceOrderApiService"/> <dubbo:reference interface="com.gic.haoban.manage.api.service.licence.LicenceOrderApiService" id="licenceOrderApiService"/>
<dubbo:reference id="pay4WXService" interface="com.gic.thirdparty.api.service.Pay4WXService" timeout="10000" retries="0" check="false"/> <dubbo:reference id="pay4WXService" interface="com.gic.thirdparty.api.service.Pay4WXService" timeout="10000" retries="0" check="false"/>
<dubbo:reference id="appOrderApiService" interface="com.gic.haoban.manage.api.service.licence.AppOrderApiService" timeout="10000" retries="0" check="false"/> <dubbo:reference id="appOrderApiService" interface="com.gic.haoban.manage.api.service.licence.AppOrderApiService" timeout="10000" retries="0" check="false"/>
<dubbo:reference id="couponCardService" interface="com.gic.marketing.api.service.CouponCardService" timeout="100000" retries="0" check="false" />
</beans> </beans>
...@@ -5,6 +5,7 @@ import com.gic.commons.util.EntityUtil; ...@@ -5,6 +5,7 @@ import com.gic.commons.util.EntityUtil;
import com.gic.commons.webapi.reponse.RestResponse; import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.content.api.dto.setting.ContentSettingDTO; import com.gic.content.api.dto.setting.ContentSettingDTO;
import com.gic.content.api.service.ContentSettingApiService; import com.gic.content.api.service.ContentSettingApiService;
import com.gic.haoban.manage.web.utils.ApolloUtils;
import com.gic.haoban.manage.web.vo.content.ContentSettingVO; import com.gic.haoban.manage.web.vo.content.ContentSettingVO;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -39,6 +40,7 @@ public class ContentSettingController { ...@@ -39,6 +40,7 @@ public class ContentSettingController {
return RestResponse.failure(serviceResponse.getCode(), serviceResponse.getMessage()); return RestResponse.failure(serviceResponse.getCode(), serviceResponse.getMessage());
} }
ContentSettingVO contentSettingVO = EntityUtil.changeEntityByJSON(ContentSettingVO.class, serviceResponse.getResult()); ContentSettingVO contentSettingVO = EntityUtil.changeEntityByJSON(ContentSettingVO.class, serviceResponse.getResult());
contentSettingVO.setCombinedType(ApolloUtils.combinedType(enterpriseId));
return RestResponse.successResult(contentSettingVO); return RestResponse.successResult(contentSettingVO);
} }
} }
...@@ -3,11 +3,15 @@ package com.gic.haoban.manage.web.controller.content; ...@@ -3,11 +3,15 @@ package com.gic.haoban.manage.web.controller.content;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.gic.haoban.manage.api.qdto.combined.CombinedQDTO;
import com.gic.haoban.manage.web.qo.combined.CombinedQO;
import com.gic.haoban.manage.web.qo.combined.CombinedsQO;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
...@@ -171,4 +175,16 @@ public class QwMessageController extends WebBaseController { ...@@ -171,4 +175,16 @@ public class QwMessageController extends WebBaseController {
} }
return RestResponse.failure("-1", resp.getMessage()) ; return RestResponse.failure("-1", resp.getMessage()) ;
} }
@RequestMapping("combined-qw-materialid")
public RestResponse<Object> combinedMaterialId(@RequestBody CombinedQO combinedQO) {
String wxEnterpriseId = combinedQO.getWxEnterpriseId();
CombinedQDTO combinedQDTO = com.gic.commons.util.EntityUtil.changeEntityNew(CombinedQDTO.class, combinedQO);
ServiceResponse<String> resp = this.materialApiService.getMaterialIdByCombined(wxEnterpriseId, combinedQDTO) ;
if(resp.isSuccess()) {
return RestResponse.successResult(resp.getResult()) ;
}
return RestResponse.failure("-1", resp.getMessage()) ;
}
} }
package com.gic.haoban.manage.web.qo.combined;
import java.io.Serializable;
public class CombinedQO implements Serializable {
private static final long serialVersionUID = -28454620622119889L;
private String wxEnterpriseId;
/**
* 主图url
*/
private String imageUrl;
/**
* 小程序码url
*/
private String qrCodeUrl;
/**
* 展示样式
*/
private Integer showStyle;
/**
* 第一行文字
*/
private String lineOne;
/**
* 第二行文字
*/
private String lineTwo;
/**
* 1群发 2朋友圈
*/
private Integer mediaType ;
/**
* 导购id(作标识)
*/
private String clerkId;
/**
* 业务id(作标识)
*/
private String businessId;
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public String getImageUrl() {
return imageUrl;
}
public void setImageUrl(String imageUrl) {
this.imageUrl = imageUrl;
}
public String getQrCodeUrl() {
return qrCodeUrl;
}
public void setQrCodeUrl(String qrCodeUrl) {
this.qrCodeUrl = qrCodeUrl;
}
public Integer getShowStyle() {
return showStyle;
}
public void setShowStyle(Integer showStyle) {
this.showStyle = showStyle;
}
public String getLineOne() {
return lineOne;
}
public void setLineOne(String lineOne) {
this.lineOne = lineOne;
}
public String getLineTwo() {
return lineTwo;
}
public void setLineTwo(String lineTwo) {
this.lineTwo = lineTwo;
}
public Integer getMediaType() {
return mediaType;
}
public void setMediaType(Integer mediaType) {
this.mediaType = mediaType;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public String getBusinessId() {
return businessId;
}
public void setBusinessId(String businessId) {
this.businessId = businessId;
}
}
package com.gic.haoban.manage.web.qo.combined;
import java.io.Serializable;
import java.util.List;
public class CombinedsQO implements Serializable {
private static final long serialVersionUID = -28454620622119889L;
private String wxEnterpriseId;
/**
* 主图url
*/
private List<String> imageUrlList;
/**
* 小程序码url
*/
private String qrCodeUrl;
/**
* 展示样式
*/
private Integer showStyle;
/**
* 第一行文字
*/
private String lineOne;
/**
* 第二行文字
*/
private String lineTwo;
/**
* 1群发 2朋友圈
*/
private Integer mediaType ;
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public List<String> getImageUrlList() {
return imageUrlList;
}
public void setImageUrlList(List<String> imageUrlList) {
this.imageUrlList = imageUrlList;
}
public String getQrCodeUrl() {
return qrCodeUrl;
}
public void setQrCodeUrl(String qrCodeUrl) {
this.qrCodeUrl = qrCodeUrl;
}
public Integer getShowStyle() {
return showStyle;
}
public void setShowStyle(Integer showStyle) {
this.showStyle = showStyle;
}
public String getLineOne() {
return lineOne;
}
public void setLineOne(String lineOne) {
this.lineOne = lineOne;
}
public String getLineTwo() {
return lineTwo;
}
public void setLineTwo(String lineTwo) {
this.lineTwo = lineTwo;
}
public Integer getMediaType() {
return mediaType;
}
public void setMediaType(Integer mediaType) {
this.mediaType = mediaType;
}
}
package com.gic.haoban.manage.web.utils;
import com.ctrip.framework.apollo.Config;
import com.ctrip.framework.apollo.ConfigService;
import com.gic.api.base.commons.Constant;
import org.apache.commons.lang3.StringUtils;
public class ApolloUtils {
/**
* 内容分享企微素材使用老的前端合成还是新的后端合成 0老1新
* @return
*/
public static Integer combinedType(String eid) {
Config config = ConfigService.getAppConfig();
String combinedEid = config.getProperty("combinedEid", "");
if (StringUtils.isBlank(combinedEid)) {
return Constant.FLAG_TRUE;
}
return combinedEid.contains(eid) ? Constant.FLAG_TRUE : Constant.FLAG_FALSE;
}
}
...@@ -75,6 +75,11 @@ public class ContentSettingVO implements Serializable { ...@@ -75,6 +75,11 @@ public class ContentSettingVO implements Serializable {
*/ */
private Integer showStyle; private Integer showStyle;
/**
* 0老模式1新模式
*/
private Integer combinedType;
public Long getContentSettingId() { public Long getContentSettingId() {
return contentSettingId; return contentSettingId;
} }
...@@ -170,4 +175,12 @@ public class ContentSettingVO implements Serializable { ...@@ -170,4 +175,12 @@ public class ContentSettingVO implements Serializable {
public void setShowStyle(Integer showStyle) { public void setShowStyle(Integer showStyle) {
this.showStyle = showStyle; this.showStyle = showStyle;
} }
public Integer getCombinedType() {
return combinedType;
}
public void setCombinedType(Integer combinedType) {
this.combinedType = combinedType;
}
} }
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