Commit 10132f81 by root

Merge branch 'bugfix-2024-01-17-rank' into test_branch

parents f64d9a44 997e183f
package com.gic.haoban.manage.api;
import java.io.Serializable;
/**
* 会员和导购加的好友列表
*/
public class ExternalUserClerkDTO implements Serializable {
private String memberId ;
private String clerkId ;
private String storeId ;
public String getMemberId() {
return memberId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
}
......@@ -30,6 +30,16 @@ public class MemberUnionidWechatAccountQDTO implements Serializable {
*/
private String sceneStr;
private boolean eventFlag = false ;
public boolean isEventFlag() {
return eventFlag;
}
public void setEventFlag(boolean eventFlag) {
this.eventFlag = eventFlag;
}
public String getEnterpriseId() {
return enterpriseId;
}
......
......@@ -3,6 +3,7 @@ package com.gic.haoban.manage.api.service;
import com.gic.api.base.commons.Page;
import com.gic.haoban.base.api.common.BasePageInfo;
import com.gic.haoban.base.api.common.ServiceResponse;
import com.gic.haoban.manage.api.ExternalUserClerkDTO;
import com.gic.haoban.manage.api.dto.*;
import java.util.Date;
......@@ -180,6 +181,8 @@ public interface ExternalClerkRelatedApiService {
// 0 删除会员 1合并会员 2会员换绑
void delByMemberIdAndEnterpriseId(String memberId, String enterpriseId, String mergeMemberId, int type);
void delByMemberIdAndEnterpriseIdEvent(String memberId, String enterpriseId, String mergeMemberId, int type);
/**
* 导购和会员是否好友关系,true是好友
*
......@@ -321,4 +324,12 @@ public interface ExternalClerkRelatedApiService {
*/
com.gic.api.base.commons.ServiceResponse<String> getMemberIdByExternalId(String wxEnterpriseId,String externalUserId);
/**
* 查询会员和那些导购加好友
* @param enterpriseId
* @param memberId
* @return
*/
List<ExternalUserClerkDTO> listExternalClerk(String enterpriseId , String memberId) ;
}
......@@ -26,4 +26,13 @@ public interface HaobanCommonMQApiService {
public void noticeMemberMQ(String params) ;
// 会员换绑
public void memberEventChange(String params) ;
// 会员合并
public void memberEventMerge(String params) ;
// 会员注销
public void memberEventDel(String params) ;
// 会员扫码关注
public void memberEventWechat(String params) ;
}
......@@ -28,4 +28,25 @@ public interface InteractRecordApiService {
* @return
*/
ServiceResponse<Void> memberChangeMQ(String params);
/**
* 处理会员线上订单
* @param params
* @return
*/
ServiceResponse<Void> dealMemberOnlineOrder(String params);
/**
* 处理会员线下订单数据
* @param params
* @return
*/
ServiceResponse<Void> dealMemberOffLineOrder(String params);
/**
* 处理会员新增事件
* @param params
* @return
*/
ServiceResponse<Void> dealMemberEvent(String params);
}
......@@ -5,15 +5,19 @@ import com.gic.api.base.commons.ServiceResponse;
import com.gic.enterprise.api.constant.EnterpriseServiceEnum;
import com.gic.enterprise.api.dto.enterprise.EnterpriseUsingStatusDTO;
import com.gic.enterprise.api.service.EnterpriseUseForbidService;
import com.gic.redis.data.util.RedisUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
......@@ -35,6 +39,8 @@ public class MaterialEnterpriseAdaptor {
private String desc;
}
private static final Long cache_hour_sec = 5 * 60L;
@Autowired
EnterpriseUseForbidService enterpriseUseForbidService;
......@@ -58,4 +64,32 @@ public class MaterialEnterpriseAdaptor {
.map(EnterpriseUsingStatusDTO::getEnterpriseId)
.collect(Collectors.toList());
}
/**
* 校验企业是否有内容权限
* @param enterpriseId
* @return
*/
public boolean checkEnterpriseHasContentRight(String enterpriseId) {
String key = "haoban_enterprise_content:" + enterpriseId;
String cache = RedisUtil.getCache(key, String.class);
if (StringUtils.isBlank(cache)) {
cache = "0";
ServiceResponse<List<EnterpriseUsingStatusDTO>> tempServiceResponse = enterpriseUseForbidService.getUseEnterpriseByCode(EnterpriseServiceEnum.CONTENT.getRightMenuCode(), enterpriseId);
if (!tempServiceResponse.isSuccess() || CollectionUtils.isEmpty(tempServiceResponse.getResult())) {
log.info("企业 {} 没有内容权限 {}", enterpriseId, JSON.toJSONString(tempServiceResponse));
RedisUtil.setCache(key, cache, cache_hour_sec, TimeUnit.SECONDS);
return false;
}
EnterpriseUsingStatusDTO enterpriseUsingStatusDTO = tempServiceResponse.getResult().get(0);
if (!Boolean.TRUE.equals(enterpriseUsingStatusDTO.getVaild())) {
log.info("企业 {} 内容权限已失效 {}", enterpriseId, JSON.toJSONString(tempServiceResponse));
RedisUtil.setCache(key, cache, cache_hour_sec, TimeUnit.SECONDS);
return false;
}
cache = "1";
RedisUtil.setCache(key, cache, cache_hour_sec, TimeUnit.SECONDS);
}
return StringUtils.equals(cache, "1");
}
}
......@@ -192,6 +192,9 @@ public class InteractRecordServiceImpl implements InteractRecordService {
@Override
public void memberAuthorized(String memberId, String unionId) {
if (StringUtils.isAnyBlank(memberId, unionId)) {
return;
}
InteractRecordQO interactRecordQO = new InteractRecordQO();
interactRecordQO.setUnionId(unionId);
List<TabHaobanInteractRecord> interactRecords = this.tabHaobanInteractRecordMapper.queryInteractRecordList(interactRecordQO);
......
package com.gic.haoban.manage.service.service.impl;
import java.util.Date;
import com.gic.commons.util.ToolUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -19,23 +21,7 @@ public class MemberUnionRelatedServiceImpl implements MemberUnionRelatedService
@Override
public String addMemberUnionidRelated(MemberUnionidRelatedDTO dto) {
String wxEnterpriseId = dto.getWxEnterpriseId() ;
String staffId = dto.getStaffId() ;
String selfExternalUserId = dto.getSelfExternalUserid() ;
MemberUnionidRelated oldDTO = this.mapper.getBySelfExternalUserId(staffId, wxEnterpriseId, selfExternalUserId) ;
if(null != oldDTO) {
return oldDTO.getMemberUnionidRelatedId() ;
}
dto.setStatusFlag(1);
dto.setCreateTime(new Date());
dto.setUpdateTime(new Date());
dto.setMemberUnionidRelatedId(StringUtil.randomUUID());
String unionid = dto.getUnionid() ;
// unionid不保存,但需要传递
dto.setUnionid(null);
mapper.insert(EntityUtil.changeEntityByJSON(MemberUnionidRelated.class, dto));
dto.setUnionid(unionid);
return dto.getMemberUnionidRelatedId();
return ToolUtil.randomUUID();
}
@Override
......
......@@ -16,6 +16,7 @@ import com.gic.haoban.base.api.common.BasePageInfo;
import com.gic.haoban.base.api.common.ServiceResponse;
import com.gic.haoban.base.api.common.errCode.HaoBanErrCodeCommon;
import com.gic.haoban.common.utils.PageUtil;
import com.gic.haoban.manage.api.ExternalUserClerkDTO;
import com.gic.haoban.manage.api.dto.*;
import com.gic.haoban.manage.api.enums.AlertTypeEnum;
import com.gic.haoban.manage.api.enums.SyncTaskTypeEnum;
......@@ -35,6 +36,7 @@ import com.gic.haoban.manage.service.pojo.QywxTagSyncInfoPojo;
import com.gic.haoban.manage.service.service.ExternalClerkRelatedService;
import com.gic.haoban.manage.service.service.WxEnterpriseService;
import com.gic.haoban.manage.service.service.hm.WxUserAddLogService;
import com.gic.haoban.manage.service.util.EventUtils;
import com.gic.member.api.dto.MemberDTO;
import com.gic.member.api.dto.MemberSourceDetailDTO;
import com.gic.member.api.dto.MemberSourceShowDTO;
......@@ -401,8 +403,15 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
return tabHaobanExternalClerkRelatedMapper.listStoreIdByMemberId(memberId , addCreateTime);
}
@Override
public void delByMemberIdAndEnterpriseId(String memberId, String enterpriseId, String mergeMemberId, int type) {
if(EventUtils.isOpenEvent()) {
return ;
}
this.delByMemberIdAndEnterpriseIdEvent(memberId,enterpriseId,mergeMemberId,type);
}
@Override
public void delByMemberIdAndEnterpriseIdEvent(String memberId, String enterpriseId, String mergeMemberId, int type) {
// 0 删除会员 1合并会员 2会员换绑
if(type==0) {
log.info("删除会员,memberId:{}", memberId);
......@@ -442,7 +451,7 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
}
}
}
@Override
public void delByMemberIdAndEnterpriseId(String memberId, String enterpriseId, String mergeMemberId) {
log.info("删除会员或者合并会员,memberId:{},enterpriseId:{},mergeMemberId:{}", memberId, enterpriseId, mergeMemberId);
......@@ -782,4 +791,22 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
public com.gic.api.base.commons.ServiceResponse<String> getMemberIdByExternalId(String wxEnterpriseId, String externalUserId) {
return com.gic.api.base.commons.ServiceResponse.success(externalClerkRelatedService.getMemberIdByExternalId(wxEnterpriseId,externalUserId));
}
@Override
public List<ExternalUserClerkDTO> listExternalClerk(String enterpriseId, String memberId) {
log.info("查询会员导购好友={}",memberId);
List<TabHaobanExternalClerkRelated> list = this.externalClerkRelatedService.getAddTimeByMemberId(memberId,enterpriseId,"1") ;
if(CollectionUtils.isEmpty(list)) {
return null;
}
List<ExternalUserClerkDTO> retList = list.stream().filter(o->StringUtils.isNotBlank(o.getClerkId())).map(o->{
ExternalUserClerkDTO dto = new ExternalUserClerkDTO();
dto.setClerkId(o.getClerkId());
dto.setStoreId(o.getStoreId());
dto.setMemberId(memberId);
return dto ;
}).collect(Collectors.toList());
log.info("好友={}",JSONObject.toJSONString(retList));
return retList;
}
}
......@@ -5,6 +5,12 @@ import java.util.Map;
import com.alibaba.fastjson.JSONArray;
import com.gic.haoban.manage.service.service.StaffClerkRelationService;
import com.gic.commons.util.StringUtil;
import com.gic.haoban.manage.api.dto.MemberUnionidWechatAccountQDTO;
import com.gic.haoban.manage.api.service.ExternalClerkRelatedApiService;
import com.gic.haoban.manage.service.util.EventUtils;
import com.gic.member.api.dto.MemberInfoChangeNotifyDTO;
import com.gic.member.api.dto.event.wechat.WeChatOfficialAccountEventParam;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
......@@ -39,6 +45,8 @@ public class HaobanCommonMQApiServiceImpl implements HaobanCommonMQApiService {
@Autowired
private MemberOpenCardBusinessService memberOpenCardBusinessService ;
@Autowired
private ExternalClerkRelatedApiService externalClerkRelatedApiService ;
@Autowired
private StaffClerkRelationService staffClerkRelationService ;
@Override
......@@ -132,4 +140,99 @@ public class HaobanCommonMQApiServiceImpl implements HaobanCommonMQApiService {
log.error("发送MQ异常");
}
}
@Override
public void memberEventChange(String params) {
if(!EventUtils.isOpenEvent()) {
return ;
}
log.info("会员换绑事件={}",params);
JSONObject json = JSONObject.parseObject(params) ;
String memberId = json.getString("memberId") ;
String enterpriseId = json.getString("enterpriseId") ;
String changeBindMemberId = json.getString("changeBindMemberId") ;
this.externalClerkRelatedApiService.delByMemberIdAndEnterpriseIdEvent(memberId,enterpriseId,changeBindMemberId,2);
}
@Override
public void memberEventMerge(String params) {
if(!EventUtils.isOpenEvent()) {
return ;
}
log.info("会员合并事件={}",params);
JSONObject json = JSONObject.parseObject(params) ;
String memberId = json.getString("memberId") ;
String enterpriseId = json.getString("enterpriseId") ;
JSONObject delMemberObj = json.getJSONObject("delMember") ;
if(null == delMemberObj) {
log.info("删除会员为空,不处理");
return ;
}
String delMemberId = delMemberObj.getString("memberId") ;
this.externalClerkRelatedApiService.delByMemberIdAndEnterpriseIdEvent(delMemberId, enterpriseId, memberId, 1);
// 内容中台
MemberInfoChangeNotifyDTO dto = new MemberInfoChangeNotifyDTO();
dto.setMemberId(delMemberId);
dto.setMergeMemberId(memberId);
dto.setEnterpriseId(enterpriseId);
dto.setOpt(2);
JSONObject msg = JSONObject.parseObject(JSON.toJSONString(dto)) ;
msg.put("eventFlag",1) ;
try {
GICMQClientUtil.getClientInstance().sendMessage("memberIdChangeNotify", msg.toJSONString());
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
@Override
public void memberEventDel(String params) {
if(!EventUtils.isOpenEvent()) {
return ;
}
log.info("会员注销事件={}",params);
JSONObject json = JSONObject.parseObject(params) ;
String memberId = json.getString("memberId") ;
String enterpriseId = json.getString("enterpriseId") ;
boolean mergeDel = json.getBooleanValue("mergeDel") ;
if(!mergeDel) {
this.externalClerkRelatedApiService.delByMemberIdAndEnterpriseIdEvent(memberId, enterpriseId, null, 0);
}
}
@Override
public void memberEventWechat(String params) {
if(!EventUtils.isOpenEvent()) {
return ;
}
log.info("会员扫码关注事件={}",params);
WeChatOfficialAccountEventParam json = JSONObject.parseObject(params,WeChatOfficialAccountEventParam.class) ;
String memberId = json.getMemberId() ;
String unionid = json.getUnionId() ;
if (StringUtil.isBlankVerifyMinusOne(memberId) || StringUtil.isBlankVerifyMinusOne(unionid)) {
log.warn("memberId、unionid为空,不通知");
return;
}
String enterpriseId = json.getEnterpriseId() ;
String openId = json.getOpenId() ;
String qrcodeParam = json.getQrCode() ;
try {
MemberUnionidWechatAccountQDTO dto = new MemberUnionidWechatAccountQDTO();
dto.setEnterpriseId(enterpriseId);
dto.setUnionid(unionid);
dto.setOpenId(openId);
dto.setSceneStr(qrcodeParam);
dto.setMemberId(memberId);
dto.setEventFlag(true);
if (qrcodeParam != null && qrcodeParam.startsWith("QWHY")) {
GICMQClientUtil.getClientInstance().sendMessage("addMemberUnionidWechatAccountByClerkMq", JSON.toJSONString(dto));
} else {
GICMQClientUtil.getClientInstance().sendMessage("addMemberUnionidWechatAccountMq", JSON.toJSONString(dto));
}
} catch (Exception e) {
log.error("通知好办失败", e);
}
}
}
......@@ -4,6 +4,7 @@ import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import com.gic.haoban.manage.service.util.EventUtils;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
......@@ -1643,6 +1644,16 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
return;
}
MemberUnionidWechatAccountQDTO memberUnionidWechatAccountQDTO = JSON.parseObject(res, MemberUnionidWechatAccountQDTO.class);
boolean eventFlag = memberUnionidWechatAccountQDTO.isEventFlag() ;
if(EventUtils.isOpenEvent()) {
if(!eventFlag) {
return ;
}
}else {
if(eventFlag) {
return ;
}
}
String enterpriseId = memberUnionidWechatAccountQDTO.getEnterpriseId();
String unionid = memberUnionidWechatAccountQDTO.getUnionid();
String openId = memberUnionidWechatAccountQDTO.getOpenId();
......@@ -1720,6 +1731,16 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
return;
}
MemberUnionidWechatAccountQDTO memberUnionidWechatAccountQDTO = JSON.parseObject(res, MemberUnionidWechatAccountQDTO.class);
boolean eventFlag = memberUnionidWechatAccountQDTO.isEventFlag() ;
if(EventUtils.isOpenEvent()) {
if(!eventFlag) {
return ;
}
}else {
if(eventFlag) {
return ;
}
}
String enterpriseId = memberUnionidWechatAccountQDTO.getEnterpriseId();
String unionid = memberUnionidWechatAccountQDTO.getUnionid();
String openId = memberUnionidWechatAccountQDTO.getOpenId();
......
package com.gic.haoban.manage.service.service.out.impl.content;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.GICMQClientUtil;
import com.gic.haoban.manage.api.dto.qdto.content.InteractRecordQDTO;
import com.gic.haoban.manage.api.enums.content.InteractRecordExtendInfoDTO;
import com.gic.haoban.manage.api.enums.content.InteractRecordInfoDTO;
import com.gic.haoban.manage.api.service.content.InteractRecordApiService;
import com.gic.haoban.manage.service.pojo.bo.content.InteractRecordBO;
import com.gic.haoban.manage.service.pojo.bo.content.MemberAttrChangeBO;
import com.gic.haoban.manage.service.pojo.bo.content.binlog.MemberOrderBo;
import com.gic.haoban.manage.service.pojo.qo.content.InteractRecordQO;
import com.gic.haoban.manage.service.service.content.InteractRecordService;
import com.gic.haoban.manage.service.service.content.PotentialCustomerService;
import com.gic.haoban.manage.service.service.content.adaptor.MaterialEnterpriseAdaptor;
import com.gic.haoban.manage.service.task.KafkaMessageServiceImpl;
import com.gic.member.api.dto.event.lifecycle.CreateMemberEventParam;
import com.gic.member.api.dto.info.MemberSummaryInfoDTO;
import com.gic.member.api.dto.info.qo.QueryMemberInfoDTO;
import com.gic.member.api.service.MemberOutApiService;
import com.gic.order.api.constant.OrderChannelEnum;
import com.gic.order.api.dto.OrderSaveNotifyDTO;
import com.gic.order.api.dto.resp.OrderInfoResp;
import com.gic.order.api.service.member.MemberOrderReadApiService;
import com.gic.haoban.manage.service.util.EventUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -37,6 +51,12 @@ public class InteractRecordApiServiceImpl implements InteractRecordApiService {
private InteractRecordService interactRecordService;
@Autowired
PotentialCustomerService potentialCustomerService;
@Autowired
private MaterialEnterpriseAdaptor materialEnterpriseAdaptor;
@Autowired
MemberOutApiService memberOutApiService;
@Autowired
private MemberOrderReadApiService memberOrderReadApiService;
/**
* 查询互动记录
......@@ -97,6 +117,19 @@ public class InteractRecordApiServiceImpl implements InteractRecordApiService {
log.info("会员id发生变化 {}", params);
return ServiceResponse.success();
}
JSONObject jsonObject = JSONObject.parseObject(params);
int eventFlag = jsonObject.getIntValue("eventFlag") ;
if(EventUtils.isOpenEvent()) {
if(eventFlag == 0) {
log.info("非事件入口,不处理");
return ServiceResponse.success();
}
}else {
if(eventFlag == 1) {
log.info("事件入口,不处理");
return ServiceResponse.success();
}
}
MemberAttrChangeBO memberAttrChangeBO = JSON.parseObject(params, MemberAttrChangeBO.class);
if (memberAttrChangeBO == null) {
return ServiceResponse.success();
......@@ -116,4 +149,113 @@ public class InteractRecordApiServiceImpl implements InteractRecordApiService {
}
return ServiceResponse.success();
}
/**
* 处理会员线上订单
*
* @param params
* @return
*/
@Override
public ServiceResponse<Void> dealMemberOnlineOrder(String params) {
return dealMemberOrder(params, true);
}
private ServiceResponse<Void> dealMemberOrder(String params, boolean isOnlineOrder) {
if (StringUtils.isBlank(params)) {
return ServiceResponse.success();
}
OrderSaveNotifyDTO orderSaveNotifyDTO = JSON.parseObject(params, OrderSaveNotifyDTO.class);
if (orderSaveNotifyDTO.getFirstCreate() == null || orderSaveNotifyDTO.getFirstCreate() != 1) {
log.info("会员订单 非购买事件 {}", params);
return ServiceResponse.success();
}
potentialCustomerService.updateMemberDealFlag(orderSaveNotifyDTO.getEnterpriseId(), orderSaveNotifyDTO.getMemberId());
String enterpriseId = orderSaveNotifyDTO.getEnterpriseId();
String memberId = orderSaveNotifyDTO.getMemberId();
String orderId = orderSaveNotifyDTO.getOrderId();
ServiceResponse<OrderInfoResp> serviceResponse =
memberOrderReadApiService.getOrder(enterpriseId, memberId, orderId, isOnlineOrder);
if (!serviceResponse.isSuccess() || serviceResponse.getResult() == null) {
log.info("获取订单信息异常 {}", JSON.toJSONString(serviceResponse));
return ServiceResponse.success();
}
OrderInfoResp orderInfoResp = serviceResponse.getResult();
if (orderInfoResp.getOrderType() == null || OrderChannelEnum.WEIMOB.getSort() != orderInfoResp.getOrderType()) {
log.info("订单 {} 非微盟渠道", orderId);
return ServiceResponse.success();
}
MemberOrderBo memberOrderBo = new MemberOrderBo();
memberOrderBo.setEnterpriseId(orderSaveNotifyDTO.getEnterpriseId());
memberOrderBo.setMemberId(orderSaveNotifyDTO.getMemberId());
memberOrderBo.setOrderId(orderSaveNotifyDTO.getOrderId());
memberOrderBo.setOrderNumber(orderInfoResp.getRorderNumber());
memberOrderBo.setOrderTime(orderInfoResp.getOrderTime());
if (isOnlineOrder) {
memberOrderBo.setTableName(KafkaMessageServiceImpl.tab_gic_eorder);
}else {
memberOrderBo.setTableName(KafkaMessageServiceImpl.tab_gic_order);
}
try {
log.info("发送微盟订单处理消息 {}", params);
/**
* @see com.gic.haoban.manage.api.service.content.MallOrderStatusChangeApiService#dealWeimoOrder(String)
*/
GICMQClientUtil.getClientInstance().sendMessage("dealWeimoOrderForInteractRecord", JSON.toJSONString(memberOrderBo), 120);
}catch (Exception ex) {
log.info("处理会员订单异常 ", ex);
}
return ServiceResponse.success();
}
/**
* 处理会员线下订单数据
*
* @param params
* @return
*/
@Override
public ServiceResponse<Void> dealMemberOffLineOrder(String params) {
return dealMemberOrder(params, false);
}
/**
* 处理会员新增事件
*
* @param params
* @return
*/
@Override
public ServiceResponse<Void> dealMemberEvent(String params) {
if (StringUtils.isBlank(params)) {
return ServiceResponse.success();
}
CreateMemberEventParam createMemberEventParam = JSON.parseObject(params, CreateMemberEventParam.class);
String enterpriseId = createMemberEventParam.getEnterpriseId();
String memberId = createMemberEventParam.getMemberId();
if (!materialEnterpriseAdaptor.checkEnterpriseHasContentRight(enterpriseId)) {
log.info("企业 {} 没有内容权限", enterpriseId);
return ServiceResponse.success();
}
QueryMemberInfoDTO queryMemberInfoDTO = QueryMemberInfoDTO
.queryByMemberId(memberId)
.setMemberBaseInfoDTO(true)
.setMemberPersonalInfoDTO(false);
ServiceResponse<MemberSummaryInfoDTO> serviceResponse = memberOutApiService.queryMemberInfo(queryMemberInfoDTO);
if (!serviceResponse.isSuccess() || serviceResponse.getResult() == null) {
log.info("查询会员信息为空 {}", memberId);
return null;
}
String unionId = serviceResponse.getResult().getMemberBaseInfoDTO().getUnionid();
interactRecordService.memberAuthorized(memberId, unionId);
return ServiceResponse.success();
}
}
......@@ -9,6 +9,9 @@ import com.gic.business.order.enums.OrderEnum;
import com.gic.business.order.qdto.ordermanage.OrderInfoQDTO;
import com.gic.business.order.service.ordermanage.OrderInfoOutApiService;
import com.gic.commons.util.GICMQClientUtil;
import com.gic.content.api.dto.setting.ContentSettingDTO;
import com.gic.content.api.enums.ContentMallShopType;
import com.gic.content.api.service.ContentSettingApiService;
import com.gic.enterprise.api.constant.EnterpriseServiceEnum;
import com.gic.enterprise.api.dto.enterprise.EnterpriseUsingStatusDTO;
import com.gic.enterprise.api.service.EnterpriseUseForbidService;
......@@ -56,6 +59,8 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang
private MaterialDataAdaptor materialDataAdaptor;
@Autowired
private EnterpriseUseForbidService enterpriseUseForbidService;
@Autowired
private ContentSettingApiService contentSettingApiService;
private static final String ORDER_EVENT_RETRY = "orderEventRetryMQ";
......@@ -82,6 +87,19 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang
return ServiceResponse.success();
}
String enterpriseId = orderEventMqBO.getEnterpriseId();
ServiceResponse<ContentSettingDTO> response = contentSettingApiService.queryContentSettingInfo(enterpriseId);
if (!response.isSuccess() || response.getResult() == null) {
log.info("查询企业内容配置异常 {}", enterpriseId);
return ServiceResponse.success();
}
if (!ContentMallShopType.GIC_MALL.getCode().equals(response.getResult().getMallShopType())) {
log.info("当前企业内容配置非微商城 {}", JSON.toJSONString(response));
return ServiceResponse.success();
}
OrderInfoQDTO orderInfoQDTO = new OrderInfoQDTO();
orderInfoQDTO.setEnterpriseId(orderEventMqBO.getEnterpriseId());
orderInfoQDTO.setOrderNumber(orderEventMqBO.getOrderNumber());
......@@ -208,6 +226,17 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang
return ServiceResponse.success();
}
ServiceResponse<ContentSettingDTO> response = contentSettingApiService.queryContentSettingInfo(enterpriseId);
if (!response.isSuccess() || response.getResult() == null) {
log.info("查询企业内容配置异常 {}", enterpriseId);
return ServiceResponse.success();
}
if (!ContentMallShopType.WEIMO_MALL.getCode().equals(response.getResult().getMallShopType())) {
log.info("当前企业内容配置非微盟商城 {}", JSON.toJSONString(response));
return ServiceResponse.success();
}
String memberId = memberOrderBo.getMemberId();
String orderId = memberOrderBo.getOrderId();
String orderNumber = memberOrderBo.getOrderNumber();
......
......@@ -20,6 +20,7 @@ public class WxUserAddLogApiServiceImpl implements WxUserAddLogApiService {
private WxUserAddLogService wxUserAddLogService ;
@Override
public ServiceResponse<Page<WxUserAddLogDTO>> page(WxUserAddLogSearchQDTO qdto, BasePageInfo pageInfo) {
qdto.setAddChannel(null);
Page<WxUserAddLogBO> page = this.wxUserAddLogService.page(qdto, pageInfo) ;
Page<WxUserAddLogDTO> resultPage = PageHelperUtils.changePageToCurrentPage(page, WxUserAddLogDTO.class);
return ServiceResponse.success(resultPage);
......
......@@ -98,26 +98,26 @@ public class KafkaMessageServiceImpl implements MessageListener<String, GicRecor
else if (record.value().getTableName().equals(CLERK)) {
logger.info("导购binlog无需监听");
}
else if (StringUtils.startsWith(record.value().getTableName(), tab_gic_eorder)) {
// 处理线上单微盟订单
MemberOrderBo memberOrderBo = new MemberOrderBo();
BeanUtils.copyProperties((MaterialMemberEOrderPojo)pojo, memberOrderBo);
this.dealMemberOrder(memberOrderBo);
// 处理会员订单新增事件
dealMemberEOrder((MaterialMemberEOrderPojo) pojo);
}
else if (StringUtils.startsWith(record.value().getTableName(), tab_gic_order)) {
MemberOrderBo memberOrderBo = new MemberOrderBo();
BeanUtils.copyProperties((MaterialMemberGicOrderPojo)pojo, memberOrderBo);
this.dealMemberOrder(memberOrderBo);
// 处理会员订单新增事件
dealMemberGicOrder((MaterialMemberGicOrderPojo) pojo);
}else if (StringUtils.startsWith(record.value().getTableName(), tab_gic_member)) {
// 会员unionId新增事件
dealMemberUnionIdChange((MaterialMemberUnionIdPoJo) pojo);
}
// else if (StringUtils.startsWith(record.value().getTableName(), tab_gic_eorder)) {
// // 处理线上单微盟订单
// MemberOrderBo memberOrderBo = new MemberOrderBo();
// BeanUtils.copyProperties((MaterialMemberEOrderPojo)pojo, memberOrderBo);
// //this.dealMemberOrder(memberOrderBo);
// // 处理会员订单新增事件
// // dealMemberEOrder((MaterialMemberEOrderPojo) pojo);
// }
// else if (StringUtils.startsWith(record.value().getTableName(), tab_gic_order)) {
//
//// MemberOrderBo memberOrderBo = new MemberOrderBo();
//// BeanUtils.copyProperties((MaterialMemberGicOrderPojo)pojo, memberOrderBo);
// //this.dealMemberOrder(memberOrderBo);
// // 处理会员订单新增事件
// // dealMemberGicOrder((MaterialMemberGicOrderPojo) pojo);
//
// }else if (StringUtils.startsWith(record.value().getTableName(), tab_gic_member)) {
// // 会员unionId新增事件
// //dealMemberUnionIdChange((MaterialMemberUnionIdPoJo) pojo);
// }
}
private BinlogBasePojo binlogChange(GicRecord record) {
......
package com.gic.haoban.manage.service.util;
import com.gic.redis.data.util.RedisUtil;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class EventUtils {
private static Logger log = LogManager.getLogger(EventUtils.class);
public static boolean isOpenEvent() {
Object o = RedisUtil.getCache("open-marketing-member-event") ;
if(null == o) {
log.info("未开启事件-好办");
return false ;
}
log.info("开启事件-好办");
return true ;
}
}
......@@ -234,6 +234,7 @@
<dubbo:reference id="memberOrderReadApiService" interface="com.gic.order.api.service.member.MemberOrderReadApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference id="contentProducerApiService" interface="com.gic.content.api.service.ContentProducerApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference interface="com.gic.content.api.service.ContentMaterialApiService" id="contentMaterialApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference interface="com.gic.content.api.service.ContentSettingApiService" id="contentSettingApiService" timeout="10000" retries="0" check="false" />
</beans>
\ No newline at end of file
......@@ -154,7 +154,7 @@ public class MaterialDataStaticsController {
storeIds.add(materialStatisticsBaseQO.getStoreId());
}
MaterialDataOverviewVO materialDataOverviewVO =
materialDataAdaptor.queryMaterialDataOverview(materialStatisticsBaseQO.getEnterpriseId(), storeIds, materialStatisticsBaseQO.getFixedDateDiff());
materialDataAdaptor.queryMaterialDataOverview(materialStatisticsBaseQO, materialStatisticsBaseQO.getEnterpriseId(), storeIds, materialStatisticsBaseQO.getFixedDateDiff());
return RestResponse.successResult(materialDataOverviewVO);
}
......
......@@ -140,11 +140,13 @@ public class MaterialDataAdaptor {
* @param fixedDateDiff
* @return
*/
public MaterialDataOverviewVO queryMaterialDataOverview(String enterpriseId, List<String> storeIds, Integer fixedDateDiff) {
public MaterialDataOverviewVO queryMaterialDataOverview(MaterialAnalyzeDataQO dataQO, String enterpriseId, List<String> storeIds, Integer fixedDateDiff) {
Map<String, Object> inlineParams = new HashMap<>();
inlineParams.put("enterpriseId", enterpriseId);
inlineParams.put("fixedDateDiff", fixedDateDiff);
inlineParams.put("startDate", dataQO.getStartDate());
inlineParams.put("endDate", dataQO.getEndDate());
if (CollectionUtil.isNotEmpty(storeIds)) {
inlineParams.put("storeId", StringUtils.join(storeIds, ","));
}
......@@ -175,6 +177,9 @@ public class MaterialDataAdaptor {
inlineParams.put("pageSize", pageSize);
inlineParams.put("enterpriseId", enterpriseId);
inlineParams.put("fixedDateDiff", fixedDateDiff);
inlineParams.put("startDate", dataQO.getStartDate());
inlineParams.put("endDate", dataQO.getEndDate());
int orderByFields = DataApiUtils.getOrderByFields(orderByField, "enterpriseId", dataQO.getFieldsOrder());
inlineParams.put("orderByFields", orderByFields);
inlineParams.put("orderByType", DataApiUtils.getOrderByType(order));
......@@ -207,6 +212,8 @@ public class MaterialDataAdaptor {
inlineParams.put("pageSize", pageSize);
inlineParams.put("enterpriseId", enterpriseId);
inlineParams.put("fixedDateDiff", fixedDateDiff);
inlineParams.put("startDate", dataQO.getStartDate());
inlineParams.put("endDate", dataQO.getEndDate());
inlineParams.put("orderByFields", DataApiUtils.getOrderByFields(orderByField, "enterpriseId", dataQO.getFieldsOrder()));
inlineParams.put("orderByType", DataApiUtils.getOrderByType(order));
if (CollectionUtil.isNotEmpty(storeIds)) {
......
......@@ -15,11 +15,6 @@ import java.util.Map;
public class MaterialAnalyzeDataQO extends MaterialStatisticsBaseQO {
private static final long serialVersionUID = 3422937373665522931L;
/**
* 时间筛选
* 1 过去7天(默认选中),2 过去30天,3 过去60天,4 过去90天,5本周,6 本月,7 上月,8 上上月,9 上上上月
*/
private Integer fixedDateDiff;
/**
* 排序字段
......
package com.gic.haoban.manage.web.qo.content.statistics;
import com.gic.api.base.commons.BasePageInfo;
import com.gic.haoban.common.utils.DateUtil;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import java.util.Date;
/**
* @Author MUSI
......@@ -32,6 +37,22 @@ public class MaterialStatisticsBaseQO extends BasePageInfo {
*/
private String storeId;
/**
* 开始时间
*/
private String startDate;
/**
* 结束时间
*/
private String endDate;
/**
* 时间筛选
* 1 过去7天(默认选中),2 过去30天,3 过去60天,4 过去90天,5本周,6 本月,7 上月,8 上上月,9 上上上月
*/
private Integer fixedDateDiff;
public String getEnterpriseId() {
return enterpriseId;
......@@ -56,4 +77,58 @@ public class MaterialStatisticsBaseQO extends BasePageInfo {
public void setStoreId(String storeId) {
this.storeId = storeId;
}
public String getStartDate() {
if (StringUtils.isNotBlank(this.startDate)) {
return this.startDate;
}
if (this.fixedDateDiff != null) {
return convertStartDate(this.fixedDateDiff);
}
return startDate;
}
public void setStartDate(String startDate) {
this.startDate = startDate;
}
public String getEndDate() {
if (StringUtils.isBlank(this.endDate)) {
return DateUtil.dateToStr(DateUtils.addDays(new Date(), -1), "yyyy-MM-dd");
}
return endDate;
}
public void setEndDate(String endDate) {
this.endDate = endDate;
}
public String convertStartDate(Integer fixedDateDiff) {
if (fixedDateDiff == null) {
return null;
}
switch (fixedDateDiff) {
case 1:
return DateUtil.dateToStr(DateUtils.addDays(new Date(), -7), "yyyy-MM-dd");
case 2:
return DateUtil.dateToStr(DateUtils.addDays(new Date(), -30), "yyyy-MM-dd");
case 3:
return DateUtil.dateToStr(DateUtils.addDays(new Date(), -60), "yyyy-MM-dd");
case 4:
return DateUtil.dateToStr(DateUtils.addDays(new Date(), -90), "yyyy-MM-dd");
case 5:
return DateUtil.dateToStr(cn.hutool.core.date.DateUtil.beginOfWeek(new Date()), "yyyy-MM-dd");
case 6:
return DateUtil.dateToStr(cn.hutool.core.date.DateUtil.beginOfMonth(new Date()), "yyyy-MM-dd");
case 7:
return DateUtil.dateToStr(cn.hutool.core.date.DateUtil.lastMonth(), "yyyy-MM-dd");
case 8:
return DateUtil.dateToStr(cn.hutool.core.date.DateUtil.beginOfMonth(cn.hutool.core.date.DateUtil.offsetMonth(new Date(), -2)), "yyyy-MM-dd");
case 9:
return DateUtil.dateToStr(cn.hutool.core.date.DateUtil.beginOfMonth(cn.hutool.core.date.DateUtil.offsetMonth(new Date(), -3)), "yyyy-MM-dd");
default:
return null;
}
}
}
......@@ -15,11 +15,6 @@ import java.util.Map;
public class MaterialStoreAnalyzeDataQO extends MaterialStatisticsBaseQO {
private static final long serialVersionUID = 3422937373665522931L;
/**
* 时间筛选
* 1 过去7天(默认选中),2 过去30天,3 过去60天,4 过去90天,5本周,6 本月,7 上月,8 上上月,9 上上上月
*/
private Integer fixedDateDiff;
/**
* 排序字段
......
......@@ -51,6 +51,11 @@ public class IndexVO implements Serializable {
*/
private String itemId;
/**
* 0:个数/人数 1:元 2: 万元 3:比率值,需要自己加% 4:比值,乘以100+%
*/
private String dataType;
public List<String> getIndexRemarkList() {
if (StringUtils.isNotBlank(indexRemark)) {
return Arrays.stream(indexRemark.split(";")).collect(Collectors.toList());
......
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