Commit 6208acb9 by 王祖波

社群活动邀请逻辑

parent a4094846
package com.gic.haoban.manage.api.dto.chat; package com.gic.haoban.manage.api.dto.chat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 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 com.google.common.base.Objects;
import java.io.Serializable; import java.io.Serializable;
...@@ -17,12 +19,12 @@ public class GroupChatActivityJoinDTO implements Serializable { ...@@ -17,12 +19,12 @@ public class GroupChatActivityJoinDTO implements Serializable {
/** /**
* 社群活动入群规则id * 社群活动入群规则id
*/ */
@JsonIgnoreProperties(ignoreUnknown = true) @JsonSerialize(using = ToStringSerializer.class)
private Long chatActivityJoinId; private Long chatActivityJoinId;
/** /**
* 内容活动id * 内容活动id
*/ */
@JsonIgnoreProperties(ignoreUnknown = true) @JsonSerialize(using = ToStringSerializer.class)
private Long chatActivityId; private Long chatActivityId;
/** /**
* 会员类型(0:会员筛选,1:会员分组) * 会员类型(0:会员筛选,1:会员分组)
...@@ -43,7 +45,7 @@ public class GroupChatActivityJoinDTO implements Serializable { ...@@ -43,7 +45,7 @@ public class GroupChatActivityJoinDTO implements Serializable {
/** /**
* 群活码id * 群活码id
*/ */
@JsonIgnoreProperties(ignoreUnknown = true) @JsonSerialize(using = ToStringSerializer.class)
private Long chatHmId; private Long chatHmId;
public Long getChatActivityJoinId() { public Long getChatActivityJoinId() {
......
...@@ -3,6 +3,7 @@ package com.gic.haoban.manage.api.dto.chat; ...@@ -3,6 +3,7 @@ package com.gic.haoban.manage.api.dto.chat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.google.common.base.Objects; import com.google.common.base.Objects;
import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import java.io.Serializable; import java.io.Serializable;
...@@ -52,7 +53,7 @@ public class GroupChatActivityRewardBaseDTO implements Serializable { ...@@ -52,7 +53,7 @@ public class GroupChatActivityRewardBaseDTO implements Serializable {
*/ */
private String rewardValue; private String rewardValue;
/** /**
* 奖励名称 积分名称 成长值名称 卡券名称(逗号分隔) * 奖励名称 积分名称 成长值名称 卡券名称
*/ */
private String rewardName; private String rewardName;
...@@ -157,7 +158,7 @@ public class GroupChatActivityRewardBaseDTO implements Serializable { ...@@ -157,7 +158,7 @@ public class GroupChatActivityRewardBaseDTO implements Serializable {
.collect(Collectors.groupingBy( .collect(Collectors.groupingBy(
GroupChatActivityRewardBaseDTO::getRewardInvite, GroupChatActivityRewardBaseDTO::getRewardInvite,
Collectors.collectingAndThen( Collectors.collectingAndThen(
Collectors.groupingBy(baseDTO -> Arrays.asList(baseDTO.getChatActivityId(), baseDTO.getInviteLevel())), Collectors.groupingBy(baseDTO -> Lists.newArrayList(baseDTO.getChatActivityId(), baseDTO.getInviteLevel())),
chatActivityGroups -> chatActivityGroups.values().stream() chatActivityGroups -> chatActivityGroups.values().stream()
.map(group -> { .map(group -> {
GroupChatActivityRewardBaseDTO firstDTO = group.get(0); GroupChatActivityRewardBaseDTO firstDTO = group.get(0);
......
...@@ -23,7 +23,7 @@ public class GroupChatActivityRewardDetailDTO implements Serializable { ...@@ -23,7 +23,7 @@ public class GroupChatActivityRewardDetailDTO implements Serializable {
*/ */
private String rewardValue; private String rewardValue;
/** /**
* 奖励名称 积分名称 成长值名称 卡券名称(逗号分隔) * 奖励名称 积分名称 成长值名称 卡券名称
*/ */
private String rewardName; private String rewardName;
......
...@@ -42,7 +42,7 @@ public class GroupChatActivityRewardDetailLogDTO implements Serializable { ...@@ -42,7 +42,7 @@ public class GroupChatActivityRewardDetailLogDTO implements Serializable {
private Integer rewardType; private Integer rewardType;
/** /**
* 奖励内容 积分值 成长值 卡券id * 奖励内容 积分值 成长值 卡券id(逗号分隔)
*/ */
private String rewardValue; private String rewardValue;
......
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;
}
}
...@@ -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);
} }
...@@ -94,6 +94,12 @@ public class JoinRuleManager { ...@@ -94,6 +94,12 @@ public class JoinRuleManager {
R apply(T t) throws BusinessException; R apply(T t) throws BusinessException;
} }
/**
* 获取入群群活码
* @param activityHmQDTO qdto
* @return
* @throws BusinessException
*/
public List<GroupChatHmBO> listGroupHm(GroupChatActivityHmQDTO activityHmQDTO) throws BusinessException{ public List<GroupChatHmBO> listGroupHm(GroupChatActivityHmQDTO activityHmQDTO) throws BusinessException{
GroupChatActivityDTO chatActivity = activityHmQDTO.getChatActivity(); GroupChatActivityDTO chatActivity = activityHmQDTO.getChatActivity();
String inviteeMemberId = activityHmQDTO.getInviteeMemberId(); String inviteeMemberId = activityHmQDTO.getInviteeMemberId();
...@@ -137,6 +143,13 @@ public class JoinRuleManager { ...@@ -137,6 +143,13 @@ public class JoinRuleManager {
return null; return null;
} }
/**
* 校验会员是否满足校验条件
* @param chatActivity 社群活动
* @param joinDTO 入群规则
* @param memberId 受邀人id
* @return
*/
private boolean checkActivityMember(GroupChatActivityDTO chatActivity,GroupChatActivityJoinDTO joinDTO,String memberId) { private boolean checkActivityMember(GroupChatActivityDTO chatActivity,GroupChatActivityJoinDTO joinDTO,String memberId) {
String enterpriseId = chatActivity.getEnterpriseId(); String enterpriseId = chatActivity.getEnterpriseId();
Integer memberType = joinDTO.getMemberType(); Integer memberType = joinDTO.getMemberType();
...@@ -158,7 +171,7 @@ public class JoinRuleManager { ...@@ -158,7 +171,7 @@ public class JoinRuleManager {
dto.setMemberId(memberId); dto.setMemberId(memberId);
exist = memberTagGroupApiService.memberIsExistGroup(dto); exist = memberTagGroupApiService.memberIsExistGroup(dto);
} }
logger.info("activity:{},memberId:{}无权限",chatActivity.getChatActivityId(),memberId); logger.info("activity:{},memberId:{},joinId:{},有无权限:{}",chatActivity.getChatActivityId(),memberId,joinDTO.getChatActivityJoinId(),exist);
return exist; return exist;
} }
...@@ -172,6 +185,11 @@ public class JoinRuleManager { ...@@ -172,6 +185,11 @@ public class JoinRuleManager {
return null; return null;
} }
/**
* 获取邀请人所在群群活码
* @param activityHmQDTO qdto
* @return
*/
private List<GroupChatHmBO> handleInviterChat(GroupChatActivityHmQDTO activityHmQDTO) { private List<GroupChatHmBO> handleInviterChat(GroupChatActivityHmQDTO activityHmQDTO) {
String wxEnterpriseId = activityHmQDTO.getChatActivity().getWxEnterpriseId(); String wxEnterpriseId = activityHmQDTO.getChatActivity().getWxEnterpriseId();
String enterpriseId = activityHmQDTO.getEnterpriseId(); String enterpriseId = activityHmQDTO.getEnterpriseId();
...@@ -205,6 +223,11 @@ public class JoinRuleManager { ...@@ -205,6 +223,11 @@ public class JoinRuleManager {
return listPage.getResult(); return listPage.getResult();
} }
/**
* 获取会员主门店群活码
* @param activityHmQDTO qdto
* @return
*/
private List<GroupChatHmBO> handleMainStore(GroupChatActivityHmQDTO activityHmQDTO) { private List<GroupChatHmBO> handleMainStore(GroupChatActivityHmQDTO activityHmQDTO) {
String enterpriseId = activityHmQDTO.getEnterpriseId(); String enterpriseId = activityHmQDTO.getEnterpriseId();
String wxEnterpriseId = activityHmQDTO.getChatActivity().getWxEnterpriseId(); String wxEnterpriseId = activityHmQDTO.getChatActivity().getWxEnterpriseId();
...@@ -219,6 +242,11 @@ public class JoinRuleManager { ...@@ -219,6 +242,11 @@ public class JoinRuleManager {
return getByStoreIdList(enterpriseId,wxEnterpriseId, Lists.newArrayList(mainStoreId)); return getByStoreIdList(enterpriseId,wxEnterpriseId, Lists.newArrayList(mainStoreId));
} }
/**
* 获取会员协管门店群活码
* @param activityHmQDTO qdto
* @return
*/
private List<GroupChatHmBO> handleOtherStore(GroupChatActivityHmQDTO activityHmQDTO) { private List<GroupChatHmBO> handleOtherStore(GroupChatActivityHmQDTO activityHmQDTO) {
String enterpriseId = activityHmQDTO.getEnterpriseId(); String enterpriseId = activityHmQDTO.getEnterpriseId();
String wxEnterpriseId = activityHmQDTO.getChatActivity().getWxEnterpriseId(); String wxEnterpriseId = activityHmQDTO.getChatActivity().getWxEnterpriseId();
...@@ -233,6 +261,12 @@ public class JoinRuleManager { ...@@ -233,6 +261,12 @@ public class JoinRuleManager {
return getByStoreIdList(enterpriseId,wxEnterpriseId, assistantStoreIds); return getByStoreIdList(enterpriseId,wxEnterpriseId, assistantStoreIds);
} }
/**
* 获取会员最近定位门店群活码
* @param activityHmQDTO qdto
* @return
* @throws BusinessException
*/
private List<GroupChatHmBO> handleLbs(GroupChatActivityHmQDTO activityHmQDTO) throws BusinessException { private List<GroupChatHmBO> handleLbs(GroupChatActivityHmQDTO activityHmQDTO) throws BusinessException {
String enterpriseId = activityHmQDTO.getEnterpriseId(); String enterpriseId = activityHmQDTO.getEnterpriseId();
String wxEnterpriseId = activityHmQDTO.getChatActivity().getWxEnterpriseId(); String wxEnterpriseId = activityHmQDTO.getChatActivity().getWxEnterpriseId();
...@@ -280,6 +314,13 @@ public class JoinRuleManager { ...@@ -280,6 +314,13 @@ public class JoinRuleManager {
return storeToHmMap.get(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) { private List<GroupChatHmBO> getByStoreIdList(String enterpriseId,String wxEnterpriseId,List<String> storeIdList) {
logger.info("门店id列表:{}",JSON.toJSONString(storeIdList)); logger.info("门店id列表:{}",JSON.toJSONString(storeIdList));
// 获取导购列表 // 获取导购列表
...@@ -327,6 +368,13 @@ public class JoinRuleManager { ...@@ -327,6 +368,13 @@ public class JoinRuleManager {
} }
/**
* 获取门店id对应群活码映射
* @param enterpriseId 企业id
* @param wxEnterpriseId 好办企业id
* @param storeIdList 门店id列表
* @return
*/
private Map<String, List<GroupChatHmBO>> getStoreIdToGroupChatHmBOMap(String enterpriseId,String wxEnterpriseId,List<String> storeIdList) { private Map<String, List<GroupChatHmBO>> getStoreIdToGroupChatHmBOMap(String enterpriseId,String wxEnterpriseId,List<String> storeIdList) {
logger.info("门店id列表:{}",JSON.toJSONString(storeIdList)); logger.info("门店id列表:{}",JSON.toJSONString(storeIdList));
Page<ClerkDTO> page = clerkService.pageClerkByNameOrCode(enterpriseId,"",storeIdList,1,10000); Page<ClerkDTO> page = clerkService.pageClerkByNameOrCode(enterpriseId,"",storeIdList,1,10000);
......
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()));
}
}
...@@ -30,7 +30,7 @@ public interface GroupChatActivityInviteLogMapper { ...@@ -30,7 +30,7 @@ public interface GroupChatActivityInviteLogMapper {
* @param pageable 分页对象 * @param pageable 分页对象
* @return 对象列表 * @return 对象列表
*/ */
List<TabGroupChatActivityInviteLog> queryAllByLimit(TabGroupChatActivityInviteLog tabGroupChatActivityInviteLog, @Param("pageable") Pageable pageable); List<TabGroupChatActivityInviteLog> queryAll(TabGroupChatActivityInviteLog tabGroupChatActivityInviteLog);
/** /**
* 统计总行数 * 统计总行数
...@@ -49,39 +49,6 @@ public interface GroupChatActivityInviteLogMapper { ...@@ -49,39 +49,6 @@ public interface GroupChatActivityInviteLogMapper {
int insert(TabGroupChatActivityInviteLog tabGroupChatActivityInviteLog); int insert(TabGroupChatActivityInviteLog tabGroupChatActivityInviteLog);
/** /**
* 批量新增数据(MyBatis原生foreach方法)
*
* @param entities List<TabHaobanGroupChatActivityInviteLog> 实例对象列表
* @return 影响行数
*/
int insertBatch(@Param("entities") List<TabGroupChatActivityInviteLog> entities);
/**
* 批量新增或按主键更新数据(MyBatis原生foreach方法)
*
* @param entities List<TabHaobanGroupChatActivityInviteLog> 实例对象列表
* @return 影响行数
* @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参
*/
int insertOrUpdateBatch(@Param("entities") List<TabGroupChatActivityInviteLog> entities);
/**
* 修改数据
*
* @param tabGroupChatActivityInviteLog 实例对象
* @return 影响行数
*/
int update(TabGroupChatActivityInviteLog tabGroupChatActivityInviteLog);
/**
* 通过主键删除数据
*
* @param chatActivityInviteId 主键
* @return 影响行数
*/
int deleteById(Long chatActivityInviteId);
/**
* 根据活动id和要求人查询当前最大批次 * 根据活动id和要求人查询当前最大批次
* 有效邀请 * 有效邀请
* *
......
...@@ -57,14 +57,6 @@ public interface GroupChatActivityRewardDetailLogMapper { ...@@ -57,14 +57,6 @@ public interface GroupChatActivityRewardDetailLogMapper {
int update(TabGroupChatActivityRewardDetailLog tabGroupChatActivityRewardDetailLog); int update(TabGroupChatActivityRewardDetailLog tabGroupChatActivityRewardDetailLog);
/** /**
* 通过主键删除数据
*
* @param chatActivityRewardDetailId 主键
* @return 影响行数
*/
int deleteById(Long chatActivityRewardDetailId);
/**
* 批量查询奖励明细 * 批量查询奖励明细
* *
* @param rewardDetailLogQDTO * @param rewardDetailLogQDTO
......
...@@ -32,6 +32,10 @@ public class TabGroupChatActivityInviteLog implements Serializable { ...@@ -32,6 +32,10 @@ public class TabGroupChatActivityInviteLog implements Serializable {
*/ */
private String inviteeUserId; private String inviteeUserId;
/** /**
* 受邀人unionId
*/
private String inviteeUnionId;
/**
* 姓名 * 姓名
*/ */
private String userName; private String userName;
...@@ -115,6 +119,14 @@ public class TabGroupChatActivityInviteLog implements Serializable { ...@@ -115,6 +119,14 @@ public class TabGroupChatActivityInviteLog implements Serializable {
this.inviteeUserId = inviteeUserId; this.inviteeUserId = inviteeUserId;
} }
public String getInviteeUnionId() {
return inviteeUnionId;
}
public void setInviteeUnionId(String inviteeUnionId) {
this.inviteeUnionId = inviteeUnionId;
}
public String getUserName() { public String getUserName() {
return userName; return userName;
} }
......
...@@ -40,11 +40,11 @@ public class TabGroupChatActivityReward implements Serializable { ...@@ -40,11 +40,11 @@ public class TabGroupChatActivityReward implements Serializable {
*/ */
private Integer limitReward; private Integer limitReward;
/** /**
* 奖励内容 积分值 成长值 卡券id * 奖励内容 积分值 成长值 卡券id(逗号分隔)
*/ */
private String rewardValue; private String rewardValue;
/** /**
* 奖励名称 卡券名称 * 奖励名称 积分名称 成长值名称 卡券名称
*/ */
private String rewardName; private String rewardName;
/** /**
......
...@@ -36,7 +36,7 @@ public class TabGroupChatActivityRewardDetailLog implements Serializable { ...@@ -36,7 +36,7 @@ public class TabGroupChatActivityRewardDetailLog implements Serializable {
*/ */
private Integer rewardType; private Integer rewardType;
/** /**
* 奖励内容 积分值 成长值 卡券id * 奖励内容 积分值 成长值 卡券id(逗号分隔)
*/ */
private String rewardValue; private String rewardValue;
/** /**
......
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 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 GroupChatActivityBaseContext {
/**
* 入群详情id
*/
private Long chatUserId;
/**
* 社群活动id
*/
private Long chatActivityId;
/**
* 邀请人会员ID
*/
private String inviterMemberId;
/**
* 企业id
*/
private String enterpriseId;
/**
* 唯一id
*/
private String uniqueId;
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;
}
}
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;
}
}
...@@ -3,6 +3,9 @@ package com.gic.haoban.manage.service.service.chat; ...@@ -3,6 +3,9 @@ package com.gic.haoban.manage.service.service.chat;
import com.gic.api.base.commons.Page; import com.gic.api.base.commons.Page;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityInviteLogDTO; import com.gic.haoban.manage.api.dto.chat.GroupChatActivityInviteLogDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityInviteLogQDTO; 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; import java.util.List;
...@@ -29,4 +32,16 @@ public interface GroupChatActivityInviteLogService { ...@@ -29,4 +32,16 @@ public interface GroupChatActivityInviteLogService {
* @return * @return
*/ */
Page<GroupChatActivityInviteLogDTO> queryInviteLogDetails(GroupChatActivityInviteLogQDTO inviteLogQDTO); Page<GroupChatActivityInviteLogDTO> queryInviteLogDetails(GroupChatActivityInviteLogQDTO inviteLogQDTO);
/**
* 入群异步处理参与社群活动
* @param list
*/
void groupChatInviteMQ(List<TabGroupChatUser> list);
/**
* 入群参与社群活动
* @param context
*/
void groupChatInvite(GroupChatActivityBaseContext context);
} }
...@@ -4,6 +4,8 @@ import com.gic.api.base.commons.Page; ...@@ -4,6 +4,8 @@ import com.gic.api.base.commons.Page;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityRewardLogDTO; import com.gic.haoban.manage.api.dto.chat.GroupChatActivityRewardLogDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityRewardLogQDTO; import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityRewardLogQDTO;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatActivityContext;
/** /**
* 内容活动完成奖励表(TabHaobanGroupChatActivityRewardLog)表服务接口 * 内容活动完成奖励表(TabHaobanGroupChatActivityRewardLog)表服务接口
* *
...@@ -21,4 +23,10 @@ public interface GroupChatActivityRewardLogService { ...@@ -21,4 +23,10 @@ public interface GroupChatActivityRewardLogService {
*/ */
Page<GroupChatActivityRewardLogDTO> queryRewardLogDetails(GroupChatActivityRewardLogQDTO rewardLogQDTO); Page<GroupChatActivityRewardLogDTO> queryRewardLogDetails(GroupChatActivityRewardLogQDTO rewardLogQDTO);
/**
* 处理奖励发放并保存日志
* @param context
*/
void dealRewardAndSaveLog(GroupChatActivityContext context);
} }
package com.gic.haoban.manage.service.service.chat.impl; 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.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.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.GroupChatActivityInviteLogDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityRewardDTO;
import com.gic.haoban.manage.api.enums.chat.ChatActivityInvalidInviteTypeEnum;
import com.gic.haoban.manage.api.enums.chat.ChatActivityInviteRewardEnum;
import com.gic.haoban.manage.api.enums.chat.ChatActivityInviteTypeEnum;
import com.gic.haoban.manage.api.enums.chat.ChatActivityRewardInviteEnum;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityInviteLogQDTO; 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.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.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.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.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.github.pagehelper.PageHelper;
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.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import java.util.*;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -26,8 +52,23 @@ import java.util.stream.Collectors; ...@@ -26,8 +52,23 @@ import java.util.stream.Collectors;
*/ */
@Service("groupChatActivityInviteLogService") @Service("groupChatActivityInviteLogService")
public class GroupChatActivityInviteLogServiceImpl implements GroupChatActivityInviteLogService { public class GroupChatActivityInviteLogServiceImpl implements GroupChatActivityInviteLogService {
@Resource
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; private GroupChatActivityInviteLogMapper groupChatActivityInviteLogMapper;
@Autowired
private GroupChatActivityService groupChatActivityService;
@Autowired
private GroupChatActivityRewardLogService groupChatActivityRewardLogService;
@Autowired
private GroupChatUserMapper groupChatUserMapper;
@Autowired
private GroupChatActivityShareBindService groupChatActivityShareBindService;
@Autowired
private MemberTagOpenApiService memberTagOpenApiService;
private GroupChatActivityInviteLogDTO convertToDTO(TabGroupChatActivityInviteLog tabGroupChatActivityInviteLog){ private GroupChatActivityInviteLogDTO convertToDTO(TabGroupChatActivityInviteLog tabGroupChatActivityInviteLog){
GroupChatActivityInviteLogDTO groupChatActivityInviteLogDTO = new GroupChatActivityInviteLogDTO(); GroupChatActivityInviteLogDTO groupChatActivityInviteLogDTO = new GroupChatActivityInviteLogDTO();
...@@ -56,4 +97,261 @@ public class GroupChatActivityInviteLogServiceImpl implements GroupChatActivityI ...@@ -56,4 +97,261 @@ public class GroupChatActivityInviteLogServiceImpl implements GroupChatActivityI
List<TabGroupChatActivityInviteLog> logList = groupChatActivityInviteLogMapper.queryList(inviteLogQDTO); List<TabGroupChatActivityInviteLog> logList = groupChatActivityInviteLogMapper.queryList(inviteLogQDTO);
return PageHelperUtils.changePageHelperToCurrentPage(logList, GroupChatActivityInviteLogDTO.class); 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, 1000);
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();
String unionid = groupChatUser.getUnionid();
List<TabGroupChatActivityShareBind> list = map.get(unionid);
if (CollectionUtils.isEmpty(list)) {
continue;
}
Set<Long> chatActivityIdSet = new HashSet<>();
//同个活动取最近一条绑定信息
for (TabGroupChatActivityShareBind shareBind : list) {
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());
// todo 社群邀请-mq异步
// 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);
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;
}
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();
String userId = context.getChatUser().getUserId();
Long chatActivityId = context.getChatActivityId();
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)) {
return ChatActivityInvalidInviteTypeEnum.TWO.value;
}
}
if (Objects.equals(ChatActivityInviteTypeEnum.FIRST_GROUP_CHAT.value, inviteType)) {
List<TabGroupChatUser> chatUserList2 = groupChatUserMapper.listByUserId(enterpriseId, userId, null);
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;
batchNumber = batchNumber > limitReward ? -1 : batchNumber;
} else {
batchNumber = 1;
int maxInviteNumber = rewardDTOList.stream().mapToInt(GroupChatActivityRewardDTO::getInviteNumber).max().getAsInt();
for (GroupChatActivityRewardDTO rewardDTO : rewardDTOList) {
Integer inviteNumber = rewardDTO.getInviteNumber();
if (inviteNumber == maxInviteNumber) {
if (count.intValue() > maxInviteNumber) {
batchNumber = -1;
} else if (count.intValue() == maxInviteNumber) {
batchNumber = rewardDTO.getInviteLevel();
}
break;
} else if (count.intValue() > inviteNumber) {
batchNumber = rewardDTO.getInviteLevel();
}
}
}
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);
}
} }
...@@ -51,14 +51,14 @@ public class GroupChatActivityJoinServiceImpl implements GroupChatActivityJoinSe ...@@ -51,14 +51,14 @@ public class GroupChatActivityJoinServiceImpl implements GroupChatActivityJoinSe
} }
@Override @Override
public void saveActivityJoin(TabGroupChatActivity activity, List<TabGroupChatActivityJoin> rewardList) { public void saveActivityJoin(TabGroupChatActivity activity, List<TabGroupChatActivityJoin> joinList) {
Long chatActivityId = activity.getChatActivityId(); Long chatActivityId = activity.getChatActivityId();
List<TabGroupChatActivityJoin> oldJoinList = listByActivityId(chatActivityId); List<TabGroupChatActivityJoin> oldJoinList = listByActivityId(chatActivityId);
Map<Long, TabGroupChatActivityJoin> oldRewardMap = oldJoinList.stream().collect( Map<Long, TabGroupChatActivityJoin> oldRewardMap = oldJoinList.stream().collect(
Collectors.toMap(TabGroupChatActivityJoin::getChatActivityJoinId, v -> v)); Collectors.toMap(TabGroupChatActivityJoin::getChatActivityJoinId, v -> v));
//先删除 //先删除
businessManager.dealMemberTagByActivity(activity,null,true); businessManager.dealMemberTagByActivity(activity,null,true);
rewardList.forEach(rule->{ joinList.forEach(rule->{
Long chatActivityJoinId = rule.getChatActivityJoinId(); Long chatActivityJoinId = rule.getChatActivityJoinId();
if (chatActivityJoinId != null) { if (chatActivityJoinId != null) {
oldRewardMap.remove(chatActivityJoinId); oldRewardMap.remove(chatActivityJoinId);
......
package com.gic.haoban.manage.service.service.chat.impl; 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.api.base.commons.Page;
import com.gic.commons.util.PageHelperUtils; import com.gic.commons.util.PageHelperUtils;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityInviteLogDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityRewardDetailLogDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityRewardLogDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityRewardDetailLogQDTO; import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityRewardDetailLogQDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityRewardLogQDTO; 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.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.TabGroupChatActivityInviteLog;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatActivityRewardLog; 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.GroupChatActivityRewardDetailLogService;
...@@ -15,9 +26,19 @@ import com.gic.haoban.manage.service.service.chat.GroupChatActivityRewardLogServ ...@@ -15,9 +26,19 @@ import com.gic.haoban.manage.service.service.chat.GroupChatActivityRewardLogServ
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import org.apache.commons.collections.CollectionUtils; 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.springframework.beans.BeanUtils;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; 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 javax.annotation.Resource;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -32,11 +53,18 @@ import java.util.stream.Collectors; ...@@ -32,11 +53,18 @@ import java.util.stream.Collectors;
@Service("groupChatActivityRewardLogService") @Service("groupChatActivityRewardLogService")
public class GroupChatActivityRewardLogServiceImpl implements GroupChatActivityRewardLogService { public class GroupChatActivityRewardLogServiceImpl implements GroupChatActivityRewardLogService {
@Resource private static final Logger logger = LoggerFactory.getLogger(GroupChatActivityRewardLogService.class);
private GroupChatActivityRewardLogMapper groupChatActivityRewardLogMapper;
@Resource @Autowired
private GroupChatActivityRewardLogMapper groupChatActivityRewardLogMapper;
@Autowired
private GroupChatActivityInviteLogMapper groupChatActivityInviteLogMapper;
@Autowired
private GroupChatActivityRewardDetailLogMapper groupChatActivityRewardDetailLogMapper;
@Autowired
private GroupChatActivityRewardDetailLogService groupChatActivityRewardDetailLogService; private GroupChatActivityRewardDetailLogService groupChatActivityRewardDetailLogService;
@Autowired
private RewardSender rewardSender;
private GroupChatActivityRewardLogDTO convertToDTO(TabGroupChatActivityRewardLog tabGroupChatActivityRewardLog) { private GroupChatActivityRewardLogDTO convertToDTO(TabGroupChatActivityRewardLog tabGroupChatActivityRewardLog) {
GroupChatActivityRewardLogDTO groupChatActivityRewardLogDTO = new GroupChatActivityRewardLogDTO(); GroupChatActivityRewardLogDTO groupChatActivityRewardLogDTO = new GroupChatActivityRewardLogDTO();
...@@ -74,4 +102,122 @@ public class GroupChatActivityRewardLogServiceImpl implements GroupChatActivityR ...@@ -74,4 +102,122 @@ public class GroupChatActivityRewardLogServiceImpl implements GroupChatActivityR
page.setResult(rewardLogDTOList); page.setResult(rewardLogDTOList);
return page; return page;
} }
@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, inviterMemberId, 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(rewardDetailDTO.getChatActivityRewardId());
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);
}
}
}
}
}
} }
...@@ -14,6 +14,7 @@ import com.gic.enterprise.api.dto.StoreDTO; ...@@ -14,6 +14,7 @@ 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.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 +129,8 @@ public class GroupChatServiceImpl implements GroupChatService { ...@@ -128,6 +129,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 +752,7 @@ public class GroupChatServiceImpl implements GroupChatService { ...@@ -749,6 +752,7 @@ public class GroupChatServiceImpl implements GroupChatService {
} }
if (CollectionUtils.isNotEmpty(needAddUserList)) { if (CollectionUtils.isNotEmpty(needAddUserList)) {
this.groupChatUserMapper.batchInsert(needAddUserList); this.groupChatUserMapper.batchInsert(needAddUserList);
groupChatActivityInviteLogService.groupChatInviteMQ(needAddUserList);
} }
// 删除退群的人 // 删除退群的人
List<Long> deleteIdList = new ArrayList<>(); List<Long> deleteIdList = new ArrayList<>();
......
...@@ -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.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);
}
}
}
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
<result property="inviterMemberId" column="inviter_member_id" jdbcType="VARCHAR"/> <result property="inviterMemberId" column="inviter_member_id" jdbcType="VARCHAR"/>
<result property="inviteeMemberId" column="invitee_member_id" jdbcType="VARCHAR"/> <result property="inviteeMemberId" column="invitee_member_id" jdbcType="VARCHAR"/>
<result property="inviteeUserId" column="invitee_user_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="userName" column="user_name" jdbcType="VARCHAR"/>
<result property="nickName" column="nick_name" jdbcType="VARCHAR"/> <result property="nickName" column="nick_name" jdbcType="VARCHAR"/>
<result property="groupChatId" column="group_chat_id" jdbcType="INTEGER"/> <result property="groupChatId" column="group_chat_id" jdbcType="INTEGER"/>
...@@ -24,7 +25,7 @@ ...@@ -24,7 +25,7 @@
<sql id="Base_Column_List"> <sql id="Base_Column_List">
chat_activity_invite_id chat_activity_invite_id
, chat_activity_id, inviter_member_id, invitee_member_id, invitee_user_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, 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 enterprise_id, wx_enterprise_id, create_time, update_time, delete_flag
</sql> </sql>
...@@ -39,12 +40,12 @@ ...@@ -39,12 +40,12 @@
</select> </select>
<!--查询指定行数据--> <!--查询指定行数据-->
<select id="queryAllByLimit" resultMap="TabHaobanGroupChatActivityInviteLogMap"> <select id="queryAll" resultMap="TabHaobanGroupChatActivityInviteLogMap">
select chat_activity_invite_id, chat_activity_id, inviter_member_id, invitee_member_id, invitee_user_id, select
user_name, nick_name, group_chat_id, invite_type, invalid_invite_type, add_member_type, batch_number, <include refid="Base_Column_List"/>
enterprise_id, wx_enterprise_id, create_time, update_time, delete_flag
from tab_haoban_group_chat_activity_invite_log from tab_haoban_group_chat_activity_invite_log
<where> <where>
and enterprise_id = #{enterpriseId} and delete_flag = 0
<if test="chatActivityInviteId != null"> <if test="chatActivityInviteId != null">
and chat_activity_invite_id = #{chatActivityInviteId} and chat_activity_invite_id = #{chatActivityInviteId}
</if> </if>
...@@ -81,14 +82,10 @@ ...@@ -81,14 +82,10 @@
<if test="batchNumber != null"> <if test="batchNumber != null">
and batch_number = #{batchNumber} and batch_number = #{batchNumber}
</if> </if>
<if test="enterpriseId != null and enterpriseId != ''">
and enterprise_id = #{enterpriseId}
</if>
<if test="wxEnterpriseId != null and wxEnterpriseId != ''"> <if test="wxEnterpriseId != null and wxEnterpriseId != ''">
and wx_enterprise_id = #{wxEnterpriseId} and wx_enterprise_id = #{wxEnterpriseId}
</if> </if>
</where> </where>
limit #{pageable.offset}, #{pageable.pageSize}
</select> </select>
<!--统计总行数--> <!--统计总行数-->
...@@ -96,6 +93,7 @@ ...@@ -96,6 +93,7 @@
select count(1) select count(1)
from tab_haoban_group_chat_activity_invite_log from tab_haoban_group_chat_activity_invite_log
<where> <where>
and enterprise_id = #{enterpriseId} and delete_flag = 0
<if test="chatActivityInviteId != null"> <if test="chatActivityInviteId != null">
and chat_activity_invite_id = #{chatActivityInviteId} and chat_activity_invite_id = #{chatActivityInviteId}
</if> </if>
...@@ -132,9 +130,6 @@ ...@@ -132,9 +130,6 @@
<if test="batchNumber != null"> <if test="batchNumber != null">
and batch_number = #{batchNumber} and batch_number = #{batchNumber}
</if> </if>
<if test="enterpriseId != null and enterpriseId != ''">
and enterprise_id = #{enterpriseId}
</if>
<if test="wxEnterpriseId != null and wxEnterpriseId != ''"> <if test="wxEnterpriseId != null and wxEnterpriseId != ''">
and wx_enterprise_id = #{wxEnterpriseId} and wx_enterprise_id = #{wxEnterpriseId}
</if> </if>
...@@ -143,22 +138,15 @@ ...@@ -143,22 +138,15 @@
<!--新增所有列--> <!--新增所有列-->
<insert id="insert" keyProperty="chatActivityInviteId" useGeneratedKeys="true"> <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, 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, user_name, nick_name, group_chat_id, invite_type, invalid_invite_type, add_member_type, batch_number,
enterprise_id, wx_enterprise_id) enterprise_id, wx_enterprise_id)
values (#{chatActivityInviteId},#{chatActivityId}, #{inviterMemberId}, #{inviteeMemberId}, #{inviteeUserId}, #{userName}, #{nickName}, values (#{chatActivityInviteId},#{chatActivityId}, #{inviterMemberId}, #{inviteeMemberId}, #{inviteeUserId},#{inviteeUnionId}, #{userName}, #{nickName},
#{groupChatId}, #{inviteType}, #{invalidInviteType}, #{addMemberType}, #{batchNumber}, #{enterpriseId}, #{groupChatId}, #{inviteType}, #{invalidInviteType}, #{addMemberType}, #{batchNumber}, #{enterpriseId},
#{wxEnterpriseId}) #{wxEnterpriseId})
</insert> </insert>
<!--通过主键删除-->
<delete id="deleteById">
delete
from tab_haoban_group_chat_activity_invite_log
where chat_activity_invite_id = #{chatActivityInviteId}
</delete>
<select id="queryMaxBatchByChatActivityIdAndInviterMemberId" resultType="integer"> <select id="queryMaxBatchByChatActivityIdAndInviterMemberId" resultType="integer">
select max(batch_number) select max(batch_number)
from tab_haoban_group_chat_activity_invite_log from tab_haoban_group_chat_activity_invite_log
......
...@@ -219,22 +219,10 @@ ...@@ -219,22 +219,10 @@
<if test="successFlag != null"> <if test="successFlag != null">
success_flag = #{successFlag}, success_flag = #{successFlag},
</if> </if>
<if test="enterpriseId != null and enterpriseId != ''">
enterprise_id = #{enterpriseId},
</if>
<if test="wxEnterpriseId != null and wxEnterpriseId != ''">
wx_enterprise_id = #{wxEnterpriseId},
</if>
</set> </set>
where chat_activity_reward_detail_id = #{chatActivityRewardDetailId} where chat_activity_reward_detail_id = #{chatActivityRewardDetailId}
</update> </update>
<!--通过主键删除-->
<delete id="deleteById">
delete
from tab_haoban_group_chat_activity_reward_detail_log
where chat_activity_reward_detail_id = #{chatActivityRewardDetailId}
</delete>
<select id="queryList" resultMap="TabHaobanGroupChatActivityRewardDetailLogMap"> <select id="queryList" resultMap="TabHaobanGroupChatActivityRewardDetailLogMap">
select select
......
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.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 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 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<GroupChatHmDTO>> 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);
}
}
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