基于java+ssm+vue的助农扶贫微信小程序

本文介绍了沈阳工业大学开发的助农扶贫微信小程序,使用Java和MySQL,实现了管理员和农户管理功能,包括订单统计、商品信息管理、订单配送及评价退货等,旨在提高用户购买和农户管理的便利性,助力农产品销售。
摘要由CSDN通过智能技术生成

项目介绍

由于APP软件在开发以及运营上面所需成本较高,而用户手机需要安装各种APP软件,因此占用用户过多的手机存储空间,导致用户手机运行缓慢,体验度比较差,进而导致用户会卸载非必要的APP,倒逼管理者必须改变运营策略。随着微信小程序的出现,解决了用户非独立APP不可访问内容的痛点,所以很多APP软件都转向微信小程序。本次课题就运用了微信小程序技术开发一个沈阳工业大学助农扶贫微信小程序。

本次使用数据库工具MySQL以及微信开发者工具开发的沈阳工业大学助农扶贫微信小程序,可以实现目标用户群需要的功能,其中管理员管理注册农户以及注册用户的信息,统计订单,管理商品,商品评价,商品退货等信息。农户管理销售的商品,对订单商品进行发货,管理配送订单,管理商品评价,审核商品退货信息。用户收藏商品,购买商品,支付订单,申请商品退货,评价订单商品。

总之,沈阳工业大学助农扶贫微信小程序可以更加方便用户购买农户销售的商品,也让农户方便管理销售的商品,管理商品订单以及订单配送信息,该平台不仅能够帮助农户销售农产品,还能增加农户的收入。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

开发环境

编程语言:Java
数据库 :Mysql
系统架构:B/S
后端框架:SSM
编译工具:idea或者eclipse,微信开发者工具,jdk1.8,maven
支持定做:java/php/python/android/小程序vue/爬虫/c#/asp.net

系统实现

5.1 管理员功能实现
5.1.1 农户管理
管理农户信息是管理员的功能。其运行效果图如下。农户注册的资料需要管理员查看并审核。农户的资料包括联系方式,姓名,头像,地址等信息。
在这里插入图片描述

图5.1 农户管理页面

5.1.2 用户管理
管理用户信息是管理员的功能。其运行效果图如下。用户在小程序端注册的信息需要管理员查看,其信息包括手机号码,邮箱,姓名,头像等资料。
在这里插入图片描述

图5.2 用户管理页面

5.1.3 订单统计
统计订单数据是管理员的功能。其运行效果图如下。管理员可以通过订单的统计报表查看各个商品的销售总金额信息。
在这里插入图片描述

图5.3 订单统计页面

5.2 农户功能实现
5.2.1 商品信息管理
管理商品信息是农户的功能。其运行效果图如下。农户把需要销售的商品的资料进行发布,在当期页面对销售商品的信息进行修改,比如修改价格,修改数量,修改图片等操作,农户也能删除销售的商品信息,或者是查看用户对农户销售的商品的评论信息。
在这里插入图片描述

图5.4 商品信息管理页面

5.2.2 订单信息管理
管理订单信息是农户的功能。其运行效果图如下。农户销售的商品一旦被用户购买,其购买订单需要农户进行查看,比如订单是否支付以及订单的收货地址信息等,农户需要对订单进行发货。
在这里插入图片描述

图5.5 订单信息管理页面

5.2.3 订单配送管理
管理订单配送信息是农户的功能。其运行效果图如下。农户对订单配送信息进行修改,可以查看订单配送详细信息,可以查询订单配送信息。
在这里插入图片描述

图5.6 订单配送管理页面

5.2.4 商品评价管理
管理商品评价信息是农户的功能。其运行效果图如下。用户对购买的商品发布的评价信息需要农户在后台查看,商品评价包括了商品的评分信息,用户对商品的评价内容信息等。
在这里插入图片描述

图5.7 商品评价管理页面

5.2.5 商品退货管理
管理商品退货信息是农户的功能。其运行效果图如下。用户在小程序端申请的商品退货,需要农户及时审核处理,农户同意用户退货商品,用户才可以退回购买的商品。
在这里插入图片描述

图5.8 商品退货管理页面

5.3 用户功能实现
5.3.1 商品信息
用户可以查看商品。其运行效果图如下。用户在本页面点击红色五角星收藏商品,点击页面底端的购买按钮购买商品。
在这里插入图片描述

图5.9 商品信息页面

5.3.2 订单信息
用户可以查看订单信息。其运行效果图如下。用户在本页面查看订单,支付订单,评价订单商品,对订单商品申请退货。
在这里插入图片描述

图5.10 订单信息页面

5.3.3 商品评价
用户可以查看商品评价信息。其运行效果图如下。用户对订单商品进行评价之后,需要在本页面查看评价信息。
在这里插入图片描述

图5.11 商品评价页面

5.3.4 商品退货
用户可以查看商品退货信息是否通过审核。其运行效果图如下。用户申请了商品退货之后,需要在本页面查看退货的商品以及农户对退货商品的审核回复信息。
在这里插入图片描述

图5.12 商品退货页面

核心代码

package com.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
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 com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.ShangpinxinxiEntity;
import com.entity.view.ShangpinxinxiView;

import com.service.ShangpinxinxiService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 商品信息
 * 后端接口
 * @author
 * @email
 * @date
 */
@RestController
@RequestMapping("/shangpinxinxi")
public class ShangpinxinxiController {
    @Autowired
    private ShangpinxinxiService shangpinxinxiService;



    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,ShangpinxinxiEntity shangpinxinxi,
		HttpServletRequest request){

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("nonghu")) {
			shangpinxinxi.setNonghuzhanghao((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<ShangpinxinxiEntity> ew = new EntityWrapper<ShangpinxinxiEntity>();
		PageUtils page = shangpinxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, shangpinxinxi), params), params));
        return R.ok().put("data", page);
    }

    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,ShangpinxinxiEntity shangpinxinxi, HttpServletRequest request){
        EntityWrapper<ShangpinxinxiEntity> ew = new EntityWrapper<ShangpinxinxiEntity>();
		PageUtils page = shangpinxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, shangpinxinxi), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( ShangpinxinxiEntity shangpinxinxi){
       	EntityWrapper<ShangpinxinxiEntity> ew = new EntityWrapper<ShangpinxinxiEntity>();
      	ew.allEq(MPUtil.allEQMapPre( shangpinxinxi, "shangpinxinxi"));
        return R.ok().put("data", shangpinxinxiService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(ShangpinxinxiEntity shangpinxinxi){
        EntityWrapper< ShangpinxinxiEntity> ew = new EntityWrapper< ShangpinxinxiEntity>();
 		ew.allEq(MPUtil.allEQMapPre( shangpinxinxi, "shangpinxinxi"));
		ShangpinxinxiView shangpinxinxiView =  shangpinxinxiService.selectView(ew);
		return R.ok("查询商品信息成功").put("data", shangpinxinxiView);
    }

    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        ShangpinxinxiEntity shangpinxinxi = shangpinxinxiService.selectById(id);
        return R.ok().put("data", shangpinxinxi);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        ShangpinxinxiEntity shangpinxinxi = shangpinxinxiService.selectById(id);
        return R.ok().put("data", shangpinxinxi);
    }




    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody ShangpinxinxiEntity shangpinxinxi, HttpServletRequest request){
    	shangpinxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(shangpinxinxi);

        shangpinxinxiService.insert(shangpinxinxi);
        return R.ok();
    }

    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody ShangpinxinxiEntity shangpinxinxi, HttpServletRequest request){
    	shangpinxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(shangpinxinxi);

        shangpinxinxiService.insert(shangpinxinxi);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody ShangpinxinxiEntity shangpinxinxi, HttpServletRequest request){
        //ValidatorUtils.validateEntity(shangpinxinxi);
        shangpinxinxiService.updateById(shangpinxinxi);//全部更新
        return R.ok();
    }


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

    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);

		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}

		Wrapper<ShangpinxinxiEntity> wrapper = new EntityWrapper<ShangpinxinxiEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("nonghu")) {
			wrapper.eq("nonghuzhanghao", (String)request.getSession().getAttribute("username"));
		}

		int count = shangpinxinxiService.selectCount(wrapper);
		return R.ok().put("count", count);
	}



}

论文参考

在这里插入图片描述

目 录
第一章 绪论 1
1.1 研究背景 1
1.2 研究意义 1
1.3 研究内容 2
第二章 开发环境与技术 3
2.1 JSP技术 3
2.2 MySQL数据库 3
2.3 Java语言 4
2.4 SSM框架 4
2.5 微信开发者工具 5
2.6 B/S架构 5
2.7 Tomcat 介绍 5
2.8 MyEclipse开发工具 6
第三章 系统分析 7
3.1可行性分析 7
3.1.1运行可行性分析 7
3.1.2经济可行性分析 7
3.1.3技术可行性分析 7
3.2系统流程分析 8
3.3 系统性能分析 11
3.3.1系统安全性 11
3.3.2系统可扩展性 11
3.3.3系统易维护性 11
3.4系统功能分析 12
第四章 系统设计 16
4.1布局设计原则 16
4.2功能模块设计 17
4.3数据库设计 19
4.3.1数据库E-R图 19
4.3.2 数据库表结构 22
第五章 系统实现 27
5.1 管理员功能实现 27
5.1.1 农户管理 27
5.1.2 用户管理 27
5.1.3 订单统计 28
5.2 农户功能实现 29
5.2.1 商品信息管理 29
5.2.2 订单信息管理 29
5.2.3 订单配送管理 30
5.2.4 商品评价管理 30
5.2.5 商品退货管理 31
5.3 用户功能实现 31
5.3.1 商品信息 31
5.3.2 订单信息 32
5.3.3 商品评价 33
5.3.4 商品退货 34
第六章 系统测试 36
6.1 测试的任务  36
6.2 测试的目标  36
6.3 测试方案  36
6.4 系统功能测试 38
6.4.1 在线支付功能测试 38
6.4.2 收藏商品功能测试 40
6.5 测试的结果 42
结 论 43
参考文献 44
致 谢 45

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_3306428634

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值