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

提升网站的访问速度wordpress汉字

提升网站的访问速度,wordpress汉字,建设工程询价网站有哪些,网站建设服务套餐文章目录 1. 地址簿管理1-1. 新增地址1-2 查询当前用户的地址簿1-3. 更新默认地址1-4. 获取默认地址1-5. 修改地址 2. 订单管理2-1. 表结构2-2 提交订单 本章节主要完成地址簿的管理以及订单管理, 同时完善系统的部分细节, Reggie TakeAway 系统篇章基础篇告一段落. 1. 地址簿管… 文章目录 1. 地址簿管理1-1. 新增地址1-2 查询当前用户的地址簿1-3. 更新默认地址1-4. 获取默认地址1-5. 修改地址 2. 订单管理2-1. 表结构2-2 提交订单 本章节主要完成地址簿的管理以及订单管理, 同时完善系统的部分细节, Reggie TakeAway 系统篇章基础篇告一段落. 1. 地址簿管理 地址簿记录了每个用户的地址信息, 每个用户可以设置多个地址, 但默认地址有且仅有一个. 实体类如下: Data public class AddressBook implements Serializable {private static final long serialVersionUID 1L;private Long id;private Long userId; //用户idprivate String consignee; //收货人private String phone; //手机号private String sex; //性别 0 女 1 男private String provinceCode; //省级区划编号private String provinceName; //省级名称private String cityCode; //市级区划编号private String cityName; //市级名称private String districtCode; //区级区划编号private String districtName; //区级名称private String detail; //详细地址private String label; //标签private Integer isDefault; //是否默认 0 否 1是TableField(fill FieldFill.INSERT)private LocalDateTime createTime;TableField(fill FieldFill.INSERT_UPDATE)private LocalDateTime updateTime;TableField(fill FieldFill.INSERT)private Long createUser;TableField(fill FieldFill.INSERT_UPDATE)private Long updateUser;private Integer isDeleted; //是否删除 }为他建立对应的 mapper 和 service 层. 1-1. 新增地址 POST RestController RequestMapping(addressBook) Slf4j public class AddressBookController {Autowiredprivate AddressBookService addressBookService;PostMappingpublic RString add(RequestBody AddressBook address){log.info(新增地址: {}, address);Long userId BaseContext.getId();address.setUserId(userId);address.setIsDefault(0);addressBookService.save(address);return R.success(地址新增成功);} }1-2 查询当前用户的地址簿 GetMapping(list) public RListAddressBook list(){Long userId BaseContext.getId();log.info(查询当前用户所有的地址信息: {}, userId);ListAddressBook books addressBookService.listByUser(userId);return R.success(books); }// AddressBookServiceImpl Override public ListAddressBook listByUser(Long userId) {LambdaQueryWrapperAddressBook wrapper new LambdaQueryWrapper();wrapper.eq(AddressBook::getUserId, userId);wrapper.orderByDesc(AddressBook::getUpdateTime);return this.list(wrapper); }1-3. 更新默认地址 设置默认地址, 注意需要先把原默认地址取消, 这里有一个 trick, 就是如果一个实体类的字段为空, 那么在更新时该字段不会被写入到数据库中. PutMapping(default) public RString defAddr(RequestBody AddressBook newBook){log.info(设置默认地址);// 假如已经存在一个默认地址, 则先把它设为0LambdaQueryWrapperAddressBook bookWrapper new LambdaQueryWrapper();bookWrapper.eq(AddressBook::getIsDefault, 1);AddressBook bookNoDefault new AddressBook();bookNoDefault.setIsDefault(0);addressBookService.update(bookNoDefault, bookWrapper);newBook.setIsDefault(1);addressBookService.updateById(newBook);return R.success(设置默认地址成功); }1-4. 获取默认地址 GetMapping(default) public RAddressBook getDefAddr(){log.info(获取默认地址);LambdaQueryWrapperAddressBook bookWrapper new LambdaQueryWrapper();bookWrapper.eq(AddressBook::getIsDefault, 1);bookWrapper.eq(AddressBook::getUserId, BaseContext.getId());AddressBook addressBook addressBookService.getOne(bookWrapper);if (addressBook null)return null;elsereturn R.success(addressBook); }1-5. 修改地址 地址信息回显: GetMapping({addrId}) public RAddressBook getById(PathVariable Long addrId){log.info(获取地址: {}, addrId);return R.success(addressBookService.getById(addrId)); }更新表格: PutMapping public RString update(RequestBody AddressBook book){log.info(修改地址: {}, book);addressBookService.updateById(book);return R.success(修改成功); }2. 订单管理 2-1. 表结构 Orders 和 OrderDetail 第一个存放订单的基本信息, 包括 订单号 订单所属用户 订单配送地址 等等 Data public class Orders implements Serializable {private static final long serialVersionUID 1L;private Long id;private String number; // 订单号private Integer status; // 订单状态 1待付款2待派送3已派送4已完成5已取消private Long userId; // 下单用户idprivate Long addressBookId; // 地址idprivate LocalDateTime orderTime; // 下单时间private LocalDateTime checkoutTime; // 结账时间private Integer payMethod; // 支付方式 1 微信, 2 支付宝private BigDecimal amount; // 实收金额private String remark; // 备注private String userName; // 用户名private String phone; // 手机号private String address; // 地址private String consignee; // 收货人 }第二个是订单明细表, 它以订单号为关联键值, 存放该订单中包含的所有菜品或套餐的信息 Data public class OrderDetail implements Serializable {private static final long serialVersionUID 1L;private Long id;private String name; //名称private Long orderId; //订单idprivate Long dishId; //菜品idprivate Long setmealId; //套餐idprivate String dishFlavor; //口味private Integer number; //数量private BigDecimal amount; //金额private String image; //图片 }为他们创建 service 和 mapper. 2-2 提交订单 如下为请求信息: 请求 URL: http://localhost:8080/order/submit 请求方法: POST 请求体: {remark: ,payMethod: 1,addressBookId: 1746045643976040449 }订单生成的步骤包括: 获取当前登录用户获取用户地址信息获取购物车菜品信息创建订单实体保存订单明细表到数据库清空购物车填充订单实体的必要字段, 保存订单信息到数据库 如下为 controller 层的处理方法: RestController RequestMapping(order) Slf4j public class OrderController {Autowiredprivate OrdersService ordersService;PostMapping(submit)public RString submit(RequestBody Orders orders) {log.info(用户下单: {}, orders);ordersService.submit(orders);return R.success(下单成功);} }OrdersServiceImpl.submit 方法如下: Override public void submit(Orders orders) {Long userId BaseContext.getId();User user userService.getById(userId);Long addressBookId orders.getAddressBookId();AddressBook addressBook addressBookService.getById(addressBookId);if (addressBook null)throw new BusinessException(地址信息有误, 无法下单);Long orderId IdWorker.getId();orders.setId(orderId);int amount orderDetailService.saveCurrentShoppingCart(orderId);orders.setOrderTime(LocalDateTime.now());orders.setCheckoutTime(LocalDateTime.now());orders.setStatus(2);orders.setAmount(new BigDecimal(amount));orders.setUserId(userId);orders.setNumber(String.valueOf(orderId));orders.setUserName(user.getName());orders.setConsignee(addressBook.getConsignee());orders.setPhone(addressBook.getPhone());orders.setAddress((addressBook.getProvinceName() null ? : addressBook.getProvinceName()) (addressBook.getCityName() null ? : addressBook.getCityName()) (addressBook.getDistrictName() null ? : addressBook.getDistrictName()) (addressBook.getDetail() null ? : addressBook.getDetail()));this.save(orders); }保存订单明细表到数据库的代码如下: Transactional Override public Integer saveCurrentShoppingCart(Long orderId) {// 将当前用户购物车内的套餐或菜品全部存入订单明细表中, 并与订单号 orderId 关联// 返回购物车内商品总金额 amount, 同时清除购物车.AtomicInteger amount new AtomicInteger(0);Long userId BaseContext.getId();LambdaQueryWrapperShoppingCart wrapper new LambdaQueryWrapper();wrapper.eq(ShoppingCart::getUserId, userId);ListShoppingCart shoppingCarts shoppingCartService.list(wrapper);if (shoppingCartsnull || shoppingCarts.size()0)throw new BusinessException(购物车为空, 无法下单);for (ShoppingCart cart: shoppingCarts){OrderDetail detail new OrderDetail();BeanUtils.copyProperties(cart, detail);detail.setOrderId(orderId);amount.addAndGet(detail.getAmount().multiply(new BigDecimal(detail.getNumber())).intValue());this.save(detail);}shoppingCartService.remove(wrapper);return amount.get(); }实际上还有一些请求待处理, 例如点击套餐图片展示套餐明细、点击历史订单展示订单列表及其明细等等, 由于请求路径和方法以及返回数据格式等未知, 且未新增技术点, 故暂时不进行讨论. 至此, Reggie 外卖项目的基本内容就完结了。
http://www.zqtcl.cn/news/771096/

相关文章:

  • 哪些网站做推广vi设计说明模板
  • 杭州市建设工程造价管理协会网站攀枝花建设工程质量监督站投诉网站
  • 做网站推广送什么深圳的网站建设公司流程
  • 中国网站开发的前景制作公司主页网站
  • 在线画流程图的网站购物网站的设计与实现论文
  • 淘宝客cms网站建设K12网站怎么建设
  • 专业门户网站开发浙江省湖州艺术与设计学校官网
  • 企业网站搭建价格搭建平台的另一种说法
  • 网站开发框架桂林人论坛风姿摄影
  • 吉林省建设安全信息网站网站服务器和空间有什么区别
  • 百度制作网站怎么去掉2345网址导航
  • 深圳网站建设有限公司 2019哪些建材网站可以做宣传
  • 西安阿里云网站建设一建报名资格条件
  • 聊城网站优化wordpress循环该分类子分类
  • 帮网站做关键词排名优化创造网站需要多少钱
  • 广西网站建设推荐wordpress 宣布停止
  • 专注网站制作青岛景观设计公司排名
  • 安庆做网站网站代理建设网站观澜
  • 网站开发需求收集 模板cms做门户网站
  • dw网站首页的导航怎么做有大佬给个网址吗
  • 一个网站怎么做聚合洛可可设计公司贾伟
  • 什么是优化型网站网页设计作业在线网站首页
  • 关于网站建设广告词英文案例网站
  • 有哪些可以做策划方案的网站国家域名
  • vk网站做婚介做seo排名好的网站
  • 广州企业网站建设公司苏州建网站提
  • html如何做购物网站天元建设集团有限公司法人代表
  • 教育培训机构排名seo是搜索引擎营销
  • 做奢侈品网站有哪些沧州手机建站哪家好
  • 德州网站网站建设广西房管局官网