package com.ycl.jxkg.service.impl;
|
|
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.qiniu.util.Md5;
|
import com.ycl.jxkg.domain.entity.UserEventLog;
|
import com.ycl.jxkg.domain.form.UpdatePwdForm;
|
import com.ycl.jxkg.enums.RoleEnum;
|
import com.ycl.jxkg.enums.UserStatusEnum;
|
import com.ycl.jxkg.domain.form.RegisterForm;
|
import com.ycl.jxkg.domain.other.KeyValue;
|
import com.ycl.jxkg.domain.vo.StudentVO;
|
import com.ycl.jxkg.enums.general.YesOrNoEnum;
|
import com.ycl.jxkg.event.UserEvent;
|
import com.ycl.jxkg.exception.BusinessException;
|
import com.ycl.jxkg.domain.entity.User;
|
import com.ycl.jxkg.event.OnRegistrationCompleteEvent;
|
import com.ycl.jxkg.mapper.UserMapper;
|
import com.ycl.jxkg.service.AuthenticationService;
|
import com.ycl.jxkg.service.UserService;
|
import com.ycl.jxkg.domain.vo.admin.user.UserPageRequestVO;
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.context.ApplicationEventPublisher;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.nio.charset.StandardCharsets;
|
import java.util.*;
|
|
|
@Service
|
@RequiredArgsConstructor
|
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
|
|
private final UserMapper userMapper;
|
private final ApplicationEventPublisher eventPublisher;
|
private final AuthenticationService authenticationService;
|
|
|
public List<User> getUsers() {
|
return userMapper.getAllUser();
|
}
|
|
public User getUserById(Integer id) {
|
return userMapper.getUserById(id);
|
}
|
|
public User getUserByUserName(String username) {
|
return userMapper.getUserByUserName(username);
|
}
|
|
@Override
|
public User getUserByUserNamePwd(String username, String pwd) {
|
return userMapper.getUserByUserNamePwd(username, pwd);
|
}
|
|
@Override
|
public User getUserByUuid(String uuid) {
|
return userMapper.getUserByUuid(uuid);
|
}
|
|
@Override
|
public List<User> userPageList(String name, Integer pageIndex, Integer pageSize) {
|
Map<String, Object> map = new HashMap<>(3);
|
map.put("name", name);
|
map.put("offset", ((int) pageIndex) * pageSize);
|
map.put("limit", pageSize);
|
return userMapper.userPageList(map);
|
}
|
|
@Override
|
public Integer userPageCount(String name) {
|
Map<String, Object> map = new HashMap<>(1);
|
map.put("name", name);
|
return userMapper.userPageCount(map);
|
}
|
|
|
@Override
|
public PageInfo<User> userPage(UserPageRequestVO requestVM) {
|
return PageHelper.startPage(requestVM.getPageIndex(), requestVM.getPageSize(), "id desc").doSelectPageInfo(() ->
|
userMapper.userPage(requestVM)
|
);
|
}
|
|
|
@Override
|
public void insertUser(User user) {
|
userMapper.insert(user);
|
eventPublisher.publishEvent(new OnRegistrationCompleteEvent(user));
|
}
|
|
@Override
|
@Transactional(rollbackFor = BusinessException.class)
|
public void insertUsers(List<User> users) {
|
userMapper.insertUsers(users);
|
throw new BusinessException("test BusinessException roll back");
|
}
|
|
@Override
|
public void updateUser(User user) {
|
userMapper.updateUser(user);
|
}
|
|
@Override
|
public void updateUsersAge(Integer age, List<Integer> ids) {
|
Map<String, Object> map = new HashMap<>(2);
|
map.put("idslist", ids);
|
map.put("age", age);
|
userMapper.updateUsersAge(map);
|
}
|
|
@Override
|
public void deleteUserByIds(List<Integer> ids) {
|
userMapper.deleteUsersByIds(ids);
|
}
|
|
@Override
|
public Integer selectAllCount() {
|
return userMapper.selectAllCount();
|
}
|
|
@Override
|
public List<KeyValue> selectByUserName(String userName) {
|
return userMapper.selectByUserName(userName);
|
}
|
|
@Override
|
public List<User> selectByIds(List<Integer> ids) {
|
return userMapper.selectByIds(ids);
|
}
|
|
@Override
|
public User selectByWxOpenId(String wxOpenId) {
|
return userMapper.selectByWxOpenId(wxOpenId);
|
}
|
|
@Override
|
@Transactional
|
public void changePicture(User user, String imagePath) {
|
User changePictureUser = new User();
|
changePictureUser.setId(user.getId());
|
changePictureUser.setImagePath(imagePath);
|
userMapper.updateById(changePictureUser);
|
}
|
|
@Override
|
public void teacherRegister(RegisterForm form) {
|
User teacher = new User();
|
BeanUtils.copyProperties(form, teacher);
|
teacher.setRole(RoleEnum.ADMIN.getCode());
|
teacher.setUserUuid(UUID.randomUUID().toString());
|
teacher.setLastActiveTime(new Date());
|
teacher.setStatus(UserStatusEnum.Enable.getCode());
|
teacher.setDeleted(0);
|
this.insertUser(teacher);
|
// 发布注册事件,保存注册日志
|
UserEventLog userEventLog = new UserEventLog(teacher.getId(), teacher.getUserName(), teacher.getRealName(), new Date());
|
userEventLog.setContent("欢迎 " + teacher.getUserName() + " 注册来到江西空管音视频培训系统");
|
eventPublisher.publishEvent(new UserEvent(userEventLog));
|
}
|
|
@Override
|
public void studentRegister(RegisterForm form) {
|
User student = new User();
|
BeanUtils.copyProperties(form, student);
|
student.setRole(RoleEnum.ADMIN.getCode());
|
student.setUserUuid(UUID.randomUUID().toString());
|
student.setLastActiveTime(new Date());
|
student.setStatus(UserStatusEnum.Enable.getCode());
|
student.setDeleted(0);
|
this.insertUser(student);
|
// 发布注册事件,保存注册日志
|
UserEventLog userEventLog = new UserEventLog(student.getId(), student.getUserName(), student.getRealName(), new Date());
|
userEventLog.setContent("欢迎 " + student.getUserName() + " 注册来到江西空管音视频培训系统");
|
eventPublisher.publishEvent(new UserEvent(userEventLog));
|
}
|
|
@Override
|
public List<StudentVO> classesStudent(Integer classesId) {
|
return userMapper.classesStudent(classesId);
|
}
|
|
@Override
|
public void updatePassword(UpdatePwdForm form) {
|
new LambdaUpdateChainWrapper<>(baseMapper)
|
.eq(User::getId, form.getUserId())
|
.set(User::getPassword, authenticationService.pwdEncode(form.getNewPassword()))
|
.set(User::getNeedUpdatePassword, YesOrNoEnum.NO)
|
.set(User::getLastUpdatePasswordTime, new Date())
|
.update();
|
}
|
}
|