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

打印 上一主题 下一主题

主题 992|帖子 992|积分 2976

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
目录
构建订单服务:8100
收货人列表
接口
后端实现:JavaBean
后端实现
前端实现
构建订单服务:8100


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

步骤二:修改pom.xml文件,添加依赖
  1. <dependencies>
  2.     <!--自定义项目-->
  3.     <dependency>
  4.         <groupId>com.czxy.changgou</groupId>
  5.         <artifactId>changgou4-common-db</artifactId>
  6.     </dependency>
  7.     <dependency>
  8.         <groupId>com.czxy.changgou</groupId>
  9.         <artifactId>changgou4-common-auth</artifactId>
  10.     </dependency>
  11.     <dependency>
  12.         <groupId>com.czxy.changgou</groupId>
  13.         <artifactId>changgou4-pojo</artifactId>
  14.     </dependency>
  15.     <!--web起步依赖-->
  16.     <dependency>
  17.         <groupId>org.springframework.boot</groupId>
  18.         <artifactId>spring-boot-starter-web</artifactId>
  19.     </dependency>
  20.     <!-- nacos 客户端 -->
  21.     <dependency>
  22.         <groupId>com.alibaba.nacos</groupId>
  23.         <artifactId>nacos-client</artifactId>
  24.     </dependency>
  25.     <!-- nacos 服务发现 -->
  26.     <dependency>
  27.         <groupId>com.alibaba.cloud</groupId>
  28.         <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  29.     </dependency>
  30.     <!--redis-->
  31.     <dependency>
  32.         <groupId>org.springframework.boot</groupId>
  33.         <artifactId>spring-boot-starter-data-redis</artifactId>
  34.     </dependency>
  35.     <dependency>
  36.         <groupId>redis.clients</groupId>
  37.         <artifactId>jedis</artifactId>
  38.     </dependency>
  39.     <!-- openfeign 远程调用 -->
  40.     <dependency>
  41.         <groupId>org.springframework.cloud</groupId>
  42.         <artifactId>spring-cloud-starter-openfeign</artifactId>
  43.     </dependency>
  44.     <!--swagger2-->
  45.     <dependency>
  46.         <groupId>io.springfox</groupId>
  47.         <artifactId>springfox-swagger2</artifactId>
  48.     </dependency>
  49.     <dependency>
  50.         <groupId>io.springfox</groupId>
  51.         <artifactId>springfox-swagger-ui</artifactId>
  52.     </dependency>
  53.     <!--fastjson-->
  54.     <dependency>
  55.         <groupId>com.alibaba</groupId>
  56.         <artifactId>fastjson</artifactId>
  57.     </dependency>
  58.     <!--微信支付-->
  59.     <dependency>
  60.         <groupId>com.github.wxpay</groupId>
  61.         <artifactId>wxpay-sdk</artifactId>
  62.         <version>0.0.3</version>
  63.     </dependency>
  64. </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<Address> {
  7.     /**
  8.      * 通过用户查询所有的地址
  9.      * @return
  10.      */
  11.     @Select("SELECT * FROM tb_address WHERE user_id = #{userId}")
  12.     public List<Address> 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<Address> {
  6.     /**
  7.      * 查询指定用户的所有地址
  8.      * @param userId
  9.      * @return
  10.      */
  11.     public List<Address> 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<AddressMapper, Address> implements AddressService {
  13.     @Override
  14.     public List<Address> 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<Address> 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. <div class="address_info">
  2.    <!-- 默认地址 -->
  3.    <p>{{defaultAddress.shr_name}}  {{defaultAddress.shr_mobile}} </p>
  4.    <p>{{defaultAddress.shr_province}} {{defaultAddress.shr_city}} {{defaultAddress.shr_area}} {{defaultAddress.shr_address}} </p>
  5. </div>
复制代码
步骤四:修改flow2.vue,显示收货人所在列表

  1. <!-- 列表页面 -->
  2. <li :class="{'cur': addr.isdefault == 1}" v-for="(addr,index) in addressList" :key="index">
  3.     <input type="radio" name="address" checked="addr.isdefault == 1" />
  4.         {{addr.shr_name}} {{addr.shr_province}} {{addr.shr_city}} {{addr.shr_area}} {{addr.shr_address}} {{addr.shr_mobile}}
  5.     <a href="" v-if="addr.isdefault == 0">设为默认地址</a>
  6.     <a href="">编辑</a>
  7.     <a href="">删除</a>
  8. </li>
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

千千梦丶琪

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表