基于javaweb的SpringBoot农产品商城系统(java+springboot+vue+layui+elementui+mysql)

运行环境

Java≥8、MySQL≥5.7、Node.js≥14

开发工具

后端:eclipse/idea/myeclipse/sts等均可配置运行
前端:WebStorm/VSCode/HBuilderX等均可

❗没学过node.js的不要搞前后端分离项目

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

181424050701

191424050701

201424050701

211424050701

221424050701

231424050701

241424050701

251424050701

261424050701

281424050701

基于javaweb的SpringBoot农产品商城系统(java+springboot+vue+layui+elementui+mysql)

项目介绍

本项目基于Springboot+vue开发实现的农产品商城系统,系统整体设计基于前后端分离的开发模式,前后端通过接口来相互调用, 实现有效的隔离。

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 4.数据库:MySql 5.7/8.0版本均可; 5.是否Maven项目:是;

技术栈

后端:SpringBoot+Mybaits

前端:layui+Vue+ELementUI

使用说明

项目运行: 1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中application.yml配置文件中的数据库配置改为自己的配置; 4. 运行项目,控制台提示运行成功后再去运行前端项目; 5. 管理员用户名密码:admin/admin 普通用户名密码:user/123456

文档介绍(工具及技术、开发环境及开发工具、系统技术、角色划分、网上商城前端、网上商城后端、数据流、系统功能图、条件限制、项目经费限制、最终用户教育水平及技术要求、软件结构、账户管理系统、顾客订单查询系统、角色管理系统、顾客订单查询系统、商品购买系统供应商管理系统、系统安全性、数据安全性):

农产品商城-首页:

商品购买详情:

 订单详情展示:

购物车详情展示: 

后台订单列表展示: 

商品轮播图:

商品采购列表:

商品列表详情展示:

添加商品:

    if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
        sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
    }
    if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
        int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
        int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
        sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
    }
    log.info("[{}] - 查询操作,sql: {}",table,sql);
    return sql.toString();
}

@Transactional
public void delete(Map<String,String> query,Map<String,String> config){
    QueryWrapper wrapper = new QueryWrapper<E>();
    toWhereWrapper(query, "0".equals(config.get(FindConfig.GROUP_BY)),wrapper);
    baseMapper.delete(wrapper);
    log.info("[{}] - 删除操作:{}",wrapper.getSqlSelect());
}

// public void count(Map<String,String> query,Map<String,String> config, QueryWrapper wrapper){
//// log.info(“拼接统计函数前”);
// if (config.get(FindConfig.GROUP_BY) != null && !””.equals(config.get(FindConfig.GROUP_BY))){
// wrapper.select(config.get(FindConfig.GROUP_BY));
// wrapper.select(“COUNT(“+config.get(FindConfig.GROUP_BY)+”)”);
// toWhereSql(query, “0”.equals(config.get(FindConfig.LIKE)),wrapper);
// }else {
// wrapper.select(“COUNT(*)”);
// toWhereSql(query, “0”.equals(config.get(FindConfig.LIKE)),wrapper);
// }
// log.info(“[{}] - 统计操作,sql: {}”,wrapper.getSqlSelect());
// }

public String count(Map<String,String> query,Map<String,String> config){
    StringBuffer sql = new StringBuffer("SELECT ");

// log.info(“拼接统计函数前”);
if (config.get(FindConfig.GROUP_BY) != null && !””.equals(config.get(FindConfig.GROUP_BY))){
sql.append(“COUNT(“).append(config.get(FindConfig.GROUP_BY)).append(“) FROM “).append(“").append(table).append("“);
sql.append(toWhereSql(query, “0”.equals(config.get(FindConfig.LIKE))));
// sql.append(“ “).append(“GROUP BY “).append(config.get(FindConfig.GROUP_BY));
}else {
sql.append(“COUNT(*) FROM “).append(“").append(table).append("“);
sql.append(toWhereSql(query, “0”.equals(config.get(FindConfig.LIKE))));
}
log.info(“[{}] - 统计操作,sql: {}”,table,sql);
return sql.toString();
}

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


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

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

    //查询用户审核状态
    if (!StringUtils.isEmpty(userGroup.getSourceTable())){
        String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
        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

// sql.append(toWhereSql(query, “0”.equals(config.get(FindConfig.LIKE))));
// }
// log.info(“[{}] - 查询操作,sql: {}”,table,sql);
// return runCountSql(sql.toString());
// }

public String groupCount(Map<String,String> query,Map<String,String> config){
    StringBuffer sql = new StringBuffer("SELECT ");

// log.info(“拼接统计函数前”);
if (config.get(FindConfig.GROUP_BY) != null && !””.equals(config.get(FindConfig.GROUP_BY))){
sql.append(“COUNT(“).append(config.get(FindConfig.GROUP_BY)).append(“) FROM “).append(“").append(table).append("“);
sql.append(toWhereSql(query, “0”.equals(config.get(FindConfig.LIKE))));
// sql.append(“ “).append(“GROUP BY “).append(config.get(FindConfig.GROUP_BY));
}else {
sql.append(“COUNT(*) FROM “).append(“").append(table).append("“);
sql.append(toWhereSql(query, “0”.equals(config.get(FindConfig.LIKE))));
}
log.info(“[{}] - 统计操作,sql: {}”,table,sql);
return sql.toString();
}

public String sum(Map<String,String> query,Map<String,String> config){
    StringBuffer sql = new StringBuffer(" SELECT ");
    if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
        sql.append("SUM(").append(config.get(FindConfig.FIELD)).append(") FROM ").append("`").append(table).append("`");
        sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
        sql.append(" ").append("GROUP BY ").append(config.get(FindConfig.GROUP_BY));
    }else {
        sql.append(" SUM(").append(config.get(FindConfig.FIELD)).append(") FROM ").append("`").append(table).append("`");
        sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
    }
    log.info("[{}] - 查询操作,sql: {}",table,sql);
    return sql.toString();
}

public String avg(Map<String,String> query,Map<String,String> config){
    StringBuffer sql = new StringBuffer(" SELECT ");
    if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
        sql.append("AVG(").append(config.get(FindConfig.FIELD)).append(") FROM ").append("`").append(table).append("`");
        sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));

/**

  • 评论:(Comment)表控制层
  • /
    @RestController
    @RequestMapping(“comment”)
    public class CommentController extends BaseController<Comment, CommentService> {
    /**
    • 服务对象
    • /
      @Autowired
      public CommentController(CommentService service) {
      setService(service);
      }

}

/**

  • 轮播图:(Slides)表控制层
  • /
    @RestController
    @RequestMapping(“slides”)
    public class SlidesController extends BaseController<Slides, SlidesService> {
    /**
    • 服务对象
    • /
      @Autowired
      public SlidesController(SlidesService service) {
      setService(service);
      }
@Autowired
private UserGroupService userGroupService;

@Autowired
private AccessTokenMapper accessTokenMapper;

/**
 * 注册
 * @return
 */
@PostMapping("register")
public Map<String, Object> signUp(HttpServletRequest request) throws IOException {
    // 查询用户
    Map<String, String> query = new HashMap<>();
    Map<String,Object> map = service.readBody(request.getReader());
    query.put("username",String.valueOf(map.get("username")));
    List list = service.selectBaseList(service.select(query, new HashMap<>()));
    if (list.size()>0){
        return error(30000, "用户已存在");
    }
    map.put("password",service.encryption(String.valueOf(map.get("password"))));
    service.insert(map);
    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, "用户名不能为空");

//
// } catch (Exception e) {
// e.printStackTrace();
// }
// return re_md5;
}

public static String humpToLine(String str) {
    if (str == null) {
        return null;
    }
    // 将驼峰字符串转换成数组
    char[] charArray = str.toCharArray();
    StringBuilder buffer = new StringBuilder();
    //处理字符串
    for (int i = 0, l = charArray.length; i < l; i++) {
        if (charArray[i] >= 65 && charArray[i] <= 90) {
            buffer.append("_").append(charArray[i] += 32);
        } else {
            buffer.append(charArray[i]);
        }
    }
    String s = buffer.toString();
    if (s.startsWith("_")){
        return s.substring(1);
    }else {
        return s;
    }
}


public JSONObject covertObject(JSONObject object) {
    if (object == null) {
        return null;
    }
    JSONObject newObject = new JSONObject();
    Set<String> set = object.keySet();
    for (String key : set) {
        Object value = object.get(key);
        if (value instanceof JSONArray) {
            //数组
            value = covertArray(object.getJSONArray(key));
        } else if (value instanceof JSONObject) {


项目链接:
https://javayms.github.io?id=401524170701201gs
https://javayms.pages.dev?id=401524170701201gs