沙箱支付springboot药品销售系统药品商城java药店系统

本文主要是介绍沙箱支付springboot药品销售系统药品商城java药店系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

开发技术:ssm springboot2.1.4 springMVC mybatis 前端jsp页面

开发工具:eclipse或idea mysql5.x maven环境

管理员功能:

用户管理:用户列表 可删除用户

商品管理:查看 修改 删除 添加活动,添加商品分类,添加商品

信息 库存量 图片等信息

活动管理:添加活动,每个商品可以对应活动。

(只能满足一个活动。用户实际付款会判断是否享有活动,对应实

付金额计算。)

订单管理:查询用户未发货 待收货 已完成订单,可对未发货商品

发货。

退出系统

用户端:

登录注册:登录需要输入验证码,注册校验密码长度

商城首页模糊搜索商品

对商品分类搜索

查看商品详情信息 描述 评论等信息

用户购买商品可以加入购物车 加入收藏

结算购物车时会校验商品库存量

下单后结算金额时,会判断是否享有活动,计算实付金额

用户中心:

可以查看个人信息,修改信息,修改密码

地址管理:用户收货地址管理,添加 修改 删除地址 可以添加多个

地址,下单的时候选择一个。

用户订单管理:查看自己下单信息 未完成 已完成订单,

用户购买-->后台发货-用户收货-订单完成

对完成订单的商品可以评论 评论后,可以在对应的商品详情页下方

展示

对已完成订单评论 删除。

收藏管理:对商品收藏,也可以删除


主页:http://localhost:8080/shop/

后台地址
http://localhost:8080/shop/admin/login   admin  12345678

支付宝沙箱环境配置步骤:

账号密码申请以及 秘钥等。
https://opendocs.alipay.com/open/200/105311
https://www.cnblogs.com/thcy1314/articles/10511146.html

在代码中
第一步 : 引入依赖
   <dependency>
            <groupId>com.alipay.sdk</groupId>
            <artifactId>alipay-sdk-java</artifactId>
            <version>3.1.0</version>
        </dependency>
       
第二步:配置支付宝沙箱支付配置类
秘钥  回调地址等信息
已配置好可以直接用  

第三步  加入业务

得到result支付的二维码页面

package com.shop.controller.front;import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.shop.entity.*;
import com.shop.entity.*;
import com.shop.service.AddressService;
import com.shop.service.GoodsService;
import com.shop.service.OrderService;
import com.shop.service.UserService;
import com.shop.util.Md5Util;
import com.shop.util.Msg;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;@Controller
public class CustomerController {@RequestMapping("/login")public String loginView() {return "login";}@Autowiredprivate UserService userService;@RequestMapping("/register")public String register() {return "register";}@RequestMapping("/registerresult")public String registerResult(User user, Model registerResult) {List<User> userList = new ArrayList<>();user.setPassword(Md5Util.MD5Encode(user.getPassword(), "utf-8"));UserExample userExample = new UserExample();userExample.or().andUsernameLike(user.getUsername());userList = userService.selectByExample(userExample);if (!userList.isEmpty()) {registerResult.addAttribute("errorMsg", "用户名被占用");return "register";} else {Date RegTime = new Date();user.setRegtime(RegTime);userService.insertSelective(user);return "redirect:/login";}}@RequestMapping("/loginconfirm")public String loginConfirm(User user, Model loginResult, HttpServletRequest request, @RequestParam("confirmlogo") String confirmlogo) {System.out.println("传进来的用户帐号和密码为:" + user);//进行用户密码MD5加密验证user.setPassword(Md5Util.MD5Encode(user.getPassword(), "UTF-8"));HttpSession session = request.getSession();String verificationCode = (String) session.getAttribute("certCode");if (!confirmlogo.equals(verificationCode)) {loginResult.addAttribute("errorMsg", "验证码错误");return "login";}List<User> userList = new ArrayList<User>();UserExample userExample = new UserExample();userExample.or().andUsernameEqualTo(user.getUsername()).andPasswordEqualTo(user.getPassword());userList = userService.selectByExample(userExample);if (!userList.isEmpty()) {session.setAttribute("user", userList.get(0));return "redirect:/main";} else {loginResult.addAttribute("errorMsg", "用户名与密码不匹配");return "login";}}@RequestMapping("/information")public String information(Model userModel, HttpServletRequest request) {HttpSession session = request.getSession();User user;Integer userId;user = (User) session.getAttribute("user");if (user == null) {return "redirect:/login";}userId = user.getUserid();user = userService.selectByPrimaryKey(userId);userModel.addAttribute("user", user);return "information";}@RequestMapping("/saveInfo")@ResponseBodypublic Msg saveInfo(String name, String email, String telephone, HttpServletRequest request) {try {HttpSession session = request.getSession();User user = (User) session.getAttribute("user");Integer userid = user.getUserid();User user1 =  userService.selectByPrimaryKey(userid);user1.setEmail(email);user1.setTelephone(telephone);userService.updateByPrimaryKeySelective(user1);return Msg.success("更新成功");} catch (Exception e) {e.printStackTrace();return Msg.fail("更新失败");}}@Autowiredprivate AddressService addressService;@RequestMapping("/info/address")public String address(HttpServletRequest request, Model addressModel) {HttpSession session = request.getSession();User user = (User) session.getAttribute("user");if (user == null) {return "redirect:/login";}AddressExample addressExample = new AddressExample();addressExample.or().andUseridEqualTo(user.getUserid());List<Address> addressList = addressService.getAllAddressByExample(addressExample);addressModel.addAttribute("addressList", addressList);return "address";}@RequestMapping("/saveAddr")@ResponseBodypublic Msg saveAddr(Address address) {addressService.updateByPrimaryKeySelective(address);return Msg.success("修改成功");}@RequestMapping("/deleteAddr")@ResponseBodypublic Msg deleteAddr(Address address) {addressService.deleteByPrimaryKey(address.getAddressid());return Msg.success("删除成功");}@RequestMapping("/insertAddr")@ResponseBodypublic Msg insertAddr(Address address, HttpServletRequest request) {HttpSession session = request.getSession();User user = new User();user = (User) session.getAttribute("user");address.setUserid(user.getUserid());addressService.insertSelective(address);return Msg.success("添加成功");}@Autowiredprivate OrderService orderService;@Autowiredprivate GoodsService goodsService;@RequestMapping("/info/list")public String list(HttpServletRequest request, Model orderModel) {HttpSession session = request.getSession();User user;user = (User) session.getAttribute("user");if (user == null) {return "redirect:/login";}OrderExample orderExample = new OrderExample();orderExample.or().andUseridEqualTo(user.getUserid());List<Order> orderList = orderService.selectOrderByExample(orderExample);orderModel.addAttribute("orderList", orderList);Order order;OrderItem orderItem;List<OrderItem> orderItemList = new ArrayList<>();Goods goods;Address address;for (Integer i = 0; i < orderList.size(); i++) {order = orderList.get(i);OrderItemExample orderItemExample = new OrderItemExample();orderItemExample.or().andOrderidEqualTo(order.getOrderid());orderItemList = orderService.getOrderItemByExample(orderItemExample);List<Goods> goodsList = new ArrayList<>();List<Integer> goodsIdList = new ArrayList<>();for (Integer j = 0; j < orderItemList.size(); j++) {orderItem = orderItemList.get(j);Goods good =  goodsService.selectById(orderItem.getGoodsid());good.setCategory(orderItem.getNum());goodsList.add(good);}order.setGoodsInfo(goodsList);address = addressService.selectByPrimaryKey(order.getAddressid());order.setAddress(address);orderList.set(i, order);}orderModel.addAttribute("orderList", orderList);return "list";}@RequestMapping("/deleteList")@ResponseBodypublic Msg deleteList(Order order) {orderService.deleteById(order.getOrderid());return Msg.success("删除成功");}/*** 收藏商品* @param pn* @param request* @param model* @return*/@RequestMapping("/info/favorite")public String showFavorite(@RequestParam(value = "page", defaultValue = "1") Integer pn, HttpServletRequest request, Model model) {HttpSession session = request.getSession();User user = (User) session.getAttribute("user");if (user == null) {return "redirect:/login";}//一页显示几个数据PageHelper.startPage(pn, 16);FavoriteExample favoriteExample = new FavoriteExample();favoriteExample.or().andUseridEqualTo(user.getUserid());List<Favorite> favoriteList = goodsService.selectFavByExample(favoriteExample);List<Integer> goodsIdList = new ArrayList<Integer>();for (Favorite tmp : favoriteList) {goodsIdList.add(tmp.getGoodsid());}List<Goods> goodsList = new ArrayList<>();if(goodsIdList!=null && goodsIdList.size()>0){for (Integer id:goodsIdList) {goodsList.add( goodsService.selectById(id)) ;}}//获取图片地址for (int i = 0; i < goodsList.size(); i++) {Goods goods = goodsList.get(i);List<ImagePath> imagePathList = goodsService.findImagePath(goods.getGoodsid());goods.setImagePaths(imagePathList);//判断是否收藏goods.setFav(true);goodsList.set(i, goods);}//显示几个页号PageInfo page = new PageInfo(goodsList, 5);model.addAttribute("pageInfo", page);return "favorite";}@RequestMapping("/savePsw")@ResponseBodypublic Msg savePsw(String Psw, HttpServletRequest request) {HttpSession session = request.getSession();User user = (User) session.getAttribute("user");user.setPassword(Md5Util.MD5Encode(Psw, "UTF-8"));userService.updateByPrimaryKeySelective(user);return Msg.success("修改密码成功");}@RequestMapping("/finishList")@ResponseBodypublic Msg finishiList(Integer orderid) {Order order = orderService.selectByPrimaryKey(orderid);order.setIsreceive(true);order.setIscomplete(true);orderService.updateOrderByKey(order);return Msg.success("完成订单成功");}@RequestMapping("/logout")public String logout(HttpServletRequest request) {HttpSession session = request.getSession();session.removeAttribute("user");return "redirect:/login";}}

 

这篇关于沙箱支付springboot药品销售系统药品商城java药店系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/416938

相关文章

Java实现字节字符转bcd编码

《Java实现字节字符转bcd编码》BCD是一种将十进制数字编码为二进制的表示方式,常用于数字显示和存储,本文将介绍如何在Java中实现字节字符转BCD码的过程,需要的小伙伴可以了解下... 目录前言BCD码是什么Java实现字节转bcd编码方法补充总结前言BCD码(Binary-Coded Decima

SpringBoot全局域名替换的实现

《SpringBoot全局域名替换的实现》本文主要介绍了SpringBoot全局域名替换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录 项目结构⚙️ 配置文件application.yml️ 配置类AppProperties.Ja

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

SpringBoot日志级别与日志分组详解

《SpringBoot日志级别与日志分组详解》文章介绍了日志级别(ALL至OFF)及其作用,说明SpringBoot默认日志级别为INFO,可通过application.properties调整全局或... 目录日志级别1、级别内容2、调整日志级别调整默认日志级别调整指定类的日志级别项目开发过程中,利用日志

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有