努力好了,时间会给你答案。--------magic_guo
对于地址模块的搭建就比较简单了,以下我梳理了地址模块的一些信息;直接看图:
地址模块展示栏:
从上图中可以看地址模块的一些操作:
功能分析:
值得注意的是,添加地址是有两种操作:
1、添加的地址是否设为默认地址;
这就意味我们要做一个判断,这里牵涉了两个sql语句:①.插入这条地址信息;②.将该用户的其他默认地址设置为非默认地址;
2、不判断地址是否设置为默认地址,添加进来的都为非默认地址
直接添加地址,不用考虑用户传进来的是否是默认的,都设为非默认地址,然后让用户自己管理操作;只需设置一个将地址改为默认的接口即可;
我参考了淘宝app的地址管理模块,没有说添加的时候就将此地址设置为默认地址,而是由用户来管理自己的地址;就是我们上述的第二种操作;
看代码:
pom依赖:
com.guo shop-common org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-starter-config org.springframework.cloud spring-cloud-starter-netflix-eureka-client mysql mysql-connector-java runtime org.springframework.boot spring-boot-starter-test test
controller控制接口层:
@RequestMapping("/address")
@RestController
public class AddressController {
@Autowired
private IAddressService addressService;
@RequestMapping("/addAddress")
@LoginUser
public ResultEntity addAddress(User user, Address address) {
if (user.getId() == null) {
return ResultEntity.error("还未登录,请登录");
}
address.setUid(user.getId());
boolean insert = addressService.insert(address);
return ResultEntity.success(insert);
}
@RequestMapping("/updateAddress")
@LoginUser
public ResultEntity updateAddress(User user, Integer addressId, Address address) {
address.setUid(user.getId());
EntityWrapper addressEntityWrapper = new EntityWrapper<>();
addressEntityWrapper.eq("id", addressId);
addressEntityWrapper.eq("uid", user.getId());
boolean update = addressService.update(address, addressEntityWrapper);
return ResultEntity.success(update);
}
@RequestMapping("/setDefAddress")
@LoginUser
public ResultEntity setDefAddress(User user, Integer addressId) {
addressService.setDefAddress(user.getId(), addressId);
return ResultEntity.success();
}
@RequestMapping("/delAddress")
@LoginUser
public ResultEntity delAddress(User user, Integer addressId) {
boolean b = addressService.deleteById(addressId);
return ResultEntity.success(b);
}
@RequestMapping("/getAllAddress")
@LoginUser
public ResultEntity getAllAddress(User user) {
EntityWrapper addressEntityWrapper = new EntityWrapper<>();
addressEntityWrapper.eq("uid", user.getId());
List addresses = addressService.selectList(addressEntityWrapper);
return ResultEntity.success(addresses);
}
}
sevice接口层:
public interface IAddressService extends IService {
void setDefAddress(Integer id, Integer addressId);
}
servicesImpl实现层:
@Service public class AddressServiceImpl extends ServiceImplimplements IAddressService { @Override @Transactional public void setDefAddress(Integer uid, Integer addressId) { // 将所有地址设为非默认地址 baseMapper.setAllAddressToDef(uid); // 将此id的地址位置为默认地址 baseMapper.setDefAddress(uid, addressId); } }
mapper层:
public interface AddressMapper extends baseMapper {
void setAllAddressToDef(Integer uid);
void setDefAddress(@Param("uid") Integer uid, @Param("addressId") Integer addressId);
}
mapper.xml:
update t_address set def = 0 where uid = #{uid} update t_address set def = 1 where uid = #{uid} and id = #{addressId}
配置文件:
spring:
cloud:
config:
uri: http://localhost:9999
profile: shop-address, eureka-client, log, datasource
name: application
mybatis-plus:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.guo
config配置文件:
spring:
application:
name: shop-address
server:
port: 8012
启动类:
@SpringBootApplication(scanbasePackages = "com.guo")
@EnableEurekaClient
@MapperScan("com.guo.mapper")
public class ShopAddressApplication {
public static void main(String[] args) {
SpringApplication.run(ShopAddressApplication.class, args);
}
}
完工!
本文章教学视频来自:https://www.bilibili.com/video/BV1tb4y1Q74E?p=3&t=125并做一些自己的更改!
静下心,慢慢来,会很快!



