Merge #40 into master from cc_20251208_visit
fix:新老加盟商判断逻辑修复;统计接口新增筛选条件
* cc_20251208_visit: (25 commits squashed)
- feat:拜访记录
- fix:拜访详情接口新增字段
- fix:新增状态转义字段
- fix:惩处单查询提供惩处待处理、惩处已处理状态筛选
- fix
- fix:管理员能查看所有加盟商
- fix:去掉部分字段非空校验
- fix:空校验
- Merge branch 'master' into cc_20251208_visit
# Conflicts:
#	coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java
#	coolstore-partner-dao/src/main/java/com/cool/store/dao/store/StoreMasterSignerInfoDAO.java
#	coolstore-partner-service/src/main/java/com/cool/store/service/impl/UserAuthMappingServiceImpl.java
- fix
- fix:拜访记录失效延时消息
- fix:拜访记录统计
- fix:拜访记录统计新增筛选条件
- fix:字段转义
- feat:拜访调整
- feat:拜访调整_过滤我的
- feat:拜访调整_过滤我的
- feat:拜访字段调整
- feat:拜访字段调整
- Merge branch 'master' into cc_20251208_visit
- fix:拜访我的加盟商取消管辖权限过滤
- Merge branch 'master' into cc_20251208_visit
- fix:新增已分配招商经理的线索查询接口;拜访记录列表接口新增字段
- fix:新增字段
- fix:新老加盟商判断逻辑修复;统计接口新增筛选条件
Signed-off-by: 王非凡 <accounts_67eba0c5fee9c49c80c8e2b4@mail.teambition.com>
Merged-by: 正新 <accounts_6964c7bcd2a2c377c5bbd01b@mail.teambition.com>
CR-link: https://codeup.aliyun.com/692ea314dec569489f6f167c/hangzhou/java/custom_zxjp/change/40
This commit is contained in:
@@ -208,6 +208,13 @@ public class LineInfoDAO {
|
|||||||
return lineInfoMapper.getLinesByKeyword(keyword);
|
return lineInfoMapper.getLinesByKeyword(keyword);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询已分配招商经理的所有线索
|
||||||
|
*/
|
||||||
|
public List<LineVO> getLinesAssignInvestManager(String keyword) {
|
||||||
|
return lineInfoMapper.getLinesAssignInvestManager(keyword);
|
||||||
|
}
|
||||||
|
|
||||||
public List<LineInfoDO> getByLineIds(List<Long> lineIds){
|
public List<LineInfoDO> getByLineIds(List<Long> lineIds){
|
||||||
if (CollectionUtils.isEmpty(lineIds)){
|
if (CollectionUtils.isEmpty(lineIds)){
|
||||||
return Lists.newArrayList();
|
return Lists.newArrayList();
|
||||||
|
|||||||
@@ -135,4 +135,8 @@ public interface LineInfoMapper extends Mapper<LineInfoDO> {
|
|||||||
|
|
||||||
List<LineVO> getLinesByKeyword(@Param("keyword") String keyword);
|
List<LineVO> getLinesByKeyword(@Param("keyword") String keyword);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询已分配招商经理的所有线索
|
||||||
|
*/
|
||||||
|
List<LineVO> getLinesAssignInvestManager(@Param("keyword") String keyword);
|
||||||
}
|
}
|
||||||
@@ -650,6 +650,21 @@
|
|||||||
order by id desc
|
order by id desc
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="getLinesAssignInvestManager" resultType="com.cool.store.vo.LineVO">
|
||||||
|
select
|
||||||
|
id as lineId,
|
||||||
|
username,
|
||||||
|
mobile
|
||||||
|
from xfsg_line_info
|
||||||
|
<where>
|
||||||
|
<if test="keyword != null and keyword != ''">
|
||||||
|
and (mobile like CONCAT('%', #{keyword} ,'%')
|
||||||
|
or username like CONCAT('%', #{keyword} ,'%'))
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
order by id desc
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
<update id="batchUpdateInvestmentManager">
|
<update id="batchUpdateInvestmentManager">
|
||||||
update xfsg_line_info set line_status = #{status} , investment_manager = #{investmentManager} ,region_id = #{regionId},invest_region_id = #{investRegionId} where id in
|
update xfsg_line_info set line_status = #{status} , investment_manager = #{investmentManager} ,region_id = #{regionId},invest_region_id = #{investRegionId} where id in
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
<select id="getVisitRecordList" resultType="com.cool.store.vo.visit.VisitRecordListVO">
|
<select id="getVisitRecordList" resultType="com.cool.store.vo.visit.VisitRecordListVO">
|
||||||
SELECT a.id, a.line_id, a.visit_no, a.visit_date, a.sign_in_address, a.desire, a.desire_city,
|
SELECT a.id, a.line_id, a.visit_no, a.visit_date, a.sign_in_address, a.desire, a.desire_city,
|
||||||
a.desire_district, a.existing_shop_point, a.photos, a.status,
|
a.desire_district, a.existing_shop_point, a.photos, a.status,
|
||||||
b.username name, b.mobile,a.user_id as visitUserId
|
b.username name, b.mobile,a.user_id as visitUserId, b.invest_region_id, b.investment_manager
|
||||||
FROM zxjp_visit_record a
|
FROM zxjp_visit_record a
|
||||||
INNER JOIN xfsg_line_info b ON a.line_id = b.id AND b.deleted = 0
|
INNER JOIN xfsg_line_info b ON a.line_id = b.id AND b.deleted = 0
|
||||||
<where>
|
<where>
|
||||||
@@ -90,6 +90,12 @@
|
|||||||
<if test="request.userId != null">
|
<if test="request.userId != null">
|
||||||
AND a.user_id = #{request.userId}
|
AND a.user_id = #{request.userId}
|
||||||
</if>
|
</if>
|
||||||
|
<if test="request.desire != null and request.desire != ''">
|
||||||
|
AND a.desire = #{request.desire}
|
||||||
|
</if>
|
||||||
|
<if test="request.investRegionId != null">
|
||||||
|
AND b.invest_region_id = #{request.investRegionId}
|
||||||
|
</if>
|
||||||
</where>
|
</where>
|
||||||
ORDER BY a.create_time DESC
|
ORDER BY a.create_time DESC
|
||||||
</select>
|
</select>
|
||||||
@@ -165,6 +171,12 @@
|
|||||||
<if test="request.userId != null">
|
<if test="request.userId != null">
|
||||||
AND a.user_id = #{request.userId}
|
AND a.user_id = #{request.userId}
|
||||||
</if>
|
</if>
|
||||||
|
<if test="request.desire != null and request.desire != ''">
|
||||||
|
AND a.desire = #{request.desire}
|
||||||
|
</if>
|
||||||
|
<if test="request.investRegionId != null">
|
||||||
|
AND b.invest_region_id = #{request.investRegionId}
|
||||||
|
</if>
|
||||||
</where>
|
</where>
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
@@ -36,6 +36,12 @@ public class VisitRecordQueryRequest extends PageBasicInfo {
|
|||||||
|
|
||||||
@ApiModelProperty("拜访状态,0待签到 1待签退 2已完成 3已失效")
|
@ApiModelProperty("拜访状态,0待签到 1待签退 2已完成 3已失效")
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
||||||
|
@ApiModelProperty("开新店意愿")
|
||||||
|
private String desire;
|
||||||
|
|
||||||
|
@ApiModelProperty("招商所属大区ID")
|
||||||
|
private Long investRegionId;
|
||||||
|
|
||||||
@ApiModelProperty(value = "拜访人id", hidden = true)
|
@ApiModelProperty(value = "拜访人id", hidden = true)
|
||||||
private String userId;
|
private String userId;
|
||||||
|
|||||||
@@ -33,4 +33,10 @@ public class VisitPartnerListVO {
|
|||||||
|
|
||||||
@ApiModelProperty("新老加盟商,0新 1老")
|
@ApiModelProperty("新老加盟商,0新 1老")
|
||||||
private Integer isVeteran;
|
private Integer isVeteran;
|
||||||
|
|
||||||
|
@ApiModelProperty("招商所属大区名称")
|
||||||
|
private String investRegionName;
|
||||||
|
|
||||||
|
@ApiModelProperty("招商经理名称")
|
||||||
|
private String investmentManagerName;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -93,6 +93,12 @@ public class VisitRecordDetailVO {
|
|||||||
@ApiModelProperty("拜访人名称")
|
@ApiModelProperty("拜访人名称")
|
||||||
private String userName;
|
private String userName;
|
||||||
|
|
||||||
|
@ApiModelProperty("招商所属大区名称")
|
||||||
|
private String investRegionName;
|
||||||
|
|
||||||
|
@ApiModelProperty("招商经理名称")
|
||||||
|
private String investmentManagerName;
|
||||||
|
|
||||||
public String getStatusName() {
|
public String getStatusName() {
|
||||||
return VisitStatusEnum.getDescByStatus(status);
|
return VisitStatusEnum.getDescByStatus(status);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.cool.store.vo.visit;
|
package com.cool.store.vo.visit;
|
||||||
|
|
||||||
|
import com.cool.store.annotation.DictField;
|
||||||
import com.cool.store.enums.visit.VisitStatusEnum;
|
import com.cool.store.enums.visit.VisitStatusEnum;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -40,6 +41,10 @@ public class VisitRecordListVO {
|
|||||||
@ApiModelProperty("开新店意愿")
|
@ApiModelProperty("开新店意愿")
|
||||||
private String desire;
|
private String desire;
|
||||||
|
|
||||||
|
@ApiModelProperty("开新店意愿名称")
|
||||||
|
@DictField
|
||||||
|
private String desireName;
|
||||||
|
|
||||||
@ApiModelProperty("意向开店城市")
|
@ApiModelProperty("意向开店城市")
|
||||||
private String desireCity;
|
private String desireCity;
|
||||||
|
|
||||||
@@ -73,6 +78,18 @@ public class VisitRecordListVO {
|
|||||||
@ApiModelProperty("拜访人")
|
@ApiModelProperty("拜访人")
|
||||||
private String visitUserName;
|
private String visitUserName;
|
||||||
|
|
||||||
|
@ApiModelProperty("招商所属大区ID")
|
||||||
|
private Long investRegionId;
|
||||||
|
|
||||||
|
@ApiModelProperty("招商所属大区名称")
|
||||||
|
private String investRegionName;
|
||||||
|
|
||||||
|
@ApiModelProperty("招商经理")
|
||||||
|
public String investmentManager;
|
||||||
|
|
||||||
|
@ApiModelProperty("招商经理名称")
|
||||||
|
private String investmentManagerName;
|
||||||
|
|
||||||
public String getStatusName() {
|
public String getStatusName() {
|
||||||
return VisitStatusEnum.getDescByStatus(status);
|
return VisitStatusEnum.getDescByStatus(status);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -101,6 +101,11 @@ public interface LineService {
|
|||||||
|
|
||||||
//增加查询资质审核的意向加盟商或正式加盟商搜索范围为全部
|
//增加查询资质审核的意向加盟商或正式加盟商搜索范围为全部
|
||||||
PageInfo<LineVO> getLines(LinesRequest request);
|
PageInfo<LineVO> getLines(LinesRequest request);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询已分配招商经理的所有线索
|
||||||
|
*/
|
||||||
|
PageInfo<LineVO> getLinesAssignInvestManager(LinesRequest request);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Auther: wangshuo
|
* @Auther: wangshuo
|
||||||
|
|||||||
@@ -647,6 +647,13 @@ public class LineServiceImpl implements LineService {
|
|||||||
return pageInfo;
|
return pageInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageInfo<LineVO> getLinesAssignInvestManager(LinesRequest request) {
|
||||||
|
PageHelper.startPage(request.getPageNum(), request.getPageSize());
|
||||||
|
List<LineVO> lines = lineInfoDAO.getLinesAssignInvestManager(request.getKeyword());
|
||||||
|
return new PageInfo<>(lines);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer updatePartnerName(String username, Long lineId) {
|
public Integer updatePartnerName(String username, Long lineId) {
|
||||||
LineInfoDO lineInfo = lineInfoDAO.getLineInfo(lineId);
|
LineInfoDO lineInfo = lineInfoDAO.getLineInfo(lineId);
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import com.cool.store.dao.visit.VisitRecordDAO;
|
|||||||
import com.cool.store.dto.region.BigRegionDTO;
|
import com.cool.store.dto.region.BigRegionDTO;
|
||||||
import com.cool.store.entity.LineInfoDO;
|
import com.cool.store.entity.LineInfoDO;
|
||||||
import com.cool.store.entity.QualificationsInfoDO;
|
import com.cool.store.entity.QualificationsInfoDO;
|
||||||
|
import com.cool.store.entity.RegionDO;
|
||||||
import com.cool.store.entity.StoreDO;
|
import com.cool.store.entity.StoreDO;
|
||||||
import com.cool.store.entity.store.StoreMasterSignerInfoDO;
|
import com.cool.store.entity.store.StoreMasterSignerInfoDO;
|
||||||
import com.cool.store.entity.visit.VisitRecordDO;
|
import com.cool.store.entity.visit.VisitRecordDO;
|
||||||
@@ -59,6 +60,7 @@ public class VisitRecordServiceImpl implements VisitRecordService {
|
|||||||
private final SimpleMessageService simpleMessageService;
|
private final SimpleMessageService simpleMessageService;
|
||||||
private final AdDistrictDAO adDistrictDAO;
|
private final AdDistrictDAO adDistrictDAO;
|
||||||
private final EnterpriseUserDAO enterpriseUserDAO;
|
private final EnterpriseUserDAO enterpriseUserDAO;
|
||||||
|
private final RegionDao regionDao;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String signIn(VisitSignInRequest request) {
|
public String signIn(VisitSignInRequest request) {
|
||||||
@@ -129,6 +131,11 @@ public class VisitRecordServiceImpl implements VisitRecordService {
|
|||||||
List<LineInfoDO> lineList = lineInfoDAO.getByLineIds(lineIds);
|
List<LineInfoDO> lineList = lineInfoDAO.getByLineIds(lineIds);
|
||||||
Map<Long, LineInfoDO> lineMap = CollStreamUtil.toMap(lineList, LineInfoDO::getId, v -> v);
|
Map<Long, LineInfoDO> lineMap = CollStreamUtil.toMap(lineList, LineInfoDO::getId, v -> v);
|
||||||
Map<Long, Integer> storeNumMap = getStoreNumMap(lineIds);
|
Map<Long, Integer> storeNumMap = getStoreNumMap(lineIds);
|
||||||
|
Set<String> investmentManagerIds = CollStreamUtil.toSet(lineList, LineInfoDO::getInvestmentManager);
|
||||||
|
Set<Long> investRegionIds = CollStreamUtil.toSet(lineList, LineInfoDO::getInvestRegionId);
|
||||||
|
Map<String, String> userNameMap = enterpriseUserDAO.getUserNameMap(new ArrayList<>(investmentManagerIds));
|
||||||
|
Map<Long, String> regionNameMap = regionDao.getRegionNameMap(new ArrayList<>(investRegionIds));
|
||||||
|
|
||||||
list.forEach(v -> {
|
list.forEach(v -> {
|
||||||
v.setOpenNum(storeNumMap.getOrDefault(v.getLineId(), 0));
|
v.setOpenNum(storeNumMap.getOrDefault(v.getLineId(), 0));
|
||||||
v.setIsVeteran(v.getOpenNum() > 0 ? 1 : 0);
|
v.setIsVeteran(v.getOpenNum() > 0 ? 1 : 0);
|
||||||
@@ -136,6 +143,8 @@ public class VisitRecordServiceImpl implements VisitRecordService {
|
|||||||
if (Objects.nonNull(lineInfoDO)) {
|
if (Objects.nonNull(lineInfoDO)) {
|
||||||
v.setName(lineInfoDO.getUsername());
|
v.setName(lineInfoDO.getUsername());
|
||||||
v.setMobile(lineInfoDO.getMobile());
|
v.setMobile(lineInfoDO.getMobile());
|
||||||
|
v.setInvestmentManagerName(userNameMap.get(lineInfoDO.getInvestmentManager()));
|
||||||
|
v.setInvestRegionName(regionNameMap.get(lineInfoDO.getInvestRegionId()));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return result;
|
return result;
|
||||||
@@ -157,6 +166,7 @@ public class VisitRecordServiceImpl implements VisitRecordService {
|
|||||||
storeNumMap.compute(signerInfoDO.getSigner2IdCardNo(), (k, v) -> Objects.isNull(v) ? 1 : v + 1);
|
storeNumMap.compute(signerInfoDO.getSigner2IdCardNo(), (k, v) -> Objects.isNull(v) ? 1 : v + 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
storeNumMap.remove(null);
|
||||||
return CollStreamUtil.toMap(lineIds, v -> v, v -> storeNumMap.getOrDefault(idCardMap.get(v), 0));
|
return CollStreamUtil.toMap(lineIds, v -> v, v -> storeNumMap.getOrDefault(idCardMap.get(v), 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -198,6 +208,11 @@ public class VisitRecordServiceImpl implements VisitRecordService {
|
|||||||
if (Objects.nonNull(lineInfo)) {
|
if (Objects.nonNull(lineInfo)) {
|
||||||
vo.setName(lineInfo.getUsername());
|
vo.setName(lineInfo.getUsername());
|
||||||
vo.setMobile(lineInfo.getMobile());
|
vo.setMobile(lineInfo.getMobile());
|
||||||
|
vo.setInvestmentManagerName(enterpriseUserDAO.getUserName(lineInfo.getInvestmentManager()));
|
||||||
|
RegionDO investRegion = regionDao.getRegionById(lineInfo.getInvestRegionId());
|
||||||
|
if (Objects.nonNull(investRegion)) {
|
||||||
|
vo.setInvestRegionName(investRegion.getName());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (StringUtils.isNotBlank(record.getUserId())){
|
if (StringUtils.isNotBlank(record.getUserId())){
|
||||||
String userName = enterpriseUserDAO.getUserName(record.getUserId());
|
String userName = enterpriseUserDAO.getUserName(record.getUserId());
|
||||||
@@ -230,24 +245,27 @@ public class VisitRecordServiceImpl implements VisitRecordService {
|
|||||||
List<VisitRecordListVO> list = visitRecordDAO.getVisitRecordList(request);
|
List<VisitRecordListVO> list = visitRecordDAO.getVisitRecordList(request);
|
||||||
PageInfo<VisitRecordListVO> page = new PageInfo<>(list);
|
PageInfo<VisitRecordListVO> page = new PageInfo<>(list);
|
||||||
Set<Long> lineIds = CollStreamUtil.toSet(list, VisitRecordListVO::getLineId);
|
Set<Long> lineIds = CollStreamUtil.toSet(list, VisitRecordListVO::getLineId);
|
||||||
Set<String> userIdList = CollStreamUtil.toSet(list, VisitRecordListVO::getVisitUserId);
|
Set<String> userIdList = list.stream()
|
||||||
Map<String, String> userNameMap = new HashMap<>();
|
.flatMap(v -> Stream.of(v.getVisitUserId(), v.getInvestmentManager()))
|
||||||
if (CollectionUtils.isNotEmpty(userIdList)){
|
.collect(Collectors.toSet());
|
||||||
userNameMap = enterpriseUserDAO.getUserNameMap(new ArrayList<>(userIdList));
|
Set<Long> regionIds = CollStreamUtil.toSet(list, VisitRecordListVO::getInvestRegionId);
|
||||||
}
|
Map<String, String> userNameMap = enterpriseUserDAO.getUserNameMap(new ArrayList<>(userIdList));
|
||||||
|
Map<Long, String> regionNameMap = regionDao.getRegionNameMap(new ArrayList<>(regionIds));
|
||||||
List<String> adCodes = list.stream()
|
List<String> adCodes = list.stream()
|
||||||
.flatMap(v -> Stream.of(v.getDesireCity(), v.getDesireDistrict()))
|
.flatMap(v -> Stream.of(v.getDesireCity(), v.getDesireDistrict()))
|
||||||
.distinct()
|
.distinct()
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
Map<String, String> adNameMap = adDistrictDAO.getNameByCodes(adCodes);
|
Map<String, String> adNameMap = adDistrictDAO.getNameByCodes(adCodes);
|
||||||
Map<Long, Integer> storeNumMap = getStoreNumMap(new ArrayList<>(lineIds));
|
Map<Long, Integer> storeNumMap = getStoreNumMap(new ArrayList<>(lineIds));
|
||||||
Map<String, String> finalUserNameMap = userNameMap;
|
|
||||||
list.forEach(v -> {
|
list.forEach(v -> {
|
||||||
v.setIsVeteran(storeNumMap.getOrDefault(v.getLineId(), 0) > 0 ? 1 : 0);
|
v.setIsVeteran(storeNumMap.getOrDefault(v.getLineId(), 0) > 0 ? 1 : 0);
|
||||||
v.setDesireCityName(adNameMap.get(v.getDesireCity()));
|
v.setDesireCityName(adNameMap.get(v.getDesireCity()));
|
||||||
v.setDesireDistrictName(adNameMap.get(v.getDesireDistrict()));
|
v.setDesireDistrictName(adNameMap.get(v.getDesireDistrict()));
|
||||||
v.setVisitUserName(finalUserNameMap.get(v.getVisitUserId()));
|
v.setVisitUserName(userNameMap.get(v.getVisitUserId()));
|
||||||
|
v.setInvestRegionName(regionNameMap.get(v.getInvestRegionId()));
|
||||||
|
v.setInvestmentManagerName(userNameMap.get(v.getInvestmentManager()));
|
||||||
});
|
});
|
||||||
|
dictService.fillDictField(list);
|
||||||
return page;
|
return page;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -180,6 +180,12 @@ public class LineInfoController {
|
|||||||
return ResponseResult.success(lineService.getLines(request));
|
return ResponseResult.success(lineService.getLines(request));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation("查询已分配招商经理的所有线索")
|
||||||
|
@PostMapping("/getLinesAssignInvest")
|
||||||
|
public ResponseResult<PageInfo<LineVO>> getLinesAssignInvestManager(@RequestBody LinesRequest request) {
|
||||||
|
return ResponseResult.success(lineService.getLinesAssignInvestManager(request));
|
||||||
|
}
|
||||||
|
|
||||||
@ApiOperation("修改所属大区/分公司")
|
@ApiOperation("修改所属大区/分公司")
|
||||||
@GetMapping("/updateLineRegion")
|
@GetMapping("/updateLineRegion")
|
||||||
public ResponseResult<Integer> updateLineRegion(@RequestParam("regionId")Long regionId,
|
public ResponseResult<Integer> updateLineRegion(@RequestParam("regionId")Long regionId,
|
||||||
|
|||||||
Reference in New Issue
Block a user