后台首页更 新,新增会员总数/作家总数/作品总数/交易总数统计,新增7日内会员新增/作家新增/作品新增/交易新增统计报表

This commit is contained in:
xiongxiaoyang
2020-12-01 05:42:12 +08:00
parent 28cebad48d
commit b279763383
70 changed files with 7369 additions and 254 deletions

View File

@ -0,0 +1,135 @@
package com.java2nb.novel.controller;
import java.util.List;
import java.util.Map;
import org.apache.shiro.authz.annotation.RequiresPermissions;
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.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import io.swagger.annotations.ApiOperation;
import com.java2nb.novel.domain.BookDO;
import com.java2nb.novel.service.BookService;
import com.java2nb.common.utils.PageBean;
import com.java2nb.common.utils.Query;
import com.java2nb.common.utils.R;
/**
* 小说表
*
* @author xiongxy
* @email 1179705413@qq.com
* @date 2020-12-01 03:49:46
*/
@Controller
@RequestMapping("/novel/book")
public class BookController {
@Autowired
private BookService bookService;
@GetMapping()
@RequiresPermissions("novel:book:book")
String Book() {
return "novel/book/book";
}
@ApiOperation(value = "获取小说表列表", notes = "获取小说表列表")
@ResponseBody
@GetMapping("/list")
@RequiresPermissions("novel:book:book")
public R list(@RequestParam Map<String, Object> params) {
//查询列表数据
Query query = new Query(params);
List<BookDO> bookList = bookService.list(query);
int total = bookService.count(query);
PageBean pageBean = new PageBean(bookList, total);
return R.ok().put("data", pageBean);
}
@ApiOperation(value = "新增小说表页面", notes = "新增小说表页面")
@GetMapping("/add")
@RequiresPermissions("novel:book:add")
String add() {
return "novel/book/add";
}
@ApiOperation(value = "修改小说表页面", notes = "修改小说表页面")
@GetMapping("/edit/{id}")
@RequiresPermissions("novel:book:edit")
String edit(@PathVariable("id") Long id, Model model) {
BookDO book = bookService.get(id);
model.addAttribute("book", book);
return "novel/book/edit";
}
@ApiOperation(value = "查看小说表页面", notes = "查看小说表页面")
@GetMapping("/detail/{id}")
@RequiresPermissions("novel:book:detail")
String detail(@PathVariable("id") Long id, Model model) {
BookDO book = bookService.get(id);
model.addAttribute("book", book);
return "novel/book/detail";
}
/**
* 保存
*/
@ApiOperation(value = "新增小说表", notes = "新增小说表")
@ResponseBody
@PostMapping("/save")
@RequiresPermissions("novel:book:add")
public R save( BookDO book) {
if (bookService.save(book) > 0) {
return R.ok();
}
return R.error();
}
/**
* 修改
*/
@ApiOperation(value = "修改小说表", notes = "修改小说表")
@ResponseBody
@RequestMapping("/update")
@RequiresPermissions("novel:book:edit")
public R update( BookDO book) {
bookService.update(book);
return R.ok();
}
/**
* 删除
*/
@ApiOperation(value = "删除小说表", notes = "删除小说表")
@PostMapping("/remove")
@ResponseBody
@RequiresPermissions("novel:book:remove")
public R remove( Long id) {
if (bookService.remove(id) > 0) {
return R.ok();
}
return R.error();
}
/**
* 删除
*/
@ApiOperation(value = "批量删除小说表", notes = "批量删除小说表")
@PostMapping("/batchRemove")
@ResponseBody
@RequiresPermissions("novel:book:batchRemove")
public R remove(@RequestParam("ids[]") Long[] ids) {
bookService.batchRemove(ids);
return R.ok();
}
}

View File

@ -0,0 +1,135 @@
package com.java2nb.novel.controller;
import java.util.List;
import java.util.Map;
import org.apache.shiro.authz.annotation.RequiresPermissions;
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.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import io.swagger.annotations.ApiOperation;
import com.java2nb.novel.domain.PayDO;
import com.java2nb.novel.service.PayService;
import com.java2nb.common.utils.PageBean;
import com.java2nb.common.utils.Query;
import com.java2nb.common.utils.R;
/**
* 充值订单
*
* @author xiongxy
* @email 1179705413@qq.com
* @date 2020-12-01 03:49:57
*/
@Controller
@RequestMapping("/novel/pay")
public class PayController {
@Autowired
private PayService payService;
@GetMapping()
@RequiresPermissions("novel:pay:pay")
String Pay() {
return "novel/pay/pay";
}
@ApiOperation(value = "获取充值订单列表", notes = "获取充值订单列表")
@ResponseBody
@GetMapping("/list")
@RequiresPermissions("novel:pay:pay")
public R list(@RequestParam Map<String, Object> params) {
//查询列表数据
Query query = new Query(params);
List<PayDO> payList = payService.list(query);
int total = payService.count(query);
PageBean pageBean = new PageBean(payList, total);
return R.ok().put("data", pageBean);
}
@ApiOperation(value = "新增充值订单页面", notes = "新增充值订单页面")
@GetMapping("/add")
@RequiresPermissions("novel:pay:add")
String add() {
return "novel/pay/add";
}
@ApiOperation(value = "修改充值订单页面", notes = "修改充值订单页面")
@GetMapping("/edit/{id}")
@RequiresPermissions("novel:pay:edit")
String edit(@PathVariable("id") Long id, Model model) {
PayDO pay = payService.get(id);
model.addAttribute("pay", pay);
return "novel/pay/edit";
}
@ApiOperation(value = "查看充值订单页面", notes = "查看充值订单页面")
@GetMapping("/detail/{id}")
@RequiresPermissions("novel:pay:detail")
String detail(@PathVariable("id") Long id, Model model) {
PayDO pay = payService.get(id);
model.addAttribute("pay", pay);
return "novel/pay/detail";
}
/**
* 保存
*/
@ApiOperation(value = "新增充值订单", notes = "新增充值订单")
@ResponseBody
@PostMapping("/save")
@RequiresPermissions("novel:pay:add")
public R save( PayDO pay) {
if (payService.save(pay) > 0) {
return R.ok();
}
return R.error();
}
/**
* 修改
*/
@ApiOperation(value = "修改充值订单", notes = "修改充值订单")
@ResponseBody
@RequestMapping("/update")
@RequiresPermissions("novel:pay:edit")
public R update( PayDO pay) {
payService.update(pay);
return R.ok();
}
/**
* 删除
*/
@ApiOperation(value = "删除充值订单", notes = "删除充值订单")
@PostMapping("/remove")
@ResponseBody
@RequiresPermissions("novel:pay:remove")
public R remove( Long id) {
if (payService.remove(id) > 0) {
return R.ok();
}
return R.error();
}
/**
* 删除
*/
@ApiOperation(value = "批量删除充值订单", notes = "批量删除充值订单")
@PostMapping("/batchRemove")
@ResponseBody
@RequiresPermissions("novel:pay:batchRemove")
public R remove(@RequestParam("ids[]") Long[] ids) {
payService.batchRemove(ids);
return R.ok();
}
}

View File

@ -0,0 +1,83 @@
package com.java2nb.novel.controller;
import com.java2nb.common.utils.DateUtils;
import com.java2nb.common.utils.PageBean;
import com.java2nb.common.utils.Query;
import com.java2nb.common.utils.R;
import com.java2nb.novel.domain.AuthorCodeDO;
import com.java2nb.novel.service.*;
import com.java2nb.test.service.OrderService;
import io.swagger.annotations.ApiOperation;
import lombok.SneakyThrows;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 统计
*
* @author xiongxy
* @email 1179705413@qq.com
* @date 2020-12-01 03:40:12
*/
@Controller
@RequestMapping("/novel/stat")
public class StatController {
@Autowired
private UserService userService;
@Autowired
private AuthorService authorService;
@Autowired
private BookService bookService;
@Autowired
private PayService orderPayService;
@ResponseBody
@GetMapping("/countSta")
public R countUser() {
Map map = new HashMap<>(0);
int userCount = userService.count(map);
int authorCount = authorService.count(map);
int bookCount = bookService.count(map);
int orderCount = orderPayService.count(map);
return R.ok().put("userCount",userCount)
.put("authorCount",authorCount)
.put("bookCount",bookCount)
.put("orderCount",orderCount);
}
@ResponseBody
@GetMapping("/tableSta")
@SneakyThrows
public R tableSta() {
Date currentDate = new Date();
List<String> dateList = DateUtils.getDateList(7,currentDate);
Date minDate = new SimpleDateFormat("yyyy-MM-dd").parse(dateList.get(0));
Map<Object,Object> userTableSta = userService.tableSta(minDate);
Map<Object,Object> bookTableSta = bookService.tableSta(minDate);
Map<Object,Object> authorTableSta = authorService.tableSta(minDate);
Map<Object,Object> orderTableSta = orderPayService.tableSta(minDate);
return R.ok().put("dateList",dateList)
.put("userTableSta",userTableSta)
.put("bookTableSta",bookTableSta)
.put("authorTableSta",authorTableSta)
.put("orderTableSta",orderTableSta)
;
}
}

View File

@ -0,0 +1,135 @@
package com.java2nb.novel.controller;
import java.util.List;
import java.util.Map;
import org.apache.shiro.authz.annotation.RequiresPermissions;
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.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import io.swagger.annotations.ApiOperation;
import com.java2nb.novel.domain.UserDO;
import com.java2nb.novel.service.UserService;
import com.java2nb.common.utils.PageBean;
import com.java2nb.common.utils.Query;
import com.java2nb.common.utils.R;
/**
*
*
* @author xiongxy
* @email 1179705413@qq.com
* @date 2020-12-01 03:49:08
*/
@Controller
@RequestMapping("/novel/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping()
@RequiresPermissions("novel:user:user")
String User() {
return "novel/user/user";
}
@ApiOperation(value = "获取列表", notes = "获取列表")
@ResponseBody
@GetMapping("/list")
@RequiresPermissions("novel:user:user")
public R list(@RequestParam Map<String, Object> params) {
//查询列表数据
Query query = new Query(params);
List<UserDO> userList = userService.list(query);
int total = userService.count(query);
PageBean pageBean = new PageBean(userList, total);
return R.ok().put("data", pageBean);
}
@ApiOperation(value = "新增页面", notes = "新增页面")
@GetMapping("/add")
@RequiresPermissions("novel:user:add")
String add() {
return "novel/user/add";
}
@ApiOperation(value = "修改页面", notes = "修改页面")
@GetMapping("/edit/{id}")
@RequiresPermissions("novel:user:edit")
String edit(@PathVariable("id") Long id, Model model) {
UserDO user = userService.get(id);
model.addAttribute("user", user);
return "novel/user/edit";
}
@ApiOperation(value = "查看页面", notes = "查看页面")
@GetMapping("/detail/{id}")
@RequiresPermissions("novel:user:detail")
String detail(@PathVariable("id") Long id, Model model) {
UserDO user = userService.get(id);
model.addAttribute("user", user);
return "novel/user/detail";
}
/**
* 保存
*/
@ApiOperation(value = "新增", notes = "新增")
@ResponseBody
@PostMapping("/save")
@RequiresPermissions("novel:user:add")
public R save( UserDO user) {
if (userService.save(user) > 0) {
return R.ok();
}
return R.error();
}
/**
* 修改
*/
@ApiOperation(value = "修改", notes = "修改")
@ResponseBody
@RequestMapping("/update")
@RequiresPermissions("novel:user:edit")
public R update( UserDO user) {
userService.update(user);
return R.ok();
}
/**
* 删除
*/
@ApiOperation(value = "删除", notes = "删除")
@PostMapping("/remove")
@ResponseBody
@RequiresPermissions("novel:user:remove")
public R remove( Long id) {
if (userService.remove(id) > 0) {
return R.ok();
}
return R.error();
}
/**
* 删除
*/
@ApiOperation(value = "批量删除", notes = "批量删除")
@PostMapping("/batchRemove")
@ResponseBody
@RequiresPermissions("novel:user:batchRemove")
public R remove(@RequestParam("ids[]") Long[] ids) {
userService.batchRemove(ids);
return R.ok();
}
}

View File

@ -2,6 +2,7 @@ package com.java2nb.novel.dao;
import com.java2nb.novel.domain.AuthorDO;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -29,4 +30,6 @@ public interface AuthorDao {
int remove(Long id);
int batchRemove(Long[] ids);
List<Map<Object, Object>> tableSta(Date minDate);
}

View File

@ -0,0 +1,35 @@
package com.java2nb.novel.dao;
import com.java2nb.novel.domain.BookDO;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Mapper;
/**
* 小说表
* @author xiongxy
* @email 1179705413@qq.com
* @date 2020-12-01 03:49:46
*/
@Mapper
public interface BookDao {
BookDO get(Long id);
List<BookDO> list(Map<String,Object> map);
int count(Map<String,Object> map);
int save(BookDO book);
int update(BookDO book);
int remove(Long id);
int batchRemove(Long[] ids);
List<Map<Object, Object>> tableSta(Date minDate);
}

View File

@ -0,0 +1,35 @@
package com.java2nb.novel.dao;
import com.java2nb.novel.domain.PayDO;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Mapper;
/**
* 充值订单
* @author xiongxy
* @email 1179705413@qq.com
* @date 2020-12-01 03:49:57
*/
@Mapper
public interface PayDao {
PayDO get(Long id);
List<PayDO> list(Map<String,Object> map);
int count(Map<String,Object> map);
int save(PayDO pay);
int update(PayDO pay);
int remove(Long id);
int batchRemove(Long[] ids);
List<Map<Object, Object>> tableSta(Date minDate);
}

View File

@ -0,0 +1,35 @@
package com.java2nb.novel.dao;
import com.java2nb.novel.domain.UserDO;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Mapper;
/**
*
* @author xiongxy
* @email 1179705413@qq.com
* @date 2020-12-01 03:49:08
*/
@Mapper
public interface UserDao {
UserDO get(Long id);
List<UserDO> list(Map<String,Object> map);
int count(Map<String,Object> map);
int save(UserDO user);
int update(UserDO user);
int remove(Long id);
int batchRemove(Long[] ids);
List<Map<Object, Object>> tableSta(Date minDate);
}

View File

@ -0,0 +1,493 @@
package com.java2nb.novel.domain;
import java.io.Serializable;
import java.math.BigDecimal;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.java2nb.common.jsonserializer.LongToStringSerializer;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* 小说表
*
* @author xiongxy
* @email 1179705413@qq.com
* @date 2020-12-01 03:49:46
*/
public class BookDO implements Serializable {
private static final long serialVersionUID = 1L;
//主键
//java中的long能表示的范围比js中number大,也就意味着部分数值在js中存不下(变成不准确的值)
//所以通过序列化成字符串来解决
@JsonSerialize(using = LongToStringSerializer.class)
private Long id;
//作品方向0男频1女频'
private Integer workDirection;
//分类ID
private Integer catId;
//分类名
private String catName;
//子分类ID
private Integer catChildId;
//子分类名
private String catChildName;
//小说封面
private String picUrl;
//小说名
private String bookName;
//男主角姓名
private String heroName;
//女主角姓名
private String ladyName;
//作品风格0甜宠1虐恋2其他
private Integer bookStyle;
//作品标签
private String bookLabel;
//作者id
//java中的long能表示的范围比js中number大,也就意味着部分数值在js中存不下(变成不准确的值)
//所以通过序列化成字符串来解决
@JsonSerialize(using = LongToStringSerializer.class)
private Long authorId;
//作者名
private String authorName;
//书籍描述
private String bookDesc;
//评分,预留字段
private Float score;
//书籍状态0连载中1已完结
private Integer bookStatus;
//点击量
//java中的long能表示的范围比js中number大,也就意味着部分数值在js中存不下(变成不准确的值)
//所以通过序列化成字符串来解决
@JsonSerialize(using = LongToStringSerializer.class)
private Long visitCount;
//总字数
private Integer wordCount;
//评论数
private Integer commentCount;
//昨日订阅数
private Integer yesterdayBuy;
//最新目录ID
//java中的long能表示的范围比js中number大,也就意味着部分数值在js中存不下(变成不准确的值)
//所以通过序列化成字符串来解决
@JsonSerialize(using = LongToStringSerializer.class)
private Long lastIndexId;
//最新目录名
private String lastIndexName;
//最新目录更新时间
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date lastIndexUpdateTime;
//是否收费1收费0免费
private Integer isVip;
//状态0入库1上架
private Integer status;
//更新时间
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
//创建时间
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
//爬虫源站ID
private Integer crawlSourceId;
//抓取的源站小说ID
private String crawlBookId;
//最后一次的抓取时间
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date crawlLastTime;
//是否已停止更新0未停止1已停止
private Integer crawlIsStop;
/**
* 设置:主键
*/
public void setId(Long id) {
this.id = id;
}
/**
* 获取:主键
*/
public Long getId() {
return id;
}
/**
* 设置作品方向0男频1女频'
*/
public void setWorkDirection(Integer workDirection) {
this.workDirection = workDirection;
}
/**
* 获取作品方向0男频1女频'
*/
public Integer getWorkDirection() {
return workDirection;
}
/**
* 设置分类ID
*/
public void setCatId(Integer catId) {
this.catId = catId;
}
/**
* 获取分类ID
*/
public Integer getCatId() {
return catId;
}
/**
* 设置:分类名
*/
public void setCatName(String catName) {
this.catName = catName;
}
/**
* 获取:分类名
*/
public String getCatName() {
return catName;
}
/**
* 设置子分类ID
*/
public void setCatChildId(Integer catChildId) {
this.catChildId = catChildId;
}
/**
* 获取子分类ID
*/
public Integer getCatChildId() {
return catChildId;
}
/**
* 设置:子分类名
*/
public void setCatChildName(String catChildName) {
this.catChildName = catChildName;
}
/**
* 获取:子分类名
*/
public String getCatChildName() {
return catChildName;
}
/**
* 设置:小说封面
*/
public void setPicUrl(String picUrl) {
this.picUrl = picUrl;
}
/**
* 获取:小说封面
*/
public String getPicUrl() {
return picUrl;
}
/**
* 设置:小说名
*/
public void setBookName(String bookName) {
this.bookName = bookName;
}
/**
* 获取:小说名
*/
public String getBookName() {
return bookName;
}
/**
* 设置:男主角姓名
*/
public void setHeroName(String heroName) {
this.heroName = heroName;
}
/**
* 获取:男主角姓名
*/
public String getHeroName() {
return heroName;
}
/**
* 设置:女主角姓名
*/
public void setLadyName(String ladyName) {
this.ladyName = ladyName;
}
/**
* 获取:女主角姓名
*/
public String getLadyName() {
return ladyName;
}
/**
* 设置作品风格0甜宠1虐恋2其他
*/
public void setBookStyle(Integer bookStyle) {
this.bookStyle = bookStyle;
}
/**
* 获取作品风格0甜宠1虐恋2其他
*/
public Integer getBookStyle() {
return bookStyle;
}
/**
* 设置:作品标签
*/
public void setBookLabel(String bookLabel) {
this.bookLabel = bookLabel;
}
/**
* 获取:作品标签
*/
public String getBookLabel() {
return bookLabel;
}
/**
* 设置作者id
*/
public void setAuthorId(Long authorId) {
this.authorId = authorId;
}
/**
* 获取作者id
*/
public Long getAuthorId() {
return authorId;
}
/**
* 设置:作者名
*/
public void setAuthorName(String authorName) {
this.authorName = authorName;
}
/**
* 获取:作者名
*/
public String getAuthorName() {
return authorName;
}
/**
* 设置:书籍描述
*/
public void setBookDesc(String bookDesc) {
this.bookDesc = bookDesc;
}
/**
* 获取:书籍描述
*/
public String getBookDesc() {
return bookDesc;
}
/**
* 设置:评分,预留字段
*/
public void setScore(Float score) {
this.score = score;
}
/**
* 获取:评分,预留字段
*/
public Float getScore() {
return score;
}
/**
* 设置书籍状态0连载中1已完结
*/
public void setBookStatus(Integer bookStatus) {
this.bookStatus = bookStatus;
}
/**
* 获取书籍状态0连载中1已完结
*/
public Integer getBookStatus() {
return bookStatus;
}
/**
* 设置:点击量
*/
public void setVisitCount(Long visitCount) {
this.visitCount = visitCount;
}
/**
* 获取:点击量
*/
public Long getVisitCount() {
return visitCount;
}
/**
* 设置:总字数
*/
public void setWordCount(Integer wordCount) {
this.wordCount = wordCount;
}
/**
* 获取:总字数
*/
public Integer getWordCount() {
return wordCount;
}
/**
* 设置:评论数
*/
public void setCommentCount(Integer commentCount) {
this.commentCount = commentCount;
}
/**
* 获取:评论数
*/
public Integer getCommentCount() {
return commentCount;
}
/**
* 设置:昨日订阅数
*/
public void setYesterdayBuy(Integer yesterdayBuy) {
this.yesterdayBuy = yesterdayBuy;
}
/**
* 获取:昨日订阅数
*/
public Integer getYesterdayBuy() {
return yesterdayBuy;
}
/**
* 设置最新目录ID
*/
public void setLastIndexId(Long lastIndexId) {
this.lastIndexId = lastIndexId;
}
/**
* 获取最新目录ID
*/
public Long getLastIndexId() {
return lastIndexId;
}
/**
* 设置:最新目录名
*/
public void setLastIndexName(String lastIndexName) {
this.lastIndexName = lastIndexName;
}
/**
* 获取:最新目录名
*/
public String getLastIndexName() {
return lastIndexName;
}
/**
* 设置:最新目录更新时间
*/
public void setLastIndexUpdateTime(Date lastIndexUpdateTime) {
this.lastIndexUpdateTime = lastIndexUpdateTime;
}
/**
* 获取:最新目录更新时间
*/
public Date getLastIndexUpdateTime() {
return lastIndexUpdateTime;
}
/**
* 设置是否收费1收费0免费
*/
public void setIsVip(Integer isVip) {
this.isVip = isVip;
}
/**
* 获取是否收费1收费0免费
*/
public Integer getIsVip() {
return isVip;
}
/**
* 设置状态0入库1上架
*/
public void setStatus(Integer status) {
this.status = status;
}
/**
* 获取状态0入库1上架
*/
public Integer getStatus() {
return status;
}
/**
* 设置:更新时间
*/
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
/**
* 获取:更新时间
*/
public Date getUpdateTime() {
return updateTime;
}
/**
* 设置:创建时间
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* 获取:创建时间
*/
public Date getCreateTime() {
return createTime;
}
/**
* 设置爬虫源站ID
*/
public void setCrawlSourceId(Integer crawlSourceId) {
this.crawlSourceId = crawlSourceId;
}
/**
* 获取爬虫源站ID
*/
public Integer getCrawlSourceId() {
return crawlSourceId;
}
/**
* 设置抓取的源站小说ID
*/
public void setCrawlBookId(String crawlBookId) {
this.crawlBookId = crawlBookId;
}
/**
* 获取抓取的源站小说ID
*/
public String getCrawlBookId() {
return crawlBookId;
}
/**
* 设置:最后一次的抓取时间
*/
public void setCrawlLastTime(Date crawlLastTime) {
this.crawlLastTime = crawlLastTime;
}
/**
* 获取:最后一次的抓取时间
*/
public Date getCrawlLastTime() {
return crawlLastTime;
}
/**
* 设置是否已停止更新0未停止1已停止
*/
public void setCrawlIsStop(Integer crawlIsStop) {
this.crawlIsStop = crawlIsStop;
}
/**
* 获取是否已停止更新0未停止1已停止
*/
public Integer getCrawlIsStop() {
return crawlIsStop;
}
}

View File

@ -0,0 +1,166 @@
package com.java2nb.novel.domain;
import java.io.Serializable;
import java.math.BigDecimal;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.java2nb.common.jsonserializer.LongToStringSerializer;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* 充值订单
*
* @author xiongxy
* @email 1179705413@qq.com
* @date 2020-12-01 03:49:57
*/
public class PayDO implements Serializable {
private static final long serialVersionUID = 1L;
//主键
//java中的long能表示的范围比js中number大,也就意味着部分数值在js中存不下(变成不准确的值)
//所以通过序列化成字符串来解决
@JsonSerialize(using = LongToStringSerializer.class)
private Long id;
//保留
//java中的long能表示的范围比js中number大,也就意味着部分数值在js中存不下(变成不准确的值)
//所以通过序列化成字符串来解决
@JsonSerialize(using = LongToStringSerializer.class)
private Long outTradeNo;
//订单号
private String tradeNo;
//保留
private Integer payChannel;
//交易香蕉币
private Integer totalAmount;
//支付用户ID
//java中的long能表示的范围比js中number大,也就意味着部分数值在js中存不下(变成不准确的值)
//所以通过序列化成字符串来解决
@JsonSerialize(using = LongToStringSerializer.class)
private Long userId;
//支付状态0支付失败1支付成功2待支付
private Integer payStatus;
//创建时间
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
//更新时间
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
/**
* 设置:主键
*/
public void setId(Long id) {
this.id = id;
}
/**
* 获取:主键
*/
public Long getId() {
return id;
}
/**
* 设置:保留
*/
public void setOutTradeNo(Long outTradeNo) {
this.outTradeNo = outTradeNo;
}
/**
* 获取:保留
*/
public Long getOutTradeNo() {
return outTradeNo;
}
/**
* 设置:订单号
*/
public void setTradeNo(String tradeNo) {
this.tradeNo = tradeNo;
}
/**
* 获取:订单号
*/
public String getTradeNo() {
return tradeNo;
}
/**
* 设置:保留
*/
public void setPayChannel(Integer payChannel) {
this.payChannel = payChannel;
}
/**
* 获取:保留
*/
public Integer getPayChannel() {
return payChannel;
}
/**
* 设置:交易香蕉币
*/
public void setTotalAmount(Integer totalAmount) {
this.totalAmount = totalAmount;
}
/**
* 获取:交易香蕉币
*/
public Integer getTotalAmount() {
return totalAmount;
}
/**
* 设置支付用户ID
*/
public void setUserId(Long userId) {
this.userId = userId;
}
/**
* 获取支付用户ID
*/
public Long getUserId() {
return userId;
}
/**
* 设置支付状态0支付失败1支付成功2待支付
*/
public void setPayStatus(Integer payStatus) {
this.payStatus = payStatus;
}
/**
* 获取支付状态0支付失败1支付成功2待支付
*/
public Integer getPayStatus() {
return payStatus;
}
/**
* 设置:创建时间
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* 获取:创建时间
*/
public Date getCreateTime() {
return createTime;
}
/**
* 设置:更新时间
*/
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
/**
* 获取:更新时间
*/
public Date getUpdateTime() {
return updateTime;
}
}

View File

@ -0,0 +1,177 @@
package com.java2nb.novel.domain;
import java.io.Serializable;
import java.math.BigDecimal;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.java2nb.common.jsonserializer.LongToStringSerializer;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
*
*
* @author xiongxy
* @email 1179705413@qq.com
* @date 2020-12-01 03:49:08
*/
public class UserDO implements Serializable {
private static final long serialVersionUID = 1L;
//主键
//java中的long能表示的范围比js中number大,也就意味着部分数值在js中存不下(变成不准确的值)
//所以通过序列化成字符串来解决
@JsonSerialize(using = LongToStringSerializer.class)
private Long id;
//登录名
private String username;
//登录密码
private String password;
//昵称
private String nickName;
//用户头像
private String userPhoto;
//用户性别01
private Integer userSex;
//账户余额
//java中的long能表示的范围比js中number大,也就意味着部分数值在js中存不下(变成不准确的值)
//所以通过序列化成字符串来解决
@JsonSerialize(using = LongToStringSerializer.class)
private Long accountBalance;
//用户状态0正常
private Integer status;
//创建时间
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
//更新时间
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
/**
* 设置:主键
*/
public void setId(Long id) {
this.id = id;
}
/**
* 获取:主键
*/
public Long getId() {
return id;
}
/**
* 设置:登录名
*/
public void setUsername(String username) {
this.username = username;
}
/**
* 获取:登录名
*/
public String getUsername() {
return username;
}
/**
* 设置:登录密码
*/
public void setPassword(String password) {
this.password = password;
}
/**
* 获取:登录密码
*/
public String getPassword() {
return password;
}
/**
* 设置:昵称
*/
public void setNickName(String nickName) {
this.nickName = nickName;
}
/**
* 获取:昵称
*/
public String getNickName() {
return nickName;
}
/**
* 设置:用户头像
*/
public void setUserPhoto(String userPhoto) {
this.userPhoto = userPhoto;
}
/**
* 获取:用户头像
*/
public String getUserPhoto() {
return userPhoto;
}
/**
* 设置用户性别01
*/
public void setUserSex(Integer userSex) {
this.userSex = userSex;
}
/**
* 获取用户性别01
*/
public Integer getUserSex() {
return userSex;
}
/**
* 设置:账户余额
*/
public void setAccountBalance(Long accountBalance) {
this.accountBalance = accountBalance;
}
/**
* 获取:账户余额
*/
public Long getAccountBalance() {
return accountBalance;
}
/**
* 设置用户状态0正常
*/
public void setStatus(Integer status) {
this.status = status;
}
/**
* 获取用户状态0正常
*/
public Integer getStatus() {
return status;
}
/**
* 设置:创建时间
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* 获取:创建时间
*/
public Date getCreateTime() {
return createTime;
}
/**
* 设置:更新时间
*/
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
/**
* 获取:更新时间
*/
public Date getUpdateTime() {
return updateTime;
}
}

View File

@ -2,6 +2,7 @@ package com.java2nb.novel.service;
import com.java2nb.novel.domain.AuthorDO;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -27,4 +28,6 @@ public interface AuthorService {
int remove(Long id);
int batchRemove(Long[] ids);
Map<Object, Object> tableSta(Date minDate);
}

View File

@ -0,0 +1,33 @@
package com.java2nb.novel.service;
import com.java2nb.novel.domain.BookDO;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 小说表
*
* @author xiongxy
* @email 1179705413@qq.com
* @date 2020-12-01 03:49:46
*/
public interface BookService {
BookDO get(Long id);
List<BookDO> list(Map<String, Object> map);
int count(Map<String, Object> map);
int save(BookDO book);
int update(BookDO book);
int remove(Long id);
int batchRemove(Long[] ids);
Map<Object, Object> tableSta(Date minDate);
}

View File

@ -0,0 +1,33 @@
package com.java2nb.novel.service;
import com.java2nb.novel.domain.PayDO;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 充值订单
*
* @author xiongxy
* @email 1179705413@qq.com
* @date 2020-12-01 03:49:57
*/
public interface PayService {
PayDO get(Long id);
List<PayDO> list(Map<String, Object> map);
int count(Map<String, Object> map);
int save(PayDO pay);
int update(PayDO pay);
int remove(Long id);
int batchRemove(Long[] ids);
Map<Object, Object> tableSta(Date minDate);
}

View File

@ -0,0 +1,33 @@
package com.java2nb.novel.service;
import com.java2nb.novel.domain.UserDO;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
*
*
* @author xiongxy
* @email 1179705413@qq.com
* @date 2020-12-01 03:49:08
*/
public interface UserService {
UserDO get(Long id);
List<UserDO> list(Map<String, Object> map);
int count(Map<String, Object> map);
int save(UserDO user);
int update(UserDO user);
int remove(Long id);
int batchRemove(Long[] ids);
Map<Object, Object> tableSta(Date minDate);
}

View File

@ -3,8 +3,10 @@ package com.java2nb.novel.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.java2nb.novel.dao.AuthorDao;
import com.java2nb.novel.domain.AuthorDO;
@ -51,5 +53,14 @@ public class AuthorServiceImpl implements AuthorService {
public int batchRemove(Long[] ids){
return authorDao.batchRemove(ids);
}
@Override
public Map<Object, Object> tableSta(Date minDate) {
List<Map<Object, Object>> maps = authorDao.tableSta(minDate);
return maps.stream().collect(Collectors.toMap(x -> x.get("staDate"), x -> x.get("authorCount")));
}
}

View File

@ -0,0 +1,65 @@
package com.java2nb.novel.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.java2nb.novel.dao.BookDao;
import com.java2nb.novel.domain.BookDO;
import com.java2nb.novel.service.BookService;
@Service
public class BookServiceImpl implements BookService {
@Autowired
private BookDao bookDao;
@Override
public BookDO get(Long id){
return bookDao.get(id);
}
@Override
public List<BookDO> list(Map<String, Object> map){
return bookDao.list(map);
}
@Override
public int count(Map<String, Object> map){
return bookDao.count(map);
}
@Override
public int save(BookDO book){
return bookDao.save(book);
}
@Override
public int update(BookDO book){
return bookDao.update(book);
}
@Override
public int remove(Long id){
return bookDao.remove(id);
}
@Override
public int batchRemove(Long[] ids){
return bookDao.batchRemove(ids);
}
@Override
public Map<Object, Object> tableSta(Date minDate) {
List<Map<Object, Object>> maps = bookDao.tableSta(minDate);
return maps.stream().collect(Collectors.toMap(x -> x.get("staDate"), x -> x.get("bookCount")));
}
}

View File

@ -0,0 +1,66 @@
package com.java2nb.novel.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.java2nb.novel.dao.PayDao;
import com.java2nb.novel.domain.PayDO;
import com.java2nb.novel.service.PayService;
@Service
public class PayServiceImpl implements PayService {
@Autowired
private PayDao payDao;
@Override
public PayDO get(Long id){
return payDao.get(id);
}
@Override
public List<PayDO> list(Map<String, Object> map){
return payDao.list(map);
}
@Override
public int count(Map<String, Object> map){
return payDao.count(map);
}
@Override
public int save(PayDO pay){
return payDao.save(pay);
}
@Override
public int update(PayDO pay){
return payDao.update(pay);
}
@Override
public int remove(Long id){
return payDao.remove(id);
}
@Override
public int batchRemove(Long[] ids){
return payDao.batchRemove(ids);
}
@Override
public Map<Object, Object> tableSta(Date minDate) {
List<Map<Object, Object>> maps = payDao.tableSta(minDate);
return maps.stream().collect(Collectors.toMap(x -> x.get("staDate"), x -> x.get("orderCount")));
}
}

View File

@ -0,0 +1,65 @@
package com.java2nb.novel.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.java2nb.novel.dao.UserDao;
import com.java2nb.novel.domain.UserDO;
import com.java2nb.novel.service.UserService;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public UserDO get(Long id){
return userDao.get(id);
}
@Override
public List<UserDO> list(Map<String, Object> map){
return userDao.list(map);
}
@Override
public int count(Map<String, Object> map){
return userDao.count(map);
}
@Override
public int save(UserDO user){
return userDao.save(user);
}
@Override
public int update(UserDO user){
return userDao.update(user);
}
@Override
public int remove(Long id){
return userDao.remove(id);
}
@Override
public int batchRemove(Long[] ids){
return userDao.batchRemove(ids);
}
@Override
public Map<Object, Object> tableSta(Date minDate) {
List<Map<Object, Object>> maps = userDao.tableSta(minDate);
return maps.stream().collect(Collectors.toMap(x -> x.get("staDate"), x -> x.get("userCount")));
}
}