Merge remote-tracking branch 'origin/dev/feat/partner1.6_20231226' into dev/feat/partner1.6_20231226

This commit is contained in:
feng.li
2023-12-08 18:25:57 +08:00
16 changed files with 422 additions and 22 deletions

View File

@@ -1,5 +1,6 @@
package com.cool.store.dao;
import com.cool.store.dto.exhibition.ExhibitionLineBaseDTO;
import com.cool.store.dto.exhibition.ExhibitionLineDTO;
import com.cool.store.entity.HyPartnerExhibitionDO;
import com.cool.store.entity.HyPartnerExhibitionInterviewDO;
@@ -72,11 +73,18 @@ public class HyPartnerExhibitionDAO {
return hyPartnerExhibitionMapper.deleteByPrimaryKey(id);
}
public List<ExhibitionLineDTO> getExhibitionLine(String exhibitionCode){
if (exhibitionCode == null){
public List<ExhibitionLineDTO> getExhibitionLine(Integer exhibitionId){
if (exhibitionId == null){
return new ArrayList<>();
}
return hyPartnerExhibitionMapper.getExhibitionLine(exhibitionCode);
return hyPartnerExhibitionMapper.getExhibitionLine(exhibitionId);
}
public List<ExhibitionLineDTO> exhibitionLineList(Integer exhibitionId,Integer participationStatus, String partnerUserId,String userId){
if (exhibitionId == null){
return new ArrayList<>();
}
return hyPartnerExhibitionMapper.exhibitionLineList(exhibitionId,participationStatus, partnerUserId,userId);
}
public void rejectExhibitionInterview(String partnerLineId) {
@@ -113,4 +121,12 @@ public class HyPartnerExhibitionDAO {
}
return hyPartnerExhibitionMapper.queryPartnerExhibitionInterviewInfo(interviewPlanId, partnerLineId);
}
public List<ExhibitionLineBaseDTO> exhibitionLineBaseInfo(String partnerName, Integer exhibitionId) {
if (exhibitionId == null) {
return new ArrayList<>();
}
return hyPartnerExhibitionMapper.exhibitionLineBaseInfo(partnerName, exhibitionId);
}
}

View File

@@ -227,4 +227,19 @@ public class HyPartnerLineInfoDAO {
,partnerName,partnerMobile,investmentManagerId,userPortraitQueryType,intentAreaQueryType,lineStartTime,lineEndTime,userChannelQueryType,sortField,sortOrder,limit1,limit2);
}
public List<LineInterviewDTO> lineInterviewList(List<Integer> lineIds){
if (CollectionUtils.isEmpty(lineIds)){
return new ArrayList<>();
}
return hyPartnerLineInfoMapper.lineInterviewList(lineIds);
}
public List<LineInterviewDTO> lineInvestmentList(List<Integer> lineIds){
if (CollectionUtils.isEmpty(lineIds)){
return new ArrayList<>();
}
return hyPartnerLineInfoMapper.lineInvestmentList(lineIds);
}
}

View File

@@ -1,7 +1,9 @@
package com.cool.store.mapper;
import com.cool.store.dto.exhibition.ExhibitionLineBaseDTO;
import com.cool.store.dto.exhibition.ExhibitionLineDTO;
import com.cool.store.entity.HyPartnerExhibitionDO;
import io.swagger.models.auth.In;
import com.cool.store.entity.HyPartnerExhibitionInterviewDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -46,13 +48,15 @@ public interface HyPartnerExhibitionMapper {
/**
* 展会参与线索信息
* @param exhibitionCode
* @param exhibitionId
* @return
*/
List<ExhibitionLineDTO> getExhibitionLine(String exhibitionCode);
List<ExhibitionLineDTO> getExhibitionLine(Integer exhibitionId);
HyPartnerExhibitionDO querySelective(HyPartnerExhibitionDO record);
List<ExhibitionLineDTO> exhibitionLineList(Integer exhibitionId,Integer participationStatus, String partnerUserId,String userId );
/**
* 将线索参加的会销面试状态设为不通过
* @param partnerLineId
@@ -86,4 +90,9 @@ public interface HyPartnerExhibitionMapper {
* @return
*/
HyPartnerExhibitionInterviewDO queryPartnerExhibitionInterviewInfo(@Param("interviewPlanId") Long interviewPlanId, @Param("partnerLineId") Long partnerLineId);
List<ExhibitionLineBaseDTO> exhibitionLineBaseInfo(@Param("partnerName") String partnerName, @Param("id") Integer id);
}

View File

@@ -317,4 +317,18 @@ public interface HyPartnerLineInfoMapper {
@Param("limit2") Integer limit2
);
/**
* 查询线索面试管信息
* @param list
* @return
*/
List<LineInterviewDTO> lineInterviewList(@Param("list") List<Integer> list);
/**
* 查询线索招商经理信息
* @param list
* @return
*/
List<LineInterviewDTO> lineInvestmentList(@Param("list") List<Integer> list);
}

View File

@@ -236,8 +236,6 @@
<include refid="Base_Column_List" />
,
<include refid="Blob_Column_List" />
,
TIMESTAMPDIFF(second,now(),start_date) AS tst
from hy_exhibition
<where>
<if test="startDate != null and startDate!='' ">
@@ -253,9 +251,15 @@
and (creator = #{userId} or collaborators like CONCAT('%,', #{userId} ,',%'))
</if>
</where>
ORDER BY
if(tst >= 0, 0, 1),
if(tst <![CDATA[ < ]]> 0, abs(tst), tst ),id desc
<if test="closedType != null and closedType==0 ">
ORDER BY start_date,id desc
</if>
<if test="closedType != null and closedType==1 ">
ORDER BY start_date desc ,id desc
</if>
<if test="startDate != null and startDate!='' ">
ORDER BY closed_type asc,id desc
</if>
</select>
<select id="listByExhibitionGroupIds" resultType="com.cool.store.dto.exhibition.ExhibitionDTO">

View File

@@ -3,7 +3,7 @@
<mapper namespace="com.cool.store.mapper.HyPartnerExhibitionMapper">
<resultMap id="BaseResultMap" type="com.cool.store.entity.HyPartnerExhibitionDO">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="exhibition_id" jdbcType="INTEGER" property="exhibitionId" />
<result column="exhibition_id" jdbcType="BIGINT" property="exhibitionId" />
<result column="partner_line_id" jdbcType="BIGINT" property="partnerLineId" />
<result column="partner_id" jdbcType="VARCHAR" property="partnerId" />
<result column="want_shop_area" jdbcType="VARCHAR" property="wantShopArea" />
@@ -17,11 +17,12 @@
<result column="creator" jdbcType="VARCHAR" property="creator" />
<result column="updater" jdbcType="VARCHAR" property="updater" />
<result column="deleted" jdbcType="BIT" property="deleted" />
<result column="check_in_time" jdbcType="TIMESTAMP" property="checkInTime" />
</resultMap>
<sql id="Base_Column_List">
id, exhibition_id, partner_line_id, partner_id, want_shop_area, investment_manager_name,
expected_visitors_count, expected_information, participation_status, interview_plan_id,
create_time, update_time, creator, updater, deleted
create_time, update_time, creator, updater, deleted,check_in_time
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
select
@@ -36,7 +37,7 @@
from hy_partner_exhibition
<where>
<if test="exhibitionId != null">
and exhibition_id = #{exhibitionId,jdbcType=INTEGER}
and exhibition_id = #{exhibitionId,jdbcType=BIGINT}
</if>
<if test="partnerLineId != null">
and partner_line_id = #{partnerLineId,jdbcType=BIGINT}
@@ -80,6 +81,61 @@
</where>
</select>
<select id="exhibitionLineList" resultType="com.cool.store.dto.exhibition.ExhibitionLineDTO">
select
hpe.id as id ,
hpe.partner_id as partnerId,
hpe.partner_line_id as lineId,
hpe.participation_status as participationStatus,
hpe.investment_manager_name as customerManager,
hpe.expected_visitors_count as expectedVisitorsCount,
hpe.expected_information as expectedInformation,
hpui.username as partnerName,
hpui.mobile as mobile,
hoai.id as wantShopArea,
hoai.area_path as wantShopAreaName
from hy_partner_exhibition hpe
left join hy_partner_user_info hpui on hpe.partner_id = hpui.partner_id
left join hy_open_area_info hoai on hpe.want_shop_area = hoai.id
left join hy_partner_intent_info hpii on hpii.partner_line_id = hpe.partner_line_id
left join hy_partner_interview_plan hpip on hpip.id = hpe.interview_plan_id
<where>
<if test="exhibitionId != null">
and hpe.exhibition_id = #{exhibitionId,jdbcType=BIGINT}
</if>
<if test="participationStatus != null">
<if test="participationStatus==4">
and hpe.participation_status in (4,5,6)
</if>
<if test="participationStatus!=4">
and hpe.participation_status = #{participationStatus,jdbcType=BIGINT}
</if>
</if>
<if test="partnerUserId != null and partnerUserId!=''">
and hpui.user_id = #{partnerUserId,jdbcType=VARCHAR}
</if>
</where>
<if test="participationStatus == null">
ORDER BY CASE WHEN hpe.participation_status != 7 THEN 1 ELSE 2 END, hpe.create_time DESC
</if>
<if test="participationStatus != null and participationStatus==1">
ORDER BY hpe.check_in_time DESC
</if>
<if test="participationStatus != null and participationStatus==2">
ORDER BY hpii.create_time DESC
</if>
<if test="participationStatus != null and participationStatus==3">
ORDER BY CASE
WHEN hpip.interviewer = #{userId} THEN 0 ELSE 1 END,
hpip.actual_start_time DESC
</if>
<if test="participationStatus != null and participationStatus==4">
ORDER BY hpe.participation_status asc,
CASE WHEN hpip.interviewer = #{userId} THEN 0 ELSE 1 END,
hpip.actual_end_time DESC
</if>
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
delete from hy_partner_exhibition
where id = #{id,jdbcType=BIGINT}
@@ -149,7 +205,7 @@
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="exhibitionId != null">
#{exhibitionId,jdbcType=INTEGER},
#{exhibitionId,jdbcType=VARCHAR},
</if>
<if test="partnerLineId != null">
#{partnerLineId,jdbcType=BIGINT},
@@ -196,7 +252,7 @@
update hy_partner_exhibition
<set>
<if test="exhibitionId != null">
exhibition_id = #{exhibitionId,jdbcType=INTEGER},
exhibition_id = #{exhibitionId,jdbcType=BIGINT},
</if>
<if test="partnerLineId != null">
partner_line_id = #{partnerLineId,jdbcType=BIGINT},
@@ -246,7 +302,7 @@
and t.id = #{id,jdbcType=BIGINT}
</if>
<if test="null != exhibitionId">
and t.exhibition_id = #{exhibitionId,jdbcType=INTEGER}
and t.exhibition_id = #{exhibitionId,jdbcType=VARCHAR}
</if>
<if test="null != partnerLineId">
and t.partner_line_id = #{partnerLineId,jdbcType=BIGINT}
@@ -356,4 +412,24 @@
) t2 ON t1.exhibition_id = t2.id
</select>
<select id="exhibitionLineBaseInfo" resultType="com.cool.store.dto.exhibition.ExhibitionLineBaseDTO">
select
hpe.participation_status as participationStatus,
hpui.username as partnerName,
hpui.partner_id as partnerId,
hpui.mobile as mobile
from hy_partner_exhibition hpe
left join hy_partner_user_info hpui
on hpe.partner_id = hpui.partner_id
<where>
<if test="partnerName!=null and partnerName!=''">
hpui.username like concat("%", #{partnerName}, "%")
</if>
<if test="id!=null">
hpe.exhibition_id = #{id}
</if>
</where>
</select>
</mapper>

View File

@@ -1024,4 +1024,40 @@
order by a.create_time desc limit #{limit1},#{limit2}
</select>
<select id="lineInterviewList" resultType="com.cool.store.dto.partner.LineInterviewDTO">
select
a.partner_line_id as lineId,
a.interviewer as interviewer,
b.mobile as interviewerMobile,
b.name as interviewerName
from hy_partner_interview_plan a
left join enterprise_user b on a.interviewer = b.user_id
<where>
and a.deleted = 0
<if test="list!=null and list.size>0">
<foreach collection="list" item="lineId" open="and a.partner_line_id in (" close=")" separator=",">
#{lineId}
</foreach>
</if>
</where>
</select>
<select id="lineInvestmentList" resultType="com.cool.store.dto.partner.LineInterviewDTO">
select
a.id as lineId,
a.investment_manager as investmentManager,
b.mobile as investmentManagerMobile,
b.name as investmentManagerName
from hy_partner_line_info a
left join enterprise_user b on a.investment_manager = b.user_id
<where>
<if test="list!=null and list.size>0">
<foreach collection="list" item="lineId" open="and a.id in (" close=")" separator=",">
#{lineId}
</foreach>
</if>
</where>
</select>
</mapper>

View File

@@ -0,0 +1,23 @@
package com.cool.store.dto.exhibition;
import lombok.Data;
/**
* @Author suzhuhong
* @Date 2023/12/8 16:56
* @Version 1.0
*/
@Data
public class ExhibitionLineBaseDTO {
private String partnerName;
private String mobile;
private String partnerId;
private Integer participationStatus;
}

View File

@@ -16,6 +16,24 @@ public class ExhibitionLineDTO {
private String mobile;
private String exhibitionCode;
private String exhibitionId;
private Integer lineId;
private Integer wantShopArea;
private Integer wantShopAreaName;
private Integer participationStatus;
private String channelName;
private Integer id;
private Integer expectedVisitorsCount;
private String expectedInformation;
private String customerManager;
}

View File

@@ -0,0 +1,26 @@
package com.cool.store.dto.partner;
import lombok.Data;
/**
* @Author suzhuhong
* @Date 2023/12/7 16:28
* @Version 1.0
*/
@Data
public class LineInterviewDTO {
private Integer lineId;
private String investmentManager;
private String investmentManagerName;
private String investmentManagerMobile;
private String interviewer;
private String interviewerName;
private String interviewerMobile;
}

View File

@@ -56,6 +56,9 @@ public class HyPartnerExhibitionDO implements Serializable {
@ApiModelProperty("更新时间")
private Date updateTime;
@ApiModelProperty("签到时间")
private Date checkInTime;
@ApiModelProperty("创建人user_identerprise_user.user_id")
private String creator;

View File

@@ -0,0 +1,21 @@
package com.cool.store.vo.exhibition;
import lombok.Data;
/**
* @Author suzhuhong
* @Date 2023/12/8 16:54
* @Version 1.0
*/
@Data
public class ExhibitionLineBaseVO {
private String partnerName;
private String mobile;
private String partnerId;
private Integer participationStatus;
}

View File

@@ -0,0 +1,51 @@
package com.cool.store.vo.exhibition;
import lombok.Data;
/**
* @Author suzhuhong
* @Date 2023/12/6 17:13
* @Version 1.0
*/
@Data
public class ExhibitionLineVO {
private String partnerId;
private String partnerName;
private String mobile;
private String exhibitionId;
private Integer lineId;
private Integer wantShopArea;
private Integer wantShopAreaName;
private Integer participationStatus;
private String channelName;
private Integer id;
private Integer expectedVisitorsCount;
private String expectedInformation;
private String investmentManager;
private String investmentManagerName;
private String investmentManagerMobile;
private String customerManager;
private String interviewer;
private String interviewerName;
private String interviewerMobile;
}

View File

@@ -6,12 +6,11 @@ import com.cool.store.dto.exhibition.ExhibitionEnterInterviewDTO;
import com.cool.store.dto.exhibition.ExhibitionGroupDTO;
import com.cool.store.exception.ApiException;
import com.cool.store.vo.EnterInterviewVO;
import com.cool.store.vo.exhibition.ExhibitionDetailVO;
import com.cool.store.vo.exhibition.ExhibitionGroupDetailVO;
import com.cool.store.vo.exhibition.MyExhibitionGroupVO;
import com.cool.store.vo.exhibition.MyExhibitionVO;
import com.cool.store.vo.exhibition.*;
import com.github.pagehelper.PageInfo;
import java.util.List;
/**
* @author Fun Li 2023/11/30 14:42
* @version 1.0
@@ -81,7 +80,25 @@ public interface ExhibitionService {
*/
ExhibitionDetailVO getExhibitionDetail(Integer exhibitionId);
/**
* 编辑会销
* @param exhibitionDTO
* @param userInfo
* @return
*/
Boolean editExhibition(ExhibitionDTO exhibitionDTO,LoginUserInfo userInfo) ;
/**
* getExhibitionLineList
* @param exhibitionId
* @param participationStatus
* @param PartnerUserId
* @param pageSize
* @param pageNum
* @return
*/
PageInfo<ExhibitionLineVO> getExhibitionLineList(Integer exhibitionId,Integer participationStatus, String PartnerUserId ,Integer pageSize,Integer pageNum,String userId);
List<ExhibitionLineBaseVO> exhibitionLineBaseList(Integer exhibitionId,String partnerName);
}

View File

@@ -1,12 +1,15 @@
package com.cool.store.service.impl.exhibition;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.excel.util.DateUtils;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.constants.CommonConstants;
import com.cool.store.context.CurrentUserHolder;
import com.cool.store.context.LoginUserInfo;
import com.cool.store.dao.*;
import com.cool.store.dto.exhibition.*;
import com.cool.store.dto.partner.LineInterviewDTO;
import com.cool.store.entity.*;
import com.cool.store.enums.*;
import com.cool.store.exception.ApiException;
@@ -424,7 +427,7 @@ public class ExhibitionServiceImpl implements ExhibitionService {
hyExhibitionDAO.updateByPrimaryKeySelective(hyExhibitionDO);
//发送通知 给报名的人员
//查询报名了该会销的线索
List<ExhibitionLineDTO> exhibitionLine = hyPartnerExhibitionDAO.getExhibitionLine(hyExhibitionDO.getExhibitionCode());
List<ExhibitionLineDTO> exhibitionLine = hyPartnerExhibitionDAO.getExhibitionLine(hyExhibitionDO.getId());
exhibitionLine.forEach(x->{
try {
eventCenterHttpRequest.sendSmsVariable(x.getMobile(), SMSMsgEnum.EXHIBITION_INFO_UPDATE,hyExhibitionDO.getExhibitionName(),
@@ -436,6 +439,54 @@ public class ExhibitionServiceImpl implements ExhibitionService {
return Boolean.TRUE;
}
@Override
public PageInfo<ExhibitionLineVO> getExhibitionLineList(Integer exhibitionId, Integer participationStatus, String partnerUserId, Integer pageSize, Integer pageNum,String userId) {
if (exhibitionId==null){
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
}
PageHelper.startPage(pageNum, pageSize);
List<ExhibitionLineDTO> exhibitionLineDTOS = hyPartnerExhibitionDAO.exhibitionLineList(exhibitionId, participationStatus, partnerUserId,userId);
PageInfo pageInfo = new PageInfo<>(exhibitionLineDTOS);
if (CollectionUtils.isEmpty(exhibitionLineDTOS)){
return pageInfo;
}
List<Integer> lineIds = exhibitionLineDTOS.stream().map(ExhibitionLineDTO::getLineId).collect(Collectors.toList());
//面试官info
List<LineInterviewDTO> lineInterviewList = hyPartnerLineInfoDAO.lineInterviewList(lineIds);
Map<Integer, LineInterviewDTO> lineInterviewMap = lineInterviewList.stream().collect(Collectors.toMap(LineInterviewDTO::getLineId, date -> date));
//招商经理info
List<LineInterviewDTO> lineInvestmentList = hyPartnerLineInfoDAO.lineInvestmentList(lineIds);
Map<Integer, LineInterviewDTO> lineInvestmentMap = lineInvestmentList.stream().collect(Collectors.toMap(LineInterviewDTO::getLineId, date -> date));
List<ExhibitionLineVO> result = new ArrayList<>();
exhibitionLineDTOS.forEach(x->{
ExhibitionLineVO exhibitionLineVO = new ExhibitionLineVO();
LineInterviewDTO inter = lineInterviewMap.getOrDefault(x.getLineId(), new LineInterviewDTO());
LineInterviewDTO investment = lineInvestmentMap.getOrDefault(x.getLineId(), new LineInterviewDTO());
BeanUtil.copyProperties(x,exhibitionLineVO);
exhibitionLineVO.setInvestmentManager(investment.getInvestmentManager());
exhibitionLineVO.setInvestmentManagerName(investment.getInvestmentManagerName());
exhibitionLineVO.setInvestmentManagerMobile(investment.getInvestmentManagerMobile());
exhibitionLineVO.setInterviewer(inter.getInterviewer());
exhibitionLineVO.setInterviewerName(inter.getInterviewerName());
exhibitionLineVO.setInterviewerMobile(inter.getInterviewerMobile());
result.add(exhibitionLineVO);
});
pageInfo.setList(result);
return pageInfo;
}
@Override
public List<ExhibitionLineBaseVO> exhibitionLineBaseList(Integer exhibitionId, String partnerName) {
List<ExhibitionLineBaseDTO> exhibitionLineBaseDTOS = hyPartnerExhibitionDAO.exhibitionLineBaseInfo(partnerName, exhibitionId);
List<ExhibitionLineBaseVO> result = new ArrayList<>();
exhibitionLineBaseDTOS.forEach(x->{
ExhibitionLineBaseVO exhibitionLineBaseVO = new ExhibitionLineBaseVO();
BeanUtil.copyProperties(x,exhibitionLineBaseVO);
result.add(exhibitionLineBaseVO);
});
return result;
}
/**
* 协作人处理

View File

@@ -86,4 +86,24 @@ public class ExhibitionController {
return ResponseResult.success(exhibitionService.startExhibitionInterview(dto));
}
@GetMapping(value = "/getExhibitionLineList")
@ApiOperation("会销报名列表")
public ResponseResult getExhibitionLineList(@RequestParam(required = true,value = "exhibitionId") Integer exhibitionId,
@RequestParam(required = false,value = "participationStatus") Integer participationStatus,
@RequestParam(required = false,value = "partnerId") String partnerId,
@RequestParam(required = false,value = "PageSize" ,defaultValue = "10") Integer PageSize,
@RequestParam(required = false,value = "pageNum",defaultValue = "1") Integer pageNum) {
LoginUserInfo user = CurrentUserHolder.getUser();
return ResponseResult.success(exhibitionService.getExhibitionLineList(exhibitionId,participationStatus,partnerId,PageSize,pageNum,user.getUserId()));
}
@GetMapping(value = "/getExhibitionSignUpList")
@ApiOperation("会销报名列表")
public ResponseResult getExhibitionLineList(@RequestParam(required = true,value = "exhibitionId") Integer exhibitionId,
@RequestParam(required = false,value = "partnerName") String partnerName) {
return ResponseResult.success(exhibitionService.exhibitionLineBaseList(exhibitionId,partnerName));
}
}