|
|
@@ -47,6 +47,7 @@ import com.fs.course.config.CourseConfig;
|
|
|
import com.fs.course.domain.FsUserCompanyUser;
|
|
|
import com.fs.course.mapper.FsCourseWatchLogMapper;
|
|
|
import com.fs.course.mapper.FsUserCompanyUserMapper;
|
|
|
+import com.fs.course.mapper.FsUserCourseClearLogMapper;
|
|
|
import com.fs.course.mapper.FsUserCourseVideoMapper;
|
|
|
import com.fs.course.param.CourseAnalysisParam;
|
|
|
import com.fs.course.param.newfs.FsUserCourseBeMemberParam;
|
|
|
@@ -91,6 +92,8 @@ import com.fs.store.vo.UserProjectPair;
|
|
|
import com.fs.store.vo.h5.*;
|
|
|
import com.fs.system.mapper.SysDictDataMapper;
|
|
|
import com.fs.system.service.ISysConfigService;
|
|
|
+import com.fs.system.service.ISysDictTypeService;
|
|
|
+import com.fs.common.core.domain.entity.SysDictData;
|
|
|
import com.fs.watch.domain.WatchUser;
|
|
|
import com.fs.watch.domain.vo.FsUserAndCompanyAndDoctorVo;
|
|
|
import com.fs.watch.service.WatchUserService;
|
|
|
@@ -188,9 +191,16 @@ public class FsUserServiceImpl implements IFsUserService {
|
|
|
private FsPatientMapper fsPatientMapper;
|
|
|
@Autowired
|
|
|
private FsCourseWatchLogMapper courseWatchLogMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private FsUserCourseClearLogMapper userCourseClearLogMapper;
|
|
|
+
|
|
|
@Autowired
|
|
|
FsExportTaskMapper fsExportTaskMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ISysDictTypeService dictTypeService;
|
|
|
+
|
|
|
@Autowired
|
|
|
private FsUserCompanyUserMapper fsUserCompanyUserMapper;
|
|
|
|
|
|
@@ -1447,6 +1457,82 @@ public class FsUserServiceImpl implements IFsUserService {
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public List<FsUserWatchProjectVO> selectUserWatchProjectList(FsUser fsUser) {
|
|
|
+ List<FsUser> users = fsUserMapper.selectUsersWithoutProject(fsUser);
|
|
|
+ if (users == null || users.isEmpty()) {
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+
|
|
|
+ List<Long> userIds = new ArrayList<>(users.size());
|
|
|
+ for (FsUser u : users) userIds.add(u.getUserId());
|
|
|
+
|
|
|
+ Map<String, String> projectDictMap = new HashMap<>();
|
|
|
+ List<SysDictData> projectDict = dictTypeService.selectDictDataByType("sys_course_project");
|
|
|
+ if (projectDict != null) {
|
|
|
+ for (SysDictData d : projectDict) projectDictMap.put(d.getDictValue(), d.getDictLabel());
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<Long, FsUserWatchProjectVO> voMap = new HashMap<>(users.size() * 4 / 3);
|
|
|
+ for (FsUser u : users) {
|
|
|
+ FsUserWatchProjectVO vo = new FsUserWatchProjectVO();
|
|
|
+ vo.setUserId(u.getUserId());
|
|
|
+ vo.setNickName(u.getNickName());
|
|
|
+ vo.setPhone(u.getPhone());
|
|
|
+ vo.setLastAppLoginTime(u.getUpdateTime());
|
|
|
+ voMap.put(u.getUserId(), vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ for (Map<String, Object> row : courseWatchLogMapper.selectLatestWatchTimeByUserIds(userIds)) {
|
|
|
+ FsUserWatchProjectVO vo = voMap.get(((Number) row.get("user_id")).longValue());
|
|
|
+ if (vo == null) continue;
|
|
|
+ int wt = ((Number) row.get("watch_type")).intValue();
|
|
|
+ if (wt == 1) vo.setLastAppWatchTime((Date) row.get("last_time"));
|
|
|
+ else if (wt == 2) vo.setLastMiniWatchTime((Date) row.get("last_time"));
|
|
|
+ }
|
|
|
+
|
|
|
+ for (Map<String, Object> row : userCourseClearLogMapper.selectByUserIds(userIds)) {
|
|
|
+ FsUserWatchProjectVO vo = voMap.get(((Number) row.get("user_id")).longValue());
|
|
|
+ if (vo == null) continue;
|
|
|
+
|
|
|
+ FsUserWatchProjectVO.ProjectRelation pr = new FsUserWatchProjectVO.ProjectRelation();
|
|
|
+ String cn = (String) row.get("company_name");
|
|
|
+ String cun = (String) row.get("company_user_name");
|
|
|
+ pr.setCompanyName(cn);
|
|
|
+ pr.setCompanyUserName(cun);
|
|
|
+ Object pidObj = row.get("project_id");
|
|
|
+ if (pidObj != null) {
|
|
|
+ Long pid = ((Number) pidObj).longValue();
|
|
|
+ pr.setProjectId(pid);
|
|
|
+ String pn = projectDictMap.get(String.valueOf(pid));
|
|
|
+ pr.setProjectName(pn);
|
|
|
+ if (pn != null) appendDictName(vo, "pn", pn);
|
|
|
+ }
|
|
|
+ if (cn != null) appendDictName(vo, "cn", cn);
|
|
|
+ if (cun != null) appendDictName(vo, "cun", cun);
|
|
|
+ if (vo.getProjectRelations() == null) vo.setProjectRelations(new ArrayList<>());
|
|
|
+ vo.getProjectRelations().add(pr);
|
|
|
+ }
|
|
|
+
|
|
|
+ return new ArrayList<>(voMap.values());
|
|
|
+ }
|
|
|
+
|
|
|
+ private void appendDictName(FsUserWatchProjectVO vo, String type, String val) {
|
|
|
+ if ("cn".equals(type)) {
|
|
|
+ vo.setCompanyNames(vo.getCompanyNames() == null ? val : vo.getCompanyNames() + "、" + val);
|
|
|
+ } else if ("cun".equals(type)) {
|
|
|
+ vo.setCompanyUserNames(vo.getCompanyUserNames() == null ? val : vo.getCompanyUserNames() + "、" + val);
|
|
|
+ } else if ("pn".equals(type)) {
|
|
|
+ vo.setProjectNames(vo.getProjectNames() == null ? val : vo.getProjectNames() + "、" + val);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public long selectUserWatchProjectCount(FsUser fsUser) {
|
|
|
+ List<FsUser> users = fsUserMapper.selectUsersWithoutProject(fsUser);
|
|
|
+ return users == null ? 0 : users.size();
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public FsUserAndCompanyAndDoctorVo selectCompanyAndDoctor(Long userId) {
|
|
|
return fsUserMapper.selectCompanyAndDoctor(userId);
|