diff --git a/coolstore-partner-common/src/main/java/com/cool/store/constants/CommonConstants.java b/coolstore-partner-common/src/main/java/com/cool/store/constants/CommonConstants.java index 21140ab24..0ecec8b2a 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/constants/CommonConstants.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/constants/CommonConstants.java @@ -120,4 +120,6 @@ public class CommonConstants { public static final String TRANSFER = "transfer"; + public static final String FIX_MOBILE_OPENID_TEST = "HSAY5531DA7"; + public static final String FIX_MOBILE_OPENID_ONLINE = "HSAY4AF322E"; } diff --git a/coolstore-partner-common/src/main/java/com/cool/store/utils/AESDecryptor.java b/coolstore-partner-common/src/main/java/com/cool/store/utils/AESDecryptor.java new file mode 100644 index 000000000..39f7107fb --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/utils/AESDecryptor.java @@ -0,0 +1,139 @@ +package com.cool.store.utils; + +import com.cool.store.exception.ServiceException; + +import java.io.UnsupportedEncodingException; +import java.nio.charset.Charset; +import java.security.InvalidAlgorithmParameterException; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.util.Arrays; + +import javax.crypto.BadPaddingException; +import javax.crypto.Cipher; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.KeyGenerator; +import javax.crypto.NoSuchPaddingException; +import javax.crypto.SecretKey; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; + +/** + * https://cloud.tencent.com/developer/article/1823249 + * 前后端约定 + */ +public class AESDecryptor { + + private static String Algorithm = "AES"; + private static String AlgorithmProvider = "AES/CBC/PKCS5Padding"; //算法/模式/补码方式 + + public static byte[] generatorKey() throws NoSuchAlgorithmException { + KeyGenerator keyGenerator = KeyGenerator.getInstance(Algorithm); + keyGenerator.init(256);//默认128,获得无政策权限后可为192或256 + SecretKey secretKey = keyGenerator.generateKey(); + return secretKey.getEncoded(); + } + + public static IvParameterSpec getIv(byte[] ivstr) throws UnsupportedEncodingException { + IvParameterSpec ivParameterSpec = new IvParameterSpec(ivstr); + return ivParameterSpec; + } + + public static String encrypt(String src, String keystr, IvParameterSpec iv) throws + NoSuchAlgorithmException, + NoSuchPaddingException, + InvalidKeyException, + IllegalBlockSizeException, + BadPaddingException, + UnsupportedEncodingException, + InvalidAlgorithmParameterException { + byte[] key = keystr.getBytes("utf-8"); + SecretKey secretKey = new SecretKeySpec(key, Algorithm); + IvParameterSpec ivParameterSpec = iv; + Cipher cipher = Cipher.getInstance(AlgorithmProvider); + cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivParameterSpec); + byte[] cipherBytes = cipher.doFinal(src.getBytes(Charset.forName("utf-8"))); + return byteToHexString(cipherBytes); + } + + public static String decrypt(String src, String keystr) { + try { + byte[] key = keystr.getBytes("utf-8"); + SecretKey secretKey = new SecretKeySpec(key, Algorithm); + IvParameterSpec ivParameterSpec = getIv(Arrays.copyOfRange(keystr.getBytes("utf-8"), 0, 16)); + Cipher cipher = Cipher.getInstance(AlgorithmProvider); + cipher.init(Cipher.DECRYPT_MODE, secretKey, ivParameterSpec); + byte[] hexBytes = hexStringToBytes(src); + byte[] plainBytes = cipher.doFinal(hexBytes); + return new String(plainBytes, "utf-8"); + } catch (Exception e) { + throw new ServiceException(e.getMessage()); + } + } + + /** + * 将byte转换为16进制字符串 + * + * @param src + * @return + */ + public static String byteToHexString(byte[] src) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < src.length; i++) { + int v = src[i] & 0xff; + String hv = Integer.toHexString(v); + if (hv.length() < 2) { + sb.append("0"); + } + sb.append(hv); + } + return sb.toString(); + } + + /** + * 将16进制字符串装换为byte数组 + * + * @param hexString + * @return + */ + public static byte[] hexStringToBytes(String hexString) { + hexString = hexString.toUpperCase(); + int length = hexString.length() / 2; + char[] hexChars = hexString.toCharArray(); + byte[] b = new byte[length]; + for (int i = 0; i < length; i++) { + int pos = i * 2; + b[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1])); + } + return b; + } + + private static byte charToByte(char c) { + return (byte) "0123456789ABCDEF".indexOf(c); + } + + public static void main(String[] args) { + try { + /* // 密钥必须是16的倍数 + String keystr = "0123456789ABCDEF"; + String ivstr = "0123456789101112"; + String src = "Hello World"; + + System.out.println("密钥:" + keystr); + System.out.println("偏移量:" + ivstr); + System.out.println("原字符串:" + src); + IvParameterSpec iv = getIv(ivstr); + String enc = encrypt(src, keystr, iv); + System.out.println("加密:" + enc); +*/ + String enc = "38395651e391c4b8ca327c4742b7f52f"; + String keystr = "77fea013c3a6459685b83c21a2fc3411"; + String ivstr = "77fea013c3a64596"; + // IvParameterSpec iv = getIv(ivstr); + String dec = decrypt(enc, keystr); + System.out.println("解密:" + dec); + } catch (Exception e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/coolstore-partner-common/src/main/java/com/cool/store/utils/PassLetterUtils.java b/coolstore-partner-common/src/main/java/com/cool/store/utils/PassLetterUtils.java index 264061202..dc60e93b1 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/utils/PassLetterUtils.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/utils/PassLetterUtils.java @@ -2,7 +2,6 @@ package com.cool.store.utils; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.RandomUtil; import com.lowagie.text.Document; import com.lowagie.text.Image; @@ -12,8 +11,7 @@ import com.lowagie.text.pdf.PdfWriter; import java.awt.*; import java.io.*; -import java.nio.file.Files; -import java.nio.file.Paths; +import java.util.Date; //生成资格面试通过函的工具 public class PassLetterUtils { @@ -26,7 +24,7 @@ public class PassLetterUtils { * @param passCode 通过函编码 * @param passTime 审批通过时间 */ - public static ByteArrayOutputStream genPassLetter(String partnerName, String passCode, String verifyCity, DateTime passTime) { + public static ByteArrayOutputStream genPassLetter(String partnerName, String passCode, String verifyCity, Date passTime) { String passTimeStr = DateUtil.format(passTime, "yyyy年MM月dd日"); Document document = new Document(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); @@ -65,7 +63,7 @@ public class PassLetterUtils { * 生成 passCode 的方法,拆分出来方便单独获取 passCode * @return */ - public static String genPassCode(DateTime passTime) { + public static String genPassCode(Date passTime) { String randomNum = RandomUtil.randomNumbers(5); String passCode = "HSAY" + DateUtil.format(passTime, "yyMMdd") + "-" + randomNum; return passCode; diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerLineInfoDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerLineInfoDAO.java index 270f9c160..2ba898a51 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerLineInfoDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyPartnerLineInfoDAO.java @@ -6,11 +6,10 @@ 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.cool.store.vo.LineFollowHistoryVO; -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; @@ -91,9 +90,9 @@ public class HyPartnerLineInfoDAO { return hyPartnerLineInfoMapper.selectPartnerLineInfoAndBaseInfo(lineId); } - public PageInfo lastMonthCloseLine(String userId, String lastMonthTodayDate){ + public List lastMonthCloseLine(String userId, String lastMonthTodayDate){ if (userId==null){ - return new PageInfo<>(); + return new ArrayList<>(); } return hyPartnerLineInfoMapper.lastMonthCloseLine(userId,lastMonthTodayDate); } @@ -115,7 +114,7 @@ public class HyPartnerLineInfoDAO { } - public PageInfo getBlackList( String userNameKeyword,String phoneKeyword, String intentArea , Integer acceptAdjustType){ + public List getBlackList( String userNameKeyword,String phoneKeyword, String intentArea , Integer acceptAdjustType){ return hyPartnerLineInfoMapper.getBlackList(userNameKeyword,phoneKeyword,intentArea,acceptAdjustType); } @@ -127,10 +126,16 @@ public class HyPartnerLineInfoDAO { return hyPartnerLineInfoMapper.joinAndRemoveBlack(lineId,status,joinReason,removeReason); } - public PageInfo getPublicSeaLineList( String userNameKeyword, String phoneKeyword, String intentArea, Integer acceptAdjustType, Date updateStartTime, Date updateEndTime, List userIdList){ + public List getPublicSeaLineList( String userNameKeyword, String phoneKeyword, String intentArea, Integer acceptAdjustType, Date updateStartTime, Date updateEndTime, List userIdList){ return hyPartnerLineInfoMapper.getPublicSeaLineList(userNameKeyword,phoneKeyword,intentArea,acceptAdjustType,updateStartTime,updateEndTime,userIdList); } + public List getPrivateSeaLineList(String keyword, String keywordType, String workflowStage, String workflowStatus, Date deadlineStart, Date deadlineEnd, + String intentArea, Integer acceptAdjustType, String storeKeyword, String storeKeywordType, List userIdList){ + return hyPartnerLineInfoMapper.getPrivateSeaLineList( keyword, keywordType, workflowStage, workflowStatus, deadlineStart, deadlineEnd, + intentArea, acceptAdjustType, storeKeyword, storeKeywordType, userIdList); + } + public List getPartnerLastLine(List partnerIdList){ if (CollectionUtils.isEmpty(partnerIdList)){ diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerCertificationInfoMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerCertificationInfoMapper.java index 426e1a742..ae1c3a009 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerCertificationInfoMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerCertificationInfoMapper.java @@ -22,4 +22,11 @@ public interface HyPartnerCertificationInfoMapper { * dateTime:2023-05-29 03:51 */ int updateByPrimaryKeySelective(@Param("record") HyPartnerCertificationInfoDO record); + + /** + * 根据资质审核流程 id 获取面试会议 id + * @param qualifyVerifyId 资质审核流程 id + * @return 面试会议 id + */ + String getInterviewIdByQualifyVerifyId(@Param("qualifyVerifyId") String qualifyVerifyId); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewMapper.java index 5b60798b3..3738bedd1 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewMapper.java @@ -79,4 +79,11 @@ public interface HyPartnerInterviewMapper { * 根据面试 id 查询面试信息 */ HyPartnerInterviewDO selectByPrimaryKeySelective(String interviewId); + + /** + * 根据面试 id 获取意向区域 + * @param interviewId + * @return + */ + String getVerifyCityByInterviewId(@Param("interviewId") String interviewId); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewPlanMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewPlanMapper.java index 4e29260e9..bb5f45482 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewPlanMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewPlanMapper.java @@ -84,7 +84,7 @@ public interface HyPartnerInterviewPlanMapper { /** * 查询面试详情 * - * @param interviewId + * @param interviewPlanId * @return */ InterviewVO getInterviewInfo(String interviewPlanId); diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java index 2b5cf795b..155b370e8 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java @@ -90,7 +90,7 @@ public interface HyPartnerLineInfoMapper { * @param lastMonthTodayDate * @return */ - PageInfo lastMonthCloseLine(@Param("userId") String userId, + List lastMonthCloseLine(@Param("userId") String userId, @Param("lastMonthTodayDate") String lastMonthTodayDate); /** @@ -116,7 +116,7 @@ public interface HyPartnerLineInfoMapper { * @param acceptAdjustType * @return */ - PageInfo getBlackList(@Param("userNameKeyword") String userNameKeyword, + List getBlackList(@Param("userNameKeyword") String userNameKeyword, @Param("phoneKeyword") String phoneKeyword, @Param("intentArea") String intentArea , @Param("acceptAdjustType") Integer acceptAdjustType); @@ -150,7 +150,7 @@ public interface HyPartnerLineInfoMapper { * @param userIdList * @return */ - PageInfo getPublicSeaLineList(@Param("userNameKeyword") String userNameKeyword, + List getPublicSeaLineList(@Param("userNameKeyword") String userNameKeyword, @Param("phoneKeyword") String phoneKeyword, @Param("intentArea") String intentArea, @Param("acceptAdjustType") Integer acceptAdjustType, @@ -158,6 +158,24 @@ public interface HyPartnerLineInfoMapper { @Param("updateEndTime") Date updateEndTime, @Param("userIdList") List userIdList); + + /** + * + * @return + */ + List getPrivateSeaLineList(@Param("keyword") String keyword, + @Param("keywordType") String keywordType, + @Param("workflowStage") String workflowStage, + @Param("workflowStatus") String workflowStatus, + @Param("deadlineStart") Date deadlineStart, + @Param("deadlineEnd") Date deadlineEnd, + @Param("intentArea") String intentArea, + @Param("acceptAdjustType") Integer acceptAdjustType, + @Param("storeKeyword") String storeKeyword, + @Param("storeKeywordType") String storeKeywordType, + @Param("userIdList") List userIdList); + + /** * 查询对应的加盟商最近线索 * @param partnerIdList diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerBaseInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerBaseInfoMapper.xml index 2fd127a2c..d32350220 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerBaseInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerBaseInfoMapper.xml @@ -213,8 +213,8 @@ mobile = #{mobile}, - where partner_id = #{partnerId} + where partner_id = #{partnerId} + select partner_interview_id + from hy_partner_certification_info + where qualify_verify_id = #{qualifyVerifyId} + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewMapper.xml index 584bebc81..949f878b6 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewMapper.xml @@ -220,8 +220,17 @@ auth_code = #{authCode}, - - pass_file_url = #{passFileUrl}, + + pass_code = #{passCode}, + + + pass_pdf_url = #{passPdfUrl}, + + + pass_image_url = #{passImageUrl}, + + + pass_time = #{passTime}, expiry_date = #{expiryDate}, @@ -250,11 +259,16 @@ interviewer_enter_time = #{interviewerEnterTime}, - - qualify_verify_id = #{qualifyVerifyId}, - - where id = #{id} + + 1 = 0 + + or id = #{id} + + + or interview_plan_id = #{interviewPlanId} + + @@ -338,7 +352,7 @@ select from - hy_partner_intent_info + hy_partner_interview where id = #{interviewId} @@ -364,4 +378,19 @@ WHERE id = #{interviewId} + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml index 64c657998..4f8569509 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml @@ -247,41 +247,44 @@ select hpip.id as interviewPlanId, hpi.id as interviewId, - hpi.qualify_verify_id as qualifyVerifyId, + hpci.qualify_verify_id as qualifyVerifyId, + hpci.intention_contract_no as intentionContractNo, hpi.pass_time as passTime, hpi.pass_reason as passReason, hpi.recorder as recorderId, @@ -317,6 +321,7 @@ left join hy_partner_line_info hpll on hpip.partner_line_id = hpll.id left join hy_partner_user_info hpui on hpui.partner_id = hpip.partner_id left join hy_partner_interview hpi on hpip.id = hpi.interview_plan_id + left join hy_partner_certification_info hpci on hpci.partner_interview_id = hpi.id where hpip.id = #{interviewPlanId} + + +