博主介绍:✌全网粉丝4W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战、定制、远程,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌
博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+MySQL+Vue等前后端分离项目,可以在左边的分类专栏找到更多项目。《Uniapp项目案例》有几个有uniapp教程,企业实战开发。《微服务实战》专栏是本人的实战经验总结,《Spring家族及微服务系列》专注Spring、SpringMVC、SpringBoot、SpringCloud系列、Nacos等源码解读、热门面试题、架构设计等。除此之外还有不少文章等你来细细品味,更多惊喜等着你哦
🍅开源项目免费哦:点击这里克隆或者下载,点击star(star越多维护动力越多) 🍅
🍅文末获取联系🍅精彩专栏推荐订阅👇🏻👇🏻 不然下次找不到哟
Java项目案例《100套》
https://blog.csdn.net/qq_57756904/category_12173599.html
uniapp小程序《100套》
目录
六、uniapp教程(需求分析、各模块及其节点文档、各模块案例)另外一个项目
一、前言
1、 项目的背景和意义
随着人们生活水平的提高,对物质要求也越来越高。人们网购的消费也逐年增长,所以电子商务发展十分迅速,网上商城应运而生,为人们的网上购物提供了好的平台。电子商城,跟在线购物有关。它是一个javaweb项目,为了增加用户体验,优化了前台页面,首页非常美观。
纵观当下世界,科学技术日新月异,信息技术节节攀高,经济活动也越发高涨。一方面,信息科技迅猛发展带来了信息时代的兴起,其中互联网技术自出现以来便吸引了全球人类的目光,深刻地变革了人类的生存及生活方式;而另一方面,经济活动的快速发展也对安全和便利提出了更高、更为严苛的要求。商业经济活动与互联网技术由此就慢慢结合起来,一种全新的、基于互联网的新型经济模式应运而生,即电子商务。经过一段时间的发展,电子商务逐步融入到每个人的生活,改变了市场的商务模式,并且在世界经济发展过程中发挥着举足轻重的作用。
电子商务是一种崭新的商业模式。企业利用前沿信息技术,将传统受制于时空的商务活动转变为跨越时空的虚拟交易,是传统商务经济活动的电子化与信息化。联合国经济合作与发展组织对电子商务是这样界定的:用电子化手段来从事商业活动,主要通过电子的数据处理和信息技术,例如文本、声音和图像等进行数据传输。而美国政府对电子商务的定义更加简单明了,电子商务是基于互联网进行的各项商务活动,其中商务活动包括广告、交易、支付、服务等,全球电子商务通达世界上的各个国家。自 1994 年亚马逊的成立开始,电子商务的规模壮大超出想象。发展速度已经把与商业相关其他领域甩在身后,由此而生的新业态和新模式无形中也推动了许多其他领域的转型与升级,目前是现代服务经济体系的先导性产业之一。电子商务包含许多商业模式,例如B2B,B2C,C2C,C2B,O2O,G2B 等模式。其中最典型和发展最快的是 B2C 商业模式,即商家与客户模式。在 B2C 的商业模式下,商家通过建立在线网络购物平台为消费者提供服务,这不仅打破时空界限,还提高了交易效率并降低商家的销售成本。近年来,除了一直领跑的天猫之外,京东商城、苏宁易购、国美在线等国内其他 B2C 电商平台也在稳步前进,并占据了很大一部分市场份额。历经多年的发展积淀,全球电子商务正在由开始的 1.0 时代快速地进入电子商务2.0 时代。这一新的 2.0 时代在电子商务产业的增长方向、地区结构、创新驱动力以及产业边界等方面也都具备新的特征。所以在这一新的发展时期,对于 B2C 电子商务的研究就显得尤为重要。
据顶级数据统计网站Statista所发布的调查统计数据显示,预计到2020年,全球
零售电子商务交易额将超过4万亿美元,这个数字是2014年全年零售电子商务交易额的
3倍,由此可以看出电子商务增长之快。
作为电子商务最瞩目的商业模式之一,B2C 电子商务近年来的发展尤其迅速,预计到
2018 年世界B2C电子商务交易额将达到2.356万亿美元,如图1.2所示。这一数字也比2012年翻了一倍还多,清晰地表明B2C电子商务在电子商务领域占的比重与整体的发展速度是十分惊人的。
由于经济的快速增长,我国中产及以上阶层消费者数量已经逐渐增加。新生代消费者的崛起,成为中国消费市场的主导力量。未来的消费重心会逐步偏移。相较于产品,服务将成为未来若干年促使消费转型升级的驱动力。而在未来的社会,消费者对于高端产品及服务的需求也会与日俱增。人们的消费观念也将从买卖商品向体验服务转变,“满足日常需求”升级为“改善生活品质”。
2、国内外研究现状分析
2.1 国外电子商务发展与现状
从全球的角度来看,电子商务主要历经了三个阶段:萌芽时期,形成时期,发展时期。
萌芽时期可以追溯到19世纪前叶,电报的出现当即就引发了人们对于其在商务领域应用的讨论,这个时期莫尔斯密码可算是主要承载形式。
形成时期则开始于电子计算机的出现,时间自20世纪中叶起始,EDI(电子数据交换)被公认为是形成时期的主要承载形式。
发展时期则伴随着计算机网络技术尤其是网联网的出现,20世纪90年代后期,计算机、互联网技术迅速发展,信用卡的广泛使用,及电子安全交易协议的制定与推广,电子商务的规模真正意义上达到了一个新台阶。
从1994年亚马逊成立,到1995年美国宣布成立电子商务工作组,B2C这个概念也在次年被提出。美国从一开始在电子商务的发展上就居于领跑地位。无论是全球电子商务市场份额还是技术发展水平,美国都是执牛耳者,后来西欧等发达国家和地区也迎头赶上,引领新型商业模式并作为规模担当。
然而,近年来电子商务市场开始呈现新的特点:以中国为代表的新兴市场逐渐成为全球电子商务重心,美国和欧洲无论是规模还是从发展速度来看将逐渐处于劣势。亚太、拉美、中东等新兴市场的规模日益攀升,发展速度和规模也颇令人瞩目。新兴市场不断缩小与发达国家的发展差距,尤其是创新能力和基础设施差距,新兴市场国家在未来将领跑整个电子商务领域。
2.2、国内电子商务发展与现状
纵观世界其他国家电子商务的发展,我国开始发展的时间稍晚,然而发展的规模和速度仍然不容小觑,主要可以分为以下几个阶段:
1999-2002年是萌芽阶段,电子商务的发展开始正式起步。
2003-2006年是快速发展期,国外电子商务企业如亚马逊等开始进驻,带来许多先进的理念、技术和方法,与此同时国内阿里巴巴、当当等电商平台开始涌现。电子商务依旧十分热门,网上商城的市场依旧很大。好的商城系统是保证消费者愉快购物的关键。
2007年开始,中国的电子商务进入高速上升时期,越来越多的企业带来更多的资金和更先进的技术投入,天猫、京东等电商平台开始引爆中国,几乎绝大部分的国人也都或多或少参与到电子商务中来,为电商平台的更新升级与发展进步提供了推动力,人们的生产生活方式也出现翻天覆地的变化。
以淘宝为例,据中国电子商务研究中心监测数据,2016年5月,淘宝手机客户端月活跃用户达到3.7亿,其中深度活跃用户平均每天登陆手机淘宝达7.2次,浏览商品约18 件商品,淘宝手机客户端平均产生2000万关于商品的评论和分享。大量用户在浏览商品、阅读及社区评论互动上花费的时间每天要超过1个小时。这庞大的用户数量和用户使用时间决定了在新兴国家中,中国电子商务市场的发展速度是最快的,规模也是最大的。可以想见到,未来相当长的一段时间内中国将在世界电商领域上领跑。
3、研究内容及预期目标
在线电子商城是基于javaweb技术实现的,包含前后端.预期目标是实现基础的业务流程,后期再拓展创新功能,能让使用者有很好的用户体验。
二、系统设计
1、系统运行环境
开发系统:Windows10
架构模式:MVC/前后端分离
JDK版本:Java JDK1.8
开发工具:IDEA
数据库版本: mysql5.7
数据库可视化工具: SQL yog或Navicat for MySQL
服务器:SpringBoot自带 apache tomcat
主要技术:Java、SpringBoot2.7、MyBatis-plus、SpringSecurity、JWT、MySQL、Redis、Html、Vue3、antd等
2、系统架构设计
![](https://i-blog.csdnimg.cn/blog_migrate/0d0e6056f624d9440cd6e328607026a5.png)
3、项目结构
4、登录设计
借鉴微服务单点登录设计
5、管理员维护订单时序图设计:
三、数据库设计
1、实体E-R图
1.1、用户实体
1.2、产品实体
四、功能截图
1、登录界面
2、Dashboard
2.1、首页
2.2、工作台
3、系统管理
3.1、用户管理
3.2、角色管理
3.3、菜单管理
3.4、部门管理
4、多种导航栏模式切换
4.1、模式3
4.2、模式4
5、可以设置展示哪些字段
6、Uniapp会员客户端
6.1、首页轮播图以及功能导航
6.2、商品信息
可切换可跳转
6.3、商品分类
6.4、我的
五、实现代码
1、用户控制器
/**
* <p>
* 角色表 前端控制器
* </p>
*
* @author CeaM
* @since 2023-01-28
*/
@RestController
@AllArgsConstructor
@RequestMapping("/api/roles")
public class CeamSysRoleController {
private final ICeamSysRoleService ceamSysRoleService;
private final ICeamSysUserService ceamSysUserService;
@GetMapping
public ResponseEntity<IPage<CeaMSysRoleVO>> getRoles(PageableDTO pageable) {
IPage<CeaMSysRoleVO> mapIPage = ceamSysRoleService.pageCeaMSysRoleVO(pageable);
return ResponseEntity.ok(mapIPage);
}
@GetMapping(value = "/level")
public ResponseEntity<Object> getLevel() {
return new ResponseEntity<>(Dict.create().set("level", getLevels(null)), HttpStatus.OK);
}
@PutMapping(value = "/menu")
public ResponseEntity<Object> updateMenu(@RequestBody CeaMSysRoleDTO roleDTO) {
CeamSysRole role = ceamSysRoleService.getById(roleDTO.getId());
getLevels(role.getLevel());
ceamSysRoleService.updateMenu(roleDTO, role);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
/**
* 获取用户的角色级别
* @return /
*/
private int getLevels(Integer level) {
CeaMSysUserDTO user = ceamSysUserService.loadUserInfo(SecurityUtils.getUsername());
List<RoleDTO> roleDTOS = ceamSysRoleService.listByUserId(user.getId());
List<Integer> levels = roleDTOS.stream().map(RoleDTO::getLevel).collect(Collectors.toList());
int min = Collections.min(levels);
if (level != null) {
if (level < min) {
throw new ServiceException("权限不足,你的角色级别:" + min + ",低于操作的角色级别:" + level);
}
}
return min;
}
}
2、服务接口
/**
* <p>
* 角色表 服务类
* </p>
*
* @author CeaM
* @since 2023-01-28
*/
public interface ICeamSysRoleService extends IService<CeamSysRole> {
IPage<CeaMSysRoleVO> pageCeaMSysRoleVO(PageableDTO pageable);
/**
* 获取用户权限信息
* @param userId 用户信息
* @return 权限信息
*/
Collection<SimpleGrantedAuthority> grantedAuthorities(Long userId);
/**
*
* @param userId 用户ID
* @return RoleItemVOs
*/
List<RoleDTO> listByUserId(Long userId);
void updateMenu(CeaMSysRoleDTO roleDTO, CeamSysRole role);
}
3、实现类
/**
* <p>
* 角色表 服务实现类
* </p>
*
* @author CeaM
* @since 2023-01-28
*/
@Slf4j
@Service
@AllArgsConstructor
public class CeamSysRoleServiceImpl extends ServiceImpl<CeamSysRoleMapper, CeamSysRole> implements ICeamSysRoleService {
private ICeamSysMenuService ceamSysMenuService;
private ICeamRoleMenuService ceamRoleMenuService;
@Override
public IPage<CeaMSysRoleVO> pageCeaMSysRoleVO(PageableDTO pageable) {
LambdaQueryWrapper<CeamSysRole> queryWrapper = Wrappers.<CeamSysRole>lambdaQuery()
.eq(CeamSysRole::getDeleted, GlobalConstants.FALSE);
Page<CeamSysRole> page = new Page<>(pageable.getPage(), pageable.getSize());
// 手动设置当前页,不然分页失效
page.setCurrent((long)pageable.getPage() + GlobalConstants.ONE);
Page<CeamSysRole> ceamSysRolePage = page(page, queryWrapper);
IPage<CeaMSysRoleVO> ceaMSysRoleVOIPage = PageVOUtil.copyToPageVO(ceamSysRolePage, CeaMSysRoleVO.class);
for (CeaMSysRoleVO role : ceaMSysRoleVOIPage.getRecords()) {
List<MenuDTO> menuDTOS = ceamSysMenuService.findByRoleId(role.getId(), GlobalConstants.ZERO);
role.setMenus(menuDTOS);
}
return ceaMSysRoleVOIPage;
}
@Override
public Collection<SimpleGrantedAuthority> grantedAuthorities(Long userId) {
List<RoleDTO> roleItemDTOS = this.baseMapper.listByUserId(userId);
if (CollectionUtils.isEmpty(roleItemDTOS)) {
throw new ServiceException("没有分配角色");
}
List<MenuDTO> menuDTOS = ceamSysMenuService.findByRoles(roleItemDTOS, GlobalConstants.ZERO);
// 角色
Set<String> permissions = roleItemDTOS.stream()
.filter(role -> StringUtils.isNotBlank(role.getName()))
.map(RoleDTO::getName).collect(Collectors.toSet());
permissions.addAll(
menuDTOS.stream()
.filter(menu -> StringUtils.isNotBlank(menu.getPermission()))
.map(MenuDTO::getPermission).collect(Collectors.toSet())
);
return permissions.stream().map(SimpleGrantedAuthority::new)
.collect(Collectors.toList());
}
@Override
public List<RoleDTO> listByUserId(Long userId) {
return this.baseMapper.listByUserId(userId);
}
@Override
public void updateMenu(CeaMSysRoleDTO roleDTO, CeamSysRole role) {
if (roleDTO.getMenus().size() > 0) {
List<CeamRoleMenu> rolesMenusList = roleDTO.getMenus().stream().map(i -> {
CeamRoleMenu rolesMenus = new CeamRoleMenu();
rolesMenus.setRoleId(roleDTO.getId());
rolesMenus.setMenuId(i.getId());
return rolesMenus;
}).collect(Collectors.toList());
ceamRoleMenuService.remove(new LambdaQueryWrapper<CeamRoleMenu>()
.eq(CeamRoleMenu::getRoleId, roleDTO.getId()));
ceamRoleMenuService.saveBatch(rolesMenusList);
}
}
}
六、uniapp教程(需求分析、各模块及其节点文档、各模块案例)另外一个项目
另外一个项目基于Java+SpringBoot+Vue+Uniapp(有教程)前后端分离健身预约系统设计与实现
七、获取源码
大家点赞、收藏、关注、评论啦 、需要收些费用关注下方公众号获取联系方式👇🏻👇🏻