当前位置: 首页 > wzjs >正文

zero的大型网站seo教程荷塘网站建设

zero的大型网站seo教程,荷塘网站建设,沈阳网站建设服务,贵州最新消息今天2-15 导入地址簿模块功能代码&用户下单 01 01-今日课程内容介绍 02 02-导入地址簿模块功能代码_需求分析和设计 分析功能如下: 六个功能一定要设置六个接口吗?不是的,比如修改地址,修改前肯定要先查出之前的地址来进行页面回…

2-15 导入地址簿模块功能代码&用户下单

01 01-今日课程内容介绍

02 02-导入地址簿模块功能代码_需求分析和设计

分析功能如下:

六个功能一定要设置六个接口吗?不是的,比如修改地址,修改前肯定要先查出之前的地址来进行页面回显。

这里请求参数是空的,因为我们常从拦截器解析 请求头得出用户id,所以不需要传出id。

03 03-导入地址簿模块功能代码_代码导入

都是简单的单表查询,去资料里面下载吧。

重点可能需要理解一下对默认地址的应用,默认地址只能存在一个,所以设置默认地址的时候需要先清除之前的默认地址再添加新的默认地址。

测试下来没什么问题。

2-16 用户下单&订单支付

05 05-用户下单_需求分析和设计_接口设计

06 06-用户下单_需求分析和设计_数据库设计

07 07-用户下单_代码开发

1,先根据返回值设置好对应的dto和vo

2,controller:

@RestController("userOrderController")
@RequestMapping("/user/order")
@Api(tags = "C端订单接口")
@Slf4j
public class OrderController {@Autowiredprivate OrderService orderService;/*** 用户下单* @param ordersSubmitDTO* @return*/@ApiOperation("用户下单")@PostMapping("/submit")public Result<OrderSubmitVO> Submit(@RequestBody OrdersSubmitDTO ordersSubmitDTO){log.info("用户下单:{}",ordersSubmitDTO);OrderSubmitVO orderSubmitVO = orderService.submitOrder(ordersSubmitDTO);return Result.success(orderSubmitVO);}}

实现类:

package com.sky.service.impl;import com.sky.constant.MessageConstant;
import com.sky.context.BaseContext;
import com.sky.dto.OrdersSubmitDTO;
import com.sky.entity.AddressBook;
import com.sky.entity.OrderDetail;
import com.sky.entity.Orders;
import com.sky.entity.ShoppingCart;
import com.sky.exception.AddressBookBusinessException;
import com.sky.mapper.AddressBookMapper;
import com.sky.mapper.OrderDetailMapper;
import com.sky.mapper.OrderMapper;
import com.sky.mapper.ShoppingCartMapper;
import com.sky.service.OrderService;
import com.sky.vo.OrderSubmitVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;@Service
@Slf4j
public class OrderServiceImpl implements OrderService {@Autowiredprivate OrderMapper  orderMapper;@Autowiredprivate OrderDetailMapper  orderDetailMapper;@Autowiredprivate AddressBookMapper addressBookMapper;@Autowiredprivate ShoppingCartMapper  shoppingCartMapper;/*** 用户下单* @param ordersSubmitDTO* @return*/@Override@Transactionalpublic OrderSubmitVO submitOrder(OrdersSubmitDTO ordersSubmitDTO) {log.info("用户下单:{}",ordersSubmitDTO);//处理各种业务异常://地址为空,不能下单AddressBook addressBook = addressBookMapper.getById(ordersSubmitDTO.getAddressBookId());if (addressBook == null) {//地址为空,不能下单throw new AddressBookBusinessException(MessageConstant.ADDRESS_BOOK_IS_NULL);}//购物车为空不能下单Long userId = BaseContext.getCurrentId();ShoppingCart  shoppingCart = new ShoppingCart();shoppingCart.setUserId(userId);//将购物车数据存储在一个list购物车集合当中。List<ShoppingCart> list = shoppingCartMapper.list(shoppingCart);if (list == null || list.size() == 0) {//购物车为空不能下单throw new AddressBookBusinessException(MessageConstant.SHOPPING_CART_IS_NULL);}//------用户下单后向订单表插入一条数据-------log.info("用户下单,向订单表插入一条数据");Orders orders = new Orders();//拷贝BeanUtils.copyProperties(ordersSubmitDTO,orders);//补全orders.setOrderTime(LocalDateTime.now());orders.setPayStatus(Orders.UN_PAID);orders.setStatus(Orders.PENDING_PAYMENT);orders.setNumber(String.valueOf(System.currentTimeMillis()));//当前时间系统时间戳,前面的(String.valueOf用于转换类型orders.setPhone(addressBook.getPhone());orders.setConsignee(addressBook.getConsignee());orders.setUserId(userId);//插入orderMapper.insert(orders);//用户下单后向订单明细表插入n条数据log.info("用户下单,向订单明细表插入n条数据");//遍历购物车数据List<OrderDetail> orderDetails = new ArrayList<>();for (ShoppingCart cart : list){OrderDetail  orderDetail = new OrderDetail();BeanUtils.copyProperties(cart,orderDetail);orderDetail.setOrderId(orders.getId());orderDetails.add(orderDetail);}//批量插入orderDetailMapper.insertBatch(orderDetails);//用户下单后要清空购物车数据shoppingCartMapper.deleteByUserId(userId);//返回订单数据VOOrderSubmitVO orderSubmitVO =OrderSubmitVO.builder().id(orders.getId()).orderTime(orders.getOrderTime()).orderNumber(orders.getNumber()).orderAmount(orders.getAmount()).build();return orderSubmitVO;}
}

涉及到了四个mapper的调用。所以要加@Transactional注解确保同时进行

要熟悉里面的操作流程和步骤。

首先:进行业务异常判断,要求地址不能为空且购物车不能为空

其次:将数据存入订单表中

再次:将订单明细存入订单明细表,由于之前从请求头当中获取到了对应的userid,我们就可以对应查询到用户购物车的信息。然后遍历用户购物车信息存储到一个订单明细对象当中,再将这个list类型的订单明细对象存储到订单明细表中。由于是集合,在mapper中要考虑foreach来处理数据内容了。

最后:删除该用户的购物车数据,将订单数据builder给对应的VO对象,返回VO。

测试:

到此,订单业务代码开发完毕!


文章转载自:

http://qHgHpZ8a.xLmgq.cn
http://SDjEkaNS.xLmgq.cn
http://kBA2pIFY.xLmgq.cn
http://XyqKF7jP.xLmgq.cn
http://uKUwoP9K.xLmgq.cn
http://X6FFDDfn.xLmgq.cn
http://wMOly35I.xLmgq.cn
http://qkQ7YZ7q.xLmgq.cn
http://p3g9A4Xd.xLmgq.cn
http://rRvvMhbW.xLmgq.cn
http://srOUuEpv.xLmgq.cn
http://RIM9vCTH.xLmgq.cn
http://F7zJVFam.xLmgq.cn
http://r3za02gp.xLmgq.cn
http://19WLkprM.xLmgq.cn
http://54vEadHM.xLmgq.cn
http://LmhmnCOC.xLmgq.cn
http://kboYbtfY.xLmgq.cn
http://Q7k0V4x3.xLmgq.cn
http://8RouL48b.xLmgq.cn
http://m0AhKUJp.xLmgq.cn
http://bEbmxPqW.xLmgq.cn
http://kJL40Jfn.xLmgq.cn
http://huCMWg5W.xLmgq.cn
http://J1GrfrJR.xLmgq.cn
http://hToZQZeE.xLmgq.cn
http://ewQTJ24z.xLmgq.cn
http://c0eRTFEu.xLmgq.cn
http://vTTWB1ip.xLmgq.cn
http://m2uu9u0Z.xLmgq.cn
http://www.dtcms.com/wzjs/765179.html

相关文章:

  • 做推广便宜的网站包装设计网上设计平台
  • 网站建设域名服务器广州公司网站设计制作
  • 顺义推广建站现在流行什么做网站
  • 网站免费正能量直播网站建设工作进度
  • 商丘市做1企业网站的公司高端网站建设公司推荐
  • 发表评论的wordpress网站模板广西桂林自驾游最佳线路推荐
  • 五合一网站做优化好用吗摄影比赛投稿网站
  • 地方网站怎么做推广上海网站建设信息网
  • 时光轴 网站赌城网站怎么做
  • iis做的网站模板wordpress都有哪些权限
  • 免费网站地址申请做网站的详细流程
  • 公司网站网页设计如何对现有的网站改版
  • 生成论坛网站英文网站建设方案
  • 网站点击量怎么看砀山县住房和城乡建设局网站
  • 有没有专门做建筑造价的私单网站手机企业网站怎么做
  • 沧州市做网站上海市建设工程安全生产协会网站
  • 扬中网站建设要多少钱wordpress下载
  • ps做网站要多大软件开发和网站建设哪个好
  • 外贸网站建设服务创意网站页面
  • jsp类型网站托管费用工程建设信息网站资质公告
  • 做网站业务的怎么寻找客户wordpress采集查卷
  • 烟台市网站建设网站切版教程
  • 网站内容收录wordpress 推酷
  • 如何把自己电脑做网站服务器网页美工设计课程
  • 做商城网站的流程介绍中关村在线网站的建设
  • 怎么做售房网站seo是一种利用搜索引擎
  • 在互联网上建设网站可选择的方案有社交公众号开发公司
  • 有趣的网站官网邯郸网络营销和网络推广
  • 制作企业网站的机构推荐网站设计作品案例讲解
  • 莱州市做网站的公司网页设计师专业培训