栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

码匠社区学习笔记(三)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

码匠社区学习笔记(三)

所需资料

  • 教程视频地址
  • Bootstrap
  • spring模板
  • elasticsearch中文社区(想模仿的效果)
  • 码云aAuth
  • 获取授权用户的资料
  • github第三方授权文档
  • 码匠社区学习笔记(三)源码

功能主体说明:

  1. 问题编辑与删除
  2. 引入markdown插件
  3. mybatis-plus 的创建时间和修改时间自动生成

项目目录

登录后点击我的问题跳转到自己发布的问题页面

navigation.html







index.html




    码匠问题社区
    
    
    
    
    
    
    
    




发现



• 发表了文章 • 个评论 • 次浏览 •发布

问题发起指南

• 问题标题: 请用精简的语言描述您发布的问题,不超过25字
• 问题补充: 详细补充您的问题内容,并确保问题描述清晰直观, 并提供一些相关的资料
• 选择标签: 选择一个或者多个合适的标签,用逗号隔开,每个标签不超过10个字

ProfileController

package com.majiang.community.controller;

import com.majiang.community.model.User;
import com.majiang.community.service.IQuestionService;
import com.majiang.community.util.CookieUtil;
import com.majiang.community.util.PageUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpServletRequest;


@Controller
public class ProfileController {

    @Autowired(required = false)
  private IQuestionService questionService;

    @GetMapping("profile/{action}")
    public String profile(@RequestParam(name="current",defaultValue = "0") int current,
                          @RequestParam(name="size",defaultValue = "4")int size,
                          @PathVariable(name = "action")String action,
                          HttpServletRequest request,
                          Model model){
        User user = (User) request.getSession().getAttribute("user");
        //cookie已经过期
        if(user==null){
            return "redirect:/";
        }
        //获取我的问题列表
        if("question".equals(action)){
            PageUtils myQuestionPage= questionService.selectMyQuestion(current,size,user);
            model.addAttribute("sectionName", "问题列表");
            model.addAttribute("section", "question");
            model.addAttribute("myQuestionPage", myQuestionPage);
        }
        //获取我的回复列表
        if("reply".equals(action)){
            model.addAttribute("action", "回复列表");
        }
        return "profile";
    }
}

具体实现 QuestionServiceImp

package com.majiang.community.service.spring;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.majiang.community.dto.QuestionDTO;
import com.majiang.community.mapper.QuestionMapper;
import com.majiang.community.mapper.UserMapper;
import com.majiang.community.model.Question;
import com.majiang.community.model.User;
import com.majiang.community.service.IQuestionService;
import com.majiang.community.util.CookieUtil;
import com.majiang.community.util.PageUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;


@Service
public class QuestionServiceImp extends ServiceImpl implements IQuestionService {

    @Autowired(required = false)
    QuestionMapper questionMapper;
     @Autowired(required = false)
    UserMapper userMapper;

    @Override
    public List getQuestionList() {
        List questionDTOList=new ArrayList<>();
        List questionList = questionMapper.selectList(null);
        for(Question question:questionList){
            QueryWrapper userQueryWrapper = new QueryWrapper<>();
            userQueryWrapper.eq("fd_account_id", question.getCreator());
            User user = userMapper.selectOne(userQueryWrapper);
            QuestionDTO questionDTO = new QuestionDTO();
            BeanUtils.copyProperties(question, questionDTO);
            questionDTO.setUser(user);
            questionDTOList.add(questionDTO);
        }
        return questionDTOList;
    }

    @Override
    public PageUtils getQuestionPage(int current, int size) {
        Page page=new Page(current,size);
        //查询出所有的问题列表
        IPage iPage = questionMapper.selectPage(page, null);
        List  questionList= iPage.getRecords();
        //
        List questionDTOList=new ArrayList<>();
        for (Question question:questionList){
            QueryWrapper userQueryWrapper = new QueryWrapper<>();
            userQueryWrapper.eq("fd_account_id", question.getCreator());
            User user = userMapper.selectOne(userQueryWrapper);
            QuestionDTO questionDTO = new QuestionDTO();
            BeanUtils.copyProperties(question, questionDTO);
            questionDTO.setUser(user);
            questionDTOList.add(questionDTO);
        }
        iPage.setRecords(questionDTOList);
        return new PageUtils(iPage);
    }

    @Override
    public PageUtils selectMyQuestion(int current, int size, User user) {
        Page page=new Page(current,size);
        QueryWrapper questionQueryWrapper = new QueryWrapper<>();
        questionQueryWrapper.eq("creator", user.getFdAccountId());
        IPage iPage = questionMapper.selectPage(page, questionQueryWrapper);
        return new  PageUtils(iPage);
    }

    @Override
    public QuestionDTO getQuestionById(String id) {
        Question question = questionMapper.selectById(id);
        QueryWrapper userQueryWrapper = new QueryWrapper<>();
        userQueryWrapper.eq("fd_account_id", question.getCreator());
        User user = userMapper.selectOne(userQueryWrapper);
        QuestionDTO questionDTO = new QuestionDTO();
        BeanUtils.copyProperties(question, questionDTO);
        questionDTO.setUser(user);
        return questionDTO;
    }

    @Override
    public void updateQuestion(QuestionDTO questionDTO) {
        Question question=new Question();
        BeanUtils.copyProperties(questionDTO, question);
        int i = questionMapper.updateById(question);
        System.out.println("修改了"+i);
    }

    @Override
    public void deleteQuestion(String id) {
        questionMapper.deleteById(id);
    }

    @Override
    public void addQuestion(QuestionDTO questionDTO, HttpServletRequest request) {
        String cookieValue = CookieUtil.getCookieValue(request);
        QueryWrapper queryWrapper=new QueryWrapper();
        queryWrapper.eq("fd_token", cookieValue);
        User user = userMapper.selectOne(queryWrapper);
        Question question=new Question();
        BeanUtils.copyProperties(questionDTO, question);
        question.setCreator(user.getFdAccountId());
        questionMapper.insert(question);
    }
}


profile.html




    码匠问题社区
    
    
    
    
    
    
    
    







• 个评论 • 次浏览 •发布

问题详情


实现类代码上面已展示,这里省略。。。。

引入md

md下载

question.html




    码匠问题社区
    
    
    
    
    
    
    
    
    
    
    
    
    
    




作者 | 发布于 | 阅读数: 


发起人


相关问题

PublishController

package com.majiang.community.controller;

import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.majiang.community.dto.QuestionDTO;
import com.majiang.community.mapper.QuestionMapper;
import com.majiang.community.mapper.UserMapper;
import com.majiang.community.model.Question;
import com.majiang.community.model.User;
import com.majiang.community.service.IQuestionService;
import com.majiang.community.util.CookieUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpServletRequest;


@Controller
public class PublishController {
    @Autowired(required = false)
    private QuestionMapper questionMapper;
    @Autowired(required = false)
    private UserMapper userMapper;

    @Autowired
    private IQuestionService questionService;

    @GetMapping("https://blog.csdn.net/publish")
    public String createQuestion(Model model,
                                 HttpServletRequest request){
        String cookieValue = CookieUtil.getCookieValue(request);
        if(StrUtil.isEmpty(cookieValue)){
            return "index";
        }
        QuestionDTO questionDTO=new QuestionDTO();
        model.addAttribute("questionDTO", questionDTO);
        return "publish";
    }

    @PostMapping("https://blog.csdn.net/publish")
    public String saveQuestion(@RequestParam(name = "title")String title,
                               @RequestParam(name="description")String description,
                               @RequestParam(name = "tag")String tag,
                               @RequestParam(name = "id",required = false)String id,
                               HttpServletRequest request,
                               Model model){
        QuestionDTO questionDTO=new QuestionDTO();
        questionDTO.setTitle(title);
        questionDTO.setDescription(description);
        questionDTO.setTag(tag);
        if(StrUtil.isNotEmpty(id)){
            questionDTO.setId(id);
        }
        model.addAttribute("questionDTO", questionDTO);
        if(StrUtil.isEmpty(title)){
            model.addAttribute("error", "标题不能为空");
            return "publish";
        }
        if(StrUtil.isEmpty(description)){
            model.addAttribute("error", "问题描述不能为空");
            return "publish";
        }
        if(StrUtil.isEmpty(tag)){
            model.addAttribute("error", "标签不能为空");
            return "publish";
        }
        if(StrUtil.isNotEmpty(id)){
            questionService.updateQuestion(questionDTO);
        }else{
            questionService.addQuestion(questionDTO,request);
        }

        return "redirect:/";
    }
    
    @GetMapping("publish/{id}")
    public String editQuestion(@PathVariable(name = "id")String id,
                               Model model){
        //TODO 鉴定用户是否有权限修改
        QuestionDTO questionDTO = questionService.getQuestionById(id);
        model.addAttribute("questionDTO",questionDTO);
        return "publish";
    }

    
    @GetMapping("publish/delete/{id}")
    public String deleteQuestion(@PathVariable(name = "id")String id){
        //TODO 鉴定用户是否有权限删除
        questionService.deleteQuestion(id);
        return "redirect:https://blog.csdn.net/profile/question";
    }

}

questionService实现类代码上面已展示,这里省略。。。。

publish.html





    码匠问题社区
    
    
    
    
    
    
    
    
    
    
    
    



发起


问题发起指南

• 问题标题: 请用精简的语言描述您发布的问题,不超过25字
• 问题补充: 详细补充您的问题内容,并确保问题描述清晰直观, 并提供一些相关的资料
• 选择标签: 选择一个或者多个合适的标签,用逗号隔开,每个标签不超过10个字

mybatis-plus创建时间和修改时间自动生成

package com.majiang.community.model;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;


@Data
public class User {
    @TableId(value = "fd_id",type = IdType.ID_WORKER_STR)
    private String fdId;
    
    private String fdName;
    
    private String login;
    
    private String fdAccountId;
    
    private String fdToken;
    
    private String avatarUrl;
    
    @TableField(fill = FieldFill.INSERT)//INSERT代表只在插入时填充
    private Long gmtCreateTime;
    
    @TableField(fill = FieldFill.INSERT_UPDATE)// INSERT_UPDATE 首次插入、其次更新时填充(或修改)
    private Long gmtAlterTime;

}

创建MetaObjectHandler接口实现类即可,不用特意调用

package com.majiang.community.config;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        //属性名称,不是字段名称
        if(metaObject.hasSetter("gmtCreate")){
            this.setFieldValByName("gmtCreate", System.currentTimeMillis(), metaObject);
        }
        if(metaObject.hasSetter("gmtModified")){
            this.setFieldValByName("gmtModified", System.currentTimeMillis(), metaObject);
        }
        if(metaObject.hasSetter("gmtCreateTime")){
            this.setFieldValByName("gmtCreateTime", System.currentTimeMillis(), metaObject);
        }
        if(metaObject.hasSetter("gmtAlterTime")){
            this.setFieldValByName("gmtAlterTime", System.currentTimeMillis(), metaObject);
        }

    }

    @Override
    public void updateFill(MetaObject metaObject) {
        if(metaObject.hasSetter("gmtModified")){
            this.setFieldValByName("gmtModified", System.currentTimeMillis(), metaObject);
        }
        if(metaObject.hasSetter("gmtAlterTime")){
            this.setFieldValByName("gmtAlterTime", System.currentTimeMillis(), metaObject);
        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/845655.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号