feat:签约合同优化
This commit is contained in:
@@ -111,6 +111,7 @@ public enum ErrorCodeEnum {
|
||||
POINT_SELECTED(600016, "该铺位已被选择", null),
|
||||
NOT_EXIST_UNSELECT_POINT(600017, "当前没有未选择的铺位", null),
|
||||
SELECT_POINT_ERROR(600018, "铺位选中失败", null),
|
||||
POINT_NOT_SELECT(600019, "该门店未选址", null),
|
||||
|
||||
OPEN_NEW_SHOP_RECORD_NOT_EXIST(700001, "开店申请记录不存在", null),
|
||||
OPEN_NEW_SHOP_RECORD_AUDITED(700002, "开店申请已审核", null),
|
||||
|
||||
@@ -29,6 +29,12 @@
|
||||
<result column="create_user_id" jdbcType="VARCHAR" property="createUserId"/>
|
||||
<result column="update_user_id" jdbcType="VARCHAR" property="updateUserId"/>
|
||||
<result column="store_type" jdbcType="TINYINT" property="storeType"/>
|
||||
<result column="province" jdbcType="VARCHAR" property="province"/>
|
||||
<result column="province_code" jdbcType="VARCHAR" property="provinceCode"/>
|
||||
<result column="city" jdbcType="VARCHAR" property="city"/>
|
||||
<result column="city_code" jdbcType="VARCHAR"/>
|
||||
<result column="district" jdbcType="VARCHAR" property="district"/>
|
||||
<result column="district_code" jdbcType="VARCHAR"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="allColumn">
|
||||
@@ -37,6 +43,7 @@
|
||||
shop_code, store_num, shop_manager_user_id, supervisor_user_id,
|
||||
plan_open_time, cur_progress, shop_type, shop_stage, deleted, create_time, update_time,
|
||||
join_mode,detail_address,franchise_brand,development_manager,want_shop_area_id,investment_manager,shop_status,create_user_id,update_user_id,store_type
|
||||
, province,province_code,city,city_code,district,district_code
|
||||
</sql>
|
||||
|
||||
<insert id="batchAddShop" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
|
||||
|
||||
@@ -131,4 +131,22 @@ public class ShopInfoDO {
|
||||
|
||||
@Column(name = "store_type")
|
||||
private Integer storeType;
|
||||
//省
|
||||
@Column(name = "province")
|
||||
private String province;
|
||||
//省code
|
||||
@Column(name = "province_code")
|
||||
private String provinceCode;
|
||||
//市
|
||||
@Column(name = "city")
|
||||
private String city;
|
||||
//市code
|
||||
@Column(name = "city_code")
|
||||
private String cityCode;
|
||||
//区
|
||||
@Column(name = "district")
|
||||
private String district;
|
||||
//区code
|
||||
@Column(name = "district_code")
|
||||
private String districtCode;
|
||||
}
|
||||
@@ -62,4 +62,25 @@ public class SignFranchiseDO {
|
||||
private String partnershipSignatorySecond;
|
||||
@Column(name = "business_model")
|
||||
private Integer businessModel;
|
||||
//签约人2身份证号
|
||||
@Column(name = "partnership_signatory_second_id_number")
|
||||
private String partnershipSignatorySecondIdNumber;
|
||||
//签约人2手机号
|
||||
@Column(name = "partnership_signatory_second_mobile")
|
||||
private String partnershipSignatorySecondMobile;
|
||||
//'保护距离 / m'
|
||||
@Column(name = "protective_distance")
|
||||
private Integer protectiveDistance;
|
||||
//介绍人
|
||||
@Column(name = "introducer")
|
||||
private String introducer;
|
||||
//介绍门店
|
||||
@Column(name = "introducer_store")
|
||||
private String introducerStore;
|
||||
//介绍奖
|
||||
@Column(name = "introducer_award")
|
||||
private String introducerAward;
|
||||
//签约人1第几家分店
|
||||
@Column(name = "partnership_signatory_first_which_store")
|
||||
private Integer partnershipSignatoryFirstWhichStore;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.text.SimpleDateFormat;
|
||||
@@ -94,6 +95,54 @@ public class AddSignFranchiseRequest {
|
||||
private String partnershipSignatoryFirst;
|
||||
@ApiModelProperty("合伙签约人2")
|
||||
private String partnershipSignatorySecond;
|
||||
//签约人2身份证号
|
||||
@ApiModelProperty("签约人2身份证号")
|
||||
private String partnershipSignatorySecondIdNumber;
|
||||
//签约人2手机号
|
||||
@ApiModelProperty("签约人2手机号")
|
||||
private String partnershipSignatorySecondMobile;
|
||||
//'保护距离 / m'
|
||||
@ApiModelProperty("保护距离 / m")
|
||||
@NotNull(message = "保护距离不能为空")
|
||||
private Integer protectiveDistance;
|
||||
//介绍人
|
||||
@ApiModelProperty("介绍人")
|
||||
private String introducer;
|
||||
//介绍门店
|
||||
@ApiModelProperty("介绍门店")
|
||||
private String introducerStore;
|
||||
//介绍奖
|
||||
@ApiModelProperty("介绍奖")
|
||||
private String introducerAward;
|
||||
//签约人1第几家分店
|
||||
@ApiModelProperty("签约人1第几家分店")
|
||||
@NotNull(message = "签约人1第哪家分店不能为空")
|
||||
private Integer partnershipSignatoryFirstWhichStore;
|
||||
|
||||
//省
|
||||
@ApiModelProperty("省")
|
||||
@NotBlank(message = "省不能为空")
|
||||
private String province;
|
||||
//省code
|
||||
@ApiModelProperty("省code")
|
||||
@NotBlank(message = "省code不能为空")
|
||||
private String provinceCode;
|
||||
//市
|
||||
@ApiModelProperty("市")
|
||||
@NotBlank(message = "市不能为空")
|
||||
private String city;
|
||||
//市code
|
||||
@ApiModelProperty("市code")
|
||||
@NotBlank(message = "市code不能为空")
|
||||
private String cityCode;
|
||||
//区
|
||||
@ApiModelProperty("区")
|
||||
@NotBlank(message = "区不能为空")
|
||||
private String district;
|
||||
//区code
|
||||
@ApiModelProperty("区code")
|
||||
@NotBlank(message = "区code不能为空")
|
||||
private String districtCode;
|
||||
|
||||
|
||||
public SignFranchiseDO toSignFranchiseDO() {
|
||||
@@ -118,6 +167,13 @@ public class AddSignFranchiseRequest {
|
||||
signFranchiseDO.setPartnershipSignatoryFirst(this.partnershipSignatoryFirst);
|
||||
signFranchiseDO.setPartnershipSignatorySecond(this.partnershipSignatorySecond);
|
||||
signFranchiseDO.setBusinessModel(this.businessModel);
|
||||
signFranchiseDO.setPartnershipSignatorySecondIdNumber(this.partnershipSignatorySecondIdNumber);
|
||||
signFranchiseDO.setPartnershipSignatorySecondMobile(this.partnershipSignatorySecondMobile);
|
||||
signFranchiseDO.setProtectiveDistance(this.protectiveDistance);
|
||||
signFranchiseDO.setIntroducer(this.introducer);
|
||||
signFranchiseDO.setIntroducerStore(this.introducerStore);
|
||||
signFranchiseDO.setIntroducerAward(this.introducerAward);
|
||||
signFranchiseDO.setPartnershipSignatoryFirstWhichStore(this.partnershipSignatoryFirstWhichStore);
|
||||
return signFranchiseDO;
|
||||
}
|
||||
|
||||
|
||||
@@ -190,4 +190,46 @@ public class AddSignFranchiseResponse {
|
||||
private Integer joinMode;
|
||||
|
||||
|
||||
//签约人2身份证号
|
||||
@ApiModelProperty("签约人2身份证号")
|
||||
private String partnershipSignatorySecondIdNumber;
|
||||
//签约人2手机号
|
||||
@ApiModelProperty("签约人2手机号")
|
||||
private String partnershipSignatorySecondMobile;
|
||||
//'保护距离 / m'
|
||||
@ApiModelProperty("保护距离 / m")
|
||||
private Integer protectiveDistance;
|
||||
//介绍人
|
||||
@ApiModelProperty("介绍人")
|
||||
private String introducer;
|
||||
//介绍门店
|
||||
@ApiModelProperty("介绍门店")
|
||||
private String introducerStore;
|
||||
//介绍奖
|
||||
@ApiModelProperty("介绍奖")
|
||||
private String introducerAward;
|
||||
//签约人1第几家分店
|
||||
@ApiModelProperty("签约人1第几家分店")
|
||||
private Integer partnershipSignatoryFirstWhichStore;
|
||||
|
||||
//省
|
||||
@ApiModelProperty("省")
|
||||
private String province;
|
||||
//省code
|
||||
@ApiModelProperty("省code")
|
||||
private String provinceCode;
|
||||
//市
|
||||
@ApiModelProperty("市")
|
||||
private String city;
|
||||
//市code
|
||||
@ApiModelProperty("市code")
|
||||
private String cityCode;
|
||||
//区
|
||||
@ApiModelProperty("区")
|
||||
private String district;
|
||||
//区code
|
||||
@ApiModelProperty("区code")
|
||||
private String districtCode;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -41,6 +41,9 @@ import static com.cool.store.enums.UserRoleEnum.*;
|
||||
@Service
|
||||
@Slf4j
|
||||
public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResultService {
|
||||
|
||||
@Resource
|
||||
private PointInfoDAO pointInfoDAO;
|
||||
@Resource
|
||||
private EnterpriseUserRoleDao enterpriseUserRoleDao;
|
||||
@Resource
|
||||
@@ -166,6 +169,11 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu
|
||||
if (Objects.nonNull(isExist) && Objects.isNull(request.getId())) {
|
||||
throw new ServiceException(ErrorCodeEnum.DUPLICATE_SUBMISSION);
|
||||
}
|
||||
ShopInfoDO shopInfoDO = shopInfoMapper.selectByPrimaryKey(request.getShopId());
|
||||
PointInfoDO pointInfoById = pointInfoDAO.getPointInfoById(shopInfoDO.getPointId());
|
||||
if (Objects.isNull(pointInfoById)){
|
||||
throw new ServiceException(ErrorCodeEnum.POINT_NOT_SELECT);
|
||||
}
|
||||
String lockKey = "submitSignFranchise:" + request.getShopId();
|
||||
//流水
|
||||
String lockValue = UUID.randomUUID().toString();
|
||||
@@ -175,7 +183,6 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu
|
||||
acquired = redisUtilPool.setNxExpire(lockKey, lockValue, CommonConstants.TEN_SECONDS);
|
||||
if (Boolean.TRUE.equals(acquired)) {
|
||||
SignFranchiseDO signFranchiseDO = request.toSignFranchiseDO();
|
||||
ShopInfoDO shopInfoDO = shopInfoMapper.selectByPrimaryKey(request.getShopId());
|
||||
if (Objects.isNull(request.getId())) {
|
||||
signFranchiseMapper.insertSelective(signFranchiseDO);
|
||||
shopStageInfoDAO.updateShopStageInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_83);
|
||||
@@ -199,15 +206,8 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu
|
||||
} else {
|
||||
signFranchiseMapper.updateByPrimaryKeySelective(signFranchiseDO);
|
||||
}
|
||||
//店铺信息
|
||||
shopInfoDO.setRegionId(request.getRegionId());
|
||||
shopInfoDO.setShopName(request.getShopName());
|
||||
shopInfoDO.setDetailAddress(request.getDetailAddress());
|
||||
shopInfoDO.setJoinMode(request.getJoinMode());
|
||||
shopInfoDO.setFranchiseBrand(request.getFranchiseBrand());
|
||||
shopInfoDO.setUpdateTime(new Date());
|
||||
shopInfoDO.setStoreType(request.getStoreType());
|
||||
shopInfoMapper.updateByPrimaryKeySelective(shopInfoDO);
|
||||
//修改shop & point
|
||||
updateShopAndPoint(request, shopInfoDO, pointInfoById);
|
||||
OrderSysInfoDO orderSysInfoDO = orderSysInfoDAO.selectByShopId(request.getShopId());
|
||||
if (Objects.isNull(orderSysInfoDO)){
|
||||
orderSysInfoDO = new OrderSysInfoDO();
|
||||
@@ -234,7 +234,10 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean reSubmitSignFranchise(AddSignFranchiseRequest request, LoginUserInfo user) {
|
||||
log.info("reSubmitSignFranchise request:{}", JSONObject.toJSONString(request));
|
||||
if (Objects.isNull(request)) {
|
||||
@@ -244,9 +247,15 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu
|
||||
throw new ServiceException(ErrorCodeEnum.SHOP_ID_NOT_EXIST);
|
||||
}
|
||||
ShopInfoDO shopInfoDO = shopInfoMapper.selectByPrimaryKey(request.getShopId());
|
||||
PointInfoDO pointInfoById = pointInfoDAO.getPointInfoById(shopInfoDO.getPointId());
|
||||
if (Objects.isNull(pointInfoById)){
|
||||
throw new ServiceException(ErrorCodeEnum.POINT_NOT_SELECT);
|
||||
}
|
||||
SignFranchiseDO signFranchiseDO = request.toSignFranchiseDO();
|
||||
//修改信息
|
||||
signFranchiseMapper.updateByPrimaryKeySelective(signFranchiseDO);
|
||||
// //修改shop & point
|
||||
updateShopAndPoint(request, shopInfoDO, pointInfoById);
|
||||
//修改阶段状态
|
||||
shopStageInfoDAO.updateShopStageInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_83);
|
||||
//发送通知
|
||||
@@ -270,7 +279,29 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
|
||||
private void updateShopAndPoint(AddSignFranchiseRequest request, ShopInfoDO shopInfoDO, PointInfoDO pointInfoById) {
|
||||
//店铺信息
|
||||
shopInfoDO.setRegionId(request.getRegionId());
|
||||
shopInfoDO.setShopName(request.getShopName());
|
||||
shopInfoDO.setDetailAddress(request.getDetailAddress());
|
||||
shopInfoDO.setJoinMode(request.getJoinMode());
|
||||
shopInfoDO.setFranchiseBrand(request.getFranchiseBrand());
|
||||
shopInfoDO.setProvince(request.getProvince());
|
||||
shopInfoDO.setCity(request.getCity());
|
||||
shopInfoDO.setDistrict(request.getDistrict());
|
||||
shopInfoDO.setProvinceCode(request.getProvinceCode());
|
||||
shopInfoDO.setCityCode(request.getCityCode());
|
||||
shopInfoDO.setDistrictCode(request.getDistrictCode());
|
||||
shopInfoDO.setUpdateTime(new Date());
|
||||
shopInfoDO.setStoreType(request.getStoreType());
|
||||
shopInfoMapper.updateByPrimaryKeySelective(shopInfoDO);
|
||||
pointInfoById.setProvince(request.getProvince());
|
||||
pointInfoById.setCity(request.getCity());
|
||||
pointInfoById.setDistrict(request.getDistrict());
|
||||
pointInfoById.setAddress(request.getDetailAddress());
|
||||
pointInfoById.setUpdateTime(new Date());
|
||||
pointInfoDAO.updatePointInfo(pointInfoById);
|
||||
}
|
||||
@Override
|
||||
public AddSignFranchiseResponse getSignFranchise(Long shopId) {
|
||||
SignFranchiseDO signFranchiseDO = signFranchiseMapper.selectByShopId(shopId);
|
||||
@@ -385,16 +416,29 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu
|
||||
Long lineId = shopInfoDO.getLineId();
|
||||
//缴款信息
|
||||
LinePayDO linePayDO = linePayMapper.getByLineIdAndPayTypeAndShopId(lineId, 1, shopId);
|
||||
//铺位信息
|
||||
PointInfoDO pointInfoDO = pointInfoMapper.getDataByShopIdAndLineId(lineId, shopId);
|
||||
// //铺位信息
|
||||
// PointInfoDO pointInfoDO = pointInfoMapper.getDataByShopIdAndLineId(lineId, shopId);
|
||||
//证照办理
|
||||
LicenseTransactDO licenseTransactDO = applyLicenseMapper.selectByShopId(shopId);
|
||||
|
||||
RegionDO regionInfo = regionMapper.getByRegionId(shopInfoDO.getRegionId());
|
||||
|
||||
|
||||
// if (Objects.nonNull(pointInfoDO)) {
|
||||
// // addSignFranchiseResponse.setStoreAddress(pointInfoDO.getAddress());
|
||||
// if (StringUtils.isNoneBlank(pointInfoDO.getLatitude(), pointInfoDO.getLongitude())) {
|
||||
// //GeoMapUtil.AddressInfo addressInfo = GeoMapUtil.reverseGeoCoding(pointInfoDO.getLatitude(), pointInfoDO.getLongitude());
|
||||
// //addSignFranchiseResponse.setStoreProvinceCity(String.format("%s%s%s", addressInfo.getProvince(), addressInfo.getCity(), addressInfo.getDistrict()));
|
||||
// }
|
||||
// }
|
||||
addSignFranchiseResponse.setPartnershipSignatoryFirst(lineInfoDO.getUsername());
|
||||
addSignFranchiseResponse.setDetailAddress(shopInfoDO.getDetailAddress());
|
||||
addSignFranchiseResponse.setStoreType(shopInfoDO.getStoreType());
|
||||
addSignFranchiseResponse.setProvince(shopInfoDO.getProvince());
|
||||
addSignFranchiseResponse.setCity(shopInfoDO.getCity());
|
||||
addSignFranchiseResponse.setDistrict(shopInfoDO.getDistrict());
|
||||
addSignFranchiseResponse.setProvinceCode(shopInfoDO.getProvinceCode());
|
||||
addSignFranchiseResponse.setCityCode(shopInfoDO.getCityCode());
|
||||
addSignFranchiseResponse.setDistrictCode(shopInfoDO.getDistrictCode());
|
||||
if (Objects.nonNull(signFranchiseDO)) {
|
||||
addSignFranchiseResponse.setId(signFranchiseDO.getId());
|
||||
addSignFranchiseResponse.setShopId(signFranchiseDO.getShopId());
|
||||
@@ -416,6 +460,13 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu
|
||||
addSignFranchiseResponse.setPartnershipSignatoryFirst(signFranchiseDO.getPartnershipSignatoryFirst());
|
||||
addSignFranchiseResponse.setPartnershipSignatorySecond(signFranchiseDO.getPartnershipSignatorySecond());
|
||||
addSignFranchiseResponse.setBusinessModel(signFranchiseDO.getBusinessModel());
|
||||
addSignFranchiseResponse.setPartnershipSignatorySecondIdNumber(signFranchiseDO.getPartnershipSignatorySecondIdNumber());
|
||||
addSignFranchiseResponse.setPartnershipSignatorySecondMobile(signFranchiseDO.getPartnershipSignatorySecondMobile());
|
||||
addSignFranchiseResponse.setProtectiveDistance(signFranchiseDO.getProtectiveDistance());
|
||||
addSignFranchiseResponse.setIntroducer(signFranchiseDO.getIntroducer());
|
||||
addSignFranchiseResponse.setIntroducerStore(signFranchiseDO.getIntroducerStore());
|
||||
addSignFranchiseResponse.setIntroducerAward(signFranchiseDO.getIntroducerAward());
|
||||
addSignFranchiseResponse.setPartnershipSignatoryFirstWhichStore(signFranchiseDO.getPartnershipSignatoryFirstWhichStore());
|
||||
|
||||
} else {
|
||||
BigDecimal total = new BigDecimal(franchiseFeeDO.getYearFranchiseFee())
|
||||
@@ -436,13 +487,6 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu
|
||||
addSignFranchiseResponse.setRegionName(regionInfo.getName());
|
||||
}
|
||||
|
||||
if (Objects.nonNull(pointInfoDO)) {
|
||||
addSignFranchiseResponse.setStoreAddress(pointInfoDO.getAddress());
|
||||
if (StringUtils.isNoneBlank(pointInfoDO.getLatitude(), pointInfoDO.getLongitude())) {
|
||||
GeoMapUtil.AddressInfo addressInfo = GeoMapUtil.reverseGeoCoding(pointInfoDO.getLatitude(), pointInfoDO.getLongitude());
|
||||
addSignFranchiseResponse.setStoreProvinceCity(String.format("%s%s%s", addressInfo.getProvince(), addressInfo.getCity(), addressInfo.getDistrict()));
|
||||
}
|
||||
}
|
||||
if (Objects.nonNull(linePayDO)) {
|
||||
addSignFranchiseResponse.setPayName(linePayDO.getPayUserName());
|
||||
addSignFranchiseResponse.setBankCardNo(linePayDO.getPayAccount());
|
||||
|
||||
Reference in New Issue
Block a user