您的当前位置:首页正文

基于Java+SpringBoot+Vue+uniapp微信小程序零食商城系统设计和实现

2024-11-29 来源:个人技术集锦

系统介绍:

   

 商品销售古老而又历久弥新,人们的生活离不开它,处处可见大大小小的商品销售实体店, 商品销售行业一直是一个必须存在的行业,而互联网的发展为 商品销售行业迎来了一个机遇,将互联网和服装行业结合起来。

随着现代信息技术的迅猛发展,智能手机的普及,微信公众平台在微信应用软件中的应用日益广泛和深入,特别是Internet与智能手机的接轨,为微信的发展提供了丰富有力的条件。目前,微信主要分为个人微信以及微信公众号,微信公众号的开发为企业单位等带来了极大的方便。据我们互联网行业发布的最新报道显示,随着手机的不断更新,和手机价格的降低,智能手机呈快速增长趋势,使用微信的数量不断增加,这使得基于微信平台的商品销售小程序的成了必然。微信的信息交流互动性强,能够及时通过微信与客户进行交流通过微信营销能够大大提高营业额,而且微信口碑相传性极强,这也能够大大的提高商品销售小程序的知名度,因此,开发本基于微信平台的零食商品销售采购小程序是必须的。

二、主要技术: 

2.1  Spring Boot框架介绍:

        Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架具有控制反转(IOC)特性,IOC旨在方便项目维护和测试,它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。Spring框架利用容器管理对象的生命周期,容器可以通过扫描XML文件或类上特定Java注解来配置对象,开发者可以通过依赖查找或依赖注入来获得对象。Spring框架具有面向切面编程(AOP)框架,SpringAOP框架基于代理模式,同时运行时可配置;AOP框架主要针对模块之间的交叉关注点进行模块化。Spring框架的AOP框架仅提供基本的AOP特性,虽无法与AspectJ框架相比,但通过与AspectJ的集成,也可以满足基本需求。Spring框架下的事务管理、远程访问等功能均可以通过使用SpringAOP技术实现。Spring的事务管理框架为Java平台带来了一种抽象机制,使本地和全局事务以及嵌套事务能够与保存点一起工作,并且几乎可以在Java平台的任何环境中工作。

2.2 MYSQL数据库:

        MySQL数据库使用的语言是SQL语言。MySQL在保存数据时是根据数据的类型和特征分开保存在不同的表中,这样当用户在需要调用的数据时,就不再需要花费大量时间去寻找数据了,只要找到对应的表,就可以找到需要的数据了。MySQL可以完美的实现对于数据库的基本操作。因为 MySQL 数据库的占用的内存少,运行快,成本低,源代码开放,可移植性强,所以越来越多的数据来源简单的项目的开发都会选择 MySQL作为数据库,而MySQL也变得越来越流行。

2.3 微信开发者工具

        在传统web浏览器中,在加载htm15页面时先加载视图层的html和css,后加载逻辑层的java script,然后返回数据并在浏览器中展示页面。而微信开发者工具的系统层是基于Native System的,视图层和逻辑层会同时被加载。微信小程序的这种逻辑方式大大的优化了页面响应速度,减少了页面加载的等待时间,提高了用户体验。微信开发者工具可以实现同步本地文件,开发调试,编译预览,上传,发布等一整套流程。

三、系统设计:

3.1 系统架构设计:

3.2 登录时序图设计:

四、功能截图: 

4.1 微信小程序端:

4.1.1登录注册模块:

项目启动后输入账号名或密码进行登录、也可以用户进行注册

4.1 2 首页信息模块:

用户登陆系统后,可以对首页、零食信息、零食咨讯、购物车、我的等内容进行详细操作。

4.1.2 零食商品详情:

4.1.3 零食资讯和购物车:

4.1.4 我的个人模块

在我的页面可以对我的收藏管理、用户充值、在线客服、购物车、我的订单、等详细信息进行操作

4.2 后台管理员端:

4.2.1 管理员登录:

管理员登陆系统后,可以查看首页、个人中心、用户管理、服装分类管理、服装管理、系统管理、订单管理等功能,还能对每个功能逐一进行相应操作

4.2.2 用户信息管理:

在用户管理页面可以对索引、用户账号、用户姓名、照片、性别、联系方式等内容进行详情,修改或删除等操作

4.2.3 零食类型管理:

在零食分类管理页面可以对索引、零食分类等内容进行修改或删除等操作

4.2.4 零食信息管理:

在零食管理页面可以对索引、零食等内容进行修改或删除等操作

4.2.5轮播图管理:

4.2.6 订单模块管理: 

在订单管理页面可以对索引、订单等内容进行修改或删除等操作;如图5-14所示

论文参考:

代码实现:

/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
    
    @Autowired
    private UserService userService;
    
    @Autowired
    private TokenService tokenService;

    /**
     * 登录
     */
    @IgnoreAuth
    @PostMapping(value = "/login")
    public R login(String username, String password, String role, HttpServletRequest request) {
        UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
        if(user != null){
            if(!user.getRole().equals(role)){
                return R.error("权限不正常");
            }
            if(user==null || !user.getPassword().equals(password)) {
                return R.error("账号或密码不正确");
            }
            String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
            return R.ok().put("token", token);
        }else{
            return R.error("账号或密码或权限不对");
        }

    }
    
    /**
     * 注册
     */
    @IgnoreAuth
    @PostMapping(value = "/register")
    public R register(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
        if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
            return R.error("用户已存在");
        }
        userService.insert(user);
        return R.ok();
    }

    /**
     * 退出
     */
    @GetMapping(value = "logout")
    public R logout(HttpServletRequest request) {
        request.getSession().invalidate();
        return R.ok("退出成功");
    }
    
    /**
     * 密码重置
     */
    @IgnoreAuth
    @RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
        UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
        if(user==null) {
            return R.error("账号不存在");
        }
        user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
    
    /**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
        PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
        Integer id = (Integer)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
        if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
            return R.error("用户已存在");
        }
        userService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

推荐项目:

项目案例: 

 

为什么选择我

源码获取:

家点赞、收藏、关注、评论啦 、查看??获取联系方式??

 精彩专栏推荐订阅下方专栏??

显示全文