持续创作,加速成长!这是我参与「掘金日新计划 · 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);
}
}
总结
本篇主要介绍了一下购物车列表功能实现,还有订单功能中的用户收件地址查询实现。