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

This commit is contained in:
zhangchenbiao
2023-06-16 13:59:25 +08:00
26 changed files with 962 additions and 26 deletions

View File

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

View File

@@ -58,6 +58,8 @@ public enum ErrorCodeEnum {
INTENT_INFO_NOT_EXIST(500006, "意向信息不存在!", null),
INTERVIEW_ENTER_FAIL(1021101, "进入面试间失败", null),
DINGDING_USER_NOT_EXIST(1021102, "用户钉钉信息不存在,无法发起资质审核!", null),
INTERVIEW_NOT_EXIST(1021103, "面试信息不存在!", null),
SIGN_FAIL(600000, "验签失败", null),
GET_ACCESSTOKEN_ERROR(600001, "获取小程序TOKEN错误", null),

View File

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

View File

@@ -30,9 +30,6 @@ public class HyOpenAreaInfoDAO {
}
public List<HyOpenAreaInfoDO> queryByKeyword(String keyword,Boolean filterData){
if (StringUtils.isEmpty(keyword)){
return new ArrayList<>();
}
return hyOpenAreaInfoMapper.queryByKeyword(keyword,filterData);
}

View File

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

View File

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

View File

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

View File

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

View File

@@ -112,7 +112,7 @@
<foreach collection="recordList" item="record" separator=",">
(#{record.mappingId},
#{record.openAreaMappingId},
#{record.type}
#{record.type})
</foreach>
</insert>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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