Commit 7e750ded by fudahua

企业门店初始化

parent 7c793873
package com.gic.haoban.manage.api.dto;
import java.io.Serializable;
/**
* Created 2021/4/24.
*
* @author hua
*/
public class FlushStoreMqDTO implements Serializable {
private String enterpriseId;
private String wxEnterpriseId;
private String optStaffId;
private int channalCode;
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public String getOptStaffId() {
return optStaffId;
}
public void setOptStaffId(String optStaffId) {
this.optStaffId = optStaffId;
}
public int getChannalCode() {
return channalCode;
}
public void setChannalCode(int channalCode) {
this.channalCode = channalCode;
}
}
...@@ -39,6 +39,20 @@ public interface WxEnterpriseRelatedApiService { ...@@ -39,6 +39,20 @@ public interface WxEnterpriseRelatedApiService {
ServiceResponse wxEnterpriseBind(WxEnterpriseRelationDetailDTO detailDTO); ServiceResponse wxEnterpriseBind(WxEnterpriseRelationDetailDTO detailDTO);
/** /**
* 异步刷新门店
*
* @param message
*/
public void flushBindStoreByDelayMq(String message);
/**
* 刷新门店绑定到延迟队列
*
* @param enterpriseId
*/
public void flushBindStoreToDelayMq(String enterpriseId, FlushStoreMqDTO mqDTO);
/**
* 刷新企业门店 * 刷新企业门店
* *
* @param enterpriseId * @param enterpriseId
......
...@@ -11,6 +11,9 @@ public class StoreSyncPojo extends BinlogBasePojo { ...@@ -11,6 +11,9 @@ public class StoreSyncPojo extends BinlogBasePojo {
@JSONField(name = "store_group_id") @JSONField(name = "store_group_id")
private String storeGroupId; private String storeGroupId;
@JSONField(name = "old_store_group_id")
private String oldStoreGroupId;
@JSONField(name = "storeId") @JSONField(name = "storeId")
private String storeId; private String storeId;
...@@ -24,6 +27,14 @@ public class StoreSyncPojo extends BinlogBasePojo { ...@@ -24,6 +27,14 @@ public class StoreSyncPojo extends BinlogBasePojo {
private Integer oldStatus; private Integer oldStatus;
public String getOldStoreGroupId() {
return oldStoreGroupId;
}
public void setOldStoreGroupId(String oldStoreGroupId) {
this.oldStoreGroupId = oldStoreGroupId;
}
public String getStoreGroupId() { public String getStoreGroupId() {
return storeGroupId; return storeGroupId;
} }
......
...@@ -7,6 +7,7 @@ import java.util.stream.Collectors; ...@@ -7,6 +7,7 @@ import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page; import com.gic.api.base.commons.Page;
import com.gic.commons.util.GICMQClientUtil;
import com.gic.commons.util.ToolUtil; import com.gic.commons.util.ToolUtil;
import com.gic.enterprise.api.dto.*; import com.gic.enterprise.api.dto.*;
import com.gic.enterprise.api.service.AuthorizeService; import com.gic.enterprise.api.service.AuthorizeService;
...@@ -18,6 +19,7 @@ import com.gic.haoban.manage.api.dto.*; ...@@ -18,6 +19,7 @@ import com.gic.haoban.manage.api.dto.*;
import com.gic.haoban.manage.api.enums.ChannelCodeEnum; import com.gic.haoban.manage.api.enums.ChannelCodeEnum;
import com.gic.haoban.manage.service.entity.*; import com.gic.haoban.manage.service.entity.*;
import com.gic.haoban.manage.service.service.*; import com.gic.haoban.manage.service.service.*;
import com.gic.mq.sdk.GicMQClient;
import com.gic.redis.data.util.RedisUtil; import com.gic.redis.data.util.RedisUtil;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
...@@ -69,6 +71,12 @@ public class WxEnterpriseRelatedApiServiceImpl implements WxEnterpriseRelatedApi ...@@ -69,6 +71,12 @@ public class WxEnterpriseRelatedApiServiceImpl implements WxEnterpriseRelatedApi
private static final String FLUSH_HAOBAN_BIND_STORE = "flush_haoban_bind_store:"; private static final String FLUSH_HAOBAN_BIND_STORE = "flush_haoban_bind_store:";
private static final String FLUSH_HAOBAN_BIND_STORE_MQ = "flushHaobanBindStoreMq";
//延迟判断redis的key
private static final String FLUSH_HAOBAN_BIND_STORE_MQ_DELAY = "flushHaobanBindStoreMqDelay";
private static final int DELAY_TIME = 10;
//获取门店详情 //获取门店详情
public boolean isEnterpriseOver(String eid) { public boolean isEnterpriseOver(String eid) {
...@@ -267,6 +275,7 @@ public class WxEnterpriseRelatedApiServiceImpl implements WxEnterpriseRelatedApi ...@@ -267,6 +275,7 @@ public class WxEnterpriseRelatedApiServiceImpl implements WxEnterpriseRelatedApi
return resp; return resp;
} }
/** /**
* 如果是总部的话 校验是否是自己本身 并且可以执行下去 * 如果是总部的话 校验是否是自己本身 并且可以执行下去
* 如果是代理 标识可以执行下 如果存在总部且不是保存的不能执行的 * 如果是代理 标识可以执行下 如果存在总部且不是保存的不能执行的
...@@ -313,6 +322,35 @@ public class WxEnterpriseRelatedApiServiceImpl implements WxEnterpriseRelatedApi ...@@ -313,6 +322,35 @@ public class WxEnterpriseRelatedApiServiceImpl implements WxEnterpriseRelatedApi
} }
@Override @Override
public void flushBindStoreByDelayMq(String message) {
logger.info("刷新绑定门店:{}", message);
FlushStoreMqDTO flushStoreMqDTO = JSONObject.parseObject(message, FlushStoreMqDTO.class);
ServiceResponse response = this.flushBindStoreByEnterpriseId(flushStoreMqDTO.getEnterpriseId(), flushStoreMqDTO.getWxEnterpriseId()
, flushStoreMqDTO.getOptStaffId(), flushStoreMqDTO.getChannalCode());
logger.info("刷新绑定结束:{}", JSONObject.toJSONString(response));
}
@Override
public void flushBindStoreToDelayMq(String enterpriseId, FlushStoreMqDTO mqDTO) {
String str = JSONObject.toJSONString(mqDTO);
String key = FLUSH_HAOBAN_BIND_STORE_MQ_DELAY + ":" + enterpriseId;
Object cache = RedisUtil.getCache(key);
if (null == cache) {
logger.info("放入队列,刷新绑定门店:{}", enterpriseId);
RedisUtil.setCache(key, 1, Long.valueOf(DELAY_TIME));
GicMQClient clientInstance = GICMQClientUtil.getClientInstance();
try {
clientInstance.sendMessage(FLUSH_HAOBAN_BIND_STORE_MQ, str, DELAY_TIME);
} catch (Exception e) {
e.printStackTrace();
logger.info("发送消息异常:{}", str);
}
} else {
logger.info("最近已有在刷新,无需重复刷新:{}", JSONObject.toJSONString(mqDTO));
}
}
@Override
public ServiceResponse flushBindStoreByEnterpriseId(String enterpriseId, String wxEnterpriseId, String optStaffId, int channalCode) { public ServiceResponse flushBindStoreByEnterpriseId(String enterpriseId, String wxEnterpriseId, String optStaffId, int channalCode) {
ServiceResponse resp = new ServiceResponse(); ServiceResponse resp = new ServiceResponse();
String key = FLUSH_HAOBAN_BIND_STORE + enterpriseId; String key = FLUSH_HAOBAN_BIND_STORE + enterpriseId;
......
...@@ -11,10 +11,12 @@ import com.gic.commons.util.GICMQClientUtil; ...@@ -11,10 +11,12 @@ import com.gic.commons.util.GICMQClientUtil;
import com.gic.dubbo.entity.ProviderLocalTag; import com.gic.dubbo.entity.ProviderLocalTag;
import com.gic.haoban.base.api.common.ServiceResponse; import com.gic.haoban.base.api.common.ServiceResponse;
import com.gic.haoban.contacts.manage.api.enums.StatusEnum; import com.gic.haoban.contacts.manage.api.enums.StatusEnum;
import com.gic.haoban.manage.api.dto.FlushStoreMqDTO;
import com.gic.haoban.manage.api.dto.StaffClerkBindLogInfoDTO; import com.gic.haoban.manage.api.dto.StaffClerkBindLogInfoDTO;
import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO; import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO;
import com.gic.haoban.manage.api.enums.ChannelCodeEnum; import com.gic.haoban.manage.api.enums.ChannelCodeEnum;
import com.gic.haoban.manage.api.service.StaffClerkRelationApiService; import com.gic.haoban.manage.api.service.StaffClerkRelationApiService;
import com.gic.haoban.manage.api.service.WxEnterpriseRelatedApiService;
import com.gic.haoban.manage.service.pojo.BinlogBasePojo; import com.gic.haoban.manage.service.pojo.BinlogBasePojo;
import com.gic.haoban.manage.service.pojo.ClerkSyncPojo; import com.gic.haoban.manage.service.pojo.ClerkSyncPojo;
import com.gic.haoban.manage.service.pojo.GroupSyncPojo; import com.gic.haoban.manage.service.pojo.GroupSyncPojo;
...@@ -66,6 +68,9 @@ public class KafkaMessageServiceImpl implements MessageListener<String, GicRecor ...@@ -66,6 +68,9 @@ public class KafkaMessageServiceImpl implements MessageListener<String, GicRecor
@Autowired @Autowired
private StoreRangeService storeRangeService; private StoreRangeService storeRangeService;
@Autowired
private WxEnterpriseRelatedApiService wxEnterpriseRelatedApiService;
@Override @Override
...@@ -197,7 +202,11 @@ public class KafkaMessageServiceImpl implements MessageListener<String, GicRecor ...@@ -197,7 +202,11 @@ public class KafkaMessageServiceImpl implements MessageListener<String, GicRecor
if (gicField.getName().equals("status") if (gicField.getName().equals("status")
&&recordType.equals(GicRecordType.UPDATE) &&recordType.equals(GicRecordType.UPDATE)
&&!mid.containsKey("oldStatus")) { &&!mid.containsKey("oldStatus")) {
mid.put("oldStatus",gicField.getValue()); mid.put("oldStatus", gicField.getValue());
} else if (gicField.getName().equals("store_group_id")
&& recordType.equals(GicRecordType.UPDATE)
&& !mid.containsKey("oldStoreGroupId")) {
mid.put("oldStoreGroupId", gicField.getValue());
}else { }else {
mid.put(gicField.getName(), gicField.getValue()); mid.put(gicField.getName(), gicField.getValue());
} }
...@@ -214,24 +223,43 @@ public class KafkaMessageServiceImpl implements MessageListener<String, GicRecor ...@@ -214,24 +223,43 @@ public class KafkaMessageServiceImpl implements MessageListener<String, GicRecor
* @param syncPojo * @param syncPojo
*/ */
private void dealStore(StoreSyncPojo syncPojo) { private void dealStore(StoreSyncPojo syncPojo) {
//删除门店 删除门店关联门店 //门店状态变更 包括删除
if (syncPojo.getStatus() == 0) { if (syncPojo.getRecordType() == GicRecordType.UPDATE.value()
storeRangeService.delStoreRangeByRelationId(syncPojo.getEnterpriseId(), syncPojo.getStoreId()); && (!syncPojo.getStatus().equals(syncPojo.getOldStatus()))) {
//删除门店 logger.info("门店状态变更:{}", JSONObject.toJSONString(syncPojo));
storeRangeService.delStoreRelationByStoreId(syncPojo.getEnterpriseId(), syncPojo.getStoreId()); bindStoreToMq(syncPojo.getEnterpriseId());
//新增门店
} else if (syncPojo.getRecordType() == GicRecordType.INSERT.value()) {
logger.info("新增门店:{}", JSONObject.toJSONString(syncPojo));
bindStoreToMq(syncPojo.getEnterpriseId());
} else if (!syncPojo.getStoreGroupId().equals(syncPojo.getOldStoreGroupId())) {
logger.info("门店分组变更:{}", JSONObject.toJSONString(syncPojo));
bindStoreToMq(syncPojo.getEnterpriseId());
} else {
logger.info("门店变更,无需操作同步:{}", JSONObject.toJSONString(syncPojo));
} }
} }
private void bindStoreToMq(String enterrpriseId) {
//放入延时队列刷新
FlushStoreMqDTO mqDTO = new FlushStoreMqDTO();
mqDTO.setEnterpriseId(enterrpriseId);
mqDTO.setWxEnterpriseId("-1");
mqDTO.setChannalCode(ChannelCodeEnum.SYNC_UNBIND.getCode());
mqDTO.setOptStaffId("-1");
wxEnterpriseRelatedApiService.flushBindStoreToDelayMq(enterrpriseId, mqDTO);
}
/** /**
* 门店分组的处理 * 门店分组的处理
* *
* @param syncPojo * @param syncPojo
*/ */
private void dealStoreGroup(GroupSyncPojo syncPojo) { private void dealStoreGroup(GroupSyncPojo syncPojo) {
//删除 //删除 同步绑定门店
if (syncPojo.getOldStatus() == 1 && syncPojo.getStatus() == 0) { if (syncPojo.getOldStatus() == 1 && syncPojo.getStatus() == 0) {
storeRangeService.delStoreRangeByRelationId(syncPojo.getEnterpriseId(), syncPojo.getStoreGroupId()); logger.info("门店分组变更,同步绑定门店:{}", JSONObject.toJSONString(syncPojo));
this.bindStoreToMq(syncPojo.getEnterpriseId());
} }
} }
......
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