package com.ycl.jxkg.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.jxkg.domain.entity.UserEventLog; 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.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.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.util.*; @Service @RequiredArgsConstructor public class UserServiceImpl extends ServiceImpl implements UserService { private final UserMapper userMapper; private final ApplicationEventPublisher eventPublisher; public List 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 userPageList(String name, Integer pageIndex, Integer pageSize) { Map 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 map = new HashMap<>(1); map.put("name", name); return userMapper.userPageCount(map); } @Override public PageInfo 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 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 ids) { Map map = new HashMap<>(2); map.put("idslist", ids); map.put("age", age); userMapper.updateUsersAge(map); } @Override public void deleteUserByIds(List ids) { userMapper.deleteUsersByIds(ids); } @Override public Integer selectAllCount() { return userMapper.selectAllCount(); } @Override public List selectByUserName(String userName) { return userMapper.selectByUserName(userName); } @Override public List selectByIds(List 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 classesStudent(Integer classesId) { return userMapper.classesStudent(classesId); } }