天天看點

社群團購|生鮮團購|基于Springboot+Vue實作前後端分離社群團購前言:

作者簡介:全棧開發工程,從事Java、Python、前端、小程式方面的開發和研究,對大資料應用與開發比較感興趣,

主要内容:Java項目、前端項目、Python項目、小程式開發、大資料項目、單片機

收藏點贊不迷路  關注作者有好處

文末擷取源碼 

感謝您的關注,請收藏以免忘記,點贊以示鼓勵,評論給以建議,愛你喲

項目編号:BS-SC-046

前言:

随着社會的快速發展,計算機的影響是全面且深入的。人們生活水準的不斷提高,日常生活中人們對社群團購商城方面的要求也在不斷提高,購物的人數更是不斷增加,使得社群團購商城的開發成為必需而且緊迫的事情。社群團購商城主要是借助計算機,通過對社群團購商城所需的資訊管理,增加使用者的選擇,同時也友善對廣大社群團購商城的及時查詢、修改以及對社群團購商城的及時了解。社群團購商城對使用者帶來了更多的便利,該系統通過和資料庫管理系統軟體協作來滿足使用者的需求。計算機技術在現代管理中的應用,使計算機成為人們應用現代技術的重要工具。能夠有效的解決擷取資訊便捷化、全面化的問題,提高效率。

本社群團購商城主要牽扯到程式,資料庫與計算機技術等。覆寫知識面大,可以大大的提高系統人員工作效率。

目前許多人仍将傳統的紙質工具作為資訊管理的主要工具,而網絡技術的應用隻是起到輔助作用。在對網絡工具的認知程度上,較為傳統的office軟體等仍是人們使用的主要工具,而相對全面且專業的社群團購商城的資訊管理軟體仍沒有得到大多數人的了解或認可。本選題則旨在通過标簽分類管理等方式,實作管理者:首頁、個人中心、使用者管理、商品分類管理、商品資訊管理、訂單評價管理、系統管理、訂單管理,使用者;首頁、個人中心、訂單評價管理、我的收藏管理、訂單管理,前台首頁;首頁、商品資訊、商品資訊、個人中心、背景管理、購物車、線上客服等功能。進而達到對社群團購商城資訊的高效管理。

一,項目簡介

1、關于社群團購商城的基本要求

(1)功能要求:可以管理首頁、個人中心、使用者管理、商品分類管理、商品資訊管理、訂單評價管理、系統管理、訂單管理等功能子產品。

(2)性能:在不同作業系統上均能無差錯實作在不同類型的使用者登入相應界面後能不出差錯、友善地進行預期操作。

(3)安全與保密要求:使用者都必須通過注冊、登入才能進入系統,并且使用者的權限也需要根據使用者的類型進行限定。

(4)環境要求:支援多種平台,可在Windows系列、Vista系統等多種作業系統下使用。

2、開發目标

社群團購商城的主要開發目标如下:

(1)實作管理系統資訊關系的系統化、規範化和自動化;

(2)減少維護人員的工作量以及實作使用者對資訊的控制和管理。

(3)友善查詢資訊及管理資訊等;

(4)通過網絡操作,改善處理問題的效率,提高操作人員使用率;

(5)考慮到使用者多樣性特點,要求界面簡單,操作簡便。

3、設計原則

本社群團購商城采用Java技術,Mysql資料庫開發,充分保證了系統穩定性、完整性。

社群團購商城的設計與實作的設計思想如下:

  1. 操作簡單友善、系統界面安全良好、簡單明了的頁面布局、友善查詢相關資訊。
  2. 即時可見:對社群團購商城資訊的處理将立馬在對應地點可以查詢到,進而實作“即時釋出、即時見效”的系統功能。

二,環境介紹

語言環境:Java:  jdk1.8

資料庫:Mysql: mysql5.7

應用伺服器:Tomcat:  tomcat8.5.31

開發工具:IDEA或eclipse

背景開發技術: Springboot+Mybatis-plus

前端開發技術:Vue+ElementUI

三,系統展示

5.1管理者功能子產品

管理者登入,通過填寫使用者名、密碼、角色進行登入,如圖5-1所示。

圖5-1管理者

社群團購|生鮮團購|基于Springboot+Vue實作前後端分離社群團購前言:

登入界面圖

管理者登入進入社群團購商城可以檢視首頁、個人中心、使用者管理、商品分類管理、商品資訊管理、系統管理、訂單管理等。

個人中心,在個人中心頁面中可以通過填寫原密碼、新密碼、确認密碼等資訊進行添加、修改,如圖5-2所示。還可以根據需要對個人資訊進行添加,修改或删除等詳細操作,如圖5-3所示。

社群團購|生鮮團購|基于Springboot+Vue實作前後端分離社群團購前言:

圖5-2個人中心界面圖

社群團購|生鮮團購|基于Springboot+Vue實作前後端分離社群團購前言:

圖5-3個人資訊界面圖

使用者管理,在使用者管理頁面中可以檢視使用者名、姓名、性别、頭像、聯系電話等資訊,并可根據需要對使用者管理進行詳情、修改或删除等操作,如圖5-4所示。

社群團購|生鮮團購|基于Springboot+Vue實作前後端分離社群團購前言:

圖5-4使用者管理界面圖

商品分類管理,在商品分類管理頁面中可以檢視商品分類等資訊,并可根據需要對商品分類管理進行詳情、修改或删除等詳細操作,如圖5-5所示。

社群團購|生鮮團購|基于Springboot+Vue實作前後端分離社群團購前言:

圖5-5商品分類管理界面圖

商品資訊管理,在商品資訊管理頁面中可以檢視商品名稱、商品分類、圖檔、品牌、規格、價格等内容,并且根據需要對商品資訊管理進行詳情,修改或删除等詳細操作,如圖5-6所示。

社群團購|生鮮團購|基于Springboot+Vue實作前後端分離社群團購前言:

圖5-6商品資訊管理界面圖

輪播圖;該頁面為輪播圖管理界面。管理者可以在此頁面進行首頁輪播圖的管理,通過建立操作可在輪播圖中加入新的圖檔,還可以對以上傳的圖檔進行修改操作,以及圖檔的删除操作,如圖5-7所示。

社群團購|生鮮團購|基于Springboot+Vue實作前後端分離社群團購前言:

圖5-7輪播圖管理界面圖

訂單管理,在訂單管理頁面中可以檢視訂單編号、商品名稱、商品圖檔、購買數量、價格/積分、折扣價格、總價格/總積分、折扣總價格、支付類型、狀态、位址等内容,并且根據需要對訂單管理進行詳情、修改或删除等詳細操作,如圖5-8所示。

社群團購|生鮮團購|基于Springboot+Vue實作前後端分離社群團購前言:

圖5-8訂單管理界面圖

5.2使用者功能子產品

使用者登入進入社群團購商城可以檢視首頁、個人中心等内容。

社群團購|生鮮團購|基于Springboot+Vue實作前後端分離社群團購前言:

5.3前台首頁功能子產品

社群團購商城,在社群團購商城可以檢視首頁、商品資訊、公告資訊、個人中心、背景管理、購物車等内容,如圖5-13所示。

社群團購|生鮮團購|基于Springboot+Vue實作前後端分離社群團購前言:

圖5-13前台首頁界面圖

使用者登入、使用者注冊,通過注冊擷取使用者名、密碼、姓名、聯系電話等資訊進行注冊、登入,如圖5-14所示。

社群團購|生鮮團購|基于Springboot+Vue實作前後端分離社群團購前言:
社群團購|生鮮團購|基于Springboot+Vue實作前後端分離社群團購前言:

圖5-14使用者登入、使用者注冊界面圖

商品資訊,在商品資訊頁面可以檢視商品名稱、商品分類、圖檔、品牌、規格、價格等資訊進行添加到購物車、立即購買,如圖5-15所示。

社群團購|生鮮團購|基于Springboot+Vue實作前後端分離社群團購前言:

圖5-15商品資訊界面圖

個人中心,在個人中心頁面可以檢視使用者名、姓名、性别、頭像、聯系電話等進行更新資訊、登出如圖5-16所示。

社群團購|生鮮團購|基于Springboot+Vue實作前後端分離社群團購前言:

圖5-16個人中心界面圖

四,核心代碼展示

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.transaction.annotation.Transactional;
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.YonghuEntity;
import com.entity.view.YonghuView;

import com.service.YonghuService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
import java.io.IOException;

/**
 * 使用者
 * 後端接口
 * @author 
 * @email 
 * @date 2022-05-03 22:35:02
 */
@RestController
@RequestMapping("/yonghu")
public class YonghuController {
    @Autowired
    private YonghuService yonghuService;


    
	@Autowired
	private TokenService tokenService;
	
	/**
	 * 登入
	 */
	@IgnoreAuth
	@RequestMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuzhanghao", username));
		if(user==null || !user.getMima().equals(password)) {
			return R.error("賬号或密碼不正确");
		}
		
		String token = tokenService.generateToken(user.getId(), username,"yonghu",  "使用者" );
		return R.ok().put("token", token);
	}
	
	/**
     * 注冊
     */
	@IgnoreAuth
    @RequestMapping("/register")
    public R register(@RequestBody YonghuEntity yonghu){
    	//ValidatorUtils.validateEntity(yonghu);
    	YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuzhanghao", yonghu.getYonghuzhanghao()));
		if(user!=null) {
			return R.error("注冊使用者已存在");
		}
		Long uId = new Date().getTime();
		yonghu.setId(uId);
        yonghuService.insert(yonghu);
        return R.ok();
    }

	
	/**
	 * 退出
	 */
	@RequestMapping("/logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 擷取使用者的session使用者資訊
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        YonghuEntity user = yonghuService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 密碼重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuzhanghao", username));
    	if(user==null) {
    		return R.error("賬号不存在");
    	}
        user.setMima("123456");
        yonghuService.updateById(user);
        return R.ok("密碼已重置為:123456");
    }


    /**
     * 後端清單
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,YonghuEntity yonghu,
		HttpServletRequest request){
        EntityWrapper<YonghuEntity> ew = new EntityWrapper<YonghuEntity>();
		PageUtils page = yonghuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yonghu), params), params));

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

	/**
     * 清單
     */
    @RequestMapping("/lists")
    public R list( YonghuEntity yonghu){
       	EntityWrapper<YonghuEntity> ew = new EntityWrapper<YonghuEntity>();
      	ew.allEq(MPUtil.allEQMapPre( yonghu, "yonghu")); 
        return R.ok().put("data", yonghuService.selectListView(ew));
    }

	 /**
     * 查詢
     */
    @RequestMapping("/query")
    public R query(YonghuEntity yonghu){
        EntityWrapper< YonghuEntity> ew = new EntityWrapper< YonghuEntity>();
 		ew.allEq(MPUtil.allEQMapPre( yonghu, "yonghu")); 
		YonghuView yonghuView =  yonghuService.selectView(ew);
		return R.ok("查詢使用者成功").put("data", yonghuView);
    }
	
    /**
     * 後端詳情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        YonghuEntity yonghu = yonghuService.selectById(id);
        return R.ok().put("data", yonghu);
    }

    /**
     * 前端詳情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        YonghuEntity yonghu = yonghuService.selectById(id);
        return R.ok().put("data", yonghu);
    }
    



    /**
     * 後端儲存
     */
    @RequestMapping("/save")
    public R save(@RequestBody YonghuEntity yonghu, HttpServletRequest request){
    	yonghu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(yonghu);
    	YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuzhanghao", yonghu.getYonghuzhanghao()));
		if(user!=null) {
			return R.error("使用者已存在");
		}
		yonghu.setId(new Date().getTime());
        yonghuService.insert(yonghu);
        return R.ok();
    }
    
    /**
     * 前端儲存
     */
    @RequestMapping("/add")
    public R add(@RequestBody YonghuEntity yonghu, HttpServletRequest request){
    	yonghu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(yonghu);
    	YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuzhanghao", yonghu.getYonghuzhanghao()));
		if(user!=null) {
			return R.error("使用者已存在");
		}
		yonghu.setId(new Date().getTime());
        yonghuService.insert(yonghu);
        return R.ok();
    }

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

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        yonghuService.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<YonghuEntity> wrapper = new EntityWrapper<YonghuEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


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







}
           
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.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());
		System.out.println(token);
		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);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("使用者名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}
           
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.transaction.annotation.Transactional;
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.StoreupEntity;
import com.entity.view.StoreupView;

import com.service.StoreupService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
import java.io.IOException;

/**
 * 收藏表
 * 後端接口
 * @author 
 * @email 
 * @date 2022-05-03 22:35:02
 */
@RestController
@RequestMapping("/storeup")
public class StoreupController {
    @Autowired
    private StoreupService storeupService;


    


    /**
     * 後端清單
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,StoreupEntity storeup,
		HttpServletRequest request){
    	if(!request.getSession().getAttribute("role").toString().equals("商家")) {
    		storeup.setUserid((Long)request.getSession().getAttribute("userId"));
    	}
        EntityWrapper<StoreupEntity> ew = new EntityWrapper<StoreupEntity>();
		PageUtils page = storeupService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, storeup), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端清單
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,StoreupEntity storeup, 
		HttpServletRequest request){
    	if(!request.getSession().getAttribute("role").toString().equals("商家")) {
    		storeup.setUserid((Long)request.getSession().getAttribute("userId"));
    	}
        EntityWrapper<StoreupEntity> ew = new EntityWrapper<StoreupEntity>();
		PageUtils page = storeupService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, storeup), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 清單
     */
    @RequestMapping("/lists")
    public R list( StoreupEntity storeup){
       	EntityWrapper<StoreupEntity> ew = new EntityWrapper<StoreupEntity>();
      	ew.allEq(MPUtil.allEQMapPre( storeup, "storeup")); 
        return R.ok().put("data", storeupService.selectListView(ew));
    }

	 /**
     * 查詢
     */
    @RequestMapping("/query")
    public R query(StoreupEntity storeup){
        EntityWrapper< StoreupEntity> ew = new EntityWrapper< StoreupEntity>();
 		ew.allEq(MPUtil.allEQMapPre( storeup, "storeup")); 
		StoreupView storeupView =  storeupService.selectView(ew);
		return R.ok("查詢收藏表成功").put("data", storeupView);
    }
	
    /**
     * 後端詳情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        StoreupEntity storeup = storeupService.selectById(id);
        return R.ok().put("data", storeup);
    }

    /**
     * 前端詳情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        StoreupEntity storeup = storeupService.selectById(id);
        return R.ok().put("data", storeup);
    }
    



    /**
     * 後端儲存
     */
    @RequestMapping("/save")
    public R save(@RequestBody StoreupEntity storeup, HttpServletRequest request){
    	storeup.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(storeup);
    	storeup.setUserid((Long)request.getSession().getAttribute("userId"));
        storeupService.insert(storeup);
        return R.ok();
    }
    
    /**
     * 前端儲存
     */
    @RequestMapping("/add")
    public R add(@RequestBody StoreupEntity storeup, HttpServletRequest request){
    	storeup.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(storeup);
    	storeup.setUserid((Long)request.getSession().getAttribute("userId"));
        storeupService.insert(storeup);
        return R.ok();
    }

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

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        storeupService.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<StoreupEntity> wrapper = new EntityWrapper<StoreupEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}
		if(!request.getSession().getAttribute("role").toString().equals("商家")) {
    		wrapper.eq("userid", (Long)request.getSession().getAttribute("userId"));
    	}


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







}
           

五,項目總結

随着科學技術的飛速發展,社會的方方面面、各行各業都在努力與現代的先進技術接軌,通過科技手段來提高自身的優勢,社群團購商城當然也不能排除在外。社群團購商城是以實際運用為開發背景,運用軟體工程原理和開發方法,采用springboot架構建構的一個管理系統。整個開發過程首先對軟體系統進行需求分析,得出系統的主要功能。接着對系統進行總體設計和詳細設計。總體設計主要包括系統功能設計、系統總體結構設計、系統資料結構設計和系統安全設計等;詳細設計主要包括系統資料庫通路的實作,主要功能子產品的具體實作,子產品實作關鍵代碼等。最後對系統進行功能測試,并對測試結果進行分析總結,得出系統中存在的不足及需要改進的地方,為以後的系統維護提供了友善,同時也為今後開發類似系統提供了借鑒和幫助。這種個性化的網上管理系統特别注重互動協調與管理的互相配合,激發了管理人員的創造性與主動性,對社群團購商城而言非常有利。

本社群團購商城采用的資料庫是Mysql,使用springboot架構開發。在設計過程中,充分保證了系統代碼的良好可讀性、實用性、易擴充性、通用性、便于後期維護、操作友善以及頁面簡潔等特點。