微信运动作业文档

1、entity

@Data

@Entity

public class Walks {

@Id

@GeneratedValue

    private Integerid;

    /**

* 行走的步数

*/

    private IntegerwalkCount;

    /**

* 创建的时间

*/

    private DatecreateTime;

    public Walks() {

}

public Walks(Integer walkCount, Date createTime) {

this.walkCount = walkCount;

        this.createTime = createTime;

    }

}


@Component

public class SporterJob {

@Resource

    private WalksServicewalksService;

    @Scheduled(cron ="0 00 17 * * ? ")

public void updateTodayWalks()throws Exception {

walksService.updateWalks();

    }

}


@Data

@Entity

@GenericGenerator(name ="sporter-uuid", strategy ="uuid")

public class Sporter {

/**

* 自增的UUID

*/

    @Id

    @GeneratedValue(generator ="sporter-uuid")

@Column(length =32)

private StringsporterId;

    /**

* 账号

*/

    private Stringaccount;

    /**

* 密码

*/

    private Stringpassword;

    /**

* 昵称

*/

    private Stringnickname;

    /**

* 头像

*/

    private Stringavatar;

    /**

* 一对多关系,另一张表的外键

*/

    @OneToMany(fetch = FetchType.EAGER , cascade = CascadeType.REMOVE)

@JoinColumn(name ="sporter_id")

private ListwalksList =new ArrayList<>();

    public Sporter() {

}

public Sporter(String account, String password, String nickname, String avatar) {

this.account = account;

        this.password = password;

        this.nickname = nickname;

        this.avatar = avatar;

    }

public Sporter(String account, String password, String nickname, String avatar, List walksList) {

this.account = account;

        this.password = password;

        this.nickname = nickname;

        this.avatar = avatar;

        this.walksList = walksList;

    }

}


2、dao

public interface SporterRepositoryextends JpaRepository {

/**

* 根据账号密码来查找个人信息

    * @param account

    * @param password

    * @return

    */

    SporterfindByAccountAndPassword(String account,String password);

}


public interface WalksRepositoryextends JpaRepository {

}


3、config

@Configuration

public class QuartzConfig {

@Autowired

    private SpringJobFactoryspringJobFactory;

    @Bean

    public SchedulerFactoryBeanschedulerFactoryBean() {

SchedulerFactoryBean schedulerFactoryBean =new SchedulerFactoryBean();

        schedulerFactoryBean.setJobFactory(springJobFactory);

        return schedulerFactoryBean;

    }

@Bean

    public Schedulerscheduler() {

return schedulerFactoryBean().getScheduler();

    }

}


@Component

public class SpringJobFactoryextends AdaptableJobFactory {

@Autowired

    private AutowireCapableBeanFactorycapableBeanFactory;

    /**

* 创建一个Job实列

    * @param bundle

    * @return

    * @throws Exception

*/

    @Override

    protected ObjectcreateJobInstance(TriggerFiredBundle bundle)throws Exception {

Object jobInstance =super.createJobInstance(bundle);

        capableBeanFactory.autowireBean(jobInstance);

        return jobInstance;

    }

}


4、service

public interface WalksService {

/**

* 更新步数表中的数据

*/

    void updateWalks();

}


public interface SporterService {

/**

* 登陆

    * @param account

    * @param password

    * @return

    */

    Sporterlogin(String account, String password);

    /**

* 查找所有用户的信息,以及该用户下的步数信息

    * @return

    */

    ListfindAll();

}


@Service

public class WalksServiceImplimplements WalksService {

@Resource

    private WalksRepositorywalksRepository;

    /**

* 更新数据

*/

    @Override

    public void updateWalks() {

List list =walksRepository.findAll();

        Random random =new Random();

        for (int i=0;i

Walks walks = list.get(i);

            walks.setWalkCount(random.nextInt(20000)+20000);

            walks.setCreateTime(new Date());

            walksRepository.saveAndFlush(walks);

        }

}

}


@Service

public class SporterServiceImplimplements SporterService {

@Resource

    private SporterRepositorysporterRepository;

    /**

* 登陆

    * @param account

    * @param password

    * @return

    */

    @Override

    public Sporterlogin(String account, String password) {

return sporterRepository.findByAccountAndPassword(account,password);

    }

/**

* 查找所有的用户

    * @return

    */

    @Override

    public ListfindAll() {

return sporterRepository.findAll();

    }

}


5、contorller

@Controller

@RequestMapping(value ="/sporter")

public class SporterController {

@Resource

    private SporterServicesporterService;

    /**

* 登陆

    * @return

    */

    @GetMapping()

public Stringtest(){

return "login";

    }

/**

* 查看详情

    * @param account

    * @param password

    * @param map

    * @return

    */

    @GetMapping(value ="/list")

public Stringlist(

@RequestParam("account") String account,

            @RequestParam("password") String password,

            ModelMap map){

map.addAttribute("person",sporterService.login(account,password));

        map.addAttribute("list",sporterService.findAll());

        return "list";

    }

}

6、index

<html xmlns:th="http://www.thymeleaf.org">

<html lang="en">

    <meta charset="UTF-8">



    <title>Title

        *{padding:0;margin:0;}/* 清除浮动 */

        body {

font-family:"Microsoft YaHei";

            background:#EBEBEB;

            font-weight:300;

            font-size:15px;

            color:#333;

            overflow:hidden;

        }

a {text-decoration:none; color:#000;}

a:hover{color:#F87982;}/*home*/

        #home {/*logint界面*/

            padding-top:100px;

        }

#login{

padding:20px 30px 30px;

            width:300px;

            background:#FFF;

            margin:auto;

            border-radius:3px;

            box-shadow:0 3px 3px rgba(0, 0, 0, 0.3);

        }

#login h3{

font-size:18px;

            line-height:25px;

            font-weight:300;

            letter-spacing:3px;

            margin-bottom:20px;

            color:#C8C8C8;

            text-align:center;}

#login label{

color:#C8C8C8;

            display:block;

            height:35px;

            padding:0 10px;

            font-size:12px;

            line-height:35px;

            background:#EBEBEB;

            margin-bottom:10px;

            position:relative;}

#login label input{

font:13px/20px "Microsoft YaHei";

            background:none;  height:20px;

            border:none; margin:7px 0 0 10px;

            width:245px;outline:none ;

            letter-spacing:normal;

            z-index:1; position:relative;

        }

#login label  span{

display:block;

            height:35px;

            color:#F30;

            width:100px;

            position:absolute;

            top:0;

            left:190px;

            text-align:right;

            padding:0 10px 0 0;

            z-index:0;

            display:none;

        }

#login #button{

font-family:"Microsoft YaHei";

            cursor:pointer;

            width:300px;

            height:35px;

            background:#FE4E5B;

            border:none;

            font-size:14px;

            line-height:30px;

            letter-spacing:3px;

            color:#FFF;

            position:relative;

            margin-top:10px;

            -moz-transition:all 0.2s ease-in;

            -webkit-transition:all 0.2s ease-in;

            -o-transition:all 0.2s ease-in;

            transition:all 0.2s ease-in;}

#login #button:hover{background:#F87982; color:#000;}

.avator{

display:block;

            margin:0 auto 20px;

            border-radius:50%;

        }
<div id="home">

    <form id="login" action="/sporter/list" method="get" class="current1">

        <h3>用户登入

        <img class="avator" src="img/1.png" width="96" height="96"/>

        <label>账号<input type="text" name="account" style="width:215px;" />

            <span>账号为空

        <label>密码<input type="password" name="password"  />

            <span>密码为空

        <input type="submit" id="button">

  </form>

 <div>

</body>

</html>



<html xmlns:th="http://www.thymeleaf.org">

<html lang="en">

    <meta charset="UTF-8">

    <link rel="stylesheet" href="/webjars/bootstrap/3.3.7-1/css/bootstrap.min.css"/>

    <title>SporterList

        .top-nav {

height:60px;

        }

.top-img {

height:36px;

        }

.top-title {

font-size:20px;

            color:black;

            line-height:60px;

        }

p {

margin:0;

            padding:0;

        }

.icon1 {

margin-right:20px;

            line-height:60px;

        }

.icon2 {

margin-right:20px;

            line-height:60px;

        }

.center-nav {

width:100%;

            /*margin-top: 60px;*/

            height:40px;

            border-bottom:solid #E0E0E0 2px;

            margin-top: -20px;

        }

.center-nav .col-md-2 {

border:solid #E0E0E0 1px;

        }

.center-container{

margin:0 180px;

            height:40px;

        }

.center-list{

text-align:center;

            line-height:37px;

            font-size:16px;

            font-weight:bold;

            /*border: solid #E0E0E0 1px;*/

        }

.main{

margin-top:40px;

        }

.main .center-img {

width:200px;

            height:140px;

        }

.article-div {

width:100%;

            height:300px;

            padding:20px;

            margin-bottom:20px;

            border:solid #E0E0E0 1px;

        }

.article-div .bottom-info {

margin-top:20px;

        }

.article-div .avatar-img{

width:40px;

            height:40px;

            border-radius:50%;

        }

.bottom-info-right {

display:inline-block;

            width:40px;

            height:40px;

            float:right;

            padding-right:30px;

        }

#person_avatar {

border-radius:50px;

            width:40px;

            height:40px;

        }

<nav class="navbar navbar-default navbar-static-top">

    <div class="container top-nav">

        <div class="col-md-4">

        <div class="col-md-4">

            <p class="top-title text-center ">SporterList

        <div class="col-md-4 text-right">

            <a><span class="glyphicon glyphicon-pencil icon1">

            <a><span class="glyphicon glyphicon-search icon2">

            <a class="navbar-brand navbar-right" href="#">

                <img id="person_avatar" th:src="@{${person.avatar}}">

<div class="container">

    <div class="col-md-4">

    <div class="col-md-4">

        <div class="thumbnail" th:each="sport:${list}">

            <img th:src="@{${sport.avatar}}" alt="...">

            <div class="caption">

                <h3 th:text="${sport.nickname}">

                <div th:each="walk:${sport.walksList}">

                    <h4 th:text="${walk.walkCount}">

    <div class="col-md-4">

</html>


7、运行截图


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,099评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,828评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,540评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,848评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,971评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,132评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,193评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,934评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,376评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,687评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,846评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,537评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,175评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,887评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,134评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,674评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,741评论 2 351

推荐阅读更多精彩内容