我的加盟商管理

This commit is contained in:
苏竹红
2024-04-01 15:05:12 +08:00
parent 24a72bdaf9
commit e067779745
13 changed files with 243 additions and 21 deletions

View File

@@ -8,6 +8,7 @@ import com.cool.store.enums.WorkflowSubStageStatusEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.mapper.LineInfoMapper;
import com.cool.store.request.LineListRequest;
import com.cool.store.request.PartnerRequest;
import com.cool.store.request.PublicLineListRequest;
import com.cool.store.vo.PublicLineListVO;
import lombok.extern.slf4j.Slf4j;
@@ -93,6 +94,11 @@ public class LineInfoDAO {
return lineInfo;
}
public List<LineInfoDO> partnerList(PartnerRequest partnerRequest,String wantShopAreaName, String userId, List<Long> wantShopAreaIds) {
List<LineInfoDO> lineInfo = lineInfoMapper.partnerList(partnerRequest,wantShopAreaName,userId,wantShopAreaIds);
return lineInfo;
}
public List<LineInfoDO> publicLineList(PublicLineListRequest publicLineListRequest) {
List<LineInfoDO> lineInfo = lineInfoMapper.publicLineList(publicLineListRequest);
return lineInfo;

View File

@@ -5,6 +5,8 @@ import com.cool.store.request.IntentAgreementSubmitRequest;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface IntentAgreementMapper {
@@ -19,4 +21,11 @@ public interface IntentAgreementMapper {
* @return
*/
SigningBaseInfoDO judge(@Param("request") IntentAgreementSubmitRequest request);
/**
* 查询签约信息
* @param lineIds
* @return
*/
List<SigningBaseInfoDO> selectByLineIds(List<Long> lineIds);
}

View File

@@ -3,6 +3,7 @@ package com.cool.store.mapper;
import com.cool.store.entity.LineInfoDO;
import com.cool.store.enums.WorkflowSubStageStatusEnum;
import com.cool.store.request.LineListRequest;
import com.cool.store.request.PartnerRequest;
import com.cool.store.request.PublicLineListRequest;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;
@@ -30,10 +31,15 @@ public interface LineInfoMapper extends Mapper<LineInfoDO> {
@Param("userId") String userId,
@Param("wantShopAreaIds") List<Long> wantShopAreaIds);
List<LineInfoDO> partnerList(@Param("request") PartnerRequest partnerRequest,
@Param("wantShopAreaName") String wantShopAreaName,
@Param("userId") String userId,
@Param("wantShopAreaIds") List<Long> wantShopAreaIds);
/**
* 公海线索列表
* @param publicLineListVO
* @param publicLineListRequest
* @return
*/
List<LineInfoDO> publicLineList(@Param("request") PublicLineListRequest publicLineListRequest);

View File

@@ -105,5 +105,16 @@
</where>
</select>
<select id="selectByLineIds" resultType="com.cool.store.entity.SigningBaseInfoDO">
select
<include refid="Base_Column_List"/>
from xfsg_signing_base_info
where deleted = 0
<if test="lineIds !=null and lineIds.size>0">
<foreach collection="lineIds" item="lineId" open="and line_id in (" close=")" separator=",">
#{lineId}
</foreach>
</if>
</select>
</mapper>

View File

@@ -311,6 +311,9 @@
<if test="request.userName != null and request.username!=''">
and username = #{request.userName}
</if>
<if test="request.keyword != null and request.keyword!=''">
and (a.username like #{request.userName} or a.mobile like #{request.mobile})
</if>
<if test="request.mobile != null and request.mobile!=''">
and mobile = #{request.mobile}
</if>
@@ -334,6 +337,36 @@
</select>
<select id="partnerList" resultMap="BaseResultMap">
select * from xfsg_line_info a
left join xfsg_open_area_info b on a.want_shop_area_id = b.id
where a.deleted = 0 and a.line_status = 1 and a.join_status in (1,2)
<if test="userId != null and userId != ''">
and a.investment_manager = #{userId}
</if>
<if test="request.keyword != null and request.keyword!=''">
and (a.username like #{request.userName} or a.mobile like #{request.mobile})
</if>
<if test="wantShopAreaName != null">
and b.area_path like concat('%',#{wantShopAreaName},'%')
</if>
<if test="request.queryUserId!=null and request.queryUserId!=''">
<if test="request.queryType != null and request.queryType == '1' ">
and a.investment_manager = #{request.queryUserId}
</if>
<if test="request.queryType != null and request.queryType == '2' ">
and a.development_manager = #{request.queryUserId}
</if>
</if>
<if test="wantShopAreaIds !=null and wantShopAreaIds.size>0">
<foreach collection="wantShopAreaIds" item="wantShopAreaId" open="and a.want_shop_area_id in (" close=")" separator=",">
#{wantShopAreaId}
</foreach>
</if>
</select>
<select id="publicLineList" resultMap="BaseResultMap">
select * from xfsg_line_info
where deleted = 0 and line_status = 0 and join_status = 0
@@ -343,6 +376,9 @@
<if test="request.mobile != null and request.mobile!=''">
and mobile = #{request.mobile}
</if>
<if test="request.keyword != null and request.keyword!=''">
and (a.username like #{request.userName} or a.mobile like #{request.mobile})
</if>
<if test="request.lineSource != null">
and line_source = #{request.lineSource}
</if>

View File

@@ -66,6 +66,9 @@ public class LineInfoDO {
@Column(name = "workflow_sub_stage_status")
private Integer workflowSubStageStatus;
@Column(name = "want_shop_num")
private Integer wantShopNum;
/**
* 待选址铺位
*/

View File

@@ -18,6 +18,8 @@ public class LineListRequest extends PageBasicInfo {
private String userName;
@ApiModelProperty("线索手机号")
private String mobile;
@ApiModelProperty("关键字")
private String keyword;
@ApiModelProperty("线索子阶段")
private Integer workflowSubStage;
@ApiModelProperty("线索创建时间_开始")

View File

@@ -0,0 +1,26 @@
package com.cool.store.request;
import com.cool.store.common.PageBasicInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author suzhuhong
* @Date 2024/4/1 11:21
* @Version 1.0
*/
@Data
public class PartnerRequest extends PageBasicInfo {
@ApiModelProperty("加盟上姓名或者手机号")
private String keyword;
@ApiModelProperty("线索子阶段")
private Integer workflowSubStage;
@ApiModelProperty("意向区域ID")
private Long wantShopAreaId;
@ApiModelProperty("招商经理-1 扩展经理-2")
private Integer queryType;
@ApiModelProperty("招商经理ID")
private String queryUserId;
}

View File

@@ -16,6 +16,8 @@ public class PublicLineListRequest extends PageBasicInfo {
private String userName;
@ApiModelProperty("线索手机号")
private String mobile;
@ApiModelProperty("关键字")
private String keyword;
@ApiModelProperty("线索创建时间_开始")
private String createTimeStart;
@ApiModelProperty("线索创建时间_结束")

View File

@@ -0,0 +1,45 @@
package com.cool.store.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author suzhuhong
* @Date 2024/4/1 11:30
* @Version 1.0
*/
@Data
public class PartnerListVO extends BaseInfoVO{
@ApiModelProperty("招商经理名称")
private String investmentManagerUserName;
@ApiModelProperty("线索来源名称")
private String lineSourceName;
@ApiModelProperty("1-蓄水池 2-加盟商")
private Integer joinStatus;
@ApiModelProperty("扩展经理名称")
private String developmentManagerUserName;
@ApiModelProperty("加盟时间")
private String joinTime;
@ApiModelProperty("更新时间")
private String updateTime;
@ApiModelProperty("更新人名称")
private String updateUserName;
private Integer wantShopNum;
public PartnerListVO(){}
public PartnerListVO(BaseInfoVO baseInfoVO) {
super(baseInfoVO);
}
}

View File

@@ -1,12 +1,10 @@
package com.cool.store.service;
import com.cool.store.context.LoginUserInfo;
import com.cool.store.request.AddTagsRequest;
import com.cool.store.request.ChangeInvestmentRequest;
import com.cool.store.request.LineListRequest;
import com.cool.store.request.PublicLineListRequest;
import com.cool.store.request.*;
import com.cool.store.vo.LineInfoVO;
import com.cool.store.vo.LineListVO;
import com.cool.store.vo.PartnerListVO;
import com.cool.store.vo.PublicLineListVO;
import com.github.pagehelper.PageInfo;
@@ -43,6 +41,16 @@ public interface LineService {
*/
PageInfo<PublicLineListVO> getPublicLineList(PublicLineListRequest publicLineListRequest, LoginUserInfo loginUserInfo);
/**
* 我负责的加盟商 or 团队负责的加盟商
* @param partnerRequest
* @param loginUserInfo
* @param teamFlag
* @return
*/
PageInfo<PartnerListVO> getPartnerList(PartnerRequest partnerRequest, LoginUserInfo loginUserInfo, Boolean teamFlag);
/**
* 添加标签
* @param userInfo

View File

@@ -8,19 +8,14 @@ import com.cool.store.dao.*;
import com.cool.store.entity.*;
import com.cool.store.enums.*;
import com.cool.store.exception.ServiceException;
import com.cool.store.mapper.IntentAgreementMapper;
import com.cool.store.mapper.RegionMapper;
import com.cool.store.request.AddTagsRequest;
import com.cool.store.request.ChangeInvestmentRequest;
import com.cool.store.request.LineListRequest;
import com.cool.store.request.PublicLineListRequest;
import com.cool.store.request.*;
import com.cool.store.service.*;
import com.cool.store.utils.CoolDateUtils;
import com.cool.store.utils.StringUtil;
import com.cool.store.utils.poi.DateUtils;
import com.cool.store.vo.BaseInfoVO;
import com.cool.store.vo.LineInfoVO;
import com.cool.store.vo.LineListVO;
import com.cool.store.vo.PublicLineListVO;
import com.cool.store.vo.*;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.collections4.CollectionUtils;
@@ -59,6 +54,8 @@ public class LineServiceImpl implements LineService {
UserAuthMappingService userAuthMappingService;
@Resource
TransferLogService transferLogService;
@Resource
IntentAgreementMapper intentAgreementMapper;
@Override
public LineInfoVO getLineInfo(Long lineId) {
@@ -167,6 +164,67 @@ public class LineServiceImpl implements LineService {
return page;
}
@Override
public PageInfo<PartnerListVO> getPartnerList(PartnerRequest partnerRequest, LoginUserInfo loginUserInfo, Boolean teamFlag) {
List<Long> wantShopAreaIds = new ArrayList<>();
String userId = null;
if(!teamFlag){
userId = loginUserInfo.getUserId();
}
if (teamFlag && !sysRoleService.checkIsAdmin(loginUserInfo.getUserId())){
List<Long> list = userAuthMappingService.listWantShopAreaIdByUserId(loginUserInfo.getUserId());
if (CollectionUtils.isNotEmpty(list)){
wantShopAreaIds = list;
}else {
userId = loginUserInfo.getUserId();
}
}
String areaName = null;
if (partnerRequest.getWantShopAreaId() != null){
HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectById(partnerRequest.getWantShopAreaId());
areaName = hyOpenAreaInfoDO.getAreaName();
}
PageHelper.startPage(partnerRequest.getPageNum(), partnerRequest.getPageSize());
List<LineInfoDO> lineInfoDOS = lineInfoDAO.partnerList(partnerRequest,areaName, userId, wantShopAreaIds);
PageInfo page = new PageInfo(lineInfoDOS);
Map<Long, HyPartnerLabelDO> userPortraitMap = deskService.getUserPortraitMap(lineInfoDOS);
List<Long> wantShopAreaIdList = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getWantShopAreaId() != null).map(LineInfoDO::getWantShopAreaId).collect(Collectors.toList());
Map<Long, String> wantShopAreaMap = hyOpenAreaInfoDAO.selectNameMapByIds(wantShopAreaIdList);
List<Integer> lineSourceIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getLineSource() != null).map(LineInfoDO::getLineSource).collect(Collectors.toList());
Map<Integer, String> channelMapByIds = hyPartnerUserChannelDAO.getChannelMapByIds(lineSourceIds);
List<String> userIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getInvestmentManager() != null).map(LineInfoDO::getInvestmentManager).collect(Collectors.toList());
userIds.addAll(lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getDevelopmentManager() != null).map(LineInfoDO::getDevelopmentManager).collect(Collectors.toList()));
userIds.addAll(lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getUpdateUserId() != null).map(LineInfoDO::getUpdateUserId).collect(Collectors.toList()));
Map<String, String> userNameMap = enterpriseUserDAO.getUserNameMap(userIds);
List<Long> lineIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getId() != null).map(LineInfoDO::getId).collect(Collectors.toList());
List<SigningBaseInfoDO> signingBaseInfoDOS = intentAgreementMapper.selectByLineIds(lineIds);
Map<Long, Date> dateMap = signingBaseInfoDOS.stream().collect(Collectors.toMap(SigningBaseInfoDO::getId, SigningBaseInfoDO::getCreateTime));
List<PartnerListVO> result = new ArrayList<>();
lineInfoDOS.forEach(x->{
BaseInfoVO baseInfoVO = deskService.convertToBaseInfoVO(x, userPortraitMap, wantShopAreaMap);
PartnerListVO partnerListVO = new PartnerListVO(baseInfoVO);
Date date = dateMap.get(x.getId());
if (date != null){
partnerListVO.setJoinTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, date));
}
partnerListVO.setUpdateTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, x.getUpdateTime()));
partnerListVO.setLineSourceName(channelMapByIds.get(x.getLineSource()));
partnerListVO.setJoinStatus(x.getJoinStatus());
partnerListVO.setInvestmentManagerUserName(userNameMap.get(x.getInvestmentManager()));
partnerListVO.setUpdateUserName(userNameMap.get(x.getUpdateUserId()));
partnerListVO.setDevelopmentManagerUserName(userNameMap.get(x.getDevelopmentManager()));
partnerListVO.setWantShopNum(x.getWantShopNum());
result.add(partnerListVO);
});
page.setList(result);
return page;
}
@Override
public Boolean addTags(LoginUserInfo user, AddTagsRequest addTagsRequest) {
LineInfoDO lineInfo = lineInfoDAO.getLineInfo(addTagsRequest.getLineId());

View File

@@ -3,18 +3,12 @@ package com.cool.store.controller.webb;
import com.cool.store.context.CurrentUserHolder;
import com.cool.store.context.LoginUserInfo;
import com.cool.store.dto.TransferLogDTO;
import com.cool.store.request.AddTagsRequest;
import com.cool.store.request.ChangeInvestmentRequest;
import com.cool.store.request.LineListRequest;
import com.cool.store.request.PublicLineListRequest;
import com.cool.store.request.*;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.LinePayService;
import com.cool.store.service.LineService;
import com.cool.store.service.TransferLogService;
import com.cool.store.vo.LineInfoVO;
import com.cool.store.vo.LineListVO;
import com.cool.store.vo.LinePayVO;
import com.cool.store.vo.PublicLineListVO;
import com.cool.store.vo.*;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -77,6 +71,22 @@ public class LineInfoController {
return ResponseResult.success(lineService.getPublicLineList(publicLineListRequest,user));
}
@ApiOperation("我负责的加盟商")
@PostMapping("/getPartnerList")
public ResponseResult<PageInfo<PartnerListVO>> getPartnerList(@RequestBody PartnerRequest partnerRequest) {
LoginUserInfo user = CurrentUserHolder.getUser();
user.setUserId("055740241221153440");
return ResponseResult.success(lineService.getPartnerList(partnerRequest,user,Boolean.FALSE));
}
@ApiOperation("团队的加盟商")
@PostMapping("/getTeamPartnerList")
public ResponseResult<PageInfo<PartnerListVO>> getTeamPartnerList(@RequestBody PartnerRequest partnerRequest) {
LoginUserInfo user = CurrentUserHolder.getUser();
user.setUserId("055740241221153440");
return ResponseResult.success(lineService.getPartnerList(partnerRequest,user,Boolean.TRUE));
}
@PostMapping(path = "/addTags")
@ApiOperation("添加标签接口")
public ResponseResult<Boolean> addTags(@RequestBody AddTagsRequest addTagsRequest){