管理员管理

sale
tianea 3 years ago
parent b71d1b00b2
commit db523319d4

@ -101,6 +101,13 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.14.3</version>
</dependency>
<dependency> <dependency>
<groupId>jakarta.persistence</groupId> <groupId>jakarta.persistence</groupId>
<artifactId>jakarta.persistence-api</artifactId> <artifactId>jakarta.persistence-api</artifactId>

@ -6,4 +6,8 @@ import lombok.Data;
public class CompetitionNews { public class CompetitionNews {
private String img; private String img;
private String content; private String content;
private Long createTime;
private Integer viewPoint;
private String title;
private String plainText;
} }

@ -17,6 +17,7 @@ public class JWTUtil {
private static final String TOKEN_SECRET = "ekfyJhciOiJfkIUzI1J9"; private static final String TOKEN_SECRET = "ekfyJhciOiJfkIUzI1J9";
private static final String ISSUER = "TIANZE"; private static final String ISSUER = "TIANZE";
public static final String USERNO = "userNo"; public static final String USERNO = "userNo";
public static final String USERTYPE= "userType";
public static final Long DATE = 30 * 24 * 3600 * 1000L; // 1个月 public static final Long DATE = 30 * 24 * 3600 * 1000L; // 1个月
/** /**
@ -36,6 +37,15 @@ public class JWTUtil {
} }
} }
public static String create(Long userNo,Integer userTye,Long date){
try {
return JWT.create().withIssuer(ISSUER).withClaim(USERNO, userNo.toString()).withClaim(USERTYPE,userTye).withExpiresAt(new Date(System.currentTimeMillis() + date)).sign(Algorithm.HMAC256(TOKEN_SECRET));
} catch (Exception e) {
logger.error("JWT生成失败", e);
return "";
}
}
/** /**
* @param token * @param token
* @return * @return
@ -58,4 +68,6 @@ public class JWTUtil {
return Long.valueOf(decodedJWT.getClaim(USERNO).asString()); return Long.valueOf(decodedJWT.getClaim(USERNO).asString());
} }
public static Integer getUserType(DecodedJWT decodedJWT){ return decodedJWT.getClaim(USERTYPE).asInt();}
} }

@ -1,6 +1,9 @@
package com.tz.platform.common.core.tools; package com.tz.platform.common.core.tools;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import org.jsoup.Jsoup;
import org.jsoup.safety.Safelist;
import org.jsoup.safety.Whitelist;
import java.util.Random; import java.util.Random;
@ -32,4 +35,14 @@ public class StrUtil {
return IdUtil.simpleUUID(); return IdUtil.simpleUUID();
} }
public static String htmlToText(String htmlStr){
String outputText = Jsoup.clean(htmlStr, Safelist.none());
return outputText;
}
public static void main(String[] args) {
String htmlStr = "<p>艺术硕士大法师地方</p>";
System.out.println(StrUtil.htmlToText(htmlStr));
}
} }

@ -4,10 +4,7 @@ import com.tz.platform.common.core.base.BaseController;
import com.tz.platform.common.core.base.Result; import com.tz.platform.common.core.base.Result;
import com.tz.platform.competitiion.pc.biz.TeamBiz; import com.tz.platform.competitiion.pc.biz.TeamBiz;
import com.tz.platform.competitiion.pc.dto.PageTeamDTO; import com.tz.platform.competitiion.pc.dto.PageTeamDTO;
import com.tz.platform.competitiion.pc.vo.AddTeamMemberVO; import com.tz.platform.competitiion.pc.vo.*;
import com.tz.platform.competitiion.pc.vo.PageTeamVO;
import com.tz.platform.competitiion.pc.vo.TeamInfoVO;
import com.tz.platform.competitiion.pc.vo.TeamMemberVO;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
@ -40,4 +37,9 @@ public class CompetitionTeamController extends BaseController {
public Result<String> addTeamMember(@RequestBody AddTeamMemberVO vo){ public Result<String> addTeamMember(@RequestBody AddTeamMemberVO vo){
return teamBiz.addTeamMember(vo); return teamBiz.addTeamMember(vo);
} }
@PostMapping(value = "addTeam")
public Result<String> addTeam(@RequestBody AddTeamVO vo){
return teamBiz.addTeam(vo);
}
} }

@ -36,6 +36,9 @@ public class PCCompetitionBiz {
BeanUtils.copyProperties(vo,competition); BeanUtils.copyProperties(vo,competition);
competition.setStartTime(new Date()); competition.setStartTime(new Date());
competition.setStatus(-1); competition.setStatus(-1);
if(competition.getId() == null){
competition.setCreateTime(new Date());
}
competition =competitionDao.save(competition); competition =competitionDao.save(competition);
return Result.success(competition.getId()); return Result.success(competition.getId());
} }

@ -1,11 +1,9 @@
package com.tz.platform.competitiion.pc.biz; package com.tz.platform.competitiion.pc.biz;
import com.tz.platform.common.core.base.Result; import com.tz.platform.common.core.base.Result;
import com.tz.platform.common.core.bo.MemberInfo;
import com.tz.platform.competitiion.pc.dto.PageTeamDTO; import com.tz.platform.competitiion.pc.dto.PageTeamDTO;
import com.tz.platform.competitiion.pc.vo.AddTeamMemberVO; import com.tz.platform.competitiion.pc.vo.*;
import com.tz.platform.competitiion.pc.vo.PageTeamVO;
import com.tz.platform.competitiion.pc.vo.TeamInfoVO;
import com.tz.platform.competitiion.pc.vo.TeamMemberVO;
import com.tz.platform.entity.CompetitionMember; import com.tz.platform.entity.CompetitionMember;
import com.tz.platform.entity.CompetitionTeam; import com.tz.platform.entity.CompetitionTeam;
import com.tz.platform.feign.user.IFeignUser; import com.tz.platform.feign.user.IFeignUser;
@ -14,8 +12,10 @@ import com.tz.platform.repository.CompetitionTeamDao;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.*; import org.springframework.data.domain.*;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -49,6 +49,9 @@ public class TeamBiz {
CompetitionTeam team = new CompetitionTeam(); CompetitionTeam team = new CompetitionTeam();
team.setStageId(vo.getStageId()); team.setStageId(vo.getStageId());
team.setCompetitionId(vo.getCompetitionId()); team.setCompetitionId(vo.getCompetitionId());
if(StringUtils.hasText(vo.getTeamName())){
team.setTeamName(vo.getTeamName());
}
Example<CompetitionTeam> example = Example.of(team,matcher); Example<CompetitionTeam> example = Example.of(team,matcher);
Pageable pageable = PageRequest.of(vo.getPageNo(),vo.getPageSize()); Pageable pageable = PageRequest.of(vo.getPageNo(),vo.getPageSize());
Page<CompetitionTeam> onePage = teamDao.findAll(example,pageable); Page<CompetitionTeam> onePage = teamDao.findAll(example,pageable);
@ -65,6 +68,7 @@ public class TeamBiz {
return Result.success("success"); return Result.success("success");
} }
@Transactional
public Result<String> addTeamMember(AddTeamMemberVO vo){ public Result<String> addTeamMember(AddTeamMemberVO vo){
CompetitionTeam team = teamDao.getById(vo.getTeamId()); CompetitionTeam team = teamDao.getById(vo.getTeamId());
if(team == null){ if(team == null){
@ -74,8 +78,31 @@ public class TeamBiz {
return Result.error("阶段信息不能为空"); return Result.error("阶段信息不能为空");
} }
List<CompetitionMember> existMemberList = memberDao.findAllByCompetitionIdAndStageIdAndUserIdIn(vo.getCompetitionId(),vo.getStageId(),vo.getIds());
if(existMemberList.size()>0){
vo.getIds().removeAll(existMemberList.stream().mapToLong(CompetitionMember::getUserId).boxed().collect(Collectors.toList()));
}
List<MemberInfo> memberInfoList = feignUser.listByIds(vo.getIds());
List<CompetitionMember> memberList = new ArrayList<>();
return Result.success(""); memberInfoList.forEach(m->{
CompetitionMember member = new CompetitionMember();
member.setCompetitionId(team.getCompetitionId());
member.setName(m.getName());
member.setSchool(m.getSchool());
member.setStudentNo(m.getStudentNo());
member.setUserId(m.getId());
member.setStageId(team.getStageId());
member.setTeamId(team.getId());
memberList.add(member);
});
memberDao.saveAll(memberList);
return Result.success("success");
} }
public Result<String> updateTeamInfo(TeamInfoVO vo){ public Result<String> updateTeamInfo(TeamInfoVO vo){
@ -97,4 +124,40 @@ public class TeamBiz {
teamDao.save(team); teamDao.save(team);
return Result.success("success"); return Result.success("success");
} }
@Transactional
public Result<String> addTeam(AddTeamVO vo){
CompetitionTeam team = teamDao.getByTeamName(vo.getTeamName());
if(team !=null){
return Result.error("团队名称已存在");
}
if(vo.getIds() == null||vo.getIds().size() == 0){
return Result.error("请选择团队成员");
}
team.setTeamName(vo.getTeamName());
team.setTeacherName(vo.getTeacher());
team.setCompetitionId(vo.getCompetitionId());
team.setStageId(vo.getStageId());
CompetitionTeam teamInfo = teamDao.save(team);
List<MemberInfo> memberInfoList = feignUser.listByIds(vo.getIds());
List<CompetitionMember> memberList = new ArrayList<>();
memberInfoList.forEach(m->{
CompetitionMember member = new CompetitionMember();
member.setCompetitionId(teamInfo.getCompetitionId());
member.setName(m.getName());
member.setSchool(m.getSchool());
member.setStudentNo(m.getStudentNo());
member.setUserId(m.getId());
member.setStageId(teamInfo.getStageId());
member.setTeamId(teamInfo.getId());
memberList.add(member);
});
memberDao.saveAll(memberList);
return Result.success("success");
}
} }

@ -0,0 +1,14 @@
package com.tz.platform.competitiion.pc.vo;
import lombok.Data;
import java.util.List;
@Data
public class AddTeamVO {
private Long competitionId;
private Integer stageId;
private String teamName;
private String teacher;
private List<Long> ids;
}

@ -8,4 +8,5 @@ public class PageTeamVO {
private Integer stageId; private Integer stageId;
private Integer pageNo; private Integer pageNo;
private Integer pageSize; private Integer pageSize;
private String teamName;
} }

@ -10,4 +10,6 @@ import java.util.List;
public interface CompetitionMemberDao extends JpaRepository<CompetitionMember,Integer> { public interface CompetitionMemberDao extends JpaRepository<CompetitionMember,Integer> {
List<CompetitionMember> findAllByCompetitionIdAndStageIdAndTeamIdIn(Long cmpId,Integer stageId,List<Integer> teamIds); List<CompetitionMember> findAllByCompetitionIdAndStageIdAndTeamIdIn(Long cmpId,Integer stageId,List<Integer> teamIds);
List<CompetitionMember> findAllByCompetitionIdAndStageIdAndUserIdIn(Long cmpId,Integer stageId,List<Long> ids);
} }

@ -7,4 +7,5 @@ import org.springframework.stereotype.Repository;
@Repository @Repository
public interface CompetitionTeamDao extends JpaRepository<CompetitionTeam,Integer> { public interface CompetitionTeamDao extends JpaRepository<CompetitionTeam,Integer> {
CompetitionTeam getById(Integer id); CompetitionTeam getById(Integer id);
CompetitionTeam getByTeamName(String teamName);
} }

@ -7,6 +7,7 @@ import com.auth0.jwt.interfaces.DecodedJWT;
import com.tz.platform.common.core.base.BaseException; import com.tz.platform.common.core.base.BaseException;
import com.tz.platform.common.core.enmus.RedisPreEnum; import com.tz.platform.common.core.enmus.RedisPreEnum;
import com.tz.platform.common.core.enmus.ResultEnum; import com.tz.platform.common.core.enmus.ResultEnum;
import com.tz.platform.common.core.enmus.UserTypeEnum;
import com.tz.platform.common.core.tools.JSUtil; import com.tz.platform.common.core.tools.JSUtil;
import com.tz.platform.common.core.tools.JWTUtil; import com.tz.platform.common.core.tools.JWTUtil;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -76,6 +77,10 @@ public class TzGlobalFilter implements GlobalFilter , Ordered {
if (uri.contains("/pc") && !uri.contains("/system/pc/menu/user/list") && !uri.contains("/system/pc/menu/user/button/list")) { if (uri.contains("/pc") && !uri.contains("/system/pc/menu/user/list") && !uri.contains("/system/pc/menu/user/button/list")) {
Integer userType =getUserTypeByToken(request);
if(userType < UserTypeEnum.ADMIN.getCode()){
throw new BaseException(ResultEnum.MENU_NO);
}
// 管理后台鉴权 // 管理后台鉴权
// if (!stringRedisTemplate.hasKey(RedisPreEnum.ADMINI_MENU.getCode().concat(userNo.toString()))) { // if (!stringRedisTemplate.hasKey(RedisPreEnum.ADMINI_MENU.getCode().concat(userNo.toString()))) {
// throw new BaseException(ResultEnum.MENU_PAST); // throw new BaseException(ResultEnum.MENU_PAST);
@ -226,6 +231,31 @@ public class TzGlobalFilter implements GlobalFilter , Ordered {
})); }));
} }
private Integer getUserTypeByToken(ServerHttpRequest request){
// 头部
String token = request.getHeaders().getFirst(TOKEN);
if (StringUtils.isEmpty(token)) { // token不存在则从报文里面获取
throw new BaseException("token不存在请重新登录");
}
// 解析 token
DecodedJWT jwt = null;
try {
jwt = JWTUtil.verify(token);
} catch (Exception e) {
logger.error("token异常token={}", token.toString());
throw new BaseException(ResultEnum.TOKEN_ERROR);
}
// 校验token
if (null == jwt) {
throw new BaseException(ResultEnum.TOKEN_ERROR);
}
Integer userType = JWTUtil.getUserType(jwt);
if (userType <= 0) {
throw new BaseException(ResultEnum.TOKEN_ERROR);
}
return userType;
}
private Long getUserNoByToken(ServerHttpRequest request) { private Long getUserNoByToken(ServerHttpRequest request) {
// 头部 // 头部
String token = request.getHeaders().getFirst(TOKEN); String token = request.getHeaders().getFirst(TOKEN);

@ -0,0 +1,12 @@
package com.tz.platform.system.pc.dto;
import com.tz.platform.entity.Region;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class RegionDTO implements Serializable {
private List<Region> list;
}

@ -25,6 +25,7 @@ public interface IFeignUser {
@PostMapping(value = "feign/user/batchSave") @PostMapping(value = "feign/user/batchSave")
List<MemberInfo> batchInsert(@RequestBody List<MemberImport> list); List<MemberInfo> batchInsert(@RequestBody List<MemberImport> list);
@PostMapping(value = "feign/user/listByIds")
List<MemberInfo> listByIds(@RequestBody List<Long> ids); List<MemberInfo> listByIds(@RequestBody List<Long> ids);
} }

@ -13,4 +13,4 @@ public class UserServiceApplication {
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(UserServiceApplication.class,args); SpringApplication.run(UserServiceApplication.class,args);
} }
} }

@ -62,7 +62,7 @@ public class ApiUserLoginBiz {
UserLoginDTO dto = new UserLoginDTO(); UserLoginDTO dto = new UserLoginDTO();
dto.setUserNo(user.getId()); dto.setUserNo(user.getId());
dto.setUsername(user.getUsername()); dto.setUsername(user.getUsername());
dto.setToken(JWTUtil.create(user.getId(), JWTUtil.DATE)); dto.setToken(JWTUtil.create(user.getId(),user.getUserType(), JWTUtil.DATE));
// 登录成功,存入缓存,单点登录使用 // 登录成功,存入缓存,单点登录使用

@ -7,4 +7,7 @@ import java.io.Serializable;
@Data @Data
public class UserPageBO implements Serializable { public class UserPageBO implements Serializable {
private int pageNo; private int pageNo;
private int pageSize;
private int userType;
private String name;
} }

Loading…
Cancel
Save