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

This commit is contained in:
zhangchenbiao
2023-06-20 16:26:46 +08:00
36 changed files with 310 additions and 183 deletions

View File

@@ -220,4 +220,6 @@ public class RedisConstant {
public static final String DEVICE_OPEN_TOKEN = "device_open_token:{0}:{1}:{2}";
public static final String PHONE_NUMBER= "phone_number_";
}

View File

@@ -69,6 +69,8 @@ public enum ErrorCodeEnum {
CREATE_CALENDAR_EVENT_FAIL(1021109, "创建面试安排失败!", null),
FEISHU_UPDATE_SCHEDULE_ERROR(1021110, "修改面试安排失败!", null),
INTERVIEW_STATUS_ERROR(1021111, "面试状态错误!", null),
INTERVIEW_PLAN_ALREADY_EXIST(1021112, "面试计划已存在,请勿重复申请!", null),
INTERVIEW_PLAN_ID_IS_NULL(1021113, "面试计划Id为空", null),
SIGN_FAIL(600000, "验签失败", null),
GET_ACCESSTOKEN_ERROR(600001, "获取小程序TOKEN错误", null),
NEW_MOBILE_HAS_EXIST(600002,"加盟商用户信息已存在",null),

View File

@@ -90,4 +90,9 @@ public class RedisConstantUtil {
public String getRegionNameListKey(String eid, String regionId) {
return active + "_" + RedisConstant.REGION_ALL_NAME_CACHE + eid + ":" + regionId;
}
public String getPhoneNumber(String phoneNumber) {
return active + "_" + RedisConstant.PHONE_NUMBER + phoneNumber;
}
}

View File

@@ -52,6 +52,13 @@ public class HyIntendDevMappingDAO {
return hyIntendDevelopementMappingMapper.selectByMappingIdList(idList);
}
public List<ZoneCheckDTO> selectByOpenAreaMappingIdList(List<Long> idList){
if (CollectionUtils.isEmpty(idList)){
return new ArrayList<>();
}
return hyIntendDevelopementMappingMapper.selectByOpenAreaMappingIdList(idList);
}
public int batchInsert(List<HyIntendDevelopementMappingDO> recordList){
if (CollectionUtils.isEmpty(recordList)){

View File

@@ -54,4 +54,6 @@ public interface HyIntendDevelopementMappingMapper {
* @return
*/
List<ZoneCheckDTO> selectByMappingIdList(@Param("mappingIdList") List<Long> mappingIdList);
List<ZoneCheckDTO> selectByOpenAreaMappingIdList(@Param("openAreaMappingIdList") List<Long> openAreaMappingIdList);
}

View File

@@ -130,4 +130,19 @@
</if>
</where>
</select>
<select id="selectByOpenAreaMappingIdList" resultType="com.cool.store.dto.partner.ZoneCheckDTO">
select
a.open_area_mapping_id as openAreaMappingId,
b.zone_name as zoneName
from hy_intend_developement_mapping a inner join hy_intend_dev_zone_info b on a.mapping_id = b.id
<where>
<if test="openAreaMappingIdList!=null and openAreaMappingIdList.size>0">
<foreach collection="openAreaMappingIdList" open="and a.open_area_mapping_id in (" close=")" separator="," item="mappingId">
#{mappingId}
</foreach>
</if>
</where>
</select>
</mapper>

View File

@@ -194,6 +194,9 @@
<if test="keyword!=null and keyword!=''">
and area_path like concat('%',#{keyword},'%')
</if>
<if test="applyFlag!=null and applyFlag==true">
and (area_status = 'open' or area_status = 'keyOpen')
</if>
<if test="areaStatus!=null and areaStatus!=''">
and area_status = #{areaStatus}
</if>

View File

@@ -227,7 +227,7 @@
or id = #{record.id}
</if>
<if test="record.partnerLineId != null">
or partner_id_line_id = #{record.partnerLineId}
or partner_line_id = #{record.partnerLineId}
</if>
</where>
</update>

View File

@@ -14,8 +14,8 @@
<result column="record_time" jdbcType="TIMESTAMP" property="recordTime" />
<result column="summary" jdbcType="VARCHAR" property="summary" />
<result column="auth_code" jdbcType="VARCHAR" property="authCode" />
<result column="qualify_verify_id" jdbcType="VARCHAR" property="qualifyVerifyId" />
<result column="pass_file_url" jdbcType="VARCHAR" property="passFileUrl" />
<result column="pass_pdf_url" jdbcType="VARCHAR" property="passPdfUrl" />
<result column="pass_image_url" jdbcType="VARCHAR" property="passImageUrl" />
<result column="expiry_date" jdbcType="TIMESTAMP" property="expiryDate" />
<result column="latest_log_message" jdbcType="VARCHAR" property="latestLogMessage" />
<result column="pass_reason" jdbcType="VARCHAR" property="passReason" />
@@ -47,7 +47,7 @@
<sql id="Base_Column_List">
id, status, partner_line_id, interview_plan_id, partner_id, deadline, interviewer,
recorder, process_info, record_time, summary, auth_code, qualify_verify_id, pass_file_url, expiry_date,
recorder, process_info, record_time, summary, auth_code, pass_pdf_url, pass_image_url, expiry_date,
latest_log_message, pass_reason, certify_file, create_time, update_time, approve_time,
partner_enter_time, interviewer_enter_time
</sql>
@@ -87,8 +87,11 @@
<if test="record.authCode != null">
auth_code,
</if>
<if test="record.passFileUrl != null">
pass_file_url,
<if test="record.passPdfUrl != null">
pass_pdf_url,
</if>
<if test="record.passImageUrl != null">
pass_image_url,
</if>
<if test="record.expiryDate != null">
expiry_date,
@@ -152,8 +155,11 @@
<if test="record.authCode != null">
#{record.authCode},
</if>
<if test="record.passFileUrl != null">
#{record.passFileUrl},
<if test="record.passPdfUrl != null">
#{record.passPdfUrl},
</if>
<if test="record.passImageUrl != null">
#{record.passImageUrl},
</if>
<if test="record.expiryDate != null">
#{record.expiryDate},

View File

@@ -9,6 +9,7 @@
<result column="start_time" jdbcType="TIMESTAMP" property="startTime" />
<result column="end_time" jdbcType="TIMESTAMP" property="endTime" />
<result column="is_partner_interview" jdbcType="TINYINT" property="isPartnerInterview" />
<result column="application_approved" jdbcType="TINYINT" property="applicationApproved" />
<result column="actual_start_time" jdbcType="TIMESTAMP" property="actualStartTime" />
<result column="actual_end_time" jdbcType="TIMESTAMP" property="actualEndTime" />
<result column="room_id" jdbcType="VARCHAR" property="roomId" />
@@ -74,6 +75,9 @@
<if test="record.updateTime != null">
update_time,
</if>
<if test="record.applicationApproved != null">
application_approved,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="record.partnerLineId != null">
@@ -121,6 +125,9 @@
<if test="record.updateTime != null">
#{record.updateTime},
</if>
<if test="record.applicationApproved != null">
#{record.applicationApproved},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective">

View File

@@ -320,7 +320,7 @@
and investment_manager = #{userId}
</if>
<if test="lastMonthTodayDate!=null">
and close_time > #{lastMonthTodayDate} and close_time <![CDATA[<]]> now
and close_time > #{lastMonthTodayDate} and close_time <![CDATA[<]]> now()
</if>
</where>
</select>
@@ -401,6 +401,7 @@
<select id="getPublicSeaLineList" resultType="com.cool.store.dto.partner.PublicSeaLineDTO">
select
a.id as lineId,
a.create_time as createTime,
b.partner_id as partner_id,
b.mobile as mobile,
@@ -408,7 +409,7 @@
b.want_shop_area as wantShopArea,
b.accept_adjust_type as acceptAdjustType
FROM hy_partner_line_info a inner JOIN hy_partner_user_info b on a.partner_id = b.partner_id
where a.line_status = 1
where a.line_status = 0
<if test="userNameKeyword!=null and userNameKeyword!=''">
and b.username like concat('%',#{userNameKeyword},'%')
</if>
@@ -519,7 +520,7 @@
</select>
<select id="getFollowCountList" resultType="com.cool.store.dto.partner.LineCountDTO">
SELECT partner_id, COUNT(1) AS num_of_leads
SELECT partner_id, IFNULL(COUNT(1), 0) AS followCount
FROM hy_partner_line_info
GROUP BY partner_id;
</select>

View File

@@ -0,0 +1,15 @@
package com.cool.store.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class FraSourceDO {
@ApiModelProperty("key")
private String key;
@ApiModelProperty("text")
private String text;
}

View File

@@ -66,6 +66,9 @@ public class HyPartnerInterviewPlanDO implements Serializable {
@ApiModelProperty("更新时间")
private Date updateTime;
@ApiModelProperty("预约是否通过审核0.未审核1.通过审核")
private Integer applicationApproved;
@ApiModelProperty("飞书日历id")
private String feishuCalendarId;

View File

@@ -7,8 +7,7 @@ import io.swagger.annotations.ApiModelProperty;
public class CreateAppointmentReq {
@ApiModelProperty(value = "加盟商用户ID", required = true)
private String partnerId;
@ApiModelProperty(value = "面试官id", required = true)
@ApiModelProperty(value = "面试官id")
private String interviewerId;
@ApiModelProperty(value = "预约开始时间 (YYYY-MM-DD hh:mm:ss)", required = true)
@@ -16,7 +15,7 @@ public class CreateAppointmentReq {
@ApiModelProperty(value = "预约结束时间 (YYYY-MM-DD hh:mm:ss)", required = true)
private String endBookingTime;
@ApiModelProperty(value = "线索id", required = true)
@ApiModelProperty(value = "线索id(如果面试官id会根据加盟商id和线索id查询面试官)", required = true)
private Long partnerLineId;
public String getPartnerId() {
@@ -59,5 +58,4 @@ public class CreateAppointmentReq {
this.endBookingTime = endBookingTime;
}
}

View File

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

View File

@@ -0,0 +1,42 @@
package com.cool.store.request;
import com.cool.store.entity.FraSourceDO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author: young.yu
* @Date: 2023-06-14 15:06
* @Description:
*/
@Data
public class RpcCreateQualifyVerifyReq {
@lombok.Data
public class Data {
@ApiModelProperty(value = "意向签约时间", required = true)
private String intendedSignDate;
@ApiModelProperty(value = "请求来源", required = true)
private FraSourceDO fraSource;
@ApiModelProperty(value = "保证金(元)", required = true, example = "5000")
private int amtDeposit;
@ApiModelProperty(value = "授权码", required = true)
private String authCode;
@ApiModelProperty(value = "意向签约人", required = true)
private String intendedSigner;
@ApiModelProperty(value = "手机号", required = true)
private String intendedSignerTel;
}
@ApiModelProperty(value = "数据体", required = true)
private Data data;
@ApiModelProperty(value = "钉钉用户id", required = true)
private String dingUserId;
}

View File

@@ -19,7 +19,7 @@ public class BlackListVO {
private Long id;
@ApiModelProperty("加盟商用户ID")
private String partnerUserId;
private String partnerId;
@ApiModelProperty("加盟商用户名称")
private String partnerUserName;

View File

@@ -26,6 +26,9 @@ public class OSSServer {
@Value("${corp.id:null}")
private String corpId;
@Value("${cdn.url:null}")
private String cdnUrl;
/**
* 服务端上传文件的方法
* ObjectName 为文件存放位置 + 名字,不可包含 bucket
@@ -38,7 +41,7 @@ public class OSSServer {
PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, objectName, inputStream);
// 创建PutObject请求。
ossClient.putObject(putObjectRequest);
return "http://" + bucket + "." + endpoint + "/" + objectName;
return cdnUrl + "/partner/" + corpId + "/" + objectName;
} catch (OSSException oe) {
log.error("Caught an OSSException, which means your request made it to OSS, "
+ "but was rejected with an error response for some reason.");

View File

@@ -28,7 +28,7 @@ public interface DeskService {
* @param selectedData
* @return
*/
InterviewScheduleInfoVO interviewSchedule(String userId,Date selectedData);
InterviewScheduleInfoVO interviewSchedule(String userId,String selectedData);
/**
* 招商经理 各阶段 待处理 待跟进数量

View File

@@ -130,6 +130,14 @@ public interface HyPartnerLineInfoService {
*/
Boolean assignFollowUser(Long lineId);
/**
* 线索状态
* @param wantShopAreaId
* @param acceptAdjustType
* @return
*/
Boolean getLineStatus(Long wantShopAreaId,Integer acceptAdjustType);

View File

@@ -54,7 +54,7 @@ public interface InterviewService {
* @param request
* @return
*/
CreateAppointmentVO createAppointment(CreateAppointmentReq request);
CreateAppointmentVO createAppointment(CreateAppointmentReq request) throws ApiException;
/**
* 同意面试预约
@@ -64,4 +64,6 @@ public interface InterviewService {
void approveAppointment(ApproveAppointmentReq request) throws ApiException;
void reInterview(ReInterviewReq request) throws ApiException;
void rejectInterview(RejectInterviewReq request) throws ApiException;
public String getInterviewerByPartner(String partnerId,String lineId)throws ApiException;
}

View File

@@ -13,11 +13,14 @@ import com.cool.store.enums.IDCardSideEnum;
import com.cool.store.exception.ApiException;
import com.cool.store.exception.ServiceException;
import com.cool.store.service.AliyunService;
import com.cool.store.utils.RedisConstantUtil;
import com.cool.store.utils.RedisUtilPool;
import com.cool.store.vo.cuser.IdentityCardInfoVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
@@ -37,9 +40,18 @@ import java.util.Optional;
@Service
public class AliyunServiceImpl implements AliyunService {
@Resource
RedisUtilPool redisUtilPool;
@Resource
RedisConstantUtil redisConstantUtil;
@Override
public DescribePhoneNumberDTO getPhoneNumberAttribute(String phoneNumber) {
try {
String phone = redisUtilPool.getString(redisConstantUtil.getPhoneNumber(phoneNumber));
if (StringUtils.isNotEmpty(phone)){
return JSONObject.parseObject(phone, DescribePhoneNumberDTO.class);
}
Config config = new Config();
//todo zcb ak sk替换
config.accessKeyId = "LTAI5t9RaXvABZbHvoXjDFJ1";
@@ -55,6 +67,8 @@ public class AliyunServiceImpl implements AliyunService {
log.error("错误信息:" , response.body.message + "");
throw new ServiceException(ErrorCodeEnum.GET_PHONENUMBER_INFO_ERROR);
}
//保存到redis
redisUtilPool.setString(redisConstantUtil.getPhoneNumber(phoneNumber),JSONObject.toJSONString(response.body.data));
return JSONObject.parseObject(JSONObject.toJSONString(response.body.data), DescribePhoneNumberDTO.class);
} catch (Exception e) {
log.error("获取手机号异常:", e);

View File

@@ -16,6 +16,7 @@ import com.cool.store.vo.InterviewPlanVO;
import com.cool.store.vo.InterviewScheduleInfoVO;
import com.cool.store.vo.StageCountVO;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.client.utils.DateUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -53,15 +54,17 @@ public class DeskServiceImpl implements DeskService {
}
@Override
public InterviewScheduleInfoVO interviewSchedule(String userId,Date selectedData) {
public InterviewScheduleInfoVO interviewSchedule(String userId,String selectedData) {
if (StringUtils.isEmpty(userId)||selectedData==null){
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
}
Date date = DateUtils.parseDate(selectedData);
InterviewScheduleInfoVO interviewScheduleInfoVO = new InterviewScheduleInfoVO();
//查询面试数量
String currentDate = DateUtil.format(selectedData, CoolDateUtils.DATE_FORMAT_DAY);
String startTime = DateUtil.format(selectedData, CoolDateUtils.DATE_FORMAT_SEC);
String endTime = DateUtil.format(CoolDateUtils.getDateBefore(selectedData, 7), CoolDateUtils.DATE_FORMAT_SEC);
String currentDate = DateUtil.format(date, CoolDateUtils.DATE_FORMAT_DAY);
String startTime = DateUtil.format(date, CoolDateUtils.DATE_FORMAT_SEC);
String endTime = DateUtil.format(CoolDateUtils.getDateBefore(date, 7), CoolDateUtils.DATE_FORMAT_SEC);
SpecialDateRangeInterviewCountDTO interviewCount = hyPartnerInterviewPlanDAO.getInterviewCount(userId, currentDate, startTime, endTime);
interviewScheduleInfoVO.setCurrentDayInterviewCount(interviewCount.getCurrentDayInterviewCount());

View File

@@ -13,6 +13,7 @@ import com.cool.store.mapper.HyPartnerInterviewPlanMapper;
import com.cool.store.mapper.HyPartnerLineInfoMapper;
import com.cool.store.request.GetFreeBusyListReq;
import com.cool.store.service.FeiShuService;
import com.cool.store.service.InterviewService;
import com.cool.store.vo.interview.CalendarInfo;
import com.cool.store.vo.interview.FreeBusyInfo;
import com.cool.store.vo.interview.GetFreeBusyListVO;
@@ -39,7 +40,7 @@ public class FeiShuServiceImpl implements FeiShuService {
private HyPartnerInterviewPlanMapper hyPartnerInterviewPlanMapper;
@Autowired
private HyPartnerLineInfoMapper hyPartnerLineInfoMapper;
private InterviewService interviewService;
@Override
public GetFreeBusyListVO getFreeBusyList(GetFreeBusyListReq request) throws ApiException {
@@ -55,17 +56,7 @@ public class FeiShuServiceImpl implements FeiShuService {
}
//如果加盟商用户ID不为空且面试官ID为空
if (StringUtils.isNotEmpty(partnerId) && StringUtils.isNotEmpty(lineId)) {
//根据加盟商用户ID查询面试官ID
HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO = new HyPartnerInterviewPlanDO();
hyPartnerInterviewPlanDO.setPartnerId(partnerId);
List<HyPartnerInterviewPlanDO> hyPartnerInterviewPlanDOS = hyPartnerInterviewPlanMapper.selectBySelective(hyPartnerInterviewPlanDO);
//如果查询结果为空,则去线索中获取招商经理,面试官只有两个阶段,一个是在第一次申请时不存在面试安排直接取招商经理,第二个时面试信息中可修改面试官信息,这个时候以面试信息中为准
if (CollectionUtils.isEmpty(hyPartnerInterviewPlanDOS)) {
HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoMapper.selectByPrimaryKeySelective(Long.valueOf(lineId));
interviewerId = hyPartnerLineInfoDO.getInvestmentManager();
}else {
interviewerId = hyPartnerInterviewPlanDOS.get(0).getInterviewer();
}
interviewerId = interviewService.getInterviewerByPartner(partnerId, lineId);
}
long startTime = 0L;
long endTime = 0L;

View File

@@ -2,7 +2,6 @@ package com.cool.store.service.impl;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
@@ -21,25 +20,23 @@ import com.cool.store.mapper.HyPartnerLineInfoMapper;
import com.cool.store.oss.OSSServer;
import com.cool.store.request.CreateQualifyVerifyReq;
import com.cool.store.request.QualificationCallbackReq;
import com.cool.store.request.RpcCreateQualifyVerfyReq;
import com.cool.store.request.RpcCreateQualifyVerifyReq;
import com.cool.store.request.RpcGetMdmTokenReq;
import com.cool.store.service.FlowService;
import com.cool.store.utils.PDFUtils;
import com.cool.store.utils.PassLetterUtils;
import com.cool.store.utils.RedisUtilPool;
import com.cool.store.utils.RestTemplateUtil;
import com.cool.store.vo.PartnerPassLetterDetailVO;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -54,8 +51,15 @@ import java.util.Objects;
@Service
public class FlowServiceImpl implements FlowService {
// @Value("${hs.mdm.baseUrl}")
@Value("${hs.mdm.baseUrl}")
private String mdmBaseUrl;
@Value("${hs.mdm.appkey}")
private String mdmAppKey;
@Value("${hs.mdm.appsec}")
private String mdmAppSec;
@Autowired
private RedisUtilPool redisUtilPool;
@@ -81,14 +85,18 @@ public class FlowServiceImpl implements FlowService {
@Transactional
public void createQualifyVerify(CreateQualifyVerifyReq request) throws ApiException {
//1.发起加盟商资质审核
RpcCreateQualifyVerfyReq rpcRequest = new RpcCreateQualifyVerfyReq();
rpcRequest.setIntendedSignDate(request.getWantSignTime());
rpcRequest.setFraSource("HSAYPartner");
rpcRequest.setAmtDeposit(Integer.valueOf(request.getSecurityFund()));
RpcCreateQualifyVerifyReq rpcRequest = new RpcCreateQualifyVerifyReq();
RpcCreateQualifyVerifyReq.Data data = new RpcCreateQualifyVerifyReq().new Data();
rpcRequest.setData(data);
FraSourceDO fraSourceDO = new FraSourceDO();
fraSourceDO.setKey("HSAYPartner");
fraSourceDO.setText("沪上阿姨合伙人");
data.setFraSource(fraSourceDO);
data.setAmtDeposit(Integer.valueOf(request.getSecurityFund()));
//获取授权码
String authCode = null;
if (StringUtils.isBlank(request.getLineId())) {
if (!StringUtils.isBlank(request.getLineId())) {
//根据线索id获取线索信息
HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoMapper.selectByPrimaryKeySelective(Long.valueOf(request.getLineId()));
if (!Objects.isNull(hyPartnerLineInfoDO)) {
@@ -103,13 +111,13 @@ public class FlowServiceImpl implements FlowService {
}
rpcRequest.setDingUserId(dingdingUserDO.getUserid());
authCode = generateAuthCode(jobNumber);
rpcRequest.setAuthCode(authCode);
data.setAuthCode(authCode);
}
}
}
rpcRequest.setIntendedSigner(request.getIntentionSignerUsername());
rpcRequest.setIntendedSignerTel(request.getIntentionSignerMobile());
data.setIntendedSigner(request.getIntentionSignerUsername());
data.setIntendedSignerTel(request.getIntentionSignerMobile());
//通过 rpc 请求审核系统获取返回数据
Map<String, String> qualifyVerifyRespData = JSON.parseObject(createQualifyVerify(rpcRequest), new TypeReference<HashMap<String,String>>() {});
@@ -196,16 +204,17 @@ public class FlowServiceImpl implements FlowService {
}
public String createQualifyVerify(RpcCreateQualifyVerfyReq rpcRequest) throws ApiException{
public String createQualifyVerify(RpcCreateQualifyVerifyReq rpcRequest) throws ApiException{
String url = mdmBaseUrl + "/api/openapi/runtime/form/startFraQualExamWithData";
ResponseEntity<MDMResultDTO> responseEntity = null;
try {
RpcGetMdmTokenReq rpcGetMDMTokenReq = new RpcGetMdmTokenReq();
// TODO set appKey 与 appSecret
rpcGetMDMTokenReq.setAppKey(mdmAppKey);
rpcGetMDMTokenReq.setAppSecret(mdmAppSec);
Map<String, String> headers = new HashMap<>();
headers.put("Authorization", getMdmAccessToken(rpcGetMDMTokenReq));
responseEntity = RestTemplateUtil.post(url, headers, rpcRequest, MDMResultDTO.class);
log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity));
log.info("url:{}, header:{}, request:{} response:{}", url, JSONObject.toJSONString(headers), JSONObject.toJSONString(rpcRequest), JSONObject.toJSONString(responseEntity));
if (Objects.nonNull(responseEntity.getBody()) && responseEntity.getBody().isSuccess()) {
return JSONObject.toJSONString(responseEntity.getBody().getData());
}
@@ -260,13 +269,13 @@ public class FlowServiceImpl implements FlowService {
ByteArrayOutputStream pdfOut = PassLetterUtils.genPassLetter(partnerName, passCode, verifyCity, passTime);
//生成的 pdf 通过函内存输入流
ByteArrayInputStream inputStream = new ByteArrayInputStream(pdfOut.toByteArray());
String passPdfUrl = ossServer.uploadFileServer(inputStream, "partner/passLetter/" + passCode + ".pdf");
String passPdfUrl = ossServer.uploadFileServer(inputStream, "passLetter/" + passCode + ".pdf");
//转换为图片
inputStream.reset();
ByteArrayOutputStream imageOut = PDFUtils.pdf2Img(inputStream, 2.0f);
inputStream = new ByteArrayInputStream(imageOut.toByteArray());
//上传 OSS
String passImageUrl = ossServer.uploadFileServer(inputStream, "partner/passLetter/" + passCode + ".png");
String passImageUrl = ossServer.uploadFileServer(inputStream, "passLetter/" + passCode + ".png");
//计算有效期截止日期
DateTime expiryDate = DateUtil.offsetDay(passTime, 60);
HyPartnerInterviewDO interviewDO = new HyPartnerInterviewDO();

View File

@@ -17,6 +17,7 @@ import com.cool.store.exception.ServiceException;
import com.cool.store.request.CloseFollowRequest;
import com.cool.store.request.LineRequest;
import com.cool.store.request.PrivateSeaLineListRequest;
import com.cool.store.service.AliyunService;
import com.cool.store.service.EnterpriseUserService;
import com.cool.store.service.HyPartnerLineInfoService;
import com.cool.store.utils.CoolDateUtils;
@@ -58,6 +59,8 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
HyOpenAreaInfoDAO hyOpenAreaInfoDAO;
@Resource
EnterpriseUserService enterpriseUserService;
@Resource
AliyunService aliyunService;
@Override
public StageCountVO selectStagePendingCount(String userId) {
@@ -247,20 +250,20 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
@Override
public PageInfo<PublicSeaLineListVo> publicSeaLineList(String userId, LineRequest lineRequest) {
//确认是招商经理还是部门负责人
EnterpriseUserDO userInfo = enterpriseUserDAO.getUserInfoById(userId);
List<String> userIds = new ArrayList<>();
if (userInfo.getIsLeader()){
if (StringUtil.isNotEmpty(userInfo.getLeaderDeptIds())){
List<String> regionIds = JSONObject.parseArray(userInfo.getLeaderDeptIds(), String.class);
List<EnterpriseUserDO> enterpriseUserDOS = enterpriseUserDAO.searchUserByRegionIdsAndKeyword(regionIds, null, true);
userIds =enterpriseUserDOS.stream().map(EnterpriseUserDO::getUserId).collect(Collectors.toList());
}
}else {
userIds = Arrays.asList(userId);
}
// EnterpriseUserDO userInfo = enterpriseUserDAO.getUserInfoById(userId);
// List<String> userIds = new ArrayList<>();
// if (userInfo.getIsLeader()){
// if (StringUtil.isNotEmpty(userInfo.getLeaderDeptIds())){
// List<String> regionIds = JSONObject.parseArray(userInfo.getLeaderDeptIds(), String.class);
// List<EnterpriseUserDO> enterpriseUserDOS = enterpriseUserDAO.searchUserByRegionIdsAndKeyword(regionIds, null, true);
// userIds =enterpriseUserDOS.stream().map(EnterpriseUserDO::getUserId).collect(Collectors.toList());
// }
// }else {
// userIds = Arrays.asList(userId);
// }
PageHelper.startPage(lineRequest.getPageNum(),lineRequest.getPageSize());
PageInfo publicSeaLineList = new PageInfo(hyPartnerLineInfoDAO.getPublicSeaLineList(lineRequest.getUserNameKeyword(), lineRequest.getPhoneKeyword(),
lineRequest.getIntentArea(), lineRequest.getAcceptAdjustType(), lineRequest.getUpdateStartTime(), lineRequest.getUpdateEndTime(), userIds));
lineRequest.getIntentArea(), lineRequest.getAcceptAdjustType(), lineRequest.getUpdateStartTime(), lineRequest.getUpdateEndTime(), null));
List<PublicSeaLineDTO> list = publicSeaLineList.getList();
if (CollectionUtils.isEmpty(list)){
@@ -286,8 +289,8 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
publicSeaLineListVo.setCreateTime(x.getCreateTime());
publicSeaLineListVo.setPartnerUserName(x.getUserName());
publicSeaLineListVo.setPartnerUserPhone(x.getMobile());
// TODO: 2023/6/15 手机号归属地
publicSeaLineListVo.setPhoneAddress("");
DescribePhoneNumberDTO phoneNumberAttribute = aliyunService.getPhoneNumberAttribute(x.getMobile());
publicSeaLineListVo.setPhoneAddress(phoneNumberAttribute.getCity());
publicSeaLineListVo.setWantShopArea(x.getWantShopArea());
publicSeaLineListVo.setId(x.getLineId());
publicSeaLineListVo.setAcceptAdjustType(x.getAcceptAdjustType());
@@ -395,21 +398,34 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
return Boolean.FALSE;
}
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(hyPartnerLineInfoDO.getPartnerId());
HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectById(Long.valueOf(hyPartnerUserInfoDO.getWantShopArea()));
Boolean lineStatus = getLineStatus(Long.valueOf(hyPartnerUserInfoDO.getWantShopArea()), hyPartnerUserInfoDO.getAcceptAdjustType());
return lineStatus;
}
/**
* 线索状态
* @param wantShopAreaId
* @param acceptAdjustType
* @return
*/
@Override
public Boolean getLineStatus(Long wantShopAreaId,Integer acceptAdjustType){
HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectById(wantShopAreaId);
if (AreaStatusEnum.OPEN.getCode().equals(hyOpenAreaInfoDO.getAreaStatus()) || AreaStatusEnum.KEY_OPEN.getCode().equals(hyOpenAreaInfoDO.getAreaStatus())){
return Boolean.TRUE;
}
if (AreaStatusEnum.NOT_OPEN.getCode().equals(hyOpenAreaInfoDO.getAreaStatus()) || AreaStatusEnum.SATURATED.getCode().equals(hyOpenAreaInfoDO.getAreaStatus())){
if (AcceptAdjustTypeEnum.NOT_ACCEPT.getCode().equals(hyPartnerUserInfoDO.getAcceptAdjustType())){
if (AcceptAdjustTypeEnum.NOT_ACCEPT.getCode().equals(acceptAdjustType)){
return Boolean.FALSE;
}
//全国调剂 默认分配呗 有啥好说的
if (AcceptAdjustTypeEnum.NATIONAL_ADJUSTMENT.getCode().equals(hyPartnerUserInfoDO.getAcceptAdjustType())){
if (AcceptAdjustTypeEnum.NATIONAL_ADJUSTMENT.getCode().equals(acceptAdjustType)){
return Boolean.TRUE;
}
//省内调剂 有重点或者开放的 分配
if (AcceptAdjustTypeEnum.PROVINCIAL_ADJUSTMENT.getCode().equals(hyPartnerUserInfoDO.getAcceptAdjustType())){
if (AcceptAdjustTypeEnum.PROVINCIAL_ADJUSTMENT.getCode().equals(acceptAdjustType)){
Integer apply = hyOpenAreaInfoDAO.getChildrenCount("apply", hyOpenAreaInfoDO.getId());
if (apply>CommonConstants.ZERO){
return Boolean.TRUE;
@@ -417,7 +433,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
return Boolean.FALSE;
}
//市内调剂 不分配
if (AcceptAdjustTypeEnum.LOCAL_ADJUSTMENT.getCode().equals(hyPartnerUserInfoDO.getAcceptAdjustType())){
if (AcceptAdjustTypeEnum.LOCAL_ADJUSTMENT.getCode().equals(acceptAdjustType)){
return Boolean.FALSE;
}
}
@@ -432,7 +448,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
public BlackListVO convertPartnerBlackListDTOToVo(PartnerBlackListDTO partnerBlackListDTO){
BlackListVO blackListVO = new BlackListVO();
blackListVO.setId(partnerBlackListDTO.getLineId());
blackListVO.setPartnerUserId(partnerBlackListDTO.getPartnerId());
blackListVO.setPartnerId(partnerBlackListDTO.getPartnerId());
blackListVO.setPartnerUserName(partnerBlackListDTO.getPartnerUserName());
blackListVO.setPartnerUserPhone(partnerBlackListDTO.getMobile());
blackListVO.setCreateTime(partnerBlackListDTO.getCreateTime());

View File

@@ -10,6 +10,7 @@ import com.cool.store.dto.message.SendCardMessageDTO;
import com.cool.store.dto.partner.EnterInterviewDto;
import com.cool.store.entity.HyPartnerInterviewDO;
import com.cool.store.entity.HyPartnerInterviewPlanDO;
import com.cool.store.entity.HyPartnerLineInfoDO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.MessageTypeEnum;
import com.cool.store.enums.RoomStatus;
@@ -19,6 +20,7 @@ import com.cool.store.exception.ServiceException;
import com.cool.store.http.ISVHttpRequest;
import com.cool.store.mapper.HyPartnerInterviewMapper;
import com.cool.store.mapper.HyPartnerInterviewPlanMapper;
import com.cool.store.mapper.HyPartnerLineInfoMapper;
import com.cool.store.request.*;
import com.cool.store.service.InterviewService;
import com.cool.store.utils.StringUtil;
@@ -28,12 +30,12 @@ import com.cool.store.vo.EnterpriseUserBaseInfoVO;
import com.cool.store.vo.interview.CreateAppointmentVO;
import com.cool.store.vo.interview.InterviewVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.Arrays;
import java.util.Date;
@@ -65,6 +67,9 @@ public class InterviewServiceImpl implements InterviewService {
@Autowired
private ISVHttpRequest isvHttpRequest;
@Autowired
private HyPartnerLineInfoMapper hyPartnerLineInfoMapper;
@Override
public List<InterviewVO> getInterviewList(GetInterviewListReq request) {
List<InterviewVO> interviewList = hyPartnerInterviewPlanMapper.getInterviewList(request);
@@ -102,8 +107,7 @@ public class InterviewServiceImpl implements InterviewService {
DeleteCalendarEventDTO deleteCalendarEventDTO = new DeleteCalendarEventDTO();
deleteCalendarEventDTO.setCalendarId(interviewInfo.getFeishuCalendarId());
deleteCalendarEventDTO.setEventId(interviewInfo.getFeishuScheduleId());
//TODO 这里的userId是原面试官的userId还是新的
deleteCalendarEventDTO.setUserId(request.getNewInterviewerId());
deleteCalendarEventDTO.setUserId(interviewInfo.getInterviewerId());
UserCalendarsEventDTO userCalendarsEventDTO = isvHttpRequest.deleteUserCalendarEvent(deleteCalendarEventDTO);
if(userCalendarsEventDTO == null ){
throw new ApiException(ErrorCodeEnum.FEISHU_DELETE_SCHEDULE_ERROR);
@@ -208,7 +212,20 @@ public class InterviewServiceImpl implements InterviewService {
@Override
@Transactional
public CreateAppointmentVO createAppointment(CreateAppointmentReq request) {
public CreateAppointmentVO createAppointment(CreateAppointmentReq request) throws ApiException {
if(request.getPartnerLineId() == null || request.getPartnerLineId()<=0){
throw new ApiException(ErrorCodeEnum.INTERVIEW_PLAN_ID_IS_NULL);
}
HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO = new HyPartnerInterviewPlanDO();
hyPartnerInterviewPlanDO.setPartnerLineId(request.getPartnerLineId());
List<HyPartnerInterviewPlanDO> hyPartnerInterviewPlanDOS = hyPartnerInterviewPlanMapper.selectBySelective(hyPartnerInterviewPlanDO);
if(CollectionUtils.isNotEmpty(hyPartnerInterviewPlanDOS)&&hyPartnerInterviewPlanDOS.get(0).getId()!=null){
throw new ApiException(ErrorCodeEnum.INTERVIEW_PLAN_ID_IS_NULL);
}
String interviewrId = request.getInterviewerId();
if(StringUtils.isEmpty(interviewrId)){
interviewrId = getInterviewerByPartner(request.getPartnerId(),String.valueOf(request.getPartnerLineId()));
}
CreateAppointmentVO vo = new CreateAppointmentVO();
//1.创建面试计划
HyPartnerInterviewPlanDO record = new HyPartnerInterviewPlanDO();
@@ -221,25 +238,28 @@ public class InterviewServiceImpl implements InterviewService {
record.setEndTime(Convert.toDate(request.getEndBookingTime()));
record.setPartnerId(request.getPartnerId());
record.setPartnerLineId(request.getPartnerLineId());
record.setInterviewer(request.getInterviewerId());
record.setInterviewer(interviewrId);
record.setIsPartnerInterview(0);
//生成房间号
record.setRoomId(StringUtil.generateRoomId(startBookingTime));
record.setRoomStatus(RoomStatus.WAIT_FOR_OPEN.getCode());
record.setDeleted(false);
record.setApplicationApproved(0);
hyPartnerInterviewPlanMapper.insertSelective(record);
HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO = new HyPartnerInterviewPlanDO();
hyPartnerInterviewPlanMapper.selectBySelective(hyPartnerInterviewPlanDO);
// vo.setInterviewPlanId(String.valueOf(interviewPlanId));
List<HyPartnerInterviewPlanDO> interviewPlanDOS = hyPartnerInterviewPlanMapper.selectBySelective(hyPartnerInterviewPlanDO);
if(CollectionUtils.isEmpty(interviewPlanDOS)){
throw new ApiException(ErrorCodeEnum.INTERVIEW_PLAN_NOT_EXIST);
}
Long interviewPlanId = interviewPlanDOS.get(0).getId();
vo.setInterviewPlanId(String.valueOf(interviewPlanId));
//2.创建面试信息
HyPartnerInterviewDO hyPartnerInterviewDO = new HyPartnerInterviewDO();
// hyPartnerInterviewDO.setInterviewPlanId(interviewPlanId);
hyPartnerInterviewDO.setInterviewPlanId(interviewPlanId);
hyPartnerInterviewDO.setPartnerLineId(request.getPartnerLineId());
hyPartnerInterviewDO.setPartnerId(request.getPartnerId());
hyPartnerInterviewDO.setInterviewer(request.getInterviewerId());
hyPartnerInterviewDO.setInterviewer(interviewrId);
hyPartnerInterviewDO.setCreateTime(new Date());
hyPartnerInterviewDO.setUpdateTime(new Date());
hyPartnerInterviewDO.setStatus(Integer.valueOf(WorkflowStatusEnum.RESERVATION_1.getCode()));
@@ -250,6 +270,7 @@ public class InterviewServiceImpl implements InterviewService {
@Override
public void approveAppointment(ApproveAppointmentReq request) throws ApiException {
//查询面试计划信息
InterviewVO interviewVO = hyPartnerInterviewPlanMapper.getInterviewInfo(request.getInterviewPlanId());
//如果面试计划不存在,抛出异常
@@ -312,5 +333,23 @@ public class InterviewServiceImpl implements InterviewService {
.append(DateUtil.format(DateUtil.parse(interviewTime), "yyyy年MM月dd日 HH:mm"));
return sb.toString();
}
@Override
public String getInterviewerByPartner(String partnerId,String lineId){
String interviewerId = null;
if (StringUtils.isNotEmpty(partnerId) && StringUtils.isNotEmpty(lineId)) {
//根据加盟商用户ID查询面试官ID
HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO = new HyPartnerInterviewPlanDO();
hyPartnerInterviewPlanDO.setPartnerId(partnerId);
List<HyPartnerInterviewPlanDO> hyPartnerInterviewPlanDOS = hyPartnerInterviewPlanMapper.selectBySelective(hyPartnerInterviewPlanDO);
//如果查询结果为空,则去线索中获取招商经理,面试官只有两个阶段,一个是在第一次申请时不存在面试安排直接取招商经理,第二个时面试信息中可修改面试官信息,这个时候以面试信息中为准
if (org.springframework.util.CollectionUtils.isEmpty(hyPartnerInterviewPlanDOS)) {
HyPartnerLineInfoDO hyPartnerLineInfoDO = hyPartnerLineInfoMapper.selectByPrimaryKeySelective(Long.valueOf(lineId));
interviewerId = hyPartnerLineInfoDO.getInvestmentManager();
}else {
interviewerId = hyPartnerInterviewPlanDOS.get(0).getInterviewer();
}
}
return interviewerId;
}
}

View File

@@ -202,7 +202,7 @@ public class ZoneServiceImpl implements ZoneService {
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
}
//查询已经绑定战区的 意向区域
List<ZoneCheckDTO> list = hyIntendDevMappingDAO.selectByMappingIdList(intentAreaSettingRequest.getOpenAreaIdList());
List<ZoneCheckDTO> list = hyIntendDevMappingDAO.selectByOpenAreaMappingIdList(intentAreaSettingRequest.getOpenAreaIdList());
List<Long> openAreaIdList = list.stream().map(ZoneCheckDTO::getOpenAreaMappingId).collect(Collectors.toList());
List<HyOpenAreaInfoDO> hyOpenAreaInfoDOList = openAreaInfoDAO.selectByIds(openAreaIdList);
Map<Long, String> areaNameMap = hyOpenAreaInfoDOList.stream().collect(Collectors.toMap(HyOpenAreaInfoDO::getId, HyOpenAreaInfoDO::getAreaName));

View File

@@ -50,7 +50,7 @@ public class DeskController {
@GetMapping(path = "/interviewSchedule")
@ApiOperation("面试日程信息 面试信息有限 不做分页")
public ResponseResult<InterviewScheduleInfoVO> interviewSchedule(@RequestParam(value = "selectedData",required = false) Date selectedData){
public ResponseResult<InterviewScheduleInfoVO> interviewSchedule(@RequestParam(value = "selectedData",required = false) String selectedData){
String userId = CurrentUserHolder.getUserId();
return ResponseResult.success(deskService.interviewSchedule(userId,selectedData));

View File

@@ -69,3 +69,7 @@ xxl.job.executor.port = 31001
xxl.job.executor.logpath = logs/xxl-job/jobhandler
xxl.job.executor.logretentiondays = 3
xxl.job.accessToken =
hs.mdm.baseUrl=http://10.56.21.30/
hs.mdm.appkey = HSAYPartner
hs.mdm.appsec = ab39fedb886fa3587c7f517551976de8b2606f5511fd8f8675266825d74c5cd3

View File

@@ -58,8 +58,10 @@ weixin.appSecret=245a483747e6e9f8762d3e8539cf0318
signKey=77fea013c3a6459685b83c21a2fc3411
#八佰流程配置
hs.mdm.baseUrl=http://172.35.37.52:8080
#MDM
hs.mdm.baseUrl=http://10.56.21.30/
hs.mdm.appkey = HSAYPartner
hs.mdm.appsec = ab39fedb886fa3587c7f517551976de8b2606f5511fd8f8675266825d74c5cd3
#xxljob配置
xxl.job.admin.addresses = https://djob.coolstore.cn/xxl-job-admin

View File

@@ -64,6 +64,11 @@ weixin.appSecret=245a483747e6e9f8762d3e8539cf0318
signKey=77fea013c3a6459685b83c21a2fc3411
#MDM
hs.mdm.baseUrl=http://10.56.21.30/
hs.mdm.appkey = HSAYPartner
hs.mdm.appsec = ab39fedb886fa3587c7f517551976de8b2606f5511fd8f8675266825d74c5cd3
xxl.job.admin.addresses =
xxl.job.executor.appname = ${spring.application.name}
xxl.job.executor.ip =

View File

@@ -51,7 +51,7 @@ public class SignValidateFilter implements Filter {
"/partner/mini/program/doc.html","/partner/mini/program/v2/api-docs","/**/test/**",
"/partner/mini/program/oss/getUploadFileConfig",
"/partner/mini/program/v1/partnerManage/partner/getIdentityCardInfo",
"/**/swagger*/**", "/**/webjars/**");
"/**/swagger*/**", "/**/webjars/**","/partner/mini/program/v1/partnerManage/openArea/areaApplyQuery");
/**

View File

@@ -18,7 +18,7 @@ import org.springframework.web.bind.annotation.*;
@Api(tags = "加盟商资格面试")
@RestController
@RequestMapping("interview")
@RequestMapping("/interview")
public class InterviewController {
@Autowired
@@ -47,7 +47,7 @@ public class InterviewController {
@PostMapping("/appointment/submit")
@ApiOperation("预约面试")
public ResponseResult<CreateAppointmentVO> createAppointment(@RequestBody CreateAppointmentReq request) {
public ResponseResult<CreateAppointmentVO> createAppointment(@RequestBody CreateAppointmentReq request) throws ApiException {
return ResponseResult.success(interviewBaseService.createAppointment(request));
}

View File

@@ -57,3 +57,8 @@ weixin.appId=wxb2a0addf956ad4b7
weixin.appSecret=77abdcae754add92889566b543e5ad79
signKey=77fea013c3a6459685b83c21a2fc3411
#MDM
hs.mdm.baseUrl=http://10.56.21.30/
hs.mdm.appkey = HSAYPartner
hs.mdm.appsec = ab39fedb886fa3587c7f517551976de8b2606f5511fd8f8675266825d74c5cd3

View File

@@ -64,3 +64,8 @@ weixin.appId=wxb2a0addf956ad4b7
weixin.appSecret=77abdcae754add92889566b543e5ad79
signKey=77fea013c3a6459685b83c21a2fc3411
#MDM
hs.mdm.baseUrl=http://10.56.21.30/
hs.mdm.appkey = HSAYPartner
hs.mdm.appsec = ab39fedb886fa3587c7f517551976de8b2606f5511fd8f8675266825d74c5cd3