• 【畅购商城】订单模块之收货人列表


    目录

    构建订单服务:8100

    收货人列表

    接口

    后端实现:JavaBean

    后端实现

    前端实现

    构建订单服务:8100

    步骤一:构建项目,changgou4-service-orders

    步骤二:修改pom.xml文件,添加依赖

    1. <dependencies>
    2. <dependency>
    3. <groupId>com.czxy.changgougroupId>
    4. <artifactId>changgou4-common-dbartifactId>
    5. dependency>
    6. <dependency>
    7. <groupId>com.czxy.changgougroupId>
    8. <artifactId>changgou4-common-authartifactId>
    9. dependency>
    10. <dependency>
    11. <groupId>com.czxy.changgougroupId>
    12. <artifactId>changgou4-pojoartifactId>
    13. dependency>
    14. <dependency>
    15. <groupId>org.springframework.bootgroupId>
    16. <artifactId>spring-boot-starter-webartifactId>
    17. dependency>
    18. <dependency>
    19. <groupId>com.alibaba.nacosgroupId>
    20. <artifactId>nacos-clientartifactId>
    21. dependency>
    22. <dependency>
    23. <groupId>com.alibaba.cloudgroupId>
    24. <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
    25. dependency>
    26. <dependency>
    27. <groupId>org.springframework.bootgroupId>
    28. <artifactId>spring-boot-starter-data-redisartifactId>
    29. dependency>
    30. <dependency>
    31. <groupId>redis.clientsgroupId>
    32. <artifactId>jedisartifactId>
    33. dependency>
    34. <dependency>
    35. <groupId>org.springframework.cloudgroupId>
    36. <artifactId>spring-cloud-starter-openfeignartifactId>
    37. dependency>
    38. <dependency>
    39. <groupId>io.springfoxgroupId>
    40. <artifactId>springfox-swagger2artifactId>
    41. dependency>
    42. <dependency>
    43. <groupId>io.springfoxgroupId>
    44. <artifactId>springfox-swagger-uiartifactId>
    45. dependency>
    46. <dependency>
    47. <groupId>com.alibabagroupId>
    48. <artifactId>fastjsonartifactId>
    49. dependency>
    50. <dependency>
    51. <groupId>com.github.wxpaygroupId>
    52. <artifactId>wxpay-sdkartifactId>
    53. <version>0.0.3version>
    54. dependency>
    55. dependencies>

    步骤三:修改yml 文件

    1. server:
    2. port: 8100
    3. spring:
    4. application:
    5. name: order-service
    6. datasource:
    7. url: jdbc:mysql://127.0.0.1:3306/changgou_db?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    8. username: root
    9. password: 1234
    10. driver-class-name: com.mysql.jdbc.Driver
    11. druid:
    12. initial-size: 5
    13. min-idle: 5
    14. max-active: 20
    15. max-wait: 1000
    16. test-on-borrow: true
    17. redis:
    18. database: 0
    19. host: 127.0.0.1
    20. port: 6379
    21. cloud:
    22. nacos:
    23. discovery:
    24. server-addr: 127.0.0.1:8848 #nacos服务地址
    25. sc:
    26. worker:
    27. workerId: 1
    28. datacenterId: 1
    29. jwt:
    30. secret: sc@Login(Auth}*^31)&czxy% # 登录校验的密钥
    31. pubKeyPath: D:/rsa/rsa.pub # 公钥地址
    32. priKeyPath: D:/rsa/rsa.pri # 私钥地址
    33. expire: 360 # 过期时间,单位分钟
    34. pay:
    35. appID: wx8397f8696b538317
    36. mchID: 1473426802
    37. key: T6m9iK73b0kn9g5v426MKfHQH7X8rKwb
    38. httpConnectTimeoutMs: 5000
    39. httpReadTimeoutMs: 10000

     步骤四:启动类

    1. package com.czxy.changgou4;
    2. import org.springframework.boot.SpringApplication;
    3. import org.springframework.boot.autoconfigure.SpringBootApplication;
    4. import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    5. import org.springframework.cloud.openfeign.EnableFeignClients;
    6. @SpringBootApplication
    7. @EnableDiscoveryClient
    8. @EnableFeignClients
    9. public class CGOrderServiceApplication {
    10. public static void main(String[] args) {
    11. SpringApplication.run(CGOrderServiceApplication.class, args);
    12. }
    13. }

    步骤五:配置类

    收货人列表

    接口

    1. GET http://localhost:10010/order-service/address
    2. {
    3.     "code"20000,
    4.     "message""查询成功",
    5.     "data": [
    6.         {
    7.             "id"1,
    8.             "userId"1,
    9.             "shr_name""小明",
    10.             "shr_mobile""13344445555",
    11.             "shr_province""江苏省",
    12.             "shr_city""宿迁市",
    13.             "shr_area""沭阳县",
    14.             "shr_address""常州路57号",
    15.             "isdefault"0
    16.         }
    17.     ],
    18.     "other": {}
    19. }

    后端实现:JavaBean

    步骤一:创建Address地址对象

    步骤二:根据表结构和接口规范,编写内容

     

    1. package com.czxy.changgou4.pojo;
    2. import com.baomidou.mybatisplus.annotation.IdType;
    3. import com.baomidou.mybatisplus.annotation.TableField;
    4. import com.baomidou.mybatisplus.annotation.TableId;
    5. import com.baomidou.mybatisplus.annotation.TableName;
    6. import com.fasterxml.jackson.annotation.JsonProperty;
    7. import lombok.Data;
    8. /**
    9. * Created by liangtong.
    10. */
    11. @TableName("tb_address")
    12. @Data
    13. public class Address {
    14. @TableId(type = IdType.AUTO)
    15. private Integer id;
    16. //用户ID
    17. @TableField(value = "user_id")
    18. private Integer userId;
    19. //收货人姓名
    20. @TableField(value = "shr_name")
    21. @JsonProperty("shr_name")
    22. private String shrName;
    23. //收货人手机
    24. @TableField(value = "shr_mobile")
    25. @JsonProperty("shr_mobile")
    26. private String shrMobile;
    27. //收货人省份
    28. @TableField(value = "shr_province")
    29. @JsonProperty("shr_province")
    30. private String shrProvince;
    31. //收货人城市
    32. @TableField(value = "shr_city")
    33. @JsonProperty("shr_city")
    34. private String shrCity;
    35. //收货人地区
    36. @TableField(value = "shr_area")
    37. @JsonProperty("shr_area")
    38. private String shrArea;
    39. //收货人详情地址
    40. @TableField(value = "shr_address")
    41. @JsonProperty("shr_address")
    42. private String shrAddress;
    43. //1:默认;0:不是
    44. @TableField(value = "isdefault")
    45. @JsonProperty("isdefault")
    46. private Integer isdefault;
    47. }

    后端实现

    需求:查询当前登录用户收货人列表

    需要通过token获得用户信息

    步骤一:拷贝配置类

    步骤二:编写mapper,使用通用mapper即可

    1. package com.czxy.changgou4.mapper;
    2. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    3. import com.czxy.changgou4.pojo.Address;
    4. import org.apache.ibatis.annotations.Mapper;
    5. @Mapper
    6. public interface AddressMapper extends BaseMapper
      {
    7. /**
    8. * 通过用户查询所有的地址
    9. * @return
    10. */
    11. @Select("SELECT * FROM tb_address WHERE user_id = #{userId}")
    12. public List
      findAllByUserId(@Param("userId") Long userId);
    13. }

    步骤三:编写service接口,编写findAllByUserId 方法完成功能

    1. package com.czxy.changgou4.service;
    2. import com.baomidou.mybatisplus.extension.service.IService;
    3. import com.czxy.changgou4.pojo.Address;
    4. import java.util.List;
    5. public interface AddressService extends IService
      {
    6. /**
    7. * 查询指定用户的所有地址
    8. * @param userId
    9. * @return
    10. */
    11. public List
      findAllByUserId(Long userId) ;
    12. }

    步骤四:编写service实现

    1. package com.czxy.changgou4.service.impl;
    2. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
    3. import com.czxy.changgou4.mapper.AddressMapper;
    4. import com.czxy.changgou4.pojo.Address;
    5. import com.czxy.changgou4.pojo.User;
    6. import com.czxy.changgou4.service.AddressService;
    7. import org.springframework.stereotype.Service;
    8. import org.springframework.transaction.annotation.Transactional;
    9. import java.util.List;
    10. @Service
    11. @Transactional
    12. public class AddressServiceImpl extends ServiceImpl implements AddressService {
    13. @Override
    14. public List
      findAllByUserId(Long userId) {
    15. return baseMapper.findAllByUserId(userId);
    16. }
    17. }

    步骤五:编写controller

    1. package com.czxy.changgou4.controller;
    2. import com.czxy.changgou4.config.JwtProperties;
    3. import com.czxy.changgou4.pojo.Address;
    4. import com.czxy.changgou4.pojo.User;
    5. import com.czxy.changgou4.service.AddressService;
    6. import com.czxy.changgou4.utils.JwtUtils;
    7. import com.czxy.changgou4.vo.BaseResult;
    8. import org.springframework.web.bind.annotation.GetMapping;
    9. import org.springframework.web.bind.annotation.RequestMapping;
    10. import org.springframework.web.bind.annotation.RestController;
    11. import javax.annotation.Resource;
    12. import javax.servlet.http.HttpServletRequest;
    13. import java.util.List;
    14. @RestController
    15. @RequestMapping("/address")
    16. public class AddressController {
    17. @Resource
    18. private AddressService addressService;
    19. @Resource
    20. private JwtProperties jwtProperties;
    21. @Resource
    22. private HttpServletRequest request;
    23. @GetMapping
    24. public BaseResult queryAddress(){
    25. //1 获得用户信息
    26. // 1.1 获得token
    27. String token = request.getHeader("Authorization");
    28. // 1.2 解析token
    29. User loginUser = null;
    30. try {
    31. loginUser = JwtUtils.getObjectFromToken(token, jwtProperties.getPublicKey(),User.class);
    32. } catch (Exception e) {
    33. return BaseResult.error("token失效或未登录");
    34. }
    35. //2 查询
    36. List
      list = this.addressService.findAllByUserId( loginUser.getId() );
    37. return BaseResult.ok("查询成功", list );
    38. }
    39. }

    ​​​​​​​前端实现

    需求:查询所有的收货人地址

    为了操作方便,需要使用filter过滤默认地址

    步骤一:修改 apiclient.js ,添加查询收货人列表函数

     

     

    步骤二:修改 flow2.vue 组件,页面加载成功,查询当前登录用户所有的收货人地址

    同时过滤默认地址数据

    1. mounted() {
    2. // 查询收获人地址
    3. this.getAddressFn()
    4. },
    5. data() {
    6. return {
    7. addressList: [], //所有的地址
    8. defaultAddress: {}, //默认地址
    9. }
    10. },
    11. methods: {
    12. async getAddressFn() {
    13. let { data } = await this.$request.getAddress()
    14. // 所有收获人地址
    15. this.addressList = data.data
    16. //默认地址
    17. this.defaultAddress = this.addressList.filter(item => item.isdefault == 1)[0];
    18. }
    19. },

     步骤三:修改 flow2.vue 组件,显示默认地址

    1. "address_info">
    2. {{defaultAddress.shr_name}} {{defaultAddress.shr_mobile}}

    3. {{defaultAddress.shr_province}} {{defaultAddress.shr_city}} {{defaultAddress.shr_area}} {{defaultAddress.shr_address}}

  • 步骤四:修改flow2.vue,显示收货人地址列表

    1. "{'cur': addr.isdefault == 1}" v-for="(addr,index) in addressList" :key="index">
    2.     "radio" name="address" checked="addr.isdefault == 1" />
    3.         {{addr.shr_name}} {{addr.shr_province}} {{addr.shr_city}} {{addr.shr_area}} {{addr.shr_address}} {{addr.shr_mobile}}
    4.     "" v-if="addr.isdefault == 0">设为默认地址
    5.     "">编辑
    6.     "">删除
  • 相关阅读:
    K线形态识别_锤头线和吊颈线(绞刑线)
    spring security url动态授权
    [第二十三篇]——Docker 安装 Apache之SpringCloud大型企业分布式微服务云架构源码
    vcruntime140_1.dll 无法继续执行代码的修复方法分享
    MES系统是如何解决工厂上的难题的?
    Prompt-To-Prompt——仅通过文本进行图像编辑
    时序预测 | MATLAB实现TCN时间卷积神经网络的时间序列预测
    【零基础学Python】后端开发篇 第二十一节--Python Web开发二:Django的安装和运行
    【Python简明教程三十(完结)】字符串格式化
    【物理应用】基于matlab GUI气象参数计算综合指标和IAQI【含Matlab源码 2116期】
  • 原文地址:https://blog.csdn.net/weixin_45481821/article/details/128053168