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

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

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)
五,系统的核心代码
**
* 用户控制器,小孟微: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<PageResult<User>> page(UserParam param) {
return success(userService.pageRel(param));
}
@OperationLog
@ApiOperation("分页查询用户")
@GetMapping("/commonPage")
public ApiResult<PageResult<User>> commonPage(UserParam param) {
return success(userService.pageCommonRel(param));
}
@OperationLog
@ApiOperation("查询全部用户")
@GetMapping()
public ApiResult<List<User>> list(UserParam param) {
return success(userService.listRel(param));
}
@GetMapping("/listRelForEchart")
public ApiResult<List<UserVo>> listRelForEchart(UserParam param) {
List<UserVo> list = userService.listRelForEchart(param);
return success(list);
}
@GetMapping("/readRecordlistRelForEchart")
public ApiResult<List<UserVo>> readRecordlistRelForEchart(UserParam param) {
List<UserVo> list = userService.readRecordlistRelForEchart(param);
return success(list);
}
@GetMapping("/starlistRelForEchart")
public ApiResult<List<UserVo>> starlistRelForEchart(UserParam param) {
List<UserVo> list = userService.starlistRelForEchart(param);
return success(list);
}
@GetMapping("/statuslistRelForEchart")
public ApiResult<List<UserVo>> statuslistRelForEchart(UserParam param) {
List<UserVo> list = userService.statuslistRelForEchart(param);
return success(list);
}
@GetMapping("/annolistRelForEchart")
public ApiResult<BarVo> annolistRelForEchart(UserParam param) {
List<UserVo> list = userService.annolistRelForEchart(param);
BarVo barVo = new BarVo();
List<String> xList = new ArrayList<String>();
List<Integer> yList = new ArrayList<Integer>();
for(UserVo li : list) {
xList.add(li.getName());
yList.add(li.getValue());
}
barVo.setName(xList);
barVo.setValue(yList);
return success(barVo);
}
@GetMapping("/orderlistRelForEchart")
public ApiResult<BarVo> orderlistRelForEchart(UserParam param) {
List<UserVo> list = userService.orderlistRelForEchart(param);
BarVo barVo = new BarVo();
List<String> xList = new ArrayList<String>();
List<Integer> yList = new ArrayList<Integer>();
List<String> dates = generateDay30();
for(String date : dates) {
List<String> already = new ArrayList<String>();
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 ApiResult<BarVo> orderlistRelMonthForEchart(UserParam param) {
List<UserVo> list = userService.orderlistRelMonthForEchart(param);
BarVo barVo = new BarVo();
List<String> xList = new ArrayList<String>();
List<Integer> yList = new ArrayList<Integer>();
List<String> dates = generateMonth12();
for(String date : dates) {
List<String> already = new ArrayList<String>();
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 ApiResult<BarVo> ebookOrderlistRelForEchart(UserParam param) {
List<UserVo> list = userService.ebookOrderlistRelForEchart(param);
BarVo barVo = new BarVo();
List<String> xList = new ArrayList<String>();
List<Integer> yList = new ArrayList<Integer>();
List<String> dates = generateDay30();
for(String date : dates) {
List<String> already = new ArrayList<String>();
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 ApiResult<BarVo> ebookOrderlistRelMonthForEchart(UserParam param) {
List<UserVo> list = userService.ebookOrderlistRelMonthForEchart(param);
BarVo barVo = new BarVo();
List<String> xList = new ArrayList<String>();
List<Integer> yList = new ArrayList<Integer>();
List<String> dates = generateMonth12();
for(String date : dates) {
List<String> already = new ArrayList<String>();
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);
}
小孟的使命就是成立一家专业的软件开发公司,协助中小企业提高工作的效率、提高获客量、提高收入。
希望大家多多点赞、转发、在看,这是对我最大的鼓励 和支持。图片我才有动力去开源更多优质的项目。
我是程序员小孟,欢迎关注我,我会更新更多的项目和教程。

















暂无评论内容