package com.ruoyi.system.service.impl; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.FormalTeacherClass; import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.system.domain.SysConfig; import com.ruoyi.system.domain.XiakeConfig; import com.ruoyi.system.mapper.SysConfigMapper; import com.ruoyi.system.mapper.XiakeConfigMapper; import com.ruoyi.system.service.IAppletService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; /** * @Author: tjf * @Date: 2023/5/25 11:48 * @Describe: */ @Service public class AppletServiceImpl implements IAppletService { @Autowired private RedisCache redisCache; @Autowired private XiakeConfigMapper xiakeConfigMapper; /** * 老师准备下课按钮 * * @param formalTeacherClass */ @Override public AjaxResult xiake(FormalTeacherClass formalTeacherClass) { String key = formalTeacherClass.getSchoolId() + ":" + formalTeacherClass.getClassId(); //key = 学校id:班级id //Redis根据key键,查询对应的值 String value = redisCache.getCacheObject(key); if ("2".equals(formalTeacherClass.getType())) { if (value.contains("time")) { return AjaxResult.error("未准备放学,请勿点击延迟放学"); } else { //延迟放学 String[] split = value.split(":"); //下课时间 String xiakeTime = split[1]; //获取参数中默认下课时间 XiakeConfig config = new XiakeConfig(); config.setConfigKey(formalTeacherClass.getClassId()+":2"); XiakeConfig retConfig = xiakeConfigMapper.selectConfig(config); //延迟下课的默认值 String configValue = retConfig.getConfigValue(); SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = null; try { date = sdf.parse(xiakeTime); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.MINUTE, Integer.parseInt(configValue)); redisCache.setCacheObject(key, value); return AjaxResult.success("延迟放学成功"); } catch (ParseException e) { return AjaxResult.error("延迟放学失败"); } } } if ("1".equals(formalTeacherClass.getType())) { if (!value.contains("time")) { return AjaxResult.error("请勿重复点击"); } //value = 班级名称:放学时间 //获取当前时间 Calendar nowTime = Calendar.getInstance(); //获取参数中默认下课时间 XiakeConfig config = new XiakeConfig(); config.setConfigKey(formalTeacherClass.getClassId()+":1"); XiakeConfig retConfig = xiakeConfigMapper.selectConfig(config); String configValue = retConfig.getConfigValue(); nowTime.add(Calendar.MINUTE, Integer.parseInt(configValue)); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); value = value.replace("time", sdf.format(nowTime.getTime())); redisCache.setCacheObject(key, value); } return AjaxResult.success(); } @Override public AjaxResult index(FormalTeacherClass formalTeacherClass) { Map map = new HashMap<>(3); map.put("all", 0); Collection keys = redisCache.keys(formalTeacherClass.getSchoolId() + "*"); if (keys != null && keys.size() > 0) { map.put("all", keys.size()); map.put("n", 0); map.put("y", 0); int n = 0; for (String key : keys) { //Redis根据key键,查询对应的值 String value = redisCache.getCacheObject(key); //value = 班级名称:放学时间 //判断有多少放学时间是time,占位符 String[] split = value.split(":"); String time = split[1]; if ("time".equals(time)) { n = n + 1; } } if (n > 0) { map.put("n", n); int y = keys.size() - n; map.put("y", Math.max(y, 0)); } } return AjaxResult.success(map); } @Override public AjaxResult indexList(FormalTeacherClass formalTeacherClass) { List> list = new ArrayList<>(); Collection keys = redisCache.keys(formalTeacherClass.getSchoolId() + "*"); if (keys != null && keys.size() > 0) { for (String key : keys) { String value = redisCache.getCacheObject(key); //value = 班级名称:放学时间 String[] split = value.split(":"); Map map = new HashMap<>(); map.put("className", split[0]); map.put("time", split[1]); list.add(map); } } return AjaxResult.success(list); } @Override public AjaxResult pcStatistics() { Map map = new HashMap<>(); SysUser user = SecurityUtils.getLoginUser().getUser(); List roles = user.getRoles(); boolean blt = false; boolean bls = false; for (SysRole role : roles) { if ("teacher".equals(role.getRoleKey())) { blt = true; } if ("school".equals(role.getRoleKey())) { bls = true; } } //老师 if (blt) { //查询本月家长的审核数据 } //学校 if (bls) { } //两个都有 if (blt && bls) { } return null; } }