购物车列表功能实现和订单功能中的用户收件地址查询功能实现

125 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第10天,点击查看活动详情

每日英语:

The people you love will change you,the things you have learned will guide you.

翻译:你所爱之人会改变你,你所学之物将会指引你。 ——《海洋奇缘》

购物车列表

购物车列表功能只需要从MongoDB中根据用户名字查询出来即可。

1)Service

接口:修改com.xz.mall.cart.service.CartService添加购物车列表方法

/***
 * 购物车列表
 * @param userName
 * @return
 */
List<Cart> list(String userName);

实现类:修改com.xz.mall.cart.service.impl.CartServiceImpl添加方法实现

/***
 * 购物车列表
 * @param userName
 * @return
 */
@Override
public List<Cart> list(String userName) {
    //查询条件
    Cart cart = new Cart();
    cart.setUserName(userName);
    return cartMapper.findAll(Example.of(cart), Sort.by("_id"));
}

2)Controller

修改com.xz.mall.cart.controller.CartController添加列表方法

/****
 * 购物车列表
 * @return
 */
@GetMapping(value = "/list")
public RespResult<List<Cart>> list(){
    String userName = "gp";
    List<Cart> carts = cartService.list(userName);
    return RespResult.ok(carts);
}

访问http://localhost:8087/cart/list测试。

订单功能

订单功能分析

我们需要查询用户的收件地址信息,而用户收件地址信息来源于shop_user库,需要创建独立微服务实现用户地址加载。

CREATE TABLE `address` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) DEFAULT NULL COMMENT '用户名',
  `provinceid` varchar(20) DEFAULT NULL COMMENT '省',
  `cityid` varchar(20) DEFAULT NULL COMMENT '市',
  `areaid` varchar(20) DEFAULT NULL COMMENT '县/区',
  `phone` varchar(20) DEFAULT NULL COMMENT '电话',
  `address` varchar(200) DEFAULT NULL COMMENT '详细地址',
  `contact` varchar(50) DEFAULT NULL COMMENT '联系人',
  `is_default` int(1) DEFAULT NULL COMMENT '是否是默认 1默认 0否',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

用户收件地址查询

Api搭建

创建mall-user-api微服务,并创建Address实体Bean

@Data
@AllArgsConstructor
@NoArgsConstructor
//MyBatisPlus表映射注解
@TableName(value = "address")
public class Address implements Serializable{
    @TableId(type = IdType.AUTO)
    private Integer id;
    private String username;
    private String provinceid;
    private String cityid;
    private String areaid;
    private String phone;
    private String address;
    private String contact;
    private Integer isDefault;
}

Service搭建

1)创建mall-user-service坐标如下:

<groupId>com.xz.mall</groupId>
<version>0.0.1-SNAPSHOT</version>
<artifactId>mall-user-service</artifactId>

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>mall-service</artifactId>
        <groupId>com.xz.mall</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>mall-user-service</artifactId>
​
    <dependencies>
        <dependency>
            <groupId>com.xz.mall</groupId>
            <artifactId>mall-user-api</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>

bootstrap.yml

server:
  port: 8088
spring:
  application:
    name: mall-user
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://192.168.xxx.xxx:3306/shop_user?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    username: root
    password: 123456
  cloud:
    nacos:
      config:
        file-extension: yaml
        server-addr: 192.168.xxx.xxx:8848
      discovery:
        #Nacos的注册地址
        server-addr: 192.168.xxx.xxx:8848
# ====================MybatisPlus====================
mybatis-plus:
  mapper-locations: mapper/*.xml
  type-aliases-package: com.xz.mall.*.model
  configuration:
    map-underscore-to-camel-case: true
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

#日志配置
logging:
  pattern:
    console: "%msg%n"

启动类

@SpringBootApplication
public class MallUserApplication {
​
    public static void main(String[] args) {
        SpringApplication.run(MallUserApplication.class,args);
    }
}

用户收件地址列表

1)Dao

创建com.xz.mall.user.mapper.AddressMapper

public interface AddressMapper extends BaseMapper<Address> {
}

在启动类上添加注解@MapperScan(basePackages = {"com.xz.mall.user.mapper"})

2)Service

接口:创建com.xz.mall.user.service.AddressService,代码如下

public interface AddressService extends IService<Address>{
    //根据用户名查询地址列表集合
    List<Address> list(String userName);
}

实现类:创建com.xz.mall.user.service.impl.AddressServiceImpl

@Service
public class AddressServiceImpl extends ServiceImpl<AddressMapper,Address> implements AddressService {
​
    @Autowired
    private AddressMapper addressMapper;
​
    /***
     * 根据用户名查询地址列表集合
     * @param userName
     * @return
     */
    @Override
    public List<Address> list(String userName) {
        QueryWrapper<Address> queryWrapper = new QueryWrapper<Address>();
        queryWrapper.eq("username",userName);
        return addressMapper.selectList(queryWrapper);
    }
}

3)Controller

创建com.xz.mall.user.controller.AddressController代码如下:

@RestController
@RequestMapping(value = "/address")
@CrossOrigin
public class AddressController {
​
    @Autowired
    private AddressService addressService;
​
    /***
     * 用户地址列表查询
     * @return
     */
    @GetMapping(value = "/list")
    public RespResult<List<Address>> list(){
        String userName = "gp";
        List<Address> addresses = addressService.list(userName);
        return RespResult.ok(addresses);
    }
}

总结

本篇主要介绍了一下购物车列表功能实现,还有订单功能中的用户收件地址查询实现。