結組作業,第二次衝刺(4)

saccharin發表於2024-06-14

今天是第二階段衝刺的第四天,昨天完成了公告功能,今天我們準備完成收藏功能,使用者可以收藏自己覺得重要的資訊,從使用者角度來說這是很重要的,以下為今日部分程式碼:

package com.work.controller;

import java.util.List;

import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.work.common.utils.BaseUtil;
import com.work.common.utils.JsonUtil;
import com.work.pojo.Collect;
import com.work.service.CollectService;

@Controller
@RequestMapping("/server/collect")
public class CollectController extends BaseUtil{

    @Autowired
    private CollectService collectService;
    
    //去收藏列表
    @RequestMapping("/goCollectList")
    public ModelAndView goCollectList(ModelAndView mv){
        mv.setViewName("server/collectManage/collectList");
        return mv;
    }
    
    //獲取收藏列表
    @RequestMapping("/getCollectList")
    public void getCollectList(HttpServletResponse response,Collect collect,Integer page,Integer limit){
        if(page == null){
            page = 1;
        }
        if(limit == null){
            limit = 10;
        }
        int totalCount = collectService.getCollectListCount(collect);
        List<Collect> list = collectService.getCollectList(collect,(page-1) * limit, limit);
        output(response,JsonUtil.buildJsonByTotalCount(list, totalCount));
    }
    
    //刪除收藏
    @RequestMapping("/deleteCollect")
    public void deleteCollect(HttpServletResponse response,Integer id){
        collectService.deleteCollectById(id);
        output(response,JsonUtil.buildFalseJson(0, "刪除成功!"));
    }
    
}

<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:set var="ctx" value="${pageContext.request.contextPath}" />
<html>
<head>
<title>收藏列表</title>
<link rel="stylesheet" href="${ctx}/server/layui/css/layui.css"
    media="all">
</head>
<body>
    <form class="layui-form layui-form-pane" action="">
        <blockquote class="layui-elem-quote news_search">
            <div class="layui-form-item">
                <div class="layui-inline pane-select">
                    <label class="layui-form-label">收藏編號</label>
                    <div class="layui-input-block ">
                        <input type="text" id="collectId" name="collectId"
                            lay-verify="required|number" placeholder="請輸入收藏編號"
                            autocomplete="off" class="layui-input">
                    </div>
                </div>
                <div class="layui-inline pane-select">
                    <label class="layui-form-label">使用者編號</label>
                    <div class="layui-input-block ">
                        <input type="text" id="userId" name="userId"
                            lay-verify="required|number" placeholder="請輸入使用者編號"
                            autocomplete="off" class="layui-input">
                    </div>
                </div>
                <div class="layui-inline pane-select">
                    <label class="layui-form-label">帖子編號</label>
                    <div class="layui-input-block ">
                        <input type="text" id="forumId" name="forumId"
                            lay-verify="required|number" placeholder="請輸入帖子編號"
                            autocomplete="off" class="layui-input">
                    </div>
                </div>
                <div style="float: right;">
                    <a class="layui-btn search_btn" onclick="doSearch()"> <i
                        class="layui-icon">&#xe615;</i>查詢
                    </a>
                </div>
            </div>
        </blockquote>
    </form>
    
    <table class="layui-table" id="forum" lay-filter="forum"
        lay-data="{id: 'forum'}"></table>
    <script type="text/html" id="toolBar">
        <a class="layui-btn layui-btn-mini layui-btn-danger" lay-event="deleteCollect" >刪除</a>
    </script>
    
    <script type="text/javascript" src="${ctx}/server/js/jquery-1.11.1.min.js"></script>
    <script type="text/javascript" src="${ctx}/server/layui/layui.all.js"></script>
    <script>
        layui.use([ 'layer', 'table', 'laydate' ], function() {
            table = layui.table;
            layer = layui.layer;
            var laydate = layui.laydate;
            //--------------方法渲染TABLE----------------
            //日期範圍
            laydate.render({
                elem : '#startAndendTime',
                calendar : true,
                range : '~'
            });
            getlist(null, null, null);
        });
        function doSearch() {
            var collectId = $("#collectId").val();
            var userId = $("#userId").val();
            var forumId = $("#forumId").val();
            getlist(collectId, userId, forumId);
        }

        function getlist(collectId, userId, forumId) {
            tableIns = table.render({
                elem : '#forum',
                id : 'forum',
                method : 'post',
                where : {
                    'id' : collectId,
                    'userId' : userId,
                    'forumId' : forumId
                },
                url : '${ctx}/server/collect/getCollectList.action',
                cols : [ [ {
                    field : 'id',
                    title : '編號',
                    width : 80,
                    align : 'center',
                    fixed : true,
                    sort : true
                }, {
                    field : 'userId',
                    title : '所屬使用者',
                    width : 140,
                    align : 'center'
                }, {
                    field : 'forumId',
                    title : '貼子編號',
                    width : 140,
                    align : 'center'
                }, {
                    field : 'createTime',
                    title : '收藏時間',
                    width : 180,
                    align : 'center',
                    sort : true,
                }, {
                    title : '操作',
                    width : 150,
                    align : 'center',
                    fixed : 'right',
                    toolbar : '#toolBar'
                } ] ],
                page : true,
                limits : [ 10, 20, 30, 50, 100 ],
                limit : 10, //預設採用20
                width : '100%',
                height : 'auto',
                loading : true,
                even : true,
                response : {
                    statusName : 'code' //資料狀態的欄位名稱,預設:code
                    ,
                    statusCode : 0 //成功的狀態碼,預設:0
                    ,
                    countName : 'count' //資料總數的欄位名稱,預設:count
                    ,
                    dataName : 'data' //資料列表的欄位名稱,預設:data
                },
                done : function(res, curr, count) {
                }
            });
        }
        table.on('tool(forum)', function(obj) {
            var data = obj.data;
            if (obj.event === 'deleteCollect') {
                layer.confirm('確定刪除該條收藏嗎?', function(index){
                    //向服務端傳送刪除指令
                    $.ajax({
                        type : "post",
                        url : "${ctx}/server/collect/deleteCollect.action",
                        dataType : "json",
                        data : {
                            "id" : data.id,
                        },
                        success : function(data) {
                            if(data.code==0){
                                layer.msg("刪除成功!");
                                setTimeout(function () {
                                       window.location.reload();
                                 }, 1000);
                            }else{
                                layer.msg("刪除失敗!");
                            }
                        }
                    });
                 });
            }
        });
        
    </script>
</body>
</html>

相關文章