|
@@ -6,9 +6,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.google.common.collect.ImmutableList;
|
|
|
import com.google.common.collect.Lists;
|
|
|
import com.microsvc.toolkit.common.webportal.exception.BizException;
|
|
|
import com.yonge.cooleshow.auth.api.entity.SysUser;
|
|
|
+import com.yonge.cooleshow.biz.dal.dao.EmployeeDao;
|
|
|
import com.yonge.cooleshow.biz.dal.dao.StudentDao;
|
|
|
import com.yonge.cooleshow.biz.dal.dao.SubjectDao;
|
|
|
import com.yonge.cooleshow.biz.dal.dao.TeacherDao;
|
|
@@ -19,11 +21,13 @@ import com.yonge.cooleshow.biz.dal.entity.ImGroupMember;
|
|
|
import com.yonge.cooleshow.biz.dal.entity.Student;
|
|
|
import com.yonge.cooleshow.biz.dal.entity.StudentTotal;
|
|
|
import com.yonge.cooleshow.biz.dal.entity.Subject;
|
|
|
+import com.yonge.cooleshow.biz.dal.entity.Teacher;
|
|
|
import com.yonge.cooleshow.biz.dal.entity.TenantInfo;
|
|
|
import com.yonge.cooleshow.biz.dal.entity.UserBindingTeacher;
|
|
|
import com.yonge.cooleshow.biz.dal.entity.UserTenantAlbumRecord;
|
|
|
import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
|
|
|
import com.yonge.cooleshow.biz.dal.mapper.SysUserMapper;
|
|
|
+import com.yonge.cooleshow.biz.dal.mapper.TenantAlbumPurchaseMapper;
|
|
|
import com.yonge.cooleshow.biz.dal.service.ImGroupMemberService;
|
|
|
import com.yonge.cooleshow.biz.dal.service.ImGroupService;
|
|
|
import com.yonge.cooleshow.biz.dal.service.ImUserFriendService;
|
|
@@ -32,7 +36,6 @@ import com.yonge.cooleshow.biz.dal.service.StudentTotalService;
|
|
|
import com.yonge.cooleshow.biz.dal.service.SysConfigService;
|
|
|
import com.yonge.cooleshow.biz.dal.service.TenantInfoService;
|
|
|
import com.yonge.cooleshow.biz.dal.service.UserTenantAlbumRecordService;
|
|
|
-import com.yonge.cooleshow.biz.dal.service.im.ImGroupCoreService;
|
|
|
import com.yonge.cooleshow.biz.dal.vo.MyFollow;
|
|
|
import com.yonge.cooleshow.biz.dal.vo.StudentHomeVo;
|
|
|
import com.yonge.cooleshow.biz.dal.vo.StudentVo;
|
|
@@ -86,31 +89,30 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
|
|
|
private SysUserMapper sysUserMapper;
|
|
|
@Autowired
|
|
|
private SubjectDao subjectDao;
|
|
|
-
|
|
|
@Autowired
|
|
|
- private ImGroupService imGroupService;
|
|
|
-
|
|
|
+ private TenantInfoService tenantInfoService;
|
|
|
@Autowired
|
|
|
- private ImGroupCoreService imGroupCoreService;
|
|
|
+ private UserTenantAlbumRecordService userTenantAlbumRecordService;
|
|
|
+ @Autowired
|
|
|
+ private SysConfigService sysConfigService;
|
|
|
|
|
|
@Autowired
|
|
|
- private ImGroupMemberService imGroupMemberService;
|
|
|
+ private ImGroupService imGroupService;
|
|
|
|
|
|
@Autowired
|
|
|
- private TenantInfoService tenantInfoService;
|
|
|
+ private ImGroupMemberService imGroupMemberService;
|
|
|
|
|
|
@Autowired
|
|
|
- private UserTenantAlbumRecordService userTenantAlbumRecordService;
|
|
|
+ private TenantAlbumPurchaseMapper tenantAlbumPurchaseMapper;
|
|
|
|
|
|
@Autowired
|
|
|
- private SysConfigService sysConfigService;
|
|
|
+ private EmployeeDao employeeDao;
|
|
|
|
|
|
@Override
|
|
|
public StudentDao getDao() {
|
|
|
return baseMapper;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
@Override
|
|
|
public StudentVo detail(Long userId) {
|
|
|
return baseMapper.detail(userId);
|
|
@@ -172,11 +174,16 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
|
|
|
TenantInfo tenantInfo = tenantInfoService.detail(detail.getTenantId());
|
|
|
if (tenantInfo != null) {
|
|
|
studentHomeVo.setTenantName(tenantInfo.getName());
|
|
|
+ QueryWrapper<TenantAlbumPurchase> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.lambda().eq(TenantAlbumPurchase::getTenantId, detail.getTenantId());
|
|
|
+ Integer count = tenantAlbumPurchaseMapper.selectCount(queryWrapper);
|
|
|
+ if (count > 0) {
|
|
|
+ studentHomeVo.setTenantAlbumStatus(1);
|
|
|
+ }
|
|
|
UserTenantAlbumRecord record =
|
|
|
userTenantAlbumRecordService.getNewestByTenantIdAndUserId(tenantInfo.getId(), detail.getUserId(),
|
|
|
ClientEnum.STUDENT);
|
|
|
if (record == null || record.getEndTime().getTime() < System.currentTimeMillis()) {
|
|
|
- studentHomeVo.setTenantAlbumStatus(1);
|
|
|
studentHomeVo.setTenantAlbumFlag(YesOrNoEnum.NO);
|
|
|
} else {
|
|
|
studentHomeVo.setTenantAlbumStatus(2);
|
|
@@ -491,17 +498,19 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
|
|
|
if (student.getTenantId().equals(toTenantId)) {
|
|
|
return;
|
|
|
}
|
|
|
- List<ImGroupMember> groupMembers = imGroupMemberService.lambdaQuery()
|
|
|
- .eq(ImGroupMember::getUserId, student.getUserId())
|
|
|
- .eq(ImGroupMember::getRoleType, ClientEnum.STUDENT.getCode())
|
|
|
- .eq(ImGroupMember::getIsAdmin, false).list();
|
|
|
- List<String> groupIdList = groupMembers.stream().map(ImGroupMember::getGroupId).distinct()
|
|
|
- .collect(Collectors.toList());
|
|
|
- for (String groupId : groupIdList) {
|
|
|
- try {
|
|
|
- imGroupService.quit(groupId, student.getUserId(), ClientEnum.STUDENT);
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("退出群聊失败", e);
|
|
|
+ if (!student.getTenantId().equals(-1L)) {
|
|
|
+ List<ImGroupMember> groupMembers = imGroupMemberService.lambdaQuery()
|
|
|
+ .eq(ImGroupMember::getUserId, student.getUserId())
|
|
|
+ .eq(ImGroupMember::getRoleType, ClientEnum.STUDENT.getCode())
|
|
|
+ .eq(ImGroupMember::getIsAdmin, false).list();
|
|
|
+ List<String> groupIdList = groupMembers.stream().map(ImGroupMember::getGroupId).distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ for (String groupId : groupIdList) {
|
|
|
+ try {
|
|
|
+ imGroupService.quit(groupId, student.getUserId(), ClientEnum.STUDENT);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("退出群聊失败", e);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
this.lambdaUpdate().set(Student::getTenantId, toTenantId)
|
|
@@ -509,6 +518,66 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
|
|
|
.update();
|
|
|
}
|
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public void addStudent(StudentWrapper.Student student) {
|
|
|
+ SysUser sysUser = employeeDao.querySysUserByPhone(student.getPhone());
|
|
|
+ if (sysUser == null) {
|
|
|
+ sysUser = new SysUser();
|
|
|
+ sysUser.setUserType(ClientEnum.STUDENT.getCode());
|
|
|
+ //设置默认头像
|
|
|
+ if (StringUtil.isEmpty(sysUser.getAvatar())) {
|
|
|
+ String defaultHeard = sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD);
|
|
|
+ sysUser.setAvatar(defaultHeard);
|
|
|
+ }
|
|
|
+
|
|
|
+ sysUser.setUsername(student.getName());
|
|
|
+ sysUser.setPhone(student.getPhone());
|
|
|
+ //初始密码,手机号后6位
|
|
|
+ String password = sysUser.getPhone().substring(sysUser.getPhone().length() - 6);
|
|
|
+ sysUser.setPassword(new BCryptPasswordEncoder().encode(password));
|
|
|
+ //插入
|
|
|
+ employeeDao.insertSysUser(sysUser);
|
|
|
+ } else {
|
|
|
+ if (StringUtil.isEmpty(sysUser.getUserType())) {
|
|
|
+ sysUser.setUserType(ClientEnum.STUDENT.getCode());
|
|
|
+ } else if (!sysUser.getUserType().contains(ClientEnum.STUDENT.getCode())) {
|
|
|
+ sysUser.setUserType(sysUser.getUserType() + "," + ClientEnum.STUDENT.getCode());
|
|
|
+ }
|
|
|
+ employeeDao.updateSysUser(sysUser);
|
|
|
+ }
|
|
|
+
|
|
|
+ student.setId(sysUser.getId());
|
|
|
+ Long tenantId = student.getTenantId();
|
|
|
+ // 更新头像
|
|
|
+ if (StringUtils.isEmpty(student.getAvatar())) {
|
|
|
+ String avatar;
|
|
|
+ if (tenantId != -1L) {
|
|
|
+ if (student.getGender().equals(1)) {
|
|
|
+ avatar = sysConfigService.findConfigValue(SysConfigConstant.TENANT_STUDENT_BOY_AVATAR);
|
|
|
+ } else {
|
|
|
+ avatar = sysConfigService.findConfigValue(SysConfigConstant.TENANT_STUDENT_GIRL_AVATAR);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ avatar = sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD);
|
|
|
+ }
|
|
|
+ student.setAvatar(avatar);
|
|
|
+ }
|
|
|
+ this.save(student);
|
|
|
+
|
|
|
+ // 加好友
|
|
|
+ if (tenantId != -1) {
|
|
|
+ // 自动与机构老师成为好友
|
|
|
+ List<Teacher> teacherList = teacherDao.selectList(Wrappers.<Teacher>lambdaQuery()
|
|
|
+ .eq(Teacher::getTenantId, tenantId));
|
|
|
+ if (!teacherList.isEmpty()) {
|
|
|
+ teacherList.forEach(next -> imUserFriendService.saveUserFriend(next.getUserId(),
|
|
|
+ new HashSet<>(ImmutableList.of(student.getId()))));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
private Boolean updateStudent(StudentWrapper.Student studentInfo) {
|
|
|
StudentVo student = detail(studentInfo.getId());
|
|
|
if (student == null) {
|