Merge remote-tracking branch 'origin/dev/feat/partner1.4_20231009' into dev/feat/partner1.4_20231009
This commit is contained in:
@@ -10,7 +10,11 @@ public enum SMSMsgEnum {
|
||||
|
||||
INTERVIEW_APPOINTMENT_PASS("预约面试通过通知","【沪上阿姨】你已成功预约{$var}进行沪上阿姨加盟资格面试,届时请通过沪姨合伙人小程序进行面试,面试时间约40分钟,请提前仔细阅读面试准备材料以及观看加盟说明视频,做好面试相应准备。请务必提前安排好您的时间。点击转跳沪姨合伙人小程序:{$var}"),
|
||||
|
||||
INTERVIEW_PASS("面试通过通知","【沪上阿姨】恭喜您通过了加盟资格面试,接下来我们会为您安排专业的选址开发顾问协助您进行选址,请保持电话畅通,祝您早日选址成功!点击转跳沪姨合伙人小程序:{$var}");
|
||||
INTERVIEW_PASS("面试通过通知","【沪上阿姨】恭喜您通过了加盟资格面试,接下来我们会为您安排专业的选址开发顾问协助您进行选址,请保持电话畅通,祝您早日选址成功!点击转跳沪姨合伙人小程序:{$var}"),
|
||||
|
||||
INTERVIEW_BEGIN_IN_DAY("面试开始前一天", "【沪上阿姨】您预约的沪上阿姨加盟资格面试将于明天 {$var}({$var})开始,为保证您能够更加顺利的通过面试,请提前通过沪上阿姨合伙人小程序仔细阅读面试准备材料并做好相应准备。点击转跳小程序:{$var}"),
|
||||
|
||||
INTERVIEW_BEGIN_IN_MINUTES("面试开始前30分钟", "【沪上阿姨】您预约的沪上阿姨加盟资格面试将在30分钟后开始。面试预计持续40分钟,请务必提前安排好您的时间。点击跳转沪上阿姨小程序,快速进入面试房间:{$var}");
|
||||
|
||||
private String title;
|
||||
private String content;
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
package com.cool.store.mapper;
|
||||
|
||||
import com.cool.store.entity.HyPartnerFraSourceDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
public interface HyPartnerFraSourceMapper {
|
||||
int deleteByPrimaryKey(Long id);
|
||||
|
||||
int insert(HyPartnerFraSourceDO record);
|
||||
|
||||
int insertSelective(HyPartnerFraSourceDO record);
|
||||
|
||||
HyPartnerFraSourceDO selectByPrimaryKey(Long id);
|
||||
|
||||
int updateByPrimaryKeySelective(HyPartnerFraSourceDO record);
|
||||
|
||||
int updateByPrimaryKey(HyPartnerFraSourceDO record);
|
||||
|
||||
List<HyPartnerFraSourceDO> selectAllFraSourceList();
|
||||
|
||||
int batchInsertSelective(@Param("insertList") List<HyPartnerFraSourceDO> collect);
|
||||
}
|
||||
@@ -4,11 +4,11 @@ import com.cool.store.dto.message.RemindInterviewMsgDTO;
|
||||
import com.cool.store.dto.partner.AdvanceLineDTO;
|
||||
import com.cool.store.dto.partner.PartnerInterviewInfoDTO;
|
||||
import com.cool.store.dto.partner.SpecialDateRangeInterviewCountDTO;
|
||||
import com.cool.store.entity.HyInterviewRemindDO;
|
||||
import com.cool.store.entity.HyPartnerInterviewPlanDO;
|
||||
import com.cool.store.request.GetInterviewListReq;
|
||||
import com.cool.store.vo.EnterpriseUserBaseInfoVO;
|
||||
import com.cool.store.vo.interview.InterviewVO;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.Date;
|
||||
@@ -173,5 +173,16 @@ public interface HyPartnerInterviewPlanMapper {
|
||||
|
||||
int updateLineId(@Param("newPartnerId") String newPartnerId, @Param("newLineId") Long newLineId, @Param("oldLineId") Long oldLineId);
|
||||
|
||||
/**
|
||||
* 获取明天开始面试的面试开始时间和 partnerId(17:00 前确定为明天面试的)
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
List<HyInterviewRemindDO> getTomorrowInterview();
|
||||
|
||||
/**
|
||||
* 获取 30 分钟后开始的面试(预约30分钟之内的面试不发获取)
|
||||
* @return
|
||||
*/
|
||||
List<HyInterviewRemindDO> remindInterviewStartMinutes();
|
||||
}
|
||||
@@ -4,7 +4,6 @@
|
||||
<resultMap id="BaseResultMap" type="com.cool.store.entity.BeautyCameraSettingDO">
|
||||
<id column="id" jdbcType="BIGINT" property="id"/>
|
||||
<result column="user_id" jdbcType="VARCHAR" property="userId"/>
|
||||
<result column="beauty_status" jdbcType="BIT" property="beautyStatus"/>
|
||||
<result column="beauty" jdbcType="INTEGER" property="beauty"/>
|
||||
<result column="brightness" jdbcType="INTEGER" property="brightness"/>
|
||||
<result column="ruddy" jdbcType="INTEGER" property="ruddy"/>
|
||||
@@ -13,7 +12,7 @@
|
||||
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
|
||||
</resultMap>
|
||||
<sql id="Base_Column_List">
|
||||
id, user_id, beauty_status, beauty, brightness, ruddy, deleted, create_time, update_time
|
||||
id, user_id, beauty, brightness, ruddy, deleted, create_time, update_time
|
||||
</sql>
|
||||
|
||||
<insert id="insertOrUpdateBeautyCameraSetting" keyColumn="id" keyProperty="record.id" useGeneratedKeys="true">
|
||||
@@ -22,9 +21,6 @@
|
||||
<if test="record.userId != null">
|
||||
user_id,
|
||||
</if>
|
||||
<if test="record.beautyStatus != null">
|
||||
beauty_status,
|
||||
</if>
|
||||
<if test="record.beauty != null">
|
||||
beauty,
|
||||
</if>
|
||||
@@ -48,9 +44,6 @@
|
||||
<if test="record.userId != null">
|
||||
#{record.userId},
|
||||
</if>
|
||||
<if test="record.beautyStatus != null">
|
||||
#{record.beautyStatus},
|
||||
</if>
|
||||
<if test="record.beauty != null">
|
||||
#{record.beauty},
|
||||
</if>
|
||||
@@ -70,7 +63,7 @@
|
||||
#{record.updateTime},
|
||||
</if>
|
||||
</trim>
|
||||
ON DUPLICATE KEY UPDATE beauty_status = values(beauty_status), beauty = values(beauty), brightness = values(brightness), ruddy = values(ruddy)
|
||||
ON DUPLICATE KEY UPDATE beauty = values(beauty), brightness = values(brightness), ruddy = values(ruddy)
|
||||
</insert>
|
||||
|
||||
<select id="getBeautyCameraSetting" resultMap="BaseResultMap">
|
||||
|
||||
@@ -1,190 +0,0 @@
|
||||
<?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.HyPartnerFraSourceMapper">
|
||||
<resultMap id="BaseResultMap" type="com.cool.store.entity.HyPartnerFraSourceDO">
|
||||
<id column="id" jdbcType="BIGINT" property="id" />
|
||||
<result column="name" jdbcType="VARCHAR" property="name" />
|
||||
<result column="code" jdbcType="VARCHAR" property="code" />
|
||||
<result column="dict_id" jdbcType="VARCHAR" property="dictId" />
|
||||
<result column="source_id" jdbcType="VARCHAR" property="sourceId" />
|
||||
<result column="enabled" jdbcType="BOOLEAN" property="enabled" />
|
||||
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
|
||||
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
|
||||
<result column="remark" jdbcType="VARCHAR" property="remark" />
|
||||
</resultMap>
|
||||
<sql id="Base_Column_List">
|
||||
id, `name`, code, dict_id, source_id, enabled, create_time, update_time, remark
|
||||
</sql>
|
||||
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
|
||||
select
|
||||
<include refid="Base_Column_List" />
|
||||
from hy_partner_fra_source
|
||||
where id = #{id,jdbcType=BIGINT}
|
||||
</select>
|
||||
<select id="selectAllFraSourceList" resultMap="BaseResultMap">
|
||||
select
|
||||
<include refid="Base_Column_List" />
|
||||
from hy_partner_fra_source where enabled=1
|
||||
</select>
|
||||
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
|
||||
delete from hy_partner_fra_source
|
||||
where id = #{id,jdbcType=BIGINT}
|
||||
</delete>
|
||||
<insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.cool.store.entity.HyPartnerFraSourceDO" useGeneratedKeys="true">
|
||||
insert into hy_partner_fra_source (`name`, code, dict_id,
|
||||
source_id, enabled, create_time,
|
||||
update_time, remark)
|
||||
values (#{name,jdbcType=VARCHAR}, #{code,jdbcType=VARCHAR}, #{dictId,jdbcType=VARCHAR},
|
||||
#{sourceId,jdbcType=VARCHAR}, #{enabled,jdbcType=BOOLEAN}, #{createTime,jdbcType=TIMESTAMP},
|
||||
#{updateTime,jdbcType=TIMESTAMP}, #{remark,jdbcType=VARCHAR})
|
||||
</insert>
|
||||
<insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.cool.store.entity.HyPartnerFraSourceDO" useGeneratedKeys="true">
|
||||
insert into hy_partner_fra_source
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="name != null">
|
||||
`name`,
|
||||
</if>
|
||||
<if test="code != null">
|
||||
code,
|
||||
</if>
|
||||
<if test="dictId != null">
|
||||
dict_id,
|
||||
</if>
|
||||
<if test="sourceId != null">
|
||||
source_id,
|
||||
</if>
|
||||
<if test="enabled != null">
|
||||
enabled,
|
||||
</if>
|
||||
<if test="createTime != null">
|
||||
create_time,
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
update_time,
|
||||
</if>
|
||||
<if test="remark != null">
|
||||
remark,
|
||||
</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="name != null">
|
||||
#{name,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="code != null">
|
||||
#{code,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="dictId != null">
|
||||
#{dictId,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="sourceId != null">
|
||||
#{sourceId,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="enabled != null">
|
||||
#{enabled,jdbcType=BOOLEAN},
|
||||
</if>
|
||||
<if test="createTime != null">
|
||||
#{createTime,jdbcType=TIMESTAMP},
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
#{updateTime,jdbcType=TIMESTAMP},
|
||||
</if>
|
||||
<if test="remark != null">
|
||||
#{remark,jdbcType=VARCHAR},
|
||||
</if>
|
||||
</trim>
|
||||
</insert>
|
||||
<insert id="batchInsertSelective">
|
||||
<foreach collection="insertList" item="record" separator=";">
|
||||
insert into hy_partner_fra_source
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="record.name != null">
|
||||
`name`,
|
||||
</if>
|
||||
<if test="record.code != null">
|
||||
`code`,
|
||||
</if>
|
||||
<if test="record.dictId != null">
|
||||
dict_id,
|
||||
</if>
|
||||
<if test="record.sourceId != null">
|
||||
source_id,
|
||||
</if>
|
||||
<if test="record.enabled != null">
|
||||
enabled,
|
||||
</if>
|
||||
<if test="record.createTime != null">
|
||||
create_time,
|
||||
</if>
|
||||
<if test="record.remark != null">
|
||||
remark,
|
||||
</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="record.name != null">
|
||||
#{record.name,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="record.code != null">
|
||||
#{record.code,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="record.dictId != null">
|
||||
#{record.dictId,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="record.sourceId != null">
|
||||
#{record.sourceId,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="record.enabled != null">
|
||||
#{record.enabled,jdbcType=BOOLEAN},
|
||||
</if>
|
||||
<if test="record.createTime != null">
|
||||
#{record.createTime,jdbcType=TIMESTAMP},
|
||||
</if>
|
||||
<if test="record.remark != null">
|
||||
#{record.remark,jdbcType=VARCHAR},
|
||||
</if>
|
||||
</trim>
|
||||
ON DUPLICATE KEY UPDATE update_time = now(), enabled = values(enabled), `name` = values(`name`), `code` = values(`code`), dict_id = values(dict_id)
|
||||
</foreach>
|
||||
</insert>
|
||||
<update id="updateByPrimaryKeySelective" parameterType="com.cool.store.entity.HyPartnerFraSourceDO">
|
||||
update hy_partner_fra_source
|
||||
<set>
|
||||
<if test="name != null">
|
||||
`name` = #{name,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="code != null">
|
||||
code = #{code,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="dictId != null">
|
||||
dict_id = #{dictId,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="sourceId != null">
|
||||
source_id = #{sourceId,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="enabled != null">
|
||||
enabled = #{enabled,jdbcType=BOOLEAN},
|
||||
</if>
|
||||
<if test="createTime != null">
|
||||
create_time = #{createTime,jdbcType=TIMESTAMP},
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
update_time = #{updateTime,jdbcType=TIMESTAMP},
|
||||
</if>
|
||||
<if test="remark != null">
|
||||
remark = #{remark,jdbcType=VARCHAR},
|
||||
</if>
|
||||
</set>
|
||||
where id = #{id,jdbcType=BIGINT}
|
||||
</update>
|
||||
<update id="updateByPrimaryKey" parameterType="com.cool.store.entity.HyPartnerFraSourceDO">
|
||||
update hy_partner_fra_source
|
||||
set `name` = #{name,jdbcType=VARCHAR},
|
||||
code = #{code,jdbcType=VARCHAR},
|
||||
dict_id = #{dictId,jdbcType=VARCHAR},
|
||||
source_id = #{sourceId,jdbcType=VARCHAR},
|
||||
enabled = #{enabled,jdbcType=BOOLEAN},
|
||||
create_time = #{createTime,jdbcType=TIMESTAMP},
|
||||
update_time = #{updateTime,jdbcType=TIMESTAMP},
|
||||
remark = #{remark,jdbcType=VARCHAR}
|
||||
where id = #{id,jdbcType=BIGINT}
|
||||
</update>
|
||||
</mapper>
|
||||
@@ -360,7 +360,12 @@
|
||||
<if test="workflowStatus!=null and workflowStatus!=''">
|
||||
and a.workflow_status = #{workflowStatus}
|
||||
</if>
|
||||
order by b.create_time
|
||||
<if test="workflowStatus!=null and workflowStatus=='1'">
|
||||
order by b.update_time
|
||||
</if>
|
||||
<if test="workflowStatus!=null and workflowStatus=='0'">
|
||||
order by a.create_time
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="selectByLineId" resultMap="BaseResultMap">
|
||||
|
||||
@@ -542,4 +542,31 @@
|
||||
set partner_line_id = #{newLineId} , partner_id = #{newPartnerId}
|
||||
where partner_line_id = #{oldLineId}
|
||||
</update>
|
||||
|
||||
<!--获取明天开始面试的面试开始时间和 partnerId(17:00 前确定为明天面试的)-->
|
||||
<select id="getTomorrowInterview" resultType="com.cool.store.entity.HyInterviewRemindDO">
|
||||
SELECT t1.start_time, t3.mobile
|
||||
FROM hy_partner_interview_plan t1
|
||||
LEFT JOIN hy_partner_interview t2 ON t1.id = t2.interview_plan_id
|
||||
LEFT JOIN hy_partner_user_info t3 ON t1.partner_id = t3.partner_id
|
||||
WHERE t1.deleted = 0 ANd t2.deleted = 0
|
||||
AND t2.`status` = 2
|
||||
AND DATE(start_time) = DATE_ADD(CURDATE(), INTERVAL 1 DAY)
|
||||
AND t1.update_time < CONCAT(CURDATE(), ' 17:00:00')
|
||||
</select>
|
||||
|
||||
<!--获取 30 分钟后开始的面试(预约30分钟之内的面试不发获取)-->
|
||||
<select id="remindInterviewStartMinutes" resultType="com.cool.store.entity.HyInterviewRemindDO">
|
||||
SELECT t1.start_time, t3.mobile
|
||||
FROM hy_partner_interview_plan t1
|
||||
LEFT JOIN hy_partner_interview t2 ON t1.id = t2.interview_plan_id
|
||||
LEFT JOIN hy_partner_user_info t3 ON t1.partner_id = t3.partner_id
|
||||
WHERE t1.deleted = 0 ANd t2.deleted = 0
|
||||
AND t2.`status` = 2
|
||||
-- 开始时间在 now 和 now + 30 以内的(即下一场面试的)
|
||||
AND start_time > NOW() AND start_time <= DATE_ADD(NOW(), INTERVAL 30 MINUTE)
|
||||
-- 更新时间(同意面试预约时间)在当前时间之前的(即在面试开始 30 分钟之前同意预约的)
|
||||
AND t1.update_time >= NOW()
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -26,9 +26,6 @@ public class BeautyCameraSettingDO implements Serializable {
|
||||
@ApiModelProperty("用户id")
|
||||
private String userId;
|
||||
|
||||
@ApiModelProperty("美颜状态0未开启,1开启")
|
||||
private Boolean beautyStatus;
|
||||
|
||||
@ApiModelProperty("美颜度")
|
||||
private Integer beauty;
|
||||
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.cool.store.entity;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author Fun Li 2023/9/22 10:52
|
||||
* @version 1.0
|
||||
* 面试提醒短信所需信息
|
||||
*/
|
||||
@Data
|
||||
public class HyInterviewRemindDO implements Serializable {
|
||||
|
||||
@ApiModelProperty("面试开始时间")
|
||||
private Date startTime;
|
||||
|
||||
@ApiModelProperty("加盟商手机号")
|
||||
private String mobile;
|
||||
|
||||
}
|
||||
@@ -37,6 +37,9 @@ public class RpcCreateQualifyVerifyReq {
|
||||
@ApiModelProperty(value = "意向签约人手机号", required = true)
|
||||
private String intendedSignerTel;
|
||||
|
||||
@ApiModelProperty(value = "系统来源", required = false)
|
||||
private String systemsource;
|
||||
|
||||
@ApiModelProperty(value = "合作关系", required = true)
|
||||
private KeyText partnership;
|
||||
|
||||
|
||||
@@ -15,9 +15,6 @@ import java.util.Date;
|
||||
@Data
|
||||
public class AddBeautyCameraSettingRequest {
|
||||
|
||||
@ApiModelProperty("美颜状态0未开启,1开启")
|
||||
private Boolean beautyStatus;
|
||||
|
||||
@ApiModelProperty("美颜度")
|
||||
private Integer beauty;
|
||||
|
||||
@@ -31,7 +28,6 @@ public class AddBeautyCameraSettingRequest {
|
||||
public static BeautyCameraSettingDO convertDO(String userId, AddBeautyCameraSettingRequest request){
|
||||
BeautyCameraSettingDO result = new BeautyCameraSettingDO();
|
||||
result.setUserId(userId);
|
||||
result.setBeautyStatus(request.getBeautyStatus());
|
||||
result.setBeauty(request.getBeauty());
|
||||
result.setBrightness(request.getBrightness());
|
||||
result.setRuddy(request.getRuddy());
|
||||
|
||||
@@ -15,9 +15,6 @@ import java.util.Objects;
|
||||
@Data
|
||||
public class BeautyCameraSettingVO {
|
||||
|
||||
@ApiModelProperty("美颜状态0未开启,1开启")
|
||||
private Boolean beautyStatus;
|
||||
|
||||
@ApiModelProperty("美颜度")
|
||||
private Integer beauty;
|
||||
|
||||
@@ -32,7 +29,6 @@ public class BeautyCameraSettingVO {
|
||||
return null;
|
||||
}
|
||||
BeautyCameraSettingVO result = new BeautyCameraSettingVO();
|
||||
result.setBeautyStatus(request.getBeautyStatus());
|
||||
result.setBeauty(request.getBeauty());
|
||||
result.setBrightness(request.getBrightness());
|
||||
result.setRuddy(request.getRuddy());
|
||||
|
||||
@@ -14,19 +14,19 @@ import com.cool.store.enums.FeiShuNoticeMsgEnum;
|
||||
import com.cool.store.exception.ApiException;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.mq.util.HttpRestTemplateService;
|
||||
import com.cool.store.utils.RestTemplateUtil;
|
||||
import com.cool.store.utils.Md5Utils;
|
||||
import com.cool.store.utils.UUIDUtils;
|
||||
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.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.text.MessageFormat;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
@@ -39,8 +39,8 @@ import java.util.Objects;
|
||||
@Slf4j
|
||||
public class ISVHttpRequest {
|
||||
|
||||
@Value("${isv.domain:null}")
|
||||
private String isvDomain;
|
||||
//@Value("${isv.domain:null}")
|
||||
private String isvDomain = "http://localhost:31100/isv";
|
||||
@Resource
|
||||
private HttpRestTemplateService httpRestTemplateService;
|
||||
|
||||
@@ -50,7 +50,7 @@ public class ISVHttpRequest {
|
||||
HashMap requestMap = new HashMap();
|
||||
requestMap.put("code", code);
|
||||
try {
|
||||
responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap);
|
||||
responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap, getRequestHeadMap());
|
||||
log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity));
|
||||
if(Objects.nonNull(responseEntity.getData()) && responseEntity.isSuccess()){
|
||||
return JSONObject.parseObject(JSONObject.toJSONString(responseEntity.getData()), UserIdInfoDTO.class);
|
||||
@@ -68,7 +68,7 @@ public class ISVHttpRequest {
|
||||
requestMap.put("userId", userId);
|
||||
ResultDTO responseEntity = null;
|
||||
try {
|
||||
responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap);
|
||||
responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap, getRequestHeadMap());
|
||||
log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity));
|
||||
if(Objects.nonNull(responseEntity.getData()) && responseEntity.isSuccess()){
|
||||
return JSONObject.parseObject(JSONObject.toJSONString(responseEntity.getData()), EnterpriseUserDTO.class);
|
||||
@@ -85,7 +85,7 @@ public class ISVHttpRequest {
|
||||
HashMap requestMap = new HashMap();
|
||||
ResultDTO responseEntity = null;
|
||||
try {
|
||||
responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap);
|
||||
responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap, getRequestHeadMap());
|
||||
log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity));
|
||||
if(Objects.nonNull(responseEntity.getData()) && responseEntity.isSuccess()){
|
||||
return JSONObject.parseArray(JSONObject.toJSONString(responseEntity.getData()), String.class);
|
||||
@@ -102,7 +102,7 @@ public class ISVHttpRequest {
|
||||
HashMap requestMap = new HashMap();
|
||||
ResultDTO responseEntity = null;
|
||||
try {
|
||||
responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap);
|
||||
responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap, getRequestHeadMap());
|
||||
log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity));
|
||||
if(Objects.nonNull(responseEntity.getData()) && responseEntity.isSuccess()){
|
||||
return JSONObject.parseObject(JSONObject.toJSONString(responseEntity.getData()), AuthInfoDTO.class);
|
||||
@@ -120,7 +120,7 @@ public class ISVHttpRequest {
|
||||
requestMap.put("parentId", parentId);
|
||||
ResultDTO responseEntity = null;
|
||||
try {
|
||||
responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap);
|
||||
responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap, getRequestHeadMap());
|
||||
log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity));
|
||||
if(Objects.nonNull(responseEntity.getData()) && responseEntity.isSuccess()){
|
||||
return JSONObject.parseArray(JSONObject.toJSONString(responseEntity.getData()), SysDepartmentDTO.class);
|
||||
@@ -143,7 +143,7 @@ public class ISVHttpRequest {
|
||||
requestMap.put("deptId", deptId);
|
||||
ResultDTO responseEntity = null;
|
||||
try {
|
||||
responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap);
|
||||
responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap, getRequestHeadMap());
|
||||
log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity));
|
||||
if(Objects.nonNull(responseEntity.getData()) && responseEntity.isSuccess()){
|
||||
return JSONObject.parseObject(JSONObject.toJSONString(responseEntity.getData()), SysDepartmentDTO.class);
|
||||
@@ -160,7 +160,7 @@ public class ISVHttpRequest {
|
||||
HashMap requestMap = new HashMap();
|
||||
ResultDTO responseEntity = null;
|
||||
try {
|
||||
responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap);
|
||||
responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap, getRequestHeadMap());
|
||||
log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity));
|
||||
if(Objects.nonNull(responseEntity.getData()) && responseEntity.isSuccess()){
|
||||
return JSONObject.parseObject(JSONObject.toJSONString(responseEntity.getData()), AuthScopeDTO.class);
|
||||
@@ -178,7 +178,7 @@ public class ISVHttpRequest {
|
||||
requestMap.put("deptId", deptId);
|
||||
ResultDTO responseEntity = null;
|
||||
try {
|
||||
responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap);
|
||||
responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap, getRequestHeadMap());
|
||||
log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity));
|
||||
if(Objects.nonNull(responseEntity.getData()) && responseEntity.isSuccess()){
|
||||
return JSONObject.parseArray(JSONObject.toJSONString(responseEntity.getData()), EnterpriseUserDTO.class);
|
||||
@@ -196,7 +196,7 @@ public class ISVHttpRequest {
|
||||
requestMap.put("userIds", String.join(CommonConstants.COMMA, userIdList));
|
||||
ResultDTO responseEntity = null;
|
||||
try {
|
||||
responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap);
|
||||
responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap, getRequestHeadMap());
|
||||
log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity));
|
||||
if(Objects.nonNull(responseEntity.getData()) && responseEntity.isSuccess()){
|
||||
return JSONObject.parseArray(JSONObject.toJSONString(responseEntity.getData()), EnterpriseUserDTO.class);
|
||||
@@ -215,7 +215,7 @@ public class ISVHttpRequest {
|
||||
requestMap.put("fetchChild", fetchChild);
|
||||
ResultDTO responseEntity = null;
|
||||
try {
|
||||
responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap);
|
||||
responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap, getRequestHeadMap());
|
||||
log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity));
|
||||
if(Objects.nonNull(responseEntity.getData()) && responseEntity.isSuccess()){
|
||||
return JSONObject.parseArray(JSONObject.toJSONString(responseEntity.getData()), SysDepartmentDTO.class);
|
||||
@@ -242,7 +242,7 @@ public class ISVHttpRequest {
|
||||
requestMap.put("endTime", endTime);
|
||||
ResultDTO responseEntity = null;
|
||||
try {
|
||||
responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap);
|
||||
responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap, getRequestHeadMap());
|
||||
log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity));
|
||||
if(Objects.nonNull(responseEntity.getData()) && responseEntity.isSuccess()){
|
||||
return JSONObject.parseArray(JSONObject.toJSONString(responseEntity.getData()), UserFreeBusyInfoDTO.class);
|
||||
@@ -264,7 +264,7 @@ public class ISVHttpRequest {
|
||||
String url = isvDomain + "/user/createUserCalendarEvent";
|
||||
ResultDTO responseEntity = null;
|
||||
try {
|
||||
responseEntity = httpRestTemplateService.postForObject(url, param, ResultDTO.class);
|
||||
responseEntity = httpRestTemplateService.postForObject(url, param, ResultDTO.class, getRequestHeadMap());
|
||||
log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity));
|
||||
if(Objects.nonNull(responseEntity.getData()) && responseEntity.isSuccess()){
|
||||
return JSONObject.parseObject(JSONObject.toJSONString(responseEntity.getData()), UserCalendarsEventDTO.class);
|
||||
@@ -286,7 +286,7 @@ public class ISVHttpRequest {
|
||||
String url = isvDomain + "/user/updateUserCalendarEvent";
|
||||
ResultDTO responseEntity = null;
|
||||
try {
|
||||
responseEntity = httpRestTemplateService.postForObject(url, param, ResultDTO.class);
|
||||
responseEntity = httpRestTemplateService.postForObject(url, param, ResultDTO.class, getRequestHeadMap());
|
||||
log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity));
|
||||
if(Objects.nonNull(responseEntity.getData()) && responseEntity.isSuccess()){
|
||||
return JSONObject.parseObject(JSONObject.toJSONString(responseEntity.getData()), UserCalendarsEventDTO.class);
|
||||
@@ -308,7 +308,7 @@ public class ISVHttpRequest {
|
||||
String url = isvDomain + "/user/deleteUserCalendarEvent";
|
||||
ResultDTO responseEntity = null;
|
||||
try {
|
||||
responseEntity = httpRestTemplateService.postForObject(url, param, ResultDTO.class);
|
||||
responseEntity = httpRestTemplateService.postForObject(url, param, ResultDTO.class, getRequestHeadMap());
|
||||
log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity));
|
||||
if(Objects.nonNull(responseEntity.getData()) && responseEntity.isSuccess()){
|
||||
return JSONObject.parseObject(JSONObject.toJSONString(responseEntity.getData()), UserCalendarsEventDTO.class);
|
||||
@@ -336,7 +336,7 @@ public class ISVHttpRequest {
|
||||
requestMap.put("endTime", endTime);
|
||||
ResultDTO responseEntity = null;
|
||||
try {
|
||||
responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap);
|
||||
responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap, getRequestHeadMap());
|
||||
log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity));
|
||||
if(Objects.nonNull(responseEntity.getData()) && responseEntity.isSuccess()){
|
||||
return JSONObject.parseArray(JSONObject.toJSONString(responseEntity.getData()), UserCalendarsEventDTO.class);
|
||||
@@ -363,7 +363,7 @@ public class ISVHttpRequest {
|
||||
FeiShuNoticeMsgEnum messageType = param.getMessageType();
|
||||
JSONObject request = JSONObject.parseObject(JSONObject.toJSONString(param));
|
||||
request.put("messageType", messageType.getMessageObject());
|
||||
responseEntity = httpRestTemplateService.postForObject(url, request, ResultDTO.class);
|
||||
responseEntity = httpRestTemplateService.postForObject(url, request, ResultDTO.class, getRequestHeadMap());
|
||||
log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity));
|
||||
} catch (Exception e) {
|
||||
log.info("调用isv出错{}", e);
|
||||
@@ -373,13 +373,12 @@ public class ISVHttpRequest {
|
||||
|
||||
public String getWechatAccessToken(String appId, String appSecret)throws ApiException{
|
||||
String url = "https://isv-partner.hsay.com/isv/wechat/getWechatAccessToken";
|
||||
//String url = "https://abstore-isv.coolstore.cn/isv/wechat/getWechatAccessToken";
|
||||
HashMap requestMap = new HashMap();
|
||||
requestMap.put("appId", appId);
|
||||
requestMap.put("appSecret", appSecret);
|
||||
ResultDTO responseEntity = null;
|
||||
try {
|
||||
responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap);
|
||||
responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap, getRequestHeadMap());
|
||||
log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity));
|
||||
if(Objects.nonNull(responseEntity.getData()) && responseEntity.isSuccess()){
|
||||
return (String) responseEntity.getData();
|
||||
@@ -390,4 +389,18 @@ public class ISVHttpRequest {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public Map<String, String> getRequestHeadMap(){
|
||||
String appKey = "qS13yHA4Z4";
|
||||
String appSecret = "1MddrP2MlUMAo9c5";
|
||||
String signStr ="appKey={0}&appSecret={1}&nonce={2}×tamp={3}";
|
||||
String nonce = UUIDUtils.get8UUID();
|
||||
String timestamp = String.valueOf(System.currentTimeMillis());
|
||||
String sign = Md5Utils.md5(MessageFormat.format(signStr, appKey, appSecret, nonce, timestamp));
|
||||
Map<String, String> headMap = new HashMap<>();
|
||||
headMap.put("nonce", nonce);
|
||||
headMap.put("sign", sign);
|
||||
headMap.put("timestamp", timestamp);
|
||||
return headMap;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.LinkedMultiValueMap;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
@@ -86,6 +87,28 @@ public class MDMHttpRequest {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public ResponseEntity<MDMResultDTO> getDictList() throws ApiException {
|
||||
String url = mdmBaseUrl + "/api/openapi/dict/api/dictListByCode?code=mdFraSource";
|
||||
ResponseEntity<MDMResultDTO> responseEntity = null;
|
||||
try {
|
||||
RpcGetMdmTokenReq rpcGetMDMTokenReq = new RpcGetMdmTokenReq();
|
||||
rpcGetMDMTokenReq.setAppKey(mdmAppKey);
|
||||
rpcGetMDMTokenReq.setAppSecret(mdmAppSec);
|
||||
Map<String, String> headers = new HashMap<>(1);
|
||||
headers.put("Authorization",getMdmAccessToken());
|
||||
responseEntity = RestTemplateUtil.get(url, headers, MDMResultDTO.class);
|
||||
log.info("url:{}, header:{}, response:{}", url, JSONObject.toJSONString(headers), JSONObject.toJSONString(responseEntity));
|
||||
if (Objects.nonNull(responseEntity.getBody()) && responseEntity.getBody().isSuccess()) {
|
||||
return responseEntity;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.info("调用MDM接口出错 url{}, e{}", url, e);
|
||||
throw new ApiException(e.getMessage());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取 mdm 所有业务区域
|
||||
* @param headers headers
|
||||
|
||||
@@ -1,122 +0,0 @@
|
||||
package com.cool.store.job;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.alibaba.fastjson.TypeReference;
|
||||
import com.cool.store.dto.mdm.AccessTokenDTO;
|
||||
import com.cool.store.dto.response.DictResultDTO;
|
||||
import com.cool.store.dto.response.MDMResultDTO;
|
||||
import com.cool.store.entity.HyPartnerFraSourceDO;
|
||||
import com.cool.store.exception.ApiException;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.mapper.HyPartnerFraSourceMapper;
|
||||
import com.cool.store.request.RpcGetMdmTokenReq;
|
||||
import com.cool.store.utils.RestTemplateUtil;
|
||||
import com.xxl.job.core.context.XxlJobHelper;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author hxd
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class FraSourceSyncJob {
|
||||
|
||||
|
||||
@Value("${hs.mdm.baseUrl:null}")
|
||||
private String mdmBaseUrl;
|
||||
|
||||
@Value("${hs.mdm.appkey:null}")
|
||||
private String mdmAppKey;
|
||||
|
||||
@Value("${hs.mdm.appsec:null}")
|
||||
private String mdmAppSec;
|
||||
|
||||
@Resource
|
||||
private HyPartnerFraSourceMapper hyPartnerFraSourceMapper;
|
||||
|
||||
@XxlJob("FraSourceSyncJob")
|
||||
public void fraSourceSyncJob() {
|
||||
XxlJobHelper.log("-------------------------------定时同步800请求来源开始-------------------------------");
|
||||
execute();
|
||||
XxlJobHelper.log("-------------------------------定时同步800请求来源结束-------------------------------");
|
||||
XxlJobHelper.handleSuccess();
|
||||
}
|
||||
|
||||
private void execute() {
|
||||
DictResultDTO dictResultDTO = null;
|
||||
try {
|
||||
dictResultDTO = JSON.parseObject(getDictList(), new TypeReference<DictResultDTO>() {
|
||||
});
|
||||
} catch (ApiException e) {
|
||||
log.error("请求800获取字典报错:" + JSONObject.toJSONString(e));
|
||||
}
|
||||
if (ObjectUtil.isNull(dictResultDTO)) {
|
||||
return;
|
||||
}
|
||||
List<DictResultDTO.Dict> configList = dictResultDTO.getConfigList();
|
||||
List<HyPartnerFraSourceDO> collect = configList.stream().map(item -> {
|
||||
HyPartnerFraSourceDO hyPartnerFraSourceDO = new HyPartnerFraSourceDO();
|
||||
BeanUtil.copyProperties(item, hyPartnerFraSourceDO);
|
||||
hyPartnerFraSourceDO.setSourceId(item.getId());
|
||||
return hyPartnerFraSourceDO;
|
||||
}).collect(Collectors.toList());
|
||||
hyPartnerFraSourceMapper.batchInsertSelective(collect);
|
||||
}
|
||||
|
||||
public String getDictList() throws ApiException {
|
||||
String url = mdmBaseUrl + "/api/openapi/dict/api/dictListByCode?code=mdFraSource";
|
||||
ResponseEntity<MDMResultDTO> responseEntity = null;
|
||||
try {
|
||||
RpcGetMdmTokenReq rpcGetMDMTokenReq = new RpcGetMdmTokenReq();
|
||||
rpcGetMDMTokenReq.setAppKey(mdmAppKey);
|
||||
rpcGetMDMTokenReq.setAppSecret(mdmAppSec);
|
||||
Map<String, String> headers = new HashMap<>(1);
|
||||
headers.put("Authorization", getMdmAccessToken(rpcGetMDMTokenReq));
|
||||
responseEntity = RestTemplateUtil.get(url, headers, MDMResultDTO.class);
|
||||
log.info("url:{}, header:{}, response:{}", url, JSONObject.toJSONString(headers), JSONObject.toJSONString(responseEntity));
|
||||
if (Objects.nonNull(responseEntity.getBody()) && responseEntity.getBody().isSuccess()) {
|
||||
return JSONObject.toJSONString(responseEntity.getBody().getData());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.info("调用MDM接口出错 url{}, e{}", url, 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 Token 出错 url:\t{}, e:\t{}", url, e);
|
||||
throw new ApiException(e.getMessage());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -111,4 +111,31 @@ public class JobHandler {
|
||||
}
|
||||
}
|
||||
|
||||
@XxlJob("remindInterviewStartTomorrow")
|
||||
public void remindInterviewStartTomorrow() {
|
||||
try {
|
||||
log.info("面试开始前一天20:00提醒开始");
|
||||
hyPartnerInterviewPlanService.remindInterviewStartTomorrow();
|
||||
log.info("面试开始前一天20:00提醒结束");
|
||||
XxlJobHelper.handleSuccess();
|
||||
} catch (Exception e) {
|
||||
log.error("面试开始前一天20:00提醒异常", e);
|
||||
XxlJobHelper.log("面试开始前一天20:00提醒异常" + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
//每半小时执行一次,查询有无面试时间 x 在当前时间 y < x <= y + 30m 内,有就发短信
|
||||
@XxlJob("remindInterviewStartMinutes")
|
||||
public void remindInterviewStartMinutes() {
|
||||
try {
|
||||
log.info("面试开始前30分钟提醒开始");
|
||||
hyPartnerInterviewPlanService.remindInterviewStartMinutes();
|
||||
log.info("面试开始前30分钟提醒结束");
|
||||
XxlJobHelper.handleSuccess();
|
||||
} catch (Exception e) {
|
||||
log.error("面试开始前30分钟提醒异常", e);
|
||||
XxlJobHelper.log("面试开始前30分钟提醒异常" + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -128,6 +128,26 @@ public class HttpRestTemplateService {
|
||||
return result;
|
||||
}
|
||||
|
||||
public <T> T postForObject(String url, Object request, Class<T> responseType, Map<String, String> headMap) {
|
||||
logger.info("postForObject start:url={},request={},responseType={}, tenantAccessToken:{}", url, JSONObject.toJSONString(request), responseType.getName(), JSONObject.toJSONString(headMap));
|
||||
T result = null;
|
||||
try {
|
||||
MultiValueMap<String, String> headers = new LinkedMultiValueMap();
|
||||
headMap.forEach((k, v)->{
|
||||
headers.add(k, v);
|
||||
});
|
||||
headers.add("Content-Type", "application/json");
|
||||
HttpEntity httpEntity = new HttpEntity(request, headers);
|
||||
result = restTemplate.postForObject(url, httpEntity, responseType);
|
||||
} catch (RestClientException e) {
|
||||
logger.error("postForObject error:{}", JSONObject.toJSONString(result));
|
||||
logger.error("postForObject error:{}", e);
|
||||
throw e;
|
||||
}
|
||||
logger.info("postForObject end:result={}", JSONObject.toJSONString(result));
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取Headers
|
||||
|
||||
@@ -63,4 +63,14 @@ public interface HyPartnerInterviewPlanService {
|
||||
*/
|
||||
void updateAbsentInterview() throws ApiException;
|
||||
void approvalReminder() throws ApiException;
|
||||
|
||||
/**
|
||||
* 面试前一天 20:00 提醒
|
||||
*/
|
||||
void remindInterviewStartTomorrow();
|
||||
|
||||
/**
|
||||
* 面试前 30 分钟提醒
|
||||
*/
|
||||
void remindInterviewStartMinutes();
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import com.cool.store.dao.HyPartnerBaseInfoDAO;
|
||||
import com.cool.store.dto.log.CreateQualifyVerifyDTO;
|
||||
import com.cool.store.dto.log.LogBasicDTO;
|
||||
import com.cool.store.dto.mdm.AccessTokenDTO;
|
||||
import com.cool.store.dto.response.DictResultDTO;
|
||||
import com.cool.store.dto.response.MDMResultDTO;
|
||||
import com.cool.store.entity.*;
|
||||
import com.cool.store.enums.*;
|
||||
@@ -27,6 +28,7 @@ import com.cool.store.request.data.flow.KeyText;
|
||||
import com.cool.store.request.data.flow.SkrRelshipProve;
|
||||
import com.cool.store.service.*;
|
||||
import com.cool.store.utils.*;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -42,6 +44,7 @@ import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author: young.yu
|
||||
@@ -52,14 +55,6 @@ import java.util.*;
|
||||
@Service
|
||||
public class FlowServiceImpl implements FlowService {
|
||||
|
||||
@Value("${hs.mdm.baseUrl:null}")
|
||||
private String mdmBaseUrl;
|
||||
|
||||
@Value("${hs.mdm.appkey:null}")
|
||||
private String mdmAppKey;
|
||||
|
||||
@Value("${hs.mdm.appsec:null}")
|
||||
private String mdmAppSec;
|
||||
|
||||
@Autowired
|
||||
private RedisUtilPool redisUtilPool;
|
||||
@@ -101,8 +96,8 @@ public class FlowServiceImpl implements FlowService {
|
||||
@Autowired
|
||||
private WechatMiniAppService wechatMiniAppService;
|
||||
|
||||
@Autowired
|
||||
private HyPartnerFraSourceMapper hyPartnerFraSourceMapper;
|
||||
@Value("${hs.mdm.appkey:null}")
|
||||
private String mdmAppKey;
|
||||
|
||||
@Autowired
|
||||
private MDMHttpRequest mdmHttpRequest;
|
||||
@@ -141,6 +136,7 @@ public class FlowServiceImpl implements FlowService {
|
||||
dataBody.setAmtJoin(request.getPartnerFee());
|
||||
dataBody.setAmtTechSer(request.getTechnicalServiceFee());
|
||||
dataBody.setAmtIntended(request.getIntentionMoney());
|
||||
dataBody.setSystemsource(mdmAppKey);
|
||||
rpcRequest.setData(dataBody);
|
||||
|
||||
//获取授权码
|
||||
@@ -245,6 +241,9 @@ public class FlowServiceImpl implements FlowService {
|
||||
String partnerName = request.getIntentionSignerUsername();
|
||||
//TODO 问题:如果因为 pdf 生成失败或者其他原因导致异常,但是由于 MDM 只是做回调,不对回调是否成功负责,会导致流程信息缺失
|
||||
genPassLetterAndUpdateDB(partnerName, verifyCity, new Date(), request.getInterviewId());
|
||||
//发送加盟商资质面试通过短信
|
||||
HyPartnerBaseInfoDO hyPartnerBaseInfoDO = hyPartnerBaseInfoDAO.getByPartnerLineId(Long.valueOf(request.getLineId()));
|
||||
smsService.sendSmsVariable(hyPartnerBaseInfoDO.getMobile(), SMSMsgEnum.INTERVIEW_PASS,wechatMiniAppService.getMiniAppUrl());
|
||||
//记录日志
|
||||
CreateQualifyVerifyDTO log = CreateQualifyVerifyDTO.builder().mobile(operator.getMobile()).operateUserId(operator.getUserId()).operateUsername(operator.getName()).operateTime(DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_SEC))
|
||||
.summary(request.getSummary()).qualiVerifyContent(JSON.toJSONString(partnerCertificationInfoDO)).build();
|
||||
@@ -266,7 +265,6 @@ public class FlowServiceImpl implements FlowService {
|
||||
if (hyPartnerInterviewDO == null || hyPartnerInterviewDO.getInterviewPlanId() == null) {
|
||||
throw new ServiceException(ErrorCodeEnum.INTERVIEW_NOT_EXIST);
|
||||
}
|
||||
String interviewId = hyPartnerInterviewDO.getId().toString();
|
||||
String interviewPlanId = hyPartnerInterviewDO.getInterviewPlanId().toString();
|
||||
Long partnerLineId = hyPartnerInterviewDO.getPartnerLineId();
|
||||
//审核通过
|
||||
@@ -282,9 +280,6 @@ public class FlowServiceImpl implements FlowService {
|
||||
hyInspectionDO.setCreateTime(DateUtil.formatDateTime(passDate));
|
||||
hyInspectionDO.setType(InspectionTyeEnum.INTERVIEW_INSPECTION.getCode());
|
||||
inspectionMapper.insertSelective(hyInspectionDO);
|
||||
//发送加盟商资质审核通过短信
|
||||
HyPartnerBaseInfoDO hyPartnerBaseInfoDO = hyPartnerBaseInfoDAO.getByPartnerLineId(partnerLineId);
|
||||
smsService.sendSmsVariable(hyPartnerBaseInfoDO.getMobile(), SMSMsgEnum.INTERVIEW_PASS,wechatMiniAppService.getMiniAppUrl());
|
||||
//记录日志
|
||||
//这里记录的日志时间为 passTime,而不是当前时间,否则 getTipsInfo 接口返回的时间是这里记录的当前时间,与 passTime 不符
|
||||
LogBasicDTO log = LogBasicDTO.builder().operateTime(DateUtil.format(passDate, CoolDateUtils.DATE_FORMAT_SEC))
|
||||
@@ -304,9 +299,19 @@ public class FlowServiceImpl implements FlowService {
|
||||
}
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@Override
|
||||
public List<HyPartnerFraSourceDO> getDictList() {
|
||||
return hyPartnerFraSourceMapper.selectAllFraSourceList();
|
||||
String s = JSONObject.toJSONString(mdmHttpRequest.getDictList().getBody().getData());
|
||||
DictResultDTO dictResultDTO = JSON.parseObject(s, new TypeReference<DictResultDTO>() {
|
||||
});
|
||||
List<HyPartnerFraSourceDO> collect = dictResultDTO.getConfigList().stream().map(item -> {
|
||||
HyPartnerFraSourceDO hyPartnerFraSourceDO = new HyPartnerFraSourceDO();
|
||||
BeanUtil.copyProperties(item, hyPartnerFraSourceDO);
|
||||
hyPartnerFraSourceDO.setSourceId(item.getId());
|
||||
return hyPartnerFraSourceDO;
|
||||
}).collect(Collectors.toList());
|
||||
return collect;
|
||||
}
|
||||
|
||||
private List<SkrRelshipProve> OSSFileToMDMFile(Map<String, String> headers, List<String> fileUrlList) throws ApiException, IOException {
|
||||
|
||||
@@ -137,9 +137,9 @@ public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoServic
|
||||
//修改意向申请信息中的加盟商名称与手机号
|
||||
hyPartnerBaseInfoDAO.updateByPartnerId(baseUserInfoRequest.getUsername(),baseUserInfoRequest.getMobile(),baseUserInfoRequest.getPartnerId());
|
||||
|
||||
// 更新线索状态
|
||||
HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoService.generateDefaultLineInfo(hyPartnerUserInfoDO.getPartnerId(), baseUserInfoRequest.getWantShopArea(), baseUserInfoRequest.getAcceptAdjustType(),Boolean.TRUE);
|
||||
|
||||
// 更新线索状态 1.4开始 无需更新线索状态
|
||||
//HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoService.generateDefaultLineInfo(hyPartnerUserInfoDO.getPartnerId(), baseUserInfoRequest.getWantShopArea(), baseUserInfoRequest.getAcceptAdjustType(),Boolean.TRUE);
|
||||
HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoDAO.getByPartnerId(baseUserInfoRequest.getPartnerId());
|
||||
//更新意向申请表中信息
|
||||
HyPartnerIntentInfoDO hyPartnerIntentInfoDO = hyPartnerIntentInfoDAO.selectByLineId(hyPartnerLineInfoDO.getId());
|
||||
if (hyPartnerIntentInfoDO!=null){
|
||||
|
||||
@@ -17,10 +17,7 @@ import com.cool.store.mapper.HyPartnerLineInfoMapper;
|
||||
import com.cool.store.mapper.HyPartnerUserChannelMapper;
|
||||
import com.cool.store.request.CloseFollowRequest;
|
||||
import com.cool.store.request.GetInterviewListReq;
|
||||
import com.cool.store.service.HyPartnerInterviewPlanService;
|
||||
import com.cool.store.service.HyPartnerLineInfoService;
|
||||
import com.cool.store.service.InterviewService;
|
||||
import com.cool.store.service.LabelService;
|
||||
import com.cool.store.service.*;
|
||||
import com.cool.store.utils.CoolDateUtils;
|
||||
import com.cool.store.vo.InterviewDetailInfoVO;
|
||||
import com.cool.store.vo.PartnerInterviewInfoVO;
|
||||
@@ -36,6 +33,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
@@ -91,6 +89,13 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
|
||||
|
||||
@Autowired
|
||||
private ISVHttpRequest isvHttpRequest;
|
||||
|
||||
@Autowired
|
||||
private SmsService smsService;
|
||||
|
||||
@Autowired
|
||||
private WechatMiniAppService wechatMiniAppService;
|
||||
|
||||
@Override
|
||||
public List<InterviewDetailInfoVO> getInterviewPlanList(String userId,Date dateTime) {
|
||||
String currentDay = DateUtil.format(dateTime, CoolDateUtils.DATE_FORMAT_DAY);
|
||||
@@ -354,4 +359,25 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
|
||||
return partnerInterviewInfoVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remindInterviewStartTomorrow() {
|
||||
List<HyInterviewRemindDO> tomorrowInterviewInfos = hyPartnerInterviewPlanMapper.getTomorrowInterview();
|
||||
SimpleDateFormat timeFormatter = new SimpleDateFormat("HH:mm");
|
||||
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy年MM月dd日");
|
||||
Date startTime;
|
||||
for (HyInterviewRemindDO tomorrowInterviewInfo : tomorrowInterviewInfos) {
|
||||
startTime = tomorrowInterviewInfo.getStartTime();
|
||||
smsService.sendSmsVariable(tomorrowInterviewInfo.getMobile(), SMSMsgEnum.INTERVIEW_BEGIN_IN_DAY, timeFormatter.format(startTime), dateFormatter.format(startTime), wechatMiniAppService.getMiniAppUrl());
|
||||
}
|
||||
}
|
||||
|
||||
//每半小时执行一次,查询有无面试时间 x 在当前时间 y < x <= y + 30m 内,有就发短信
|
||||
@Override
|
||||
public void remindInterviewStartMinutes() {
|
||||
List<HyInterviewRemindDO> minutesInterviewInfos = hyPartnerInterviewPlanMapper.remindInterviewStartMinutes();
|
||||
for (HyInterviewRemindDO minutesInterviewInfo : minutesInterviewInfos) {
|
||||
smsService.sendSmsVariable(minutesInterviewInfo.getMobile(), SMSMsgEnum.INTERVIEW_BEGIN_IN_MINUTES, wechatMiniAppService.getMiniAppUrl());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -362,20 +362,23 @@ public class InterviewServiceImpl implements InterviewService {
|
||||
try {
|
||||
//房间状态
|
||||
Integer roomStatus = hyPartnerInterviewPlanMapper.getRoomStatus(dto.getInterviewPlanId());
|
||||
//已关闭就禁止进入房间了
|
||||
if (roomStatus.equals(RoomStatus.CLOSED.getCode())) {
|
||||
throw new ApiException(ErrorCodeEnum.ROOM_STATUS_ERROR);
|
||||
}
|
||||
//面试流程状态
|
||||
String status = hyPartnerInterviewMapper.getStatus(dto.getInterviewPlanId());
|
||||
//如果面试间状态是 0 待开放或者面试流程状态是 2 待面试,就不让进
|
||||
//再判断时间是否是正确的时间
|
||||
//如果面试间状态是 0 待开放或者面试流程状态是 2 待面试,再判断时间是否是正确的时间(定时任务代偿)
|
||||
if (roomStatus.equals(RoomStatus.WAIT_FOR_OPEN.getCode()) || WorkflowStatusEnum.INTERVIEW_2.getCode().equals(status)) {
|
||||
HyPartnerInterviewPlanDO interviewPlan = hyPartnerInterviewPlanMapper.getInterviewPlanById(dto.getInterviewPlanId());
|
||||
//面试预期开始时间
|
||||
DateTime exceptTime = DateUtil.offsetMinute(interviewPlan.getStartTime(), -5);
|
||||
//面试结束时间
|
||||
DateTime endTime = DateUtil.parseDateTime(DateUtil.formatDateTime(interviewPlan.getEndTime()));
|
||||
//DateTime endTime = DateUtil.parseDateTime(DateUtil.formatDateTime(interviewPlan.getEndTime()));
|
||||
DateTime now = DateUtil.date();
|
||||
//如果当前时间在预期开始时间和结束时间之间
|
||||
//修改面试状态和房间状态(修改房间状态在后面 hyPartnerInterviewPlanDO 中一并修改)
|
||||
if (exceptTime.isBefore(now) && now.isBefore(endTime)) {
|
||||
if (exceptTime.isBefore(now)) {
|
||||
//1. 将面试状态改为 --> 2 已开始
|
||||
interviewDAO.updateInterviewWorkflowStatus(dto.getInterviewPlanId(), WorkflowStatusEnum.INTERVIEW_3);
|
||||
//hyPartnerInterviewDO.setStatus(Integer.parseInt(WorkflowStatusEnum.INTERVIEW_3.getCode()));
|
||||
@@ -547,7 +550,7 @@ public class InterviewServiceImpl implements InterviewService {
|
||||
Date now = new Date();
|
||||
if (interviewStartTime.isBeforeOrEquals(now)) {
|
||||
record.setRoomStatus(RoomStatus.OPEN.getCode());
|
||||
record.setActualEndTime(new Date());
|
||||
record.setActualStartTime(new Date());
|
||||
}
|
||||
record.setUpdateTime(new Date());
|
||||
hyPartnerInterviewPlanMapper.updateByPrimaryKeySelective(record);
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
package com.cool.store.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cool.store.constants.RedisConstant;
|
||||
import com.cool.store.dto.response.MDMResultDTO;
|
||||
import com.cool.store.entity.MDMAreaDO;
|
||||
import com.cool.store.exception.ApiException;
|
||||
@@ -13,13 +10,11 @@ import com.cool.store.response.mdm.BusinessRegion;
|
||||
import com.cool.store.service.MDMAreaService;
|
||||
import com.cool.store.utils.RedisUtilPool;
|
||||
import com.cool.store.utils.StringUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.text.MessageFormat;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -41,13 +36,13 @@ public class MDMAreaServiceImpl implements MDMAreaService {
|
||||
*/
|
||||
@Override
|
||||
public List<MDMAreaDO> getProvince() {
|
||||
String provincesJson = redisUtilPool.getString(RedisConstant.MDM_AREA_PROVINCE);
|
||||
if (StringUtils.isNotEmpty(provincesJson)) {
|
||||
return (List<MDMAreaDO>) JSONObject.parseObject(provincesJson, List.class);
|
||||
}
|
||||
// String provincesJson = redisUtilPool.getString(RedisConstant.MDM_AREA_PROVINCE);
|
||||
// if (StringUtils.isNotEmpty(provincesJson)) {
|
||||
// return (List<MDMAreaDO>) JSONObject.parseObject(provincesJson, List.class);
|
||||
// }
|
||||
List<MDMAreaDO> areaDOList = mdmAreaMapper.getProvince();
|
||||
//过期时间三小时
|
||||
redisUtilPool.setString(RedisConstant.MDM_AREA_PROVINCE, JSONObject.toJSONString(areaDOList), 3 * 60 * 60);
|
||||
// redisUtilPool.setString(RedisConstant.MDM_AREA_PROVINCE, JSONObject.toJSONString(areaDOList), 3 * 60 * 60);
|
||||
return areaDOList;
|
||||
}
|
||||
|
||||
@@ -57,17 +52,17 @@ public class MDMAreaServiceImpl implements MDMAreaService {
|
||||
*/
|
||||
@Override
|
||||
public List<MDMAreaDO> getSonArea(String code) {
|
||||
String provincesJson = redisUtilPool.getString(MessageFormat.format(RedisConstant.MDM_AREA_OTHERS, code));
|
||||
if (StringUtils.isNotEmpty(provincesJson)) {
|
||||
return (List<MDMAreaDO>) JSONObject.parseObject(provincesJson, List.class);
|
||||
}
|
||||
// String provincesJson = redisUtilPool.getString(MessageFormat.format(RedisConstant.MDM_AREA_OTHERS, code));
|
||||
// if (StringUtils.isNotEmpty(provincesJson)) {
|
||||
// return (List<MDMAreaDO>) JSONObject.parseObject(provincesJson, List.class);
|
||||
// }
|
||||
List<MDMAreaDO> areaDOList = mdmAreaMapper.getSonArea(code);
|
||||
//数据库也没有该数据就缓存空值,但是只缓存一分钟
|
||||
if (areaDOList == null || areaDOList.size() == 0) {
|
||||
redisUtilPool.setString(MessageFormat.format(RedisConstant.MDM_AREA_OTHERS, code), "", 60);
|
||||
}
|
||||
// if (areaDOList == null || areaDOList.size() == 0) {
|
||||
// redisUtilPool.setString(MessageFormat.format(RedisConstant.MDM_AREA_OTHERS, code), "", 60);
|
||||
// }
|
||||
//过期时间三小时
|
||||
redisUtilPool.setString(MessageFormat.format(RedisConstant.MDM_AREA_OTHERS, code), JSONObject.toJSONString(areaDOList), 3 * 60 * 60);
|
||||
// redisUtilPool.setString(MessageFormat.format(RedisConstant.MDM_AREA_OTHERS, code), JSONObject.toJSONString(areaDOList), 3 * 60 * 60);
|
||||
return areaDOList;
|
||||
}
|
||||
|
||||
@@ -114,16 +109,16 @@ public class MDMAreaServiceImpl implements MDMAreaService {
|
||||
*/
|
||||
@Override
|
||||
public List<BelongRegion> getBelongRegion() throws ApiException {
|
||||
String belongRegionsString = redisUtilPool.getString(RedisConstant.MDM_BELONG_REGION);
|
||||
if (StringUtil.isNotEmpty(belongRegionsString)) {
|
||||
return (List<BelongRegion>) JSONObject.parseObject(belongRegionsString, List.class);
|
||||
}
|
||||
// String belongRegionsString = redisUtilPool.getString(RedisConstant.MDM_BELONG_REGION);
|
||||
// if (StringUtil.isNotEmpty(belongRegionsString)) {
|
||||
// return (List<BelongRegion>) JSONObject.parseObject(belongRegionsString, List.class);
|
||||
// }
|
||||
Map<String, String> headers = new HashMap<>();
|
||||
headers.put("Authorization", mdmHttpRequest.getMdmAccessToken());
|
||||
ResponseEntity<MDMResultDTO> belongRegionResp = mdmHttpRequest.getBelongRegion(headers);
|
||||
List<BelongRegion> belongRegions = (List<BelongRegion>) belongRegionResp.getBody().getData();
|
||||
//缓存,半个小时过期
|
||||
redisUtilPool.setString(RedisConstant.MDM_BELONG_REGION, JSON.toJSONString(belongRegions), 30 * 60);
|
||||
// redisUtilPool.setString(RedisConstant.MDM_BELONG_REGION, JSON.toJSONString(belongRegions), 30 * 60);
|
||||
return belongRegions;
|
||||
}
|
||||
|
||||
@@ -133,16 +128,16 @@ public class MDMAreaServiceImpl implements MDMAreaService {
|
||||
*/
|
||||
@Override
|
||||
public List<BusinessRegion> getBusinessRegion() throws ApiException {
|
||||
String belongRegionsString = redisUtilPool.getString(RedisConstant.MDM_BUSINESS_REGION);
|
||||
if (StringUtil.isNotEmpty(belongRegionsString)) {
|
||||
return (List<BusinessRegion>) JSONObject.parseObject(belongRegionsString, List.class);
|
||||
}
|
||||
// String belongRegionsString = redisUtilPool.getString(RedisConstant.MDM_BUSINESS_REGION);
|
||||
// if (StringUtil.isNotEmpty(belongRegionsString)) {
|
||||
// return (List<BusinessRegion>) JSONObject.parseObject(belongRegionsString, List.class);
|
||||
// }
|
||||
Map<String, String> headers = new HashMap<>();
|
||||
headers.put("Authorization", mdmHttpRequest.getMdmAccessToken());
|
||||
ResponseEntity<MDMResultDTO> belongRegionResp = mdmHttpRequest.getBusinessRegion(headers);
|
||||
List<BusinessRegion> businessRegions = (List<BusinessRegion>) belongRegionResp.getBody().getData();
|
||||
//缓存,半个小时过期
|
||||
redisUtilPool.setString(RedisConstant.MDM_BUSINESS_REGION, JSON.toJSONString(businessRegions), 30 * 60);
|
||||
// redisUtilPool.setString(RedisConstant.MDM_BUSINESS_REGION, JSON.toJSONString(businessRegions), 30 * 60);
|
||||
return businessRegions;
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,8 @@ import org.junit.jupiter.api.Test;
|
||||
* @Author: young.yu
|
||||
* @Date: 2023-09-14 15:22
|
||||
* @Description:
|
||||
*/class SmsServiceTest {
|
||||
*/
|
||||
class SmsServiceTest {
|
||||
|
||||
@Test
|
||||
void sendSmsNormal() {
|
||||
|
||||
Reference in New Issue
Block a user