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

This commit is contained in:
zhangchenbiao
2024-04-02 09:58:41 +08:00
43 changed files with 1306 additions and 62 deletions

View File

@@ -70,6 +70,11 @@
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.11</version>
</dependency>
<dependency>
<groupId>com.aliyun.openservices</groupId>
<artifactId>ons-client</artifactId>

View File

@@ -263,4 +263,14 @@ public class RedisConstant {
*/
public static final String PARTNER_APPOINTMENT_LOCK = "partner:appointment:lock:{0}";
/**
* 用户意向区域key
*/
public static final String USER_WANT_AREA_CACHE = "user_want_area_cache_";
/**
* 招商经理轮询key
*/
public static final String INVESTMENT_MANAGER_CACHE = "investment_manager_cache_";
}

View File

@@ -0,0 +1,45 @@
package com.cool.store.enums;
import java.util.Arrays;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* describe:职位来源枚举
*
* @author zhouyiping
* @date 2020/12/30
*/
public enum RoleSourceEnum {
/**
* 职位来源
*/
CREATE("create", "自建"),
EHR("ehr", "EHR"),
SYNC("sync", "钉钉同步");
private static final Map<String, RoleSourceEnum> map = Arrays.stream(values()).collect(
Collectors.toMap(RoleSourceEnum::getCode, Function.identity()));
private String code;
private String desc;
RoleSourceEnum(String code, String desc) {
this.code = code;
this.desc = desc;
}
public String getCode() {
return code;
}
public String getDesc() {
return desc;
}
public static RoleSourceEnum getByCode(String code) {
return map.get(code);
}
}

View File

@@ -0,0 +1,285 @@
package com.cool.store.utils;
import com.google.common.base.Strings;
import org.apache.commons.codec.binary.Base64;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Arrays;
public class EncryptUtil {
/** Base64 编码 */
private static final Base64 B64 = new Base64();
/** 安全的随机数源 */
private static final SecureRandom RANDOM = new SecureRandom();
/** AES加密算法 */
private static final String AES_ALGORITHM = "AES";
private static final String AES = "AES/ECB/PKCS5Padding";
public static String MD5(String str) {
String re_md5 = "";
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(str.getBytes());
byte b[] = md.digest();
int i;
StringBuilder buf = new StringBuilder("");
for (byte aB : b) {
i = aB;
if (i < 0) {
i += 256;
}
if (i < 16) {
buf.append("0");
}
buf.append(Integer.toHexString(i));
}
re_md5 = buf.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return re_md5;
}
public static String maskMail(String mail) {
if (Strings.isNullOrEmpty(mail)) {
return mail;
}
if (!mail.contains("@")) {
return mail;
}
String[] arrays = mail.split("@");
String account = arrays[0];
String domain = arrays[1];
Integer len = account.length();
if (len <= 2) return mail;
if (len <= 4) {
account = account.substring(0, 2) + "****";
} else {
String left = account.substring(0, 2);
String right = account.substring(len - 2, len);
account = left + "****" + right;
}
return account + "@" + domain;
}
public static String maskMobile(String mobile) {
if (Strings.isNullOrEmpty(mobile)) {
return mobile;
}
if (mobile.length() < 11) {
return mobile;
}
return mobile.substring(0, 3) + "****" + mobile.substring(7, 11);
}
public static String mask(String str) {
if (Strings.isNullOrEmpty(str)) {
return str;
}
int len = str.length();
if (len < 5) {
return str;
}
return str.substring(0, 2) + "****" + str.substring(len - 2, len);
}
/**
* AES加密
*
* @param str
* 需要加密的明文
* @param key
* 密钥
* @return 加密后的密文(str / key为null返回null)
*/
public static String aesEncryp(String str, String key) {
return aesEncryp(str, key, false);
}
/**
* AES加密
*
* @param str
* 需要加密的明文
* @param key
* 密钥
* @param urlSafety
* 密文是否需要Url安全
* @return 加密后的密文(str / key为null返回null)
*/
public static String aesEncryp(String str, String key, boolean urlSafety) {
if (null != str && null != key) {
try {
Cipher c = Cipher.getInstance(AES);
c.init(Cipher.ENCRYPT_MODE, aesKey(key), RANDOM);
// 加密
byte[] bytes = c.doFinal(str.getBytes("UTF-8"));
if (urlSafety) {
return Base64.encodeBase64URLSafeString(bytes);
} else {
return new String(B64.encode(bytes));
}
} catch (Exception e) {
return new BaseOut(2, "AES加密失败, 密文:" + str + ", key" + key, null).toString();
}
}
return null;
}
/**
* AES解密
*
* @param str
* 需要解密的密文(base64编码字符串)
* @param key
* 密钥
* @return 解密后的明文
*/
public static BaseOut aesDecrypt(String str, String key) {
if (null != str && null != key) {
try {
Cipher c = Cipher.getInstance(AES);
c.init(Cipher.DECRYPT_MODE, aesKey(key), RANDOM);
// 解密
return new BaseOut(0, "解密成功", new String(c.doFinal(B64.decode(str)), "UTF-8"));
} catch (BadPaddingException e) {
return new BaseOut(2, "AES解密失败, 密文:" + str + ", key" + key, null);
} catch (Exception e) {
return new BaseOut(2, "AES解密失败, 密文:" + str + ", key" + key, null);
}
}
return null;
}
/** AES密钥 */
private static SecretKeySpec aesKey(String key) {
byte[] bs = key.getBytes();
if (bs.length != 16) {
bs = Arrays.copyOf(bs, 16);// 处理数组长度为16
}
return new SecretKeySpec(bs, AES_ALGORITHM);
}
public static String oaMd5() {
String key = "coolcollege20201211sc";
String thirdSecret = "135990bd839c5fe0a1ca9cbee2475431";
return MD5(key + thirdSecret);
}
public static String oaB2gnMd5() {
String key = "coolStore_buErJia_20220425";
String thirdSecret = "d14cc076b44b435ea0ab06d0b7e04ea8";
return MD5(key + thirdSecret);
}
public static String oaMd5(String param) {
String key = "coolstore20220329";
String thirdSecret = "d14cc076b44b435ea0ab06d0b7e04ea8";
return MD5(key + thirdSecret + param);
}
public static String xfsgMd5(String param) {
String key = "coolstorexfsg20240329";
return MD5(key + param);
}
public static String getData(String ticket) {
BaseOut result = aesDecrypt(ticket, oaMd5());
if(result == null || result.getCode() != 0){
return null;
}
return result.getData().toString();
}
public static String getB2gnData(String ticket) {
BaseOut result = aesDecrypt(ticket, oaB2gnMd5());
if(result == null || result.getCode() != 0){
return null;
}
return result.getData().toString();
}
public static void main(String[] args) {
//签名
StringBuffer sb = new StringBuffer();
//用户唯一标识id
sb.append("userId=132537313837929006").append("&");
//企业唯一标识enterpriseId
sb.append("enterpriseId=45f92210375346858b6b6694967f44de").append("&");
sb.append("bizContent={\"taskList\":[{\"taskName\":\"阿斯顿\",\"taskType\":\"QUESTION_ORDER\",\"taskDesc\":\"测试\",\"attachUrl\":\"{\\\"id\\\":149,\\\"fileName\\\":\\\"新建 DOC 文档.doc\\\",\\\"url\\\":\\\"https://oss-store.coolcollege.cn/doc/sop/45471386126883973.doc\\\",\\\"type\\\":\\\"doc\\\",\\\"category\\\":\\\"doc\\\",\\\"createUserId\\\":\\\"0327344625645542\\\",\\\"createUser\\\":\\\"不易\\\",\\\"createTime\\\":1642692983000,\\\"visibleUser\\\":\\\"\\\",\\\"visibleRole\\\":\\\"\\\",\\\"visibleUserName\\\":\\\"\\\",\\\"visibleRoleName\\\":\\\"\\\"}\",\"taskInfo\":\"{\\\"photos\\\":[\\\"https://oss-store.coolcollege.cn/eid/45f92210375346858b6b6694967f44de/2203/5fc6b6f2cd2243588272992382452bb4.jpg\\\"],\\\"videos\\\":\\\"{\\\\\\\"videoList\\\\\\\":[]}\\\",\\\"contentLearnFirst\\\":false,\\\"courseList\\\":[]}\",\"beginTime\":1648546065361,\"endTime\":1649150454152,\"beginTime\":1648546065361,\"endTime\":1649150454152,\"form\":[{\"type\":\"STANDARD_COLUMN\",\"value\":4324,\"name\":\"奥尔业务员奥尔业务员奥尔业务员奥尔业务员奥尔业务员奥尔业务员奥尔业务员奥尔业务员奥尔业务员奥尔业务员奥尔业务员奥尔业务员奥尔业务员奥尔业务员奥尔业务员奥尔业务员奥尔业务员奥尔业务员奥尔业务员奥尔业务员\"}],\"storeIds\":[{\"type\":\"store\",\"value\":\"c61119bf721940f098169ec4d065e79a\"}],\"process\":[{\"nodeNo\":1,\"user\":[{\"type\":\"person\",\"value\":\"132537313837929006\"}],\"approveType\":\"any\"},{\"nodeNo\":2,\"user\":[{\"type\":\"person\",\"value\":\"132537313837929006\"}],\"approveType\":\"any\"},{\"nodeNo\":3,\"user\":[{\"type\":\"person\",\"value\":\"132537313837929006\"}],\"approveType\":\"any\"},{\"nodeNo\":\"cc\",\"user\":[{\"type\":\"person\",\"value\":\"132537313837929006\"}],\"approveType\":\"any\"}]}]}");
//sb.append("bizContent={\"pageNumber\":\"1\",\"pageSize\":\"10\",\"storeId\":\"888ab0bddac5432e9b037078366598d6\"}");
//加密
String sign = oaMd5(sb.toString());
System.out.println("sign:" + sign);
}
}
class BaseOut {
private int code = 0;
private String msg;
private Object data;
public BaseOut() {
}
public BaseOut(int code) {
this.code = code;
}
public BaseOut(int code, String msg) {
this.code = code;
this.msg = msg;
}
public BaseOut(int code, String msg, Object data) {
this.code = code;
this.msg = msg;
this.data = data;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
}

View File

@@ -98,4 +98,13 @@ public class RedisConstantUtil {
return active + "_" + RedisConstant.PHONE_NUMBER + phoneNumber;
}
public String getUserWantAreaListKey(String userId) {
return active + "_" + RedisConstant.USER_WANT_AREA_CACHE + eid + ":" + userId;
}
public String getInvestmentManagerKey(Long wantShopAreaId) {
return active + "_" + RedisConstant.INVESTMENT_MANAGER_CACHE + eid + ":" + wantShopAreaId;
}
}

View File

@@ -8,6 +8,7 @@ import com.cool.store.enums.WorkflowSubStageStatusEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.mapper.LineInfoMapper;
import com.cool.store.request.LineListRequest;
import com.cool.store.request.PartnerRequest;
import com.cool.store.request.PublicLineListRequest;
import com.cool.store.vo.PublicLineListVO;
import lombok.extern.slf4j.Slf4j;
@@ -81,18 +82,31 @@ public class LineInfoDAO {
return null;
}
public List<LineInfoDO> listByInvestmentManager(String investmentManagerUserId,Integer subStageStatus) {
public List<LineInfoDO> listByInvestmentManager(String investmentManagerUserId,List<Integer> subStageStatus) {
if (StringUtils.isBlank(investmentManagerUserId)){
return null;
}
List<LineInfoDO> lineInfo = lineInfoMapper.listByInvestmentManager(investmentManagerUserId,subStageStatus);
return lineInfo;
}
public List<LineInfoDO> listByInterview(String interviewId, Integer interviewType,List<Integer> subStageStatus) {
if (StringUtils.isBlank(interviewId)){
return null;
}
List<LineInfoDO> lineInfo = lineInfoMapper.listByInterview(interviewId,interviewType,subStageStatus);
return lineInfo;
}
public List<LineInfoDO> lineList(LineListRequest lineListRequest, String userId, List<Long> wantShopAreaIds) {
List<LineInfoDO> lineInfo = lineInfoMapper.lineList(lineListRequest,userId,wantShopAreaIds);
return lineInfo;
}
public List<LineInfoDO> partnerList(PartnerRequest partnerRequest,String wantShopAreaName, String userId, List<Long> wantShopAreaIds) {
List<LineInfoDO> lineInfo = lineInfoMapper.partnerList(partnerRequest,wantShopAreaName,userId,wantShopAreaIds);
return lineInfo;
}
public List<LineInfoDO> publicLineList(PublicLineListRequest publicLineListRequest) {
List<LineInfoDO> lineInfo = lineInfoMapper.publicLineList(publicLineListRequest);
return lineInfo;

View File

@@ -8,10 +8,12 @@ import com.cool.store.request.LineInterviewPageRequest;
import com.github.pagehelper.Page;
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.stereotype.Repository;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
@@ -36,7 +38,7 @@ public class LineInterviewDAO {
public List<LineInterviewDO> getInterviewByLindIds(List<Long> lineIds, InterviewTypeEnum interviewType){
if(CollectionUtils.isEmpty(lineIds) || Objects.isNull(interviewType)){
return null;
return Lists.newArrayList();
}
return lineInterviewMapper.getInterviewByLindIds(lineIds, interviewType.getCode());
}

View File

@@ -6,7 +6,8 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author wxp
@@ -38,4 +39,13 @@ public class LinePayDAO {
return linePayMapper.updateByPrimaryKeySelective(linePayDO);
}
public Map<Long,LinePayDO> getLinePayByLineIds(List<Long> lineIds) {
if(Objects.isNull(lineIds) || lineIds.size() == 0){
return new HashMap<>();
}
List<LinePayDO> linePayDO = linePayMapper.getLinePayByLineIds(lineIds);
return linePayDO.stream().collect(Collectors.toMap(LinePayDO::getLineId, linePayDO1 -> linePayDO1, (o, n) -> o));
}
}

View File

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

View File

@@ -3,6 +3,7 @@ package com.cool.store.mapper;
import com.cool.store.entity.LineInfoDO;
import com.cool.store.enums.WorkflowSubStageStatusEnum;
import com.cool.store.request.LineListRequest;
import com.cool.store.request.PartnerRequest;
import com.cool.store.request.PublicLineListRequest;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;
@@ -19,7 +20,16 @@ public interface LineInfoMapper extends Mapper<LineInfoDO> {
* @param investmentManagerUserId
* @return
*/
List<LineInfoDO> listByInvestmentManager(@Param("investmentManagerUserId") String investmentManagerUserId, @Param("code") Integer code);
List<LineInfoDO> listByInvestmentManager(@Param("investmentManagerUserId") String investmentManagerUserId, @Param("codes") List<Integer> codes);
/**
* 面试官待处理
* @param interviewId
* @param interviewType
* @param codes
* @return
*/
List<LineInfoDO> listByInterview(@Param("interviewId") String interviewId, @Param("interviewType") Integer interviewType, @Param("codes") List<Integer> codes);
/**
* 我的线索列表
@@ -30,13 +40,22 @@ public interface LineInfoMapper extends Mapper<LineInfoDO> {
@Param("userId") String userId,
@Param("wantShopAreaIds") List<Long> wantShopAreaIds);
List<LineInfoDO> partnerList(@Param("request") PartnerRequest partnerRequest,
@Param("wantShopAreaName") String wantShopAreaName,
@Param("userId") String userId,
@Param("wantShopAreaIds") List<Long> wantShopAreaIds);
/**
* 公海线索列表
* @param publicLineListVO
* @param publicLineListRequest
* @return
*/
List<LineInfoDO> publicLineList(@Param("request") PublicLineListRequest publicLineListRequest);
/**
* 根据lineId判断是更新还是插入
* @param lineInfoParam
*/
void insertOrUpdate(@Param("param") LineInfoDO lineInfoParam);
}

View File

@@ -3,6 +3,8 @@ package com.cool.store.mapper;
import com.cool.store.entity.LinePayDO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author wxp
* @date 2024-03-27 09:25
@@ -39,4 +41,11 @@ public interface LinePayMapper {
LinePayDO getLinePayByLineId(@Param("lineId") Long lineId);
/**
* getLinePayByLineIds
* @param lineIds
* @return
*/
List<LinePayDO> getLinePayByLineIds(@Param("lineIds") List<Long> lineIds);
}

View File

@@ -48,6 +48,8 @@ public interface SysRoleMapper {
*/
List<SysRoleDO> getRolesByName(@Param("roleName") String roleName);
SysRoleDO getRolesByNameAndSource(@Param("roleName") String roleName, @Param("source") String source);
/**
* 查询角色详情
* @param roleId

View File

@@ -5,6 +5,7 @@ import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import javax.websocket.server.PathParam;
import java.util.List;
@Mapper
public interface TrainingExperienceMapper {
@@ -16,4 +17,6 @@ public interface TrainingExperienceMapper {
@Param("abandonCause") String abandonCause);
LeaseBaseInfoDO selectByLineId(@Param("lineId") Long lineId);
List<LeaseBaseInfoDO> selectByLineIds(@Param("lineIds") List<Long> lineIds);
}

View File

@@ -76,6 +76,11 @@
<if test="request.businessLicenseAddress != null">#{request.businessLicenseAddress},</if>
</trim>
</insert>
<update id="updateAuditId">
update xfsg_signing_base_info
set audit_id = #{auditId}
where line_id = #{lineId}
</update>
<select id="selectByPartnerIdOrLineId" resultType="com.cool.store.entity.SigningBaseInfoDO">
select
<include refid="Base_Column_List"/>
@@ -105,5 +110,16 @@
</where>
</select>
<select id="selectByLineIds" resultType="com.cool.store.entity.SigningBaseInfoDO">
select
<include refid="Base_Column_List"/>
from xfsg_signing_base_info
where deleted = 0
<if test="lineIds !=null and lineIds.size>0">
<foreach collection="lineIds" item="lineId" open="and line_id in (" close=")" separator=",">
#{lineId}
</foreach>
</if>
</select>
</mapper>

View File

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

View File

@@ -280,4 +280,13 @@
<select id="getLinePayByLineId" resultMap="BaseResultMap">
select * from xfsg_line_pay where line_id = #{lineId} and deleted = '0'
</select>
<select id="getLinePayByLineIds" resultMap="BaseResultMap">
select * from xfsg_line_pay where deleted = 0
<if test="lineIds !=null and lineIds.size>0">
<foreach collection="lineIds" item="lineId" open="and line_id in (" close=")" separator=",">
#{lineId}
</foreach>
</if>
</select>
</mapper>

View File

@@ -137,6 +137,15 @@
</select>
<select id="getRolesByNameAndSource" resultType="com.cool.store.entity.SysRoleDO">
select
id as id,
role_name as roleName,
role_auth as roleAuth
from sys_role_${enterpriseId}
where role_name = #{roleName} and source = #{source}
</select>
<select id="getRole" resultType="com.cool.store.entity.SysRoleDO">
select
id as id,

View File

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

View File

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

View File

@@ -0,0 +1,22 @@
package com.cool.store.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("意向加盟合同审核结果请求体")
public class AuditResultRequest {
@ApiModelProperty("kdz业务id唯一标识")
private String kdzBusinessId;
@ApiModelProperty("审核结果 1成功 0失败")
private Integer auditResult;
@ApiModelProperty("失败真实原因(审核结果为0时填写)")
private String failureCause;
@ApiModelProperty("通过/失败原因")
private String cause;
}

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,13 @@
package com.cool.store.request;
import lombok.Data;
@Data
public class XfsgOpenApiRequest {
private String sign;
private Long timestamp;
private String bizContent;
}

View File

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

View File

@@ -18,6 +18,9 @@ public class InterviewPendingVO extends BaseInfoVO {
@ApiModelProperty("面谈结束时间 10:00")
private String endTime;
@ApiModelProperty("面试官名称")
private String interviewer;
public InterviewPendingVO(){};
public InterviewPendingVO(BaseInfoVO baseInfoVO) {

View File

@@ -0,0 +1,24 @@
package com.cool.store.vo.desk;
import com.cool.store.vo.BaseInfoVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author suzhuhong
* @Date 2024/4/1 16:37
* @Version 1.0
*/
@Data
public class PayStagePendingVO extends BaseInfoVO {
@ApiModelProperty("缴费时间 2024年04月23日 16:00")
private String payTime;
public PayStagePendingVO(){};
public PayStagePendingVO(BaseInfoVO baseInfoVO) {
super(baseInfoVO);
}
}

View File

@@ -0,0 +1,26 @@
package com.cool.store.vo.desk;
import com.cool.store.vo.BaseInfoVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author suzhuhong
* @Date 2024/4/1 16:55
* @Version 1.0
*/
@Data
public class SigningPendingVO extends BaseInfoVO {
@ApiModelProperty("提交时间 2024年04月23日 16:00")
private String submitTime;
public SigningPendingVO(){};
public SigningPendingVO(BaseInfoVO baseInfoVO) {
super(baseInfoVO);
}
}

View File

@@ -0,0 +1,26 @@
package com.cool.store.vo.desk;
import com.cool.store.vo.BaseInfoVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author suzhuhong
* @Date 2024/4/1 17:05
* @Version 1.0
*/
@Data
public class StoreExperiencePendingVO extends BaseInfoVO {
@ApiModelProperty("开始时间 2024年04月23日")
private String experienceStartTime;
@ApiModelProperty("结束时间 23日")
private String experienceEndTime;
public StoreExperiencePendingVO(){};
public StoreExperiencePendingVO(BaseInfoVO baseInfoVO) {
super(baseInfoVO);
}
}

View File

@@ -1,10 +1,10 @@
package com.cool.store.service;
import com.cool.store.context.LoginUserInfo;
import com.cool.store.entity.HyPartnerLabelDO;
import com.cool.store.entity.LineInfoDO;
import com.cool.store.vo.BaseInfoVO;
import com.cool.store.vo.desk.IntendPendingVO;
import com.cool.store.vo.desk.InterviewPendingVO;
import com.cool.store.vo.desk.*;
import com.github.pagehelper.PageInfo;
import java.util.List;
@@ -36,6 +36,52 @@ public interface DeskService {
*/
PageInfo<InterviewPendingVO> interviewPendingList(Integer pageNum, Integer pageSize,String userId);
/**
* 一审面试待处理
* @param pageNum
* @param pageSize
* @param user
* @return
*/
PageInfo<InterviewPendingVO> firstInterviewPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);
/**
* 二审面试待处理
* @param pageNum
* @param pageSize
* @param user
* @return
*/
PageInfo<InterviewPendingVO> secondInterviewPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);
/**
* payStagePendingList
* @param pageNum
* @param pageSize
* @param user
* @return
*/
PageInfo<PayStagePendingVO> payStagePendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);
/**
* signingPendingList
* @param pageNum
* @param pageSize
* @param user
* @return
*/
PageInfo<SigningPendingVO> signingPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);
/**
* storeExperiencePendingList
* @param pageNum
* @param pageSize
* @param user
* @return
*/
PageInfo<StoreExperiencePendingVO> storeExperiencePendingList(Integer pageNum, Integer pageSize, LoginUserInfo user);
/**
* convertToBaseInfoVO
* @param lineInfoDO

View File

@@ -0,0 +1,7 @@
package com.cool.store.service;
import com.cool.store.request.AuditResultRequest;
public interface KdzApiService {
boolean auditResult(AuditResultRequest request);
}

View File

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

View File

@@ -1,24 +1,20 @@
package com.cool.store.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.cool.store.dao.HyOpenAreaInfoDAO;
import com.cool.store.dao.HyPartnerLabelDAO;
import com.cool.store.dao.LineInfoDAO;
import com.cool.store.dao.LineInterviewDAO;
import com.cool.store.entity.HyOpenAreaInfoDO;
import com.cool.store.entity.HyPartnerLabelDO;
import com.cool.store.entity.LineInfoDO;
import com.cool.store.entity.LineInterviewDO;
import com.cool.store.context.LoginUserInfo;
import com.cool.store.dao.*;
import com.cool.store.entity.*;
import com.cool.store.enums.InterviewTypeEnum;
import com.cool.store.enums.WorkflowSubStageStatusEnum;
import com.cool.store.mapper.IntentAgreementMapper;
import com.cool.store.mapper.LineInterviewMapper;
import com.cool.store.mapper.TrainingExperienceMapper;
import com.cool.store.service.DeskService;
import com.cool.store.utils.StringUtil;
import com.cool.store.utils.poi.DateUtils;
import com.cool.store.vo.BaseInfoVO;
import com.cool.store.vo.LabelBaseInfoVO;
import com.cool.store.vo.desk.IntendPendingVO;
import com.cool.store.vo.desk.InterviewPendingVO;
import com.cool.store.vo.desk.*;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.collections4.CollectionUtils;
@@ -44,11 +40,17 @@ public class DeskServiceImpl implements DeskService {
HyOpenAreaInfoDAO hyOpenAreaInfoDAO;
@Resource
LineInterviewDAO lineInterviewDAO;
@Resource
LinePayDAO linePayDAO;
@Resource
IntentAgreementMapper intentAgreementMapper;
@Resource
TrainingExperienceMapper trainingExperienceMapper;
@Override
public PageInfo<IntendPendingVO> intendPendingList(Integer pageNum, Integer pageSize,String userId) {
PageHelper.startPage(pageNum, pageSize);
List<LineInfoDO> lineInfoDOS = lineInfoDAO.listByInvestmentManager(userId, WorkflowSubStageStatusEnum.INTENT_5.getCode());
List<LineInfoDO> lineInfoDOS = lineInfoDAO.listByInvestmentManager(userId, Arrays.asList(WorkflowSubStageStatusEnum.INTENT_5.getCode()));
PageInfo page = new PageInfo(lineInfoDOS);
Map<Long, HyPartnerLabelDO> userPortraitMap = this.getUserPortraitMap(lineInfoDOS);
List<Long> wantShopAreaIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getWantShopAreaId() != null).map(LineInfoDO::getWantShopAreaId).collect(Collectors.toList());
@@ -68,7 +70,7 @@ public class DeskServiceImpl implements DeskService {
@Override
public PageInfo<InterviewPendingVO> interviewPendingList(Integer pageNum, Integer pageSize, String userId) {
PageHelper.startPage(pageNum, pageSize);
List<LineInfoDO> lineInfoDOS = lineInfoDAO.listByInvestmentManager(userId,WorkflowSubStageStatusEnum.INTENT_5.getCode());
List<LineInfoDO> lineInfoDOS = lineInfoDAO.listByInvestmentManager(userId,Arrays.asList(WorkflowSubStageStatusEnum.INVITING_INTERVIEWS_20.getCode()));
PageInfo page = new PageInfo(lineInfoDOS);
Map<Long, HyPartnerLabelDO> userPortraitMap = this.getUserPortraitMap(lineInfoDOS);
List<Long> wantShopAreaIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getWantShopAreaId() != null).map(LineInfoDO::getWantShopAreaId).collect(Collectors.toList());
@@ -92,6 +94,155 @@ public class DeskServiceImpl implements DeskService {
return page;
}
@Override
public PageInfo<InterviewPendingVO> firstInterviewPendingList(Integer pageNum, Integer pageSize, LoginUserInfo userInfo) {
PageHelper.startPage(pageNum, pageSize);
List<LineInfoDO> lineInfoDOS = lineInfoDAO.listByInterview(userInfo.getUserId(),InterviewTypeEnum.INTERVIEW.getCode(),
Arrays.asList(WorkflowSubStageStatusEnum.FIRST_INTERVIEWS_35.getCode(),
WorkflowSubStageStatusEnum.FIRST_INTERVIEWS_40.getCode(),
WorkflowSubStageStatusEnum.FIRST_INTERVIEWS_30.getCode()));
PageInfo page = new PageInfo(lineInfoDOS);
Map<Long, HyPartnerLabelDO> userPortraitMap = this.getUserPortraitMap(lineInfoDOS);
List<Long> wantShopAreaIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getWantShopAreaId() != null).map(LineInfoDO::getWantShopAreaId).collect(Collectors.toList());
Map<Long, String> wantShopAreaMap = hyOpenAreaInfoDAO.selectNameMapByIds(wantShopAreaIds);
List<Long> lineIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getId() != null).map(LineInfoDO::getId).collect(Collectors.toList());
List<LineInterviewDO> interviewByLindIds = lineInterviewDAO.getInterviewByLindIds(lineIds, InterviewTypeEnum.MEET);
Map<Long, LineInterviewDO> interviewDOMap = interviewByLindIds.stream().collect(Collectors.toMap(LineInterviewDO::getLineId, x -> x, (k1, k2) -> k1));
List<InterviewPendingVO> list = new ArrayList<>();
lineInfoDOS.forEach(x->{
BaseInfoVO baseInfoVO = convertToBaseInfoVO(x, userPortraitMap, wantShopAreaMap);
InterviewPendingVO interviewPendingVO = new InterviewPendingVO(baseInfoVO);
LineInterviewDO lineInterviewDO = interviewDOMap.get(x.getId());
if (lineInterviewDO != null){
interviewPendingVO.setStartTime(DateUtils.parseDateToStr(DateUtils.SPECIAL_DATE_START,lineInterviewDO.getStartTime()));
interviewPendingVO.setEndTime(DateUtils.parseDateToStr(DateUtils.SPECIAL_DATE_END,lineInterviewDO.getEndTime()));
interviewPendingVO.setInterviewer(userInfo.getName());
}
list.add(interviewPendingVO);
});
page.setList(list);
return page;
}
@Override
public PageInfo<InterviewPendingVO> secondInterviewPendingList(Integer pageNum, Integer pageSize, LoginUserInfo userInfo) {
PageHelper.startPage(pageNum, pageSize);
List<LineInfoDO> lineInfoDOS = lineInfoDAO.listByInterview(userInfo.getUserId(),InterviewTypeEnum.SECOND_INTERVIEW.getCode(),
Arrays.asList(WorkflowSubStageStatusEnum.SECOND_INTERVIEWS_105.getCode(),
WorkflowSubStageStatusEnum.SECOND_INTERVIEWS_110.getCode(),
WorkflowSubStageStatusEnum.SECOND_INTERVIEWS_115.getCode()));
PageInfo page = new PageInfo(lineInfoDOS);
Map<Long, HyPartnerLabelDO> userPortraitMap = this.getUserPortraitMap(lineInfoDOS);
List<Long> wantShopAreaIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getWantShopAreaId() != null).map(LineInfoDO::getWantShopAreaId).collect(Collectors.toList());
Map<Long, String> wantShopAreaMap = hyOpenAreaInfoDAO.selectNameMapByIds(wantShopAreaIds);
List<Long> lineIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getId() != null).map(LineInfoDO::getId).collect(Collectors.toList());
List<LineInterviewDO> interviewByLindIds = lineInterviewDAO.getInterviewByLindIds(lineIds, InterviewTypeEnum.MEET);
Map<Long, LineInterviewDO> interviewDOMap = interviewByLindIds.stream().collect(Collectors.toMap(LineInterviewDO::getLineId, x -> x, (k1, k2) -> k1));
List<InterviewPendingVO> list = new ArrayList<>();
lineInfoDOS.forEach(x->{
BaseInfoVO baseInfoVO = convertToBaseInfoVO(x, userPortraitMap, wantShopAreaMap);
InterviewPendingVO interviewPendingVO = new InterviewPendingVO(baseInfoVO);
LineInterviewDO lineInterviewDO = interviewDOMap.get(x.getId());
if (lineInterviewDO != null){
interviewPendingVO.setStartTime(DateUtils.parseDateToStr(DateUtils.SPECIAL_DATE_START,lineInterviewDO.getStartTime()));
interviewPendingVO.setEndTime(DateUtils.parseDateToStr(DateUtils.SPECIAL_DATE_END,lineInterviewDO.getEndTime()));
interviewPendingVO.setInterviewer(userInfo.getName());
}
list.add(interviewPendingVO);
});
page.setList(list);
return page;
}
@Override
public PageInfo<PayStagePendingVO> payStagePendingList(Integer pageNum, Integer pageSize, LoginUserInfo user) {
PageHelper.startPage(pageNum, pageSize);
List<LineInfoDO> lineInfoDOS = lineInfoDAO.listByInvestmentManager(user.getUserId(), Arrays.asList(WorkflowSubStageStatusEnum.PAY_DEPOSIT_50.getCode()));
PageInfo page = new PageInfo(lineInfoDOS);
Map<Long, HyPartnerLabelDO> userPortraitMap = this.getUserPortraitMap(lineInfoDOS);
List<Long> wantShopAreaIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getWantShopAreaId() != null).map(LineInfoDO::getWantShopAreaId).collect(Collectors.toList());
Map<Long, String> wantShopAreaMap = hyOpenAreaInfoDAO.selectNameMapByIds(wantShopAreaIds);
List<Long> lineIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getId() != null).map(LineInfoDO::getId).collect(Collectors.toList());
Map<Long, LinePayDO> payMap = linePayDAO.getLinePayByLineIds(lineIds);
List<PayStagePendingVO> list = new ArrayList<>();
lineInfoDOS.forEach(x->{
BaseInfoVO baseInfoVO = convertToBaseInfoVO(x, userPortraitMap, wantShopAreaMap);
PayStagePendingVO payStagePendingVO = new PayStagePendingVO(baseInfoVO);
LinePayDO linePayDO = payMap.get(x.getId());
if (linePayDO != null && linePayDO.getPayTime() != null){
payStagePendingVO.setPayTime(DateUtils.parseDateToStr(DateUtils.SPECIAL_DATE_START,linePayDO.getPayTime()));
}
list.add(payStagePendingVO);
});
page.setList(list);
return page ;
}
@Override
public PageInfo<SigningPendingVO> signingPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user) {
PageHelper.startPage(pageNum, pageSize);
List<LineInfoDO> lineInfoDOS = lineInfoDAO.listByInvestmentManager(user.getUserId(),
Arrays.asList(WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_63.getCode(),
WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_70.getCode(),
WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_80.getCode()));
PageInfo page = new PageInfo(lineInfoDOS);
Map<Long, HyPartnerLabelDO> userPortraitMap = this.getUserPortraitMap(lineInfoDOS);
List<Long> wantShopAreaIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getWantShopAreaId() != null).map(LineInfoDO::getWantShopAreaId).collect(Collectors.toList());
Map<Long, String> wantShopAreaMap = hyOpenAreaInfoDAO.selectNameMapByIds(wantShopAreaIds);
List<Long> lineIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getId() != null).map(LineInfoDO::getId).collect(Collectors.toList());
List<SigningBaseInfoDO> signingBaseInfoDOS = intentAgreementMapper.selectByLineIds(lineIds);
Map<Long, Date> dateMap = signingBaseInfoDOS.stream().collect(Collectors.toMap(SigningBaseInfoDO::getId, SigningBaseInfoDO::getCreateTime));
List<SigningPendingVO> list = new ArrayList<>();
lineInfoDOS.forEach(x->{
BaseInfoVO baseInfoVO = convertToBaseInfoVO(x, userPortraitMap, wantShopAreaMap);
SigningPendingVO signingPendingVO = new SigningPendingVO(baseInfoVO);
Date date = dateMap.get(x.getId());
if (date != null){
signingPendingVO.setSubmitTime(DateUtils.parseDateToStr(DateUtils.SPECIAL_DATE_START,date));
}
list.add(signingPendingVO);
});
page.setList(list);
return page ;
}
@Override
public PageInfo<StoreExperiencePendingVO> storeExperiencePendingList(Integer pageNum, Integer pageSize, LoginUserInfo user) {
PageHelper.startPage(pageNum, pageSize);
List<LineInfoDO> lineInfoDOS = lineInfoDAO.listByInvestmentManager(user.getUserId(),
Arrays.asList(WorkflowSubStageStatusEnum.STORE_EXPERIENCE_85.getCode(),
WorkflowSubStageStatusEnum.STORE_EXPERIENCE_95.getCode()));
PageInfo page = new PageInfo(lineInfoDOS);
Map<Long, HyPartnerLabelDO> userPortraitMap = this.getUserPortraitMap(lineInfoDOS);
List<Long> wantShopAreaIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getWantShopAreaId() != null).map(LineInfoDO::getWantShopAreaId).collect(Collectors.toList());
Map<Long, String> wantShopAreaMap = hyOpenAreaInfoDAO.selectNameMapByIds(wantShopAreaIds);
List<Long> lineIds = lineInfoDOS.stream().filter(lineInfoDO -> lineInfoDO.getId() != null).map(LineInfoDO::getId).collect(Collectors.toList());
Map<Long, LeaseBaseInfoDO> infoDOMap = new HashMap<>();
if (CollectionUtils.isNotEmpty(lineIds)){
List<LeaseBaseInfoDO> leaseBaseInfoDOS = trainingExperienceMapper.selectByLineIds(lineIds);
infoDOMap = leaseBaseInfoDOS.stream().collect(Collectors.toMap(LeaseBaseInfoDO::getLineId, x -> x));
}
List<StoreExperiencePendingVO> list = new ArrayList<>();
Map<Long, LeaseBaseInfoDO> finalInfoDOMap = infoDOMap;
lineInfoDOS.forEach(x->{
BaseInfoVO baseInfoVO = convertToBaseInfoVO(x, userPortraitMap, wantShopAreaMap);
StoreExperiencePendingVO storeExperiencePendingVO = new StoreExperiencePendingVO(baseInfoVO);
LeaseBaseInfoDO date = finalInfoDOMap.get(x.getId());
if (date != null && date.getExperienceStartTime() != null && date.getExperienceEndTime() != null){
storeExperiencePendingVO.setExperienceStartTime(DateUtils.parseDateToStr(DateUtils.SPECIAL_DATE_START_1,date.getExperienceStartTime()));
storeExperiencePendingVO.setExperienceEndTime(DateUtils.parseDateToStr(DateUtils.SPECIAL_DATE_START_2,date.getExperienceEndTime()));
}
list.add(storeExperiencePendingVO);
});
page.setList(list);
return page ;
}
/**
* convertToBaseInfoVO
* @param lineInfoDO

View File

@@ -89,8 +89,8 @@ public class IntentAgreementServiceImpl extends LineFlowService implements Inten
@Override
protected Boolean auditPass(Long auditId, LineInfoDO lineInfo) {
//校验是否是审核节点
if ((lineInfo.getWorkflowStage().equals(WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_63.getCode()) ||
lineInfo.getWorkflowStage().equals(WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_75.getCode()))){
if (!lineInfo.getWorkflowStage().equals(WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_63.getCode()) &&
!lineInfo.getWorkflowStage().equals(WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_75.getCode())){
throw new ServiceException(ErrorCodeEnum.NOT_APPROVE_NODE);
}
//待审核code 63 处理逻辑
@@ -104,14 +104,22 @@ public class IntentAgreementServiceImpl extends LineFlowService implements Inten
WorkflowSubStageEnum nextStage = workflowSubStageEnum.getNextStage();
//更新线索阶段
lineInfoDAO.updateWorkflowStage(lineInfo.getId(), nextStage, nextStage.getInitStatus());
//更新auditId
SigningBaseInfoDO signingBaseInfoDO = intentAgreementMapper.selectByPartnerIdOrLineId(null, lineInfo.getId());
if (Objects.nonNull(signingBaseInfoDO)){
intentAgreementMapper.updateAuditId(lineInfo.getId(),auditId);
}else {
throw new ServiceException("无法更新,没有对应的签约基本信息");
}
}
return Boolean.TRUE;
}
@Override
protected Boolean auditReject(Long auditId, LineInfoDO lineInfo) {
if ((lineInfo.getWorkflowStage().equals(WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_63.getCode()) ||
lineInfo.getWorkflowStage().equals(WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_75.getCode()))){
if ((!lineInfo.getWorkflowStage().equals(WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_63.getCode()) &&
!lineInfo.getWorkflowStage().equals(WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_75.getCode()))){
throw new ServiceException(ErrorCodeEnum.NOT_APPROVE_NODE);
}
//待审核code 63 处理逻辑
@@ -123,6 +131,8 @@ public class IntentAgreementServiceImpl extends LineFlowService implements Inten
if(lineInfo.getWorkflowStage().equals(WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_75.getCode())){
lineInfo.setWorkflowSubStageStatus(WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_80.getCode());
lineInfoDAO.updateLineInfo(lineInfo);
//更新auditId
intentAgreementMapper.updateAuditId(lineInfo.getId(),auditId);
}
return Boolean.TRUE;
}

View File

@@ -0,0 +1,69 @@
package com.cool.store.service.impl;
import com.cool.store.entity.LineInfoDO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.mapper.LineInfoMapper;
import com.cool.store.request.AuditPassRequest;
import com.cool.store.request.AuditRejectRequest;
import com.cool.store.request.AuditResultRequest;
import com.cool.store.service.KdzApiService;
import com.cool.store.utils.StringUtil;
import com.cool.store.utils.poi.constant.Constants;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Objects;
@Service
@Slf4j
public class KdzApiServiceImpl implements KdzApiService {
@Resource
LineInfoMapper lineInfoMapper;
@Resource
private CommonService commonService;
@Override
public boolean auditResult(AuditResultRequest request) {
if (Objects.isNull(request) || StringUtil.isBlank(request.getKdzBusinessId())){
throw new ServiceException(ErrorCodeEnum.PARAMS_VALIDATE_ERROR);
}
String kdzBusinessId = request.getKdzBusinessId();
String lineId = splitMethod(kdzBusinessId);
if (StringUtil.isBlank(lineId)){
throw new ServiceException("kdzBusinessId解析异常,请检查");
}
LineInfoDO lineInfoDO = lineInfoMapper.getByLineId(Long.valueOf(lineId));
try {
if (request.getAuditResult() == 1){
AuditPassRequest auditPassRequest = new AuditPassRequest();
auditPassRequest.setLineId(lineInfoDO.getId());
auditPassRequest.setPassReason(request.getCause());
auditPassRequest.setWorkflowSubStage(lineInfoDO.getWorkflowSubStage());
commonService.getLineFlowService(auditPassRequest.getWorkflowSubStage()).auditPass(auditPassRequest);
}else if (request.getAuditResult() == 0){
AuditRejectRequest auditRejectRequest = new AuditRejectRequest();
auditRejectRequest.setLineId(lineInfoDO.getId());
auditRejectRequest.setWorkflowSubStage(lineInfoDO.getWorkflowSubStage());
auditRejectRequest.setRejectPublicReason(request.getCause());
auditRejectRequest.setRejectRealReason(request.getFailureCause());
commonService.getLineFlowService(auditRejectRequest.getWorkflowSubStage()).auditReject(auditRejectRequest);
}
}catch (Exception e){
throw new ServiceException(e.getMessage());
}
return true;
}
public static String splitMethod(String kdzBusinessId){
String[] split = kdzBusinessId.split(Constants.D_LINE);
if (split.length >= 2){
return split[0];
}else {
return null;
}
}
}

View File

@@ -1,6 +1,7 @@
package com.cool.store.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.context.LoginUserInfo;
import com.cool.store.dao.LineAuditInfoDAO;
import com.cool.store.dao.LineInfoDAO;
import com.cool.store.entity.LineAuditInfoDO;
@@ -11,6 +12,8 @@ import com.cool.store.enums.LineStatusEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.request.AuditPassRequest;
import com.cool.store.request.AuditRejectRequest;
import com.cool.store.request.LineFollowLogRequest;
import com.cool.store.service.LineFollowService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -29,6 +32,8 @@ public abstract class LineFlowService {
private LineAuditInfoDAO lineAuditInfoDAO;
@Resource
private LineInfoDAO lineInfoDAO;
@Resource
private LineFollowService lineFollowService;
/**
* 审核通过
@@ -81,7 +86,7 @@ public abstract class LineFlowService {
* @return
*/
@Transactional(rollbackFor = Exception.class)
public Boolean auditClose(AuditRejectRequest request){
public Boolean auditClose(AuditRejectRequest request, LoginUserInfo user){
LineInfoDO lineInfo = lineInfoDAO.getLineInfo(request.getLineId());
if(!lineInfo.getWorkflowSubStage().equals(request.getWorkflowSubStage())){
throw new ServiceException(ErrorCodeEnum.WORK_FLOW_STAGE_PASS_ERROR);
@@ -99,6 +104,10 @@ public abstract class LineFlowService {
updateLineInfo.setId(request.getLineId());
updateLineInfo.setLineStatus(LineStatusEnum.PUBLIC_SEAS.getCode());
lineInfoDAO.updateLineInfo(updateLineInfo);
LineFollowLogRequest lineFollowLogRequest = new LineFollowLogRequest();
lineFollowLogRequest.setLineId(request.getLineId());
lineFollowLogRequest.setMessage(String.format("结束跟进原因:%s", request.getRejectRealReason()));
lineFollowService.addFollowLog(lineFollowLogRequest,user.getUserId(),user.getName());
return auditClose(auditId, lineInfo);
}

View File

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

View File

@@ -10,12 +10,15 @@ import com.cool.store.mapper.RegionMapper;
import com.cool.store.mapper.SysRoleMapper;
import com.cool.store.mapper.UserAuthMappingMapper;
import com.cool.store.service.UserAuthMappingService;
import com.cool.store.utils.RedisConstantUtil;
import com.cool.store.utils.RedisUtilPool;
import com.cool.store.vo.SysRoleVO;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -46,6 +49,11 @@ public class UserAuthMappingServiceImpl implements UserAuthMappingService {
@Resource
private EnterpriseUserDAO enterpriseUserDAO;
@Resource
private RedisUtilPool redisUtilPool;
@Autowired
private RedisConstantUtil redisConstantUtil;
@Override
public List<UserAuthMappingDO> listUserAuthMappingByUserId(String userId) {
@@ -63,24 +71,40 @@ public class UserAuthMappingServiceImpl implements UserAuthMappingService {
*/
@Override
public EnterpriseUserDO getUserByRoleNameAndAreaId(String roleName, Long wantShopAreaId) {
if(StringUtils.isBlank(roleName) || wantShopAreaId == null){
if(StringUtils.isBlank(roleName) || Objects.isNull(wantShopAreaId)){
return null;
}
List<SysRoleDO> roleList = sysRoleMapper.getRolesByName(roleName);
if (CollectionUtils.isEmpty(roleList)) {
if(UserRoleEnum.INVESTMENT_MANAGER.getDesc().equals(roleName)){
// 找大区经理 找不到找战区经理,再找不到找大区经理?
String suitableUserId = null;
String investmentManagerKey = redisConstantUtil.getInvestmentManagerKey(wantShopAreaId);
if(UserRoleEnum.INVESTMENT_MANAGER.getDesc().equals(roleName)){
suitableUserId = redisUtilPool.rpopStr(investmentManagerKey);
if(StringUtils.isNotBlank(suitableUserId)){
EnterpriseUserDO userDO = enterpriseUserDAO.getUserInfoById(suitableUserId);
return userDO;
}
}
Long roleId = roleList.get(0).getId();
SysRoleDO sysRoleDO = sysRoleMapper.getRolesByNameAndSource(roleName, RoleSourceEnum.CREATE.getCode());
Long roleId = sysRoleDO.getId();
List<String> hasRoleUserIdList = sysRoleMapper.getPositionUserIds(Collections.singletonList(String.valueOf(roleId)));
if(UserRoleEnum.INVESTMENT_MANAGER.getDesc().equals(roleName) && CollectionUtils.isEmpty(hasRoleUserIdList)){
// 找大区经理 找不到找战区经理,再找不到找大区经理?
sysRoleDO = sysRoleMapper.getRolesByNameAndSource(UserRoleEnum.REGION_MANAGER.getDesc(), RoleSourceEnum.CREATE.getCode());
roleId = sysRoleDO.getId();
hasRoleUserIdList = sysRoleMapper.getPositionUserIds(Collections.singletonList(String.valueOf(roleId)));
}
Long warRegionId = regionAreaConfigDao.getByWantShopAreaId(wantShopAreaId);
// 查找有战区权限的人
List<String> authWarRegionUserIdList = authWarRegionUser(warRegionId);
List<String> userIds = sysRoleMapper.getPositionUserIds(Collections.singletonList(String.valueOf(roleId)));
authWarRegionUserIdList.retainAll(userIds);
List<EnterpriseUserDO> userDOList = enterpriseUserDAO.getUserInfoByUserIds(authWarRegionUserIdList);
// 用redis实现 用户列表轮询返回
return userDOList.get(0);
authWarRegionUserIdList.retainAll(hasRoleUserIdList);
if(UserRoleEnum.INVESTMENT_MANAGER.getDesc().equals(roleName)){
// 按工号排序后放入redis
redisUtilPool.listPushTail(investmentManagerKey, authWarRegionUserIdList.toArray(new String[authWarRegionUserIdList.size()]));
suitableUserId = redisUtilPool.rpopStr(investmentManagerKey);
}else {
suitableUserId = authWarRegionUserIdList.get(0);
}
EnterpriseUserDO userDO = enterpriseUserDAO.getUserInfoById(suitableUserId);
return userDO;
}
/**
@@ -90,6 +114,13 @@ public class UserAuthMappingServiceImpl implements UserAuthMappingService {
*/
@Override
public List<Long> listWantShopAreaIdByUserId(String userId) {
//如果在缓存中存在,从缓存中去取
String userWantAreaListKey = redisConstantUtil.getUserWantAreaListKey(userId);
List<String> userWantAreaList = redisUtilPool.listGetAll(userWantAreaListKey);
if (CollectionUtils.isNotEmpty(userWantAreaList)) {
List<Long> authRegionIdListFromCache = userWantAreaList.stream().map(regionId -> Long.valueOf(regionId)).collect(Collectors.toList());
return authRegionIdListFromCache;
}
List<UserAuthMappingDO> userAuthList = this.listUserAuthMappingByUserId(userId);
List<String> authRegionIds = ListUtils.emptyIfNull(userAuthList)
.stream().map(UserAuthMappingDO::getMappingId)
@@ -99,6 +130,11 @@ public class UserAuthMappingServiceImpl implements UserAuthMappingService {
List<Long> wantShopAreaIdList = ListUtils.emptyIfNull(regionAreaConfigDOList)
.stream().map(RegionAreaConfigDO::getWantShopAreaId)
.collect(Collectors.toList());
List<String> wantShopAreaIdStrList = wantShopAreaIdList.stream().map(areaId -> String.valueOf(areaId)).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(wantShopAreaIdStrList)) {
redisUtilPool.listPushTail(userWantAreaListKey, wantShopAreaIdStrList.toArray(new String[wantShopAreaIdList.size()]));
redisUtilPool.expire(userWantAreaListKey, 5 * 60);
}
return wantShopAreaIdList;
}

View File

@@ -31,6 +31,10 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
public static String SPECIAL_DATE_START = "yyyy年MM月dd日 HH:mm";
public static String SPECIAL_DATE_START_1 = "yyyy年MM月dd日";
public static String SPECIAL_DATE_START_2 = "dd日";
public static String SPECIAL_DATE_END = "HH:mm";
private static String[] parsePatterns = {

View File

@@ -1,9 +1,10 @@
package com.cool.store.controller.webb;
import com.cool.store.context.CurrentUserHolder;
import com.cool.store.context.LoginUserInfo;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.DeskService;
import com.cool.store.vo.desk.IntendPendingVO;
import com.cool.store.vo.desk.InterviewPendingVO;
import com.cool.store.vo.desk.*;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -32,7 +33,7 @@ public class DeskController {
@GetMapping("/intendPendingList")
public ResponseResult<PageInfo<IntendPendingVO>> intendPendingList(@RequestParam(value = "pageNumber",required = true,defaultValue = "1")Integer pageNumber,
@RequestParam(value = "pageSize",required = true,defaultValue = "10")Integer pageSize) {
// LoginUserInfo userInfo = CurrentUserHolder.getUser();
LoginUserInfo userInfo = CurrentUserHolder.getUser();
return ResponseResult.success(deskService.intendPendingList(pageNumber,pageSize,"055740241221153440"));
}
@@ -40,10 +41,56 @@ public class DeskController {
@GetMapping("/interviewPendingList")
public ResponseResult<PageInfo<InterviewPendingVO>> interviewPendingList(@RequestParam(value = "pageNumber",required = true,defaultValue = "1")Integer pageNumber,
@RequestParam(value = "pageSize",required = true,defaultValue = "10")Integer pageSize) {
// LoginUserInfo userInfo = CurrentUserHolder.getUser();
LoginUserInfo userInfo = CurrentUserHolder.getUser();
return ResponseResult.success(deskService.interviewPendingList(pageNumber,pageSize,"055740241221153440"));
}
@ApiOperation("待处理-一审")
@GetMapping("/firstInterviewPendingList")
public ResponseResult<PageInfo<InterviewPendingVO>> firstInterviewPendingList(@RequestParam(value = "pageNumber",required = true,defaultValue = "1")Integer pageNumber,
@RequestParam(value = "pageSize",required = true,defaultValue = "10")Integer pageSize) {
LoginUserInfo userInfo = CurrentUserHolder.getUser();
userInfo.setUserId("055740241221153440");
return ResponseResult.success(deskService.firstInterviewPendingList(pageNumber,pageSize,userInfo));
}
@ApiOperation("待处理-二审")
@GetMapping("/secondInterviewPendingList")
public ResponseResult<PageInfo<InterviewPendingVO>> secondInterviewPendingList(@RequestParam(value = "pageNumber",required = true,defaultValue = "1")Integer pageNumber,
@RequestParam(value = "pageSize",required = true,defaultValue = "10")Integer pageSize) {
LoginUserInfo userInfo = CurrentUserHolder.getUser();
userInfo.setUserId("055740241221153440");
return ResponseResult.success(deskService.secondInterviewPendingList(pageNumber,pageSize,userInfo));
}
@ApiOperation("待处理-缴纳意向金")
@GetMapping("/payStagePendingList")
public ResponseResult<PageInfo<PayStagePendingVO>> payStagePendingList(@RequestParam(value = "pageNumber",required = true,defaultValue = "1")Integer pageNumber,
@RequestParam(value = "pageSize",required = true,defaultValue = "10")Integer pageSize) {
LoginUserInfo userInfo = CurrentUserHolder.getUser();
userInfo.setUserId("055740241221153440");
return ResponseResult.success(deskService.payStagePendingList(pageNumber,pageSize,userInfo));
}
@ApiOperation("待处理-意向协议")
@GetMapping("/signingPendingList")
public ResponseResult<PageInfo<SigningPendingVO>> signingPendingList(@RequestParam(value = "pageNumber",required = true,defaultValue = "1")Integer pageNumber,
@RequestParam(value = "pageSize",required = true,defaultValue = "10")Integer pageSize) {
LoginUserInfo userInfo = CurrentUserHolder.getUser();
userInfo.setUserId("055740241221153440");
return ResponseResult.success(deskService.signingPendingList(pageNumber,pageSize,userInfo));
}
@ApiOperation("待处理-实训体验")
@GetMapping("/storeExperiencePendingList")
public ResponseResult<PageInfo<StoreExperiencePendingVO>> storeExperiencePendingList(@RequestParam(value = "pageNumber",required = true,defaultValue = "1")Integer pageNumber,
@RequestParam(value = "pageSize",required = true,defaultValue = "10")Integer pageSize) {
LoginUserInfo userInfo = CurrentUserHolder.getUser();
userInfo.setUserId("055740241221153440");
return ResponseResult.success(deskService.storeExperiencePendingList(pageNumber,pageSize,userInfo));
}

View File

@@ -0,0 +1,57 @@
package com.cool.store.controller.webb;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.request.AuditResultRequest;
import com.cool.store.request.XfsgOpenApiRequest;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.KdzApiService;
import com.cool.store.utils.EncryptUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@Api(tags = "酷店掌API")
@RestController
@RequestMapping("/{enterprise-id}/api")
@Slf4j
public class KdzApiController {
String allowEnterpriseId = "45f92210375346858b6b6694967f44de,e17cd2dc350541df8a8b0af9bd27f77d";
@Resource
KdzApiService kdzApiService;
@ApiOperation("意向加盟合同审核结果")
@PostMapping("/audit/result")
public ResponseResult<Boolean> auditResult(@PathVariable(value = "enterprise-id") String eid,
@RequestBody XfsgOpenApiRequest request) {
log.info("auditResult requestBody :{}", JSONObject.toJSONString(request));
if(!verifyMD5(request,eid)){
return ResponseResult.fail(ErrorCodeEnum.PARAMS_VALIDATE_ERROR);
}
if(eid == null || request.getBizContent() == null){
return ResponseResult.fail(ErrorCodeEnum.PARAMS_VALIDATE_ERROR);
}
AuditResultRequest auditResultRequest = JSONObject.parseObject(request.getBizContent(), AuditResultRequest.class);
return ResponseResult.success(kdzApiService.auditResult(auditResultRequest));
}
public static boolean verifyMD5(XfsgOpenApiRequest request, String eid){
//签名
StringBuffer sb = new StringBuffer();
//用户唯一标识id
sb.append("timestamp=").append(request.getTimestamp()).append("&");
//企业唯一标识enterpriseId
sb.append("enterpriseId=").append(eid).append("&");
sb.append("bizContent=").append(request.getBizContent());
String md5 = EncryptUtil.xfsgMd5(sb.toString());
return md5.equals(request.getSign());
}
}

View File

@@ -1,5 +1,6 @@
package com.cool.store.controller.webb;
import com.cool.store.context.CurrentUserHolder;
import com.cool.store.dao.LineInfoDAO;
import com.cool.store.entity.LineInfoDO;
import com.cool.store.enums.WorkflowSubStageEnum;
@@ -49,7 +50,7 @@ public class LineAuditController {
@ApiOperation("结束跟进")
@PostMapping("/close")
public ResponseResult<Boolean> auditClose(@RequestBody AuditRejectRequest request){
return ResponseResult.success(commonService.getLineFlowService(request.getWorkflowSubStage()).auditClose(request));
return ResponseResult.success(commonService.getLineFlowService(request.getWorkflowSubStage()).auditClose(request, CurrentUserHolder.getUser()));
}
}

View File

@@ -3,16 +3,12 @@ package com.cool.store.controller.webb;
import com.cool.store.context.CurrentUserHolder;
import com.cool.store.context.LoginUserInfo;
import com.cool.store.dto.TransferLogDTO;
import com.cool.store.request.AddTagsRequest;
import com.cool.store.request.ChangeInvestmentRequest;
import com.cool.store.request.LineListRequest;
import com.cool.store.request.PublicLineListRequest;
import com.cool.store.request.*;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.LinePayService;
import com.cool.store.service.LineService;
import com.cool.store.service.TransferLogService;
import com.cool.store.vo.LineInfoVO;
import com.cool.store.vo.LineListVO;
import com.cool.store.vo.PublicLineListVO;
import com.cool.store.vo.*;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -39,6 +35,8 @@ public class LineInfoController {
LineService lineService;
@Resource
TransferLogService transferLogService;
@Resource
private LinePayService linePayService;
@ApiOperation("查询线索详情")
@GetMapping("/getLineDetail")
@@ -73,6 +71,22 @@ public class LineInfoController {
return ResponseResult.success(lineService.getPublicLineList(publicLineListRequest,user));
}
@ApiOperation("我负责的加盟商")
@PostMapping("/getPartnerList")
public ResponseResult<PageInfo<PartnerListVO>> getPartnerList(@RequestBody PartnerRequest partnerRequest) {
LoginUserInfo user = CurrentUserHolder.getUser();
user.setUserId("055740241221153440");
return ResponseResult.success(lineService.getPartnerList(partnerRequest,user,Boolean.FALSE));
}
@ApiOperation("团队的加盟商")
@PostMapping("/getTeamPartnerList")
public ResponseResult<PageInfo<PartnerListVO>> getTeamPartnerList(@RequestBody PartnerRequest partnerRequest) {
LoginUserInfo user = CurrentUserHolder.getUser();
user.setUserId("055740241221153440");
return ResponseResult.success(lineService.getPartnerList(partnerRequest,user,Boolean.TRUE));
}
@PostMapping(path = "/addTags")
@ApiOperation("添加标签接口")
public ResponseResult<Boolean> addTags(@RequestBody AddTagsRequest addTagsRequest){
@@ -108,5 +122,14 @@ public class LineInfoController {
return ResponseResult.success(transferLogService.getTransferLogPage(pageNum,pageSize,lineId));
}
@ApiOperation("查询意向金详情")
@GetMapping("/getLinePayInfo")
@ApiImplicitParams({
@ApiImplicitParam(name = "lineId", value = "线索id", required = true)
})
public ResponseResult<LinePayVO> getLinePayInfo(@RequestParam("lineId")Long lineId) {
return ResponseResult.success(linePayService.getLinePayInfo(lineId));
}
}