SSM框架下打卡签到增加积分功能的实现

jsp页面

ssm框架在之前的文章里已经介绍过了这里说一下打卡功能的实现

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!-- 首页,用户已登陆 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>签到打卡</title>
</head>
<body>
    <div >
        <style type="text/css">
            *{margin:0;padding:0;list-style-type:none;}
            a,img{border:0;text-decoration:none;}
            /*今日签到*/
            .singer{border:1px solid #DCDBDB;padding:10px;height:45px;line-height:45px;width:290px;margin:20px auto;}
            .singer_l_cont, .singer_r_img{float:left;}
            .singer_l_cont{width:145px;background:url(../../images/sing_per.gif) no-repeat left 12px;text-indent:23px;font-size:12px;}
            .singer_r_img{display:block;width:114px;height:52px;background:url(../../images/sing_week.gif) right 2px no-repeat;vertical-align:middle;float:right;*margin-bottom:-10px;}
            .singer_r_img:hover{background-position:right -53px;text-decoration:none;}
            .singer_r_img span{margin-left:14px;font-size:16px;font-family:'Hiragino Sans GB','Microsoft YaHei',sans-serif !important;font-weight:700;color:#165379;}
            .singer_r_img.current{background:url(../../images/sing_sing.gif) no-repeat 0 2px;}
        </style>
<table >
    <tr><td> <div class="singer">
                <div class="singer_l_cont">
                <span>每天签到赢取PK币</span>
            </div>
            <div class="singer_r_r">
                <a class="singer_r_img" href="#">
                    <span id="sing_for_number"></span>
                </a>
            </div>
        </div><!--singer end--></td>
        <td><div class="tcoin">
            <span ><font color="#ffd700" id="jingbi">金币:${money}</font></span>
        </div></td></tr>
</table>
        <script type="text/javascript" src="../../js/jquery-1.4.2.min.js"></script>
        <script type="text/javascript">
            /*签到模块日期捕捉:*/
            function week(){
                var objDate= new Date();
                var week = objDate.getDay();
                switch(week)
                {
                    case 0:
                        week="周日";
                        break;
                    case 1:
                        week="周一";
                        break;
                    case 2:
                        week="周二";
                        break;
                    case 3:
                        week="周三";
                        break;
                    case 4:
                        week="周四";
                        break;
                    case 5:
                        week="周五";
                        break;
                    case 6:
                        week="周六";
                        break;
                }
                $("#sing_for_number").html( week );
            }

            $(document).ready(function(){
                week();
                $(".singer_r_img").click(function(){
                    $(this).addClass("current");
					//这里使用了Ajax使得签到后还保持登录状态
                    var url="<%=request.getContextPath()%>/daka.html";  // 请求的url
                    $.post(
                        url,
                        {'name':${name}},
                        function (data)
                        {
                            if(data=="true")
                            {
                                alert("已签到,请不要重复签到")
                            }
                            else {
                                location.reload();//刷新页面,因为签到后金币数量改变需要刷新页面才能正确显示
                                alert("签到成功")
                            }

                        }
                    );

                })
            })
        </script>
    </div>
    </body>
</html>

Controller层

package com.mooke.controller;

import com.mooke.entity.User;
import com.mooke.service.Impl.UserServiceImpl;
import com.mooke.service.UserService;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;

import javax.servlet.ServletContext;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.io.File;
import java.util.UUID;

@Controller
public class IndexController {

    @Autowired
    private UserServiceImpl userService;

    //签到验证
    @RequestMapping("daka.html")
    @ResponseBody
    public String daka (HttpServletRequest request, HttpServletResponse response, Model model) {
        // 接收前端输入的用户名
        String name = request.getParameter("name");
        User userEntiy = new User();
        userEntiy.setName(name);
        //这里将今天的日期和数据库存在的上次签到日期进行比对如果今天日期等于上次签到日期返回ture,使得无法再次签到,如果不等于则可以签到
        Boolean userName=userService.daka("UsrMapper.daka",userEntiy);
        if(userName){
            return "true";
        }
        //在比对时间后返回false,此处更新打卡日期及金币数量,此时实体类中金币数量已经更改
        userService.updatedaka("UsrMapper.updatedaka",userEntiy);
        return "false";
    }
}

Service层

目录结构

在这里插入图片描述

UserService代码

package com.mooke.service;

import com.mooke.entity.User;
import java.util.Map;
import java.util.List;

public interface UserService {
    boolean updatedaka(String id, User userEntity);  
    boolean daka(String id, User userEntity);
}

UserServiceImpl代码

package com.mooke.service.Impl;

import com.mooke.dao.Impl.registeredDaoImpl;
import com.mooke.entity.User;
import com.mooke.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Map;


@Service
@Transactional
public class UserServiceImpl implements UserService {

    @Autowired
    private registeredDaoImpl registeredDao;

    @Override
    public boolean daka(String id, User userEntity){
        return registeredDao.daka(id,userEntity);
    };

    @Override
    public boolean updatedaka(String id, User userEntity){
        return registeredDao.updatedaka(id,userEntity);
    };


    
}

Dao层

registeredDao 代码

package com.mooke.dao;

import com.mooke.entity.User;

import java.util.List;
import java.util.Map;

public interface registeredDao {
    boolean daka(String id, User userEntity);
    boolean updatedaka(String id, User userEntity);
 
}

registeredDaoImpl 代码

package com.mooke.dao.Impl;

import com.mooke.dao.registeredDao;
import com.mooke.entity.User;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;


@Repository
public class registeredDaoImpl extends SqlSessionDaoSupport implements registeredDao {

    @Autowired
    public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory)
    {
        super.setSqlSessionFactory(sqlSessionFactory);
    }

    @Override
    public boolean daka(String id,User userEntity){
        if(	getSqlSession().selectOne(id, userEntity)!=null) return true;
        return false;
    };

    @Override
    public boolean updatedaka(String id, User userEntity){
        if(	getSqlSession().update(id, userEntity)>0)return true;
        return false;
    };

}

Mapper代码

目录结构

Mapper代码

代码

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="UsrMapper">
   

    <select id="daka" parameterType="com.mooke.entity.User" resultType="com.mooke.entity.User">
   select
           *
 from  user
     where
 name =#{name}
 AND
  qiandao = CURDATE()

	</select>
	
    <update id="updatedaka" parameterType="com.mooke.entity.User" >
	update user
	      set
		      qiandao = CURDATE(),
		      money = money+5
	where
	    name = #{name}

	</update>

</mapper>

仍有疑问可以加QQ275375496讨论

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值