Merge remote-tracking branch 'origin/master'
# Conflicts: # maku-server/src/main/java/net/maku/maku/service/impl/TUserServiceImpl.java
This commit is contained in:
commit
03e3825dc0
114
README.md
114
README.md
|
@ -1,70 +1,60 @@
|
|||
## 项目文档
|
||||
|
||||
数据库设计文档:https://kdocs.cn/l/caIBoD7HcEBL
|
||||
|
||||
API接口设计文档:https://apifox.com/apidoc/shared-ff0060f8-8bb5-40c5-87d2-f8a29ee5ecd5
|
||||
|
||||
API接口加入文档:https://app.apifox.com/invite/project?token=Xp3BUXBEYQ34hiKcFX-ub
|
||||
|
||||
## 项目说明
|
||||
|
||||
- maku-boot 是采用SpringBoot3.3、SpringSecurity6.3、Mybatis-Plus、Flowable7.0、Vue3、Element-plus等技术开发的低代码开发平台,旨在为开发者提供一个简洁、高效、可扩展的低代码开发平台。
|
||||
- 使用门槛极低,支持国密加密、达梦数据库等,符合信创需求的低代码开发平台。
|
||||
- 采用组件模式,扩展不同的业务功能,可以很方便的实现各种业务需求,且不会导致系统臃肿,若想使用某个组件,按需引入即可,反之亦然。
|
||||
- 支持Online在线表单开发,支持单表、树表、一对一、一对多表单,可快速开发业务,无需部署及重启服务等优点。
|
||||
- 支持多种数据库,包括MySQL、PostgreSQL、达梦等,可灵活切换。
|
||||
- 支持Flowable7工作流,包括流程设计、自定义表单、在线Online表单、会签、或签等。
|
||||
- 支持多种登录方式,包括账号密码、短信验证码、企业微信、钉钉、飞书、微信等,可灵活选择。
|
||||
- 支持多租户模式,可实现不同业务系统之间的隔离,能同时支持字段隔离、数据源隔离方式,满足对多租户的全部需求。
|
||||
### 书籍管理系统
|
||||
角色 用户
|
||||
书本管理员(账号与密码你们自己创建 管理员没有指定的创建入口 但客户要有注册功能)
|
||||
|
||||
书本录入管理员
|
||||
功能:
|
||||
书本的上架(书本的基本信息 封面的上传 书本币的定价 库存)
|
||||
用户的管理 (基本的增删改查 可以禁止用户登录)
|
||||
|
||||
|
||||
书本商城网页
|
||||
商城首页
|
||||
功能点:
|
||||
1、可以根据书名搜索图书
|
||||
2、可以查看图书的详情界面
|
||||
3、可以查看评论【评论不需要回复功能】)
|
||||
4、可以收藏、购买、加入购物车的图书
|
||||
|
||||
用户个人中心
|
||||
功能点:
|
||||
|
||||
1、基本信息
|
||||
|
||||
2、头像
|
||||
|
||||
3、书本币余额【用来购买的图书】
|
||||
|
||||
4、我购买的图书列表
|
||||
|
||||
5、我收藏的图书列表
|
||||
|
||||
6、我的购物车
|
||||
|
||||
7、充值书本币(不需要接入真实的支付 模拟充值就ok)
|
||||
|
||||
注:没有登录,不可以收藏、加入购物车、评论、以及购买。
|
||||
|
||||
|
||||
要求:
|
||||
1、使用redis作为缓存,
|
||||
|
||||
2、不强制使用security,但是前端必须要有token,后端可以统一用拦截器拦截做校验是否登录
|
||||
|
||||
|
||||
|
||||
- 开发文档:https://maku.net/docs/maku-boot
|
||||
- 演示环境:https://demo.maku.net/maku-boot
|
||||
- 企业版:https://maku.net/price
|
||||
|
||||
## 微信交流群
|
||||
|
||||
为了更好的交流,我们新提供了微信交流群,需扫描下面的二维码,关注公众号,回复【加群】,根据提示信息,作者会拉你进群的,感谢配合!
|
||||
|
||||

|
||||
|
||||
|
||||
## 架构图
|
||||
|
||||

|
||||
|
||||
## 效果图
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td><img src="images/1.png"/></td>
|
||||
<td><img src="images/2.png"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="images/3.png"/></td>
|
||||
<td><img src="images/4.png"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="images/5.png"/></td>
|
||||
<td><img src="images/6.png"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="images/7.png"/></td>
|
||||
<td><img src="images/8.png"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="images/9.png"/></td>
|
||||
<td><img src="images/10.png"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="images/11.png"/></td>
|
||||
<td><img src="images/12.png"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="images/13.png"/></td>
|
||||
<td><img src="images/14.png"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="images/15.png"/></td>
|
||||
<td><img src="images/16.png"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="images/17.png"/></td>
|
||||
<td><img src="images/18.png"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="images/19.png"/></td>
|
||||
<td><img src="images/20.png"/></td>
|
||||
</tr>
|
||||
</table>
|
|
@ -18,4 +18,8 @@ import java.util.Date;
|
|||
@EqualsAndHashCode(callSuper = false)
|
||||
@Schema(description = "查询")
|
||||
public class TBookCollectionQuery extends Query {
|
||||
@Schema(description = "用户id")
|
||||
private Integer userId;
|
||||
@Schema(description = "书本id")
|
||||
private Integer bookId;
|
||||
}
|
|
@ -18,4 +18,10 @@ import java.util.Date;
|
|||
@EqualsAndHashCode(callSuper = false)
|
||||
@Schema(description = "查询")
|
||||
public class TBookCommentQuery extends Query {
|
||||
@Schema(description = "用户id")
|
||||
private Integer userId;
|
||||
@Schema(description = "书籍id")
|
||||
private Integer bookId;
|
||||
@Schema(description = "用户名")
|
||||
private String userName;
|
||||
}
|
|
@ -19,4 +19,6 @@ import java.util.Date;
|
|||
@EqualsAndHashCode(callSuper = false)
|
||||
@Schema(description = "查询")
|
||||
public class TBookQuery extends Query {
|
||||
private String author;
|
||||
private String bookName;
|
||||
}
|
|
@ -18,4 +18,8 @@ import java.math.BigDecimal;
|
|||
@EqualsAndHashCode(callSuper = false)
|
||||
@Schema(description = "查询")
|
||||
public class TPurchaseDetailsQuery extends Query {
|
||||
@Schema(description = "订单编号")
|
||||
private Integer purchaseId;
|
||||
@Schema(description = "书本编号")
|
||||
private Integer bookId;
|
||||
}
|
|
@ -19,4 +19,6 @@ import java.util.Date;
|
|||
@EqualsAndHashCode(callSuper = false)
|
||||
@Schema(description = "查询")
|
||||
public class TPurchaseQuery extends Query {
|
||||
private Integer id;
|
||||
private BigDecimal totalPrice;
|
||||
}
|
|
@ -18,4 +18,6 @@ import java.util.Date;
|
|||
@EqualsAndHashCode(callSuper = false)
|
||||
@Schema(description = "查询")
|
||||
public class TShoppingTrolleyQuery extends Query {
|
||||
private Integer userId;
|
||||
private Integer bookId;
|
||||
}
|
|
@ -19,4 +19,6 @@ import java.util.Date;
|
|||
@EqualsAndHashCode(callSuper = false)
|
||||
@Schema(description = "查询")
|
||||
public class TUserQuery extends Query {
|
||||
private String username;
|
||||
private Integer status;
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
package net.maku.maku.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
|
@ -36,7 +37,8 @@ public class TBookCollectionServiceImpl extends BaseServiceImpl<TBookCollectionD
|
|||
|
||||
private LambdaQueryWrapper<TBookCollectionEntity> getWrapper(TBookCollectionQuery query){
|
||||
LambdaQueryWrapper<TBookCollectionEntity> wrapper = Wrappers.lambdaQuery();
|
||||
|
||||
wrapper.eq(ObjectUtils.isNotNull(query.getUserId()),TBookCollectionEntity::getUserId,query.getUserId());
|
||||
wrapper.eq(ObjectUtils.isNotNull(query.getBookId()),TBookCollectionEntity::getBookId,query.getBookId());
|
||||
return wrapper;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package net.maku.maku.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
|
@ -36,6 +37,8 @@ public class TBookCommentServiceImpl extends BaseServiceImpl<TBookCommentDao, TB
|
|||
|
||||
private LambdaQueryWrapper<TBookCommentEntity> getWrapper(TBookCommentQuery query){
|
||||
LambdaQueryWrapper<TBookCommentEntity> wrapper = Wrappers.lambdaQuery();
|
||||
wrapper.eq(ObjectUtil.isNotNull(query.getUserId()), TBookCommentEntity::getUserId, query.getUserId());
|
||||
wrapper.eq(ObjectUtil.isNotNull(query.getBookId()), TBookCommentEntity::getBookId, query.getBookId());
|
||||
|
||||
return wrapper;
|
||||
}
|
||||
|
|
|
@ -36,7 +36,8 @@ public class TBookServiceImpl extends BaseServiceImpl<TBookDao, TBookEntity> imp
|
|||
|
||||
private LambdaQueryWrapper<TBookEntity> getWrapper(TBookQuery query){
|
||||
LambdaQueryWrapper<TBookEntity> wrapper = Wrappers.lambdaQuery();
|
||||
|
||||
wrapper.eq(TBookEntity::getBookName, query.getBookName());
|
||||
wrapper.eq(TBookEntity::getAuthor, query.getAuthor());
|
||||
return wrapper;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package net.maku.maku.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
|
@ -36,7 +37,8 @@ public class TPurchaseDetailsServiceImpl extends BaseServiceImpl<TPurchaseDetail
|
|||
|
||||
private LambdaQueryWrapper<TPurchaseDetailsEntity> getWrapper(TPurchaseDetailsQuery query){
|
||||
LambdaQueryWrapper<TPurchaseDetailsEntity> wrapper = Wrappers.lambdaQuery();
|
||||
|
||||
wrapper.eq(ObjectUtil.isNotNull(query.getPurchaseId()),TPurchaseDetailsEntity::getPurchaseId,query.getPurchaseId());
|
||||
wrapper.eq(ObjectUtil.isNotNull(query.getBookId()),TPurchaseDetailsEntity::getBookId,query.getBookId());
|
||||
return wrapper;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package net.maku.maku.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
|
@ -36,7 +37,8 @@ public class TPurchaseServiceImpl extends BaseServiceImpl<TPurchaseDao, TPurchas
|
|||
|
||||
private LambdaQueryWrapper<TPurchaseEntity> getWrapper(TPurchaseQuery query){
|
||||
LambdaQueryWrapper<TPurchaseEntity> wrapper = Wrappers.lambdaQuery();
|
||||
|
||||
wrapper.eq(ObjectUtils.isNotNull(query.getId()),TPurchaseEntity::getId,query.getId());
|
||||
wrapper.eq(ObjectUtils.isNotNull(query.getTotalPrice()),TPurchaseEntity::getTotalPrice, query.getTotalPrice());
|
||||
return wrapper;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package net.maku.maku.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
|
@ -36,7 +37,8 @@ public class TShoppingTrolleyServiceImpl extends BaseServiceImpl<TShoppingTrolle
|
|||
|
||||
private LambdaQueryWrapper<TShoppingTrolleyEntity> getWrapper(TShoppingTrolleyQuery query){
|
||||
LambdaQueryWrapper<TShoppingTrolleyEntity> wrapper = Wrappers.lambdaQuery();
|
||||
|
||||
wrapper.eq(ObjectUtils.isNotNull(query.getUserId()), TShoppingTrolleyEntity::getUserId,query.getUserId());
|
||||
wrapper.eq(ObjectUtils.isNotNull(query.getBookId()),TShoppingTrolleyEntity::getBookId, query.getBookId());
|
||||
return wrapper;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package net.maku.maku.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
|
@ -17,7 +16,6 @@ import org.springframework.stereotype.Service;
|
|||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -29,7 +27,6 @@ import java.util.UUID;
|
|||
@AllArgsConstructor
|
||||
public class TUserServiceImpl extends BaseServiceImpl<TUserDao, TUserEntity> implements TUserService {
|
||||
|
||||
|
||||
@Override
|
||||
public PageResult<TUserVO> page(TUserQuery query) {
|
||||
IPage<TUserEntity> page = baseMapper.selectPage(getPage(query), getWrapper(query));
|
||||
|
@ -63,28 +60,4 @@ public class TUserServiceImpl extends BaseServiceImpl<TUserDao, TUserEntity> imp
|
|||
removeByIds(idList);
|
||||
}
|
||||
|
||||
public TUserEntity login(TUserEntity entity) {
|
||||
LambdaQueryWrapper<TUserEntity> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(TUserEntity::getUsername, entity.getUsername());
|
||||
wrapper.eq(TUserEntity::getPassword, entity.getPassword());
|
||||
TUserEntity user = getOne(wrapper);
|
||||
if (ObjectUtils.isNotNull(user)){
|
||||
UUID uuid = UUID.randomUUID();
|
||||
user.setAvatar(uuid.toString());
|
||||
updateById(user);
|
||||
return user;
|
||||
}else{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public TUserVO updateUser(TUserVO vo) {
|
||||
TUserEntity entity =new TUserEntity();
|
||||
entity.setUsername(vo.getUsername());
|
||||
entity.setPassword(vo.getPassword());
|
||||
updateById(entity);
|
||||
return vo;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user