基于JavaSpringBoot+Vue+uniapp实现微信掌上图书小程序

这篇具有很好参考价值的文章主要介绍了基于JavaSpringBoot+Vue+uniapp实现微信掌上图书小程序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近开发了一个基于JavaSpringBoot+Vue+uniapp实现微信掌上图书小程序,系统非常的nice。

1,系统技术简介

1.1 Mysql数据库

目前世界上的数据数不胜数,而且更新迭代的速度非常的快,最为世界上最出名的两款关系型数据库MySQL和Oracle,由于Oracle数据库需要付费而且安装Oracle的成本比较高,越来越多的开发人员喜欢使用MySQL数据库进行工程中数据的存储,而且MySQl是一款可以免费试用的数据库,使用它不用担心版权的问题。部署起来也非常的方便,相比较于Oracle的部署时间简直不到Oracle部署的五分之一。正是由于MySQL种种优越的特性本系统开发所选择的数据库便是MySQL数据库,MySQL数据库部署之后不会占用非常对的内存与硬盘,但是MySQL的访问速度却非常的快,在多线程访问的情况下依旧可以保证其优越的性能,充分发挥计算机的CPU性能,不会进行一点的浪费。

1.2SpringBoot框架

后台开发框架选择的是SpringBoot框架,本框架是通过Spring4.0发展而来的,使用SpringBoot框架进行后台代码的开发可以显著地提升代码的开发效率,同时使用其依赖大于配置的思想,减少了传统的Spring框架非常多的配置文件与配置依赖。使用Springboot开发让系统后台变得更加简单,比如代码运行不需要安装Tomcat便可以完成程序的启动调试;让部署变得简单,使用SpringBoot开发的工程部署只需要几jdk便可以完成程序的启动;简化配置,在开发过程中不需要配置各种依赖各种注入,让开发人员更加注重于代码的编写,SpringBoot的种种优点促使本系统使用该框架进行开发。

2,系统功能介绍

2.1 系统前台功能

(1)首页展示:用户可以在首页进行图书种类的搜索(图书名、分类等),用户也可以进行注册(账号、密码、个人基本信息)和登录(注册成功后输入账号、密码)操作。
(2)图书展示:在进入系统主页面后,用户可以浏览主页面图书信息,首页为图书资讯推荐图书等,可以查看图书分类,查看图书基本信息,比如:图书封面、图书详情等。
(3)图书搜索:经过大体浏览首页之后,用户可以根据自己的喜好和需求输入图书名称或者关键词进行图书的检索。
(4)加入购物车:用户可以将自己所需要下单的图书加入购物车,也可对购物车中的图书进行查看、修改、删除等操作。
(5)我的订单:用户购买后可以查看我的订单,待支付、待发货、待收货、已完成的订单信息。
(6)图书资讯:用户可以登陆网上书城查看资讯信息。

2.2 系统后台管理

(1)管理员注册、登录。
(2)用户管理:管理员对用户的信息进行管理。
(3)图书管理:对图书进行分类管理、对图书的基本信息(名称、价格、图片、内容)进行增加、删除、修改,查看等操作。
(4)订单管理:对下单的信息进行更新管理、订单跟踪、发货管理等。
(5)图书资讯管理:对于小程序首页图书资讯进行管理,链接图书详情。

2.3 流程图和结构功能图

业务流程图是一种描述商 城内的管理信息流向,作业顺序和业务关系的流程图表。分析人员可以通过流程图分析出业务流程的不合理流向,及时发现和处理流程中的错误和潜在缺陷,调整和消除不合理的流程模块。功能结构图是对掌上书城微信小程序功能的分析,对功能列表结构进行详细描述,对其轮廓的逐步分解,从上到下绘制出来的结构图。

基于JavaSpringBoot+Vue+uniapp实现微信掌上图书小程序

3,系统界面演示

基于JavaSpringBoot+Vue+uniapp实现微信掌上图书小程序
基于JavaSpringBoot+Vue+uniapp实现微信掌上图书小程序

基于JavaSpringBoot+Vue+uniapp实现微信掌上图书小程序
基于JavaSpringBoot+Vue+uniapp实现微信掌上图书小程序
基于JavaSpringBoot+Vue+uniapp实现微信掌上图书小程序
基于JavaSpringBoot+Vue+uniapp实现微信掌上图书小程序
基于JavaSpringBoot+Vue+uniapp实现微信掌上图书小程序
基于JavaSpringBoot+Vue+uniapp实现微信掌上图书小程序

4,系统核心代码演示

package com.project.demo.controller;

import com.project.demo.entity.AccessToken;
import com.project.demo.service.AccessTokenService;

import com.project.demo.controller.base.BaseController;
import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.*;

/**
 * 临时访问牌(AccessToken)表控制层
 *
 */
@RestController
@RequestMapping("access_token")
public class AccessTokenController extends BaseController<AccessToken, AccessTokenService> {
    /**
     * 服务对象
     */
    @Autowired
    public AccessTokenController(AccessTokenService service) {
        setService(service);
    }

}



package com.project.demo.controller;

import com.alibaba.fastjson.JSONObject;
import com.project.demo.entity.AccessToken;
import com.project.demo.entity.User;
import com.project.demo.entity.UserGroup;
import com.project.demo.service.AccessTokenService;
import com.project.demo.service.UserGroupService;
import com.project.demo.service.UserService;

import com.project.demo.controller.base.BaseController;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import javax.persistence.Query;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.*;

/**
 * 用户账户:用于保存用户登录信息(User)表控制层
 */
@Slf4j
@RestController
@RequestMapping("user")
public class UserController extends BaseController<User, UserService> {
    /**
     * 服务对象
     */
    @Autowired
    public UserController(UserService service) {
        setService(service);
    }

    /**
     * Token服务
     */
    @Autowired
    private AccessTokenService tokenService;

    @Autowired
    private UserGroupService userGroupService;

    /**
     * 注册
     * @param user
     * @return
     */
    @PostMapping("register")
    public Map<String, Object> signUp(@RequestBody User user) {
        // 查询用户
        Map<String, String> query = new HashMap<>();
        query.put("username",user.getUsername());
        List list = service.select(query, new HashMap<>()).getResultList();
        if (list.size()>0){
            return error(30000, "用户已存在");
        }
        user.setUserId(null);
        user.setPassword(service.encryption(user.getPassword()));
        service.save(user);
        return success(1);
    }

    /**
     * 找回密码
     * @param form
     * @return
     */
    @PostMapping("forget_password")
    public Map<String, Object> forgetPassword(@RequestBody User form,HttpServletRequest request) {
        JSONObject ret = new JSONObject();
        String username = form.getUsername();
        String code = form.getCode();
        String password = form.getPassword();
        // 判断条件
        if(code == null || code.length() == 0){
            return error(30000, "验证码不能为空");
        }
        if(username == null || username.length() == 0){
            return error(30000, "用户名不能为空");
        }
        if(password == null || password.length() == 0){
            return error(30000, "密码不能为空");
        }

        // 查询用户
        Map<String, String> query = new HashMap<>();
        query.put("username",username);
        Query select = service.select(query, service.readConfig(request));
        List list = select.getResultList();
        if (list.size() > 0) {
            User o = (User) list.get(0);
            JSONObject query2 = new JSONObject();
            JSONObject form2 = new JSONObject();
            // 修改用户密码
            query2.put("user_id",o.getUserId());
            form2.put("password",service.encryption(password));
            service.update(query, service.readConfig(request), form2);
            return success(1);
        }
        return error(70000,"用户不存在");
    }

    /**
     * 登录
     * @param data
     * @param httpServletRequest
     * @return
     */
    @PostMapping("login")
    public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
        log.info("[执行登录接口]");

        String username = data.get("username");
        String email = data.get("email");
        String phone = data.get("phone");
        String password = data.get("password");

        List resultList = null;
        Map<String, String> map = new HashMap<>();
        if(username != null && "".equals(username) == false){
            map.put("username", username);
            resultList = service.select(map, new HashMap<>()).getResultList();
        }
        else if(email != null && "".equals(email) == false){
            map.put("email", email);
            resultList = service.select(map, new HashMap<>()).getResultList();
        }
        else if(phone != null && "".equals(phone) == false){
            map.put("phone", phone);
            resultList = service.select(map, new HashMap<>()).getResultList();
        }else{
            return error(30000, "账号或密码不能为空");
        }
        if (resultList == null || password == null) {
            return error(30000, "账号或密码不能为空");
        }
        //判断是否有这个用户
        if (resultList.size()<=0){
            return error(30000,"用户不存在");
        }

        User byUsername = (User) resultList.get(0);


        Map<String, String> groupMap = new HashMap<>();
        groupMap.put("name",byUsername.getUserGroup());
        List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();
        if (groupList.size()<1){
            return error(30000,"用户组不存在");
        }

        UserGroup userGroup = (UserGroup) groupList.get(0);

        //查询用户审核状态
        if (!StringUtils.isEmpty(userGroup.getSourceTable())){
            String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();
            String res = String.valueOf(service.runCountSql(sql).getSingleResult());
            if (res==null){
                return error(30000,"用户不存在");
            }
            if (!res.equals("已通过")){
                return error(30000,"该用户审核未通过");
            }
        }

        //查询用户状态
        if (byUsername.getState()!=1){
            return error(30000,"用户非可用状态,不能登录");
        }

        String md5password = service.encryption(password);
        if (byUsername.getPassword().equals(md5password)) {
            // 存储Token到数据库
            AccessToken accessToken = new AccessToken();
            accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
            accessToken.setUser_id(byUsername.getUserId());
            tokenService.save(accessToken);

            // 返回用户信息
            JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
            user.put("token", accessToken.getToken());
            JSONObject ret = new JSONObject();
            ret.put("obj",user);
            return success(ret);
        } else {
            return error(30000, "账号或密码不正确");
        }
    }

    /**
     * 修改密码
     * @param data
     * @param request
     * @return
     */
    @PostMapping("change_password")
    public Map<String, Object> change_password(@RequestBody Map<String, String> data, HttpServletRequest request){
        // 根据Token获取UserId
        String token = request.getHeader("x-auth-token");
        Integer userId = tokenGetUserId(token);
        // 根据UserId和旧密码获取用户
        Map<String, String> query = new HashMap<>();
        String o_password = data.get("o_password");
        query.put("user_id" ,String.valueOf(userId));
        query.put("password" ,service.encryption(o_password));
        Query ret = service.count(query, service.readConfig(request));
        List list = ret.getResultList();
        Object s = list.get(0);
        int count = Integer.parseInt(list.get(0).toString());
        if(count > 0){
            // 修改密码
            Map<String,Object> form = new HashMap<>();
            form.put("password",service.encryption(data.get("password")));
            service.update(query,service.readConfig(request),form);
            return success(1);
        }
        return error(10000,"密码修改失败!");
    }

    /**
     * 登录态
     * @param request
     * @return
     */
    @GetMapping("state")
    public Map<String, Object> state(HttpServletRequest request) {
        JSONObject ret = new JSONObject();
        // 获取状态
        String token = request.getHeader("x-auth-token");

        // 根据登录态获取用户ID
        Integer userId = tokenGetUserId(token);

        log.info("[返回userId] {}",userId);
        if(userId == null || userId == 0){
            return error(10000,"用户未登录!");
        }

        // 根据用户ID获取用户
        Map<String,String> query = new HashMap<>();
        query.put("user_id" ,String.valueOf(userId));

        // 根据用户ID获取
        Query select = service.select(query,service.readConfig(request));
        List resultList = select.getResultList();
        if (resultList.size() > 0) {
            JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(resultList.get(0)));
            user.put("token",token);
            ret.put("obj",user);
            return success(ret);
        } else {
            return error(10000,"用户未登录!");
        }
    }

    /**
     * 登录态
     * @param request
     * @return
     */
    @GetMapping("quit")
    public Map<String, Object> quit(HttpServletRequest request) {
        String token = request.getHeader("x-auth-token");
        JSONObject ret = new JSONObject();
        Map<String, String> query = new HashMap<>(16);
        query.put("token", token);
        try{
            tokenService.delete(query,service.readConfig(request));
        }catch (Exception e){
            e.printStackTrace();
        }
        return success("退出登录成功!");
    }

    /**
     * 获取登录用户ID
     * @param token
     * @return
     */
    public Integer tokenGetUserId(String token) {
        log.info("[获取的token] {}",token);
        // 根据登录态获取用户ID
        if(token == null || "".equals(token)){
            return 0;
        }
        Map<String, String> query = new HashMap<>(16);
        query.put("token", token);
        AccessToken byToken = tokenService.findOne(query);
        if(byToken == null){
            return 0;
        }
        return byToken.getUser_id();
    }

    /**
     * 重写add
     * @return
     */
    @PostMapping("/add")
    @Transactional
    public Map<String, Object> add(HttpServletRequest request) throws IOException {
        Map<String,Object> map = service.readBody(request.getReader());
        map.put("password",service.encryption(String.valueOf(map.get("password"))));
        service.insert(map);
        return success(1);
    }

}

package com.project.demo.controller;

import com.project.demo.entity.OrdinaryUsers;
import com.project.demo.service.OrdinaryUsersService;
import com.project.demo.controller.base.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;

import javax.persistence.Query;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


/**
 * 普通用户:(OrdinaryUsers)表控制层
 *
 */
@RestController
@RequestMapping("/ordinary_users")
public class OrdinaryUsersController extends BaseController<OrdinaryUsers, OrdinaryUsersService> {

    /**
     * 普通用户对象
     */
    @Autowired
    public OrdinaryUsersController(OrdinaryUsersService service) {
        setService(service);
    }

    @PostMapping("/add")
    @Transactional
    public Map<String, Object> add(HttpServletRequest request) throws IOException {
        Map<String,Object> paramMap = service.readBody(request.getReader());
        this.addMap(paramMap);
        return success(1);
    }

}


好了,整理结束,小伙伴们点赞、收藏、评论,一键三连走起呀,下期见~~

最后,我更新了大量的资料,都分享下,点击下面的,回复:项目大全

文章来源地址https://www.toymoban.com/news/detail-459808.html

到了这里,关于基于JavaSpringBoot+Vue+uniapp实现微信掌上图书小程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于JavaSpringBoot+uniapp制作一个记账小程序

    你不理财,财不理你,制作一个记账小程序对自己的收入/支出明细进行管理,守护好自己的钱袋子。

    2024年02月08日
    浏览(41)
  • 基于JavaSpringBoot+uniapp制作一个打卡小程序

    生活中打卡的场景无处不在,上班打卡、景点打卡、活动打卡、课堂考勤打卡、在CSDN的APP上也有签到打卡。

    2024年02月07日
    浏览(45)
  • 基于Uniapp+SSM+Vue的微信小程序设计与实现

    摘要:本文介绍了基于Uniapp+SSM+Vue技术栈开发的微信小程序——走失人员报备平台的设计、实现与优化。该平台旨在为志愿者提供便捷的走失人员信息收集与报备功能,助力社会公益事业的发展。 :Uniapp;SSM;Vue;微信小程序;走失人员报备 一、引言 介绍走失人员问

    2024年01月17日
    浏览(49)
  • 基于Java+Vue+uniapp微信小程序社团微信平台设计和实现

    博主介绍 : ✌ 全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到哟 2022-2024年

    2024年02月03日
    浏览(89)
  • 基于Java+Vue+uniapp微信小程序博客平台设计和实现

    博主介绍 : ✌ 全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到哟 2022-2024年

    2024年02月03日
    浏览(280)
  • 基于Java+Vue+uniapp微信小程序购物系统设计和实现

    博主介绍 : ✌ 全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅

    2024年02月03日
    浏览(58)
  • 基于Java+Vue+uniapp微信小程序选课系统设计和实现

    博主介绍 : ✌ 全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作 ✌ 主要内容: SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、P

    2024年02月02日
    浏览(146)
  • 基于Java+Vue+uniapp微信小程序微信阅读网站平台设计和实现

    博主介绍 : ✌ 全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到哟 2022-2024年

    2024年02月06日
    浏览(61)
  • 基于Java+Vue+uniapp微信小程序垃圾分类系统设计和实现

    博主介绍 : ✌ 全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到哟 2022-2024年

    2024年02月04日
    浏览(78)
  • 基于Java+Vue+uniapp微信小程序疫苗预约系统设计和实现

    博主介绍 : ✌ 全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到哟 2022-2024年

    2024年02月20日
    浏览(101)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包