ssm604基于Java Web的怀旧唱片售卖系统+vue【已测试】

前言:👩‍💻 计算机行业的同仁们,大家好!作为专注于Java领域多年的开发者,我非常理解实践案例的重要性。以下是一些我认为有助于提升你们技能的资源:

👩‍💻 SpringBoot的精选案例推介!🔥
👩‍💻 想要把握小程序开发的精髓?这里有你需要的优选案例!🚀

点开文末链接,即可获取这些精品案例的源码。分享知识,共同进步!👇👇
📚 掌握这些案例,让你的编程之路更加顺畅。立即查看详情和获取源码!

希望这些资料能帮助你们在技术旅程中更进一步!🌟


项目名

 ssm604基于Java Web的怀旧唱片售卖系统+vue【已测试】
技术栈

 
SpringBoot+Vue+小程序+MySQL+Maven


一、-环境介绍

1.1 运行环境

 
开发语言:Java
数据库:MySQL
系统架构:B/S
后端:SpringBoot(MyBatis)
前端:Vue
工具:IDEA,JDK1.8,Maven

二、ssm604基于Java Web的怀旧唱片售卖系统+vue【已测试】-系统介绍

 
2.1 项目介绍

传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装怀旧唱片售卖系统软件来发挥其高效地信息处理的作用,可以规范信息管理流程,让管理工作可以系统化和程序化,同时,怀旧唱片售卖系统的有效运用可以帮助管理人员准确快速地处理信息。

怀旧唱片售卖系统在对开发工具的选择上也很慎重,为了便于开发实现,选择的开发工具为Eclipse,选择的数据库工具为Mysql。以此搭建开发环境实现怀旧唱片售卖系统的功能。其中管理员管理用户,新闻公告。

怀旧唱片售卖系统是一款运用软件开发技术设计实现的应用系统,在信息处理上可以达到快速的目的,不管是针对数据添加,数据维护和统计,以及数据查询等处理要求,怀旧唱片售卖系统都可以轻松应对。

关键词:怀旧唱片售卖系统;SSM框架,系统分析,数据库设计

2.2 功能模块

 


三、ssm604基于Java Web的怀旧唱片售卖系统+vue【已测试】-系统展示

 
3.1部分功能图文展示


四、ssm604基于Java Web的怀旧唱片售卖系统+vue【已测试】-部分代码设计

 
4.1.部分代码以及数据库如下:

表4.1收货地址表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

yonghu_id

Integer

创建用户

3

address_name

String

收货人

4

address_phone

String

电话

5

address_dizhi

String

地址

6

isdefault_types

Integer

是否默认地址

7

insert_time

Date

添加时间

8

update_time

Date

修改时间

9

create_time

Date

创建时间

表4.2购物车表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

yonghu_id

Integer

所属用户

3

changpian_id

Integer

商品

4

buy_number

Integer

购买数量

5

create_time

Date

添加时间

6

update_time

Date

更新时间

7

insert_time

Date

创建时间

表4.3商品表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

shangjia_id

Integer

商家

3

changpian_name

String

商品名称

4

changpian_photo

String

商品照片

5

changpian_types

Integer

商品类型

6

changpian_kucun_number

Integer

商品库存

7

changpian_old_money

BigDecimal

商品原价

8

changpian_price

Integer

购买获得积分

9

changpian_new_money

BigDecimal

现价

10

changpian_clicknum

Integer

点击次数

11

shangxia_types

Integer

是否上架

12

changpian_delete

Integer

逻辑删除

13

changpian_content

String

商品简介

14

create_time

Date

创建时间

表4.4商品评价表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

changpian_id

Integer

商品

3

yonghu_id

Integer

用户

4

changpian_commentback_text

String

评价内容

5

reply_text

String

回复内容

6

insert_time

Date

评价时间

7

update_time

Date

回复时间

8

create_time

Date

创建时间

表4.5商品订单表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

changpian_order_uuid_number

String

订单号

3

address_id

Integer

送货地址

4

changpian_id

Integer

商品

5

yonghu_id

Integer

用户

6

buy_number

Integer

购买数量

7

changpian_order_courier_number

String

快递单号

8

changpian_order_courier_name

String

快递公司

9

changpian_order_true_price

BigDecimal

实付价格

10

changpian_order_types

Integer

订单类型

11

changpian_order_payment_types

Integer

支付类型

12

insert_time

Date

订单创建时间

13

create_time

Date

创建时间

表4.6字典表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

dic_code

String

字段

3

dic_name

String

字段名

4

code_index

Integer

编码

5

index_name

String

编码名字

6

super_id

Integer

父字段id

7

beizhu

String

备注

8

create_time

Date

创建时间

表4.7公告信息表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

news_name

String

公告标题

3

news_photo

String

公告图片

4

news_types

Integer

公告类型

5

news_content

String

公告详情

6

create_time

Date

创建时间

表4.8用户表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

yonghu_name

String

用户姓名

3

yonghu_phone

String

用户手机号

4

yonghu_id_number

String

用户身份证号

5

yonghu_photo

String

用户头像

6

yonghu_email

String

电子邮箱

7

yonghu_sum_jifen

BigDecimal

总积分

8

huiyuandengji_types

Integer

会员等级

9

create_time

Date

创建时间

表4.9用户表表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

username

String

用户名

3

password

String

密码

4

role

String

角色

5

addtime

Date

新增时间


package com.controller;import java.io.File;
import java.math.BigDecimal;
import java.net.URL;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.*;
import java.lang.reflect.InvocationTargetException;import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.*;
import com.entity.view.*;
import com.service.*;
import com.utils.PageUtils;
import com.utils.R;
import com.alibaba.fastjson.*;/*** 商品订单* 后端接口* @author* @email
*/
@RestController
@Controller
@RequestMapping("/changpianOrder")
public class ChangpianOrderController {private static final Logger logger = LoggerFactory.getLogger(ChangpianOrderController.class);@Autowiredprivate ChangpianOrderService changpianOrderService;@Autowiredprivate TokenService tokenService;@Autowiredprivate DictionaryService dictionaryService;//级联表service@Autowiredprivate AddressService addressService;@Autowiredprivate ChangpianService changpianService;@Autowiredprivate YonghuService yonghuService;
@Autowired
private CartService cartService;
@Autowired
private ChangpianCommentbackService changpianCommentbackService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));String role = String.valueOf(request.getSession().getAttribute("role"));if(false)return R.error(511,"永不会进入");else if("用户".equals(role))params.put("yonghuId",request.getSession().getAttribute("userId"));if(params.get("orderBy")==null || params.get("orderBy")==""){params.put("orderBy","id");}PageUtils page = changpianOrderService.queryPage(params);//字典表数据转换List<ChangpianOrderView> list =(List<ChangpianOrderView>)page.getList();for(ChangpianOrderView c:list){//修改对应字典表字段dictionaryService.dictionaryConvert(c, request);}return R.ok().put("data", page);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id, HttpServletRequest request){logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);ChangpianOrderEntity changpianOrder = changpianOrderService.selectById(id);if(changpianOrder !=null){//entity转viewChangpianOrderView view = new ChangpianOrderView();BeanUtils.copyProperties( changpianOrder , view );//把实体数据重构到view中//级联表AddressEntity address = addressService.selectById(changpianOrder.getAddressId());if(address != null){BeanUtils.copyProperties( address , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "yonghuId"});//把级联的数据添加到view中,并排除id和创建时间字段view.setAddressId(address.getId());view.setAddressYonghuId(address.getYonghuId());}//级联表ChangpianEntity changpian = changpianService.selectById(changpianOrder.getChangpianId());if(changpian != null){BeanUtils.copyProperties( changpian , view ,new String[]{ "id", "createTime", "insertTime", "updateTime"});//把级联的数据添加到view中,并排除id和创建时间字段view.setChangpianId(changpian.getId());}//级联表YonghuEntity yonghu = yonghuService.selectById(changpianOrder.getYonghuId());if(yonghu != null){BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime"});//把级联的数据添加到view中,并排除id和创建时间字段view.setYonghuId(yonghu.getId());}//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);}else {return R.error(511,"查不到数据");}}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody ChangpianOrderEntity changpianOrder, HttpServletRequest request){logger.debug("save方法:,,Controller:{},,changpianOrder:{}",this.getClass().getName(),changpianOrder.toString());String role = String.valueOf(request.getSession().getAttribute("role"));if(false)return R.error(511,"永远不会进入");else if("用户".equals(role))changpianOrder.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));changpianOrder.setInsertTime(new Date());changpianOrder.setCreateTime(new Date());changpianOrderService.insert(changpianOrder);return R.ok();}/*** 后端修改*/@RequestMapping("/update")public R update(@RequestBody ChangpianOrderEntity changpianOrder, HttpServletRequest request){logger.debug("update方法:,,Controller:{},,changpianOrder:{}",this.getClass().getName(),changpianOrder.toString());String role = String.valueOf(request.getSession().getAttribute("role"));
//        if(false)
//            return R.error(511,"永远不会进入");
//        else if("用户".equals(role))
//            changpianOrder.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));//根据字段查询是否有相同数据Wrapper<ChangpianOrderEntity> queryWrapper = new EntityWrapper<ChangpianOrderEntity>().eq("id",0);logger.info("sql语句:"+queryWrapper.getSqlSegment());ChangpianOrderEntity changpianOrderEntity = changpianOrderService.selectOne(queryWrapper);if(changpianOrderEntity==null){changpianOrderService.updateById(changpianOrder);//根据id更新return R.ok();}else {return R.error(511,"表中有相同数据");}}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Integer[] ids){logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());changpianOrderService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 批量上传*/@RequestMapping("/batchInsert")public R save( String fileName){logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);try {List<ChangpianOrderEntity> changpianOrderList = new ArrayList<>();//上传的东西Map<String, List<String>> seachFields= new HashMap<>();//要查询的字段Date date = new Date();int lastIndexOf = fileName.lastIndexOf(".");if(lastIndexOf == -1){return R.error(511,"该文件没有后缀");}else{String suffix = fileName.substring(lastIndexOf);if(!".xls".equals(suffix)){return R.error(511,"只支持后缀为xls的excel文件");}else{URL resource = this.getClass().getClassLoader().getResource("static/upload/" + fileName);//获取文件路径File file = new File(resource.getFile());if(!file.exists()){return R.error(511,"找不到上传文件,请联系管理员");}else{List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件dataList.remove(0);//删除第一行,因为第一行是提示for(List<String> data:dataList){//循环ChangpianOrderEntity changpianOrderEntity = new ChangpianOrderEntity();
//                            changpianOrderEntity.setChangpianOrderUuidNumber(data.get(0));                    //订单号 要改的
//                            changpianOrderEntity.setAddressId(Integer.valueOf(data.get(0)));   //送货地址 要改的
//                            changpianOrderEntity.setChangpianId(Integer.valueOf(data.get(0)));   //商品 要改的
//                            changpianOrderEntity.setYonghuId(Integer.valueOf(data.get(0)));   //用户 要改的
//                            changpianOrderEntity.setBuyNumber(Integer.valueOf(data.get(0)));   //购买数量 要改的
//                            changpianOrderEntity.setChangpianOrderCourierNumber(data.get(0));                    //快递单号 要改的
//                            changpianOrderEntity.setChangpianOrderCourierName(data.get(0));                    //快递公司 要改的
//                            changpianOrderEntity.setChangpianOrderTruePrice(data.get(0));                    //实付价格 要改的
//                            changpianOrderEntity.setChangpianOrderTypes(Integer.valueOf(data.get(0)));   //订单类型 要改的
//                            changpianOrderEntity.setChangpianOrderPaymentTypes(Integer.valueOf(data.get(0)));   //支付类型 要改的
//                            changpianOrderEntity.setInsertTime(date);//时间
//                            changpianOrderEntity.setCreateTime(date);//时间changpianOrderList.add(changpianOrderEntity);//把要查询是否重复的字段放入map中//订单号if(seachFields.containsKey("changpianOrderUuidNumber")){List<String> changpianOrderUuidNumber = seachFields.get("changpianOrderUuidNumber");changpianOrderUuidNumber.add(data.get(0));//要改的}else{List<String> changpianOrderUuidNumber = new ArrayList<>();changpianOrderUuidNumber.add(data.get(0));//要改的seachFields.put("changpianOrderUuidNumber",changpianOrderUuidNumber);}}//查询是否重复//订单号List<ChangpianOrderEntity> changpianOrderEntities_changpianOrderUuidNumber = changpianOrderService.selectList(new EntityWrapper<ChangpianOrderEntity>().in("changpian_order_uuid_number", seachFields.get("changpianOrderUuidNumber")));if(changpianOrderEntities_changpianOrderUuidNumber.size() >0 ){ArrayList<String> repeatFields = new ArrayList<>();for(ChangpianOrderEntity s:changpianOrderEntities_changpianOrderUuidNumber){repeatFields.add(s.getChangpianOrderUuidNumber());}return R.error(511,"数据库的该表中的 [订单号] 字段已经存在 存在数据为:"+repeatFields.toString());}changpianOrderService.insertBatch(changpianOrderList);return R.ok();}}}}catch (Exception e){return R.error(511,"批量插入数据异常,请联系管理员");}}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params, HttpServletRequest request){logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));// 没有指定排序字段就默认id倒序if(StringUtil.isEmpty(String.valueOf(params.get("orderBy")))){params.put("orderBy","id");}PageUtils page = changpianOrderService.queryPage(params);//字典表数据转换List<ChangpianOrderView> list =(List<ChangpianOrderView>)page.getList();for(ChangpianOrderView c:list)dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段return R.ok().put("data", page);}/*** 前端详情*/@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id, HttpServletRequest request){logger.debug("detail方法:,,Controller:{},,id:{}",this.getClass().getName(),id);ChangpianOrderEntity changpianOrder = changpianOrderService.selectById(id);if(changpianOrder !=null){//entity转viewChangpianOrderView view = new ChangpianOrderView();BeanUtils.copyProperties( changpianOrder , view );//把实体数据重构到view中//级联表AddressEntity address = addressService.selectById(changpianOrder.getAddressId());if(address != null){BeanUtils.copyProperties( address , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段view.setAddressId(address.getId());}//级联表ChangpianEntity changpian = changpianService.selectById(changpianOrder.getChangpianId());if(changpian != null){BeanUtils.copyProperties( changpian , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段view.setChangpianId(changpian.getId());}//级联表YonghuEntity yonghu = yonghuService.selectById(changpianOrder.getYonghuId());if(yonghu != null){BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段view.setYonghuId(yonghu.getId());}//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);}else {return R.error(511,"查不到数据");}}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody ChangpianOrderEntity changpianOrder, HttpServletRequest request){logger.debug("add方法:,,Controller:{},,changpianOrder:{}",this.getClass().getName(),changpianOrder.toString());ChangpianEntity changpianEntity = changpianService.selectById(changpianOrder.getChangpianId());if(changpianEntity == null){return R.error(511,"查不到该商品");}// Double changpianNewMoney = changpianEntity.getChangpianNewMoney();if(false){}else if((changpianEntity.getChangpianKucunNumber() -changpianOrder.getBuyNumber())<0){return R.error(511,"购买数量不能大于库存数量");}else if(changpianEntity.getChangpianNewMoney() == null){return R.error(511,"商品价格不能为空");}//计算所获得积分Double buyJifen =0.0;Integer userId = (Integer) request.getSession().getAttribute("userId");changpianOrder.setChangpianOrderTypes(3); //设置订单状态为已支付changpianOrder.setChangpianOrderTruePrice(0.0); //设置实付价格changpianOrder.setYonghuId(userId); //设置订单支付人idchangpianOrder.setChangpianOrderUuidNumber(String.valueOf(new Date().getTime()));changpianOrder.setChangpianOrderPaymentTypes(1);changpianOrder.setInsertTime(new Date());changpianOrder.setCreateTime(new Date());changpianEntity.setChangpianKucunNumber( changpianEntity.getChangpianKucunNumber() -changpianOrder.getBuyNumber());changpianService.updateById(changpianEntity);changpianOrderService.insert(changpianOrder);//新增订单return R.ok();}/*** 添加订单*/@RequestMapping("/order")public R add(@RequestParam Map<String, Object> params, HttpServletRequest request){logger.debug("order方法:,,Controller:{},,params:{}",this.getClass().getName(),params.toString());String changpianOrderUuidNumber = String.valueOf(new Date().getTime());//获取当前登录用户的idInteger userId = (Integer) request.getSession().getAttribute("userId");Integer addressId = Integer.valueOf(String.valueOf(params.get("addressId")));Integer changpianOrderPaymentTypes = Integer.valueOf(String.valueOf(params.get("changpianOrderPaymentTypes")));//支付类型String data = String.valueOf(params.get("changpians"));JSONArray jsonArray = JSON.parseArray(data);List<Map> changpians = JSON.parseObject(jsonArray.toString(), List.class);//获取当前登录用户的个人信息YonghuEntity yonghuEntity = yonghuService.selectById(userId);//当前订单表List<ChangpianOrderEntity> changpianOrderList = new ArrayList<>();//商品表List<ChangpianEntity> changpianList = new ArrayList<>();//购物车idsList<Integer> cartIds = new ArrayList<>();BigDecimal zhekou = new BigDecimal(1.0);// 获取折扣Wrapper<DictionaryEntity> dictionary = new EntityWrapper<DictionaryEntity>().eq("dic_code", "huiyuandengji_types").eq("dic_name", "会员等级类型").eq("code_index", yonghuEntity.getHuiyuandengjiTypes());DictionaryEntity dictionaryEntity = dictionaryService.selectOne(dictionary);if(dictionaryEntity != null ){zhekou = BigDecimal.valueOf(Double.valueOf(dictionaryEntity.getBeizhu()));}//循环取出需要的数据for (Map<String, Object> map : changpians) {//取值Integer changpianId = Integer.valueOf(String.valueOf(map.get("changpianId")));//商品idInteger buyNumber = Integer.valueOf(String.valueOf(map.get("buyNumber")));//购买数量ChangpianEntity changpianEntity = changpianService.selectById(changpianId);//购买的商品String id = String.valueOf(map.get("id"));if(StringUtil.isNotEmpty(id))cartIds.add(Integer.valueOf(id));//判断商品的库存是否足够if(changpianEntity.getChangpianKucunNumber() < buyNumber){//商品库存不足直接返回return R.error(changpianEntity.getChangpianName()+"的库存不足");}else{//商品库存充足就减库存changpianEntity.setChangpianKucunNumber(changpianEntity.getChangpianKucunNumber() - buyNumber);}//订单信息表增加数据ChangpianOrderEntity changpianOrderEntity = new ChangpianOrderEntity<>();//赋值订单信息changpianOrderEntity.setChangpianOrderUuidNumber(changpianOrderUuidNumber);//订单号changpianOrderEntity.setAddressId(addressId);//送货地址changpianOrderEntity.setChangpianId(changpianId);//商品changpianOrderEntity.setYonghuId(userId);//用户changpianOrderEntity.setBuyNumber(buyNumber);//购买数量 ??????changpianOrderEntity.setChangpianOrderTypes(3);//订单类型changpianOrderEntity.setChangpianOrderPaymentTypes(changpianOrderPaymentTypes);//支付类型changpianOrderEntity.setInsertTime(new Date());//订单创建时间changpianOrderEntity.setCreateTime(new Date());//创建时间//判断是什么支付方式 1代表余额 2代表积分if(changpianOrderPaymentTypes == 1){//余额支付//计算金额Double money = new BigDecimal(changpianEntity.getChangpianNewMoney()).multiply(new BigDecimal(buyNumber)).multiply(zhekou).doubleValue();if(yonghuEntity.getNewMoney() - money <0 ){return R.error("余额不足,请充值!!!");}else{//计算所获得积分Double buyJifen =0.0;buyJifen = new BigDecimal(changpianEntity.getChangpianPrice()).multiply(new BigDecimal(buyNumber)).doubleValue();yonghuEntity.setYonghuSumJifen(yonghuEntity.getYonghuSumJifen() + buyJifen); //设置总积分if(yonghuEntity.getYonghuSumJifen()  < 10000)yonghuEntity.setHuiyuandengjiTypes(1);else if(yonghuEntity.getYonghuSumJifen()  < 100000)yonghuEntity.setHuiyuandengjiTypes(2);else if(yonghuEntity.getYonghuSumJifen()  < 1000000)yonghuEntity.setHuiyuandengjiTypes(3);changpianOrderEntity.setChangpianOrderTruePrice(money);yonghuEntity.setNewMoney(yonghuEntity.getNewMoney() - money);}}changpianOrderList.add(changpianOrderEntity);changpianList.add(changpianEntity);}changpianOrderService.insertBatch(changpianOrderList);changpianService.updateBatchById(changpianList);yonghuService.updateById(yonghuEntity);if(cartIds != null && cartIds.size()>0)cartService.deleteBatchIds(cartIds);return R.ok();}/*** 退款*/@RequestMapping("/refund")public R refund(Integer id, HttpServletRequest request){logger.debug("refund方法:,,Controller:{},,id:{}",this.getClass().getName(),id);String role = String.valueOf(request.getSession().getAttribute("role"));ChangpianOrderEntity changpianOrder = changpianOrderService.selectById(id);Integer buyNumber = changpianOrder.getBuyNumber();Integer changpianOrderPaymentTypes = changpianOrder.getChangpianOrderPaymentTypes();Integer changpianId = changpianOrder.getChangpianId();if(changpianId == null)return R.error(511,"查不到该商品");ChangpianEntity changpianEntity = changpianService.selectById(changpianId);if(changpianEntity == null)return R.error(511,"查不到该商品");Double changpianNewMoney = changpianEntity.getChangpianNewMoney();if(changpianNewMoney == null)return R.error(511,"商品价格不能为空");Integer userId = (Integer) request.getSession().getAttribute("userId");YonghuEntity yonghuEntity = yonghuService.selectById(userId);if(yonghuEntity == null)return R.error(511,"用户不能为空");if(yonghuEntity.getNewMoney() == null)return R.error(511,"用户金额不能为空");Double zhekou = 1.0;// 获取折扣Wrapper<DictionaryEntity> dictionary = new EntityWrapper<DictionaryEntity>().eq("dic_code", "huiyuandengji_types").eq("dic_name", "会员等级类型").eq("code_index", yonghuEntity.getHuiyuandengjiTypes());DictionaryEntity dictionaryEntity = dictionaryService.selectOne(dictionary);if(dictionaryEntity != null ){zhekou = Double.valueOf(dictionaryEntity.getBeizhu());}//判断是什么支付方式 1代表余额 2代表积分if(changpianOrderPaymentTypes == 1){//余额支付//计算金额Double money = changpianEntity.getChangpianNewMoney() * buyNumber  * zhekou;//计算所获得积分Double buyJifen = 0.0;buyJifen = new BigDecimal(changpianEntity.getChangpianPrice()).multiply(new BigDecimal(buyNumber)).doubleValue();yonghuEntity.setYonghuSumJifen(yonghuEntity.getYonghuSumJifen() - buyJifen); //设置总积分if(yonghuEntity.getYonghuSumJifen()  < 10000)yonghuEntity.setHuiyuandengjiTypes(1);else if(yonghuEntity.getYonghuSumJifen()  < 100000)yonghuEntity.setHuiyuandengjiTypes(2);else if(yonghuEntity.getYonghuSumJifen()  < 1000000)yonghuEntity.setHuiyuandengjiTypes(3);}changpianEntity.setChangpianKucunNumber(changpianEntity.getChangpianKucunNumber() + buyNumber);changpianOrder.setChangpianOrderTypes(2);//设置订单状态为退款changpianOrderService.updateById(changpianOrder);//根据id更新yonghuService.updateById(yonghuEntity);//更新用户信息changpianService.updateById(changpianEntity);//更新订单中商品的信息return R.ok();}/*** 发货*/@RequestMapping("/deliver")public R deliver(Integer id ,String changpianOrderCourierNumber, String changpianOrderCourierName){logger.debug("refund:,,Controller:{},,ids:{}",this.getClass().getName(),id.toString());ChangpianOrderEntity  changpianOrderEntity = new  ChangpianOrderEntity();;changpianOrderEntity.setId(id);changpianOrderEntity.setChangpianOrderTypes(4);changpianOrderEntity.setChangpianOrderCourierNumber(changpianOrderCourierNumber);changpianOrderEntity.setChangpianOrderCourierName(changpianOrderCourierName);boolean b =  changpianOrderService.updateById( changpianOrderEntity);if(!b){return R.error("发货出错");}return R.ok();}/*** 收货*/@RequestMapping("/receiving")public R receiving(Integer id){logger.debug("refund:,,Controller:{},,ids:{}",this.getClass().getName(),id.toString());ChangpianOrderEntity  changpianOrderEntity = new  ChangpianOrderEntity();changpianOrderEntity.setId(id);changpianOrderEntity.setChangpianOrderTypes(5);boolean b =  changpianOrderService.updateById( changpianOrderEntity);if(!b){return R.error("收货出错");}return R.ok();}/*** 评价*/@RequestMapping("/commentback")public R commentback(Integer id, String commentbackText, Integer changpianCommentbackPingfenNumber, HttpServletRequest request){logger.debug("commentback方法:,,Controller:{},,id:{}",this.getClass().getName(),id);ChangpianOrderEntity changpianOrder = changpianOrderService.selectById(id);if(changpianOrder == null)return R.error(511,"查不到该订单");if(changpianOrder.getChangpianOrderTypes() != 5)return R.error(511,"您不能评价");Integer changpianId = changpianOrder.getChangpianId();if(changpianId == null)return R.error(511,"查不到该商品");ChangpianCommentbackEntity changpianCommentbackEntity = new ChangpianCommentbackEntity();changpianCommentbackEntity.setId(id);changpianCommentbackEntity.setChangpianId(changpianId);changpianCommentbackEntity.setYonghuId((Integer) request.getSession().getAttribute("userId"));changpianCommentbackEntity.setChangpianCommentbackText(commentbackText);changpianCommentbackEntity.setReplyText(null);changpianCommentbackEntity.setInsertTime(new Date());changpianCommentbackEntity.setUpdateTime(null);changpianCommentbackEntity.setCreateTime(new Date());changpianCommentbackService.insert(changpianCommentbackEntity);changpianOrder.setChangpianOrderTypes(1);//设置订单状态为已评价changpianOrderService.updateById(changpianOrder);//根据id更新return R.ok();}}


五、ssm604基于Java Web的怀旧唱片售卖系统+vue【已测试】-结束语

        之前在课本上学习过软件开发的知识,包括开发流程的了解,开发技术的学习,还有如何进行系统需求分析与设计,老师也选取了比较有代表性的管理系统在课堂上进行讲解,并在课后布置作业让我们练习,期间老师也让我们也对系统实现与测试进行了了解。所以面对本次怀旧唱片售卖系统的开发制作,我的脑海里还是有比较清晰的思路。在系统制作中,以及配套文档的编写中,我都是按照软件开发流程一步步开展我的工作。

从系统的角度讲,怀旧唱片售卖系统制作中,它的难点在于功能的确定,对系统结构的设计,还有设计性能优良的数据库,以及采用成熟的技术实现系统功能等,这些是我面临的困难。针对这些难点,我采取了一定的措施。在不知道系统的功能时,我在网上寻找了很多相似系统,并把这些系统的大致功能进行了记载,把对本系统有用的功能部分进行了采用,另外,我也从网上获取了大量关于系统设计方面的知识,包括系统模块划分,设计原则,数据库表的设计与创建等知识,也从软件开发类博客中,获取了程序编码的技术知识,包括数据增删改代码模块的编写与使用。在本系统编码完成其对应功能后,我对系统的所有功能进行了耐心的测试,最后发现我开发的系统是合格的,可以进行验收。因为本系统除了具备简洁美观的界面外,在功能上可以满足使用者对于数据操作的需求,并且本系统的功能与系统分析设计的功能保持高度一致,而且系统运行稳定,面对用户的误操作,也建立了报错反馈机制,系统的质量可靠。唯一不足的就是系统数据表的设计在字段考虑上并不全面,为字段匹配的数据类型也不精确,还有系统代码部分,有很多地方还没有进行注释,代码编写不够简洁等。

        从文档的角度来讲,在完成怀旧唱片售卖系统制作后,对其制作过程需要进行描述,包括如何进行的需求分析,如何完成系统的设计,以及实现的系统功能的运行效果等都要进行描述。这期间我也花费了将近一个月时间来完成,为了达到学院要求的文档排版标准,我也多次在导师建议下,学习办公软件的使用,还有排版技巧。功夫不负有心人,我编写的文档在面临多次编写修改后终于完成了。

        总而言之,制作毕设虽然经历了很多环节,但是认真对待这个事情,我们将会在各个环节获取很多知识,也会在各个环节的实际操作中,锻炼我们的实践能力。通过本项目制作,我开始明白,很多知识并不只是来源于书本,来源于老师课堂上讲解的知识,也需要来源于各大学习网站以及生活实践等。至此,我还是会继续努力,保持新知识的主动学习习惯。


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/25350.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

强!推荐一款开源接口自动化测试平台:AutoMeter-API !

在当今软件开发的快速迭代中&#xff0c;接口自动化测试已成为确保代码质量和服务稳定性的关键步骤。 随着微服务架构和分布式系统的广泛应用&#xff0c;对接口自动化测试平台的需求也日益增长。 今天&#xff0c;我将为大家推荐一款强大的开源接口自动化测试平台: AutoMete…

手机自动化测试:4.通过appium inspector 获取相关app的信息,以某团为例,点击,搜索,获取数据等。

0.使用inspector时&#xff0c;一定要把不相关的如weditor啥的退出去&#xff0c;否则&#xff0c;净是事。 1.从0开始的数据获取 第一个位置&#xff0c;有时0.0.0.0&#xff0c;不可以的话&#xff0c;你就用这个。 第二个位置&#xff0c;抄上。 直接点击第三个启动。不要…

QA测试开发工程师面试题满分问答26: Cookie、Session、Token和JWT的定义、区别和使用场景

这是一个非常常见的面试题,需要全面掌握 Cookie、Session、Token 和 JWT 的定义和使用场景,以及它们之间的区别。下面是一个详细的满分回答: Cookie: 定义: Cookie 是一种存储在客户端(通常是浏览器)的小型文本文件,用于在客户端与服务器之间保持会话状态。使用场景: 常用于保存…

Java Web学习笔记29——Vue路由

Vue路由&#xff1a; 前端路由&#xff1a;点击菜单栏&#xff0c;地址栏会发生变化&#xff0c;会显示对应的组件。 URL中的Hash&#xff08;#号后面的部分&#xff09;与组件之间的对应关系。 Hash是/dept&#xff0c;那么就是部门管理组件&#xff1b; Hash是/emp, 那么…

Macbook M芯片Maven的安装与配置

Macbook M芯片Maven的安装与配置 下载 搜索Maven 进入网站 https://maven.apache.org/download.cgi 点击Download 点击如下链接进行下载&#xff1b; 将下载好的文件放到你的指定位置 双击进行解压 配置环境变量 进入终端 在终端中输入 open ~/.bash_profile输入以下内…

Zynq7000 系列FPGA模块化仪器

• 基于 XilinxXC7Z020 / 010 / 007S • 灵活的模块组合 • 易于嵌入的紧凑型外观结构 • 高性能的 ARM Cortex 处理器 • 成熟的 FPGA 可编程逻辑 &#xff0c;基于 IP 核的软件库 FPGA 控制器 Zynq7000 系列模块是基于 Xilinx XC7Z020/010/007S 全可编程片上系统 (SoC) 的…

湖南(品牌控价)源点调研 手机价格管理对品牌的影响分析

前言&#xff1a;手机自发明以来&#xff0c;过去一直是国际品牌占主导地位&#xff0c;从最初的爱立信、摩托罗拉&#xff0c;到后来的诺基亚、三星&#xff0c;苹果在这个手机行业里&#xff0c;竞争激励&#xff0c;没有百年企业&#xff0c;每个品牌的盛衰都有背后的历史背…

手写kNN算法的实现-用余弦相似度来度量距离

设a为预测点&#xff0c;b为其中一个样本点&#xff0c;在向量空间里&#xff0c;它们的形成的夹角为θ&#xff0c;那么θ越小&#xff08;cosθ的值越接近1&#xff09;&#xff0c;就说明a点越接近b点。所以我们可以通过考察余弦相似度来预测a点的类型。 from collections i…

Linux Ext2/3/4文件系统

文章目录 前言一、Linux文件系统简介1.1 简介1.2 Linux File System Structure1.3 Directory Structure 二、Ext2/3/4文件系统2.1 Minix2.2 EXT2.3 EXT22.4 EXT32.5 EXT4 三、EXT Inode参考资料 前言 这篇文章介绍了Linux文件系统的一些基础知识&#xff1a;Linux 文件系统简介…

vs - vs2013中编译sqlite3.44.2

文章目录 vs - vs2013中编译sqlite3.44.2概述笔记工程输出归档END vs - vs2013中编译sqlite3.44.2 概述 以前在vs2019下编译了sqlite3.44.2, 好使。做了笔记(sqlite3.44.2的编译) 现在准备将手头的vs2019工程改为vs2013的&#xff0c;自然要将sqlite也编译为vs2013版本的。 按…

[HNCTF 2022 WEEK4]flower plus

第一种花指令 第二种花指令 根据两种花指令特征&#xff0c;写出去花指令脚本 saddr0x401000 eaddr0x435000 for i in range(saddr,eaddr):if get_wide_dword(i)0x01740275:print(hex(i),hex(get_wide_dword(i)))patch_byte(i-5,0x90)patch_dword(i-4,0x90909090)patch_dw…

插卡式仪器模块:数字万用表模块(插卡式)

• 6 位数字表显示 • 24 位分辨率 • 250 KSPS 采样率 • 电源和数字 I/O 均采用隔离抗噪技术 • 电压、电流、电阻、电感、电容的高精度测量 • 二极管/三极管测试 通道122输入 阻抗 电压10 MΩHigh-Z, 10 MΩ电流10 Ω50 mΩ / 2 Ω / 2 KΩ输入范围电压 5 V0–60 V电流…

【C语言】Leetcode-312 戳气球

文章目录 题目思路代码如下 题目 链接: Leetcode-312 戳气球 思路 我们观察戳气球的操作&#xff0c;发现这会导致两个气球从不相邻变成相邻&#xff0c;使得后续操作难以处理。于是我们倒过来看这些操作&#xff0c;将全过程看作是每次添加一个气球。 首先 我们需要创建一个…

卷积的计算过程

卷积的计算过程 flyfish 包括手动计算&#xff0c;可视化使用torch.nn.Conv2d实现 示例 import torch import torch.nn as nn# 定义输入图像 input_image torch.tensor([[1, 2, 3, 0, 1],[0, 1, 2, 3, 4],[2, 3, 0, 1, 2],[1, 2, 3, 4, 0],[0, 1, 2, 3, 4] ], dtypetorch.f…

springboot 3 oauth2认证this.authorizationService.save(authorization)生成token报错异常

springboot 3 oauth2认证this.authorizationService.save(authorization)生成token报错异常&#xff0c;使用springboot版本3.3.0。 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId>&…

2024年政治经济学与社会科学国际会议(ICPESS 2024)

2024年政治经济学与社会科学国际会议 2024 International Conference on Political Economy and Social Sciences 会议简介 2024年政治经济学与社会科学国际会议是一个致力于探讨政治经济学与社会科学交叉领域前沿问题的国际盛会。本次会议汇聚了全球顶尖的专家学者、研究人员和…

探索智慧农业系统架构的设计与应用

随着科技的不断进步和农业现代化的推进&#xff0c;智慧农业正逐渐成为农业发展的重要趋势。智慧农业系统架构的设计与应用&#xff0c;将农业生产与信息技术相结合&#xff0c;为农业生产提供了新的思路和解决方案。本文将深入探讨智慧农业系统架构的设计与应用&#xff0c;从…

用爬虫实现---模拟填志愿

先来说实现逻辑&#xff0c;首先我要获取到这个网站上所有的信息&#xff0c;那么我们就可以开始对元素进行检查 我们发现他的每一个学校信息都有一个对应的属性&#xff0c;并且是相同的&#xff0c;那么我们就可以遍历这个网页中的所有属性一样的开始爬取 在来分析&#xff0…

美团大规模KV存储挑战与架构实践--图文分析

美团大规模KV存储挑战与架构实践–图文分析 原作者&#xff1a;美团技术团队 原文链接&#xff1a;https://tech.meituan.com/2024/03/15/kv-squirrel-cellar.html 1 美团 KV 存储发展历程 第一代&#xff1a;使用Memcached 什么是一致性哈希&#xff1f; 哈希&#xff1a…

kafka如何保证消息不丢失

Kafka发送消息是异步发送的&#xff0c;所以我们不知道消息是否发送成功&#xff0c;所以会可能造成消息丢失。而且Kafka架构是由生产者-服务器端-消费者三种组成部分构成的。要保证消息不丢失&#xff0c;那么主要有三种解决方法。 生产者(producer)端处理 生产者默认发送消息…