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 {
ServiceResponse wxEnterpriseBind(WxEnterpriseRelationDetailDTO detailDTO);
/**
* 异步刷新门店
*
* @param message
*/
public void flushBindStoreByDelayMq(String message);
/**
* 刷新门店绑定到延迟队列
*
* @param enterpriseId
*/
public void flushBindStoreToDelayMq(String enterpriseId, FlushStoreMqDTO mqDTO);
/**
* 刷新企业门店
*
* @param enterpriseId
......
......@@ -11,6 +11,9 @@ public class StoreSyncPojo extends BinlogBasePojo {
@JSONField(name = "store_group_id")
private String storeGroupId;
@JSONField(name = "old_store_group_id")
private String oldStoreGroupId;
@JSONField(name = "storeId")
private String storeId;
......@@ -24,6 +27,14 @@ public class StoreSyncPojo extends BinlogBasePojo {
private Integer oldStatus;
public String getOldStoreGroupId() {
return oldStoreGroupId;
}
public void setOldStoreGroupId(String oldStoreGroupId) {
this.oldStoreGroupId = oldStoreGroupId;
}
public String getStoreGroupId() {
return storeGroupId;
}
......
......@@ -7,6 +7,7 @@ import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
import com.gic.commons.util.GICMQClientUtil;
import com.gic.commons.util.ToolUtil;
import com.gic.enterprise.api.dto.*;
import com.gic.enterprise.api.service.AuthorizeService;
......@@ -18,6 +19,7 @@ import com.gic.haoban.manage.api.dto.*;
import com.gic.haoban.manage.api.enums.ChannelCodeEnum;
import com.gic.haoban.manage.service.entity.*;
import com.gic.haoban.manage.service.service.*;
import com.gic.mq.sdk.GicMQClient;
import com.gic.redis.data.util.RedisUtil;
import com.google.common.collect.Sets;
import org.apache.commons.collections.CollectionUtils;
......@@ -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_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) {
......@@ -267,6 +275,7 @@ public class WxEnterpriseRelatedApiServiceImpl implements WxEnterpriseRelatedApi
return resp;
}
/**
* 如果是总部的话 校验是否是自己本身 并且可以执行下去
* 如果是代理 标识可以执行下 如果存在总部且不是保存的不能执行的
......@@ -313,6 +322,35 @@ public class WxEnterpriseRelatedApiServiceImpl implements WxEnterpriseRelatedApi
}
@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) {
ServiceResponse resp = new ServiceResponse();
String key = FLUSH_HAOBAN_BIND_STORE + enterpriseId;
......
......@@ -11,10 +11,12 @@ import com.gic.commons.util.GICMQClientUtil;
import com.gic.dubbo.entity.ProviderLocalTag;
import com.gic.haoban.base.api.common.ServiceResponse;
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.StaffClerkRelationDTO;
import com.gic.haoban.manage.api.enums.ChannelCodeEnum;
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.ClerkSyncPojo;
import com.gic.haoban.manage.service.pojo.GroupSyncPojo;
......@@ -66,6 +68,9 @@ public class KafkaMessageServiceImpl implements MessageListener<String, GicRecor
@Autowired
private StoreRangeService storeRangeService;
@Autowired
private WxEnterpriseRelatedApiService wxEnterpriseRelatedApiService;
@Override
......@@ -197,7 +202,11 @@ public class KafkaMessageServiceImpl implements MessageListener<String, GicRecor
if (gicField.getName().equals("status")
&&recordType.equals(GicRecordType.UPDATE)
&&!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 {
mid.put(gicField.getName(), gicField.getValue());
}
......@@ -214,24 +223,43 @@ public class KafkaMessageServiceImpl implements MessageListener<String, GicRecor
* @param syncPojo
*/
private void dealStore(StoreSyncPojo syncPojo) {
//删除门店 删除门店关联门店
if (syncPojo.getStatus() == 0) {
storeRangeService.delStoreRangeByRelationId(syncPojo.getEnterpriseId(), syncPojo.getStoreId());
//删除门店
storeRangeService.delStoreRelationByStoreId(syncPojo.getEnterpriseId(), syncPojo.getStoreId());
//门店状态变更 包括删除
if (syncPojo.getRecordType() == GicRecordType.UPDATE.value()
&& (!syncPojo.getStatus().equals(syncPojo.getOldStatus()))) {
logger.info("门店状态变更:{}", JSONObject.toJSONString(syncPojo));
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
*/
private void dealStoreGroup(GroupSyncPojo syncPojo) {
//删除
//删除 同步绑定门店
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