摘要:本项是小说阅读小程序和图书销售小程序,同时可以在线支付,通过优惠券可以促进销售。同时可以在线申请作者,用户可以在线去分享小说,分享后如果有其他人购买小说,自己会获得收益。作者的收益比普通的用户收益高。
你好,我程序员小孟。
不上班,全职搞私活,专业开发,是一种什么体验?
比上班的时间长多了,我每天工作超过12个小时,但是感觉不到累。主要是少了很多扯皮,原来和产品经理扯皮,和项目主管扯皮。
现在我追求简单,只要我们把东西做好,服务好客户,其他的都可以忽略。
有的员工上班划水,划水就划水呗,按时交付,项目按时上线就行。
现在的UI、开发全是根据客户的需求定制的。
前期因为审核资质的问题,我们也帮客户积极弄各种渠道和办法,帮助审核通过,目前小程序已经上线。
备注:需要开发
本项是小说阅读小程序和图书销售小程序,同时可以在线支付,通过优惠券可以促进销售。同时可以在线申请作者,用户可以在线去分享小说,分享后如果有其他人购买小说,自己会获得收益。作者的收益比普通的用户收益高。
为了获得更好的体验,观看的时候可以对小说进行相关的设置。例如背景设置、字体设置。
同时管理员可以对小程序端所有的信息进行管理。
同行比较:番茄小程序、七猫。
技术栈:springboot+vue+mysql+uniapp+redis+mybaits-plus

添加图片注释,不超过 140 字(可选)
用户端:
用户:微信登录,openid,昵称,头像,创建时间
实体图书信息展示:封面图、名字、图书简介(图文c),可以在线购买或者加入购物车
实体图书分类:名字
小说信息展示:封面图、标题、作者、简介、章节;点击开始阅读的按钮,直接从最开始阅读,也可以点击章节,从章节月度。屏幕左滑可以进入下一页,屏幕右滑可以进入上一页。
小说分为免费阅读和付费的阅读,付费阅读的可以免费看一部分。
小说分类:名字
在线加入购物车:将选择的实体图书加入购物车
优惠券:在线领取优惠券,购买小说或者实体书的时候可以使用
积分使用:每天签到可以获得20积分,每天可以签到一次,100积分可以抵一元,购买小说或者购买图书的时候均可使用。可以在我的积分详情中查询我的积分总数和签到日期信息。
微信支付:购买图书或者小说支付的时候,均可用微信支付
在线申请成为作者:后台进行审核,成功后,即可成为作者。管理员审核通过后,名字旁边的状态改为作者。
电子图书分享:点击电子图书分享,会生成分享的图片,然后分享给其他的微信用户,如果有客户通过分享进去小程序付费 那么分享的人会得到收益。
普通用户分享的收益是10%。
作者分享的收益是20%。
消息查看:可以查看系统的消息。我的信息里面
小说阅读器:可以查看一系列的设置,(翻页、字体调节、背景设置)、语音播放、评分系统、读书笔记、标注(有问题)、离线下载、阅读统计(时长、页数)、阅读记录。
我的信息查看:我的个人信息查看、我的读书笔记,我的阅读时长、我的阅读记录
管理员端:
用户管理:用户的信息查看,包括用户的昵称,可以进行查询或者删除,提供分页查询
实体图书管理:包括图书的增删改查,提供分页查询,可以按照图书的名字查询,字段见小程序端。
实体图书分类查询:对图书的名字进行增删改查
优惠券管理:包括优惠券的增删改查,可以在线添加满多少减多少
图书订单的管理:图书的订单管理,字段包括图书订单编号(当前时期+三位随机数)、图书名字、购买人、购买日期、价格、数量。
可以点击在线发货,点击发货弹出运单号,加快递的类型(中通、申通、顺丰),可以在线填写
小说管理:填写小说的详情,可以分为免费小说和付费小说,付费的小说可以设置免费多少字,看其他的再进行付费。
小说分类管理:小说分类的增删改查,包括小说的名字的添加。
积分管理:可以对用户的积分进行管理。
消息管理:在线发布全部的消息,用户在前台点击消息,可以进行查看。包括消息的标题、内容。
作者审核:在线进行作者的审核,同意或者拒绝
分享收益管理:在线查看分享的具体收益,包括用户名字,类别(用户还是作者),金额、订单、日期
签到管理:查询用户的签到情况
数据统计(echart图):统计用户量、图书订单量、小说订单量
小程序端的采用的是uniapp开发,后端采用的是springboot,数据库采用的是mysql, 缓存采用的是redis,持久化采用的mybaits。








** * 用户控制器,小孟微:fly996868 */@Api(tags = "用户管理")@RestController@RequestMapping("/system/user")public class UserController extends BaseController { @Resource private UserService userService; @Resource private RoleService roleService; @Resource private DictionaryDataService dictionaryDataService; @OperationLog @ApiOperation("分页查询用户") @GetMapping("/page") public ApiResult> page(UserParam param) { return success(userService.pageRel(param)); } @OperationLog @ApiOperation("分页查询用户") @GetMapping("/commonPage") public ApiResult> commonPage(UserParam param) { return success(userService.pageCommonRel(param)); } @OperationLog @ApiOperation("查询全部用户") @GetMapping public ApiResult> list(UserParam param) { return success(userService.listRel(param)); } @GetMapping("/listRelForEchart") public ApiResult> listRelForEchart(UserParam param) { Listlist = userService.listRelForEchart(param); return success(list); } @GetMapping("/readRecordlistRelForEchart") public ApiResult> readRecordlistRelForEchart(UserParam param) { Listlist = userService.readRecordlistRelForEchart(param); return success(list); } @GetMapping("/starlistRelForEchart") public ApiResult> starlistRelForEchart(UserParam param) { Listlist = userService.starlistRelForEchart(param); return success(list); } @GetMapping("/statuslistRelForEchart") public ApiResult> statuslistRelForEchart(UserParam param) { Listlist = userService.statuslistRelForEchart(param); return success(list); } @GetMapping("/annolistRelForEchart") public ApiResultannolistRelForEchart(UserParam param) { Listlist = userService.annolistRelForEchart(param); BarVo barVo = new BarVo; List; for(UserVo li : list) { xList.add(li.getName); yList.add(li.getValue); } barVo.setName(xList); barVo.setValue(yList); return success(barVo); } @GetMapping("/orderlistRelForEchart") public ApiResultorderlistRelForEchart(UserParam param) { Listlist = userService.orderlistRelForEchart(param); BarVo barVo = new BarVo; Listalready = new ArrayList; for(UserVo li : list) { if(li.getName.equals(date)) { xList.add(date); yList.add(li.getValue); already.add(li.getName); break; } } if(already.size==0){ xList.add(date); yList.add(0); } } barVo.setName(xList); barVo.setValue(yList); return success(barVo); } @GetMapping("/orderlistRelMonthForEchart") public ApiResultorderlistRelMonthForEchart(UserParam param) { Listlist = userService.orderlistRelMonthForEchart(param); BarVo barVo = new BarVo; List; for(UserVo li : list) { if(li.getName.equals(date)) { xList.add(date); yList.add(li.getValue); already.add(li.getName); break; } } if(already.size==0){ xList.add(date); yList.add(0); } } barVo.setName(xList); barVo.setValue(yList); return success(barVo); } @GetMapping("/ebookOrderlistRelForEchart") public ApiResultebookOrderlistRelForEchart(UserParam param) { Listlist = userService.ebookOrderlistRelForEchart(param); BarVo barVo = new BarVo; List; for(UserVo li : list) { if(li.getName.equals(date)) { xList.add(date); yList.add(li.getValue); already.add(li.getName); break; } } if(already.size==0){ xList.add(date); yList.add(0); } } barVo.setName(xList); barVo.setValue(yList); return success(barVo); } @GetMapping("/ebookOrderlistRelMonthForEchart") public ApiResultebookOrderlistRelMonthForEchart(UserParam param) { Listlist = userService.ebookOrderlistRelMonthForEchart(param); BarVo barVo = new BarVo; List; for(UserVo li : list) { if(li.getName.equals(date)) { xList.add(date); yList.add(li.getValue); already.add(li.getName); break; } } if(already.size==0){ xList.add(date); yList.add(0); } } barVo.setName(xList); barVo.setValue(yList); return success(barVo); }小孟的使命就是成立一家专业的软件开发公司,帮助中小企业提高工作的效率、提高获客量、提高收入。
希望大家多多点赞、转发、在看,这是对我最大的鼓励 和支持。图片我才有动力去开源更多优质的项目。
来源:程序员springmeng一点号
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!