feat:主数据同步

This commit is contained in:
苏竹红
2025-08-18 09:29:44 +08:00
parent d52faf485b
commit 6aafc3970f
4 changed files with 157 additions and 13 deletions

View File

@@ -11,17 +11,19 @@ import java.util.Objects;
public enum PaymentMethodEnum { public enum PaymentMethodEnum {
//1.月付 2.季付 3.半年付 4.年付 //1.月付 2.季付 3.半年付 4.年付
PAYMENT_METHOD_1(1, "月付"), PAYMENT_METHOD_1(1, "月付",1),
PAYMENT_METHOD_2(2, "季付"), PAYMENT_METHOD_2(2, "季付",3),
PAYMENT_METHOD_3(3, "半年付"), PAYMENT_METHOD_3(3, "半年付",6),
PAYMENT_METHOD_4(4, "年付"), PAYMENT_METHOD_4(4, "年付",12),
; ;
private Integer code; private Integer code;
private String desc; private String desc;
PaymentMethodEnum(Integer code, String desc) { private Integer totalMonth;
PaymentMethodEnum(Integer code, String desc,Integer totalMonth) {
this.code = code; this.code = code;
this.desc = desc; this.desc = desc;
} }
@@ -34,6 +36,9 @@ public enum PaymentMethodEnum {
return desc; return desc;
} }
public Integer getTotalMonth() {
return totalMonth;
}
public static PaymentMethodEnum getByCode(Integer code) { public static PaymentMethodEnum getByCode(Integer code) {
if(Objects.isNull(code)){ if(Objects.isNull(code)){

View File

@@ -34,4 +34,8 @@ public class SignFranchiseDAO {
} }
return signFranchiseMapper.getSignType(shopIds); return signFranchiseMapper.getSignType(shopIds);
} }
public SignFranchiseDO selectByShopId(Long shopId){
return signFranchiseMapper.selectByShopId(shopId);
}
} }

View File

@@ -1,5 +1,6 @@
package com.cool.store.request; package com.cool.store.request;
import com.aliyun.ons20190214.models.OnsMessageTraceRequest;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
@@ -14,6 +15,8 @@ import java.util.Date;
@Data @Data
public class StoreMasterDTO { public class StoreMasterDTO {
private String enterpriseId;
@ApiModelProperty("门店名称(加盟签约)") @ApiModelProperty("门店名称(加盟签约)")
private String storeName; private String storeName;
@ApiModelProperty("门店名称(小程序点单)") @ApiModelProperty("门店名称(小程序点单)")
@@ -46,13 +49,13 @@ public class StoreMasterDTO {
@ApiModelProperty("省市区") @ApiModelProperty("省市区")
private String area; private String area;
@ApiModelProperty("乡镇")
private String town;
@ApiModelProperty("门店地址") @ApiModelProperty("门店地址")
private String storeAddress; private String storeAddress;
@ApiModelProperty("点位编码") @ApiModelProperty("点位编码")
private String pointCode; private String pointCode;
@ApiModelProperty("门店面积") @ApiModelProperty("高德定位 暂时没有")
private Integer storeAcreage;
@ApiModelProperty("高德定位")
private String locationScreenshot; private String locationScreenshot;
@ApiModelProperty("定位地址") @ApiModelProperty("定位地址")
private String locationAddress; private String locationAddress;
@@ -60,6 +63,8 @@ public class StoreMasterDTO {
private String longitude; private String longitude;
@ApiModelProperty("纬度") @ApiModelProperty("纬度")
private String latitude; private String latitude;
@ApiModelProperty("保护距离")
private Integer protectiveDistance;
@ApiModelProperty("月租金") @ApiModelProperty("月租金")
private BigDecimal monthlyRent; private BigDecimal monthlyRent;
@@ -75,16 +80,16 @@ public class StoreMasterDTO {
@ApiModelProperty("报货物流仓库(编码)") @ApiModelProperty("报货物流仓库(编码)")
private String declareGoodsLogisticsWarehouse; private String declareGoodsLogisticsWarehouse;
@ApiModelProperty("报货类型 0-按周报货 1-按月报货 2-自提 3-按2周/次投货 4-按3周/次投货") @ApiModelProperty("报货类型 0-按周报货 1-按月报货 2-自提 3-按2周/次投货 4-按3周/次投货")
private String declareGoodsType; private Integer declareGoodsType;
@ApiModelProperty("报送货日期 数组格式\"[{\"declareGoods\": \"\",\"deliverGoods\":\"\"}]\"") @ApiModelProperty("报送货日期 数组格式\"[{\"declareGoods\": \"\",\"deliverGoods\":\"\"}]\"")
private String declareGoodsDate; private String declareGoodsDate;
@ApiModelProperty("营业时间") @ApiModelProperty("营业时间")
private String businessHours; private String businessHours;
@ApiModelProperty("门头照") @ApiModelProperty("门头照 暂时没有")
private String avatar; private String avatar;
@ApiModelProperty("门店内景照") @ApiModelProperty("门店内景照 暂时没有")
private String interiorPhotos; private String interiorPhotos;
private SignerInfo signerInfo; private SignerInfo signerInfo;
@@ -92,7 +97,7 @@ public class StoreMasterDTO {
private SettlerInfo settlerInfo; private SettlerInfo settlerInfo;
@Data @Data
static class SignerInfo { public static class SignerInfo {
@ApiModelProperty("签约人1姓名") @ApiModelProperty("签约人1姓名")
private String Signer1Name; private String Signer1Name;
@ApiModelProperty("签约人1姓名") @ApiModelProperty("签约人1姓名")
@@ -103,10 +108,12 @@ public class StoreMasterDTO {
private String Signer1IdCardPhoto; private String Signer1IdCardPhoto;
@ApiModelProperty("签约人1姓名") @ApiModelProperty("签约人1姓名")
private String Signer1IdCardPhotoBack; private String Signer1IdCardPhotoBack;
@ApiModelProperty("角色")
private Long partnerRoleId;
} }
@Data @Data
static class SettlerInfo{ public static class SettlerInfo{
@ApiModelProperty("结算人姓名") @ApiModelProperty("结算人姓名")
private String settlerName; private String settlerName;

View File

@@ -5,10 +5,12 @@ import com.cool.store.context.CurrentUserHolder;
import com.cool.store.dao.*; import com.cool.store.dao.*;
import com.cool.store.entity.*; import com.cool.store.entity.*;
import com.cool.store.enums.*; import com.cool.store.enums.*;
import com.cool.store.enums.point.PaymentMethodEnum;
import com.cool.store.exception.ServiceException; import com.cool.store.exception.ServiceException;
import com.cool.store.mapper.FranchiseFeeMapper; import com.cool.store.mapper.FranchiseFeeMapper;
import com.cool.store.mapper.SignFranchiseMapper; import com.cool.store.mapper.SignFranchiseMapper;
import com.cool.store.mq.producer.SimpleMessageService; import com.cool.store.mq.producer.SimpleMessageService;
import com.cool.store.request.StoreMasterDTO;
import com.cool.store.request.StoreRequestBody; import com.cool.store.request.StoreRequestBody;
import com.cool.store.service.OperationLogService; import com.cool.store.service.OperationLogService;
import com.cool.store.service.SyncMainSysServer; import com.cool.store.service.SyncMainSysServer;
@@ -20,6 +22,7 @@ import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalTime; import java.time.LocalTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.HashMap; import java.util.HashMap;
@@ -72,6 +75,12 @@ public class SyncMainSysServerImpl implements SyncMainSysServer {
private String eid; private String eid;
@Resource @Resource
private StoreDao storeDao; private StoreDao storeDao;
@Resource
SignFranchiseDAO signFranchiseDAO;
@Resource
PointDetailInfoDAO pointDetailDAO;
@Resource
QualificationsInfoDAO qualificationsInfoDAO;
@Override @Override
@Async @Async
@@ -144,4 +153,123 @@ public class SyncMainSysServerImpl implements SyncMainSysServer {
simpleMessageService.send(JSONObject.toJSONString(requestBody), RocketMqTagEnum.ZXJP_CREATE_STORE); simpleMessageService.send(JSONObject.toJSONString(requestBody), RocketMqTagEnum.ZXJP_CREATE_STORE);
} }
/**
* 添加门店
* @param shopId
*/
public void asdStore(Long shopId) {
try {
StoreMasterDTO storeMasterDTO = new StoreMasterDTO();
ShopInfoDO shopInfo = shopInfoDAO.getShopInfo(shopId);
if (shopInfo == null){
log.info("门店不存在:{}", shopId);
return;
}
storeMasterDTO.setEnterpriseId(eid);
storeMasterDTO.setStoreStatus("not_open");
storeMasterDTO.setStoreName(shopInfo.getShopName());
storeMasterDTO.setStoreNum(shopInfo.getShopCode());
storeMasterDTO.setJoinBrand(StringUtils.isNotEmpty(shopInfo.getFranchiseBrand())?Integer.getInteger(shopInfo.getFranchiseBrand()):null);
storeMasterDTO.setJoinModel(shopInfo.getJoinMode());
storeMasterDTO.setStoreType(shopInfo.getStoreType());
SignFranchiseDO signFranchiseDO = signFranchiseDAO.selectByShopId(shopId);
storeMasterDTO.setManageModel(signFranchiseDO.getBusinessModel());
storeMasterDTO.setSignType(signFranchiseDO.getSignType());
storeMasterDTO.setProtectiveDistance(signFranchiseDO.getProtectiveDistance());
BigRegionDO region = bigRegionDAO.getByRegionId(shopInfo.getRegionId());
storeMasterDTO.setBloc(region.getGroupName());
storeMasterDTO.setBranch(region.getRegionId());
storeMasterDTO.setRegionId(shopInfo.getManagerRegionId());
storeMasterDTO.setJoinSupervision(shopInfo.getInvestmentManager());
BuildInformationDO buildInformationDO = buildInformationDAO.selectOneByShopId(shopId);
if (buildInformationDO != null){
storeMasterDTO.setMiniProgramOrderStoreName(buildInformationDO.getCShopName());
if (StringUtils.isNotBlank(buildInformationDO.getBusinessHours())) {
try {
String[] times = buildInformationDO.getBusinessHours().split("~");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
LocalTime startTime = LocalTime.parse(times[0], formatter);
LocalTime endTime = LocalTime.parse(times[1], formatter);
String startMillis = String.valueOf(startTime.toSecondOfDay() * 1000L);
String endMillis = String.valueOf(endTime.toSecondOfDay() * 1000L);
storeMasterDTO.setBusinessHours(startMillis + "," + endMillis);
} catch (Exception e) {
log.info("时间转换异常:{},shopId:{},time:{}", e.getMessage(), shopId.toString(), buildInformationDO.getBusinessHours());
}
}
StoreMasterDTO.SettlerInfo settlerInfo = new StoreMasterDTO.SettlerInfo();
settlerInfo.setSettlerName(buildInformationDO.getSettlerName());
settlerInfo.setSettlerIdCardNo(buildInformationDO.getSettlerIdCardNo());
settlerInfo.setSettlerIdCardFront(buildInformationDO.getSettlerIdCardFront());
settlerInfo.setSettlerIdCardReverse(buildInformationDO.getSettlerIdCardReverse());
settlerInfo.setSettlerInHandFrontPicture(buildInformationDO.getSettlerInHandFrontPicture());
settlerInfo.setSettlerInHandBackPicture(buildInformationDO.getSettlerInHandBackPicture());
settlerInfo.setSettlerBankName(buildInformationDO.getSettlerBankName());
settlerInfo.setSettlerBankNumber(buildInformationDO.getSettlerBankNumber());
settlerInfo.setSettlerBankMobile(buildInformationDO.getSettlerBankMobile());
settlerInfo.setSettlerBankPhotoUrl(buildInformationDO.getSettlerBankPhotoUrl());
settlerInfo.setSettlerBankBackPhotoUrl(buildInformationDO.getSettlerBankBackPhotoUrl());
storeMasterDTO.setSettlerInfo(settlerInfo);
}
if (shopInfo.getPointId()!=null){
PointInfoDO info = pointInfoDAO.getPointInfoById(shopInfo.getPointId());
PointDetailInfoDO pointDetail = pointDetailDAO.getPointDetailInfoByPointId(shopInfo.getPointId());
if (info != null){
storeMasterDTO.setArea(info.getProvince()+info.getCity()+info.getDistrict());
storeMasterDTO.setTown(info.getTownship());
storeMasterDTO.setStoreAddress(info.getPointLocation());
storeMasterDTO.setLocationAddress(info.getPointLocation());
storeMasterDTO.setPointCode(info.getPointCode());
storeMasterDTO.setLongitude(info.getLongitude());
storeMasterDTO.setLatitude(info.getLatitude());
try {
if (StringUtils.isNotEmpty(pointDetail.getMonthRent())&&pointDetail.getPaymentMethod()!=null){
//获取支付方式
PaymentMethodEnum paymentMethodEnum = PaymentMethodEnum.getByCode(pointDetail.getPaymentMethod());
BigDecimal monthlyRent = new BigDecimal(pointDetail.getMonthRent()).divide(new BigDecimal(paymentMethodEnum.getTotalMonth()));
storeMasterDTO.setMonthlyRent(monthlyRent);
}
} catch (Exception e) {
log.info("月租转换异常:{},shopId:{},time:{}", e.getMessage(), shopId.toString(), pointDetail.getMonthRent());
}
}
}
OrderSysInfoDO orderSysInfoDO = orderSysInfoDAO.selectByShopId(shopId);
if (orderSysInfoDO != null){
storeMasterDTO.setAddresseeName(orderSysInfoDO.getAddresseeName());
storeMasterDTO.setAddresseeMobile(orderSysInfoDO.getAddresseeMobile());
storeMasterDTO.setAddresseeArea(orderSysInfoDO.getAddresseeProvince()+orderSysInfoDO.getAddresseeCity()+orderSysInfoDO.getAddresseeDistrict());
storeMasterDTO.setAddresseeAddress(orderSysInfoDO.getAddresseeAddress());
storeMasterDTO.setDeclareGoodsLogisticsWarehouse(orderSysInfoDO.getDeclareGoodsLogisticsWarehouse());
storeMasterDTO.setDeclareGoodsType(Integer.valueOf(orderSysInfoDO.getDeclareGoodsType()));
storeMasterDTO.setDeclareGoodsDate(orderSysInfoDO.getDeclareGoodsDate());
}
LineInfoDO lineInfoDO = lineInfoDAO.getLineInfo(shopInfo.getLineId());
StoreMasterDTO.SignerInfo signerInfo = new StoreMasterDTO.SignerInfo();
if (lineInfoDO != null){
signerInfo.setSigner1Name(lineInfoDO.getUsername());
signerInfo.setSigner1Mobile(lineInfoDO.getMobile());
signerInfo.setPartnerRoleId(UserRoleEnum.FRANCHISEES.getCode());
}
QualificationsInfoDO infoDO = qualificationsInfoDAO.getByLineId(shopInfo.getLineId());
if (infoDO != null){
signerInfo.setSigner1IdCard(infoDO.getIdCardNo());
signerInfo.setSigner1IdCardPhoto(infoDO.getFrontOfIdCard());
signerInfo.setSigner1IdCardPhotoBack(infoDO.getBackOfIdCard());
}
storeMasterDTO.setSignerInfo(signerInfo);
simpleMessageService.send(JSONObject.toJSONString(storeMasterDTO), RocketMqTagEnum.ZXJP_CREATE_STORE);
} catch (Exception e) {
log.info("asdStore_error:{},shopId:{}", e.getMessage(), shopId.toString());
}
}
} }