|
@@ -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;
|
|
|
}
|
|
|
|
|
|
}
|