From a0fc6b82d7109bc8105066af30c772287edf7ac3 Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Wed, 12 Jul 2023 19:38:10 +0800 Subject: [PATCH] fix poi --- .../iformall/controller/mem/AsyncTask.java | 62 ++++++++++++++----- .../db/migration/V2023070600001_poi.sql | 2 + .../com/iformall/domain/po/WxMerchant.java | 6 ++ .../iformall/domain/vo/MerchantPoiTNew.java | 7 ++- .../enums/EnumMerchantCreateFrom.java | 36 +++++++++++ .../iformall/service/WxMerchantService.java | 1 + .../service/impl/WxMerchantServiceImpl.java | 27 ++++++++ .../resources/mapper/WxMerchantMapper.xml | 15 ++++- 8 files changed, 139 insertions(+), 17 deletions(-) create mode 100644 mallinkAdmin/src/main/resources/db/migration/V2023070600001_poi.sql create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumMerchantCreateFrom.java diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/mem/AsyncTask.java b/mallinkAdmin/src/main/java/com/iformall/controller/mem/AsyncTask.java index 38cd402ed..4898dce78 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/mem/AsyncTask.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/mem/AsyncTask.java @@ -21,6 +21,7 @@ import com.iformall.domain.vo.GaoDePoiInfo; import com.iformall.domain.vo.MerchantPoiT; import com.iformall.domain.vo.MerchantPoiTNew; import com.iformall.domain.vo.WxCardPriceTemplate; +import com.iformall.enums.EnumMerchantCreateFrom; import com.iformall.exception.MallinkException; import com.iformall.service.TtMerchantPoiService; import com.iformall.service.WxCUserBasicInfoService; @@ -306,7 +307,7 @@ public class AsyncTask { } } - private static final String[] poiImportFields = new String[]{"门店名称", "门店ID", "城市", "详细地址","管理员手机号","富茂系统商户ID", "富茂系统商户名称","富茂系统省份", "富茂系统城市", "富茂系统地址","富茂系统经度", "富茂系统纬度","高德匹配备注","POI导入日志"}; + private static final String[] poiImportFields = new String[]{"门店名称", "门店ID", "城市", "详细地址","管理员手机号","富茂系统商户ID", "富茂系统商户名称","富茂系统省份", "富茂系统城市", "富茂系统地址","富茂系统经度", "富茂系统纬度","初始化商户日志","高德匹配备注","POI导入日志"}; public void exportExcelPoiDataAddLocationForNew(TenantEntity tenantEntity,String gaodeKey,File file,HttpServletRequest request, HttpServletResponse response) throws Exception { ImportParams params = new ImportParams(); @@ -435,35 +436,68 @@ public class AsyncTask { } @Async - public void importMerchantInit(boolean isAllNew,File file, MallUserInfo user, String importKey,HttpServletRequest request, HttpServletResponse response) { + public void importMerchantInit(File file, MallUserInfo user, String importKey,HttpServletRequest request, HttpServletResponse response) { // 需要验证 String[] needFields = new String[]{"门店名称", "门店ID", "城市", "详细地址"}; ExcelImportResult datalist = handleImportFile(null,file,MerchantPoiTNew.class,poiImportFields,needFields,new AsyncTask.PoiNewExcelHandler()); if (null == datalist) { return ; } - //如果不是覆盖,则查询商户中 - //查询所有匹配了poi的 + //查询所有来客创建的商户 + WxMerchant merchantQ = new WxMerchant(); + merchantQ.updateTenantInfo(user); + merchantQ.setCreateFrom(EnumMerchantCreateFrom.DOUYIN_LAIKE.getCode()); + Map createMerchantMap = wxMerchantService.findMerchantMapByCreateFromId(merchantQ); + if (null == createMerchantMap) { + createMerchantMap = new HashMap(); + } + //查询所有已经匹配了poi的商户 TtMerchantPoi poiQ = new TtMerchantPoi(); poiQ.updateTenantInfo(user); Map poiMerchantMap = ttMerchantPoiService.queryPoiMerchantMap(poiQ); + if (null == poiMerchantMap) { + poiMerchantMap = new HashMap(); + } List successList = datalist.getList(); if(successList.size() > 0) { try { - successList.parallelStream().forEach(poiBase -> { - try { - if (null != poiMerchantMap) { - TtMerchantPoi tp = poiMerchantMap.get(poiBase.getPoiId()); - if (null != tp && ) { - - } - } - wxMerchantService.initMerchantByPoi(poiBase.getPoiName(), poiBase.getPoiId()); + for (int i = 0 ; i < successList.size(); i ++) { + try { + MerchantPoiTNew poiBase = successList.get(i); + WxMerchant createM = createMerchantMap.get(poiBase.getPoiId()); + boolean create = true; + if (null != createM ) { + create = false; + if (createM.getId() > 0 ) { + poiBase.setMerchantId(String.valueOf(createM.getId())); + poiBase.setMerchantName(createM.getName()); + poiBase.setInitMerchantRemark("已存在该POI创建的商户,无需重复创建"); + }else { + poiBase.setMerchantName(createM.getName()); + poiBase.setInitMerchantRemark("初始化商户失败,已存在多个该POI创建的商户"); + } + }else { + TtMerchantPoi poi = poiMerchantMap.get(poiBase.getPoiId()); + if (null != poi) { + create = false; + if (poi.getId() > 0 ) { + poiBase.setMerchantId(String.valueOf(poi.getId())); + poiBase.setMerchantName(poi.getPoiName()); + poiBase.setInitMerchantRemark("已存在该POI创建的商户,无需重复创建"); + }else { + poiBase.setMerchantName(poi.getPoiName()); + poiBase.setInitMerchantRemark("初始化商户失败,该POI匹配了多个商户"); + } + } + } + if (create) { + wxMerchantService.initMerchantByPoi(poiBase.getPoiName(), poiBase.getPoiId()); + } } catch (UnknownSessionException ue) { logger.error("session :"+ue.getMessage(),ue); } - }); + } stringRedisTemplate.expire(importKey,10, TimeUnit.SECONDS); exportExcel(request, response, successList,MerchantPoiTNew.class, "POI导入-结果.xlsx"); } catch (Exception e) { diff --git a/mallinkAdmin/src/main/resources/db/migration/V2023070600001_poi.sql b/mallinkAdmin/src/main/resources/db/migration/V2023070600001_poi.sql new file mode 100644 index 000000000..1bd9c6fd5 --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V2023070600001_poi.sql @@ -0,0 +1,2 @@ +alter table wx_merchant add column create_from int(1) NOT NULL DEFAULT 1 COMMENT '创建来源EnumMerchantCreateFrom' ; +alter table wx_merchant add column create_from_id varchar(100) COMMENT '创建来源编号' ; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java index 44b63164e..8bb963e7f 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java @@ -150,6 +150,12 @@ public class WxMerchant extends TenantEntity { // @Excel(name = "辅谈人", width = 20, orderNum = "17") @io.swagger.annotations.ApiModelProperty(value = "辅谈人", name = "talkUserAux") private String talkUserAux; + + @io.swagger.annotations.ApiModelProperty(value = "创建来源EnumMerchantCreateFrom", name = "createFrom") + private Integer createFrom; + + @io.swagger.annotations.ApiModelProperty(value = "创建来源Id", name = "createFromId") + private String createFromId; @TableField(exist = false) @io.swagger.annotations.ApiModelProperty(value = "开始时间", name = "startTime") diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/MerchantPoiTNew.java b/mallinkService/src/main/java/com/iformall/domain/vo/MerchantPoiTNew.java index 87f030135..273d4562c 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/MerchantPoiTNew.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/MerchantPoiTNew.java @@ -48,10 +48,13 @@ public class MerchantPoiTNew implements Serializable { @Excel(name = "富茂系统纬度", width = 20, orderNum = "12") @io.swagger.annotations.ApiModelProperty(value="富茂系统纬度",name="latitude") private BigDecimal latitude; - @Excel(name = "高德匹配备注", width = 20, orderNum = "13") + @Excel(name = "初始化商户日志", width = 20, orderNum = "13") + @io.swagger.annotations.ApiModelProperty(value="初始化商户日志",name="initMerchantRemark") + private String initMerchantRemark; + @Excel(name = "高德匹配备注", width = 20, orderNum = "14") @io.swagger.annotations.ApiModelProperty(value="高德匹配备注",name="gaodeRemark") private String gaodeRemark; - @Excel(name = "POI导入日志", width = 20, orderNum = "14") + @Excel(name = "POI导入日志", width = 20, orderNum = "15") @io.swagger.annotations.ApiModelProperty(value="POI导入日志",name="importRemark") private String importRemark; } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumMerchantCreateFrom.java b/mallinkService/src/main/java/com/iformall/enums/EnumMerchantCreateFrom.java new file mode 100644 index 000000000..cdf800ed0 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumMerchantCreateFrom.java @@ -0,0 +1,36 @@ +package com.iformall.enums; + + +/** + * @author gongbiao + */ +public enum EnumMerchantCreateFrom { + + CREATE(1, "手动创建"), + DOUYIN_LAIKE(2, "抖音来客"); + + public static EnumMerchantCreateFrom getEnum(Integer code) { + for (EnumMerchantCreateFrom value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumMerchantCreateFrom(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java b/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java index feb586a04..69e8ce9cd 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java @@ -215,6 +215,7 @@ public interface WxMerchantService { WxMerchant findBrandAdmin(TenantEntity tenantEntity, Long brandId); Map findMerchantMap(WxMerchant merchantQ); + Map findMerchantMapByCreateFromId(WxMerchant merchantQ); WxMerchant findParkMerchant(WxPark wxPark); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java index 1060ed322..d5f72fc50 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java @@ -2087,6 +2087,33 @@ public class WxMerchantServiceImpl implements WxMerchantService { } return merchantMap; } + + @Override + public Map findMerchantMapByCreateFromId(WxMerchant merchantQ) { + + List list = this.findList(merchantQ); + if(null != list){ + Map merchantMap = new HashMap<>(); + for (int i = 0 ; i < list.size(); i++ ){ + WxMerchant m = list.get(i); + if (StringUtils.isNotBlank(m.getCreateFromId())) { + WxMerchant cm = merchantMap.get(m.getCreateFromId()); + if (null != cm) { + WxMerchant _m = new WxMerchant(); + _m.setId(-1L); + _m.setName("该编码已创建了多个商户"); + merchantMap.put(m.getCreateFromId(), _m); + }else { + merchantMap.put(m.getCreateFromId(), m); + } + } + } + if (merchantMap.size() > 0 ){ + return merchantMap; + } + } + return null; + } @Override public WxMerchant findParkMerchant(WxPark wxPark) { diff --git a/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml b/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml index 33731b5a6..0ca012efd 100644 --- a/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml @@ -48,12 +48,16 @@ + + + m.`id`,m.`tenant_id`,m.`parent_tenant_id`,m.`img_url`,m.`name`,m.`encode`,m.`link_phone`,m.`create_date`,m.`update_date`,m.`car_vendor_type`,m.`car_params`,m.`status`,m.`link_person`, m.`business_id`,m.`business_types`,m.`sub_business_id`,m.`shop_type`,m.`brand`,m.`type`,m.`is_public`,m.`is_private`,m.email,m.`title`,m.`cover_picture`,m.`is_admin`,m.`bill_setting`,m.`qr_code`,m.`tt_qr_code`, - m.`introduction`,m.`action_desc`,m.`mark`,m.mark_time,m.`is_del`,m.`talk_user_main`,m.`talk_user_aux`,m.link_line_phone,m.search_card_by_phone,m.credit_locked,m.credit_locked,m.entry_amount,m.cash_out_count,m.cash_out_last_time + m.`introduction`,m.`action_desc`,m.`mark`,m.mark_time,m.`is_del`,m.`talk_user_main`,m.`talk_user_aux`,m.link_line_phone,m.search_card_by_phone,m.credit_locked,m.credit_locked,m.entry_amount,m.cash_out_count, + m.cash_out_last_time,m.create_from,m.create_from_id @@ -168,6 +172,15 @@ and m.`credit_locked` = #{creditLocked} + + + and m.`create_from` = #{createFrom} + + + + and m.`create_from_id` = #{createFromId} + + and m.`is_admin` in