|  | @@ -1,5 +1,6 @@
 | 
	
		
			
				|  |  |  package com.yonge.cooleshow.teacher.controller;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.auth.api.entity.SysUser;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.auth.api.enums.SysUserType;
 | 
	
	
		
			
				|  | @@ -54,11 +55,16 @@ public class SysUserContractRecordController extends BaseController {
 | 
	
		
			
				|  |  |          return sysUserContractRecordService.checkContractSign(user.getId(), contractType);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    @ApiOperation("查询最新启用的协议模板")
 | 
	
		
			
				|  |  | +    @GetMapping(value = "/queryLatestContractTemplate")
 | 
	
		
			
				|  |  | +    public HttpResponseResult<ContractTemplate> queryLatestContractTemplate(@ApiParam(value = "业务类型 REGISTER 注册 COURSES 课程购买 PRODUCT 产品 WITHDRAW 提现", required = true) @RequestParam("contractType") ContractTypeEnum contractType) {
 | 
	
		
			
				|  |  | +        return succeed(contractTemplateService.queryLatestContractTemplate(contractType));
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      @ApiOperation("签署协议")
 | 
	
		
			
				|  |  |      @GetMapping(value = "/sign", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
 | 
	
		
			
				|  |  |      public HttpResponseResult<Boolean> sign(
 | 
	
		
			
				|  |  |              @ApiParam(value = "模板id", required = true) @RequestParam("templateId") Integer templateId) {
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |          SysUser user = sysUserFeignService.queryUserInfo();
 | 
	
		
			
				|  |  |          if (user == null || null == user.getId()) {
 | 
	
		
			
				|  |  |              return failed(HttpStatus.FORBIDDEN, "请登录");
 | 
	
	
		
			
				|  | @@ -66,29 +72,37 @@ public class SysUserContractRecordController extends BaseController {
 | 
	
		
			
				|  |  |          //是否签署标识,签署了才入库
 | 
	
		
			
				|  |  |          boolean flag = false;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        SysUserContractRecord contractRecord = new SysUserContractRecord();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        Long contractNo = idGeneratorService.generatorId("contractNo");
 | 
	
		
			
				|  |  | -        contractRecord.setContractNo(contractNo.toString());
 | 
	
		
			
				|  |  | +        //查询库中正在签署的协议
 | 
	
		
			
				|  |  | +        SysUserContractRecord contractRecord = sysUserContractRecordService.getOne(Wrappers.<SysUserContractRecord>lambdaQuery()
 | 
	
		
			
				|  |  | +                .eq(SysUserContractRecord::getUserId, user.getId())
 | 
	
		
			
				|  |  | +                .eq(SysUserContractRecord::getContractId, templateId)
 | 
	
		
			
				|  |  | +                .in(SysUserContractRecord::getStatus, DealStatusEnum.SCCESS.getCode(), DealStatusEnum.DOING.getCode()));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        contractRecord.setUserId(user.getId());
 | 
	
		
			
				|  |  | +        //未签署协议
 | 
	
		
			
				|  |  | +        if (null == contractRecord) {
 | 
	
		
			
				|  |  | +            contractRecord = new SysUserContractRecord();
 | 
	
		
			
				|  |  | +            Long contractNo = idGeneratorService.generatorId("contractNo");
 | 
	
		
			
				|  |  | +            contractRecord.setContractNo(contractNo.toString());
 | 
	
		
			
				|  |  | +            contractRecord.setUserId(user.getId());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        ContractTemplate contractTemplate = contractTemplateService.get(templateId);
 | 
	
		
			
				|  |  | -        contractRecord.setContractId(contractTemplate.getId());
 | 
	
		
			
				|  |  | +            ContractTemplate contractTemplate = contractTemplateService.get(templateId);
 | 
	
		
			
				|  |  | +            if(null == contractTemplate){
 | 
	
		
			
				|  |  | +                return failed(HttpStatus.FORBIDDEN, "未找到协议");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            contractRecord.setContractId(templateId);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        if (ContractTypeEnum.WITHDRAW.getCode().equals(contractTemplate.getType())) {
 | 
	
		
			
				|  |  | -            //签署提现协议
 | 
	
		
			
				|  |  | -            contractRecord.setUserType(SysUserType.TEACHER.getCode());
 | 
	
		
			
				|  |  | -            contractRecord.setStatus(DealStatusEnum.DOING.getCode());
 | 
	
		
			
				|  |  | -            flag = withdrawSdk.signContract(user.getRealName(), user.getIdCardNo(), user.getPhone(), contractNo.toString());
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        if (flag) {
 | 
	
		
			
				|  |  | -            sysUserContractRecordService.save(contractRecord);
 | 
	
		
			
				|  |  | +            if (ContractTypeEnum.WITHDRAW.getCode().equals(contractTemplate.getType())) {
 | 
	
		
			
				|  |  | +                //签署提现协议
 | 
	
		
			
				|  |  | +                contractRecord.setUserType(SysUserType.TEACHER.getCode());
 | 
	
		
			
				|  |  | +                contractRecord.setStatus(DealStatusEnum.DOING.getCode());
 | 
	
		
			
				|  |  | +                flag = withdrawSdk.signContract(user.getRealName(), user.getIdCardNo(), user.getPhone(), contractNo.toString());
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (flag) {
 | 
	
		
			
				|  |  | +                sysUserContractRecordService.save(contractRecord);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return HttpResponseResult.succeed(true);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 |