做网站公司排名,u网站建设,临潼城市建设局网站,做网站竞品分析#x1f34a;作者#xff1a;计算机编程-吉哥 #x1f34a;简介#xff1a;专业从事JavaWeb程序开发#xff0c;微信小程序开发#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事#xff0c;生活就是快乐的。 #x1f34a;心愿#xff1a;点… 作者计算机编程-吉哥 简介专业从事JavaWeb程序开发微信小程序开发定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事生活就是快乐的。 心愿点赞 收藏 ⭐评论 文末获取源码联系 精彩专栏推荐订阅 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录
1.技术选型
2.开发工具
3.功能
3.1【角色】
3.2【前端功能模块】
3.3【后端功能模块】
4.项目演示截图
4.1 商品
4.2 商品详情
4.3 捐赠项目
4.4 商家
4.5 个人中心
4.6 商品订单
4.7 商品订单管理【商家】
4.8 论坛管理【管理员】
5.核心代码
5.1拦截器
5.2分页工具类
5.3文件上传下载
5.4前端请求
6.LW文档大纲参考 背景意义介绍 助农产品采购平台的开发对于推动农业产业升级和乡村振兴战略具有深远的意义。该平台通过整合线上线下资源为农产品的销售和推广提供了一个全新的渠道有助于解决农产品销售难题增加农民收入促进农村经济的多元化发展。 本文介绍的助农产品采购平台采用了Java作为后端开发语言结合SpringBoot框架以简化服务端应用的搭建和部署。前端则采用Vue.js技术为用户提供了动态、响应式的交互体验。平台服务于三种角色管理员、商家和用户覆盖了从注册登录到个人中心再到商品浏览、捐赠项目管理等全方位的功能模块。 对于管理员而言平台提供了强大的管理工具包括商家管理、用户管理、商品和捐赠项目管理等确保了平台的有序运营。商家可以通过平台发布商品资讯管理商品和捐赠项目拓宽销售渠道。用户则可以浏览商品、参与论坛讨论、进行捐赠和购买同时在个人中心管理个人信息和订单。 助农产品采购平台的实现不仅为消费者提供了便捷的农产品购买渠道也为商家提供了展示和销售产品的平台实现了消费者、商家和农民的互利共赢。此外平台的数据分析和客服聊天功能为提升用户体验和解决用户问题提供了有力支持。总之该平台对于促进农产品流通、加快农业信息化进程具有重要的现实意义。 1.技术选型
springboot、mybatisplus、vue、elementui、html、css、js、mysql、jdk1.8
2.开发工具
idea、navicat
3.功能
3.1【角色】
管理员、商家、用户
3.2【前端功能模块】
登录注册首页论坛捐赠项目商品资讯商品商家个人中心个人信息、收货地址、捐赠记录、商品收藏、商品评价、商品订单购物车在线客服
3.3【后端功能模块】
登录个人中心管理员管理商家管理用户管理商品管理捐赠项目管理捐赠记录管理客服聊天管理基础数据管理论坛管理商品资讯管理轮播图信息 4.项目演示截图
4.1 商品 4.2 商品详情 4.3 捐赠项目 4.4 商家 4.5 个人中心 4.6 商品订单 4.7 商品订单管理【商家】 4.8 论坛管理【管理员】 5.核心代码
5.1拦截器
package com.interceptor;import com.alibaba.fastjson.JSONObject;
import com.annotation.IgnoreAuth;
import com.entity.TokenEntity;
import com.service.TokenService;
import com.utils.R;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;/*** 权限(Token)验证*/
Component
public class AuthorizationInterceptor implements HandlerInterceptor {public static final String LOGIN_TOKEN_KEY Token;Autowiredprivate TokenService tokenService;Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//支持跨域请求response.setHeader(Access-Control-Allow-Methods, POST, GET, OPTIONS, DELETE);response.setHeader(Access-Control-Max-Age, 3600);response.setHeader(Access-Control-Allow-Credentials, true);response.setHeader(Access-Control-Allow-Headers, x-requested-with,request-source,Token, Origin,imgType, Content-Type, cache-control,postman-token,Cookie, Accept,authorization);response.setHeader(Access-Control-Allow-Origin, request.getHeader(Origin));// 跨域时会首先发送一个OPTIONS请求这里我们给OPTIONS请求直接返回正常状态if (request.getMethod().equals(RequestMethod.OPTIONS.name())) {response.setStatus(HttpStatus.OK.value());return false;}IgnoreAuth annotation;if (handler instanceof HandlerMethod) {annotation ((HandlerMethod) handler).getMethodAnnotation(IgnoreAuth.class);} else {return true;}//从header中获取tokenString token request.getHeader(LOGIN_TOKEN_KEY);/*** 不需要验证权限的方法直接放过*/if(annotation!null) {return true;}TokenEntity tokenEntity null;if(StringUtils.isNotBlank(token)) {tokenEntity tokenService.getTokenEntity(token);}if(tokenEntity ! null) {request.getSession().setAttribute(userId, tokenEntity.getUserid());request.getSession().setAttribute(role, tokenEntity.getRole());request.getSession().setAttribute(tableName, tokenEntity.getTablename());request.getSession().setAttribute(username, tokenEntity.getUsername());return true;}PrintWriter writer null;response.setCharacterEncoding(UTF-8);response.setContentType(application/json; charsetutf-8);try {writer response.getWriter();writer.print(JSONObject.toJSONString(R.error(401, 请先登录)));} finally {if(writer ! null){writer.close();}}return false;}
}
5.2分页工具类 package com.utils;import java.io.Serializable;
import java.util.List;
import java.util.Map;import com.baomidou.mybatisplus.plugins.Page;/*** 分页工具类*/
public class PageUtils implements Serializable {private static final long serialVersionUID 1L;//总记录数private long total;//每页记录数private int pageSize;//总页数private long totalPage;//当前页数private int currPage;//列表数据private List? list;/*** 分页* param list 列表数据* param totalCount 总记录数* param pageSize 每页记录数* param currPage 当前页数*/public PageUtils(List? list, int totalCount, int pageSize, int currPage) {this.list list;this.total totalCount;this.pageSize pageSize;this.currPage currPage;this.totalPage (int)Math.ceil((double)totalCount/pageSize);}/*** 分页*/public PageUtils(Page? page) {this.list page.getRecords();this.total page.getTotal();this.pageSize page.getSize();this.currPage page.getCurrent();this.totalPage page.getPages();}/** 空数据的分页*/public PageUtils(MapString, Object params) {Page page new Query(params).getPage();new PageUtils(page);}public int getPageSize() {return pageSize;}public void setPageSize(int pageSize) {this.pageSize pageSize;}public int getCurrPage() {return currPage;}public void setCurrPage(int currPage) {this.currPage currPage;}public List? getList() {return list;}public void setList(List? list) {this.list list;}public long getTotalPage() {return totalPage;}public void setTotalPage(long totalPage) {this.totalPage totalPage;}public long getTotal() {return total;}public void setTotal(long total) {this.total total;}}
5.3文件上传下载
package com.controller;import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.UUID;import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.ConfigEntity;
import com.entity.EIException;
import com.service.ConfigService;
import com.utils.R;/*** 上传文件映射表*/
RestController
RequestMapping(file)
SuppressWarnings({unchecked,rawtypes})
public class FileController{Autowiredprivate ConfigService configService;/*** 上传文件*/RequestMapping(/upload)IgnoreAuthpublic R upload(RequestParam(file) MultipartFile file,String type) throws Exception {if (file.isEmpty()) {throw new EIException(上传文件不能为空);}String fileExt file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(.)1);File path new File(ResourceUtils.getURL(classpath:static).getPath());if(!path.exists()) {path new File();}File upload new File(path.getAbsolutePath(),/upload/);if(!upload.exists()) {upload.mkdirs();}String fileName new Date().getTime().fileExt;File dest new File(upload.getAbsolutePath()/fileName);file.transferTo(dest);if(StringUtils.isNotBlank(type) type.equals(1)) {ConfigEntity configEntity configService.selectOne(new EntityWrapperConfigEntity().eq(name, faceFile));if(configEntitynull) {configEntity new ConfigEntity();configEntity.setName(faceFile);configEntity.setValue(fileName);} else {configEntity.setValue(fileName);}configService.insertOrUpdate(configEntity);}return R.ok().put(file, fileName);}/*** 下载文件*/IgnoreAuthRequestMapping(/download)public ResponseEntitybyte[] download(RequestParam String fileName) {try {File path new File(ResourceUtils.getURL(classpath:static).getPath());if(!path.exists()) {path new File();}File upload new File(path.getAbsolutePath(),/upload/);if(!upload.exists()) {upload.mkdirs();}File file new File(upload.getAbsolutePath()/fileName);if(file.exists()){HttpHeaders headers new HttpHeaders();headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); headers.setContentDispositionFormData(attachment, fileName); return new ResponseEntitybyte[](FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);}} catch (IOException e) {e.printStackTrace();}return new ResponseEntitybyte[](HttpStatus.INTERNAL_SERVER_ERROR);}}
5.4前端请求
import axios from axios
import router from /router/router-static
import storage from /utils/storageconst http axios.create({timeout: 1000 * 86400,withCredentials: true,baseURL: /furniture,headers: {Content-Type: application/json; charsetutf-8}
})
// 请求拦截
http.interceptors.request.use(config {config.headers[Token] storage.get(Token) // 请求头带上tokenreturn config
}, error {return Promise.reject(error)
})
// 响应拦截
http.interceptors.response.use(response {if (response.data response.data.code 401) { // 401, token失效router.push({ name: login })}return response
}, error {return Promise.reject(error)
})
export default http
6.LW文档大纲参考 具体LW如何写法可以咨询博主耐心分享 你可能还有感兴趣的项目 更多项目推荐:计算机毕业设计项目 如果大家有任何疑虑请在下方咨询或评论
文章转载自: http://www.morning.hwpcm.cn.gov.cn.hwpcm.cn http://www.morning.yybcx.cn.gov.cn.yybcx.cn http://www.morning.iznek.com.gov.cn.iznek.com http://www.morning.rxhsm.cn.gov.cn.rxhsm.cn http://www.morning.ishoufeipin.cn.gov.cn.ishoufeipin.cn http://www.morning.lfdrq.cn.gov.cn.lfdrq.cn http://www.morning.qxjck.cn.gov.cn.qxjck.cn http://www.morning.krnzm.cn.gov.cn.krnzm.cn http://www.morning.bwfsn.cn.gov.cn.bwfsn.cn http://www.morning.ygkb.cn.gov.cn.ygkb.cn http://www.morning.xgzwj.cn.gov.cn.xgzwj.cn http://www.morning.xhlpn.cn.gov.cn.xhlpn.cn http://www.morning.tslfz.cn.gov.cn.tslfz.cn http://www.morning.nqrdx.cn.gov.cn.nqrdx.cn http://www.morning.fnssm.cn.gov.cn.fnssm.cn http://www.morning.dnzyx.cn.gov.cn.dnzyx.cn http://www.morning.rpkg.cn.gov.cn.rpkg.cn http://www.morning.xwbld.cn.gov.cn.xwbld.cn http://www.morning.kwfnt.cn.gov.cn.kwfnt.cn http://www.morning.kkqgf.cn.gov.cn.kkqgf.cn http://www.morning.ychrn.cn.gov.cn.ychrn.cn http://www.morning.wptdg.cn.gov.cn.wptdg.cn http://www.morning.rkypb.cn.gov.cn.rkypb.cn http://www.morning.rnytd.cn.gov.cn.rnytd.cn http://www.morning.lktjj.cn.gov.cn.lktjj.cn http://www.morning.rfqk.cn.gov.cn.rfqk.cn http://www.morning.ttryd.cn.gov.cn.ttryd.cn http://www.morning.bqpgq.cn.gov.cn.bqpgq.cn http://www.morning.pjwml.cn.gov.cn.pjwml.cn http://www.morning.zrkws.cn.gov.cn.zrkws.cn http://www.morning.nzfqw.cn.gov.cn.nzfqw.cn http://www.morning.nxdqz.cn.gov.cn.nxdqz.cn http://www.morning.ryxdf.cn.gov.cn.ryxdf.cn http://www.morning.ycwym.cn.gov.cn.ycwym.cn http://www.morning.wbfly.cn.gov.cn.wbfly.cn http://www.morning.yrhpg.cn.gov.cn.yrhpg.cn http://www.morning.rnribht.cn.gov.cn.rnribht.cn http://www.morning.qcfgd.cn.gov.cn.qcfgd.cn http://www.morning.kgxyd.cn.gov.cn.kgxyd.cn http://www.morning.dlhxj.cn.gov.cn.dlhxj.cn http://www.morning.jyznn.cn.gov.cn.jyznn.cn http://www.morning.jbxfm.cn.gov.cn.jbxfm.cn http://www.morning.rqnhf.cn.gov.cn.rqnhf.cn http://www.morning.zwpzy.cn.gov.cn.zwpzy.cn http://www.morning.thlzt.cn.gov.cn.thlzt.cn http://www.morning.lgnz.cn.gov.cn.lgnz.cn http://www.morning.lkbkd.cn.gov.cn.lkbkd.cn http://www.morning.nfsrs.cn.gov.cn.nfsrs.cn http://www.morning.nlkhr.cn.gov.cn.nlkhr.cn http://www.morning.bcjbm.cn.gov.cn.bcjbm.cn http://www.morning.rqqct.cn.gov.cn.rqqct.cn http://www.morning.wnnlr.cn.gov.cn.wnnlr.cn http://www.morning.jfxth.cn.gov.cn.jfxth.cn http://www.morning.hxpff.cn.gov.cn.hxpff.cn http://www.morning.ffgbq.cn.gov.cn.ffgbq.cn http://www.morning.fgwzl.cn.gov.cn.fgwzl.cn http://www.morning.ywpwg.cn.gov.cn.ywpwg.cn http://www.morning.mrkbz.cn.gov.cn.mrkbz.cn http://www.morning.plhyc.cn.gov.cn.plhyc.cn http://www.morning.nhdw.cn.gov.cn.nhdw.cn http://www.morning.xtrzh.cn.gov.cn.xtrzh.cn http://www.morning.mdgpp.cn.gov.cn.mdgpp.cn http://www.morning.pdmml.cn.gov.cn.pdmml.cn http://www.morning.rqjxc.cn.gov.cn.rqjxc.cn http://www.morning.yrflh.cn.gov.cn.yrflh.cn http://www.morning.bhpjc.cn.gov.cn.bhpjc.cn http://www.morning.slfkt.cn.gov.cn.slfkt.cn http://www.morning.swimstaracademy.cn.gov.cn.swimstaracademy.cn http://www.morning.hdrrk.cn.gov.cn.hdrrk.cn http://www.morning.hbtarq.com.gov.cn.hbtarq.com http://www.morning.fmgwx.cn.gov.cn.fmgwx.cn http://www.morning.mhnxs.cn.gov.cn.mhnxs.cn http://www.morning.jjxnp.cn.gov.cn.jjxnp.cn http://www.morning.xltwg.cn.gov.cn.xltwg.cn http://www.morning.fpbj.cn.gov.cn.fpbj.cn http://www.morning.srsln.cn.gov.cn.srsln.cn http://www.morning.qpzjh.cn.gov.cn.qpzjh.cn http://www.morning.wmdlp.cn.gov.cn.wmdlp.cn http://www.morning.rshijie.com.gov.cn.rshijie.com http://www.morning.wnnlr.cn.gov.cn.wnnlr.cn