package com.mzl.flower.service.register;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.mzl.flower.config.exception.ValidationException;
|
import com.mzl.flower.constant.Constants;
|
import com.mzl.flower.dto.request.register.RegisterCustomerDTO;
|
import com.mzl.flower.dto.request.register.RegisterDTO;
|
import com.mzl.flower.dto.request.register.RegisterPartnerDTO;
|
import com.mzl.flower.entity.system.User;
|
import com.mzl.flower.entity.system.UserWechat;
|
import com.mzl.flower.mapper.system.UserMapper;
|
import com.mzl.flower.mapper.system.UserWechatMapper;
|
import com.mzl.flower.service.customer.CustomerService;
|
import com.mzl.flower.service.partner.PartnerService;
|
import com.mzl.flower.utils.UUIDGenerator;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
@Service
|
@Transactional
|
public class RegisterService {
|
|
private final UserMapper userMapper;
|
|
private final PasswordEncoder passwordEncoder;
|
|
private final PartnerService partnerService;
|
|
private final CustomerService customerService;
|
|
private final UserWechatMapper wechatMapper;
|
|
public RegisterService(UserMapper userMapper,
|
PasswordEncoder passwordEncoder,
|
PartnerService partnerService,
|
CustomerService customerService, UserWechatMapper wechatMapper) {
|
this.userMapper = userMapper;
|
this.passwordEncoder = passwordEncoder;
|
this.partnerService = partnerService;
|
this.customerService = customerService;
|
this.wechatMapper = wechatMapper;
|
}
|
|
public void registerUser(RegisterDTO dto, String userType) {
|
if(checkUserExist(dto.getTel(),userType)){
|
throw new ValidationException("该手机号码已经注册");
|
}
|
User user = new User();
|
user.setId(UUIDGenerator.getUUID());
|
user.setLoginName(dto.getTel());
|
user.setTel(dto.getTel());
|
user.setNickName(dto.getTel());
|
user.setPassword(passwordEncoder.encode(dto.getPassword()));
|
user.setType(userType);
|
user.setStatus(Constants.STATUS_ACTIVE);
|
user.setIsSys(Constants.N);
|
user.create();
|
userMapper.insert(user);
|
}
|
|
public void registerCustomerUser(RegisterCustomerDTO dto, String userType, String openId, String sessionKey, String unionId) {
|
if(checkUserExist(dto.getTel(),userType)){
|
throw new ValidationException("该手机号码已经注册");
|
}
|
User user = new User();
|
user.setId(UUIDGenerator.getUUID());
|
user.setLoginName(dto.getTel());
|
user.setTel(dto.getTel());
|
user.setNickName(dto.getTel());
|
user.setPassword(passwordEncoder.encode(dto.getPassword()));
|
user.setType(userType);
|
user.setStatus(Constants.STATUS_ACTIVE);
|
user.setIsSys(Constants.N);
|
user.create();
|
userMapper.insert(user);
|
|
if(StringUtils.isNotBlank(openId)){
|
UserWechat wechat = wechatMapper.selectOne(new LambdaQueryWrapper<UserWechat>()
|
.eq(UserWechat::getUserId,user.getId())
|
.eq(UserWechat::getOpenId,openId));
|
if(wechat != null){
|
throw new ValidationException("该微信用户已经注册");
|
}
|
wechat = new UserWechat();
|
wechat.setUserId(user.getId());
|
wechat.setId(UUIDGenerator.getUUID());
|
wechat.setOpenId(openId);
|
wechat.setUnionId(unionId);
|
wechat.setSessionKey(sessionKey);
|
wechat.create(user.getId());
|
wechatMapper.insert(wechat);
|
}
|
dto.getDto().setUserId(user.getId());
|
customerService.addOrUpdateCustomer(dto.getDto());
|
}
|
|
|
public void registerPartnerUser(RegisterPartnerDTO dto) {
|
String userType = Constants.USER_TYPE.partner.name();
|
if(checkUserExist(dto.getTel(),userType)){
|
throw new ValidationException("该手机号码已经注册");
|
}
|
User user = new User();
|
user.setId(UUIDGenerator.getUUID());
|
user.setLoginName(dto.getTel());
|
user.setTel(dto.getTel());
|
user.setNickName(dto.getTel());
|
user.setPassword(passwordEncoder.encode(dto.getPassword()));
|
user.setType(userType);
|
user.setStatus(Constants.STATUS_ACTIVE);
|
user.setIsSys(Constants.N);
|
user.create();
|
userMapper.insert(user);
|
dto.getDto().setUserId(user.getId());
|
partnerService.addOrUpdatePartner(dto.getDto());
|
|
}
|
|
private boolean checkUserExist(String tel, String userType) {
|
List<String> userTypes = new ArrayList<>();
|
userTypes.add(userType);
|
User user = userMapper.getActiveUser(tel, userTypes);
|
return user != null;
|
}
|
}
|