Commit f84952e9 authored by yangshuxing's avatar yangshuxing

契约锁开发

parent aeb17965
...@@ -368,6 +368,16 @@ ...@@ -368,6 +368,16 @@
<artifactId>qrgen</artifactId> <artifactId>qrgen</artifactId>
<version>1.4</version> <version>1.4</version>
</dependency> </dependency>
<dependency>
<groupId>com.qiyuesuo.sdk</groupId>
<artifactId>sdk-java</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>com.neusoft.shg3.service</groupId>
<artifactId>rmi</artifactId>
<version>0.0.3</version>
</dependency>
</dependencies> </dependencies>
<repositories> <repositories>
...@@ -375,7 +385,7 @@ ...@@ -375,7 +385,7 @@
<repository> <repository>
<id>nexus</id> <id>nexus</id>
<name>Private Repositories</name> <name>Private Repositories</name>
<url>http://maven.geexek.com.cn:8081/nexus/content/groups/public/</url> <url>http://maven.geexek.com.cn/nexus/content/groups/public/</url>
<snapshots> <snapshots>
<enabled>true</enabled> <enabled>true</enabled>
<updatePolicy>daily</updatePolicy> <updatePolicy>daily</updatePolicy>
...@@ -387,7 +397,7 @@ ...@@ -387,7 +397,7 @@
<pluginRepository> <pluginRepository>
<id>nexus</id> <id>nexus</id>
<name>Private Repositories</name> <name>Private Repositories</name>
<url>http://maven.geexek.com.cn:8081/nexus/content/groups/public/</url> <url>http://maven.geexek.com.cn/nexus/content/groups/public/</url>
<snapshots> <snapshots>
<enabled>false</enabled> <enabled>false</enabled>
<updatePolicy>daily</updatePolicy> <updatePolicy>daily</updatePolicy>
......
...@@ -25,7 +25,7 @@ import org.springframework.web.servlet.config.annotation.EnableWebMvc; ...@@ -25,7 +25,7 @@ import org.springframework.web.servlet.config.annotation.EnableWebMvc;
@EnableCaching @EnableCaching
@SpringBootApplication(exclude = {RedisAutoConfiguration.class}) @SpringBootApplication(exclude = {RedisAutoConfiguration.class})
@EnableWebMvc @EnableWebMvc
@MapperScan(basePackages = "com.dlbridge.jadp.plugins.cmpt.dao.mapper") @MapperScan(basePackages = "com.dlbridge.jadp.plugins")
@EnableAspectJAutoProxy(proxyTargetClass = true) @EnableAspectJAutoProxy(proxyTargetClass = true)
@EnableFeignClients(basePackages="com.dlbridge.feign") @EnableFeignClients(basePackages="com.dlbridge.feign")
@EnableDiscoveryClient @EnableDiscoveryClient
......
package com.dlbridge.jadp.config.web;
import com.neusoft.upload.service.RMIUpload;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.remoting.rmi.RmiProxyFactoryBean;
/**
* @Author shuxing.yang
* @Date 2021/4/9 13:29
*/
@Configuration
@Slf4j
public class RmiConfig {
@Value("${upload.rmi}")
private String serviceUrl;
@Bean
public RmiProxyFactoryBean rmiUpload(){
log.info("rmi : " +serviceUrl);
RmiProxyFactoryBean rmiProxyFactoryBean = new RmiProxyFactoryBean();
rmiProxyFactoryBean.setRefreshStubOnConnectFailure(true);
rmiProxyFactoryBean.setLookupStubOnStartup(false);
rmiProxyFactoryBean.setServiceInterface(RMIUpload.class);
rmiProxyFactoryBean.setServiceUrl(serviceUrl);
return rmiProxyFactoryBean;
}
}
...@@ -29,6 +29,7 @@ public class EnrollInfo { ...@@ -29,6 +29,7 @@ public class EnrollInfo {
@ApiModelProperty(value = "项目ID") @ApiModelProperty(value = "项目ID")
private Integer roadId; private Integer roadId;
@ApiModelProperty(value = "救援人员电话") @ApiModelProperty(value = "救援人员电话")
private String remark; private String remark;
private String gender; private String gender;
......
...@@ -87,6 +87,7 @@ public class RemoteService { ...@@ -87,6 +87,7 @@ public class RemoteService {
info.setUserName(content.getString("name")); info.setUserName(content.getString("name"));
info.setEnrollId(content.getString("enrollId")); info.setEnrollId(content.getString("enrollId"));
info.setPhone(content.getString("phone")); info.setPhone(content.getString("phone"));
info.setIdentityNo(content.getString("identityNo"));
return info; return info;
} else { } else {
return null; return null;
......
package com.dlbridge.jadp.plugins.cmpt.web;
import com.dlbridge.jadp.common.interceptor.PageView;
import com.dlbridge.jadp.plugins.cmpt.dao.model.Cmpt;
import com.dlbridge.jadp.plugins.cmpt.service.CmptService;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import springfox.documentation.annotations.ApiIgnore;
import javax.annotation.Resource;
@Controller
@Log4j2
@RequestMapping("gk/navigation/")
@ApiIgnore
public class NavigationController {
@Resource
private CmptService cmptService;
@RequestMapping("index/{cmptId}")
@PageView
public ModelAndView index(@PathVariable("cmptId") Integer cmptId, ModelAndView mv) {
Cmpt cmpt = cmptService.queryCmptBycmptId(cmptId);
mv.addObject("cmpt", cmpt);
mv.setViewName("cmpt/navigation");
return mv;
}
}
package com.dlbridge.jadp.plugins.qiyuesuo.bean;
import lombok.Data;
/**
* @Author shuxing.yang
* @Date 2021/4/9 10:08
*/
@Data
public class CmptContact {
private int cmptId;
private long sealId;
private long templateId;
private int contactType;
private int categoryType;
private String subject;
private long categoryId;
private String companyReceiver;
}
package com.dlbridge.jadp.plugins.qiyuesuo.bean;
import lombok.Data;
/**
* @Author shuxing.yang
* @Date 2021/4/8 10:06
*/
@Data
public class ContactLock {
private int id;
private int cmptId;
private String idCard;
private String userName;
private String phone;
private String contactId;
private int isSign;
private int isAuth;
private String createTime;
private String ticket;
private int companySign;
private String msg;
}
package com.dlbridge.jadp.plugins.qiyuesuo.controller;
import com.dlbridge.jadp.plugins.qiyuesuo.bean.ContactLock;
import com.dlbridge.jadp.plugins.qiyuesuo.service.SendByCategoryService;
import com.neusoft.www.utils.web.Result;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
/**
* @Author shuxing.yang
* @Date 2021/4/7 17:35
*/
@RestController(value = "qiyueContactController")
@RequestMapping("/api")
@Slf4j
public class ContactLockController {
@Autowired
private SendByCategoryService sendByCategoryService;
@RequestMapping("/person-auth")
public Result personAuth(ContactLock lock){
log.info("入参:"+lock);
if(StringUtils.isBlank(lock.getIdCard())){
return Result.fail().setMsg("无证件号!");
}
Map<String,String> param = new HashMap<>();
param.put("cmptId",lock.getCmptId()+"");
param.put("idCard",lock.getIdCard());
param.put("userName",lock.getUserName());
param.put("phone",lock.getPhone());
ContactLock ticket = sendByCategoryService.getPersonAuthToken(param);
log.info("返回前端的json:"+ticket);
if(ticket == null || ticket.getMsg() != null){
return new Result().setMsg("获取ticket失败:"+ticket.getMsg() ).setCode(-1);
}
return new Result().setContent(ticket);
}
@RequestMapping("/authSuccess")
public Result authSuccess(ContactLock lock){
sendByCategoryService.authSuccess(lock);
return new Result().setContent(null);
}
@RequestMapping("/signSuccess")
public Result signSuccess(ContactLock lock) throws Exception {
sendByCategoryService.signSuccess(lock);
return new Result().setContent(null);
}
@RequestMapping("/doc")
public Result doc(ContactLock lock){
log.info("入参:"+lock);
if(StringUtils.isBlank(lock.getIdCard())){
return Result.fail().setMsg("无证件号!");
}
Map<String,String> param = new HashMap<>();
param.put("cmptId",lock.getCmptId()+"");
param.put("idCard",lock.getIdCard());
param.put("userName",lock.getUserName());
param.put("phone",lock.getPhone());
ContactLock ticket = sendByCategoryService.getContactToken(param);
return new Result().setContent(ticket);
}
}
package com.dlbridge.jadp.plugins.qiyuesuo.mapper;
import com.dlbridge.jadp.plugins.qiyuesuo.bean.CmptContact;
import com.dlbridge.jadp.plugins.qiyuesuo.bean.ContactLock;
import org.apache.ibatis.annotations.Param;
import java.util.Map;
public interface ContactLockMapper {
ContactLock getContactByCmptIdAndIdCard(@Param("param") Map<String, String> param);
int saveContactLock(@Param("param") Map<String, String> param);
void updateAuthSuccess(@Param("lock")ContactLock lock);
void updateSignSuccess(@Param("lock")ContactLock lock);
CmptContact getCmptContact(int cmptId);
}
<?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.dlbridge.jadp.plugins.qiyuesuo.mapper.ContactLockMapper">
<select id="getContactByCmptIdAndIdCard" resultType="com.dlbridge.jadp.plugins.qiyuesuo.bean.ContactLock">
select contactId,cmptId,idcard idCard,userName,contactId,isSign,isAuth,phone,companySign
from contact
where cmptId=#{param.cmptId} and idCard=#{param.idCard}
and userName=#{param.userName} and phone = #{param.phone}
limit 1
</select>
<insert id="saveContactLock">
insert into contact (cmptId,idcard,userName,phone,contactId,createTime,companySign)
values (#{param.cmptId},#{param.idCard},#{param.userName},#{param.phone},
#{param.contactId},now(),#{param.companySign})
</insert>
<update id="updateAuthSuccess">
update contact
set isAuth = 1
where cmptId=#{lock.cmptId} and idCard=#{lock.idCard}
</update>
<update id="updateSignSuccess">
update contact
set isSign = 1
where cmptId=#{lock.cmptId} and idCard=#{lock.idCard}
</update>
<select id="getCmptContact" resultType="com.dlbridge.jadp.plugins.qiyuesuo.bean.CmptContact">
select cmptId,sealId,templateId,contactType,categoryType,subject,categoryId,companyReceiver
from cmpt_contact
where cmptId=#{cmptId} limit 1
</select>
</mapper>
\ No newline at end of file
...@@ -109,3 +109,11 @@ spring.cloud.sentinel.datasource.ds.nacos.rule-type=flow ...@@ -109,3 +109,11 @@ spring.cloud.sentinel.datasource.ds.nacos.rule-type=flow
base.url=http://localhost:8080 base.url=http://localhost:8080
lock.url=https://openapi.qiyuesuo.cn
lock.accessKey=trRQR9ewQX
lock.accessSecret=W6PysadsbPppDfts18ukZBUJ2GPkQZ
lock.categoryId=2816977402314363323
lock.companyReceiver=18201908070
upload.rmi=rmi://172.16.214.236:9125/RMIUpload
\ No newline at end of file
...@@ -103,3 +103,11 @@ spring.cloud.sentinel.datasource.ds.nacos.groupId=production ...@@ -103,3 +103,11 @@ spring.cloud.sentinel.datasource.ds.nacos.groupId=production
# #
## 规则类型 ## 规则类型
spring.cloud.sentinel.datasource.ds.nacos.rule-type=flow spring.cloud.sentinel.datasource.ds.nacos.rule-type=flow
lock.url=https://openapi.qiyuesuo.cn
lock.accessKey=trRQR9ewQX
lock.accessSecret=W6PysadsbPppDfts18ukZBUJ2GPkQZ
lock.categoryId=2816977402314363323
lock.companyReceiver=18201908070
upload.rmi=rmi://10.25.255.181:9125/RMIUpload
...@@ -102,3 +102,12 @@ spring.cloud.sentinel.datasource.ds.nacos.groupId=test ...@@ -102,3 +102,12 @@ spring.cloud.sentinel.datasource.ds.nacos.groupId=test
spring.cloud.sentinel.datasource.ds.nacos.rule-type=flow spring.cloud.sentinel.datasource.ds.nacos.rule-type=flow
base.url=https://testzs.geexek.com.cn/ base.url=https://testzs.geexek.com.cn/
lock.url=https://openapi.qiyuesuo.cn
lock.accessKey=trRQR9ewQX
lock.accessSecret=W6PysadsbPppDfts18ukZBUJ2GPkQZ
lock.categoryId=2816977402314363323
lock.companyReceiver=18201908070
upload.rmi=rmi://172.16.214.236:9125/RMIUpload
\ No newline at end of file
This diff is collapsed.
package com.dlbridge.jadp;
import java.util.Arrays;
import java.util.List;
/**
* @Author shuxing.yang
* @Date 2021/4/11 11:48
*/
public class LamdatTest {
public static void main(String[] args) {
//Reduction
List<Integer> integers = Arrays.asList(1, 2, 3);
Integer reduced = integers.stream().reduce(100, (a, b) -> {
System.out.println("a:"+a);
System.out.println("b:"+b);
return a + b;
});
}
}
package com.dlbridge.jadp;
import com.qiyuesuo.sdk.v2.SdkClient;
import com.qiyuesuo.sdk.v2.bean.*;
import com.qiyuesuo.sdk.v2.json.JSONUtils;
import com.qiyuesuo.sdk.v2.param.SignParam;
import com.qiyuesuo.sdk.v2.request.ContractDraftRequest;
import com.qiyuesuo.sdk.v2.request.ContractPageRequest;
import com.qiyuesuo.sdk.v2.request.ContractSignCompanyRequest;
import com.qiyuesuo.sdk.v2.response.ContractPageResult;
import com.qiyuesuo.sdk.v2.response.SdkResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @Author shuxing.yang
* @Date 2021/4/6 17:33
*/
public class LockMain {
private static final Logger logger = LoggerFactory.getLogger(LockMain.class);
private static final String PLATFORM_NAME = "大头橙橙汁公司";
public static void main(String[] args) throws Exception {
String url = "https://openapi.qiyuesuo.cn";
String accessKey = "trRQR9ewQX";
String accessSecret = "W6PysadsbPppDfts18ukZBUJ2GPkQZ";
SdkClient client = new SdkClient(url, accessKey, accessSecret);
/**
* 根据业务分类配置进行合同发起,文件、签署流程、签署公章、签署位置均在业务分类中维护
* 该场景模拟一个人事合同的场景,即平台方公司与员工签署合同,平台方公司先签署,员工后签
*/
SdkResponse<Contract> draft = draft(client);
System.out.println( "创建合同草稿成功,并发起,合同ID:{}"+draft.getResult().getId());
companySealSignByCategoryConfig(client, draft.getResult().getId());
System.out.println( "公章签署成功");
/**
* 平台方签署完成,签署方签署可采用
* (1)接收短信的方式登录契约锁云平台进行签署
* (2)生成内嵌页面签署链接进行签署(下方生成的链接)
* (3)JS-SDK签署(仅支持个人)
*/
SdkResponse<ContractPageResult> pageResponse = gerenateSignUrl(client, draft.getResult().getId());
System.out.println( "生成签署链接成功,签署地址:{}"+pageResponse.getResult().getPageUrl());
}
/**
* 根据业务分类配置创建合同草稿并发起合同
*
* @param client
* @return
* @throws Exception
*/
private static SdkResponse<Contract> draft(SdkClient client) throws Exception {
Contract draftContract = new Contract();
draftContract.setSubject("合同主题");
draftContract.setCategory(new Category(2584280095237849689L)); // 设置业务分类ID,套用该业务分类的配置
draftContract.addTemplateParam(new TemplateParam("接收方2", "发起方填参")); // 若业务分类中包含参数模板,设置参数内容
draftContract.addTemplateParam(new TemplateParam("接收方1", "发起方填参"));
// 设置接收方详情,接收方需要与业务分类中设置的签署方流程匹配
// 公司签署方
Signatory companySignatory = new Signatory();
companySignatory.setTenantName(PLATFORM_NAME);
companySignatory.setTenantType("COMPANY");
companySignatory.setReceiver(new User("17621699044", "MOBILE"));
companySignatory.setSerialNo(1);
draftContract.addSignatory(companySignatory);
// 个人签署方
Signatory personalSignatory = new Signatory();
personalSignatory.setTenantType("PERSONAL");
personalSignatory.setReceiver(new User("15021504325", "MOBILE"));
personalSignatory.setTenantName("邓茜茜");
draftContract.addSignatory(personalSignatory);
draftContract.setSend(true); // 创建合同草稿并发起合同
String response = null;
try {
response = client.service(new ContractDraftRequest(draftContract));
} catch (Exception e) {
throw new Exception("创建合同草稿请求服务器失败,失败原因:" + e.getMessage());
}
SdkResponse<Contract> sdkResponse = JSONUtils.toQysResponse(response, Contract.class);
if (!sdkResponse.getCode().equals(0)) {
throw new Exception("创建合同草稿失败,失败原因:" + sdkResponse.getMessage());
}
return sdkResponse;
}
/**
* 根据业务分类配置的签署位置与印章签署公章
* 若未配置签署位置需要设置签署位置与印章
*
* @param client
* @param contractId
* @return
* @throws Exception
*/
private static SdkResponse companySealSignByCategoryConfig(SdkClient client, Long contractId) throws Exception {
SignParam param = new SignParam();
param.setContractId(contractId);
String response = null;
try {
response = client.service(new ContractSignCompanyRequest(param));
} catch (Exception e) {
throw new Exception("公章签署请求服务器失败,失败原因:" + e.getMessage());
}
SdkResponse sdkResponse = JSONUtils.toQysResponse(response, Object.class);
if (!sdkResponse.getCode().equals(0)) {
throw new Exception("公章签署失败,失败原因:" + sdkResponse.getMessage());
}
return sdkResponse;
}
/**
* 生成用户的签署链接
*
* @param client
* @param contractId
* @return
* @throws Exception
*/
private static SdkResponse<ContractPageResult> gerenateSignUrl(SdkClient client, Long contractId) throws Exception {
User signUser = new User("15021504325", "MOBILE");
String callbackPage = "https://www.qiyuesuo.com";
ContractPageRequest request = new ContractPageRequest(contractId, signUser, callbackPage);
String response;
try {
response = client.service(request);
} catch (Exception e) {
throw new Exception("生成签署链接请求服务器失败,失败原因:" + e.getMessage());
}
SdkResponse<ContractPageResult> sdkResponse = JSONUtils.toQysResponse(response, ContractPageResult.class);
if (!sdkResponse.getCode().equals(0)) {
throw new Exception("法人章签署失败,失败原因:" + sdkResponse.getMessage());
}
return sdkResponse;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment