| 
					
				 | 
			
			
				@@ -2,16 +2,24 @@ package com.yonge.cooleshow.biz.dal.service.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.core.metadata.IPage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.auth.api.entity.SysUser; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.dao.SysUserContractRecordDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.dto.search.SysUserContractRecordSearch; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.entity.ContractTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.entity.SysUserContractRecord; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.enums.DealStatusEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.sdk.WithdrawSdk; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.service.ContractService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.service.ContractTemplateService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.service.SysUserContractRecordService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.vo.SysUserContractRecordVo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.common.entity.HttpResponseResult; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.common.enums.ContractTemplateSourceEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.common.enums.ContractTemplateTypeEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.common.enums.SysUserType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.common.service.IdGeneratorService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.http.HttpStatus; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.slf4j.Logger; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -30,6 +38,12 @@ public class SysUserContractRecordServiceImpl extends ServiceImpl<SysUserContrac 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private ContractTemplateService contractTemplateService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private WithdrawSdk withdrawSdk; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private IdGeneratorService idGeneratorService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private ContractService contractService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public SysUserContractRecordDao getDao() { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -56,5 +70,44 @@ public class SysUserContractRecordServiceImpl extends ServiceImpl<SysUserContrac 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return getDao().queryLatestContract(userId, userType.getCode(), contractType.getSource().getCode(), contractType.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public HttpResponseResult<Boolean> sign(ContractTemplateTypeEnum contractType, SysUserType userType, SysUser user) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //是否签署标识,签署了才入库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        boolean flag = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SysUserContractRecord contractRecord = queryLatestContract(user.getId(), userType, contractType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //未签署协议 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (null == contractRecord) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ContractTemplate contractTemplate = contractTemplateService.queryLatestContractTemplate(contractType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (null == contractTemplate) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return HttpResponseResult.failed(HttpStatus.FORBIDDEN, "未找到协议"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            contractRecord = new SysUserContractRecord(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Long contractNo = idGeneratorService.generatorId("contractNo"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            contractRecord.setContractNo(contractNo.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            contractRecord.setUserId(user.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            contractRecord.setContractId(contractTemplate.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            contractRecord.setUserType(userType.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (ContractTemplateSourceEnum.LINGXINPAY.getCode().equals(contractTemplate.getSource()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    && ContractTemplateTypeEnum.WITHDRAW.getCode().equals(contractTemplate.getType())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //签署结算协议 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                contractRecord.setStatus(DealStatusEnum.DOING.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                flag = withdrawSdk.signContract(user.getRealName(), user.getIdCardNo(), user.getPhone(), contractNo.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                HttpResponseResult<String> stringHttpResponseResult = contractService.transferProduceContract(contractRecord.getUserId(), userType, contractType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (stringHttpResponseResult.getStatus()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    contractRecord.setUrl(stringHttpResponseResult.getData()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    contractRecord.setStatus(DealStatusEnum.SUCCESS.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    flag = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (flag) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                save(contractRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return HttpResponseResult.succeed(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |