Merge remote-tracking branch 'xfsg/cc_partner_init' into cc_partner_init

This commit is contained in:
苏竹红
2024-04-15 19:39:21 +08:00
36 changed files with 683 additions and 89 deletions

View File

@@ -21,6 +21,8 @@ public enum ErrorCodeEnum {
PUBLIC_LINE_NOT_FOLLOW(419, "该线索已存在公海,无跟进人", null),
LINE_EXIST_FOLLOW(420, "该线索已存在,跟进人为【{0}{1}】", null),
ERROR_MESSAGE(421, "{0}", null),
/**
* 000000 未知错误
@@ -92,6 +94,14 @@ public enum ErrorCodeEnum {
USER_NOT_ALLOW_ENTER_ROOM(600007, "当前用户不允许进入面试房间", null),
SHOP_STAGE_ERROR(600008, "店铺阶段错误", null),
SHOP_NOT_EXIST(600009, "店铺不存在", null),
POINT_IS_SELECTED(600010, "该铺位已被其他人选择", null),
POINT_ALREADY_SELECT(600011, "该铺位已被您选择", null),
SHOP_IS_SELECTED(600012, "该店铺已选址", null),
SHOP_STAGE_NOT_OPERATE(600013, "当前店铺所处阶段不允许该操作", null),
POINT_IS_LOCK(600014, "当前铺位已被锁定,刷新后再试", null),
POINT_IS_INVALID(600015, "该铺位已失效", null),
POINT_SELECTED(600016, "该铺位已被选择", null),
INTERVIEW_ENTER_FAIL(1021101, "进入面审间失败", null),
DINGDING_USER_NOT_EXIST(1021102, "用户钉钉信息不存在,无法发起资质审核!", null),

View File

@@ -9,7 +9,7 @@ import java.util.List;
* @Description:
* @date 2024-04-01 14:38
*/
public enum PointRecommendStatus {
public enum PointRecommendStatusEnum {
//状态 1.待选择 2.已选择 3.已被他人选择 4.已签约 5.已拒绝 6.已失效
POINT_RECOMMEND_STATUS_1(1, "待选择"),
@@ -24,7 +24,7 @@ public enum PointRecommendStatus {
private String desc;
PointRecommendStatus(Integer code, String desc) {
PointRecommendStatusEnum(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
@@ -37,19 +37,19 @@ public enum PointRecommendStatus {
return desc;
}
public static PointRecommendStatus getByCode(Integer code) {
for (PointRecommendStatus pointRecommendStatus : PointRecommendStatus.values()) {
if (pointRecommendStatus.getCode().equals(code)) {
return pointRecommendStatus;
public static PointRecommendStatusEnum getByCode(Integer code) {
for (PointRecommendStatusEnum pointRecommendStatusEnum : PointRecommendStatusEnum.values()) {
if (pointRecommendStatusEnum.getCode().equals(code)) {
return pointRecommendStatusEnum;
}
}
return null;
}
public static String getDescByCode(Integer code) {
for (PointRecommendStatus pointRecommendStatus : PointRecommendStatus.values()) {
if (pointRecommendStatus.getCode().equals(code)) {
return pointRecommendStatus.getDesc();
for (PointRecommendStatusEnum pointRecommendStatusEnum : PointRecommendStatusEnum.values()) {
if (pointRecommendStatusEnum.getCode().equals(code)) {
return pointRecommendStatusEnum.getDesc();
}
}
return null;

View File

@@ -14,10 +14,14 @@ public enum ShopStageEnum {
SHOP_STAGE_3(3, "开业"),
;
//店铺阶段
private Integer shopStage;
//阶段名称
private String stageName;
ShopStageEnum(Integer shopStage, String stageName) {
this.shopStage = shopStage;
this.stageName = stageName;

View File

@@ -1,5 +1,6 @@
package com.cool.store.enums.point;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
@@ -11,17 +12,17 @@ import java.util.List;
*/
public enum ShopSubStageEnum {
SHOP_STAGE_1(ShopStageEnum.SHOP_STAGE_1, 10, "选址"),
SHOP_STAGE_2(ShopStageEnum.SHOP_STAGE_1, 20, "上传租赁合同"),
SHOP_STAGE_3(ShopStageEnum.SHOP_STAGE_2, 30, "系统建店"),
SHOP_STAGE_4(ShopStageEnum.SHOP_STAGE_2, 40, "证照办理"),
SHOP_STAGE_5(ShopStageEnum.SHOP_STAGE_2, 50, "员工招聘"),
SHOP_STAGE_6(ShopStageEnum.SHOP_STAGE_2, 60, "加盟商/员工培训"),
SHOP_STAGE_7(ShopStageEnum.SHOP_STAGE_2, 70, "缴纳加盟费/保证金"),
SHOP_STAGE_8(ShopStageEnum.SHOP_STAGE_2, 80, "加盟合同签约"),
SHOP_STAGE_9(ShopStageEnum.SHOP_STAGE_2, 90, "设计阶段"),
SHOP_STAGE_10(ShopStageEnum.SHOP_STAGE_2, 100, "施工阶段"),
SHOP_STAGE_11(ShopStageEnum.SHOP_STAGE_2, 110, "三方验收"),
SHOP_STAGE_1(ShopStageEnum.SHOP_STAGE_1, 10, "选址", 3),
SHOP_STAGE_2(ShopStageEnum.SHOP_STAGE_1, 20, "上传租赁合同", 2),
SHOP_STAGE_3(ShopStageEnum.SHOP_STAGE_2, 30, "系统建店", 2),
SHOP_STAGE_4(ShopStageEnum.SHOP_STAGE_2, 40, "证照办理", 2),
SHOP_STAGE_5(ShopStageEnum.SHOP_STAGE_2, 50, "员工招聘", 2),
SHOP_STAGE_6(ShopStageEnum.SHOP_STAGE_2, 60, "加盟商/员工培训", 2),
SHOP_STAGE_7(ShopStageEnum.SHOP_STAGE_2, 70, "缴纳加盟费/保证金", 2),
SHOP_STAGE_8(ShopStageEnum.SHOP_STAGE_2, 80, "加盟合同签约", 2),
SHOP_STAGE_9(ShopStageEnum.SHOP_STAGE_2, 90, "设计阶段", 2),
SHOP_STAGE_10(ShopStageEnum.SHOP_STAGE_2, 100, "施工阶段", 2),
SHOP_STAGE_11(ShopStageEnum.SHOP_STAGE_2, 110, "三方验收", 2),
;
//阶段
@@ -33,10 +34,14 @@ public enum ShopSubStageEnum {
//子阶段名称
private String shopSubStageName;
ShopSubStageEnum(ShopStageEnum shopStageEnum, Integer shopSubStage, String shopSubStageName) {
//计划完成天数
private Integer planCompleteDays;
ShopSubStageEnum(ShopStageEnum shopStageEnum, Integer shopSubStage, String shopSubStageName, Integer planCompleteDays) {
this.shopStageEnum = shopStageEnum;
this.shopSubStage = shopSubStage;
this.shopSubStageName = shopSubStageName;
this.planCompleteDays = planCompleteDays;
}
public static List<ShopSubStageEnum> getShopStageEnum(Integer shopStage) {
@@ -61,6 +66,10 @@ public enum ShopSubStageEnum {
return shopSubStageName;
}
public Integer getPlanCompleteDays() {
return planCompleteDays;
}
/**
* 获取各阶段的初始状态
* @return
@@ -94,4 +103,29 @@ public enum ShopSubStageEnum {
}
}
public static Integer getSelectStageMaxDays() {
return Math.max(ShopSubStageEnum.SHOP_STAGE_1.getPlanCompleteDays(), ShopSubStageEnum.SHOP_STAGE_2.getPlanCompleteDays());
}
public String getPlanCompleteTime(LocalDate planCompleteTime, LocalDate planSelectPointCompleteDate) {
switch (this){
case SHOP_STAGE_1:
case SHOP_STAGE_2:
case SHOP_STAGE_5:
case SHOP_STAGE_6:
case SHOP_STAGE_7:
case SHOP_STAGE_8:
return planCompleteTime.plusDays(getPlanCompleteDays()).toString();
case SHOP_STAGE_3:
case SHOP_STAGE_4:
case SHOP_STAGE_9:
case SHOP_STAGE_10:
case SHOP_STAGE_11:
return planSelectPointCompleteDate.plusDays(getPlanCompleteDays()).toString();
default:
return null;
}
}
}

View File

@@ -1,9 +1,13 @@
package com.cool.store.dao;
import com.cool.store.dto.point.LineCountDTO;
import com.cool.store.dto.point.MiniPointPageDTO;
import com.cool.store.entity.PointRecommendDO;
import com.cool.store.enums.point.PointRecommendStatus;
import com.cool.store.enums.point.PointRecommendStatusEnum;
import com.cool.store.mapper.PointRecommendMapper;
import com.cool.store.request.MiniPointPageRequest;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import org.apache.commons.collections4.CollectionUtils;
@@ -33,7 +37,7 @@ public class PointRecommendDAO {
* @param status
* @return
*/
public Integer updateRecommendStatus(Long pointId, PointRecommendStatus status) {
public Integer updateRecommendStatus(Long pointId, PointRecommendStatusEnum status) {
if(Objects.isNull(status)){
return 0;
}
@@ -47,11 +51,11 @@ public class PointRecommendDAO {
* @param statusList
* @return
*/
public Integer updateRecommendStatusByStatusAndPointId(Long pointId, PointRecommendStatus status, List<PointRecommendStatus> statusList) {
public Integer updateRecommendStatusByStatusAndPointId(Long pointId, PointRecommendStatusEnum status, List<PointRecommendStatusEnum> statusList) {
if(Objects.isNull(status) || CollectionUtils.isEmpty(statusList)){
return 0;
}
List<Integer> statusCodeList = statusList.stream().map(PointRecommendStatus::getCode).collect(Collectors.toList());
List<Integer> statusCodeList = statusList.stream().map(PointRecommendStatusEnum::getCode).collect(Collectors.toList());
return pointRecommendMapper.updateRecommendStatusByStatusAndPointId(pointId, status.getCode(), statusCodeList);
}
@@ -92,4 +96,21 @@ public class PointRecommendDAO {
public Integer deleteUnselectedRecommendPointByLineId(Long lineId) {
return pointRecommendMapper.deleteUnselectedRecommendPointByLineId(lineId);
}
/**
* 线索获取推荐列表
* @param request
* @return
*/
public Page<MiniPointPageDTO> getLineRecommendPointPage(MiniPointPageRequest request){
PageHelper.startPage(request.getPageNum(), request.getPageSize());
return pointRecommendMapper.getLineRecommendPointPage(request);
}
public Integer updateStatusByPointIdAndLineId(Long pointId, Long lineId){
if(Objects.isNull(pointId) || Objects.isNull(lineId)){
return 0;
}
return pointRecommendMapper.updateStatusByPointIdAndLineId(pointId, lineId);
}
}

View File

@@ -3,8 +3,11 @@ package com.cool.store.dao;
import com.cool.store.constants.CommonConstants;
import com.cool.store.entity.LineInfoDO;
import com.cool.store.entity.ShopInfoDO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.mapper.ShopInfoMapper;
import com.cool.store.utils.NumberConverter;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Repository;
@@ -19,6 +22,7 @@ import java.util.Objects;
* @Description:
* @date 2024-03-29 10:14
*/
@Slf4j
@Repository
public class ShopInfoDAO {
@@ -63,4 +67,12 @@ public class ShopInfoDAO {
return shopInfo.getId();
}
public Integer updateShopInfo(ShopInfoDO shopInfo){
if(Objects.isNull(shopInfo) || Objects.isNull(shopInfo.getId())){
log.info("店铺为空 或者店铺id为空");
throw new ServiceException(ErrorCodeEnum.PARAMS_VALIDATE_ERROR);
}
return shopInfoMapper.updateByPrimaryKeySelective(shopInfo);
}
}

View File

@@ -11,6 +11,7 @@ import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@@ -34,24 +35,26 @@ public class ShopStageInfoDAO {
* @param shopStageEnum
* @return
*/
public Integer initShopStageInfo(Long lineId, List<Long> shopIds, ShopStageEnum shopStageEnum) {
if(CollectionUtils.isEmpty(shopIds) || Objects.isNull(shopStageEnum)){
public Integer initShopStageInfo(Long lineId, List<Long> shopIds) {
if(CollectionUtils.isEmpty(shopIds)){
return CommonConstants.ZERO;
}
Integer shopStage = shopStageEnum.getShopStage();
List<ShopSubStageEnum> shopStageEnumList = ShopSubStageEnum.getShopStageEnum(shopStage);
List<ShopStageInfoDO> addShopStageList = new ArrayList<>();
LocalDate selectStartDate = LocalDate.now();
LocalDate planSelectPointCompleteDate = selectStartDate.plusDays(ShopSubStageEnum.getSelectStageMaxDays());
for (Long shopId : shopIds) {
for (ShopSubStageEnum shopSubStageEnum : shopStageEnumList) {
for (ShopSubStageEnum shopSubStageEnum : ShopSubStageEnum.values()) {
ShopStageInfoDO shopStageInfo = new ShopStageInfoDO();
shopStageInfo.setLineId(lineId);
shopStageInfo.setShopId(shopId);
shopStageInfo.setShopStage(shopStage);
ShopStageEnum shopStageEnum = shopSubStageEnum.getShopStageEnum();
shopStageInfo.setShopStage(shopStageEnum.getShopStage());
shopStageInfo.setShopSubStage(shopSubStageEnum.getShopSubStage());
ShopSubStageStatusEnum initStatus = shopSubStageEnum.getInitStatus();
shopStageInfo.setShopSubStageStatus(initStatus.getShopSubStageStatus());
shopStageInfo.setRemark(shopSubStageEnum.getShopSubStageName() + CommonConstants.PATH_BAR +shopSubStageEnum.getInitStatus().getShopSubStageStatusName());
shopStageInfo.setIsTerminated(initStatus.isTerminated());
shopStageInfo.setPlanCompleteTime(shopSubStageEnum.getPlanCompleteTime(selectStartDate, planSelectPointCompleteDate));
addShopStageList.add(shopStageInfo);
}
}

View File

@@ -1,7 +1,10 @@
package com.cool.store.mapper;
import com.cool.store.dto.point.LineCountDTO;
import com.cool.store.dto.point.MiniPointPageDTO;
import com.cool.store.entity.PointRecommendDO;
import com.cool.store.request.MiniPointPageRequest;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;
@@ -53,4 +56,20 @@ public interface PointRecommendMapper extends Mapper<PointRecommendDO> {
* @return
*/
Integer deleteUnselectedRecommendPointByLineId(@Param("lineId") Long lineId);
/**
* 线索获取推荐铺位列表
* @param request
* @return
*/
Page<MiniPointPageDTO> getLineRecommendPointPage(@Param("request") MiniPointPageRequest request);
/**
* 更新推荐选择状态
* @param pointId
* @param lineId
* @return
*/
Integer updateStatusByPointIdAndLineId(@Param("pointId") Long pointId, @Param("lineId") Long lineId);
}

View File

@@ -4,7 +4,7 @@
<resultMap id="BaseResultMap" type="com.cool.store.entity.PointDetailInfoDO">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="point_id" jdbcType="BIGINT" property="pointId" />
<result column="bussiness_status" jdbcType="TINYINT" property="bussinessStatus" />
<result column="business_status" jdbcType="TINYINT" property="businessStatus" />
<result column="nine_flow_rate" jdbcType="INTEGER" property="nineFlowRate" />
<result column="ten_flow_rate" jdbcType="INTEGER" property="tenFlowRate" />
<result column="eighteen_flow_rate" jdbcType="INTEGER" property="eighteenFlowRate" />

View File

@@ -62,4 +62,41 @@
<update id="deleteUnselectedRecommendPointByLineId">
update xfsg_point_recommend set deleted = 1 where line_id = #{lineId} and deleted = 0 and status in (0,2)
</update>
<select id="getLineRecommendPointPage" resultType="com.cool.store.dto.point.MiniPointPageDTO">
select
p.id as pointId,
p.line_id as lineId,
p.point_name as pointName,
p.point_code as pointCode,
p.region_id as regionId,
p.address as address,
p.point_score as pointScore,
p.point_area as pointArea,
p.point_status as pointStatus,
p.select_status as selectStatus,
pr.status as recommendStatus
from
xfsg_point_recommend pr
inner join xfsg_point_info p on p.id = pr.point_id
where
p.deleted = 0 and pr.line_id = #{request.lineId} and pr.deleted = 0
<if test="request.status != null and request.status == '1'">
and pr.status = 1 and p.select_status = 0
</if>
<if test="request.status != null and request.status == '2'">
and pr.status = 2 and p.select_status = 1 and p.line_id = #{request.lineId}
</if>
<if test="request.status != null and request.status == '3'">
and pr.status in (5, 6)
</if>
</select>
<update id="updateStatusByPointIdAndLineId">
update
xfsg_point_recommend
set
status = if(line_id = #{lineId}, 2, 3)
where point_id = #{pointId} and deleted = 0
</update>
</mapper>

View File

@@ -9,20 +9,23 @@
<result column="shop_sub_stage" jdbcType="TINYINT" property="shopSubStage" />
<result column="shop_sub_stage_status" jdbcType="TINYINT" property="shopSubStageStatus" />
<result column="is_terminated" jdbcType="BIT" property="isTerminated" />
<result column="plan_complete_time" jdbcType="VARCHAR" property="planCompleteTime" />
<result column="actual_complete_time" jdbcType="VARCHAR" property="actualCompleteTime" />
<result column="remark" jdbcType="VARCHAR" property="remark" />
<result column="audit_id" jdbcType="BIGINT" property="auditId" />
<result column="deleted" jdbcType="BIT" property="deleted" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
</resultMap>
<sql id="allColumn">
id, line_id, shop_id, shop_stage, shop_sub_stage, shop_sub_stage_status, is_terminated, remark, deleted, create_time, update_time
id, line_id, shop_id, shop_stage, shop_sub_stage, shop_sub_stage_status, is_terminated, plan_complete_time, actual_complete_time, remark, audit_id, deleted, create_time, update_time
</sql>
<insert id="batchInsert">
<foreach collection="addShopStageList" separator=";" item="shop">
INSERT INTO xfsg_shop_stage_info(line_id, shop_id, shop_stage, shop_sub_stage, shop_sub_stage_status, is_terminated, remark)
VALUES(#{shop.lineId}, #{shop.shopId}, #{shop.shopStage}, #{shop.shopSubStage}, #{shop.shopSubStageStatus}, #{shop.isTerminated}, #{shop.remark})
INSERT INTO xfsg_shop_stage_info(line_id, shop_id, shop_stage, shop_sub_stage, shop_sub_stage_status, is_terminated, plan_complete_time, remark)
VALUES(#{shop.lineId}, #{shop.shopId}, #{shop.shopStage}, #{shop.shopSubStage}, #{shop.shopSubStageStatus}, #{shop.isTerminated}, #{shop.planCompleteTime}, #{shop.remark})
</foreach>
</insert>
@@ -39,7 +42,15 @@
</select>
<update id="updateShopStageInfo">
update xfsg_shop_stage_info set shop_sub_stage_status = #{shopSubStageStatus}, is_terminated = #{isTerminated}, remark = #{remark} where shop_id = #{shopId} and shop_sub_stage = #{shopSubStage}
update
xfsg_shop_stage_info
set
shop_sub_stage_status = #{shopSubStageStatus},
is_terminated = #{isTerminated},
remark = #{remark},
actual_complete_time = if(is_terminated, now(), null)
where
shop_id = #{shopId} and shop_sub_stage = #{shopSubStage}
</update>
</mapper>

View File

@@ -0,0 +1,41 @@
package com.cool.store.dto.point;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class MiniPointPageDTO {
@ApiModelProperty("店铺id")
private Long pointId;
@ApiModelProperty("线索id")
private Long lineId;
@ApiModelProperty("铺位名称")
private String pointName;
@ApiModelProperty("铺位编号")
private String pointCode;
@ApiModelProperty("所属站区")
private Long regionId;
@ApiModelProperty("地址")
private String address;
@ApiModelProperty("铺位得分")
private Integer pointScore;
@ApiModelProperty("铺位面积")
private String pointArea;
@ApiModelProperty("铺位状态 1.采集中、2.已评估、3.待审核、5.已审核、6.已签约、7.已失效")
private Integer pointStatus;
@ApiModelProperty("选择状态0.未选择, 1.已被选择")
private Integer selectStatus;
@ApiModelProperty("1.待选择 2.已选择 3.已被他人选择 4.已签约 5.已拒绝 6.已失效")
private Integer recommendStatus;
}

View File

@@ -24,8 +24,8 @@ public class PointDetailInfoDO {
/**
* 经营状况
*/
@Column(name = "bussiness_status")
private Integer bussinessStatus;
@Column(name = "business_status")
private Integer businessStatus;
/**
* 09:00-10:00人流量
@@ -526,7 +526,7 @@ public class PointDetailInfoDO {
}
public boolean isCanSubmitEvaluable(){
if(Objects.isNull(this.bussinessStatus)){
if(Objects.isNull(this.businessStatus)){
return false;
}
Integer nullCount = 0;

View File

@@ -45,11 +45,29 @@ public class ShopStageInfoDO {
@Column(name = "is_terminated")
private Boolean isTerminated;
/**
* 计划完成时间
*/
@Column(name = "plan_complete_time")
private String planCompleteTime;
/**
* 实际完成时间
*/
@Column(name = "actual_complete_time")
private String actualCompleteTime;
/**
* 备注
*/
private String remark;
/**
* 审核id
*/
@Column(name = "audit_id")
private Long auditId;
/**
* 删除标识
*/

View File

@@ -27,7 +27,7 @@ public class AddPointDetailRequest {
private String address;
@ApiModelProperty("经营状况")
private Integer bussinessStatus;
private Integer businessStatus;
@ApiModelProperty("09:00-10:00人流量")
private Integer nineFlowRate;
@@ -212,7 +212,7 @@ public class AddPointDetailRequest {
public static PointDetailInfoDO convertDO(AddPointDetailRequest request) {
PointDetailInfoDO result = new PointDetailInfoDO();
result.setBussinessStatus(request.getBussinessStatus());
result.setBusinessStatus(request.getBusinessStatus());
result.setNineFlowRate(request.getNineFlowRate());
result.setTenFlowRate(request.getTenFlowRate());
result.setEighteenFlowRate(request.getEighteenFlowRate());

View File

@@ -1,7 +1,7 @@
package com.cool.store.request;
import com.cool.store.entity.PointRecommendDO;
import com.cool.store.enums.point.PointRecommendStatus;
import com.cool.store.enums.point.PointRecommendStatusEnum;
import com.google.common.collect.Lists;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -38,7 +38,7 @@ public class LineRecommendPointRequest {
pointRecommendDO.setLineId(this.lineId);
pointRecommendDO.setDevelopmentManager(this.developmentManager);
pointRecommendDO.setPointId(pointId);
pointRecommendDO.setStatus(PointRecommendStatus.POINT_RECOMMEND_STATUS_1.getCode());
pointRecommendDO.setStatus(PointRecommendStatusEnum.POINT_RECOMMEND_STATUS_1.getCode());
return pointRecommendDO;
}).collect(Collectors.toList());
}

View File

@@ -0,0 +1,73 @@
package com.cool.store.request;
import com.cool.store.entity.PointDetailInfoDO;
import com.cool.store.entity.PointInfoDO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
@Data
public class MiniAddPointRequest {
@ApiModelProperty("铺位名称")
private String pointName;
@ApiModelProperty("所属大区")
private Long regionId;
@ApiModelProperty("经度")
private String longitude;
@ApiModelProperty("纬度")
private String latitude;
@ApiModelProperty("详细地址")
private String address;
@ApiModelProperty("经营状况")
private Integer businessStatus;
@Min(1)
@Max(4)
@ApiModelProperty("立地条件1.单门面 2.双门面 3.多门面 4.转角")
private Integer siteConditions;
@ApiModelProperty("使用面积(一楼)")
private String pointArea;
@Min(1)
@Max(4)
@ApiModelProperty("支付方式 1.月付 2.季付 3.半年付 4.年付")
private Integer paymentMethod;
@ApiModelProperty("转让费")
private String transferFee;
@ApiModelProperty("图片对象")
private String pictureObj;
public static PointDetailInfoDO convertDO(MiniAddPointRequest request) {
PointDetailInfoDO result = new PointDetailInfoDO();
result.setBusinessStatus(request.getBusinessStatus());
result.setSiteConditions(request.getSiteConditions());
result.setPaymentMethod(request.getPaymentMethod());
result.setTransferFee(request.getTransferFee());
result.setPictureObj(request.getPictureObj());
return result;
}
public static PointInfoDO convertPointDO(MiniAddPointRequest request) {
PointInfoDO result = new PointInfoDO();
result.setPointName(request.getPointName());
result.setRegionId(request.getRegionId());
result.setPointArea(request.getPointArea());
result.setLatitude(request.getLatitude());
result.setLongitude(request.getLongitude());
result.setAddress(request.getAddress());
return result;
}
}

View File

@@ -0,0 +1,27 @@
package com.cool.store.request;
import com.cool.store.common.PageBasicInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
/**
* @author zhangchenbiao
* @FileName: MiniPointPageRequest
* @Description:
* @date 2024-04-12 14:33
*/
@Data
public class MiniPointPageRequest extends PageBasicInfo {
@Min(value = 1, message = "status不能小于1")
@Max(value = 3, message = "status不能大于3")
@ApiModelProperty("1.待选择 2.已选择 3.拒绝/失效")
private Integer status;
@ApiModelProperty(value = "线索id",hidden = true)
private Long lineId;
}

View File

@@ -24,4 +24,7 @@ public class ModifyInterviewerRequest {
@ApiModelProperty("面审官")
private String interviewerUserId;
@ApiModelProperty(value = "当前操作人", hidden = true)
private String operatorUserId;
}

View File

@@ -1,7 +1,7 @@
package com.cool.store.request;
import com.cool.store.entity.PointRecommendDO;
import com.cool.store.enums.point.PointRecommendStatus;
import com.cool.store.enums.point.PointRecommendStatusEnum;
import com.google.common.collect.Lists;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -38,7 +38,7 @@ public class PointRecommendLineRequest {
pointRecommendDO.setLineId(lineId);
pointRecommendDO.setDevelopmentManager(this.developmentManager);
pointRecommendDO.setPointId(pointId);
pointRecommendDO.setStatus(PointRecommendStatus.POINT_RECOMMEND_STATUS_1.getCode());
pointRecommendDO.setStatus(PointRecommendStatusEnum.POINT_RECOMMEND_STATUS_1.getCode());
return pointRecommendDO;
}).collect(Collectors.toList());
}

View File

@@ -0,0 +1,29 @@
package com.cool.store.request;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author zhangchenbiao
* @FileName: SelectPointRequest
* @Description:
* @date 2024-04-12 15:08
*/
@Data
public class SelectPointRequest {
@NotNull
@ApiModelProperty("店铺id")
private Long shopId;
@NotNull
@ApiModelProperty("铺位id")
private Long pointId;
@ApiModelProperty(value = "当前线索id", hidden = true)
private Long lineId;
}

View File

@@ -19,7 +19,7 @@ public class UpdatePointDetailRequest extends AddPointDetailRequest {
public static PointDetailInfoDO convertDO(UpdatePointDetailRequest request) {
PointDetailInfoDO result = new PointDetailInfoDO();
result.setPointId(request.getPointId());
result.setBussinessStatus(request.getBussinessStatus());
result.setBusinessStatus(request.getBusinessStatus());
result.setNineFlowRate(request.getNineFlowRate());
result.setTenFlowRate(request.getTenFlowRate());
result.setEighteenFlowRate(request.getEighteenFlowRate());

View File

@@ -6,6 +6,7 @@ import lombok.Data;
import javax.persistence.*;
import java.util.Date;
import java.util.Objects;
@Data
public class LineAuditInfoVO {
@@ -28,10 +29,13 @@ public class LineAuditInfoVO {
@ApiModelProperty("明文件或凭证")
private String certifyFile;
@ApiModelProperty("审批事件")
@ApiModelProperty("审批时间")
private Date createTime;
public static LineAuditInfoVO convertVO(LineAuditInfoDO auditInfo) {
if(Objects.isNull(auditInfo)){
return null;
}
LineAuditInfoVO result = new LineAuditInfoVO();
result.setAuditId(auditInfo.getId());
result.setResultType(auditInfo.getResultType());

View File

@@ -0,0 +1,77 @@
package com.cool.store.vo.point;
import com.cool.store.dto.point.MiniPointPageDTO;
import com.cool.store.entity.PointInfoDO;
import com.cool.store.enums.point.PointRecommendStatusEnum;
import com.cool.store.enums.point.PointStatusEnum;
import com.cool.store.enums.point.SelectStatusEnum;
import com.google.common.collect.Lists;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.collections4.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Data
public class MiniPointPageVO {
@ApiModelProperty("店铺id")
private Long pointId;
@ApiModelProperty("铺位名称")
private String pointName;
@ApiModelProperty("铺位编号")
private String pointCode;
@ApiModelProperty("所属站区")
private String regionNodeName;
@ApiModelProperty("地址")
private String address;
@ApiModelProperty("铺位得分")
private Integer pointScore;
@ApiModelProperty("铺位面积")
private String pointArea;
@ApiModelProperty("1.待选择 2.已选择 3.已被他人选择 4.已签约 5.已拒绝 6.已失效")
private Integer recommendStatus;
public static List<MiniPointPageVO> convertVO(List<MiniPointPageDTO> pointList, Map<Long, String> regionNameMap, Long curLineId) {
if(CollectionUtils.isEmpty(pointList)){
return Lists.newArrayList();
}
List<MiniPointPageVO> resultList = new ArrayList<>();
for (MiniPointPageDTO pointInfo : pointList) {
MiniPointPageVO pointPageVO = new MiniPointPageVO();
pointPageVO.setPointId(pointInfo.getPointId());
pointPageVO.setPointName(pointInfo.getPointName());
pointPageVO.setPointCode(pointInfo.getPointCode());
pointPageVO.setRegionNodeName(regionNameMap.get(pointInfo.getRegionId()));
pointPageVO.setAddress(pointInfo.getAddress());
pointPageVO.setPointScore(pointInfo.getPointScore());
pointPageVO.setPointArea(pointInfo.getPointArea());
pointPageVO.setRecommendStatus(getRecommendStatus(curLineId, pointInfo.getLineId(), pointInfo.getPointStatus(), pointInfo.getSelectStatus(), pointInfo.getRecommendStatus()));
resultList.add(pointPageVO);
}
return resultList;
}
public static Integer getRecommendStatus(Long curLineId, Long lineId, Integer pointStatus, Integer selectStatus, Integer recommendStatus) {
if(PointStatusEnum.POINT_STATUS_7.getCode().equals(pointStatus)){
return PointRecommendStatusEnum.POINT_RECOMMEND_STATUS_6.getCode();
}
if(SelectStatusEnum.SELECT_STATUS_1.getCode().equals(selectStatus)){
//已选择 判断线索id是否是自己
if(curLineId.equals(lineId)){
return PointRecommendStatusEnum.POINT_RECOMMEND_STATUS_2.getCode();
}
return PointRecommendStatusEnum.POINT_RECOMMEND_STATUS_3.getCode();
}
return recommendStatus;
}
}

View File

@@ -39,7 +39,7 @@ public class PointDetailVO {
private Integer pointScore;
@ApiModelProperty("经营状况 1营业中 2空铺")
private Integer bussinessStatus;
private Integer businessStatus;
@ApiModelProperty("09:00-10:00人流量")
private Integer nineFlowRate;
@@ -241,7 +241,7 @@ public class PointDetailVO {
result.setPointStatus(PointStatusEnum.POINT_STATUS_3.getCode());
}
result.setPointScore(pointInfo.getPointScore());
result.setBussinessStatus(pointDetailInfo.getBussinessStatus());
result.setBusinessStatus(pointDetailInfo.getBusinessStatus());
result.setNineFlowRate(pointDetailInfo.getNineFlowRate());
result.setTenFlowRate(pointDetailInfo.getTenFlowRate());
result.setEighteenFlowRate(pointDetailInfo.getEighteenFlowRate());

View File

@@ -22,7 +22,6 @@ public class MiniShopPageVO {
@ApiModelProperty("店铺名称")
private String shopName;
public MiniShopPageVO(Long shopId, String shopName) {
this.shopId = shopId;
this.shopName = shopName;

View File

@@ -1,13 +1,19 @@
package com.cool.store.vo.shop;
import com.cool.store.entity.LineAuditInfoDO;
import com.cool.store.entity.ShopStageInfoDO;
import com.cool.store.vo.LineAuditInfoVO;
import com.google.common.collect.Lists;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.collections4.CollectionUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @author zhangchenbiao
@@ -30,20 +36,37 @@ public class ShopStageInfoVO {
@ApiModelProperty("当前阶段是否结束 0未结束 1已结束")
private Boolean isTerminated;
@ApiModelProperty("预估完成时间")
private String planCompleteTime;
@ApiModelProperty("实际完成时间")
private String actualCompleteTime;
@ApiModelProperty("阶段审核信息")
private LineAuditInfoVO auditInfo;
public ShopStageInfoVO(Integer shopStage, Integer shopSubStage, Integer shopSubStageStatus, Boolean isTerminated) {
this.shopStage = shopStage;
this.shopSubStage = shopSubStage;
this.shopSubStageStatus = shopSubStageStatus;
this.isTerminated = isTerminated;
}
public static List<ShopStageInfoVO> convertList(List<ShopStageInfoDO> stageList){
public static List<ShopStageInfoVO> convertList(List<ShopStageInfoDO> stageList, List<LineAuditInfoDO> auditList){
if(CollectionUtils.isEmpty(stageList)){
return Lists.newArrayList();
}
Map<Long, LineAuditInfoDO> auditMap = auditList.stream().collect(Collectors.toMap(LineAuditInfoDO::getId, Function.identity()));
List<ShopStageInfoVO> resultList = new ArrayList<>();
for (ShopStageInfoDO stageInfo : stageList) {
resultList.add(new ShopStageInfoVO(stageInfo.getShopStage(), stageInfo.getShopSubStage(), stageInfo.getShopSubStageStatus(), stageInfo.getIsTerminated()));
ShopStageInfoVO shopStageInfo = new ShopStageInfoVO(stageInfo.getShopStage(), stageInfo.getShopSubStage(), stageInfo.getShopSubStageStatus(), stageInfo.getIsTerminated());
LineAuditInfoDO auditInfo = auditMap.get(stageInfo.getAuditId());
LineAuditInfoVO auditInfoVO = LineAuditInfoVO.convertVO(auditInfo);
shopStageInfo.setAuditInfo(auditInfoVO);
shopStageInfo.setPlanCompleteTime(stageInfo.getPlanCompleteTime());
shopStageInfo.setActualCompleteTime(stageInfo.getActualCompleteTime());
resultList.add(shopStageInfo);
}
return resultList;
}

View File

@@ -193,4 +193,17 @@ public interface PointService {
*/
PageInfo<PointPageVO> getTodoList(PointTodoPageRequest request);
/**
* 获取线索推荐店铺列表
* @param request
* @return
*/
PageInfo<MiniPointPageVO> getLineRecommendPointPage(MiniPointPageRequest request);
/**
* 线索选址铺位
* @param request
* @return
*/
Integer lineSelectPoint(SelectPointRequest request);
}

View File

@@ -1,7 +1,9 @@
package com.cool.store.service;
import com.cool.store.dao.LineAuditInfoDAO;
import com.cool.store.dao.ShopInfoDAO;
import com.cool.store.dao.ShopStageInfoDAO;
import com.cool.store.entity.LineAuditInfoDO;
import com.cool.store.entity.LineInfoDO;
import com.cool.store.entity.ShopInfoDO;
import com.cool.store.entity.ShopStageInfoDO;
@@ -33,6 +35,8 @@ public class ShopServiceImpl implements ShopService {
private ShopInfoDAO shopInfoDAO;
@Resource
private ShopStageInfoDAO shopStageInfoDAO;
@Resource
private LineAuditInfoDAO lineAuditInfoDAO;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -53,7 +57,7 @@ public class ShopServiceImpl implements ShopService {
shopInfoDAO.batchAddShop(addShopList);
List<ShopInfoDO> shopList = shopInfoDAO.getShopList(lineInfo.getId());
List<Long> shopIds = shopList.stream().map(ShopInfoDO::getId).collect(Collectors.toList());
return shopStageInfoDAO.initShopStageInfo(lineInfo.getId(), shopIds, ShopStageEnum.SHOP_STAGE_1);
return shopStageInfoDAO.initShopStageInfo(lineInfo.getId(), shopIds);
}
@Override
@@ -64,11 +68,15 @@ public class ShopServiceImpl implements ShopService {
@Override
public List<ShopStageInfoVO> getShopStageInfo(Long lineId, Long shopId, Integer shopStage) {
ShopStageEnum shopStageEnum = ShopStageEnum.getShopStageEnum(shopStage);
if(Objects.isNull(shopStageEnum)){
throw new ServiceException(ErrorCodeEnum.SHOP_STAGE_ERROR);
if(Objects.nonNull(shopStage)){
ShopStageEnum shopStageEnum = ShopStageEnum.getShopStageEnum(shopStage);
if(Objects.isNull(shopStageEnum)){
throw new ServiceException(ErrorCodeEnum.SHOP_STAGE_ERROR);
}
}
List<ShopStageInfoDO> shopStageInfo = shopStageInfoDAO.getShopStageInfo(shopId, shopStage);
return ShopStageInfoVO.convertList(shopStageInfo);
List<Long> auditIds = shopStageInfo.stream().map(ShopStageInfoDO::getAuditId).collect(Collectors.toList());
List<LineAuditInfoDO> auditList = lineAuditInfoDAO.getLineAuditInfoList(auditIds);
return ShopStageInfoVO.convertList(shopStageInfo, auditList);
}
}

View File

@@ -139,14 +139,13 @@ public class IntentAgreementServiceImpl extends LineFlowService implements Inten
WorkflowSubStageEnum nextStage = workflowSubStageEnum.getNextStage();
//更新线索阶段
lineInfoDAO.updateWorkflowStage(lineInfo.getId(), nextStage, nextStage.getInitStatus(),userId);
//更新auditId
SigningBaseInfoDO signingBaseInfoDO = intentAgreementMapper.selectByPartnerIdOrLineId(null, lineInfo.getId());
if (Objects.nonNull(signingBaseInfoDO)) {
intentAgreementMapper.updateAuditId(lineInfo.getId(), auditId);
} else {
throw new ServiceException("无法更新,没有对应的签约基本信息");
}
}
//更新auditId
SigningBaseInfoDO signingBaseInfoDO = intentAgreementMapper.selectByPartnerIdOrLineId(null, lineInfo.getId());
if (Objects.nonNull(signingBaseInfoDO)) {
intentAgreementMapper.updateAuditId(lineInfo.getId(), auditId);
} else {
throw new ServiceException("无法更新,没有对应的签约基本信息");
}
return Boolean.TRUE;
}
@@ -168,9 +167,9 @@ public class IntentAgreementServiceImpl extends LineFlowService implements Inten
lineInfo.setWorkflowSubStageStatus(WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_80.getCode());
lineInfo.setUpdateUserId(userId);
lineInfoDAO.updateLineInfo(lineInfo);
//更新auditId
intentAgreementMapper.updateAuditId(lineInfo.getId(), auditId);
}
//更新auditId
intentAgreementMapper.updateAuditId(lineInfo.getId(), auditId);
return Boolean.TRUE;
}

View File

@@ -237,7 +237,7 @@ public class LineInterviewServiceImpl extends LineFlowService implements LineInt
updateLineInfo.setSecondInterviewer(request.getInterviewerUserId());
}
lineInfoDAO.updateLineInfo(updateLineInfo);
transferLogService.addLog(lineInfo, interviewInfo.getInterviewerUserId(), request.getInterviewerUserId(), OperationLogTypeEnum.ENTRUST_INTERVIEW);
transferLogService.addLog(lineInfo, request.getOperatorUserId(), request.getInterviewerUserId(), OperationLogTypeEnum.ENTRUST_INTERVIEW);
return true;
}

View File

@@ -1,17 +1,15 @@
package com.cool.store.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.constants.CommonConstants;
import com.cool.store.dao.*;
import com.cool.store.dto.point.AuditNodeDTO;
import com.cool.store.dto.point.MiniPointPageDTO;
import com.cool.store.entity.*;
import com.cool.store.enums.AuditStatusEnum;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.NodeNoEnum;
import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.enums.point.PointRecommendStatus;
import com.cool.store.enums.point.PointStatusEnum;
import com.cool.store.enums.point.SelectStatusEnum;
import com.cool.store.enums.point.*;
import com.cool.store.exception.ServiceException;
import com.cool.store.request.*;
import com.cool.store.service.LabelService;
@@ -29,10 +27,12 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.tuple.Pair;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.text.MessageFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
@@ -74,8 +74,13 @@ public class PointServiceImpl implements PointService {
private LabelService labelService;
@Resource
private HyOpenAreaInfoDAO hyOpenAreaInfoDAO;
@Resource
private ShopStageInfoDAO shopStageInfoDAO;
@Value("${mybatis.configuration.variables.enterpriseId}")
private String enterpriseId;
private static final String AUDIT_SETTING_KEY = "audit_setting_key";
private static final String AUDIT_SETTING_KEY = "audit_setting_key:{0}";
private static final String POINT_SELECT_KEY = "point_select_key:{0}:{1}";
@Override
@Transactional(rollbackFor = Exception.class)
@@ -148,7 +153,7 @@ public class PointServiceImpl implements PointService {
updatePoint.setId(pointId);
updatePoint.setPointStatus(PointStatusEnum.POINT_STATUS_7.getCode());
pointInfoDAO.updatePointInfo(updatePoint);
return pointRecommendDAO.updateRecommendStatus(pointId, PointRecommendStatus.POINT_RECOMMEND_STATUS_6);
return pointRecommendDAO.updateRecommendStatus(pointId, PointRecommendStatusEnum.POINT_RECOMMEND_STATUS_6);
}
@Override
@@ -167,7 +172,7 @@ public class PointServiceImpl implements PointService {
updatePoint.setSelectStatus(SelectStatusEnum.SELECT_STATUS_0.getCode());
pointInfoDAO.updatePointInfo(updatePoint);
//将已选择、已被他人选择的状态更新成待选泽
return pointRecommendDAO.updateRecommendStatusByStatusAndPointId(pointId, PointRecommendStatus.POINT_RECOMMEND_STATUS_1, Arrays.asList(PointRecommendStatus.POINT_RECOMMEND_STATUS_2, PointRecommendStatus.POINT_RECOMMEND_STATUS_3));
return pointRecommendDAO.updateRecommendStatusByStatusAndPointId(pointId, PointRecommendStatusEnum.POINT_RECOMMEND_STATUS_1, Arrays.asList(PointRecommendStatusEnum.POINT_RECOMMEND_STATUS_2, PointRecommendStatusEnum.POINT_RECOMMEND_STATUS_3));
}
@Override
@@ -228,8 +233,9 @@ public class PointServiceImpl implements PointService {
@Override
public Integer auditSetting(AuditSettingRequest request) {
String cacheKey = MessageFormat.format(AUDIT_SETTING_KEY, enterpriseId);
request.setSecondApproval(Arrays.asList(UserAndPositionRequest.convert("position", null, "战区营运")));
redisUtilPool.setString(AUDIT_SETTING_KEY, JSONObject.toJSONString(request));
redisUtilPool.setString(cacheKey, JSONObject.toJSONString(request));
return null;
}
@@ -432,7 +438,7 @@ public class PointServiceImpl implements PointService {
List<Long> regionIds = pointList.stream().map(PointInfoDO::getRegionId).distinct().collect(Collectors.toList());
List<String> developmentManagers = pointList.stream().map(PointInfoDO::getDevelopmentManager).distinct().collect(Collectors.toList());
Map<String, String> userNameMap = enterpriseUserDAO.getUserNameMap(developmentManagers);
Map<Long, String> regionNameMap = new HashMap<>();
Map<Long, String> regionNameMap = regionService.getBelongWarRegionNameMap(regionIds);
return PointRecommendPageVO.convertVO(recommendPointList, pointList, userNameMap, regionNameMap);
}
@@ -454,12 +460,36 @@ public class PointServiceImpl implements PointService {
@Override
public Integer lineRecommendPoint(LineRecommendPointRequest request) {
List<Long> pointIds = request.getPointIds();
List<PointInfoDO> pointList = pointInfoDAO.getPointListByIds(pointIds);
List<PointInfoDO> selectList = pointList.stream().filter(o -> SelectStatusEnum.SELECT_STATUS_1.getCode().equals(o.getSelectStatus())).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(selectList)){
String pointNames = selectList.stream().map(PointInfoDO::getPointName).collect(Collectors.joining(","));
throw new ServiceException(ErrorCodeEnum.ERROR_MESSAGE, pointNames + ",已经被选");
}
List<PointInfoDO> invalidList = pointList.stream().filter(o -> PointStatusEnum.POINT_STATUS_7.getCode().equals(o.getPointStatus())).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(invalidList)){
String pointNames = invalidList.stream().map(PointInfoDO::getPointName).collect(Collectors.joining(","));
throw new ServiceException(ErrorCodeEnum.ERROR_MESSAGE, pointNames + ",已失效");
}
List<PointRecommendDO> recommendList = request.convertList();
return pointRecommendDAO.addRecommendPoint(recommendList);
}
@Override
public Integer pointRecommendLine(PointRecommendLineRequest request) {
Long pointId = request.getPointId();
List<Long> lineIds = request.getLineIds();
PointInfoDO pointInfo = pointInfoDAO.getPointInfoById(pointId);
if(Objects.isNull(pointInfo)){
throw new ServiceException(ErrorCodeEnum.POINT_NOT_EXIST);
}
if(PointStatusEnum.POINT_STATUS_7.getCode().equals(pointInfo.getPointStatus())){
throw new ServiceException(ErrorCodeEnum.POINT_IS_INVALID);
}
if(SelectStatusEnum.SELECT_STATUS_1.getCode().equals(pointInfo.getSelectStatus())){
throw new ServiceException(ErrorCodeEnum.POINT_SELECTED);
}
List<PointRecommendDO> recommendList = request.convertList();
return pointRecommendDAO.addRecommendPoint(recommendList);
}
@@ -510,6 +540,68 @@ public class PointServiceImpl implements PointService {
return resultPage;
}
@Override
public PageInfo<MiniPointPageVO> getLineRecommendPointPage(MiniPointPageRequest request) {
Page<MiniPointPageDTO> pointPage = pointRecommendDAO.getLineRecommendPointPage(request);
List<MiniPointPageVO> resultList = new ArrayList<>();
if(Objects.nonNull(pointPage) && CollectionUtils.isNotEmpty(pointPage.getResult())){
List<Long> regionIds = pointPage.getResult().stream().map(MiniPointPageDTO::getRegionId).distinct().collect(Collectors.toList());
Map<Long, String> regionNameMap = regionService.getBelongWarRegionNameMap(regionIds);
resultList = MiniPointPageVO.convertVO(pointPage, regionNameMap, request.getLineId());
}
PageInfo resultPage = new PageInfo(pointPage);
resultPage.setList(resultList);
return resultPage;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Integer lineSelectPoint(SelectPointRequest request) {
Long pointId = request.getPointId(), shopId = request.getShopId(), lineId = request.getLineId();
String lockKey = MessageFormat.format(POINT_SELECT_KEY, enterpriseId, pointId);
if(!redisUtilPool.setNxExpire(lockKey, JSONObject.toJSONString(request), 30)){
throw new ServiceException(ErrorCodeEnum.POINT_IS_LOCK);
}
try {
ShopInfoDO shopInfo = shopInfoDAO.getShopInfo(shopId);
if(Objects.isNull(shopInfo)){
throw new ServiceException(ErrorCodeEnum.SHOP_NOT_EXIST);
}
if(!ShopStageEnum.SHOP_STAGE_1.getShopStage().equals(shopInfo.getShopStage())){
throw new ServiceException(ErrorCodeEnum.SHOP_STAGE_NOT_OPERATE);
}
if(Objects.nonNull(shopInfo.getPointId())){
throw new ServiceException(ErrorCodeEnum.SHOP_IS_SELECTED);
}
PointInfoDO pointInfo = pointInfoDAO.getPointInfoById(pointId);
if(Objects.isNull(pointInfo)){
throw new ServiceException(ErrorCodeEnum.POINT_NOT_EXIST);
}
if(SelectStatusEnum.SELECT_STATUS_1.getCode().equals(pointInfo.getSelectStatus())){
if(lineId.equals(pointInfo.getLineId())){
throw new ServiceException(ErrorCodeEnum.POINT_ALREADY_SELECT);
}
throw new ServiceException(ErrorCodeEnum.POINT_IS_SELECTED);
}
PointInfoDO updatePoint = new PointInfoDO();
updatePoint.setId(pointId);
updatePoint.setSelectStatus(SelectStatusEnum.SELECT_STATUS_1.getCode());
updatePoint.setLineId(lineId);
updatePoint.setShopId(shopId);
pointInfoDAO.updatePointInfo(updatePoint);
ShopInfoDO updateShop = new ShopInfoDO();
updateShop.setId(shopId);
updateShop.setPointId(pointId);
shopInfoDAO.updateShopInfo(shopInfo);
shopStageInfoDAO.updateShopStageInfo(shopId, ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_1);
return pointRecommendDAO.updateStatusByPointIdAndLineId(pointId, lineId);
} catch (ServiceException e) {
throw e;
} finally {
redisUtilPool.delKey(lockKey);
}
}
public List<AuditNodeDTO> dealAuditNode(AuditSettingVO auditSetting, Long regionId, String operateUserId, String developmentManager) {
List<String> roleIds = new ArrayList<>();
//审核人

View File

@@ -30,12 +30,13 @@ public class KdzApiController {
public ResponseResult<Boolean> auditResult(@PathVariable(value = "enterprise-id") String eid,
@RequestBody XfsgOpenApiRequest request) {
log.info("auditResult requestBody :{}", JSONObject.toJSONString(request));
if(!verifyMD5(request,eid)){
return ResponseResult.fail(ErrorCodeEnum.VERIFY_MD5_FALSE);
}
if(eid == null || request.getBizContent() == null){
return ResponseResult.fail(ErrorCodeEnum.PARAMS_VALIDATE_ERROR);
}
//todo 暂时去掉验签测试
// if(!verifyMD5(request,eid)){
// return ResponseResult.fail(ErrorCodeEnum.VERIFY_MD5_FALSE);
// }
// if(eid == null || request.getBizContent() == null){
// return ResponseResult.fail(ErrorCodeEnum.PARAMS_VALIDATE_ERROR);
// }
AuditResultRequest auditResultRequest = JSONObject.parseObject(request.getBizContent(), AuditResultRequest.class);
return ResponseResult.success(kdzApiService.auditResult(auditResultRequest));
}

View File

@@ -62,6 +62,7 @@ public class PCLineInterviewController {
@ApiOperation("修改面试官")
@PostMapping("/modify")
public ResponseResult<Boolean> modifyInterviewer(@RequestBody @Validated ModifyInterviewerRequest request) {
request.setOperatorUserId(CurrentUserHolder.getUserId());
return ResponseResult.success(lineInterviewService.modifyInterviewer(request));
}

View File

@@ -24,7 +24,7 @@ import java.util.List;
* @Description:
* @date 2024-03-29 15:36
*/
@Api(tags = "选址/铺位")
@Api(tags = "选址&铺位")
@RestController
@RequestMapping("/pc/point")
public class PointController {

View File

@@ -1,18 +1,25 @@
package com.cool.store.controller.webc;
import com.cool.store.context.CurrentUserHolder;
import com.cool.store.context.PartnerUserHolder;
import com.cool.store.request.AddPointDetailRequest;
import com.cool.store.request.MiniPointPageRequest;
import com.cool.store.request.PointRecommendLineRequest;
import com.cool.store.request.SelectPointRequest;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.PointService;
import com.cool.store.service.ShopService;
import com.cool.store.vo.point.MiniPointPageVO;
import com.cool.store.vo.point.PointDetailVO;
import com.cool.store.vo.point.PointPageVO;
import com.cool.store.vo.shop.MiniShopPageVO;
import com.cool.store.vo.shop.ShopStageInfoVO;
import com.cool.store.vo.shop.ShopStageVO;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@@ -42,7 +49,7 @@ public class MiniShopController {
@ApiOperation("获取店铺的阶段信息")
@GetMapping("/getShopStageInfo")
public ResponseResult<List<ShopStageInfoVO>> getShopStageInfo(@RequestParam("shopId")Long shopId, @RequestParam("shopStage")Integer shopStage) {
public ResponseResult<List<ShopStageInfoVO>> getShopStageInfo(@RequestParam("shopId")Long shopId, @RequestParam(value = "shopStage", required = false)Integer shopStage) {
Long lineId = PartnerUserHolder.getUser().getLineId();
return ResponseResult.success(shopService.getShopStageInfo(lineId, shopId, shopStage));
}
@@ -53,4 +60,32 @@ public class MiniShopController {
return ResponseResult.success(ShopStageVO.getShopStageList());
}
@ApiOperation("获取推荐给我的铺位")
@PostMapping("/getLineRecommendPointPage")
public ResponseResult<PageInfo<MiniPointPageVO>> getLineRecommendPointPage(@RequestBody MiniPointPageRequest request) {
Long lineId = PartnerUserHolder.getUser().getLineId();
request.setLineId(lineId);
return ResponseResult.success(pointService.getLineRecommendPointPage(request));
}
@ApiOperation("铺位详情")
@GetMapping("/detail")
public ResponseResult<PointDetailVO> getPointDetailInfo(@RequestParam("pointId")Long pointId) {
return ResponseResult.success(pointService.getPointDetailInfo(pointId));
}
@ApiOperation("选址铺位")
@PostMapping("/selectPoint")
public ResponseResult<Integer> lineSelectPoint(@RequestBody @Validated SelectPointRequest request) {
Long lineId = PartnerUserHolder.getUser().getLineId();
request.setLineId(lineId);
return ResponseResult.success(pointService.lineSelectPoint(request));
}
@ApiOperation("提交新铺位")
@PostMapping("/add")
public ResponseResult<Long> addPointDetailInfo(@RequestBody @Validated AddPointDetailRequest shopPointDetailRequest) {
return ResponseResult.success(pointService.addPointDetailInfo(shopPointDetailRequest, CurrentUserHolder.getUserId()));
}
}