| 
					
				 | 
			
			
				@@ -2,21 +2,36 @@ package com.qmrb.system.service.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import cn.hutool.core.collection.CollectionUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.qmrb.system.converter.ContractConverter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.qmrb.system.mapper.CouponMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.qmrb.system.pojo.entity.Contract; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.qmrb.system.pojo.entity.Coupon; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.qmrb.system.pojo.entity.SysRole; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.qmrb.system.pojo.entity.SysUser; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.qmrb.system.pojo.form.ContractForm; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.qmrb.system.pojo.form.UserForm; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.qmrb.system.pojo.vo.ContractVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.qmrb.system.pojo.query.ContractQuery; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.qmrb.system.mapper.ContractMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.qmrb.system.service.IContractService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.qmrb.system.service.SysRoleService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.qmrb.system.service.SysUserService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.qmrb.system.service.UserService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.security.crypto.password.PasswordEncoder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.hutool.core.lang.Assert; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import jakarta.validation.Valid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import lombok.RequiredArgsConstructor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.stream.Collectors; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * <p> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -31,6 +46,16 @@ import lombok.RequiredArgsConstructor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> implements IContractService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private final ContractConverter converter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private CouponMapper couponMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private SysUserService userService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private SysRoleService roleService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private PasswordEncoder passwordEncoder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	/**分页查询 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 * */ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -43,15 +68,11 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //String keywords = queryParams.getKeywords(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 查询数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Page<Contract> dictItemPage = this.page( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Page<ContractVO> pageResult = baseMapper.pageWithCoupon( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 new Page<>(pageNum, pageSize), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                new LambdaQueryWrapper<Contract>() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                	//.eq(status != null, Contract::getStatus,status) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                	//.like(StrUtil.isNotBlank(keywords), Contract::getCategoryName, keywords) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				queryParams 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 实体转换 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Page<ContractVO> pageResult = converter.entity2Page(dictItemPage); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return pageResult; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -61,11 +82,29 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 * 保存表单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 * */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Transactional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public ContractForm saveForm(@Valid ContractForm form) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// 实体对象转换 form->entity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Contract entity = converter.form2Entity(form); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 持久化 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.save(entity); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 创建协议时,创建客商用户 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		UserForm user = new UserForm(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		user.setUsername(form.getUsername()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		user.setPassword(form.getPassword()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		user.setContractId(entity.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		user.setUserType("2");//用户类型 1 系统用户 2扫码协议用户  3 包租协议用户' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		user.setMobile(form.getContactPhone()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		user.setNickname(form.getContractName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		List<SysRole> roles = roleService.list(new LambdaQueryWrapper<SysRole>().eq(SysRole::getCode, "CONTRACT"));//协议用户角色 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if(CollectionUtil.isNotEmpty(roles)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			List<Long> roleIds = roles.stream().map(item -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return item.getId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			user.setRoleIds(roleIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		userService.saveUser(user); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ContractForm result = converter.entity2Form(entity); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -73,7 +112,30 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	/**更新 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 * */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Transactional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public boolean updateForm(Long id, ContractForm form) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 修改账户或密码,更新用户表数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Contract contract = this.getById(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		SysUser user = userService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getContractId, id)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Boolean changeFlag = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 校验账户 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if(!contract.getUsername().equals(form.getUsername())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			changeFlag = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			user.setUsername(form.getUsername()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			long count = userService.count(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, form.getUsername())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			Assert.isTrue(count == 0, "用户名已存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//校验密码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if(!contract.getPassword().equals(form.getPassword())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			changeFlag = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			String encode = passwordEncoder.encode(form.getPassword()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			user.setPassword(encode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if(changeFlag){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			userService.updateById(user); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Contract entity = converter.form2Entity(form); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		entity.setId(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         boolean result = this.updateById(entity); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -90,7 +152,10 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 实体转换 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ContractForm form = converter.entity2Form(entity); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return form; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Long count = couponMapper.selectCount(new LambdaQueryWrapper<Coupon>().eq(Coupon::getContractId, id)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		form.setUsedNum(count); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return form; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |