Files
by-crm/backend/src/main/java/com/bycrm/service/impl/DealerServiceImpl.java
T
2026-01-27 18:03:26 +08:00

119 lines
4.0 KiB
Java

package com.bycrm.service.impl;
import com.bycrm.common.Constants;
import com.bycrm.dto.DealerDTO;
import com.bycrm.entity.Dealer;
import com.bycrm.entity.User;
import com.bycrm.exception.BusinessException;
import com.bycrm.mapper.DealerMapper;
import com.bycrm.mapper.UserMapper;
import com.bycrm.service.DealerService;
import org.springframework.beans.BeanUtils;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.List;
/**
* 经销商服务实现
*/
@Service
public class DealerServiceImpl implements DealerService {
private final DealerMapper dealerMapper;
private final UserMapper userMapper;
private final BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
public DealerServiceImpl(DealerMapper dealerMapper, UserMapper userMapper) {
this.dealerMapper = dealerMapper;
this.userMapper = userMapper;
}
@Override
public List<Dealer> getDealerList(String name, String code, Integer status) {
return dealerMapper.selectList(name, code, status);
}
@Override
public Dealer getDealerById(Long id) {
Dealer dealer = dealerMapper.selectById(id);
if (dealer == null) {
throw new BusinessException("经销商不存在");
}
return dealer;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void createDealer(DealerDTO dealerDTO) {
// 检查编码是否重复
Dealer existingDealer = dealerMapper.selectByCode(dealerDTO.getCode());
if (existingDealer != null) {
throw new BusinessException("经销商账号已存在");
}
Dealer dealer = new Dealer();
BeanUtils.copyProperties(dealerDTO, dealer);
dealer.setCreatedAt(LocalDateTime.now());
dealer.setUpdatedAt(LocalDateTime.now());
dealerMapper.insert(dealer);
// 创建对应的用户账号
User user = new User();
user.setUsername(dealerDTO.getCode()); // 用户名使用经销商编码
user.setRealName(dealerDTO.getContactPerson());
user.setDealerId(dealer.getId());
user.setRole(Constants.USER_ROLE_DEALER); // 经销商用户角色
user.setStatus(dealerDTO.getStatus());
// 设置密码:如果提供了密码则使用提供的密码,否则使用默认密码
String password = dealerDTO.getPassword();
if (password == null || password.trim().isEmpty()) {
password = "a123456"; // 默认密码
}
user.setPassword(passwordEncoder.encode(password));
user.setCreatedAt(LocalDateTime.now());
user.setUpdatedAt(LocalDateTime.now());
userMapper.insert(user);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateDealer(Long id, DealerDTO dealerDTO) {
Dealer existingDealer = dealerMapper.selectById(id);
if (existingDealer == null) {
throw new BusinessException("经销商不存在");
}
// 如果修改了编码,需要检查新编码是否与其他经销商重复
if (!existingDealer.getCode().equals(dealerDTO.getCode())) {
Dealer codeDealer = dealerMapper.selectByCode(dealerDTO.getCode());
if (codeDealer != null && !codeDealer.getId().equals(id)) {
throw new BusinessException("经销商账号已存在");
}
}
Dealer dealer = new Dealer();
BeanUtils.copyProperties(dealerDTO, dealer);
dealer.setId(id);
dealer.setUpdatedAt(LocalDateTime.now());
dealerMapper.update(dealer);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteDealer(Long id) {
Dealer dealer = dealerMapper.selectById(id);
if (dealer == null) {
throw new BusinessException("经销商不存在");
}
dealerMapper.deleteById(id);
}
}