SSM-based agricultural product promotion and application website

Get the source code at the end
Development language: Java
Java development tools: JDK1.8
Back-end framework: SSM
front-end: Vue technology development
Database: MySQL5.7 and Navicat management tools combined
Server: Tomcat8.5
Development software: IDEA / Eclipse
Maven project: yes


Table of contents

1. Project Introduction

2. Main work

3. System project screenshots

3.1 Administrator functions

3.2 User functions

3.3 Merchant functions

4. Core code

4.1 Login related

4.2 File upload

4.3 Packaging


1. Project Introduction

Today in the 21st century, with the continuous development and progress of society, people's understanding of information science has developed from a low level to a high level, from the original perceptual knowledge to rational knowledge, and the importance of management has gradually been recognized by people. It is understood that scientific management can make information storage accurate, fast and complete, and can improve the efficiency of work management and promote its development.

The paper mainly introduces the green agricultural product promotion and application website, including the current research status and the development background involved, and then discusses the design goals of the system, as well as the requirements of the system, as well as the entire design plan. The design and implementation were also discussed in detail. Finally, some specific tests were conducted on the green agricultural product promotion and application website.

This article uses Java as development technology to implement a green agricultural product promotion and application website. The main functions of the green agricultural product promotion and application website include: Administrator: home page, personal center, user management, merchant management, agricultural market management, agricultural skills management, commodity type management, commodity information management, commodity purchase management, communication information management, communication Reply management, message board management, system management, merchants; home page, personal center, product type management, product information management, product purchase management, communication information management, communication reply management, users; home page, personal center, product purchase management, communication information Management, communication reply management, message board management, my collection management, front page; home page, agricultural market, agricultural skills, product information, agricultural information, message feedback, personal center, back-end management functions, basically realizing the entire promotion of green agricultural products The process of applying a website.

Specifically, in terms of system design, the B/S structure is adopted. At the same time, Java technology is also used to design dynamic pages. The background uses Mysql database. It is a very excellent website for the promotion and application of green agricultural products.


2. Main work

At the beginning, this article gives an overall description of the basic knowledge discussed in the system, and conducts a system analysis on this basis. In order to enable this system to be designed and implemented in a better and more complete manner, analysis and investigation must be conducted first. Based on the previous related foundations, a detailed analysis of the new system was carried out in terms of functionality. Then through detailed analysis, system design was carried out. Secondly, in terms of the feasibility of system implementation, I chose Java technology for development and design. For data storage, I used Mysql database for design. Since both Java and Mysql are very mature, they are very reliable, safe and practical in all aspects. Finally, the system is tested and perfected and released.



3. System project screenshots

3.1 Administrator functions

The administrator enters the personal account number, password and role to log in to the system. At this time, the system database will search for relevant information. If the account number, password and role we entered are incorrect, the database will prompt an error message, and at the same time The administrator will be prompted to re-enter their account and password. After the account and password are successfully entered, a successful login message will be displayed.

The administrator edits the user management and fills in the user name, password, name, gender, avatar, ID card, mobile phone, and performs operations such as details, deletion, and modification.

 

The administrator can edit the account number, password, business name, gender, avatar, ID card, contact number and other information for business management , and can perform details, delete, and modify operations.

 

The administrator can edit the title, picture, brief description, video, release date and other information for the management of agricultural skills , and can perform details, delete, and modify operations.

 

Carousel map; this page is the carousel map management interface. Administrators can manage the carousel on the home page on this page. They can add new pictures to the carousel through the new operation, modify the previously uploaded pictures, and delete pictures.

 

The administrator fills in the product name, product type, picture, price, quantity, release date, account number, merchant name, contact number and other information for product information management to perform details, delete, and modify operations.

 

The administrator can edit the title, account number, business name, date, user name, name and other information for communication information management, and can perform details, delete, and modify operations.

 

The administrator can edit the title, user name, name, reply date, account number, business name and other information for communication reply management, and can perform details, delete, and modify operations.

 

3.2 User functions

Front page details page: home page, agricultural market, agricultural skills, commodity information, agricultural information, message feedback, personal center, background management and other functional operations.

Users fill in their account number, password and other information online to log in.

 When entering product information, users can fill in information such as product name, product type, pictures, price, quantity, release date, account number, merchant name, contact number, number of clicks, etc., and can conduct purchases and consultation operations .

Users can enter the message feedback and fill in the message content for immediate submission.

 

Users can view the order number, product name, product type, account number, price, quantity, total price, purchase date, user name, name, mobile phone, address, whether to pay and other information for details and delete when entering the product purchase management .

 When users enter the message board management, they can fill in the user name, message content, reply content, and perform operations such as details and deletion.

Users can enter My Collection Management to fill in the collection name, collection pictures and other information, and can perform operations such as details and deletion.

 3.3 Merchant functions

Merchants can view the order number, product name, product type, account number, price, quantity, total price, purchase date, user name, name, mobile phone, address, whether to pay and other information when entering the product purchase management, and can perform operations such as details and deletion .

Merchants can view information such as title, account number, merchant name, date, user name, name, etc. when they enter the exchange information management , and perform operations such as deletion and details .

 

Merchants can view information such as title, user name, name, reply date, account number, merchant name, etc., details, delete and other operations when entering the communication reply management .

 


4. Core code

4.1 Login related


package com.controller;


import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
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.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;

/**
 * 登录相关
 */
@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 captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		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);
	}
	
	/**
	 * 注册
	 */
	@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("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }

    /**
     * 信息
     */
    @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){
    	Long id = (Long)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 Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

4.2 File upload

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{
	@Autowired
    private ConfigService configService;
	/**
	 * 上传文件
	 */
	@RequestMapping("/upload")
	public 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);
		FileUtils.copyFile(dest, new File("C:\\Users\\Desktop\\jiadian\\springbootl7own\\src\\main\\resources\\static\\upload"+"/"+fileName));
		if(StringUtils.isNotBlank(type) && type.equals("1")) {
			ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
			if(configEntity==null) {
				configEntity = new ConfigEntity();
				configEntity.setName("faceFile");
				configEntity.setValue(fileName);
			} else {
				configEntity.setValue(fileName);
			}
			configService.insertOrUpdate(configEntity);
		}
		return R.ok().put("file", fileName);
	}
	
	/**
	 * 下载文件
	 */
	@IgnoreAuth
	@RequestMapping("/download")
	public ResponseEntity<byte[]> 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()){
				/*if(!fileService.canRead(file, SessionManager.getSessionUser())){
					getResponse().sendError(403);
				}*/
				HttpHeaders headers = new HttpHeaders();
			    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);    
			    headers.setContentDispositionFormData("attachment", fileName);    
			    return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return new ResponseEntity<byte[]>(HttpStatus.INTERNAL_SERVER_ERROR);
	}
	
}

4.3 Packaging

package com.utils;

import java.util.HashMap;
import java.util.Map;

/**
 * 返回数据
 */
public class R extends HashMap<String, Object> {
	private static final long serialVersionUID = 1L;
	
	public R() {
		put("code", 0);
	}
	
	public static R error() {
		return error(500, "未知异常,请联系管理员");
	}
	
	public static R error(String msg) {
		return error(500, msg);
	}
	
	public static R error(int code, String msg) {
		R r = new R();
		r.put("code", code);
		r.put("msg", msg);
		return r;
	}

	public static R ok(String msg) {
		R r = new R();
		r.put("msg", msg);
		return r;
	}
	
	public static R ok(Map<String, Object> map) {
		R r = new R();
		r.putAll(map);
		return r;
	}
	
	public static R ok() {
		return new R();
	}

	public R put(String key, Object value) {
		super.put(key, value);
		return this;
	}
}

Guess you like

Origin blog.csdn.net/weixin_52721608/article/details/132784240