Commit 1cae458b by 陶光胜

Merge branch 'developer' into 'master'

Developer

See merge request !13
parents 099fe2b1 276678e5
......@@ -153,12 +153,24 @@ public interface ClerkApiService {
* 如果存在返回 门店下 同导购code 的 clerkId ,如果不存在,新建导购,返回新建的导购i
* @author zhiwj
* @param clerkId
* @param storeId
* @param storeInfoId
* @param enterpriseId
* @return com.gic.api.base.commons.ServiceResponse<java.lang.Void>
* @throws
*/
ServiceResponse<Integer> addClerkToOtherStore(Integer clerkId, Integer storeId, Integer enterpriseId);
ServiceResponse<Integer> addClerkToOtherStore(Integer clerkId, Integer storeInfoId, Integer enterpriseId);
/**
* @Title: ensureClerkInStore
* @Description:
* @author zhiwj
* @param clerkId
* @param storeInfoId
* @param enterpriseId
* @return com.gic.api.base.commons.ServiceResponse<java.lang.Void>
* @throws
*/
ServiceResponse<Boolean> ensureClerkInStore(Integer clerkId, Integer storeInfoId, Integer enterpriseId);
/**
* @Title: listClerkByStoreBrand
......@@ -185,4 +197,16 @@ public interface ClerkApiService {
ServiceResponse<Void> syncClerkToWeimob(Integer wmMallStoreId, List<Integer> storeIdList, Integer enterpriseId);
ServiceResponse<Void> syncClerkToWeimobTask(String param);
/**
* 同步失败的重新同步导购
* @Title: syncClerkToWeimobOfAdd

* @Description:

* @author guojuxing
* @param wmMallStoreId
* @param clerkIds
* @param enterpriseId

* @return com.gic.api.base.commons.ServiceResponse<java.lang.Void>


*/
ServiceResponse<Void> syncClerkToWeimob(Integer wmMallStoreId, String clerkIds, Integer enterpriseId);
}
......@@ -576,13 +576,13 @@ public class ClerkApiServiceImpl implements ClerkApiService {
}
@Override
public ServiceResponse<Integer> addClerkToOtherStore(Integer clerkId, Integer storeId, Integer enterpriseId) {
logger.info("clerkId:{}, storeId:{}, enterpriseId:{}", clerkId, storeId, enterpriseId);
public ServiceResponse<Integer> addClerkToOtherStore(Integer clerkId, Integer storeInfoId, Integer enterpriseId) {
logger.info("clerkId:{}, storeInfoId:{}, enterpriseId:{}", clerkId, storeInfoId, enterpriseId);
TabClerk clerk = this.clerkService.getById(clerkId);
if (clerk == null) {
return EnterpriseServiceResponse.failure(ErrorCode.NOTEXISTS.getCode(), "导购不存在");
}
StoreDTO store = this.storeApiService.getStoreById(enterpriseId, storeId).getResult();
StoreDTO store = this.storeApiService.getStoreByStoreInfoId(enterpriseId, storeInfoId).getResult();
if (store == null) {
return EnterpriseServiceResponse.failure(ErrorCode.NOTEXISTS.getCode(), "门店不存在");
}
......@@ -604,6 +604,26 @@ public class ClerkApiServiceImpl implements ClerkApiService {
}
@Override
public ServiceResponse<Boolean> ensureClerkInStore(Integer clerkId, Integer storeInfoId, Integer enterpriseId) {
logger.info("clerkId:{}, storeInfoId:{}, enterpriseId:{}", clerkId, storeInfoId, enterpriseId);
TabClerk clerk = this.clerkService.getById(clerkId);
if (clerk == null) {
return EnterpriseServiceResponse.failure(ErrorCode.NOTEXISTS.getCode(), "导购不存在", Boolean.FALSE);
}
StoreDTO store = this.storeApiService.getStoreById(enterpriseId, storeInfoId).getResult();
if (store == null) {
return EnterpriseServiceResponse.failure(ErrorCode.NOTEXISTS.getCode(), "门店不存在", Boolean.FALSE);
}
if (clerk.getStoreInfoId().equals(store.getStoreInfoId())) {
logger.info("导购[clerkId:{}]已存在门店[storeId:{}, storeInfoId:{}]下", clerkId, store.getStoreId(), store.getStoreInfoId());
return EnterpriseServiceResponse.success(Boolean.TRUE);
} else {
logger.info("导购[clerkId:{}]不存在门店[storeId:{}, storeInfoId:{}]下", clerkId, store.getStoreId(), store.getStoreInfoId());
return EnterpriseServiceResponse.failure(ErrorCode.NOTEXISTS.getCode(), "导购不存在该门店下", Boolean.FALSE);
}
}
@Override
public ServiceResponse<List<ClerkDTO>> listClerkByStoreBrand(Integer enterpriseId, Integer storeBrandId, String clerkName) {
StoreSearchDBDTO storeSearchDBDTO = new StoreSearchDBDTO();
storeSearchDBDTO.setEnterpriseId(enterpriseId);
......@@ -680,6 +700,42 @@ public class ClerkApiServiceImpl implements ClerkApiService {
return ServiceResponse.success();
}
@Override
public ServiceResponse<Void> syncClerkToWeimob(Integer wmMallStoreId, String clerkIds, Integer enterpriseId) {
if (StringUtils.isBlank(clerkIds)) {
return ServiceResponse.success();
}
List<TabClerk> clerkList = clerkService.listClerkByIds(enterpriseId, clerkIds);
if (CollectionUtils.isNotEmpty(clerkList)) {
List<Integer> storeInfoIdList = clerkList.stream().map(e -> e.getStoreInfoId()).collect(Collectors.toList());
Map<String, String> storeInfoIdMapStoreCode = new HashMap<>(16);
//查询门店,为了获取门店code
if (CollectionUtils.isNotEmpty(storeInfoIdList)) {
StoreSearchDBDTO storeSearchDBDTO = new StoreSearchDBDTO();
storeSearchDBDTO.setStoreInfoIdList(storeInfoIdList);
com.github.pagehelper.Page<StoreDTO> storePage = storeService.listStore(storeSearchDBDTO, 0, storeInfoIdList.size());
if (storePage != null) {
List<StoreDTO> storeList = storePage.getResult();
if (CollectionUtils.isNotEmpty(storeList)) {
storeList.forEach( store -> storeInfoIdMapStoreCode.put(store.getStoreInfoId().toString(), store.getStoreName()));
}
}
}
clerkList.forEach(clerkTemp -> {
WeimobGuiderSynDTO weimobGuiderSynDTO = new WeimobGuiderSynDTO();
weimobGuiderSynDTO.setStoreNumber(storeInfoIdMapStoreCode.get(clerkTemp.getStoreInfoId().toString()));
weimobGuiderSynDTO.setClerkId(clerkTemp.getClerkId());
weimobGuiderSynDTO.setGuiderName(clerkTemp.getClerkName());
weimobGuiderSynDTO.setGuiderPhone(clerkTemp.getPhoneNumber());
weimobGuiderSynDTO.setJobNumber(clerkTemp.getClerkCode());
weimobGuiderSynDTO.setStoreInfoId(clerkTemp.getStoreInfoId());
asynClerkInfoToWeimobMQ(wmMallStoreId, enterpriseId, weimobGuiderSynDTO);
});
}
return ServiceResponse.success();
}
private void asynClerkInfoToWeimobMQ(Integer wmMallStoreId, Integer enterpriseId, WeimobGuiderSynDTO wmGuiderDTO) {
GicMQClient client = GICMQClientUtil.getClientInstance();
Map<String, Object> params = new HashMap<>(4);
......
......@@ -9,10 +9,12 @@ import com.gic.commons.util.*;
import com.gic.enterprise.dto.CustomStoreDTO;
import com.gic.enterprise.dto.EnterpriseDTO;
import com.gic.enterprise.dto.EnterpriseLicenseDTO;
import com.gic.enterprise.dto.wm.WmStoreSyncLogDTO;
import com.gic.enterprise.error.ErrorCode;
import com.gic.enterprise.response.EnterpriseServiceResponse;
import com.gic.enterprise.service.CustomStoreApiService;
import com.gic.enterprise.service.EnterpriseApiService;
import com.gic.enterprise.service.WmStoreSyncLogApiService;
import com.gic.mq.sdk.GicMQClient;
import com.gic.redis.data.util.RedisUtil;
import com.gic.search.business.api.constant.enums.OperateEnum;
......@@ -27,6 +29,9 @@ import com.gic.store.entity.*;
import com.gic.store.service.*;
import com.gic.store.strategy.BulkUpdateStoreStrtegy;
import com.gic.store.utils.field.*;
import com.gic.weimob.api.dto.WeimobPhysicalStoreDTO;
import com.gic.weimob.api.dto.WeimobStoreAccountDTO;
import com.gic.weimob.api.service.WeimobStoreSiteService;
import com.google.common.base.Joiner;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -40,6 +45,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
......@@ -101,6 +107,10 @@ public class StoreApiServiceImpl implements StoreApiService {
private ClerkApiService clerkApiService;
@Autowired
private StoreTagService storeTagService;
@Autowired
private WeimobStoreSiteService weimobStoreSiteService;
@Autowired
private WmStoreSyncLogApiService wmStoreSyncLogApiService;
private Map<String, BulkUpdateStoreStrtegy> storeStrtegyMap = new ConcurrentHashMap<>();
......@@ -174,6 +184,9 @@ public class StoreApiServiceImpl implements StoreApiService {
} catch (Exception e) {
logger.warn("门店编辑日志记录错误", e);
}
//修改门店同步到微盟
updateStoreToWm(storeDTO);
}
// 自定义属性
String error = storeExtendService.saveOrUpdate(storeDTO.getEnterpriseId(), storeDTO.getStoreInfoId(), storeDTO.getStoreExtendList());
......@@ -1500,4 +1513,78 @@ public class StoreApiServiceImpl implements StoreApiService {
return ServiceResponse.failure(error.getCode(), error.getResultInfo());
}
private void updateStoreToWm(StoreDTO storeDTO) {
WeimobPhysicalStoreDTO weimobPhysicalStoreDTO = getWeimobPhsicalStore(storeDTO);
logger.info("实体门店拼接后对象为:{}", JSON.toJSONString(weimobPhysicalStoreDTO));
if (weimobPhysicalStoreDTO != null) {
ServiceResponse<List<WmStoreSyncLogDTO>> wmStoreListResult = wmStoreSyncLogApiService
.listByStoreId(storeDTO.getStoreId(), storeDTO.getEnterpriseId());
if (wmStoreListResult.isSuccess()) {
List<WmStoreSyncLogDTO> wmStoreList = wmStoreListResult.getResult();
wmStoreList.forEach(wmStore -> {
ServiceResponse<Void> weimobResult = this.weimobStoreSiteService
.updateWeimobPhysicalStore(wmStore.getWmMallStoreId(), storeDTO.getEnterpriseId(), weimobPhysicalStoreDTO);
logger.info("门店修改同步到微盟结果:{},店铺ID:{}", JSON.toJSONString(weimobResult), wmStore.getWmMallStoreId());
});
}
}
}
private WeimobPhysicalStoreDTO getWeimobPhsicalStore(StoreDTO storeDTO) {
if (storeDTO.getStatus().intValue() == 1) {
WeimobPhysicalStoreDTO weimobPhysicalStoreDTO = new WeimobPhysicalStoreDTO();
//用storeInfoId
weimobPhysicalStoreDTO.setStoreInfoId(storeDTO.getStoreInfoId());
weimobPhysicalStoreDTO.setStoreNumber(storeDTO.getStoreCode());
weimobPhysicalStoreDTO.setStoreName(storeDTO.getStoreName());
//经纬度
if (org.apache.commons.lang.StringUtils.isNotBlank(storeDTO.getLongitude())) {
weimobPhysicalStoreDTO.setLongitude(new BigDecimal(storeDTO.getLongitude()));
}
if (org.apache.commons.lang.StringUtils.isNotBlank(storeDTO.getLatitude())) {
weimobPhysicalStoreDTO.setLatitude(new BigDecimal(storeDTO.getLatitude()));
}
//省市区名称
String fullArea = org.apache.commons.lang.StringUtils.isNotBlank(storeDTO.getProvinces()) ?
storeDTO.getProvinces().replaceAll("//", "") : "";
weimobPhysicalStoreDTO.setAddress(fullArea + storeDTO.getAddress());
StringBuilder businessTime = new StringBuilder();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm");
List<StoreBusinessTimeDTO> businessTimeList = storeDTO.getBusinessTimeList();
if (CollectionUtils.isNotEmpty(businessTimeList)) {
businessTimeList.stream().map(e -> {
String businessHours = simpleDateFormat.format(e.getOpenTime()) + "-" + simpleDateFormat.format(e.getCloseTime());
return e.getWeekdayShow() + businessHours;
}).forEach(businessTime::append);
}
weimobPhysicalStoreDTO.setBussinessHours(businessTime.toString());
WeimobStoreAccountDTO accountDTO = new WeimobStoreAccountDTO();
ClerkDTO headClerk = getHeadClerk(storeDTO.getEnterpriseId(), storeDTO.getStoreId());
if (headClerk != null) {
accountDTO.setManagerLoginAccount(headClerk.getPhoneNumber());
accountDTO.setManagerName(headClerk.getClerkName());
}
if (org.apache.commons.lang.StringUtils.isNotBlank(storeDTO.getConactsPhone())) {
weimobPhysicalStoreDTO.setStoreTel(storeDTO.getConactsPhone());
} else {
//店长的号码
if (headClerk != null) {
weimobPhysicalStoreDTO.setStoreTel(headClerk.getPhoneNumber());
}
}
weimobPhysicalStoreDTO.setAccountVo(accountDTO);
return weimobPhysicalStoreDTO;
}
return null;
}
private ClerkDTO getHeadClerk(Integer enterpriseId, Integer storeId) {
ServiceResponse<ClerkDTO> clerkResponse = clerkApiService.getHeadClerk(enterpriseId, storeId);
if (clerkResponse.isSuccess()) {
return clerkResponse.getResult();
}
return null;
}
}
......@@ -65,4 +65,5 @@
<dubbo:service interface="com.gic.store.service.DictApiService" ref="dictApiService" timeout="6000" />
<dubbo:reference interface="com.gic.weimob.api.service.WeimobStoreSiteService" id="weimobStoreSiteService" timeout="6000"/>
<dubbo:reference interface="com.gic.enterprise.service.WmStoreSyncLogApiService" id="wmStoreSyncLogApiService" timeout="6000"/>
</beans>
......@@ -48,6 +48,9 @@
)
</insert>
<insert id="insertSelective" parameterType="com.gic.store.entity.TabClerk">
<selectKey keyProperty="clerkId" order="AFTER" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
</selectKey>
insert into tab_clerk
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="clerkId != null">
......
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