课程标签管理 课程分类管理 上传功能实现 登陆日志功能实现
parent
ec45764eb7
commit
c320b6e938
@ -0,0 +1,14 @@
|
||||
package com.tz.platform.common.core.enmus;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum ClientTypeEnum {
|
||||
MOBILE(0,"手机"), PC(1,"PC");
|
||||
|
||||
private Integer code;
|
||||
|
||||
private String desc;
|
||||
}
|
@ -1 +1,2 @@
|
||||
pic_path=/Volumes/Lexar/www/pic
|
||||
pic_path=/Volumes/Lexar/www/pic/
|
||||
pic_recourse_url=http://localhost:8899/pic/
|
Binary file not shown.
@ -0,0 +1,15 @@
|
||||
package com.tz.platform.entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@Entity
|
||||
@Data
|
||||
@Table(indexes = {@Index(columnList = "name")})
|
||||
public class CourseCat {
|
||||
@Id
|
||||
@GeneratedValue(strategy= GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
private String name;
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package com.tz.platform.exam.pc;
|
||||
|
||||
import com.tz.platform.common.core.base.BaseController;
|
||||
import com.tz.platform.common.core.base.Result;
|
||||
import com.tz.platform.exam.pc.biz.PCQuestionBiz;
|
||||
import com.tz.platform.exam.pc.dto.QuestionDTO;
|
||||
import com.tz.platform.feign.exam.vo.QuestionVo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping(value = "/pc/question")
|
||||
public class PCQuestionController extends BaseController {
|
||||
@Autowired
|
||||
private PCQuestionBiz pcQuestionBiz;
|
||||
|
||||
@GetMapping(value = "list/{pageNo}")
|
||||
public Result<QuestionDTO> listQuestion(@PathVariable("pageNo") Integer pageNO){
|
||||
return pcQuestionBiz.list(pageNO);
|
||||
}
|
||||
|
||||
@PostMapping(value = "add")
|
||||
public Result<String> addQuestion(@RequestBody QuestionVo questionVo){
|
||||
return pcQuestionBiz.add(questionVo);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,43 @@
|
||||
package com.tz.platform.exam.pc.biz;
|
||||
|
||||
import com.tz.platform.common.core.base.Result;
|
||||
import com.tz.platform.entity.Question;
|
||||
import com.tz.platform.exam.pc.dto.QuestionDTO;
|
||||
import com.tz.platform.feign.exam.vo.QuestionVo;
|
||||
import com.tz.platform.repository.QuestionDao;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Component
|
||||
public class PCQuestionBiz {
|
||||
|
||||
@Autowired
|
||||
private QuestionDao questionDao;
|
||||
|
||||
public Result<QuestionDTO> list(Integer pageNo){
|
||||
QuestionDTO questionDTO = new QuestionDTO();
|
||||
Pageable pageable = PageRequest.of(pageNo,20);
|
||||
Page<Question> questions = questionDao.findAll(pageable);
|
||||
return Result.success(questionDTO.setQuestions(questions));
|
||||
}
|
||||
|
||||
public Result<String> add(QuestionVo questionVo){
|
||||
if(!StringUtils.hasText(questionVo.getAnalysis())){
|
||||
return Result.error("解析不能为空");
|
||||
}
|
||||
if(!StringUtils.hasText(questionVo.getCourseName())){
|
||||
return Result.error("标题不能为空");
|
||||
}
|
||||
if(!StringUtils.hasText(questionVo.getStem())){
|
||||
return Result.error("题干不能为空");
|
||||
}
|
||||
return Result.success("success");
|
||||
}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package com.tz.platform.exam.pc.dto;
|
||||
|
||||
import com.tz.platform.entity.Question;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.springframework.data.domain.Page;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class QuestionDTO implements Serializable {
|
||||
Page<Question> questions;
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
package com.tz.platform.exam.pc.vo;
|
||||
|
||||
import com.tz.platform.common.core.vo.Answer;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
import java.util.List;
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class QuestionVO {
|
||||
private Long id;
|
||||
private Long courseId;
|
||||
private String courseName;
|
||||
private Long levelId;
|
||||
private String levelName;
|
||||
private Long questionType;
|
||||
private String title;
|
||||
private Long score;
|
||||
private Integer type;
|
||||
private String stem;
|
||||
private String stemImg;
|
||||
private Long creatorId;
|
||||
List<Answer> answerList;
|
||||
private String analysis;
|
||||
private List<Integer> answerId;
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
package com.tz.platform.pc;
|
||||
|
||||
import com.tz.platform.common.core.base.Result;
|
||||
import com.tz.platform.pc.biz.PCCourseCatBiz;
|
||||
import com.tz.platform.pc.dto.CourseCatDTO;
|
||||
import com.tz.platform.pc.vo.CourseCatVO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping(value = "/pc/course/cat")
|
||||
public class CourseCateController {
|
||||
@Autowired
|
||||
private PCCourseCatBiz pcCourseCatBiz;
|
||||
|
||||
@GetMapping(value = "list")
|
||||
public Result<CourseCatDTO> list(){
|
||||
return pcCourseCatBiz.list();
|
||||
}
|
||||
|
||||
@PostMapping(value = "add")
|
||||
public Result<Long> add(@RequestBody CourseCatVO courseCatVO){
|
||||
return pcCourseCatBiz.add(courseCatVO);
|
||||
}
|
||||
|
||||
@PostMapping(value = "update")
|
||||
public Result<String> update(@RequestBody CourseCatVO courseCatVO){
|
||||
return pcCourseCatBiz.update(courseCatVO);
|
||||
}
|
||||
|
||||
@PostMapping(value = "delete")
|
||||
public Result<String> delete(@RequestBody CourseCatVO courseCatVO){
|
||||
return pcCourseCatBiz.delete(courseCatVO);
|
||||
}
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
package com.tz.platform.pc;
|
||||
|
||||
import com.tz.platform.common.core.base.Result;
|
||||
import com.tz.platform.pc.biz.PCCourseTagBiz;
|
||||
import com.tz.platform.pc.dto.CourseTagDTO;
|
||||
import com.tz.platform.pc.vo.CourseTagVO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping(value = "/pc/course/tag")
|
||||
public class PCCourseTagController {
|
||||
@Autowired
|
||||
private PCCourseTagBiz pcCourseTagBiz;
|
||||
|
||||
@GetMapping(value = "list")
|
||||
public Result<CourseTagDTO> list(){
|
||||
return pcCourseTagBiz.list();
|
||||
}
|
||||
|
||||
@PostMapping(value = "add")
|
||||
public Result<Long> add(@RequestBody CourseTagVO courseCatVO){
|
||||
return pcCourseTagBiz.add(courseCatVO);
|
||||
}
|
||||
|
||||
@PostMapping(value = "update")
|
||||
public Result<String> update(@RequestBody CourseTagVO courseCatVO){
|
||||
return pcCourseTagBiz.update(courseCatVO);
|
||||
}
|
||||
|
||||
@PostMapping(value = "delete")
|
||||
public Result<String> delete(@RequestBody CourseTagVO courseCatVO){
|
||||
return pcCourseTagBiz.delete(courseCatVO);
|
||||
}
|
||||
}
|
@ -0,0 +1,57 @@
|
||||
package com.tz.platform.pc.biz;
|
||||
|
||||
import com.tz.platform.common.core.base.Result;
|
||||
import com.tz.platform.entity.CourseCat;
|
||||
import com.tz.platform.pc.dto.CourseCatDTO;
|
||||
import com.tz.platform.pc.vo.CourseCatVO;
|
||||
import com.tz.platform.repository.CourseCatDao;
|
||||
import org.checkerframework.checker.units.qual.C;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
@Component
|
||||
public class PCCourseCatBiz {
|
||||
@Autowired
|
||||
private CourseCatDao courseCatDao;
|
||||
|
||||
public Result<CourseCatDTO> list(){
|
||||
CourseCatDTO courseCatDTO = new CourseCatDTO();
|
||||
courseCatDTO.setList(courseCatDao.findAll());
|
||||
return Result.success(courseCatDTO);
|
||||
}
|
||||
|
||||
public Result<Long> add(CourseCatVO courseCatVO){
|
||||
if(StringUtils.isEmpty(courseCatVO.getName())){
|
||||
return Result.error("分类名不能为空");
|
||||
}
|
||||
CourseCat courseCat = courseCatDao.getByName(courseCatVO.getName());
|
||||
if(courseCat!=null){
|
||||
return Result.error("分类已存在");
|
||||
}
|
||||
courseCat = new CourseCat();
|
||||
courseCat.setName(courseCatVO.getName());
|
||||
courseCat = courseCatDao.save(courseCat);
|
||||
return Result.success(courseCat.getId());
|
||||
}
|
||||
|
||||
public Result<String> update(CourseCatVO courseCatVO){
|
||||
if(courseCatVO.getId() == null){
|
||||
return Result.error("分类ID不能为空");
|
||||
}
|
||||
if(StringUtils.isEmpty(courseCatVO.getName())){
|
||||
return Result.error("分类名不能为空");
|
||||
}
|
||||
CourseCat courseCat = new CourseCat();
|
||||
BeanUtils.copyProperties(courseCatVO,courseCat);
|
||||
courseCatDao.save(courseCat);
|
||||
return Result.success("success");
|
||||
}
|
||||
|
||||
|
||||
public Result<String> delete(CourseCatVO courseCatVO){
|
||||
courseCatDao.deleteById(courseCatVO.getId());
|
||||
return Result.success("success");
|
||||
}
|
||||
}
|
@ -0,0 +1,57 @@
|
||||
package com.tz.platform.pc.biz;
|
||||
|
||||
import com.tz.platform.common.core.base.Result;
|
||||
import com.tz.platform.common.core.tools.BeanUtils;
|
||||
import com.tz.platform.entity.CourseTag;
|
||||
import com.tz.platform.pc.dto.CourseTagDTO;
|
||||
import com.tz.platform.pc.vo.CourseTagVO;
|
||||
import com.tz.platform.repository.CourseTagDao;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
@Component
|
||||
public class PCCourseTagBiz {
|
||||
@Autowired
|
||||
public CourseTagDao courseTagDao;
|
||||
|
||||
|
||||
|
||||
public Result<CourseTagDTO> list(){
|
||||
CourseTagDTO courseCatDTO = new CourseTagDTO();
|
||||
courseCatDTO.setList(courseTagDao.findAll());
|
||||
return Result.success(courseCatDTO);
|
||||
}
|
||||
|
||||
public Result<Long> add(CourseTagVO courseCatVO){
|
||||
if(StringUtils.isEmpty(courseCatVO.getName())){
|
||||
return Result.error("标签名不能为空");
|
||||
}
|
||||
CourseTag courseCat = courseTagDao.getByName(courseCatVO.getName());
|
||||
if(courseCat!=null){
|
||||
return Result.error("分类已存在");
|
||||
}
|
||||
courseCat = new CourseTag();
|
||||
courseCat.setName(courseCatVO.getName());
|
||||
courseCat = courseTagDao.save(courseCat);
|
||||
return Result.success(courseCat.getId());
|
||||
}
|
||||
|
||||
public Result<String> update(CourseTagVO courseCatVO){
|
||||
if(courseCatVO.getId() == null){
|
||||
return Result.error("标签ID不能为空");
|
||||
}
|
||||
if(StringUtils.isEmpty(courseCatVO.getName())){
|
||||
return Result.error("标签名不能为空");
|
||||
}
|
||||
CourseTag courseCat = BeanUtils.copyProperties(courseCatVO,CourseTag.class);
|
||||
courseTagDao.save(courseCat);
|
||||
return Result.success("success");
|
||||
}
|
||||
|
||||
|
||||
public Result<String> delete(CourseTagVO courseCatVO){
|
||||
courseTagDao.deleteById(courseCatVO.getId());
|
||||
return Result.success("success");
|
||||
}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package com.tz.platform.pc.dto;
|
||||
|
||||
import com.tz.platform.entity.CourseCat;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class CourseCatDTO implements Serializable {
|
||||
List<CourseCat> list;
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package com.tz.platform.pc.dto;
|
||||
|
||||
import com.tz.platform.entity.CourseTag;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class CourseTagDTO implements Serializable {
|
||||
List<CourseTag> list;
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package com.tz.platform.pc.vo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class CourseCatVO {
|
||||
private Long id;
|
||||
private String name;
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
package com.tz.platform.pc.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class CourseTagVO {
|
||||
private Long id;
|
||||
private String name;
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package com.tz.platform.repository;
|
||||
|
||||
import com.tz.platform.entity.CourseCat;
|
||||
import com.tz.platform.entity.CourseTag;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
public interface CourseCatDao extends JpaRepository<CourseCat,Long> {
|
||||
CourseCat getByName(String name);
|
||||
}
|
@ -1,10 +1,14 @@
|
||||
package com.tz.platform.repository;
|
||||
|
||||
import com.tz.platform.entity.Question;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
|
||||
@Repository
|
||||
public interface QuestionDao extends JpaRepository<Question,Long> {
|
||||
Question getById(Long id);
|
||||
Page<Question> findAll(Pageable pageable);
|
||||
}
|
||||
|
@ -0,0 +1,11 @@
|
||||
package com.tz.platform.feign;
|
||||
|
||||
import com.tz.platform.feign.vo.StudentLevelVo;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@FeignClient(value = "tz-system-service")
|
||||
public interface IFeignStudentLevel {
|
||||
List<StudentLevelVo> list();
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package com.tz.platform.feign.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
public class StudentLevelVo implements Serializable {
|
||||
private Integer id;
|
||||
private String name;
|
||||
}
|
@ -1,18 +1,23 @@
|
||||
package com.tz.platform.entity;
|
||||
|
||||
import com.vladmihalcea.hibernate.type.json.JsonStringType;
|
||||
import lombok.Data;
|
||||
import org.hibernate.annotations.Type;
|
||||
import org.hibernate.annotations.TypeDef;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.GenerationType;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.*;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
@Entity
|
||||
@Data
|
||||
@TypeDef(name = "json", typeClass = JsonStringType.class)
|
||||
public class Region implements Serializable {
|
||||
@Id
|
||||
@GeneratedValue(strategy= GenerationType.IDENTITY)
|
||||
private Integer id;
|
||||
private String name;
|
||||
@Type(type = "json")
|
||||
@Column(columnDefinition = "json" )
|
||||
private List<String> province;
|
||||
}
|
||||
|
@ -0,0 +1,9 @@
|
||||
package com.tz.platform.repository;
|
||||
|
||||
import com.tz.platform.entity.StudentLevel;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
public interface StudentLevelDao extends JpaRepository<StudentLevel,Integer> {
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
package com.tz.platform.system.feign;
|
||||
|
||||
import com.tz.platform.feign.IFeignStudentLevel;
|
||||
import com.tz.platform.feign.vo.StudentLevelVo;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
public class FeignStudentLevelController implements IFeignStudentLevel {
|
||||
|
||||
@Override
|
||||
public List<StudentLevelVo> list() {
|
||||
return null;
|
||||
}
|
||||
}
|
@ -1,8 +1,42 @@
|
||||
package com.tz.platform.system.feign;
|
||||
|
||||
import com.tz.platform.common.core.base.BaseController;
|
||||
import com.tz.platform.feign.IFeignSysMenu;
|
||||
import com.tz.platform.feign.qo.SysMenuQO;
|
||||
import com.tz.platform.feign.vo.SysMenuVO;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
public class FeignSystemMenuController extends BaseController {
|
||||
public class FeignSystemMenuController extends BaseController implements IFeignSysMenu {
|
||||
@Override
|
||||
public List<SysMenuVO> list(SysMenuQO qo) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int save(SysMenuQO qo) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int deleteById(Long id) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int updateById(SysMenuQO qo) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SysMenuVO getById(Long id) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> listByUserAndMenu(Long userNo) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,24 @@
|
||||
package com.tz.platform.system.feign.biz;
|
||||
|
||||
import com.tz.platform.entity.StudentLevel;
|
||||
import com.tz.platform.feign.vo.StudentLevelVo;
|
||||
import com.tz.platform.repository.StudentLevelDao;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
public class FeignStudentLevelBiz {
|
||||
@Autowired
|
||||
private StudentLevelDao studentLevelDao;
|
||||
|
||||
public List<StudentLevelVo> list(){
|
||||
List<StudentLevelVo> rs= new ArrayList<>();
|
||||
List<StudentLevel> studentLevels = studentLevelDao.findAll();
|
||||
BeanUtils.copyProperties(studentLevels,rs);
|
||||
return rs;
|
||||
}
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
package com.tz.platform.system.pc;
|
||||
|
||||
import com.tz.platform.common.core.base.Result;
|
||||
import com.tz.platform.system.pc.biz.PCMenuBiz;
|
||||
import com.tz.platform.system.pc.dto.MenuDTO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequestMapping(value = "/pc/menu")
|
||||
public class PCMenuController {
|
||||
@Autowired
|
||||
private PCMenuBiz pcMenuBiz;
|
||||
|
||||
@GetMapping(value = "menu")
|
||||
public Result<MenuDTO> listMenu(){
|
||||
return pcMenuBiz.listMenu();
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package com.tz.platform.system.pc;
|
||||
|
||||
import com.tz.platform.common.core.base.Result;
|
||||
import com.tz.platform.system.pc.bo.ProvinceBO;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequestMapping(value = "/pc/system")
|
||||
public class PcSystemController {
|
||||
|
||||
|
||||
@PostMapping(value = "province/add")
|
||||
public Result<String> addProvice(@RequestBody ProvinceBO provinceBO){
|
||||
|
||||
return Result.success("success");
|
||||
}
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package com.tz.platform.system.pc.biz;
|
||||
|
||||
import com.tz.platform.common.core.base.Result;
|
||||
import com.tz.platform.entity.Menu;
|
||||
import com.tz.platform.repository.MenuDao;
|
||||
import com.tz.platform.system.pc.dto.MenuDTO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Component
|
||||
public class PCMenuBiz {
|
||||
|
||||
@Autowired
|
||||
private MenuDao menuDao;
|
||||
|
||||
public Result<MenuDTO> listMenu(){
|
||||
List<Menu> menuList = menuDao.findAll();
|
||||
List<Menu> parent = menuList.stream().filter(menu->menu.getParentId()==0).collect(Collectors.toList());
|
||||
MenuDTO menuDTO = new MenuDTO();
|
||||
parent.forEach(menu -> {
|
||||
List<Menu> child = menuList.stream().filter(menu1 -> menu1.getParentId() == menu.getId()).collect(Collectors.toList());
|
||||
});
|
||||
return Result.success(menuDTO);
|
||||
}
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package com.tz.platform.system.pc.biz;
|
||||
|
||||
import com.tz.platform.common.core.base.Result;
|
||||
import com.tz.platform.entity.Province;
|
||||
import com.tz.platform.repository.ProvinceDao;
|
||||
import com.tz.platform.system.pc.bo.ProvinceBO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class PCProvinceBiz {
|
||||
|
||||
@Autowired
|
||||
private ProvinceDao provinceDao;
|
||||
|
||||
public Result<String> addProvince(ProvinceBO provinceBO){
|
||||
Province province = new Province();
|
||||
province.setName(provinceBO.getName());
|
||||
|
||||
return Result.success("success");
|
||||
}
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
package com.tz.platform.system.pc.bo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ProvinceBO {
|
||||
private String name;
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package com.tz.platform.system.pc.dto;
|
||||
|
||||
import com.tz.platform.entity.Menu;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class MenuDTO implements Serializable {
|
||||
List<Menu> menuList;
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package com.tz.platform.repository;
|
||||
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
@SpringBootTest
|
||||
public class ProvinceRepositoryTest {
|
||||
|
||||
public void addPronviceTest(){
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
package com.tz.platform.repository;
|
||||
|
||||
import com.tz.platform.entity.Region;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
@SpringBootTest
|
||||
public class RegionRepositoryTest {
|
||||
@Autowired
|
||||
private RegionDao regionDao;
|
||||
|
||||
@Test
|
||||
public void regionSaveTest(){
|
||||
Region region = new Region();
|
||||
region.setName("华中地区");
|
||||
List<String> provinces = new ArrayList<>();
|
||||
provinces.addAll(Arrays.asList("湖北省","河南省","湖南省"));
|
||||
region.setProvince(provinces);
|
||||
regionDao.save(region);
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>platform</artifactId>
|
||||
<groupId>com.tz</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>upload</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<modules>
|
||||
<module>upload-feign</module>
|
||||
<module>upload-service</module>
|
||||
</modules>
|
||||
|
||||
|
||||
</project>
|
@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>upload</artifactId>
|
||||
<groupId>com.tz</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>upload-feign</artifactId>
|
||||
|
||||
|
||||
</project>
|
@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>upload</artifactId>
|
||||
<groupId>com.tz</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>upload-service</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.tz</groupId>
|
||||
<artifactId>common-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.tz</groupId>
|
||||
<artifactId>common-service</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
@ -0,0 +1,13 @@
|
||||
package com.tz.platform;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
|
||||
|
||||
@SpringBootApplication
|
||||
@EnableDiscoveryClient
|
||||
public class UploadServiceApplication {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(UploadServiceApplication.class,args);
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package com.tz.platform.entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.GenerationType;
|
||||
import javax.persistence.Id;
|
||||
import java.util.Date;
|
||||
|
||||
@Entity
|
||||
@Data
|
||||
public class Image {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
private String path;
|
||||
private String url;
|
||||
private Date createTime;
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
package com.tz.platform.image.pc.biz;
|
||||
|
||||
import com.tz.platform.common.core.base.Result;
|
||||
import com.tz.platform.common.core.config.SystemUtil;
|
||||
import com.tz.platform.entity.Image;
|
||||
import com.tz.platform.image.pc.dto.ImageDTO;
|
||||
import com.tz.platform.repository.ImageDao;
|
||||
import net.coobird.thumbnailator.Thumbnails;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Date;
|
||||
|
||||
@Component
|
||||
public class PCImageBiz {
|
||||
|
||||
@Autowired
|
||||
private ImageDao imageDao;
|
||||
|
||||
public Result<ImageDTO> uploadImg(MultipartFile multipartFile,int w,int h){
|
||||
ImageDTO imageDTO = new ImageDTO();
|
||||
Image image = new Image();
|
||||
String fileName = System.currentTimeMillis()+"";
|
||||
try {
|
||||
Thumbnails.of(multipartFile.getResource().getInputStream()).size(w,h).outputFormat("png").toFile(SystemUtil.PIC_PATH+fileName);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
return Result.error("上传失败");
|
||||
}
|
||||
image.setCreateTime(new Date());
|
||||
image.setPath(SystemUtil.PIC_PATH+fileName+".png");
|
||||
image.setUrl(SystemUtil.PIC_RESOURCE_URL+fileName+".png");
|
||||
imageDao.save(image);
|
||||
BeanUtils.copyProperties(image,imageDTO);
|
||||
return Result.success(imageDTO);
|
||||
}
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
package com.tz.platform.image.pc.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class ImageDTO implements Serializable {
|
||||
private String url ;
|
||||
private Long id;
|
||||
private String path;
|
||||
}
|
@ -1,9 +1,9 @@
|
||||
package com.tz.platform.repository;
|
||||
|
||||
import com.tz.platform.entity.CourseTag;
|
||||
import com.tz.platform.entity.Image;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
public interface CousreCatDao extends JpaRepository<CourseTag,Long> {
|
||||
public interface ImageDao extends JpaRepository<Image,Long> {
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
server:
|
||||
port: 50015
|
||||
spring:
|
||||
application:
|
||||
name: tz-upload-service
|
||||
profiles:
|
||||
active: dev
|
||||
cloud:
|
||||
nacos:
|
||||
server-addr: 127.0.0.1:8848
|
||||
username: nacos
|
||||
password: nacos
|
||||
config:
|
||||
namespace: ${spring.profiles.active}
|
||||
file-extension: yaml
|
||||
discovery:
|
||||
namespace: ${spring.profiles.active}
|
||||
main:
|
||||
allow-bean-definition-overriding: true
|
Binary file not shown.
@ -0,0 +1,23 @@
|
||||
package com.tz.platform.entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.GenerationType;
|
||||
import javax.persistence.Id;
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@Entity
|
||||
public class LoginLog {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
private String username;
|
||||
private Date loginDate;
|
||||
private String ip;
|
||||
private String clientType;
|
||||
private String location;
|
||||
private Integer loginStatus;
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
package com.tz.platform.repository;
|
||||
|
||||
import com.tz.platform.entity.LoginLog;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
public interface LoginLogDao extends JpaRepository<LoginLog,Long> {
|
||||
}
|
@ -1,42 +0,0 @@
|
||||
package com.tz.platform.user.api;
|
||||
|
||||
import com.tz.platform.common.core.base.BaseController;
|
||||
import com.tz.platform.common.core.base.Result;
|
||||
import com.tz.platform.entity.User;
|
||||
import com.tz.platform.repository.UserDao;
|
||||
import com.tz.platform.user.api.biz.ApiUserInfoBiz;
|
||||
import com.tz.platform.user.api.bo.UserLoginPasswordBO;
|
||||
import com.tz.platform.user.api.dto.UserInfoDTO;
|
||||
import com.tz.platform.user.api.dto.UserLoginDTO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping(path = "/api/user")
|
||||
public class UserInfoController extends BaseController {
|
||||
|
||||
@Autowired
|
||||
UserDao userDao;
|
||||
|
||||
@Autowired
|
||||
ApiUserInfoBiz apiUserInfoBiz;
|
||||
|
||||
|
||||
@PostMapping(path = "login")
|
||||
public Result<UserLoginDTO> loginPassword(@RequestBody UserLoginPasswordBO userLoginPasswordBO){
|
||||
log(userLoginPasswordBO);
|
||||
return apiUserInfoBiz.loginPassword(userLoginPasswordBO);
|
||||
}
|
||||
|
||||
@GetMapping(path = "info")
|
||||
public Result<UserInfoDTO> info(){
|
||||
|
||||
UserInfoDTO userInfoDTO = new UserInfoDTO();
|
||||
userInfoDTO.setAvatar("https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif");
|
||||
userInfoDTO.setName("管理员");
|
||||
return Result.success(userInfoDTO);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
package com.tz.platform.user.api;
|
||||
|
||||
import com.tz.platform.common.core.base.BaseController;
|
||||
import com.tz.platform.common.core.base.Result;
|
||||
import com.tz.platform.user.api.biz.ApiUserLoginBiz;
|
||||
import com.tz.platform.user.api.bo.UserLoginPasswordBO;
|
||||
import com.tz.platform.user.api.dto.UserLoginDTO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/user/login")
|
||||
public class UserLoginController extends BaseController {
|
||||
|
||||
@Autowired
|
||||
private ApiUserLoginBiz apiUserLoginBiz;
|
||||
|
||||
@PostMapping(path = "password")
|
||||
public Result<UserLoginDTO> loginPassword(@RequestBody UserLoginPasswordBO userLoginPasswordBO){
|
||||
return apiUserLoginBiz.loginPassword(userLoginPasswordBO);
|
||||
}
|
||||
}
|
@ -0,0 +1,82 @@
|
||||
package com.tz.platform.user.api.biz;
|
||||
|
||||
import cn.hutool.crypto.digest.DigestUtil;
|
||||
import com.tz.platform.common.core.base.Result;
|
||||
import com.tz.platform.common.core.enmus.LoginStatusEnum;
|
||||
import com.tz.platform.common.core.tools.JWTUtil;
|
||||
import com.tz.platform.entity.LoginLog;
|
||||
import com.tz.platform.entity.User;
|
||||
import com.tz.platform.repository.LoginLogDao;
|
||||
import com.tz.platform.repository.UserDao;
|
||||
import com.tz.platform.user.api.bo.UserLoginPasswordBO;
|
||||
import com.tz.platform.user.api.dto.UserLoginDTO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Component
|
||||
public class ApiUserLoginBiz {
|
||||
@Autowired
|
||||
private UserDao userDao;
|
||||
|
||||
@Autowired
|
||||
private LoginLogDao loginLogDao;
|
||||
|
||||
@Autowired
|
||||
private RedisTemplate redisTemplate;
|
||||
/**
|
||||
* 账号密码登陆
|
||||
* @param userLoginPasswordBO
|
||||
* @return
|
||||
*/
|
||||
public Result<UserLoginDTO> loginPassword(UserLoginPasswordBO userLoginPasswordBO){
|
||||
|
||||
if (StringUtils.isEmpty(userLoginPasswordBO.getUsername())) {
|
||||
return Result.error("用户名不能为空");
|
||||
}
|
||||
if (StringUtils.isEmpty(userLoginPasswordBO.getPassword())) {
|
||||
return Result.error("密码不能为空");
|
||||
}
|
||||
|
||||
|
||||
// 密码错误次数校验
|
||||
|
||||
// 用户校验
|
||||
User user = userDao.getByUsername(userLoginPasswordBO.getUsername());
|
||||
if (null == user) {
|
||||
return Result.error("账号或者密码不正确");
|
||||
}
|
||||
// 密码校验
|
||||
if (!DigestUtil.sha1Hex(user.getMobileSalt() + userLoginPasswordBO.getPassword()).equals(user.getMobilePsw())) {
|
||||
// 放入缓存,错误次数+1
|
||||
return Result.error("账号或者密码不正确");
|
||||
}
|
||||
|
||||
// 登录日志
|
||||
loginLog(LoginStatusEnum.SUCCESS, userLoginPasswordBO.getIp(),user.getUsername(), userLoginPasswordBO.getClient());
|
||||
|
||||
UserLoginDTO dto = new UserLoginDTO();
|
||||
dto.setUserNo(user.getId());
|
||||
dto.setUsername(user.getUsername());
|
||||
dto.setToken(JWTUtil.create(user.getId(), JWTUtil.DATE));
|
||||
|
||||
|
||||
// 登录成功,存入缓存,单点登录使用
|
||||
// redisTemplate.opsForValue().set(dto.getUserNo().toString(), dto.getToken(), 1, TimeUnit.DAYS);
|
||||
|
||||
return Result.success(dto);
|
||||
}
|
||||
|
||||
private void loginLog(LoginStatusEnum loginStatusEnum, String ip,String username,String clientType){
|
||||
LoginLog loginLog = new LoginLog();
|
||||
loginLog.setIp(ip);
|
||||
loginLog.setUsername(username);
|
||||
loginLog.setLoginDate(new Date());
|
||||
loginLog.setClientType(clientType);
|
||||
loginLog.setLoginStatus(loginStatusEnum.getCode());
|
||||
loginLogDao.save(loginLog);
|
||||
}
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package com.tz.platform.user.auth;
|
||||
|
||||
import com.tz.platform.common.core.base.BaseController;
|
||||
import com.tz.platform.common.core.base.Result;
|
||||
import com.tz.platform.repository.UserDao;
|
||||
import com.tz.platform.user.auth.biz.AuthUserInfoBiz;
|
||||
import com.tz.platform.user.auth.dto.AuthUserInfoDTO;
|
||||
import com.tz.platform.user.auth.vo.UserInfoVo;
|
||||
import jdk.nashorn.internal.objects.annotations.Getter;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping(path = "/auth/user")
|
||||
public class UserInfoController extends BaseController {
|
||||
|
||||
@Autowired
|
||||
UserDao userDao;
|
||||
|
||||
@Autowired
|
||||
AuthUserInfoBiz authUserInfoBiz;
|
||||
|
||||
|
||||
@PostMapping(path = "info")
|
||||
public Result<AuthUserInfoDTO> info(@RequestBody UserInfoVo userInfoVo){
|
||||
return authUserInfoBiz.info(userInfoVo.getUserNo());
|
||||
}
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
package com.tz.platform.user.auth.biz;
|
||||
|
||||
import com.tz.platform.common.core.base.Result;
|
||||
import com.tz.platform.entity.User;
|
||||
import com.tz.platform.repository.UserDao;
|
||||
import com.tz.platform.user.auth.dto.AuthUserInfoDTO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
public class AuthUserInfoBiz {
|
||||
|
||||
@Autowired
|
||||
private UserDao userDao;
|
||||
|
||||
public Result<AuthUserInfoDTO> info(Long userNo){
|
||||
AuthUserInfoDTO authUserInfoDTO = new AuthUserInfoDTO();
|
||||
log.info(userNo+"");
|
||||
User user =userDao.getById(userNo);
|
||||
BeanUtils.copyProperties(user,authUserInfoDTO);
|
||||
return Result.success(authUserInfoDTO);
|
||||
}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
package com.tz.platform.user.auth.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class AuthUserInfoDTO implements Serializable {
|
||||
@ApiModelProperty(value = "姓名")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty(value = "头像")
|
||||
private String avatar;
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
package com.tz.platform.user.auth.vo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class UserInfoVo {
|
||||
private Long userNo;
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
package com.tz.platform.user.pc.biz;
|
||||
|
||||
public class PCUserLoginBiz {
|
||||
}
|
Binary file not shown.
Loading…
Reference in New Issue