Merge remote-tracking branch 'origin/cc_20230520_partner' into cc_20230520_partner

This commit is contained in:
pserimal
2023-06-16 16:10:26 +08:00
101 changed files with 2615 additions and 195 deletions

View File

@@ -114,4 +114,8 @@ public class CommonConstants {
public static final String FOLLOW = "follow";
public static final String PENDING = "pending";
public static final String ALLOCATION = "allocation";
public static final String TRANSFER = "transfer";
}

View File

@@ -8,8 +8,8 @@ package com.cool.store.enums;
*/
public enum DataSourceEnum {
SYNC(0, "同步"),
CREATE(1, "创建");
SYNC(0, "EC同步"),
CREATE(1, "小程序创建");
private Integer code;

View File

@@ -44,19 +44,22 @@ public enum ErrorCodeEnum {
USER_GROUP_NAME_EXIST(1021076, "用户分组名称已存在", null),
USER_GROUP_NOT_EXIST(1021077, "用户分组不存在", null),
GET_INFO_ERROR(1021078, "获取信息异常", null),
GET_PHONENUMBER_INFO_ERROR(1021079, "手机号归属地获取异常", null),
IDENTITY_CARD_PARSE_FAIL(1021080, "身份证解析失败", null),
PARAMS_REQUIRED(400002, "参数缺失!", null),
DATA_CONVERT_ERROR(400002, "日期转换异常!", null),
LINE_ID_IS_NOT_EXIST(500001, "线索ID不存在", null),
WORK_FLOW_STAGE_PASS_ERROR(500002, "通过错误,非对应阶段!", null),
PARTNER_USER_NOT_EXIST(500003, "加盟商用户信息不存在!", null),
ZONE_NOT_EXIST(500004, "战区不存在!", null),
PARTNER_BASEINFO_NOT_EXIST(500005, "基本信息不存在!", null),
INTENT_INFO_NOT_EXIST(500006, "意向信息不存在!", null),
INTERVIEW_ENTER_FAIL(1021101, "进入面试间失败", null),
DINGDING_USER_NOT_EXIST(1021102, "用户钉钉信息不存在,无法发起资质审核!", null),
INTERVIEW_NOT_EXIST(1021103, "面试信息不存在!", null),
SIGN_FAIL(600000, "验签失败", null),
GET_ACCESSTOKEN_ERROR(600001, "获取小程序TOKEN错误", null),

View File

@@ -0,0 +1,49 @@
package com.cool.store.enums;
/**
* @author zhangchenbiao
* @FileName: MessageTypeEnum
* @Description:
* @date 2023-06-15 10:14
*/
public enum MessageTypeEnum {
SCHEDULE_REMINDER("schedule_reminder", "日历提醒事件", "img_v2_0709ece3-77a8-49a4-820f-f245b2a4fdag")
;
private String code;
private String name;
private String imageMediaId;
MessageTypeEnum(String code, String name, String imageMediaId) {
this.code = code;
this.name = name;
this.imageMediaId = imageMediaId;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
public String getImageMediaId() {
return imageMediaId;
}
public static String getImageMediaId(String code){
for (MessageTypeEnum value : MessageTypeEnum.values()) {
if(value.code.equals(code)){
return value.imageMediaId;
}
}
return null;
}
}

View File

@@ -30,7 +30,7 @@ public enum RocketMqGroupEnum {
/**
* 事件消息监听
*/
FEI_SHU_EVENT_LISTENER("fei_shu_event_listener", new ArrayList<>(Arrays.asList(RocketMqTagEnum.USER_EVENT, RocketMqTagEnum.AUTH_SCOPE_CHANGE))),
FEI_SHU_EVENT_LISTENER("fei_shu_event_listener", new ArrayList<>(Arrays.asList(RocketMqTagEnum.USER_EVENT, RocketMqTagEnum.AUTH_SCOPE_CHANGE, RocketMqTagEnum.DEPT_EVENT))),
;

View File

@@ -13,6 +13,7 @@ public enum RocketMqTagEnum {
AUTH_SCOPE_CHANGE("auth_scope_change","授权范围变更"),
USER_EVENT("user_event","钉钉通讯录变更事件"),
DEPT_EVENT("dept_event","部门事件"),
;

View File

@@ -171,4 +171,8 @@ public class RedisUtil {
public void delete(String key) {
redisTemplate.delete(key);
}
public Long increment(String key) {
return redisTemplate.boundValueOps(key).increment(1L);
}
}

View File

@@ -1,13 +1,17 @@
package com.cool.store.dao;
import com.cool.store.entity.HyIntendDevZoneInfoDO;
import com.cool.store.entity.HyOpenAreaInfoDO;
import com.cool.store.mapper.HyIntendDevZoneInfoMapper;
import com.cool.store.mapper.HyOpenAreaInfoMapper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* @Author suzhuhong
@@ -37,14 +41,11 @@ public class HyIntendDevZoneInfoDAO {
}
public PageInfo<HyIntendDevZoneInfoDO> getHyIntendDevZoneInfoList(String type){
public List<HyIntendDevZoneInfoDO> getHyIntendDevZoneInfoList(String type){
if (StringUtils.isEmpty(type)){
return new PageInfo<>();
return new ArrayList<>();
}
return hyIntendDevZoneInfoMapper.getHyIntendDevZoneInfoList(type);
}
}

View File

@@ -25,14 +25,11 @@ public class HyOpenAreaInfoDAO {
@Resource
HyOpenAreaInfoMapper hyOpenAreaInfoMapper;
public PageInfo<HyOpenAreaInfoDO> queryKeyOpenArea(){
public List<HyOpenAreaInfoDO> queryKeyOpenArea(){
return hyOpenAreaInfoMapper.queryKeyOpenArea();
}
public List<HyOpenAreaInfoDO> queryByKeyword(String keyword,Boolean filterData){
if (StringUtils.isEmpty(keyword)){
return new ArrayList<>();
}
return hyOpenAreaInfoMapper.queryByKeyword(keyword,filterData);
}

View File

@@ -2,7 +2,7 @@ package com.cool.store.dao;
import com.cool.store.entity.HyPartnerBaseInfoDO;
import com.cool.store.mapper.HyPartnerBaseInfoMapper;
import org.apache.ibatis.annotations.Param;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
@@ -38,4 +38,11 @@ public class HyPartnerBaseInfoDAO {
return hyPartnerBaseInfoMapper.updateByPartnerId(userName,mobile,partnerId);
}
public HyPartnerBaseInfoDO getByPartnerIdAndLineId(String partnerId, Long partnerLineId){
if (StringUtils.isEmpty(partnerId) || partnerLineId == null){
return null;
}
return hyPartnerBaseInfoMapper.getByPartnerIdAndLineId(partnerId, partnerLineId);
}
}

View File

@@ -2,11 +2,14 @@ package com.cool.store.dao;
import com.cool.store.entity.HyPartnerClerkDO;
import com.cool.store.mapper.HyPartnerClerkMapper;
import org.apache.ibatis.annotations.Param;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
/**
* @Author suzhuhong
@@ -31,4 +34,25 @@ public class HyPartnerClerkDAO {
return hyPartnerClerkMapper.getHyPartnerClerkList(lineId);
}
public int batchInsert(List<HyPartnerClerkDO> hyPartnerClerkDOList){
if (CollectionUtils.isEmpty(hyPartnerClerkDOList)){
return -1;
}
return hyPartnerClerkMapper.batchInsert(hyPartnerClerkDOList);
}
public void deleteByPartnerIdAndLineId(String partnerId, Long partnerLineId){
if (StringUtils.isEmpty(partnerId) || Objects.isNull(partnerLineId)){
return;
}
hyPartnerClerkMapper.deleteByPartnerIdAndLineId(partnerId, partnerLineId);
}
public List<HyPartnerClerkDO> listByPartnerIdAndLineId(String partnerId, Long partnerLineId){
if (StringUtils.isEmpty(partnerId) || Objects.isNull(partnerLineId)){
return Collections.emptyList();
}
return hyPartnerClerkMapper.listByPartnerIdAndLineId(partnerId, partnerLineId);
}
}

View File

@@ -4,13 +4,11 @@ import com.cool.store.dto.partner.PartnerIntentApplyInfoDTO;
import com.cool.store.entity.HyPartnerIntentInfoDO;
import com.cool.store.mapper.HyPartnerIntentInfoMapper;
import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
/**
* @Author suzhuhong
@@ -48,12 +46,19 @@ public class HyPartnerIntentInfoDAO {
}
public PartnerIntentApplyInfoDTO selectByLineId(Long lineId){
public HyPartnerIntentInfoDO selectByLineId(Long lineId){
if (lineId==null){
return null;
}
return hyPartnerIntentInfoMapper.selectByLineId(lineId);
}
public HyPartnerIntentInfoDO getByPartnerIdAndLineId(String partnerId, Long partnerLineId){
if (StringUtils.isEmpty(partnerId) || Objects.isNull(partnerLineId)){
return null;
}
return hyPartnerIntentInfoMapper.getByPartnerIdAndLineId(partnerId, partnerLineId);
}
}

View File

@@ -1,19 +1,20 @@
package com.cool.store.dao;
import com.cool.store.dto.partner.PartnerBlackListDTO;
import com.cool.store.dto.partner.PartnerIntentApplyInfoDTO;
import com.cool.store.dto.partner.PartnerLineInfoAndBaseInfoDTO;
import com.cool.store.dto.partner.StageCountDTO;
import com.cool.store.dto.partner.*;
import com.cool.store.entity.HyPartnerLineInfoDO;
import com.cool.store.mapper.HyPartnerLineInfoMapper;
import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
@@ -113,8 +114,8 @@ public class HyPartnerLineInfoDAO {
}
public PageInfo<PartnerBlackListDTO> getBlackList( String keyWord, String intentArea , Integer acceptAdjustType){
return hyPartnerLineInfoMapper.getBlackList(keyWord,intentArea,acceptAdjustType);
public PageInfo<PartnerBlackListDTO> getBlackList( String userNameKeyword,String phoneKeyword, String intentArea , Integer acceptAdjustType){
return hyPartnerLineInfoMapper.getBlackList(userNameKeyword,phoneKeyword,intentArea,acceptAdjustType);
}
@@ -125,7 +126,37 @@ public class HyPartnerLineInfoDAO {
return hyPartnerLineInfoMapper.joinAndRemoveBlack(lineId,status,joinReason,removeReason);
}
public PageInfo<PublicSeaLineDTO> getPublicSeaLineList( String userNameKeyword, String phoneKeyword, String intentArea, Integer acceptAdjustType, Date updateStartTime, Date updateEndTime, List<String> userIdList){
return hyPartnerLineInfoMapper.getPublicSeaLineList(userNameKeyword,phoneKeyword,intentArea,acceptAdjustType,updateStartTime,updateEndTime,userIdList);
}
public List<HyPartnerLineInfoDO> getPartnerLastLine(List<String> partnerIdList){
if (CollectionUtils.isEmpty(partnerIdList)){
return new ArrayList<>();
}
return hyPartnerLineInfoMapper.getPartnerLastLine(partnerIdList);
}
public HyPartnerLineInfoDO getByPartnerId(String partnerId){
if (StringUtils.isEmpty(partnerId)){
return null;
}
return hyPartnerLineInfoMapper.getByPartnerId(partnerId);
}
public List<LineCountDTO> getFollowCountList( List<String> partnerIdList){
if (CollectionUtils.isEmpty(partnerIdList)){
return new ArrayList<>();
}
return hyPartnerLineInfoMapper.getFollowCountList(partnerIdList);
}
public List<HyPartnerLineInfoDO> getHyPartnerLineInfoListByIds( List<Long> lineIds){
if (CollectionUtils.isEmpty(lineIds)){
return new ArrayList<>();
}
return hyPartnerLineInfoMapper.getHyPartnerLineInfoListByIds(lineIds);
}
}

View File

@@ -68,5 +68,12 @@ public class HyPartnerUserInfoDAO {
return hyPartnerUserInfoMapper.insertSelective(record);
}
public int updateJoinKnowById(Integer isWritePartnerKnow, Long id){
if (id == null || isWritePartnerKnow == null){
return 0;
}
return hyPartnerUserInfoMapper.updateJoinKnowById(isWritePartnerKnow, id);
}
}

View File

@@ -0,0 +1,26 @@
package com.cool.store.mapper;
import com.cool.store.entity.DingdingUserDO;
/**
* @author zhangchenbiao
* @date 2023-06-15 10:03
*/
public interface DingdingUserMapper {
/**
*
* 默认插入方法,只会给有值的字段赋值
* 会对传进来的字段做判空处理如果字段为空则使用数据库默认字段或者null
* dateTime:2023-06-15 10:03
*/
int insertSelective(DingdingUserDO record);
/**
*
* 默认更新方法根据主键更新不会把null值更新到数据库避免覆盖之前有值的
* dateTime:2023-06-15 10:03
*/
int updateByPrimaryKeySelective(DingdingUserDO record);
DingdingUserDO selectDingDingUserByMobile(String mobile);
}

View File

@@ -4,6 +4,8 @@ import com.cool.store.entity.HyIntendDevZoneInfoDO;
import com.github.pagehelper.PageInfo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author zhangchenbiao
* @date 2023-05-29 03:50
@@ -36,5 +38,5 @@ public interface HyIntendDevZoneInfoMapper {
* @param type
* @return
*/
PageInfo<HyIntendDevZoneInfoDO> getHyIntendDevZoneInfoList(String type);
List<HyIntendDevZoneInfoDO> getHyIntendDevZoneInfoList(String type);
}

View File

@@ -32,7 +32,7 @@ public interface HyOpenAreaInfoMapper {
* 查询重点城市
* @return
*/
PageInfo<HyOpenAreaInfoDO> queryKeyOpenArea();
List<HyOpenAreaInfoDO> queryKeyOpenArea();
/**

View File

@@ -33,4 +33,7 @@ public interface HyPartnerBaseInfoMapper {
int updateByPartnerId(@Param("userName") String userName,
@Param("mobile") String mobile,
@Param("partnerId") String partnerId);
HyPartnerBaseInfoDO getByPartnerIdAndLineId(@Param("partnerId") String partnerId, @Param("partnerLineId") Long partnerLineId);
}

View File

@@ -27,4 +27,17 @@ public interface HyPartnerClerkMapper {
List<HyPartnerClerkDO> getHyPartnerClerkList(@Param("lineId") Long lineId);
int batchInsert(@Param("recordList") List<HyPartnerClerkDO> recordList);
void deleteByPartnerIdAndLineId(@Param("partnerId") String partnerId, @Param("partnerLineId") Long partnerLineId);
/**
* 查询店员信息
* @return
*/
List<HyPartnerClerkDO> listByPartnerIdAndLineId(@Param("partnerId") String partnerId,
@Param("partnerLineId") Long partnerLineId);
}

View File

@@ -46,5 +46,7 @@ public interface HyPartnerIntentInfoMapper {
* @param lineId
* @return
*/
PartnerIntentApplyInfoDTO selectByLineId(@Param("lineId") Long lineId);
HyPartnerIntentInfoDO selectByLineId(@Param("lineId") Long lineId);
HyPartnerIntentInfoDO getByPartnerIdAndLineId(@Param("partnerId") String partnerId, @Param("partnerLineId") Long partnerLineId);
}

View File

@@ -74,4 +74,8 @@ public interface HyPartnerInterviewMapper {
*/
int updatePassLetterInfo(@Param("passCode") String passCode, @Param("passPdfUrl") String passPdfUrl, @Param("passImageUrl") String passImageUrl, @Param("expiryDate") String expiryDate, @Param("interviewId") String interviewId);
/**
* 根据面试 id 查询面试信息
*/
HyPartnerInterviewDO selectByPrimaryKeySelective(String interviewId);
}

View File

@@ -1,14 +1,14 @@
package com.cool.store.mapper;
import com.cool.store.dto.partner.*;
import com.cool.store.dto.partner.PartnerBlackListDTO;
import com.cool.store.dto.partner.PartnerIntentApplyInfoDTO;
import com.cool.store.dto.partner.PartnerLineInfoAndBaseInfoDTO;
import com.cool.store.dto.partner.StageCountDTO;
import com.cool.store.entity.HyPartnerLineInfoDO;
import com.cool.store.entity.HyPartnerLineInfoDO;
import com.github.pagehelper.PageInfo;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
@@ -109,12 +109,14 @@ public interface HyPartnerLineInfoMapper {
/**
* 查询黑名单列表
* @param keyWord
* @param userNameKeyword
* @param phoneKeyword
* @param intentArea
* @param acceptAdjustType
* @return
*/
PageInfo<PartnerBlackListDTO> getBlackList(@Param("keyWord") String keyWord,
PageInfo<PartnerBlackListDTO> getBlackList(@Param("userNameKeyword") String userNameKeyword,
@Param("phoneKeyword") String phoneKeyword,
@Param("intentArea") String intentArea ,
@Param("acceptAdjustType") Integer acceptAdjustType);
@@ -132,4 +134,48 @@ public interface HyPartnerLineInfoMapper {
@Param("joinReason") String joinReason,
@Param("removeReason") String removeReason);
HyPartnerLineInfoDO getByPartnerId(@Param("partnerId") String partnerId);
/**
* 查询公海线索
* @param userNameKeyword
* @param phoneKeyword
* @param intentArea
* @param acceptAdjustType
* @param updateStartTime
* @param updateEndTime
* @param userIdList
* @return
*/
PageInfo<PublicSeaLineDTO> getPublicSeaLineList(@Param("userNameKeyword") String userNameKeyword,
@Param("phoneKeyword") String phoneKeyword,
@Param("intentArea") String intentArea,
@Param("acceptAdjustType") Integer acceptAdjustType,
@Param("updateStartTime") Date updateStartTime,
@Param("updateEndTime") Date updateEndTime,
@Param("userIdList") List<String> userIdList);
/**
* 查询对应的加盟商最近线索
* @param partnerIdList
* @return
*/
List<HyPartnerLineInfoDO> getPartnerLastLine(@Param("partnerIdList") List<String> partnerIdList);
/**
* 加盟商跟进次数
* @param partnerIdList
* @return
*/
List<LineCountDTO> getFollowCountList(@Param("partnerIdList") List<String> partnerIdList);
/**
* 根据线索ID查询线索数据
* @param lineIds
* @return
*/
List<HyPartnerLineInfoDO> getHyPartnerLineInfoListByIds(@Param("lineIds") List<Long> lineIds);
}

View File

@@ -40,4 +40,7 @@ public interface HyPartnerUserInfoMapper {
* @return
*/
List<HyPartnerUserInfoDO> selectByPartnerIds(@Param("partnerIdList") List<String> partnerIdList);
int updateJoinKnowById(@Param("isWritePartnerKnow")Integer isWritePartnerKnow, @Param("id")Long id);
}

View File

@@ -0,0 +1,309 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cool.store.mapper.DingdingUserMapper">
<resultMap id="BaseResultMap" type="com.cool.store.entity.DingdingUserDO">
<id column="id" jdbcType="INTEGER" property="id" />
<result column="userid" jdbcType="VARCHAR" property="userid" />
<result column="unionid" jdbcType="VARCHAR" property="unionid" />
<result column="remark" jdbcType="VARCHAR" property="remark" />
<result column="is_boss" jdbcType="TINYINT" property="isBoss" />
<result column="hired_date" jdbcType="VARCHAR" property="hiredDate" />
<result column="is_senior" jdbcType="TINYINT" property="isSenior" />
<result column="tel" jdbcType="VARCHAR" property="tel" />
<result column="work_place" jdbcType="VARCHAR" property="workPlace" />
<result column="email" jdbcType="VARCHAR" property="email" />
<result column="active" jdbcType="TINYINT" property="active" />
<result column="avatar" jdbcType="VARCHAR" property="avatar" />
<result column="is_admin" jdbcType="TINYINT" property="isAdmin" />
<result column="is_hide" jdbcType="TINYINT" property="isHide" />
<result column="job_number" jdbcType="VARCHAR" property="jobNumber" />
<result column="name" jdbcType="VARCHAR" property="name" />
<result column="state_code" jdbcType="VARCHAR" property="stateCode" />
<result column="real_authed" jdbcType="TINYINT" property="realAuthed" />
<result column="db_update_timestamp" jdbcType="TIMESTAMP" property="dbUpdateTimestamp" />
<result column="position" jdbcType="VARCHAR" property="position" />
<result column="mobile" jdbcType="VARCHAR" property="mobile" />
<result column="check_status" jdbcType="TINYINT" property="checkStatus" />
<result column="job_status" jdbcType="TINYINT" property="jobStatus" />
<result column="config_code_id" jdbcType="INTEGER" property="configCodeId" />
</resultMap>
<resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.cool.store.entity.DingdingUserDO">
<result column="is_leader_in_depts" jdbcType="LONGVARCHAR" property="isLeaderInDepts" />
<result column="department" jdbcType="LONGVARCHAR" property="department" />
<result column="extattr" jdbcType="LONGVARCHAR" property="extattr" />
<result column="roles" jdbcType="LONGVARCHAR" property="roles" />
</resultMap>
<sql id="Base_Column_List">
id, userid, unionid, remark, is_boss, hired_date, is_senior, tel, work_place, email,
active, avatar, is_admin, is_hide, job_number, name, state_code, real_authed, db_update_timestamp,
position, mobile, check_status, job_status, config_code_id
</sql>
<sql id="Blob_Column_List">
is_leader_in_depts, department, extattr, roles
</sql>
<insert id="insertSelective" keyColumn="id" keyProperty="record.id" useGeneratedKeys="true">
insert into dingding_user
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="userid != null">
userid,
</if>
<if test="unionid != null">
unionid,
</if>
<if test="remark != null">
remark,
</if>
<if test="isBoss != null">
is_boss,
</if>
<if test="hiredDate != null">
hired_date,
</if>
<if test="isSenior != null">
is_senior,
</if>
<if test="tel != null">
tel,
</if>
<if test="workPlace != null">
work_place,
</if>
<if test="email != null">
email,
</if>
<if test="active != null">
active,
</if>
<if test="avatar != null">
avatar,
</if>
<if test="isAdmin != null">
is_admin,
</if>
<if test="isHide != null">
is_hide,
</if>
<if test="jobNumber != null">
job_number,
</if>
<if test="name != null">
name,
</if>
<if test="stateCode != null">
state_code,
</if>
<if test="realAuthed != null">
real_authed,
</if>
<if test="dbUpdateTimestamp != null">
db_update_timestamp,
</if>
<if test="position != null">
position,
</if>
<if test="mobile != null">
mobile,
</if>
<if test="checkStatus != null">
check_status,
</if>
<if test="jobStatus != null">
job_status,
</if>
<if test="configCodeId != null">
config_code_id,
</if>
<if test="isLeaderInDepts != null">
is_leader_in_depts,
</if>
<if test="department != null">
department,
</if>
<if test="extattr != null">
extattr,
</if>
<if test="roles != null">
roles,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="userid != null">
#{userid},
</if>
<if test="unionid != null">
#{unionid},
</if>
<if test="remark != null">
#{remark},
</if>
<if test="isBoss != null">
#{isBoss},
</if>
<if test="hiredDate != null">
#{hiredDate},
</if>
<if test="isSenior != null">
#{isSenior},
</if>
<if test="tel != null">
#{tel},
</if>
<if test="workPlace != null">
#{workPlace},
</if>
<if test="email != null">
#{email},
</if>
<if test="active != null">
#{active},
</if>
<if test="avatar != null">
#{avatar},
</if>
<if test="isAdmin != null">
#{isAdmin},
</if>
<if test="isHide != null">
#{isHide},
</if>
<if test="jobNumber != null">
#{jobNumber},
</if>
<if test="name != null">
#{name},
</if>
<if test="stateCode != null">
#{stateCode},
</if>
<if test="realAuthed != null">
#{realAuthed},
</if>
<if test="dbUpdateTimestamp != null">
#{dbUpdateTimestamp},
</if>
<if test="position != null">
#{position},
</if>
<if test="mobile != null">
#{mobile},
</if>
<if test="checkStatus != null">
#{checkStatus},
</if>
<if test="jobStatus != null">
#{jobStatus},
</if>
<if test="configCodeId != null">
#{configCodeId},
</if>
<if test="isLeaderInDepts != null">
#{isLeaderInDepts},
</if>
<if test="department != null">
#{department},
</if>
<if test="extattr != null">
#{extattr},
</if>
<if test="roles != null">
#{roles},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective">
update dingding_user
<set>
<if test="userid != null">
userid = #{userid},
</if>
<if test="unionid != null">
unionid = #{unionid},
</if>
<if test="remark != null">
remark = #{remark},
</if>
<if test="isBoss != null">
is_boss = #{isBoss},
</if>
<if test="hiredDate != null">
hired_date = #{hiredDate},
</if>
<if test="isSenior != null">
is_senior = #{isSenior},
</if>
<if test="tel != null">
tel = #{tel},
</if>
<if test="workPlace != null">
work_place = #{workPlace},
</if>
<if test="email != null">
email = #{email},
</if>
<if test="active != null">
active = #{active},
</if>
<if test="avatar != null">
avatar = #{avatar},
</if>
<if test="isAdmin != null">
is_admin = #{isAdmin},
</if>
<if test="isHide != null">
is_hide = #{isHide},
</if>
<if test="jobNumber != null">
job_number = #{jobNumber},
</if>
<if test="name != null">
name = #{name},
</if>
<if test="stateCode != null">
state_code = #{stateCode},
</if>
<if test="realAuthed != null">
real_authed = #{realAuthed},
</if>
<if test="dbUpdateTimestamp != null">
db_update_timestamp = #{dbUpdateTimestamp},
</if>
<if test="position != null">
position = #{position},
</if>
<if test="mobile != null">
mobile = #{mobile},
</if>
<if test="checkStatus != null">
check_status = #{checkStatus},
</if>
<if test="jobStatus != null">
job_status = #{jobStatus},
</if>
<if test="configCodeId != null">
config_code_id = #{configCodeId},
</if>
<if test="isLeaderInDepts != null">
is_leader_in_depts = #{isLeaderInDepts},
</if>
<if test="department != null">
department = #{department},
</if>
<if test="extattr != null">
extattr = #{extattr},
</if>
<if test="roles != null">
roles = #{roles},
</if>
</set>
where id = #{id}
</update>
<select id="selectDingDingUserByMobile" resultType="com.cool.store.entity.DingdingUserDO">
select
<include refid="Base_Column_List"/>,
<include refid="Blob_Column_List"/>
from
dingding_user
where
mobile = #{mobile}
</select>
</mapper>

View File

@@ -84,7 +84,7 @@
partner_url = #{record.partnerUrl},
tencent_video_account = #{record.tencentVideoAccount},
tencent_video_key = #{record.tencentVideoKey},
update_user_id = #{record.updateUserId},
update_user_id = #{record.updateUserId}
where id = #{record.id}
</update>
</mapper>

View File

@@ -120,10 +120,12 @@
where id = #{record.id}
</update>
<select id="getHyIntendDevZoneInfoList" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"></include>
*
from hy_intend_dev_zone_info
where type = #{type}
and deleted = 0
</select>
</mapper>

View File

@@ -91,8 +91,8 @@
<if test="type!=null and type!=''">
and type = #{type}
</if>
<if test="deleteByMappingIds!=null and deleteByMappingIds.size>0">
<foreach collection="deleteByMappingIds" open="and mapping_id in (" close=")" separator="," item="mappingId">
<if test="mappingIds!=null and mappingIds.size>0">
<foreach collection="mappingIds" open="and mapping_id in (" close=")" separator="," item="mappingId">
#{mappingId}
</foreach>
</if>
@@ -112,7 +112,7 @@
<foreach collection="recordList" item="record" separator=",">
(#{record.mappingId},
#{record.openAreaMappingId},
#{record.type}
#{record.type})
</foreach>
</insert>
@@ -124,7 +124,7 @@
from hy_intend_developement_mapping a inner join hy_intend_dev_zone_info b on a.mapping_id = b.id
<where>
<if test="mappingIdList!=null and mappingIdList.size>0">
<foreach collection="mappingIdList" open="and a.open_area_mapping_id in (" close=")" separator="," item="mappingId">
<foreach collection="mappingIdList" open="and a.mapping_id in (" close=")" separator="," item="mappingId">
#{mappingId}
</foreach>
</if>

View File

@@ -185,10 +185,14 @@
<select id="queryByKeyword" resultMap="BaseResultMap">
select * from
hy_open_area_info
where area_path like concat('%',#{keyword},'%')
<if test="filterData!=null and filterData==true">
and province_city_flag = 1
</if>
<where>
<if test="keyword!=null and keyword!=''">
and area_path like concat('%',#{keyword},'%')
</if>
<if test="filterData!=null and filterData==true">
and province_city_flag = 1
</if>
</where>
</select>

View File

@@ -216,4 +216,12 @@
where partner_id = #{partnerId}
</set>
</update>
<select id="getByPartnerIdAndLineId" resultMap="BaseResultMap" >
select
<include refid="Base_Column_List"></include>
from hy_partner_base_info
where partner_id = #{partnerId} and partner_line_id = #{partnerLineId}
</select>
</mapper>

View File

@@ -8,7 +8,6 @@
<result column="partner_interview_id" jdbcType="BIGINT" property="partnerInterviewId" />
<result column="partnership" jdbcType="VARCHAR" property="partnership" />
<result column="want_sign_time" jdbcType="TIMESTAMP" property="wantSignTime" />
<result column="data_source" jdbcType="TINYINT" property="dataSource" />
<result column="partner_fee" jdbcType="VARCHAR" property="partnerFee" />
<result column="security_fund" jdbcType="VARCHAR" property="securityFund" />
<result column="technical_service_fee" jdbcType="VARCHAR" property="technicalServiceFee" />
@@ -26,7 +25,7 @@
</resultMap>
<sql id="Base_Column_List">
id, partner_id, partner_line_id, partner_interview_id, partnership, want_sign_time,
data_source, partner_fee, security_fund, technical_service_fee, intention_money,
partner_fee, security_fund, technical_service_fee, intention_money,
intention_signer_username, intention_signer_mobile, intention_edu, real_control_username,
real_control_idcard, signer_real_control_relation, signer_other_real_control_relation,
signer_real_control_relation_cert, create_time, update_time
@@ -49,9 +48,6 @@
<if test="record.wantSignTime != null">
want_sign_time,
</if>
<if test="record.dataSource != null">
data_source,
</if>
<if test="record.partnerFee != null">
partner_fee,
</if>
@@ -176,9 +172,6 @@
<if test="record.wantSignTime != null">
want_sign_time = #{record.wantSignTime},
</if>
<if test="record.dataSource != null">
data_source = #{record.dataSource},
</if>
<if test="record.partnerFee != null">
partner_fee = #{record.partnerFee},
</if>

View File

@@ -108,4 +108,37 @@
from hy_partner_clerk
where partner_line_id = #{lineId}
</select>
<insert id="batchInsert">
insert into
hy_partner_clerk
(
partner_line_id,
partner_id,
username,
relationship,
age,
choose_reason
)
values
<foreach collection="recordList" item="record" separator=",">
(#{record.partnerLineId},
#{record.partnerId},
#{record.username},
#{record.relationship},
#{record.age},
#{record.chooseReason})
</foreach>
</insert>
<delete id="deleteByPartnerIdAndLineId">
delete from hy_partner_clerk where partner_id = #{partnerId} and partner_line_id = #{partnerLineId}
</delete>
<select id="listByPartnerIdAndLineId" resultMap="BaseResultMap">
select <include refid="Base_Column_List"></include> from
hy_partner_clerk
where partner_id = #{partnerId} and partner_line_id = #{partnerLineId}
</select>
</mapper>

View File

@@ -279,7 +279,7 @@
order by b.create_time
</select>
<select id="selectByLineId" resultType="com.cool.store.dto.partner.PartnerIntentApplyInfoDTO">
<select id="selectByLineId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"></include>
from hy_partner_intent_info
@@ -288,4 +288,11 @@
</where>
</select>
<select id="getByPartnerIdAndLineId" resultMap="BaseResultMap" >
select
<include refid="Base_Column_List"></include>
from hy_partner_intent_info
where partner_id = #{partnerId} and partner_line_id = #{partnerLineId}
</select>
</mapper>

View File

@@ -14,6 +14,7 @@
<result column="record_time" jdbcType="TIMESTAMP" property="recordTime" />
<result column="summary" jdbcType="VARCHAR" property="summary" />
<result column="auth_code" jdbcType="VARCHAR" property="authCode" />
<result column="qualify_verify_id" jdbcType="VARCHAR" property="qualifyVerifyId" />
<result column="pass_file_url" jdbcType="VARCHAR" property="passFileUrl" />
<result column="expiry_date" jdbcType="TIMESTAMP" property="expiryDate" />
<result column="latest_log_message" jdbcType="VARCHAR" property="latestLogMessage" />
@@ -46,7 +47,7 @@
<sql id="Base_Column_List">
id, status, partner_line_id, interview_plan_id, partner_id, deadline, interviewer,
recorder, process_info, record_time, summary, auth_code, pass_file_url, expiry_date,
recorder, process_info, record_time, summary, auth_code, qualify_verify_id, pass_file_url, expiry_date,
latest_log_message, pass_reason, certify_file, create_time, update_time, approve_time,
partner_enter_time, interviewer_enter_time
</sql>
@@ -249,6 +250,9 @@
<if test="interviewerEnterTime != null">
interviewer_enter_time = #{interviewerEnterTime},
</if>
<if test="qualifyVerifyId != null">
qualify_verify_id = #{qualifyVerifyId},
</if>
</set>
where id = #{id}
</update>
@@ -330,6 +334,15 @@
WHERE partner_id = #{partner_id}
)
</select>
<select id="selectByPrimaryKeySelective" resultType="com.cool.store.entity.HyPartnerInterviewDO">
select
<include refid="Base_Column_List"/>
from
hy_partner_intent_info
where
id = #{interviewId}
</select>
<!-- 生成通过函 pdf 后修改 -->
<update id="updatePassLetterInfo">

View File

@@ -357,8 +357,11 @@
from hy_partner_line_info a inner join hy_partner_user_info b where a.partner_id = b.partner_id
where deleted = 0
and line_status = 3
<if test="keyWord!=null and keyWord !=''">
and (b.username like concat('%', #{keyWord}, '%') or b.mobile like concat('%', #{keyWord}, '%'))
<if test="userNameKeyword!=null and userNameKeyword !=''">
and b.username like concat('%', #{userNameKeyword}, '%')
</if>
<if test="phoneKeyword!=null and phoneKeyword !=''">
and b.mobile like concat('%', #{phoneKeyword}, '%')
</if>
<if test="intentArea!=null and intentArea!=''">
and b.want_shop_area = #{intentArea}
@@ -384,4 +387,79 @@
where id = #{lineId}
</update>
<select id="getByPartnerId" resultMap="BaseResultMap" >
select
<include refid="Base_Column_List"></include>
from hy_partner_line_info
where partner_id = #{partnerId}
</select>
<select id="getPublicSeaLineList" resultType="com.cool.store.dto.partner.PublicSeaLineDTO">
select
a.create_time as createTime,
b.partner_id as partner_id,
b.mobile as mobile,
b.username as userName,
b.want_shop_area as wantShopArea,
b.accept_adjust_type as acceptAdjustType
FROM hy_partner_line_info a inner JOIN hy_partner_user_info b on a.partner_id = b.partner_id
where a.line_status = 1
<if test="userNameKeyword!=null and userNameKeyword!=''">
and b.username like concat('%',#{userNameKeyword},'%')
</if>
<if test="phoneKeyword!=null and phoneKeyword!=''">
and b.mobile like concat('%',#{phoneKeyword},'%')
</if>
<if test="intentArea!=null and intentArea!=''">
and b.want_shop_area = #{intentArea}
</if>
<if test="acceptAdjustType!=null">
and b.accept_adjust_type = #{acceptAdjustType}
</if>
<if test="updateStartTime!=null and updateEndTime!=''">
and a.update_time BETWEEN #{updateStartTime} and #{updateEndTime}
</if>
<if test="userIdList!=null and userIdList.size>0">
<foreach collection="userIdList" item="userId" open="and a.investment_manager in (" close=")" separator=",">
#{userId}
</foreach>
</if>
</select>
<select id="getPartnerLastLine" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"></include>
FROM hy_partner_line_info h1
WHERE h1.create_time = (
SELECT MAX(h2.create_time)
FROM hy_partner_line_info h2
WHERE h1.partner_id = h2.partner_id
<if test="partnerIdList!=null and partnerIdList.size>0">
<foreach collection="partnerIdList" item="partnerId" open="and h1.partner_id in (" close=")" separator=",">
#{partnerId}
</foreach>
</if>
)
</select>
<select id="getFollowCountList" resultType="com.cool.store.dto.partner.LineCountDTO">
SELECT partner_id, COUNT(1) AS num_of_leads
FROM hy_partner_line_info
GROUP BY partner_id;
</select>
<select id="getHyPartnerLineInfoListByIds" resultMap="BaseResultMap">
SELECT <include refid="Base_Column_List"></include>
FROM hy_partner_line_info
<where>
<if test="lineIds!=null and lineIds.size>0">
<foreach collection="lineIds" item="lineId" open="and id in (" close=")" separator=",">
#{partnerId}
</foreach>
</if>
</where>
</select>
</mapper>

View File

@@ -147,4 +147,11 @@
</set>
where id = #{record.id}
</update>
<update id="updateJoinKnowById">
update hy_partner_user_info
set `is_write_partner_know`=#{isWritePartnerKnow,jdbcType=INTEGER}
where id=#{id,jdbcType=BIGINT}
</update>
</mapper>

View File

@@ -0,0 +1,24 @@
package com.cool.store.dto.dept;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author zhangchenbiao
* @FileName: DepartmentEventDTO
* @Description: 部门事件
* @date 2023-06-16 15:30
*/
@Data
public class DepartmentEventDTO {
@ApiModelProperty("部门id")
private String departmentId;
@ApiModelProperty("是否变更父级节点")
private Boolean isChangeParent;
@ApiModelProperty("事件类型")
private String eventType;
}

View File

@@ -0,0 +1,27 @@
package com.cool.store.dto.mdm;
/**
* @Author: young.yu
* @Date: 2023-06-15 13:35
* @Description:
*/
public class AccessTokenDTO {
private Long expiresIn;
private String accessToken;
public Long getExpiresIn() {
return expiresIn;
}
public void setExpiresIn(Long expiresIn) {
this.expiresIn = expiresIn;
}
public String getAccessToken() {
return accessToken;
}
public void setAccessToken(String accessToken) {
this.accessToken = accessToken;
}
}

View File

@@ -0,0 +1,33 @@
package com.cool.store.dto.message;
import com.cool.store.enums.MessageTypeEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author zhangchenbiao
* @FileName: SendCardMessageDTO
* @Description:发送卡片消息
* @date 2023-06-15 11:05
*/
@Data
public class SendCardMessageDTO {
@ApiModelProperty("消息接收人")
private List<String> userIds;
@ApiModelProperty("消息链接")
private String messageUrl;
@ApiModelProperty("消息标题")
private String title;
@ApiModelProperty("消息内容")
private String content;
@ApiModelProperty("消息类型, MessageTypeEnum")
private MessageTypeEnum messageType;
}

View File

@@ -0,0 +1,33 @@
package com.cool.store.dto.partner;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author zhangchenbiao
* @FileName: DescribePhoneNumberDTO
* @Description:手机号归属
* @date 2023-06-15 20:07
*/
@Data
public class DescribePhoneNumberDTO {
@ApiModelProperty("基础运营商")
public String basicCarrier;
@ApiModelProperty("实际运营商")
public String carrier;
@ApiModelProperty("是否携号转网")
public Boolean isNumberPortability;
@ApiModelProperty("号码归属号段")
public Long numberSegment;
@ApiModelProperty("号码归属城市")
public String city;
@ApiModelProperty("号码归属省份")
public String province;
}

View File

@@ -0,0 +1,17 @@
package com.cool.store.dto.partner;
import lombok.Data;
/**
* @Author suzhuhong
* @Date 2023/6/15 21:19
* @Version 1.0
*/
@Data
public class LineCountDTO {
private String partnerId;
private Integer followCount;
}

View File

@@ -0,0 +1,28 @@
package com.cool.store.dto.partner;
import lombok.Data;
import java.util.Date;
/**
* @Author suzhuhong
* @Date 2023/6/15 20:21
* @Version 1.0
*/
@Data
public class PublicSeaLineDTO {
private Date createTime;
private Long lineId;
private String partnerId;
private String userName;
private String mobile;
private String wantShopArea;
private String acceptAdjustType;
}

View File

@@ -0,0 +1,28 @@
package com.cool.store.dto.response;
/**
* @Author: young.yu
* @Date: 2023-06-14 16:39
* @Description:
*/
public class MDMResultDTO<T> extends ResultDTO<T>{
private Object bizKey;
private String traceId;
public Object getBizKey() {
return bizKey;
}
public void setBizKey(Object bizKey) {
this.bizKey = bizKey;
}
public String getTraceId() {
return traceId;
}
public void setTraceId(String traceId) {
this.traceId = traceId;
}
}

View File

@@ -0,0 +1,104 @@
package com.cool.store.entity;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Date;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
*
* @author zhangchenbiao
* @date 2023-06-15 10:03
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DingdingUserDO implements Serializable {
@ApiModelProperty("")
private Integer id;
@ApiModelProperty("用户id")
private String userid;
@ApiModelProperty("")
private String unionid;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("是不是老板")
private Integer isBoss;
@ApiModelProperty("入职时间【毫秒时间戳】")
private String hiredDate;
@ApiModelProperty("是否是高管")
private Integer isSenior;
@ApiModelProperty("分机号")
private String tel;
@ApiModelProperty("办公地点")
private String workPlace;
@ApiModelProperty("员工电子邮箱")
private String email;
@ApiModelProperty("是否已经激活true表示已激活false表示未激活")
private Integer active;
@ApiModelProperty("头像url")
private String avatar;
@ApiModelProperty("是否为企业的管理员true表示是false表示不是")
private Integer isAdmin;
@ApiModelProperty("是否号码隐藏true表示隐藏false表示不隐藏")
private Integer isHide;
@ApiModelProperty("员工工号")
private String jobNumber;
@ApiModelProperty("员工名字")
private String name;
@ApiModelProperty("国家地区码")
private String stateCode;
@ApiModelProperty("是否实名认证")
private Integer realAuthed;
@ApiModelProperty("数据库更新时间")
private Date dbUpdateTimestamp;
@ApiModelProperty("职位")
private String position;
@ApiModelProperty("手机号")
private String mobile;
@ApiModelProperty("审核状态[0、待审核1、已审核2、拒绝审核3、首次同步不处理]")
private Integer checkStatus;
@ApiModelProperty("工作状态[1、在职0、离职]")
private Integer jobStatus;
@ApiModelProperty("所在组织")
private Integer configCodeId;
@ApiModelProperty("json格式的【是不是部门老大多部门所以json】")
private String isLeaderInDepts;
@ApiModelProperty("所属部门id")
private String department;
@ApiModelProperty("扩展属性")
private String extattr;
@ApiModelProperty("用户角色信息")
private String roles;
}

View File

@@ -36,9 +36,6 @@ public class HyPartnerCertificationInfoDO implements Serializable {
@ApiModelProperty("意向签约时间")
private Date wantSignTime;
@ApiModelProperty("数据来源")
private Integer dataSource;
@ApiModelProperty("加盟费")
private String partnerFee;

View File

@@ -54,6 +54,9 @@ public class HyPartnerInterviewDO implements Serializable {
@ApiModelProperty("授权码")
private String authCode;
@ApiModelProperty("资质审核流程id")
private String qualifyVerifyId;
@ApiModelProperty("函文件url")
private String passFileUrl;

View File

@@ -0,0 +1,72 @@
package com.cool.store.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author: young.yu
* @Date: 2023-06-14 14:18
* @Description:
*/
@Data
@ApiModel(description = "发起加盟商资质审核请求")
public class CreateQualifyVerifyReq {
@ApiModelProperty(value = "线索id", required = true)
private String lineId;
@ApiModelProperty(value = "会议id", required = true)
private String interviewId;
@ApiModelProperty(value = "加盟商id", required = true)
private String partnerId;
@ApiModelProperty(value = "面试表现记录", required = true)
private String summary;
@ApiModelProperty(value = "合作关系: 1总部下属; 2小区代直营; 3县代直营; 4县代下属; 5区代直营; 6区代下属", required = true)
private Integer partnership;
@ApiModelProperty(value = "意向签约时间", required = true, example = "YYYY-MM-DD")
private String wantSignTime;
@ApiModelProperty(value = "加盟费", required = true)
private String partnerFee;
@ApiModelProperty(value = "保证金", required = true)
private String securityFund;
@ApiModelProperty(value = "技术服务费", required = true)
private String technicalServiceFee;
@ApiModelProperty(value = "意向金金额", required = true)
private String intentionMoney;
@ApiModelProperty(value = "意向签约人姓名", required = true)
private String intentionSignerUsername;
@ApiModelProperty(value = "意向签约人手机号", required = true)
private String intentionSignerMobile;
@ApiModelProperty(value = "意向签约人学历: 1.初中及以下 2.高中 3.大专 4.本科 5.硕士及以上", required = true)
private String intentionEdu;
@ApiModelProperty(value = "实控人姓名", required = true)
private String realControlUsername;
@ApiModelProperty(value = "实控人身份证", required = true)
private String realControlIdcard;
@ApiModelProperty(value = "实控人与签约人关系: 1.本人 2.配偶 3.二代直系亲属 4.雇佣 5.其他", required = true)
private String signerRealControlRelation;
@ApiModelProperty(value = "其他实控人与签约人关系")
private String signerOtherRealControlRelation;
@ApiModelProperty(value = "实控人与签约人关系证明(文件上传地址,多个以英文逗号隔开)")
private String signerRealControlRelationCert;
}

View File

@@ -17,8 +17,11 @@ import java.util.Date;
public class LineRequest extends PageInfoRequest{
@ApiModelProperty("关键字")
private String keyWord;
@ApiModelProperty("用户名关键字")
private String userNameKeyword;
@ApiModelProperty("手机号关键字")
private String phoneKeyword;
@ApiModelProperty("意向区域")
private String intentArea;
@@ -26,8 +29,11 @@ public class LineRequest extends PageInfoRequest{
@ApiModelProperty("调剂类型")
private Integer acceptAdjustType;
@ApiModelProperty("更新时间")
private Date updateTime;
@ApiModelProperty("更新开始时间")
private Date updateStartTime;
@ApiModelProperty("更新结束时间")
private Date updateEndTime;

View File

@@ -18,6 +18,12 @@ public class PartnerIntentInfoRequest {
@ApiModelProperty("")
private Long id;
@ApiModelProperty("线索表ID")
private Long partnerLineId;
@ApiModelProperty("加盟商C端用户表ID partnerId ")
private String partnerId;
@ApiModelProperty("常驻区域")
private String liveArea;

View File

@@ -0,0 +1,87 @@
package com.cool.store.request;
import io.swagger.annotations.ApiModelProperty;
/**
* @Author: young.yu
* @Date: 2023-06-14 15:06
* @Description:
*/
public class RpcCreateQualifyVerfyReq {
@ApiModelProperty(value = "意向签约时间", required = true)
private String intendedSignDate;
@ApiModelProperty(value = "请求来源", required = true)
private String fraSource;
@ApiModelProperty(value = "保证金(元)", required = true, example = "5000")
private int amtDeposit;
@ApiModelProperty(value = "授权码", required = true)
private String authCode;
@ApiModelProperty(value = "意向签约人", required = true)
private String intendedSigner;
@ApiModelProperty(value = "手机号", required = true)
private String intendedSignerTel;
@ApiModelProperty(value = "钉钉用户id", required = true)
private String dingUserId;
public String getIntendedSignDate() {
return intendedSignDate;
}
public void setIntendedSignDate(String intendedSignDate) {
this.intendedSignDate = intendedSignDate;
}
public String getFraSource() {
return fraSource;
}
public void setFraSource(String fraSource) {
this.fraSource = fraSource;
}
public int getAmtDeposit() {
return amtDeposit;
}
public void setAmtDeposit(int amtDeposit) {
this.amtDeposit = amtDeposit;
}
public String getAuthCode() {
return authCode;
}
public void setAuthCode(String authCode) {
this.authCode = authCode;
}
public String getIntendedSigner() {
return intendedSigner;
}
public void setIntendedSigner(String intendedSigner) {
this.intendedSigner = intendedSigner;
}
public String getIntendedSignerTel() {
return intendedSignerTel;
}
public void setIntendedSignerTel(String intendedSignerTel) {
this.intendedSignerTel = intendedSignerTel;
}
public String getDingUserId() {
return dingUserId;
}
public void setDingUserId(String dingUserId) {
this.dingUserId = dingUserId;
}
}

View File

@@ -0,0 +1,27 @@
package com.cool.store.request;
/**
* @Author: young.yu
* @Date: 2023-06-15 13:28
* @Description:
*/
public class RpcGetMdmTokenReq {
private String appKey;
private String appSecret;
public String getAppKey() {
return appKey;
}
public void setAppKey(String appKey) {
this.appKey = appKey;
}
public String getAppSecret() {
return appSecret;
}
public void setAppSecret(String appSecret) {
this.appSecret = appSecret;
}
}

View File

@@ -0,0 +1,18 @@
package com.cool.store.vo;
import lombok.Data;
/**
* @Author suzhuhong
* @Date 2023/6/15 14:31
* @Version 1.0
*/
@Data
public class EnterpriseUserSingleInfoVO {
private String userId;
private String userName;
private String mobile;
}

View File

@@ -30,7 +30,7 @@ public class PartnerIntentApplyInfoVO {
private String partnerId;
@ApiModelProperty("hy_partner_line_info.id")
private Long partnerLineId;
private Long lineId;
@ApiModelProperty("常驻区域")
private String liveArea;
@@ -50,4 +50,7 @@ public class PartnerIntentApplyInfoVO {
@ApiModelProperty("阶段提交时间")
private Date partnerSubmitTime;
@ApiModelProperty("阶段状态")
private String WorkflowStatus;
}

View File

@@ -22,6 +22,12 @@ public class PartnerIntentInfoVO {
@ApiModelProperty("hy_partner_user_info.partner_id")
private String partnerId;
@ApiModelProperty("加盟商姓名")
private String partnerUserName;
@ApiModelProperty("加盟商手机号")
private String partnerUserPhone;
@ApiModelProperty("hy_partner_line_info.id")
private Long partnerLineId;

View File

@@ -30,6 +30,9 @@ public class PartnerInterviewInfoVO {
@ApiModelProperty("会议结束时间")
private String endTime;
@ApiModelProperty("截止时间")
private Date deadline;
@ApiModelProperty("房间号")
private String roomId;
@@ -39,6 +42,9 @@ public class PartnerInterviewInfoVO {
@ApiModelProperty("加盟商用户名称")
private String partnerName;
@ApiModelProperty("加盟商手机号码")
private String partnerPhone;
@ApiModelProperty("面试官ID")
private String interviewerId;
@@ -50,4 +56,16 @@ public class PartnerInterviewInfoVO {
@ApiModelProperty("过程信息")
private String processInfo;
@ApiModelProperty("线索状态")
private Integer lineStatus;
@ApiModelProperty("线索ID")
private Long lineId;
@ApiModelProperty("合同号")
private String authCode;
@ApiModelProperty("审批发起时间")
private Date approveTime;
}

View File

@@ -55,8 +55,22 @@ public class PrivateSeaLineListVo {
@ApiModelProperty("0不接受调剂、1全国调剂、2省内调剂、3市内调剂")
private Integer acceptAdjustType;
@ApiModelProperty("更新时间")
private Date updateTime;
@ApiModelProperty("门店编码")
private String storeCode;
@ApiModelProperty("门店名称")
private String storeName;
@ApiModelProperty("线索状态")
private Integer lineStatus;
@ApiModelProperty("推荐加盟商ID")
private String recommendPartnerId;
@ApiModelProperty("推荐加盟商名称")
private String recommendPartnerName;
}

View File

@@ -59,5 +59,9 @@ public class PublicSeaLineListVo {
@ApiModelProperty("跟进次数")
private Integer followCount;
@ApiModelProperty("意向开店区域ID")
private String wantShopArea;
private String acceptAdjustType;
}

View File

@@ -0,0 +1,41 @@
package com.cool.store.vo.cuser;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author zhangchenbiao
* @FileName: IdentityCardInfoVO
* @Description:
* @date 2023-06-16 10:18
*/
@Data
public class IdentityCardInfoVO {
@ApiModelProperty("用户名")
private String username;
@ApiModelProperty("地址")
private String liveAddress;
@ApiModelProperty("出生日期")
private String birthdate;
@ApiModelProperty("性别")
private String sex;
@ApiModelProperty("身份证号")
private String idCard;
@ApiModelProperty("民族")
private String nation;
public IdentityCardInfoVO(String username, String liveAddress, String birthdate, String sex, String idCard, String nation) {
this.username = username;
this.liveAddress = liveAddress;
this.birthdate = birthdate;
this.sex = sex;
this.idCard = idCard;
this.nation = nation;
}
}

View File

@@ -130,6 +130,20 @@
<orderEntry type="library" name="Maven: com.squareup.okio:okio:1.17.2" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:ons20190214:1.0.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:endpoint-util:0.0.6" level="project" />
<orderEntry type="library" name="Maven: com.aliyun.oss:aliyun-sdk-oss:3.13.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.12" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.13" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.13" level="project" />
<orderEntry type="library" name="Maven: org.jdom:jdom2:2.0.6" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.jettison:jettison:1.1" level="project" />
<orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-core:4.5.10" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
<orderEntry type="library" name="Maven: io.opentracing:opentracing-api:0.33.0" level="project" />
<orderEntry type="library" name="Maven: io.opentracing:opentracing-util:0.33.0" level="project" />
<orderEntry type="library" name="Maven: io.opentracing:opentracing-noop:0.33.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-ram:3.1.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-kms:2.11.0" level="project" />
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:5.3.2" level="project" />
<orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:4.5" level="project" />
<orderEntry type="library" name="Maven: redis.clients:jedis:2.8.0" level="project" />
@@ -142,5 +156,19 @@
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.6" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.groovy:groovy:2.5.10" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:dytnsapi20200217:1.0.28" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:ocr20191230:1.0.26" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:openplatform20191219:5.0.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:oss-client:3.0.3" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:tea-xml:0.1.1" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:tea-rpc-util:0.1.2" level="project" />
<orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:tea-rpc:0.1.3" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:oss-util:1.0.2" level="project" />
<orderEntry type="library" name="Maven: org.dom4j:dom4j:2.1.3" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:tea-fileform:0.0.3" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:darabonba-array:0.1.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:darabonba-number:0.0.3" level="project" />
<orderEntry type="library" name="Maven: org.aspectj:aspectjrt:1.9.5" level="project" />
<orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.5" level="project" />
</component>
</module>

View File

@@ -68,6 +68,18 @@
<groupId>com.aliyun</groupId>
<artifactId>dytnsapi20200217</artifactId>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>ocr20191230</artifactId>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
</dependency>
</dependencies>
</project>

View File

@@ -4,6 +4,7 @@ package com.cool.store.handler;
import com.cool.store.exception.ApiException;
import com.cool.store.exception.ServiceException;
import com.cool.store.response.error.ErrorResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
@@ -15,23 +16,27 @@ import org.springframework.web.bind.annotation.RestControllerAdvice;
* @Description: 自定义异常处理
* @date 2023-06-13 19:42
*/
@Slf4j
@RestControllerAdvice
public class CustomExceptionHandler {
@ExceptionHandler(value = ServiceException.class)
public ResponseEntity<ErrorResponse> handleCustomException(ServiceException e) {
log.error(e.getMessage(), e);
ErrorResponse errorResponse = new ErrorResponse(e.getErrorCode(), e.getMessage());
return new ResponseEntity<>(errorResponse, HttpStatus.BAD_REQUEST);
}
@ExceptionHandler(value = ApiException.class)
public ResponseEntity<ErrorResponse> handleCustomException(ApiException e) {
log.error(e.getMessage(), e);
ErrorResponse errorResponse = new ErrorResponse(e.getErrorCode(), e.getMessage());
return new ResponseEntity<>(errorResponse, HttpStatus.BAD_REQUEST);
}
@ExceptionHandler(value = Exception.class)
public ResponseEntity<ErrorResponse> handleException(Exception e) {
log.error(e.getMessage(), e);
ErrorResponse errorResponse = new ErrorResponse(HttpStatus.INTERNAL_SERVER_ERROR.value(), e.getMessage());
return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR);
}

View File

@@ -7,6 +7,7 @@ import com.cool.store.dto.enterprise.AuthScopeDTO;
import com.cool.store.dto.enterprise.EnterpriseUserDTO;
import com.cool.store.dto.enterprise.SysDepartmentDTO;
import com.cool.store.dto.login.UserIdInfoDTO;
import com.cool.store.dto.message.SendCardMessageDTO;
import com.cool.store.dto.response.ResultDTO;
import com.cool.store.entity.EnterpriseUserDO;
import com.cool.store.enums.ErrorCodeEnum;
@@ -17,6 +18,7 @@ import com.cool.store.utils.RestTemplateUtil;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
@@ -311,4 +313,23 @@ public class ISVHttpRequest {
}
return null;
}
/**
* 发送飞书卡片消息
* @param param
*/
public void sendFeiShuCardMessage(SendCardMessageDTO param) throws ApiException{
if(CollectionUtils.isEmpty(param.getUserIds()) || StringUtils.isAnyBlank(param.getTitle(), param.getContent(), param.getMessageUrl()) || Objects.isNull(param.getMessageType())){
return;
}
String url = isvDomain + "/sendFeiShuCardMessage";
ResultDTO responseEntity = null;
try {
responseEntity = httpRestTemplateService.postForObject(url, param, ResultDTO.class);
log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity));
} catch (Exception e) {
log.info("调用isv出错{}", e);
throw new ApiException(e.getMessage());
}
}
}

View File

@@ -0,0 +1,66 @@
package com.cool.store.mq;
import com.aliyun.openservices.ons.api.Constants;
import com.aliyun.openservices.ons.api.Message;
import com.cool.store.constants.CommonConstants;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.MDC;
import org.springframework.stereotype.Component;
import java.util.Map;
import java.util.Objects;
/**
* 切面处理类,操作日志异常日志记录处理
* @author jiangjixiang
*/
@Aspect
@Component
@Slf4j
public class RocketMqLogAspect {
/**
* 设置操作异常切入点记录异常日志 扫描所有controller包下操作
*/
@Pointcut(value = "execution(public * com.cool.store.mq.consumer.listener..*.consume(..))")
public void rocketMqMdc() {
}
/**
* 正常返回通知,拦截用户操作日志,连接点正常执行完成后执行, 如果连接点抛出异常,则不会执行
*
* @param joinPoint 切入点
* @param keys 返回结果
*/
@Before(value = "rocketMqMdc()")
public void mqBeforeLog(JoinPoint joinPoint) {
try {
Object[] args = joinPoint.getArgs();
Message message = (Message)args[0];
String traceId = message.getMsgID() + Constants.TOPIC_PARTITION_SEPARATOR + message.getReconsumeTimes();
Map<String, String> context = MDC.getCopyOfContextMap();
if(Objects.isNull(context)){
MDC.put(CommonConstants.REQUEST_ID, traceId);
}
} catch (IllegalArgumentException e) {
log.info("MDC mqBeforeLog", e);
}
}
@AfterReturning(value = "rocketMqMdc()")
public void doAfterReturning(JoinPoint joinPoint){
try {
MDC.clear();
} catch (Exception e) {
log.info("MDC doAfterReturning", e);
}
}
}

View File

@@ -7,6 +7,7 @@ import com.aliyun.openservices.ons.api.Message;
import com.aliyun.openservices.ons.api.MessageListener;
import com.cool.store.constants.CommonConstants;
import com.cool.store.dto.buser.UserEventDTO;
import com.cool.store.dto.dept.DepartmentEventDTO;
import com.cool.store.enums.RocketMqTagEnum;
import com.cool.store.service.EnterpriseSyncService;
import com.cool.store.utils.RedisUtilPool;
@@ -45,13 +46,19 @@ public class FeiShuEventListener implements MessageListener {
RocketMqTagEnum tag = RocketMqTagEnum.getByTag(message.getTag());
switch (tag){
case USER_EVENT:
UserEventDTO reqBody = JSONObject.parseObject(text, UserEventDTO.class);
enterpriseSyncService.userUpdateEvent(reqBody);
UserEventDTO userBody = JSONObject.parseObject(text, UserEventDTO.class);
enterpriseSyncService.userUpdateEvent(userBody);
break;
case AUTH_SCOPE_CHANGE:
enterpriseSyncService.syncAll();
break;
case DEPT_EVENT:
DepartmentEventDTO deptBody = JSONObject.parseObject(text, DepartmentEventDTO.class);
enterpriseSyncService.deptUpdateEvent(deptBody);
break;
default:
break;
}
}catch (Exception e){
log.error("DingMsgDealListener consume dealAddressBookChange error",e);
return Action.ReconsumeLater;

View File

@@ -0,0 +1,29 @@
package com.cool.store.service;
import com.cool.store.dto.partner.DescribePhoneNumberDTO;
import com.cool.store.exception.ApiException;
import com.cool.store.vo.cuser.IdentityCardInfoVO;
/**
* @author zhangchenbiao
* @FileName: AliyunService
* @Description:阿里云相关服务
* @date 2023-06-15 20:04
*/
public interface AliyunService {
/**
* 获取手机号归属信息
* @param phoneNumber
* @return
*/
DescribePhoneNumberDTO getPhoneNumberAttribute(String phoneNumber);
/**
* 根据身份证正面获取信息
* @param faceImageUrl
* @return
*/
IdentityCardInfoVO getIdentityCardInfo(String faceImageUrl) throws ApiException;
}

View File

@@ -1,6 +1,7 @@
package com.cool.store.service;
import com.cool.store.dto.buser.UserEventDTO;
import com.cool.store.dto.dept.DepartmentEventDTO;
/**
* @author zhangchenbiao
@@ -17,4 +18,10 @@ public interface EnterpriseSyncService {
* @param param
*/
void userUpdateEvent(UserEventDTO param);
/**
* 部门事件
* @param param
*/
void deptUpdateEvent(DepartmentEventDTO param);
}

View File

@@ -1,6 +1,7 @@
package com.cool.store.service;
import com.cool.store.entity.EnterpriseUserDO;
import com.cool.store.request.EnterpriseUserRequest;
import com.cool.store.vo.EnterpriseUserSingleInfoVO;
import com.cool.store.vo.buser.EnterpriseUserPageVO;
import java.util.List;
@@ -16,4 +17,12 @@ public interface EnterpriseUserService {
EnterpriseUserDO getUserInfoByUserId(String userId);
/**
*
* @param userId
* @return
*/
List<EnterpriseUserSingleInfoVO> getInvestmentManagerList(String type,String userId,String keyword);
}

View File

@@ -0,0 +1,13 @@
package com.cool.store.service;
import com.cool.store.exception.ApiException;
import com.cool.store.request.CreateQualifyVerifyReq;
/**
* @Author: young.yu
* @Date: 2023-06-14 13:51
* @Description:
*/
public interface FlowService {
void createQualifyVerify(CreateQualifyVerifyReq request) throws ApiException;
}

View File

@@ -1,6 +1,8 @@
package com.cool.store.service;
import com.cool.store.request.AddTagsRequest;
import com.cool.store.request.PartnerBaseInfoRequest;
import com.cool.store.vo.PartnerBaseInfoVO;
/**
* @Author suzhuhong
@@ -16,4 +18,8 @@ public interface HyPartnerBaseInfoService {
* @return
*/
Boolean addTags(AddTagsRequest addTagsRequest);
Boolean submitPartnerBaseInfo(PartnerBaseInfoRequest request);
PartnerBaseInfoVO queryPartnerBaseInfo(String partnerId, Long lineId);
}

View File

@@ -1,5 +1,6 @@
package com.cool.store.service;
import com.cool.store.request.PartnerClerkInfoRequest;
import com.cool.store.vo.PartnerClerkVO;
import java.util.List;
@@ -19,6 +20,10 @@ public interface HyPartnerClerkService {
*/
List<PartnerClerkVO> getPartnerClerkList(Long lineId);
Boolean submitPartnerClerkInfo(PartnerClerkInfoRequest request);
List<PartnerClerkVO> queryPartnerClerkInfo(String partnerId, Long lineId);

View File

@@ -1,7 +1,9 @@
package com.cool.store.service;
import com.cool.store.request.BaseUserInfoRequest;
import com.cool.store.request.PartnerIntentInfoRequest;
import com.cool.store.vo.PartnerIntentApplyInfoVO;
import com.cool.store.vo.PartnerIntentInfoVO;
import com.github.pagehelper.PageInfo;
/**
@@ -27,7 +29,7 @@ public interface HyPartnerIntentInfoService {
* @param lineId
* @return
*/
PartnerIntentApplyInfoVO getPartnerIntentApplyInfo(Long lineId);
PartnerIntentInfoVO getPartnerIntentApplyDetail(Long lineId);
/**
* 员工端 修改加盟商意向信息
@@ -36,4 +38,8 @@ public interface HyPartnerIntentInfoService {
*/
Boolean updatePartnerIntentInfo(BaseUserInfoRequest baseUserInfoRequest);
Boolean submitPartnerIntentInfo(PartnerIntentInfoRequest partnerIntentInfoRequest);
PartnerIntentInfoVO queryPartnerIntentInfo(String partnerId, Long lineId);
}

View File

@@ -27,7 +27,7 @@ public interface HyPartnerInterviewPlanService {
* @param pageNumber
* @return
*/
PageInfo<PartnerInterviewInfoVO> getPartnerInterviewInfoList(String userId,Integer pageSize,Integer pageNumber);
PageInfo<PartnerInterviewInfoVO> getPartnerInterviewInfoList(String userId,String type,Integer pageSize,Integer pageNumber);
/**

View File

@@ -2,10 +2,7 @@ package com.cool.store.service;
import com.cool.store.request.CloseFollowRequest;
import com.cool.store.request.LineRequest;
import com.cool.store.vo.BlackListVO;
import com.cool.store.vo.PartnerLineInfoAndBaseInfoVO;
import com.cool.store.vo.PartnerLineInfoVO;
import com.cool.store.vo.StageCountVO;
import com.cool.store.vo.*;
import com.github.pagehelper.PageInfo;
import java.util.List;
@@ -99,5 +96,13 @@ public interface HyPartnerLineInfoService {
*/
Boolean closeOrPassFollow(String userId,CloseFollowRequest closeFollowRequest);
/**
* 公海线索
* @param userId
* @param lineRequest
* @return
*/
PageInfo<PublicSeaLineListVo> publicSeaLineList(String userId,LineRequest lineRequest);
}

View File

@@ -1,5 +1,12 @@
package com.cool.store.service;
import com.cool.store.entity.HyPartnerUserInfoDO;
public interface PartnerUserInfoService {
HyPartnerUserInfoDO selectByPartnerId(String partnerId);
Boolean queryJoinNotice(String partnerId);
Boolean completeJoinNotice(String partnerId);
}

View File

@@ -61,6 +61,12 @@ public interface ZoneService {
*/
List<ZoneCheckVO> checkZone(IntentAreaSettingRequest intentAreaSettingRequest);
/**
* 查询所有绑定战区的组织机构
* @return
*/
List<String> queryAllBingZoneRegionList(String type);
}

View File

@@ -26,6 +26,7 @@ public class AdvanceSettingServiceImpl implements AdvanceSettingService {
if (advancedSettingRequest.getId()!=null){
//修改
updateAdvanceSetting(userId,advancedSettingRequest);
return Boolean.TRUE;
}
HyAdvancedSettingDO hyAdvancedSettingDO = new HyAdvancedSettingDO();
hyAdvancedSettingDO.setCreateUserId(userId);
@@ -38,7 +39,7 @@ public class AdvanceSettingServiceImpl implements AdvanceSettingService {
private Boolean updateAdvanceSetting(String userId, AdvancedSettingRequest advancedSettingRequest) {
HyAdvancedSettingDO hyAdvancedSettingDO = new HyAdvancedSettingDO();
hyAdvancedSettingDO.setCreateUserId(userId);
hyAdvancedSettingDO.setUpdateUserId(userId);
hyAdvancedSettingDO.setId(advancedSettingRequest.getId());
hyAdvancedSettingDO.setPartnerUrl(advancedSettingRequest.getPartnerUrl());
hyAdvancedSettingDO.setTencentVideoAccount(advancedSettingRequest.getTencentVideoAccount());

View File

@@ -0,0 +1,118 @@
package com.cool.store.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.dytnsapi20200217.Client;
import com.aliyun.dytnsapi20200217.models.DescribePhoneNumberOperatorAttributeRequest;
import com.aliyun.dytnsapi20200217.models.DescribePhoneNumberOperatorAttributeResponse;
import com.aliyun.ocr20191230.models.RecognizeIdentityCardResponse;
import com.aliyun.ocr20191230.models.RecognizeIdentityCardResponseBody;
import com.aliyun.teaopenapi.models.Config;
import com.cool.store.dto.partner.DescribePhoneNumberDTO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.exception.ApiException;
import com.cool.store.exception.ServiceException;
import com.cool.store.service.AliyunService;
import com.cool.store.vo.cuser.IdentityCardInfoVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Optional;
/**
* @author zhangchenbiao
* @FileName: AliyunServiceImpl
* @Description:
* @date 2023-06-15 20:04
*/
@Slf4j
@Service
public class AliyunServiceImpl implements AliyunService {
@Override
public DescribePhoneNumberDTO getPhoneNumberAttribute(String phoneNumber) {
try {
Config config = new Config();
//todo zcb ak sk替换
config.accessKeyId = "LTAI5t9RaXvABZbHvoXjDFJ1";
config.accessKeySecret = "zhOK7WWo3yGoUWkOMaatty19k25CMd";
Client client = new Client(config);
DescribePhoneNumberOperatorAttributeRequest request = new DescribePhoneNumberOperatorAttributeRequest();
request.authCode = "Y81FVZepk6";
request.inputNumber = phoneNumber;
request.mask = "NORMAL";
DescribePhoneNumberOperatorAttributeResponse response = client.describePhoneNumberOperatorAttribute(request);
String code = response.body.code;
if (!com.aliyun.teautil.Common.equalString(code, "OK")) {
log.error("错误信息:" , response.body.message + "");
throw new ServiceException(ErrorCodeEnum.GET_PHONENUMBER_INFO_ERROR);
}
return JSONObject.parseObject(JSONObject.toJSONString(response.body.data), DescribePhoneNumberDTO.class);
} catch (Exception e) {
log.error("获取手机号异常:", e);
throw new ServiceException(ErrorCodeEnum.GET_PHONENUMBER_INFO_ERROR);
}
}
@Override
public IdentityCardInfoVO getIdentityCardInfo(String faceImageUrl) throws ApiException {
//todo zcb ak sk替换
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
.setAccessKeyId("LTAI5t9RaXvABZbHvoXjDFJ1")
.setAccessKeySecret("zhOK7WWo3yGoUWkOMaatty19k25CMd");
// 访问的域名
config.endpoint = "ocr.cn-shanghai.aliyuncs.com";
try {
com.aliyun.ocr20191230.Client client = new com.aliyun.ocr20191230.Client(config);
URL url = new URL(faceImageUrl);
InputStream inputStream = url.openConnection().getInputStream();
com.aliyun.ocr20191230.models.RecognizeIdentityCardAdvanceRequest recognizeIdentityCardAdvanceRequest = new com.aliyun.ocr20191230.models.RecognizeIdentityCardAdvanceRequest()
.setImageURLObject(inputStream)
.setSide("face");
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
RecognizeIdentityCardResponse idCardResponse = client.recognizeIdentityCardAdvance(recognizeIdentityCardAdvanceRequest, runtime);
log.info("身份证解析结果:{}", JSONObject.toJSONString(idCardResponse));
RecognizeIdentityCardResponseBody.RecognizeIdentityCardResponseBodyDataFrontResult frontResult = Optional.ofNullable(idCardResponse).map(o -> o.getBody()).map(o -> o.data).map(o -> o.frontResult).orElse(null);
String username = frontResult.name;
String liveAddress = frontResult.address;
String birthdate = frontResult.birthDate;
if(StringUtils.isNotBlank(birthdate)){
birthdate = convertDate(birthdate, "yyyyMMdd");
}
String sex = frontResult.gender;
String idCard = frontResult.IDNumber;
String nation = frontResult.nationality;
IdentityCardInfoVO result = new IdentityCardInfoVO(username, liveAddress, birthdate, sex, idCard, nation);
log.info("身份证解析:{}", JSONObject.toJSONString(result));
return result;
} catch (com.aliyun.tea.TeaException e) {
log.error("身份证解析报错TeaException{}", e);
throw new ApiException(e.getMessage());
} catch (MalformedURLException e) {
log.error("身份证解析报错MalformedURLException{}", e);
throw new ApiException(e.getMessage());
} catch (IOException e) {
log.error("身份证解析报错IOException{}", e);
throw new ApiException(e.getMessage());
} catch (Exception e) {
log.error("身份证解析报错Exception{}", e);
throw new ApiException(e.getMessage());
}
}
public static String convertDate(String date, String format) {
try {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
LocalDate localDate = LocalDate.parse(date, formatter);
return localDate.toString();
} catch (Exception e) {
throw new ServiceException(ErrorCodeEnum.DATA_CONVERT_ERROR);
}
}
}

View File

@@ -1,9 +1,11 @@
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.buser.UserEventDTO;
import com.cool.store.dto.calendar.DeleteCalendarEventDTO;
import com.cool.store.dto.dept.DepartmentEventDTO;
import com.cool.store.dto.enterprise.*;
import com.cool.store.entity.*;
import com.cool.store.enums.DataSourceEnum;
@@ -204,4 +206,19 @@ public class EnterpriseSyncServiceImpl implements EnterpriseSyncService {
return;
}
}
@Override
public void deptUpdateEvent(DepartmentEventDTO param) {
log.info("部门变更:{}", JSONObject.toJSONString(param));
switch (parseValue(param.getEventType())){
case DEPARTMENT_CREATED:
break;
case DEPARTMENT_UPDATED:
break;
case DEPARTMENT_DELETED:
break;
default:
return;
}
}
}

View File

@@ -1,11 +1,19 @@
package com.cool.store.service.impl;
import com.cool.store.constants.CommonConstants;
import com.cool.store.dao.*;
import com.cool.store.entity.*;
import com.cool.store.service.EnterpriseUserService;
import com.cool.store.service.ZoneService;
import com.cool.store.vo.EnterpriseUserSingleInfoVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
/**
* @author zhangchenbiao
@@ -22,10 +30,61 @@ public class EnterpriseUserServiceImpl implements EnterpriseUserService {
private EnterpriseUserDAO enterpriseUserDAO;
@Resource
private EnterpriseUserRoleDAO enterpriseUserRoleDAO;
@Resource
ZoneService zoneService;
@Resource
RegionDAO regionDAO;
@Resource
UserRegionMappingDAO userRegionMappingDAO;
@Override
public EnterpriseUserDO getUserInfoByUserId(String userId) {
return enterpriseUserDAO.getUserInfoById(userId);
}
@Override
public List<EnterpriseUserSingleInfoVO> getInvestmentManagerList(String type,String userId, String keyword) {
//查询当前人员信息
EnterpriseUserDO userInfo = enterpriseUserDAO.getUserInfoById(userId);
//当前登录人所在组织机构
List<String> regionIds = userRegionMappingDAO.getRegionIdsByUserId(userId);
//所有绑定了战区的组织机构
List<String> list = zoneService.queryAllBingZoneRegionList("intend");
HashSet<String> regionList = new HashSet<>();
regionIds.forEach(x->{
if (list.contains(x)){
regionList.add(x);
}
});
//分配
//如果是招商经理 只能分配给自己
//如果是负责人 分配给负责人所在战区人员
List<EnterpriseUserDO> enterpriseUserDOS = new ArrayList<>();
if (CommonConstants.ALLOCATION.equals(type)){
if (userInfo.getIsLeader()){
enterpriseUserDOS = enterpriseUserDAO.searchUserByRegionIdsAndKeyword(new ArrayList<>(regionList), keyword, Boolean.TRUE);
}
if (CollectionUtils.isNotEmpty(regionList)){
//只有招商经理本人
enterpriseUserDOS.add(userInfo);
}
}
//转交 所有的招商经理
if (CommonConstants.TRANSFER.equals(type)){
enterpriseUserDOS = enterpriseUserDAO.searchUserByRegionIdsAndKeyword(new ArrayList<>(regionList), keyword, Boolean.TRUE);
}
List<EnterpriseUserSingleInfoVO> enterpriseUserSingleInfoVOS = new ArrayList<>();
enterpriseUserDOS.forEach(x->{
EnterpriseUserSingleInfoVO enterpriseUserSingleInfoVO = new EnterpriseUserSingleInfoVO();
enterpriseUserSingleInfoVO.setUserId(x.getUserId());
enterpriseUserSingleInfoVO.setUserName(x.getName());
enterpriseUserSingleInfoVO.setMobile(x.getMobile());
enterpriseUserSingleInfoVOS.add(enterpriseUserSingleInfoVO);
});
return enterpriseUserSingleInfoVOS;
}
}

View File

@@ -0,0 +1,188 @@
package com.cool.store.service.impl;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.dao.EnterpriseUserDAO;
import com.cool.store.dto.login.UserIdInfoDTO;
import com.cool.store.dto.mdm.AccessTokenDTO;
import com.cool.store.dto.response.MDMResultDTO;
import com.cool.store.entity.*;
import com.cool.store.enums.DataSourceEnum;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.WorkflowStatusEnum;
import com.cool.store.exception.ApiException;
import com.cool.store.exception.ServiceException;
import com.cool.store.mapper.DingdingUserMapper;
import com.cool.store.mapper.HyPartnerCertificationInfoMapper;
import com.cool.store.mapper.HyPartnerInterviewMapper;
import com.cool.store.mapper.HyPartnerLineInfoMapper;
import com.cool.store.request.CreateQualifyVerifyReq;
import com.cool.store.request.RpcCreateQualifyVerfyReq;
import com.cool.store.request.RpcGetMdmTokenReq;
import com.cool.store.service.FlowService;
import com.cool.store.utils.RedisUtilPool;
import com.cool.store.utils.RestTemplateUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
/**
* @Author: young.yu
* @Date: 2023-06-14 14:22
* @Description:
*/
@Slf4j
@Service
public class FlowServiceImpl implements FlowService {
// @Value("${hs.mdm.baseUrl}")
private String mdmBaseUrl;
@Autowired
private RedisUtilPool redisUtilPool;
@Autowired
private HyPartnerLineInfoMapper hyPartnerLineInfoMapper;
@Autowired
private EnterpriseUserDAO enterpriseUserDAO;
@Autowired
private DingdingUserMapper dingdingUserMapper;
@Autowired
private HyPartnerInterviewMapper hyPartnerInterviewMapper;
@Autowired
private HyPartnerCertificationInfoMapper hyPartnerCertificationInfoMapper;
@Override
public void createQualifyVerify(CreateQualifyVerifyReq request) throws ApiException {
//1.发起加盟商资质审核
RpcCreateQualifyVerfyReq rpcRequest = new RpcCreateQualifyVerfyReq();
rpcRequest.setIntendedSignDate(request.getWantSignTime());
rpcRequest.setFraSource("HSAYPartner");
rpcRequest.setAmtDeposit(Integer.valueOf(request.getSecurityFund()));
//获取授权码
String authCode = null;
if (StringUtils.isBlank(request.getLineId())) {
//根据线索id获取线索信息
HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoMapper.selectByPrimaryKeySelective(Long.valueOf(request.getLineId()));
if (!Objects.isNull(hyPartnerLineInfoDO)) {
String investmentManagerId = hyPartnerLineInfoDO.getInvestmentManager();
EnterpriseUserDO enterpriseUserDO = enterpriseUserDAO.getUserInfoById(investmentManagerId);
if (!Objects.isNull(enterpriseUserDO)) {
String jobNumber = enterpriseUserDO.getJobnumber();
String mobile = enterpriseUserDO.getMobile();
DingdingUserDO dingdingUserDO = dingdingUserMapper.selectDingDingUserByMobile(mobile);
if (Objects.isNull(dingdingUserDO)) {
throw new ServiceException(ErrorCodeEnum.DINGDING_USER_NOT_EXIST);
}
rpcRequest.setDingUserId(dingdingUserDO.getUserid());
authCode = generateAuthCode(jobNumber);
rpcRequest.setAuthCode(authCode);
}
}
}
rpcRequest.setIntendedSigner(request.getIntentionSignerUsername());
rpcRequest.setIntendedSignerTel(request.getIntentionSignerMobile());
String qualifyVerifyId = createQualifyVerify(rpcRequest);
//2.更新审核信息
HyPartnerCertificationInfoDO partnerCertificationInfoDO = new HyPartnerCertificationInfoDO();
partnerCertificationInfoDO.setPartnerId(request.getPartnerId());
partnerCertificationInfoDO.setPartnerLineId(Long.valueOf(request.getLineId()));
partnerCertificationInfoDO.setPartnerInterviewId(Long.valueOf(request.getInterviewId()));
partnerCertificationInfoDO.setPartnership(String.valueOf(request.getPartnership()));
partnerCertificationInfoDO.setWantSignTime(DateUtil.parseDate(request.getWantSignTime()));
partnerCertificationInfoDO.setPartnerFee(request.getPartnerFee());
partnerCertificationInfoDO.setSecurityFund(request.getSecurityFund());
partnerCertificationInfoDO.setTechnicalServiceFee(request.getTechnicalServiceFee());
partnerCertificationInfoDO.setIntentionMoney(request.getIntentionMoney());
partnerCertificationInfoDO.setIntentionSignerUsername(request.getIntentionSignerUsername());
partnerCertificationInfoDO.setIntentionSignerMobile(request.getIntentionSignerMobile());
partnerCertificationInfoDO.setIntentionEdu(request.getIntentionEdu());
partnerCertificationInfoDO.setRealControlUsername(request.getRealControlUsername());
partnerCertificationInfoDO.setRealControlIdcard(request.getRealControlIdcard());
partnerCertificationInfoDO.setSignerRealControlRelation(request.getSignerRealControlRelation());
partnerCertificationInfoDO.setSignerOtherRealControlRelation(request.getSignerOtherRealControlRelation());
partnerCertificationInfoDO.setSignerRealControlRelationCert(request.getSignerRealControlRelationCert());
partnerCertificationInfoDO.setCreateTime(new Date());
partnerCertificationInfoDO.setUpdateTime(new Date());
hyPartnerCertificationInfoMapper.updateByPrimaryKeySelective(partnerCertificationInfoDO);
//3.更新面试信息
//根据面试id获取面试信息
HyPartnerInterviewDO hyPartnerInterviewDO = hyPartnerInterviewMapper.selectByPrimaryKeySelective(request.getInterviewId());
if (Objects.isNull(hyPartnerInterviewDO)) {
throw new ServiceException(ErrorCodeEnum.INTERVIEW_NOT_EXIST);
}
hyPartnerInterviewDO.setQualifyVerifyId(qualifyVerifyId);
hyPartnerInterviewDO.setUpdateTime(new Date());
//更新
hyPartnerInterviewDO.setStatus(Integer.valueOf(WorkflowStatusEnum.INTERVIEW_4.getCode()));
hyPartnerInterviewMapper.updateByPrimaryKeySelective(hyPartnerInterviewDO);
}
public String createQualifyVerify(RpcCreateQualifyVerfyReq rpcRequest) throws ApiException{
String url = mdmBaseUrl + "/api/openapi/runtime/form/startFraQualExam";
ResponseEntity<MDMResultDTO> responseEntity = null;
try {
RpcGetMdmTokenReq rpcGetMDMTokenReq = new RpcGetMdmTokenReq();
Map<String, String> headers = new HashMap<>();
headers.put("Authorization", getMdmAccessToken(rpcGetMDMTokenReq));
responseEntity = RestTemplateUtil.post(url, headers,rpcRequest, MDMResultDTO.class);
log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity));
if (Objects.nonNull(responseEntity.getBody()) && responseEntity.getBody().isSuccess()) {
return JSONObject.toJSONString(responseEntity.getBody().getData());
}
} catch (Exception e) {
log.info("调用MDM接口出错{}", e);
throw new ApiException(e.getMessage());
}
return null;
}
public String getMdmAccessToken(RpcGetMdmTokenReq rpcGetMDMTokenReq) throws ApiException {
String url = mdmBaseUrl + "/api/oauth2/accessToken";
ResponseEntity<MDMResultDTO> responseEntity = null;
try {
responseEntity = RestTemplateUtil.post(url,rpcGetMDMTokenReq, MDMResultDTO.class);
log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity));
if (Objects.nonNull(responseEntity.getBody()) && responseEntity.getBody().isSuccess()) {
AccessTokenDTO accessTokenDTO = JSONObject.parseObject(JSONObject.toJSONString(responseEntity.getBody().getData()), AccessTokenDTO.class);
if(accessTokenDTO==null || StringUtils.isBlank(accessTokenDTO.getAccessToken())){
throw new ServiceException("获取Mdm token失败!");
}
return accessTokenDTO.getAccessToken();
}
} catch (Exception e) {
log.info("调用MDM接口出错{}", e);
throw new ApiException(e.getMessage());
}
return null;
}
/**
* 生成授权码
*
* @param jobNumber
* @return
*/
public String generateAuthCode(String jobNumber) {
String prefix = jobNumber + DateUtil.format(new Date(), "yyyyMMdd");
return prefix + redisUtilPool.incrby(prefix, 1, 60 * 60 * 25);
}
}

View File

@@ -1,10 +1,16 @@
package com.cool.store.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.dao.HyPartnerBaseInfoDAO;
import com.cool.store.dao.HyPartnerLineInfoDAO;
import com.cool.store.entity.HyPartnerBaseInfoDO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.request.AddTagsRequest;
import com.cool.store.request.PartnerBaseInfoRequest;
import com.cool.store.service.HyPartnerBaseInfoService;
import com.cool.store.vo.PartnerBaseInfoVO;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
@@ -29,4 +35,49 @@ public class HyPartnerBaseInfoServiceImpl implements HyPartnerBaseInfoService {
hyPartnerBaseInfoDAO.updateByPrimaryKeySelective(hyPartnerBaseInfoDO);
return Boolean.TRUE;
}
/**
* //前提 未提交加盟申请
* //成功 意向区域变更成功 失败 您已进入意向申请流程,当前不可变更意向区域
* @param request
* @return
*/
@Override
public Boolean submitPartnerBaseInfo(PartnerBaseInfoRequest request) {
HyPartnerBaseInfoDO baseInfoDO = hyPartnerBaseInfoDAO.getByPartnerIdAndLineId(request.getPartnerId(), request.getPartnerLineId());
if(baseInfoDO == null){
baseInfoDO = new HyPartnerBaseInfoDO();
fillBaseInfo(baseInfoDO, request);
hyPartnerBaseInfoDAO.insertSelective(baseInfoDO);
}else {
fillBaseInfo(baseInfoDO, request);
hyPartnerBaseInfoDAO.updateByPrimaryKeySelective(baseInfoDO);
}
return true;
}
@Override
public PartnerBaseInfoVO queryPartnerBaseInfo(String partnerId, Long lineId) {
HyPartnerBaseInfoDO hyPartnerBaseInfoDO = hyPartnerBaseInfoDAO.getByPartnerIdAndLineId(partnerId, lineId);
if (hyPartnerBaseInfoDO == null){
throw new ServiceException(ErrorCodeEnum.PARTNER_BASEINFO_NOT_EXIST);
}
PartnerBaseInfoVO baseInfoVO = new PartnerBaseInfoVO();
BeanUtil.copyProperties(hyPartnerBaseInfoDO, baseInfoVO);
return baseInfoVO;
}
private void fillBaseInfo(HyPartnerBaseInfoDO baseInfoDO, PartnerBaseInfoRequest request) {
baseInfoDO.setPartnerId(request.getPartnerId());
baseInfoDO.setPartnerLineId(request.getPartnerLineId());
baseInfoDO.setMobile(request.getMobile());
baseInfoDO.setUsername(request.getUsername());
baseInfoDO.setSex(request.getSex());
baseInfoDO.setNation(request.getNation());
baseInfoDO.setBirthdate(request.getBirthdate());
baseInfoDO.setIdCard(request.getIdCard());
baseInfoDO.setIdCardPhotoFront(request.getIdCardPhotoFront());
baseInfoDO.setIdCardPhotoBlack(request.getIdCardPhotoBlack());
baseInfoDO.setLiveAddress(request.getLiveAddress());
}
}

View File

@@ -1,41 +0,0 @@
package com.cool.store.service.impl;
import com.cool.store.dao.HyPartnerClerkDAO;
import com.cool.store.entity.HyPartnerClerkDO;
import com.cool.store.service.HyPartnerClerkService;
import com.cool.store.vo.PartnerClerkVO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* @Author suzhuhong
* @Date 2023/6/15 11:05
* @Version 1.0
*/
@Service
public class HyPartnerClerkImpl implements HyPartnerClerkService {
@Resource
HyPartnerClerkDAO hyPartnerClerkDAO;
@Override
public List<PartnerClerkVO> getPartnerClerkList(Long lineId) {
List<HyPartnerClerkDO> hyPartnerClerkList = hyPartnerClerkDAO.getHyPartnerClerkList(lineId);
List<PartnerClerkVO> result= new ArrayList<>();
hyPartnerClerkList.forEach(x->{
PartnerClerkVO partnerClerkVO = new PartnerClerkVO();
partnerClerkVO.setPartnerId(x.getPartnerId());
partnerClerkVO.setPartnerLineId(x.getPartnerLineId());
partnerClerkVO.setAge(x.getAge());
partnerClerkVO.setChooseReason(x.getChooseReason());
partnerClerkVO.setUsername(x.getUsername());
partnerClerkVO.setRelationship(x.getRelationship());
result.add(partnerClerkVO);
});
return result;
}
}

View File

@@ -0,0 +1,82 @@
package com.cool.store.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.cool.store.dao.HyPartnerClerkDAO;
import com.cool.store.entity.HyPartnerClerkDO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.request.PartnerClerkInfoRequest;
import com.cool.store.service.HyPartnerClerkService;
import com.cool.store.utils.StringUtil;
import com.cool.store.vo.PartnerClerkVO;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @Author wxp
* @Date 2023/6/14 21:37
* @Version 1.0
*/
@Service
public class HyPartnerClerkServiceImpl implements HyPartnerClerkService {
@Resource
HyPartnerClerkDAO hyPartnerClerkDAO;
@Override
public List<PartnerClerkVO> getPartnerClerkList(Long lineId) {
List<HyPartnerClerkDO> hyPartnerClerkList = hyPartnerClerkDAO.getHyPartnerClerkList(lineId);
List<PartnerClerkVO> result= new ArrayList<>();
hyPartnerClerkList.forEach(x->{
PartnerClerkVO partnerClerkVO = new PartnerClerkVO();
partnerClerkVO.setPartnerId(x.getPartnerId());
partnerClerkVO.setPartnerLineId(x.getPartnerLineId());
partnerClerkVO.setAge(x.getAge());
partnerClerkVO.setChooseReason(x.getChooseReason());
partnerClerkVO.setUsername(x.getUsername());
partnerClerkVO.setRelationship(x.getRelationship());
result.add(partnerClerkVO);
});
return result;
}
@Override
public Boolean submitPartnerClerkInfo(PartnerClerkInfoRequest request) {
if (StringUtil.isBlank(request.getPartnerId()) || Objects.isNull(request.getPartnerLineId()) || CollectionUtils.isEmpty(request.getPartnerClerkRequestList())){
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
}
hyPartnerClerkDAO.deleteByPartnerIdAndLineId(request.getPartnerId(), request.getPartnerLineId());
List<HyPartnerClerkDO> clerkDOList = new ArrayList<>();
request.getPartnerClerkRequestList().stream().forEach(x->{
HyPartnerClerkDO clerkDO = new HyPartnerClerkDO();
clerkDO.setPartnerLineId(request.getPartnerLineId());
clerkDO.setPartnerId(request.getPartnerId());
clerkDO.setUsername(x.getUsername());
clerkDO.setRelationship(x.getRelationship());
clerkDO.setAge(x.getAge());
clerkDO.setChooseReason(x.getChooseReason());
clerkDOList.add(clerkDO);
});
hyPartnerClerkDAO.batchInsert(clerkDOList);
return true;
}
@Override
public List<PartnerClerkVO> queryPartnerClerkInfo(String partnerId, Long lineId) {
List<HyPartnerClerkDO> clerkDOList = hyPartnerClerkDAO.listByPartnerIdAndLineId(partnerId, lineId);
List<PartnerClerkVO> clerkVOList = ListUtils.emptyIfNull(clerkDOList).stream().map(clerkDO -> {
PartnerClerkVO clerkVO = new PartnerClerkVO();
BeanUtil.copyProperties(clerkDO, clerkVO);
return clerkVO;
}).collect(Collectors.toList());
return clerkVOList;
}
}

View File

@@ -1,27 +1,35 @@
package com.cool.store.service.impl;
import com.alibaba.fastjson.JSONObject;
import cn.hutool.core.bean.BeanUtil;
import com.cool.store.constants.CommonConstants;
import com.cool.store.dao.HyPartnerBaseInfoDAO;
import com.cool.store.dao.HyPartnerIntentInfoDAO;
import com.cool.store.dao.HyPartnerLineInfoDAO;
import com.cool.store.dao.HyPartnerUserInfoDAO;
import com.cool.store.dto.partner.PartnerIntentApplyInfoDTO;
import com.cool.store.entity.HyPartnerIntentInfoDO;
import com.cool.store.entity.HyPartnerUserInfoDO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.enums.WorkflowStatusEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.request.BaseUserInfoRequest;
import com.cool.store.request.PartnerIntentInfoRequest;
import com.cool.store.service.HyPartnerIntentInfoService;
import com.cool.store.utils.StringUtil;
import com.cool.store.vo.PartnerIntentApplyInfoVO;
import com.cool.store.vo.PartnerIntentInfoVO;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
@@ -62,28 +70,19 @@ public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoServic
List<HyPartnerUserInfoDO> hyPartnerUserInfoDOS = hyPartnerUserInfoDAO.selectByPartnerIds(partnerIds);
Map<String, HyPartnerUserInfoDO> infoDOMap = hyPartnerUserInfoDOS.stream().collect(Collectors.toMap(HyPartnerUserInfoDO::getPartnerId, data -> data));
List<PartnerIntentApplyInfoVO> result = new ArrayList<>();
String finalWorkflowStatus = workflowStatus;
list.stream().forEach(x->{
PartnerIntentApplyInfoVO pat = partnerIntentApplyInfoDTOToVo(x);
HyPartnerUserInfoDO infoDOMapOrDefault = infoDOMap.getOrDefault(x.getPartnerId(), new HyPartnerUserInfoDO());
pat.setPartnerUserName(infoDOMapOrDefault.getUsername());
pat.setPartnerUserPhone(infoDOMapOrDefault.getMobile());
pat.setWorkflowStatus(finalWorkflowStatus);
result.add(pat);
});
partnerIntentApplyInfo.setList(result);
return partnerIntentApplyInfo;
}
@Override
public PartnerIntentApplyInfoVO getPartnerIntentApplyInfo(Long lineId) {
PartnerIntentApplyInfoDTO partnerIntentApplyInfoDTO= hyPartnerIntentInfoDAO.selectByLineId(lineId);
PartnerIntentApplyInfoVO partnerIntentApplyInfoVO = partnerIntentApplyInfoDTOToVo(partnerIntentApplyInfoDTO);
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(partnerIntentApplyInfoDTO.getPartnerId());
partnerIntentApplyInfoVO.setPartnerUserName(hyPartnerUserInfoDO.getUsername());
partnerIntentApplyInfoVO.setPartnerUserPhone(hyPartnerUserInfoDO.getMobile());
//todo su 手机号归属地 意向申请区域名称
return partnerIntentApplyInfoVO;
}
@Override
public Boolean updatePartnerIntentInfo(BaseUserInfoRequest baseUserInfoRequest) {
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(String.valueOf(baseUserInfoRequest.getPartnerId()));
@@ -102,6 +101,68 @@ public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoServic
return Boolean.TRUE;
}
@Override
public PartnerIntentInfoVO getPartnerIntentApplyDetail(Long lineId) {
HyPartnerIntentInfoDO hyPartnerIntentInfoDO= hyPartnerIntentInfoDAO.selectByLineId(lineId);
PartnerIntentInfoVO partnerIntentInfoVO = convertPartnerIntentApplyInfoDOToVO(hyPartnerIntentInfoDO);
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(hyPartnerIntentInfoDO.getPartnerId());
partnerIntentInfoVO.setPartnerUserName(hyPartnerUserInfoDO.getUsername());
partnerIntentInfoVO.setPartnerUserPhone(hyPartnerUserInfoDO.getMobile());
//todo su 手机号归属地 意向申请区域名称
return partnerIntentInfoVO;
}
@Override
public Boolean submitPartnerIntentInfo(PartnerIntentInfoRequest request) {
if (StringUtil.isBlank(request.getPartnerId()) || Objects.isNull(request.getPartnerLineId())){
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
}
HyPartnerIntentInfoDO intentInfoDO = hyPartnerIntentInfoDAO.getByPartnerIdAndLineId(request.getPartnerId(), request.getPartnerLineId());
if(intentInfoDO == null){
intentInfoDO = new HyPartnerIntentInfoDO();
fillIntentInfo(intentInfoDO, request);
hyPartnerIntentInfoDAO.insertSelective(intentInfoDO);
}else {
fillIntentInfo(intentInfoDO, request);
hyPartnerIntentInfoDAO.updateByPrimaryKeySelective(intentInfoDO);
}
return true;
}
@Override
public PartnerIntentInfoVO queryPartnerIntentInfo(String partnerId, Long lineId) {
HyPartnerIntentInfoDO intentInfoDO = hyPartnerIntentInfoDAO.getByPartnerIdAndLineId(partnerId, lineId);
if (intentInfoDO == null){
throw new ServiceException(ErrorCodeEnum.INTENT_INFO_NOT_EXIST);
}
PartnerIntentInfoVO intentInfoVO = new PartnerIntentInfoVO();
BeanUtil.copyProperties(intentInfoDO, intentInfoVO);
return intentInfoVO;
}
private void fillIntentInfo(HyPartnerIntentInfoDO intentInfoDO, PartnerIntentInfoRequest request) {
intentInfoDO.setPartnerId(request.getPartnerId());
intentInfoDO.setPartnerLineId(request.getPartnerLineId());
intentInfoDO.setLiveArea(request.getLiveArea());
intentInfoDO.setWantShopArea(request.getWantShopArea());
intentInfoDO.setAcceptAdjustType(request.getAcceptAdjustType());
intentInfoDO.setIsHaveWantShop(request.getIsHaveWantShop());
intentInfoDO.setWantShopInfo(request.getWantShopInfo());
intentInfoDO.setMaxBudget(request.getMaxBudget());
intentInfoDO.setMoneySource(request.getMoneySource());
intentInfoDO.setMoneyProve(String.join(",", request.getMoneyProve()));
intentInfoDO.setEducation(request.getEducation());
intentInfoDO.setWorkYear(request.getWorkYear());
intentInfoDO.setIsHaveWorkExp(request.getIsHaveWorkExp());
intentInfoDO.setWorkExp(request.getWorkExp());
intentInfoDO.setIsConsumer(request.getIsConsumer());
intentInfoDO.setOtherBand(request.getOtherBand());
intentInfoDO.setBrandStrength(request.getBrandStrength());
intentInfoDO.setNeedImprove(request.getNeedImprove());
intentInfoDO.setStrength(request.getStrength());
intentInfoDO.setWeakness(request.getWeakness());
}
/**
* partnerIntentApplyInfoDTOToVo
* @param partnerIntentApplyInfoDTO
@@ -111,7 +172,7 @@ public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoServic
PartnerIntentApplyInfoVO partnerIntentApplyInfoVO = new PartnerIntentApplyInfoVO();
partnerIntentApplyInfoVO.setId(partnerIntentApplyInfoDTO.getId());
partnerIntentApplyInfoVO.setPartnerId(partnerIntentApplyInfoDTO.getPartnerId());
partnerIntentApplyInfoVO.setPartnerLineId(partnerIntentApplyInfoDTO.getPartnerLineId());
partnerIntentApplyInfoVO.setLineId(partnerIntentApplyInfoDTO.getPartnerLineId());
partnerIntentApplyInfoVO.setPartnerSubmitTime(partnerIntentApplyInfoDTO.getPartnerSubmitTime());
partnerIntentApplyInfoVO.setAcceptAdjustType(partnerIntentApplyInfoDTO.getAcceptAdjustType());
partnerIntentApplyInfoVO.setLiveArea(partnerIntentApplyInfoDTO.getLiveArea());
@@ -121,4 +182,37 @@ public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoServic
}
/**
*
* @param hyPartnerIntentInfoDO
* @return
*/
private PartnerIntentInfoVO convertPartnerIntentApplyInfoDOToVO(HyPartnerIntentInfoDO hyPartnerIntentInfoDO){
PartnerIntentInfoVO partnerIntentInfoVO = new PartnerIntentInfoVO();
partnerIntentInfoVO.setId(hyPartnerIntentInfoDO.getId());
partnerIntentInfoVO.setPartnerId(hyPartnerIntentInfoDO.getPartnerId());
partnerIntentInfoVO.setPartnerLineId(hyPartnerIntentInfoDO.getPartnerLineId());
partnerIntentInfoVO.setAcceptAdjustType(hyPartnerIntentInfoDO.getAcceptAdjustType());
partnerIntentInfoVO.setLiveArea(hyPartnerIntentInfoDO.getLiveArea());
partnerIntentInfoVO.setWantShopArea(hyPartnerIntentInfoDO.getWantShopArea());
partnerIntentInfoVO.setEducation(hyPartnerIntentInfoDO.getEducation());
partnerIntentInfoVO.setMaxBudget(hyPartnerIntentInfoDO.getMaxBudget());
partnerIntentInfoVO.setBrandStrength(hyPartnerIntentInfoDO.getBrandStrength());
partnerIntentInfoVO.setIsConsumer(hyPartnerIntentInfoDO.getIsConsumer());
partnerIntentInfoVO.setIsHaveWantShop(hyPartnerIntentInfoDO.getIsHaveWantShop());
partnerIntentInfoVO.setIsHaveWorkExp(hyPartnerIntentInfoDO.getIsHaveWorkExp());
partnerIntentInfoVO.setMoneyProve(StringUtil.isEmpty(hyPartnerIntentInfoDO.getMoneyProve())?
Lists.newArrayList(): JSONObject.parseArray(hyPartnerIntentInfoDO.getMoneyProve(),String.class));
partnerIntentInfoVO.setMoneySource(hyPartnerIntentInfoDO.getMoneySource());
partnerIntentInfoVO.setWorkYear(hyPartnerIntentInfoDO.getWorkYear());
partnerIntentInfoVO.setWeakness(hyPartnerIntentInfoDO.getWeakness());
partnerIntentInfoVO.setCreateTime(hyPartnerIntentInfoDO.getCreateTime());
partnerIntentInfoVO.setOtherBand(hyPartnerIntentInfoDO.getOtherBand());
partnerIntentInfoVO.setStrength(hyPartnerIntentInfoDO.getStrength());
partnerIntentInfoVO.setNeedImprove(hyPartnerIntentInfoDO.getNeedImprove());
return partnerIntentInfoVO;
}
}

View File

@@ -3,9 +3,11 @@ package com.cool.store.service.impl;
import cn.hutool.core.date.DateUtil;
import com.cool.store.constants.CommonConstants;
import com.cool.store.dao.HyPartnerInterviewPlanDAO;
import com.cool.store.dao.HyPartnerLineInfoDAO;
import com.cool.store.dao.HyPartnerUserInfoDAO;
import com.cool.store.dto.partner.PartnerInterviewInfoDTO;
import com.cool.store.entity.HyPartnerInterviewPlanDO;
import com.cool.store.entity.HyPartnerLineInfoDO;
import com.cool.store.entity.HyPartnerUserInfoDO;
import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.enums.WorkflowStatusEnum;
@@ -39,6 +41,8 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
@Resource
HyPartnerUserInfoDAO hyPartnerUserInfoDAO;
@Resource
HyPartnerLineInfoDAO hyPartnerLineInfoDAO;
@Override
public List<InterviewDetailInfoVO> getInterviewPlanList(String userId) {
@@ -63,17 +67,34 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
}
@Override
public PageInfo<PartnerInterviewInfoVO> getPartnerInterviewInfoList(String userId ,Integer pageSize,Integer pageNumber) {
public PageInfo<PartnerInterviewInfoVO> getPartnerInterviewInfoList(String userId ,String type,Integer pageSize,Integer pageNumber) {
String workflowStatus = "";
if (CommonConstants.PENDING.equals(type)) {
workflowStatus = WorkflowStatusEnum.RESERVATION_1.getCode();
}
if (CommonConstants.FOLLOW.equals(type)) {
workflowStatus = WorkflowStatusEnum.RESERVATION_0.getCode();
}
PageHelper.startPage(pageNumber,pageSize);
//查询预约面试列表
PageInfo partnerInterviewInfoList = hyPartnerInterviewPlanDAO.getPartnerInterviewInfoList(userId, WorkflowStageEnum.RESERVATION.getCode(), WorkflowStatusEnum.RESERVATION_0.getCode());
PageInfo partnerInterviewInfoList = hyPartnerInterviewPlanDAO.getPartnerInterviewInfoList(userId, WorkflowStageEnum.RESERVATION.getCode(), workflowStatus);
List<PartnerInterviewInfoDTO> list = partnerInterviewInfoList.getList();
if (CollectionUtils.isEmpty(list)){
return partnerInterviewInfoList;
}
List<PartnerInterviewInfoVO> result = new ArrayList<>();
List<String> partnerIds = list.stream().map(PartnerInterviewInfoDTO::getPartnerId).collect(Collectors.toList());
List<HyPartnerUserInfoDO> hyPartnerUserInfoDOS = hyPartnerUserInfoDAO.selectByPartnerIds(partnerIds);
Map<String, HyPartnerUserInfoDO> userNameMap = hyPartnerUserInfoDOS.stream().collect(Collectors.toMap(HyPartnerUserInfoDO::getPartnerId, Data->Data));
List<Long> lineIds = list.stream().map(PartnerInterviewInfoDTO::getPartnerLineId).collect(Collectors.toList());
List<HyPartnerLineInfoDO> hyPartnerLineInfoDOS= hyPartnerLineInfoDAO.getHyPartnerLineInfoListByIds(lineIds);
Map<Long, HyPartnerLineInfoDO> hyPartnerLineInfoDOMap = hyPartnerLineInfoDOS.stream().collect(Collectors.toMap(HyPartnerLineInfoDO::getId, data -> data));
list.stream().forEach(x->{
PartnerInterviewInfoVO partnerInterviewInfoVO = convertPartnerInterviewInfoDTOToVo(x);
partnerInterviewInfoVO.setPartnerPhone(userNameMap.getOrDefault(x.getPartnerId(),new HyPartnerUserInfoDO()).getUsername());
partnerInterviewInfoVO.setPartnerPhone(userNameMap.getOrDefault(x.getPartnerId(),new HyPartnerUserInfoDO()).getMobile());
partnerInterviewInfoVO.setLineStatus(hyPartnerLineInfoDOMap.getOrDefault(x.getPartnerLineId(),new HyPartnerLineInfoDO()).getLineStatus());
partnerInterviewInfoVO.setLineId(hyPartnerLineInfoDOMap.getOrDefault(x.getPartnerLineId(),new HyPartnerLineInfoDO()).getId());
result.add(partnerInterviewInfoVO);
});
partnerInterviewInfoList.setList(result);
@@ -97,9 +118,19 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
if (CollectionUtils.isEmpty(list)){
return partnerInterviewInfoList;
}
List<String> partnerIds = list.stream().map(PartnerInterviewInfoDTO::getPartnerId).collect(Collectors.toList());
List<HyPartnerUserInfoDO> hyPartnerUserInfoDOS = hyPartnerUserInfoDAO.selectByPartnerIds(partnerIds);
Map<String, HyPartnerUserInfoDO> userNameMap = hyPartnerUserInfoDOS.stream().collect(Collectors.toMap(HyPartnerUserInfoDO::getPartnerId, Data->Data));
List<Long> lineIds = list.stream().map(PartnerInterviewInfoDTO::getPartnerLineId).collect(Collectors.toList());
List<HyPartnerLineInfoDO> hyPartnerLineInfoDOS= hyPartnerLineInfoDAO.getHyPartnerLineInfoListByIds(lineIds);
Map<Long, HyPartnerLineInfoDO> hyPartnerLineInfoDOMap = hyPartnerLineInfoDOS.stream().collect(Collectors.toMap(HyPartnerLineInfoDO::getId, data -> data));
List<PartnerInterviewInfoVO> result = new ArrayList<>();
list.stream().forEach(x->{
PartnerInterviewInfoVO partnerInterviewInfoVO = convertPartnerInterviewInfoDTOToVo(x);
partnerInterviewInfoVO.setPartnerPhone(userNameMap.getOrDefault(x.getPartnerId(),new HyPartnerUserInfoDO()).getUsername());
partnerInterviewInfoVO.setPartnerPhone(userNameMap.getOrDefault(x.getPartnerId(),new HyPartnerUserInfoDO()).getMobile());
partnerInterviewInfoVO.setLineStatus(hyPartnerLineInfoDOMap.getOrDefault(x.getPartnerLineId(),new HyPartnerLineInfoDO()).getLineStatus());
partnerInterviewInfoVO.setLineId(hyPartnerLineInfoDOMap.getOrDefault(x.getPartnerLineId(),new HyPartnerLineInfoDO()).getId());
result.add(partnerInterviewInfoVO);
});
partnerInterviewInfoList.setList(result);
@@ -135,9 +166,12 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
partnerInterviewInfoVO.setProcessInfo(partnerInterviewInfoDTO.getProcessInfo());
partnerInterviewInfoVO.setCreateTime(DateUtil.format(partnerInterviewInfoDTO.getCreateTime(),CoolDateUtils.DATE_FORMAT_SEC));
partnerInterviewInfoVO.setRoomId(partnerInterviewInfoDTO.getRoomId());
partnerInterviewInfoVO.setDeadline(partnerInterviewInfoDTO.getDeadline());
partnerInterviewInfoVO.setStartTime(DateUtil.format(partnerInterviewInfoDTO.getStartTime(),CoolDateUtils.DATE_FORMAT_SEC));
partnerInterviewInfoVO.setStatus(partnerInterviewInfoDTO.getStatus());
partnerInterviewInfoVO.setAuthCode(partnerInterviewInfoDTO.getAuthCode());
partnerInterviewInfoVO.setEndTime(DateUtil.format(partnerInterviewInfoDTO.getEndTime(),CoolDateUtils.DATE_FORMAT_SEC));
partnerInterviewInfoVO.setApproveTime(partnerInterviewInfoDTO.getApproveTime());
return partnerInterviewInfoVO;
}

View File

@@ -2,11 +2,12 @@ package com.cool.store.service.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.dao.EnterpriseUserDAO;
import com.cool.store.dao.HyPartnerLineInfoDAO;
import com.cool.store.dao.HyPartnerUserInfoDAO;
import com.cool.store.dto.partner.PartnerBlackListDTO;
import com.cool.store.dto.partner.PartnerLineInfoAndBaseInfoDTO;
import com.cool.store.dto.partner.StageCountDTO;
import com.cool.store.dao.UserRegionMappingDAO;
import com.cool.store.dto.partner.*;
import com.cool.store.entity.EnterpriseUserDO;
import com.cool.store.entity.HyPartnerLineInfoDO;
import com.cool.store.entity.HyPartnerUserInfoDO;
import com.cool.store.enums.ErrorCodeEnum;
@@ -16,24 +17,20 @@ import com.cool.store.enums.WorkflowStatusEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.request.CloseFollowRequest;
import com.cool.store.request.LineRequest;
import com.cool.store.service.EnterpriseUserService;
import com.cool.store.service.HyPartnerLineInfoService;
import com.cool.store.utils.CoolDateUtils;
import com.cool.store.utils.StringUtil;
import com.cool.store.vo.BlackListVO;
import com.cool.store.vo.PartnerLineInfoAndBaseInfoVO;
import com.cool.store.vo.PartnerLineInfoVO;
import com.cool.store.vo.StageCountVO;
import com.cool.store.vo.*;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -48,6 +45,10 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
HyPartnerLineInfoDAO hyPartnerLineInfoDAO;
@Resource
HyPartnerUserInfoDAO hyPartnerUserInfoDAO;
@Resource
EnterpriseUserDAO enterpriseUserDAO;
@Resource
UserRegionMappingDAO userRegionMappingDAO;
@Override
public StageCountVO selectStagePendingCount(String userId) {
@@ -138,7 +139,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
@Override
public PageInfo<BlackListVO> getBlackList(LineRequest LineRequest) {
PageHelper.startPage(LineRequest.getPageNum(),LineRequest.getPageSize());
PageInfo blackListDTOPageInfo = hyPartnerLineInfoDAO.getBlackList(LineRequest.getKeyWord(), LineRequest.getIntentArea(), LineRequest.getAcceptAdjustType());
PageInfo blackListDTOPageInfo = hyPartnerLineInfoDAO.getBlackList(LineRequest.getUserNameKeyword(), LineRequest.getPhoneKeyword(),LineRequest.getIntentArea(), LineRequest.getAcceptAdjustType());
List<PartnerBlackListDTO> list = blackListDTOPageInfo.getList();
List<BlackListVO> result = new ArrayList<>();
list.stream().forEach(x->{
@@ -228,6 +229,68 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
hyPartnerLineInfoDAO.updateByPrimaryKeySelective(hyPartnerLineInfoDO);
return Boolean.TRUE;
}
@Override
public PageInfo<PublicSeaLineListVo> publicSeaLineList(String userId, LineRequest lineRequest) {
//确认是招商经理还是部门负责人
EnterpriseUserDO userInfo = enterpriseUserDAO.getUserInfoById(userId);
List<String> userIds = new ArrayList<>();
if (userInfo.getIsLeader()){
if (StringUtil.isNotEmpty(userInfo.getLeaderDeptIds())){
List<String> regionIds = JSONObject.parseArray(userInfo.getLeaderDeptIds(), String.class);
List<EnterpriseUserDO> enterpriseUserDOS = enterpriseUserDAO.searchUserByRegionIdsAndKeyword(regionIds, null, true);
userIds =enterpriseUserDOS.stream().map(EnterpriseUserDO::getUserId).collect(Collectors.toList());
}
}else {
userIds = Arrays.asList(userId);
}
PageHelper.startPage(lineRequest.getPageNum(),lineRequest.getPageSize());
PageInfo publicSeaLineList = hyPartnerLineInfoDAO.getPublicSeaLineList(lineRequest.getUserNameKeyword(), lineRequest.getPhoneKeyword(),
lineRequest.getIntentArea(), lineRequest.getAcceptAdjustType(), lineRequest.getUpdateStartTime(), lineRequest.getUpdateEndTime(), userIds);
List<PublicSeaLineDTO> list = publicSeaLineList.getList();
if (CollectionUtils.isEmpty(list)){
return new PageInfo<>();
}
//上一次结束的线索
List<String> partnerIdList = list.stream().map(PublicSeaLineDTO::getPartnerId).collect(Collectors.toList());
List<HyPartnerLineInfoDO> partnerLastLine = hyPartnerLineInfoDAO.getPartnerLastLine(partnerIdList);
List<String> investmentManagerIds = partnerLastLine.stream().map(HyPartnerLineInfoDO::getInvestmentManager).collect(Collectors.toList());
List<EnterpriseUserDO> userInfoList = enterpriseUserDAO.getUserInfoByUserIds(investmentManagerIds);
Map<String, String> mobileMap = userInfoList.stream().filter(x ->
StringUtil.isNotEmpty(x.getMobile())).collect(Collectors.toMap(EnterpriseUserDO::getUserId, EnterpriseUserDO::getMobile));
Map<String, HyPartnerLineInfoDO> hyPartnerLineInfoDOMap = partnerLastLine.stream().collect(Collectors.toMap(HyPartnerLineInfoDO::getPartnerId, data -> data));
List<LineCountDTO> followCountList = hyPartnerLineInfoDAO.getFollowCountList(partnerIdList);
Map<String, Integer> countMap = followCountList.stream().collect(Collectors.toMap(LineCountDTO::getPartnerId, LineCountDTO::getFollowCount));
List<PublicSeaLineListVo> result = new ArrayList<>();
list.forEach(x->{
PublicSeaLineListVo publicSeaLineListVo = new PublicSeaLineListVo();
publicSeaLineListVo.setPartnerId(x.getPartnerId());
publicSeaLineListVo.setCreateTime(x.getCreateTime());
publicSeaLineListVo.setPartnerUserName(x.getUserName());
publicSeaLineListVo.setPartnerUserPhone(x.getMobile());
// TODO: 2023/6/15 手机号归属地
publicSeaLineListVo.setPhoneAddress("");
publicSeaLineListVo.setWantShopArea(x.getWantShopArea());
publicSeaLineListVo.setId(x.getLineId());
publicSeaLineListVo.setAcceptAdjustType(x.getAcceptAdjustType());
publicSeaLineListVo.setFollowCount(countMap.getOrDefault(x.getPartnerId(),0));
HyPartnerLineInfoDO hy = hyPartnerLineInfoDOMap.getOrDefault(x.getPartnerId(), new HyPartnerLineInfoDO());
publicSeaLineListVo.setRejectPublicReason(hy.getRejectPublicReason());
publicSeaLineListVo.setRejectRealReason(hy.getRejectRealReason());
publicSeaLineListVo.setLastCloseDate(hy.getCloseTime());
publicSeaLineListVo.setLastInvestmentManager(hy.getInvestmentManager());
publicSeaLineListVo.setPartnerUserPhone(mobileMap.get(hy.getInvestmentManager()));
result.add(publicSeaLineListVo);
});
publicSeaLineList.setList(result);
return publicSeaLineList;
}
/**
* convertPartnerBlackListDTOToVo
* @param partnerBlackListDTO

View File

@@ -41,6 +41,8 @@ public class OpenAreaServiceImpl implements OpenAreaService {
List<HyOpenAreaInfoDO> hyOpenAreaInfoDOS = hyOpenAreaInfoDAO.queryByKeyword(keyword,flag);
Set<Long> longSet = hyOpenAreaInfoDOS.stream().map(HyOpenAreaInfoDO::getId).collect(Collectors.toSet());
List<HyOpenAreaInfoDO> result = new ArrayList<>();
result.addAll(hyOpenAreaInfoDOS);
hyOpenAreaInfoDOS.stream().forEach(x->{
Long parentId = x.getParentId();
@@ -48,11 +50,11 @@ public class OpenAreaServiceImpl implements OpenAreaService {
//添加到集合中
longSet.add(x.getParentId());
HyOpenAreaInfoDO hyOpenAreaInfoDO = longHyOpenAreaInfoDOMap.get(parentId);
hyOpenAreaInfoDOS.add(hyOpenAreaInfoDO);
result.add(hyOpenAreaInfoDO);
}
});
JSONArray objects = buildTree(JSONArray.parseArray(JSONObject.toJSONString(hyOpenAreaInfoDOS)), "id", "parentId","childNode" );
JSONArray objects = buildTree(JSONArray.parseArray(JSONObject.toJSONString(result)), "id", "parentId","childNode" );
List<OpenAreaTreeVO> openAreaTreeVOS = JSONObject.parseArray(objects.toJSONString(), OpenAreaTreeVO.class);
return openAreaTreeVOS;
}
@@ -128,7 +130,8 @@ public class OpenAreaServiceImpl implements OpenAreaService {
@Override
public PageInfo<OpenAreaVO> queryKeyOpenAreaList(Integer pageSize, Integer pageNumber) {
PageHelper.startPage(pageNumber,pageSize);
PageInfo hyOpenAreaInfoDOPageInfo = hyOpenAreaInfoDAO.queryKeyOpenArea();
List<HyOpenAreaInfoDO> hyOpenAreaInfoDOS = hyOpenAreaInfoDAO.queryKeyOpenArea();
PageInfo hyOpenAreaInfoDOPageInfo = new PageInfo<>(hyOpenAreaInfoDOS);
if (hyOpenAreaInfoDOPageInfo==null){
return new PageInfo<>();
}

View File

@@ -1,6 +1,10 @@
package com.cool.store.service.impl;
import com.cool.store.constants.CommonConstants;
import com.cool.store.dao.HyPartnerUserInfoDAO;
import com.cool.store.entity.HyPartnerUserInfoDO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.service.PartnerUserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -11,4 +15,27 @@ public class PartnerUserInfoServiceImpl implements PartnerUserInfoService {
@Autowired
private HyPartnerUserInfoDAO hyPartnerUserInfoDAO;
@Override
public HyPartnerUserInfoDO selectByPartnerId(String partnerId) {
return hyPartnerUserInfoDAO.selectByPartnerId(partnerId);
}
@Override
public Boolean queryJoinNotice(String partnerId) {
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(partnerId);
if (hyPartnerUserInfoDO==null){
throw new ServiceException(ErrorCodeEnum.PARTNER_USER_NOT_EXIST);
}
return hyPartnerUserInfoDO.getIsWritePartnerKnow() == 1;
}
@Override
public Boolean completeJoinNotice(String partnerId) {
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(partnerId);
if (hyPartnerUserInfoDO == null){
throw new ServiceException(ErrorCodeEnum.PARTNER_USER_NOT_EXIST);
}
hyPartnerUserInfoDAO.updateJoinKnowById(CommonConstants.ONE, hyPartnerUserInfoDO.getId());
return true;
}
}

View File

@@ -85,10 +85,13 @@ public class ZoneServiceImpl implements ZoneService {
HyIntendDevZoneInfoDO hyIntendDevZoneInfoDO = new HyIntendDevZoneInfoDO();
hyIntendDevZoneInfoDO.setId(intentAreaSettingRequest.getId());
hyIntendDevZoneInfoDO.setZoneName(intentAreaSettingRequest.getZoneName());
hyIntendDevZoneInfoDO.setUpdateUserId(userId);
hyIntendDevZoneInfoDO.setAssociatedRegionId(CollectionUtils.isNotEmpty(intentAreaSettingRequest.getOrgIdList())?JSONObject.toJSONString(intentAreaSettingRequest.getOrgIdList()):"");
hyIntendDevZoneInfoDAO.updateByPrimaryKeySelective(hyIntendDevZoneInfoDO);
//添加战区映射的意向区域
hyIntendDevMappingDAO.deleteByOpenAreaIds(intentAreaSettingRequest.getOpenAreaIdList(),intentAreaSettingRequest.getType());
hyIntendDevMappingDAO.deleteByMappingIds(Arrays.asList(intentAreaSettingRequest.getId())
,intentAreaSettingRequest.getType());
List<Long> openAreaIdList = intentAreaSettingRequest.getOpenAreaIdList();
List<HyIntendDevelopementMappingDO> list = new ArrayList<>();
openAreaIdList.stream().forEach(x->{
@@ -106,7 +109,7 @@ public class ZoneServiceImpl implements ZoneService {
@Override
public PageInfo<ZoneVO> getZoneList(String type, Integer pageSize, Integer pageNum) {
PageHelper.startPage(pageNum,pageSize);
PageInfo hyIntendDevZoneInfoList = hyIntendDevZoneInfoDAO.getHyIntendDevZoneInfoList(type);
PageInfo hyIntendDevZoneInfoList = new PageInfo(hyIntendDevZoneInfoDAO.getHyIntendDevZoneInfoList(type));
List<ZoneVO> result = new ArrayList<>();
List<HyIntendDevZoneInfoDO> list = hyIntendDevZoneInfoList.getList();
if (CollectionUtils.isEmpty(list)){
@@ -145,6 +148,8 @@ public class ZoneServiceImpl implements ZoneService {
List<String> regionIds = JSONObject.parseArray(hyIntendDevZoneInfoDO.getAssociatedRegionId(), String.class);
Map<String, String> regionMap = regionDAO.getRegionMap(regionIds);
zoneVO = handleZoneVO(regionMap, hyIntendDevZoneInfoDO);
}
if (enterpriseUserDO!=null){
zoneVO.setUpdateUserName(enterpriseUserDO.getName());
}
List<ZoneCheckDTO> zoneCheckDTOS = hyIntendDevMappingDAO.selectByMappingIdList(Arrays.asList(zoneId));
@@ -201,13 +206,26 @@ public class ZoneServiceImpl implements ZoneService {
List<Long> openAreaIdList = list.stream().map(ZoneCheckDTO::getOpenAreaMappingId).collect(Collectors.toList());
List<HyOpenAreaInfoDO> hyOpenAreaInfoDOList = openAreaInfoDAO.selectByIds(openAreaIdList);
Map<Long, String> areaNameMap = hyOpenAreaInfoDOList.stream().collect(Collectors.toMap(HyOpenAreaInfoDO::getId, HyOpenAreaInfoDO::getAreaName));
List<ZoneCheckVO> reslut = new ArrayList<>();
List<ZoneCheckVO> result = new ArrayList<>();
list.forEach(x->{
ZoneCheckVO zoneCheckVO = new ZoneCheckVO();
zoneCheckVO.setZoneName(x.getZoneName());
String areaName = areaNameMap.get(x.getOpenAreaMappingId());
zoneCheckVO.setAreaName(areaName);
result.add(zoneCheckVO);
});
return reslut;
return result;
}
@Override
public List<String> queryAllBingZoneRegionList(String type) {
PageInfo<HyIntendDevZoneInfoDO> intend = new PageInfo<>(hyIntendDevZoneInfoDAO.getHyIntendDevZoneInfoList(type));
List<HyIntendDevZoneInfoDO> list = intend.getList();
List<String> resultList = list.stream().filter(x->StringUtil.isNotEmpty(x.getAssociatedRegionId()))
.flatMap(HyIntendDevZoneInfoDO -> JSONObject.parseArray(HyIntendDevZoneInfoDO.getAssociatedRegionId(), String.class).stream())
.collect(Collectors.toList());
return resultList;
}
}

View File

@@ -107,6 +107,20 @@
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.6" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.groovy:groovy:2.5.10" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:dytnsapi20200217:1.0.28" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:ocr20191230:1.0.26" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:openplatform20191219:5.0.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:oss-client:3.0.3" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:tea-xml:0.1.1" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:tea-rpc-util:0.1.2" level="project" />
<orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:tea-rpc:0.1.3" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:oss-util:1.0.2" level="project" />
<orderEntry type="library" name="Maven: org.dom4j:dom4j:2.1.3" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:tea-fileform:0.0.3" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:darabonba-array:0.1.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:darabonba-number:0.0.3" level="project" />
<orderEntry type="library" name="Maven: org.aspectj:aspectjrt:1.9.5" level="project" />
<orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.5" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.2.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.2.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.2.6.RELEASE" level="project" />

View File

@@ -1,14 +1,17 @@
package com.cool.store.config;
import com.alibaba.fastjson.JSON;
import com.cool.store.constants.CommonConstants;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.response.ResponseResult;
import com.cool.store.context.CurrentUserHolder;
import com.cool.store.utils.RedisUtilPool;
import com.cool.store.context.LoginUserInfo;
import com.cool.store.utils.UUIDUtils;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.MDC;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.annotation.Order;
import org.springframework.http.HttpStatus;
@@ -67,6 +70,7 @@ public class TokenValidateFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
MDC.put(CommonConstants.REQUEST_ID, UUIDUtils.get32UUID());
HttpServletResponse response = (HttpServletResponse) servletResponse;
HttpServletRequest reqs = (HttpServletRequest) servletRequest;
String uri = reqs.getRequestURI();
@@ -109,6 +113,7 @@ public class TokenValidateFilter implements Filter {
filterChain.doFilter(servletRequest, servletResponse);
} finally {
CurrentUserHolder.removeUser();
MDC.clear();
}
}

View File

@@ -1,7 +1,10 @@
package com.cool.store.controller;
import com.cool.store.context.CurrentUserHolder;
import com.cool.store.dto.calendar.UserCalendarsEventDTO;
import com.cool.store.enums.LineStatusEnum;
import com.cool.store.exception.ApiException;
import com.cool.store.http.ISVHttpRequest;
import com.cool.store.request.*;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.*;
@@ -36,7 +39,10 @@ public class DeskController {
HyPartnerLineInfoService hyPartnerLineInfoService;
@Resource
HyPartnerBaseInfoService hyPartnerBaseInfoService;
@Resource
private ISVHttpRequest isvHttpRequest;
@Resource
EnterpriseUserService enterpriseUserService;
@GetMapping(path = "/interviewSchedule")
@@ -48,14 +54,35 @@ public class DeskController {
}
@GetMapping(path = "/getInvestmentManagerList")
@ApiOperation("招商经理")
@ApiImplicitParams({
@ApiImplicitParam(name = "type", value = "allocation-招商经理 transfer", required = false),
@ApiImplicitParam(name = "keyword", value = "keyword", required = false),
})
public ResponseResult<List<EnterpriseUserSingleInfoVO>> getInvestmentManagerList(String type,String keyword){
return ResponseResult.success(enterpriseUserService.getInvestmentManagerList(type,CurrentUserHolder.getUserId(),keyword));
}
@GetMapping(path = "/getUserCalendarsEvents")
@ApiOperation("飞书日程信息")
public ResponseResult<List<UserCalendarsEventDTO>> getUserCalendarsEvents(@RequestParam(value = "startTime",required = true) Long startTime,
@RequestParam(value = "endTime",required = true) Long endTime) throws ApiException {
String userId = CurrentUserHolder.getUserId();
return ResponseResult.success(isvHttpRequest.getUserCalendarsEvents(userId,startTime,endTime));
}
@GetMapping(path = "/queryStageCount")
@ApiOperation("招商经理视角====各阶段待处理待跟进数量")
@ApiImplicitParams({
@ApiImplicitParam(name = "type", value = "类型 待处理-Pending 待跟进-follow", required = false),
})
public ResponseResult<StageCountVO> queryStageCount(@RequestParam(value = "type",required = false)String type){
String userId = "";
return ResponseResult.success(deskService.getStageCountByType(userId,type));
return ResponseResult.success(deskService.getStageCountByType(CurrentUserHolder.getUserId(),type));
}
@GetMapping(path = "/queryInterviewPlan")
@@ -83,11 +110,12 @@ public class DeskController {
@PostMapping(path = "/querySubscribeInterviewTimeList")
@ApiOperation("招商经理视角===预约面试时间 列表")
public ResponseResult<PageInfo<PartnerInterviewInfoVO>> querySubscribeInterviewTimeList(@RequestParam(value = "pageNumber",required = false,defaultValue = "1")Integer pageNumber,
public ResponseResult<PageInfo<PartnerInterviewInfoVO>> querySubscribeInterviewTimeList(@RequestParam(value = "type",required = false)String type,
@RequestParam(value = "pageNumber",required = false,defaultValue = "1")Integer pageNumber,
@RequestParam(value = "pageSize",required = false,defaultValue = "10")Integer pageSize){
String userId = CurrentUserHolder.getUserId();
return ResponseResult.success(hyPartnerInterviewPlanService.getPartnerInterviewInfoList(userId,pageSize,pageNumber));
return ResponseResult.success(hyPartnerInterviewPlanService.getPartnerInterviewInfoList(userId,type,pageSize,pageNumber));
}
@PostMapping(path = "/queryQualifiedInterviewList")
@@ -118,8 +146,8 @@ public class DeskController {
@ApiImplicitParams({
@ApiImplicitParam(name = "lineId", value = "线索ID", required = false),
})
public ResponseResult<PartnerIntentApplyInfoVO> getPartnerIntentInfo(@RequestParam(value = "lineId",required = false)Long lineId){
return ResponseResult.success(hyPartnerIntentInfoService.getPartnerIntentApplyInfo(lineId));
public ResponseResult<PartnerIntentInfoVO> getPartnerIntentInfo(@RequestParam(value = "lineId",required = false)Long lineId){
return ResponseResult.success(hyPartnerIntentInfoService.getPartnerIntentApplyDetail(lineId));
}
@@ -176,7 +204,6 @@ public class DeskController {
}
@PostMapping(path = "/queryPublicSeqLineList")
@ApiOperation("公海列表")
public ResponseResult<PageInfo<PublicSeaLineListVo>> queryPublicSeaLineList(@RequestBody LineRequest LineRequest){
@@ -185,8 +212,6 @@ public class DeskController {
}
@PostMapping(path = "/queryPrivateSeaLineList")
@ApiOperation("私海列表")
public ResponseResult<PageInfo<PrivateSeaLineListVo>> queryPrivateSeqLineList(@RequestBody PrivateSeaLineListRequest privateSeaLineListRequest){
@@ -194,8 +219,6 @@ public class DeskController {
return ResponseResult.success();
}
@PostMapping(path = "/queryBlackList")
@ApiOperation("黑名单列表")
public ResponseResult<PageInfo<BlackListVO>> queryBlackList(@RequestBody LineRequest LineRequest){
@@ -222,9 +245,7 @@ public class DeskController {
@PostMapping(path = "/closeOrPassFollow")
@ApiOperation("意向申请审核 结束跟进/通过流程")
public ResponseResult<Boolean> closeOrPassFollow(@RequestBody CloseFollowRequest closeFollowRequest){
String userId = "";
return ResponseResult.success(hyPartnerLineInfoService.closeOrPassFollow(userId,closeFollowRequest));
return ResponseResult.success(hyPartnerLineInfoService.closeOrPassFollow(CurrentUserHolder.getUserId(),closeFollowRequest));
}
@PostMapping(path = "/changeIntentInfo")

View File

@@ -0,0 +1,32 @@
package com.cool.store.controller;
import com.cool.store.exception.ApiException;
import com.cool.store.request.CreateQualifyVerifyReq;
import com.cool.store.request.FinishInterviewReq;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.FlowService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author: young.yu
* @Date: 2023-06-14 13:47
* @Description: 流程相关
*/
@RestController
@RequestMapping({"/flow"})
public class FlowController {
@Autowired
private FlowService flowService;
@PostMapping("/qualifyVerify/create")
@ApiOperation("发起加盟商资质审核")
public ResponseResult createQualifyVerify(@RequestBody CreateQualifyVerifyReq request) throws ApiException {
flowService.createQualifyVerify(request);
return ResponseResult.success();
}
}

View File

@@ -2,11 +2,16 @@ package com.cool.store.controller;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.RegionService;
import com.cool.store.service.ZoneService;
import com.cool.store.vo.region.RegionBaseInfoVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
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 javax.annotation.Resource;
@@ -28,6 +33,8 @@ public class RegionController {
@Resource
private RegionService regionService;
@Resource
ZoneService zoneService;
@GetMapping("/getRegionList")
public ResponseResult<List<RegionBaseInfoVO>> getRegionBaseInfoList(){
@@ -36,4 +43,13 @@ public class RegionController {
}
@ApiOperation("查询所有被绑定战区的组织机构")
@ApiImplicitParams({
@ApiImplicitParam(name = "type", value = "intent-意向区域 development 开发区域", required = false)
})
@GetMapping("/queryAllBingZoneRegionList")
public ResponseResult<List<String>> queryAllBingZoneRegionList(@RequestParam(value = "type",required = false)String type){
return ResponseResult.success(zoneService.queryAllBingZoneRegionList(type));
}
}

View File

@@ -1,26 +1,30 @@
package com.cool.store.controller;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.dao.EnterpriseUserDAO;
import com.cool.store.dto.calendar.CreateCalendarEventDTO;
import com.cool.store.dto.calendar.DeleteCalendarEventDTO;
import com.cool.store.dto.calendar.UpdateCalendarEventDTO;
import com.cool.store.dto.calendar.UserCalendarsEventDTO;
import com.cool.store.dto.message.SendCardMessageDTO;
import com.cool.store.dto.partner.DescribePhoneNumberDTO;
import com.cool.store.dto.response.ResultDTO;
import com.cool.store.entity.HyOpenAreaInfoDO;
import com.cool.store.entity.EnterpriseUserDO;
import com.cool.store.enums.RocketMqTagEnum;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.exception.ApiException;
import com.cool.store.exception.ServiceException;
import com.cool.store.mapper.HyOpenAreaInfoMapper;
import com.cool.store.http.ISVHttpRequest;
import com.cool.store.mq.producer.SimpleMessageService;
import com.cool.store.request.AllocationInvestmentManagerRequest;
import com.cool.store.request.City;
import com.cool.store.request.TestRequest;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.AliyunService;
import com.cool.store.service.EnterpriseSyncService;
import com.cool.store.service.EnterpriseUserService;
import com.cool.store.utils.UUIDUtils;
import com.cool.store.vo.cuser.IdentityCardInfoVO;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
@@ -43,9 +47,13 @@ public class TestController {
@Resource
private ISVHttpRequest isvHttpRequest;
@Resource
HyOpenAreaInfoMapper hyOpenAreaInfoMapper;
private HyOpenAreaInfoMapper hyOpenAreaInfoMapper;
@Resource
private EnterpriseSyncService enterpriseSyncService;
@Resource
private EnterpriseUserDAO enterpriseUserDAO;
@Resource
private AliyunService aliyunService;
@PostMapping("/post")
public ResponseResult<Boolean> get(@RequestBody List<TestRequest> testRequestList){
@@ -186,4 +194,32 @@ public class TestController {
return ResultDTO.successResult(isvHttpRequest.deleteUserCalendarEvent(param));
}
@GetMapping("/user/getUserCalendarsEvents")
public ResultDTO<List<UserCalendarsEventDTO>> getUserCalendarsEvents(@RequestParam("userId") String userId, @RequestParam("startTime") long startTime,
@RequestParam("endTime") long endTime) throws ApiException {
log.info("getUserCalendarsEvents : corpId:{}, appType:{}, userId:{}, startTime:{}, endTime:{}", userId, startTime, endTime);
return ResultDTO.successResult(isvHttpRequest.getUserCalendarsEvents(userId, startTime, endTime));
}
@GetMapping("/getIdentityCardInfo")
@ApiOperation("根据身份证正面解析获取数据")
public ResponseResult<IdentityCardInfoVO> getIdentityCardInfo(@RequestParam(value = "faceImageUrl")String faceImageUrl){
try {
IdentityCardInfoVO identityCardInfo = aliyunService.getIdentityCardInfo(faceImageUrl);
return ResponseResult.success(identityCardInfo);
} catch (Exception e) {
throw new ServiceException(ErrorCodeEnum.IDENTITY_CARD_PARSE_FAIL);
}
}
@PostMapping("/sendFeiShuCardMessage")
public ResponseResult sendFeiShuCardMessage(@RequestBody SendCardMessageDTO param){
try {
isvHttpRequest.sendFeiShuCardMessage(param);
return ResponseResult.success();
} catch (Exception e) {
throw new ServiceException(ErrorCodeEnum.IDENTITY_CARD_PARSE_FAIL);
}
}
}

View File

@@ -4,6 +4,7 @@ import com.cool.store.context.CurrentUserHolder;
import com.cool.store.request.IntentAreaSettingRequest;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.ZoneService;
import com.cool.store.vo.ZoneCheckVO;
import com.cool.store.vo.ZoneVO;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.ApiImplicitParam;
@@ -13,6 +14,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* @Author suzhuhong
@@ -32,6 +34,12 @@ public class ZoneController {
return ResponseResult.success(zoneService.addZone( CurrentUserHolder.getUserId(),intentAreaSettingRequest));
}
@PostMapping(path = "/checkZone")
@ApiOperation("校验战区")
public ResponseResult<List<ZoneCheckVO>> checkZone(@RequestBody IntentAreaSettingRequest intentAreaSettingRequest){
return ResponseResult.success(zoneService.checkZone(intentAreaSettingRequest));
}
@PostMapping(path = "/updateZone")
@ApiOperation("编辑意向战区/开发战区")
public ResponseResult<Boolean> updateZone(@RequestBody IntentAreaSettingRequest intentAreaSettingRequest){
@@ -51,12 +59,12 @@ public class ZoneController {
}
@GetMapping(path = "/deletedZoneList")
@GetMapping(path = "/deletedZone")
@ApiOperation("删除战区")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "id", required = false),
})
public ResponseResult<Boolean> deletedZoneList(@RequestParam(value = "id",required = false)Long id){
public ResponseResult<Boolean> deletedZone(@RequestParam(value = "id",required = false)Long id){
return ResponseResult.success(zoneService.deletedZone(id));
}

View File

@@ -58,6 +58,9 @@ weixin.appSecret=245a483747e6e9f8762d3e8539cf0318
signKey=77fea013c3a6459685b83c21a2fc3411
#八佰流程配置
hs.mdm.baseUrl=http://172.35.37.52:8080
#xxljob配置
xxl.job.admin.addresses = https://djob.coolstore.cn/xxl-job-admin
xxl.job.executor.appname = ${spring.application.name}

View File

@@ -41,7 +41,7 @@
</encoder>
</appender>
<logger name="com.cool.store.mapper" level="DEBUG" additivity="true" />
<logger name="com.cool.store.mapper" level="DEBUG" additivity="true" />
<!--灰度、线上、预防 不输出到console-->
<springProfile name="hd,online,pre">
<root level="info">

View File

@@ -105,6 +105,20 @@
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.6" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.groovy:groovy:2.5.10" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:dytnsapi20200217:1.0.28" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:ocr20191230:1.0.26" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:openplatform20191219:5.0.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:oss-client:3.0.3" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:tea-xml:0.1.1" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:tea-rpc-util:0.1.2" level="project" />
<orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:tea-rpc:0.1.3" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:oss-util:1.0.2" level="project" />
<orderEntry type="library" name="Maven: org.dom4j:dom4j:2.1.3" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:tea-fileform:0.0.3" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:darabonba-array:0.1.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:darabonba-number:0.0.3" level="project" />
<orderEntry type="library" name="Maven: org.aspectj:aspectjrt:1.9.5" level="project" />
<orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.5" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.2.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.2.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.10.3" level="project" />

View File

@@ -2,6 +2,7 @@ package com.cool.store.config;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.constants.CommonConstants;
import com.cool.store.context.PartnerUserHolder;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.response.ResponseResult;
@@ -9,9 +10,11 @@ import com.cool.store.service.WechatMiniAppService;
import com.cool.store.utils.AesUtil;
import com.cool.store.utils.Md5Utils;
import com.cool.store.utils.Sha1Utils;
import com.cool.store.utils.UUIDUtils;
import com.cool.store.vo.PartnerUserInfoVO;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.MDC;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.annotation.Order;
import org.springframework.http.HttpStatus;
@@ -46,7 +49,9 @@ public class SignValidateFilter implements Filter {
private static List<String> patternList =
Lists.newArrayList("/web/check/ok","/check/ok",
"/partner/mini/program/doc.html","/partner/mini/program/v2/api-docs","/**/test/**","/partner/pc/feiShuLogin","/partner/pc/oss/getUploadFileConfig",
"/partner/mini/program/doc.html","/partner/mini/program/v2/api-docs","/**/test/**",
"/partner/mini/program/oss/getUploadFileConfig",
"/partner/mini/program/v1/partnerManage/partner/getIdentityCardInfo",
"/**/swagger*/**", "/**/webjars/**");
@@ -73,6 +78,7 @@ public class SignValidateFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
MDC.put(CommonConstants.REQUEST_ID, UUIDUtils.get32UUID());
HttpServletResponse response = (HttpServletResponse) servletResponse;
HttpServletRequest request = (HttpServletRequest) servletRequest;
String uri = request.getRequestURI();
@@ -101,8 +107,7 @@ public class SignValidateFilter implements Filter {
// 前后端验签不等
if (!newSign.equals(sign)) {
response.setStatus(HttpStatus.OK.value());
response.getWriter().write(JSON.toJSONString(
ResponseResult.fail(ErrorCodeEnum.SIGN_FAIL)));
response.getWriter().write(JSON.toJSONString(ResponseResult.fail(ErrorCodeEnum.SIGN_FAIL)));
return;
}
PartnerUserInfoVO partnerUserInfoVO = wechatMiniAppService.getUserInfo(phone, openid);
@@ -116,6 +121,7 @@ public class SignValidateFilter implements Filter {
filterChain.doFilter(servletRequest, servletResponse);
} finally {
PartnerUserHolder.removeUser();
MDC.clear();
}
}

View File

@@ -1,14 +1,20 @@
package com.cool.store.controller;
import com.cool.store.context.PartnerUserHolder;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.request.BaseUserInfoRequest;
import com.cool.store.request.PartnerBaseInfoRequest;
import com.cool.store.request.PartnerClerkInfoRequest;
import com.cool.store.request.PartnerIntentInfoRequest;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.AliyunService;
import com.cool.store.service.HyPartnerBaseInfoService;
import com.cool.store.service.HyPartnerClerkService;
import com.cool.store.service.HyPartnerIntentInfoService;
import com.cool.store.service.PartnerUserInfoService;
import com.cool.store.vo.*;
import com.github.pagehelper.PageInfo;
import com.cool.store.vo.cuser.IdentityCardInfoVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -34,7 +40,18 @@ public class PartnerController {
private PartnerUserInfoService partnerUserInfoService;
@Resource
HyPartnerIntentInfoService hyPartnerIntentInfoService;
private HyPartnerIntentInfoService hyPartnerIntentInfoService;
@Resource
private AliyunService aliyunService;
@Resource
private HyPartnerBaseInfoService hyPartnerBaseInfoService;
@Resource
private HyPartnerClerkService hyPartnerClerkService;
@PostMapping(path = "/applyBaseInfo")
@ApiOperation("提交基本信息")
@@ -79,26 +96,24 @@ public class PartnerController {
@PostMapping(path = "/submitPartnerBaseInfo")
@ApiOperation("提交加盟商基本信息")
public ResponseResult<Boolean> submitPartnerBaseInfo(@RequestBody PartnerBaseInfoRequest PartnerBaseInfoRequest){
public ResponseResult<Boolean> submitPartnerBaseInfo(@RequestBody PartnerBaseInfoRequest baseInfoRequest){
//前提 未提交加盟申请
//成功 意向区域变更成功 失败 您已进入意向申请流程,当前不可变更意向区域
return ResponseResult.success();
return ResponseResult.success(hyPartnerBaseInfoService.submitPartnerBaseInfo(baseInfoRequest));
}
@PostMapping(path = "/submitPartnerClerkInfo")
@ApiOperation("提交加盟商店员信息")
public ResponseResult<Boolean> submitPartnerClerkInfo(@RequestBody PartnerClerkInfoRequest partnerClerkInfoRequest){
return ResponseResult.success();
return ResponseResult.success(hyPartnerClerkService.submitPartnerClerkInfo(partnerClerkInfoRequest));
}
@PostMapping(path = "/submitPartnerIntentInfo")
@ApiOperation("提交加盟商意向信息/行业认知")
public ResponseResult<Boolean> submitPartnerIntentInfo(@RequestBody PartnerIntentInfoRequest partnerIntentInfoRequest){
return ResponseResult.success();
return ResponseResult.success(hyPartnerIntentInfoService.submitPartnerIntentInfo(partnerIntentInfoRequest));
}
@@ -107,7 +122,7 @@ public class PartnerController {
@ApiOperation("修改加盟商店员信息")
public ResponseResult<Boolean> changePartnerClerkInfo(@RequestBody PartnerClerkInfoRequest partnerClerkInfoRequest){
return ResponseResult.success();
return ResponseResult.success(hyPartnerClerkService.submitPartnerClerkInfo(partnerClerkInfoRequest));
}
@@ -115,7 +130,7 @@ public class PartnerController {
@ApiOperation("修改加盟商意向信息/行业认知")
public ResponseResult<Boolean> changePartnerIntentInfo(@RequestBody PartnerIntentInfoRequest partnerIntentInfoRequest){
return ResponseResult.success();
return ResponseResult.success(hyPartnerIntentInfoService.submitPartnerIntentInfo(partnerIntentInfoRequest));
}
@@ -140,9 +155,8 @@ public class PartnerController {
@ApiImplicitParam(name = "lineId", value = "线索ID", required = false),
})
public ResponseResult<PartnerBaseInfoVO> queryPartnerBaseInfo(@RequestParam(value = "lineId",required = false)Long lineId){
return ResponseResult.success();
PartnerUserInfoVO userInfoVO = PartnerUserHolder.getUser();
return ResponseResult.success(hyPartnerBaseInfoService.queryPartnerBaseInfo(userInfoVO.getPartnerId(), lineId));
}
@@ -153,8 +167,8 @@ public class PartnerController {
})
public ResponseResult<List<PartnerClerkVO>> queryPartnerClerkInfo(@RequestParam(value = "lineId",required = false)Long lineId){
return ResponseResult.success();
PartnerUserInfoVO userInfoVO = PartnerUserHolder.getUser();
return ResponseResult.success(hyPartnerClerkService.queryPartnerClerkInfo(userInfoVO.getPartnerId(), lineId));
}
@@ -165,8 +179,8 @@ public class PartnerController {
})
public ResponseResult<PartnerIntentInfoVO> queryPartnerIntentInfo(@RequestParam(value = "lineId",required = false)Long lineId){
return ResponseResult.success();
PartnerUserInfoVO userInfoVO = PartnerUserHolder.getUser();
return ResponseResult.success(hyPartnerIntentInfoService.queryPartnerIntentInfo(userInfoVO.getPartnerId(), lineId));
}
@@ -177,10 +191,8 @@ public class PartnerController {
@ApiImplicitParams({
@ApiImplicitParam(name = "partnerId", value = "加盟商ID", required = false),
})
public ResponseResult<Boolean> completeJoinNotice(@RequestParam(value = "partnerId",required = false)Long partnerId){
return ResponseResult.success();
public ResponseResult<Boolean> completeJoinNotice(@RequestParam(value = "partnerId",required = false)String partnerId){
return ResponseResult.success(partnerUserInfoService.completeJoinNotice(partnerId));
}
@@ -189,10 +201,20 @@ public class PartnerController {
@ApiImplicitParams({
@ApiImplicitParam(name = "partnerId", value = "加盟商ID", required = false),
})
public ResponseResult<Boolean> queryJoinNotice(@RequestParam(value = "partnerId",required = false)Long partnerId){
public ResponseResult<Boolean> queryJoinNotice(@RequestParam(value = "partnerId",required = false)String partnerId){
return ResponseResult.success(partnerUserInfoService.queryJoinNotice(partnerId));
}
return ResponseResult.success();
@GetMapping(path = "/getIdentityCardInfo")
@ApiOperation("根据身份证正面解析获取数据")
public ResponseResult<IdentityCardInfoVO> getIdentityCardInfo(@RequestParam(value = "faceImageUrl")String faceImageUrl){
try {
IdentityCardInfoVO identityCardInfo = aliyunService.getIdentityCardInfo(faceImageUrl);
return ResponseResult.success(identityCardInfo);
} catch (Exception e) {
throw new ServiceException(ErrorCodeEnum.IDENTITY_CARD_PARSE_FAIL);
}
}
}

Some files were not shown because too many files have changed in this diff Show More