当前位置: 首页 > news >正文

微信小程序端服务器接口:全部服务以及实战

目录

一、全部服务:

二、实战:

1.新增地址簿:

2.地址簿列表:

3.地址簿详情:

4.地址簿编辑:

5.地址簿删除:

6.设置默认地址:

三、代码提交:​


一、全部服务:

请求路径:GET /foundations/customer/serve/serveTypeList

请求、响应参数:

-- 查询指定区域下上架服务对应的分类(启用)信息
selectst.id as serveTypeId,st.img as serveTypeImg,st.sort_num as serveTypeSortNum,st.name as serveTypeName
from serve sinner join serve_item si on s.serve_item_id = si.idinner join serve_type st on si.serve_type_id = st.id
where s.region_id = 1692472339767234562and s.sale_status = 2and st.active_status = 2
group by st.id

ServeController:

@GetMapping("/serveTypeList")
@ApiOperation("查询当前区域下上架服务对应的分类")
public List<ServeAggregationTypeSimpleResDTO> serveTypeList(Long regionId) {return serveService.serveTypeList(regionId);
}

IServeService:

/*** 查询当前区域下上架服务对应的分类** @param regionId 区域id* @return 当前区域下上架服务对应的分类*/
List<ServeAggregationTypeSimpleResDTO> serveTypeList(Long regionId);

ServeServiceImpl:

@Override
public List<ServeAggregationTypeSimpleResDTO> serveTypeList(Long regionId) {//1 对区域进行校验Region region = regionMapper.selectById(regionId);if (ObjectUtil.isNull(region) || region.getActiveStatus() != 2) {return Collections.emptyList();}//2 查询当前区域下上架服务对应的分类return baseMapper.findServeTypeListByRegionId(regionId);
}

ServeMapper:

/*** 查询当前区域下上架服务对应的分类** @param regionId 区域id* @return 当前区域下上架服务对应的分类*/
List<ServeAggregationTypeSimpleResDTO> findServeTypeListByRegionId(Long regionId);

ServeMapper.xml:

<select id="findServeTypeListByRegionId"resultType="com.jzo2o.foundations.model.dto.response.ServeAggregationTypeSimpleResDTO"parameterType="java.lang.Long">selectst.id as serveTypeId,st.img as serveTypeImg,st.sort_num as serveTypeSortNum,st.name as serveTypeNamefrom serve sinner join serve_item si on s.serve_item_id = si.idinner join serve_type st on si.serve_type_id = st.idwhere s.region_id = #{regionId}and s.sale_status = 2and st.active_status = 2group by st.id
</select>

二、实战:

1.新增地址簿:

点击小程序底栏的我的--我的地址--新增地址,然后依次填写内容,保存地址簿,注意:

  1. 默认地址一个用户只能有一个,如果设置新地址为默认地址,则需要取消旧的默认地址

  2. 如果前端没有传递经纬度,则需要根据传递的详细地址调用高德地图获取经纬度(相关接口已经提供)

请求路径:POST /customer/consumer/address-book
请求、响应参数:

AddressBookController:

@ApiOperation("新增地址")
@PostMapping
public void add(@RequestBody AddressBookUpsertReqDTO addressBookUpsertReqDTO) {addressBookService.add(addressBookUpsertReqDTO);
}

IAddressBookService:

/*** 新增地址** @param addressBookUpsertReqDTO 地址信息*/
void add(AddressBookUpsertReqDTO addressBookUpsertReqDTO);

AddressBookServiceImpl:

@Override
@Transactional(rollbackFor = Exception.class)
public void add(AddressBookUpsertReqDTO addressBookUpsertReqDTO) {//当前用户idLong userId = UserContext.currentUserId();//1. 如果新增地址设为默认,则将当前用户的其它地址设置为非默认if (1 == addressBookUpsertReqDTO.getIsDefault()) {//update address_book set is_default = 0 where user_id = 当前用户this.lambdaUpdate().set(AddressBook::getIsDefault, 0).eq(AddressBook::getUserId, userId).update();}//2. 拷贝赋值AddressBook addressBook = BeanUtil.toBean(addressBookUpsertReqDTO, AddressBook.class);addressBook.setUserId(userId);//3. 如果请求体中没有经纬度,则调用第三方api根据详细地址获取经纬度if (ObjectUtil.isEmpty(addressBookUpsertReqDTO.getLocation())) {//组装详细地址String completeAddress = addressBookUpsertReqDTO.getProvince() +addressBookUpsertReqDTO.getCity() +addressBookUpsertReqDTO.getCounty() +addressBookUpsertReqDTO.getAddress();//远程请求高德获取经纬度LocationResDTO locationDto = mapApi.getLocationByAddress(completeAddress);//经纬度(字符串格式:经度,纬度),经度在前,纬度在后String location = locationDto.getLocation();addressBookUpsertReqDTO.setLocation(location);}if (StringUtils.isNotEmpty(addressBookUpsertReqDTO.getLocation())) {// 经度addressBook.setLon(NumberUtils.parseDouble(addressBookUpsertReqDTO.getLocation().split(",")[0]));// 纬度addressBook.setLat(NumberUtils.parseDouble(addressBookUpsertReqDTO.getLocation().split(",")[1]));}//4. 执行保存操作getBaseMapper().insert(addressBook);
}

这里注意要注入MapApi的实例:

同时要在CustomerApplicaiton启动类上添加注解@EnableFeignClients(basePackages = "com.jzo2o.api")让该启动类能够扫描到该类Bean对象

2.地址簿列表:

地址簿新增成功在我的地址中查询

请求路径:GET /customer/consumer/address-book/page
请求、响应参数:

AddressBookController:

@ApiOperation("地址薄分页查询")
@GetMapping("/page")
public PageResult<AddressBookResDTO> page(AddressBookPageQueryReqDTO addressBookPageQueryReqDTO) {return addressBookService.page(addressBookPageQueryReqDTO);
}

IAddressBookService:

/*** 分页查询** @param addressBookPageQueryReqDTO 查询参数* @return 分页列表*/
PageResult<AddressBookResDTO> page(AddressBookPageQueryReqDTO addressBookPageQueryReqDTO);

AddressBookServiceImpl:

@Override
public PageResult<AddressBookResDTO> page(AddressBookPageQueryReqDTO addressBookPageQueryReqDTO) {//设置分页参数Page<AddressBook> page = PageUtils.parsePageQuery(addressBookPageQueryReqDTO, AddressBook.class);//设置查询条件LambdaQueryWrapper<AddressBook> wrapper =Wrappers.<AddressBook>lambdaQuery().eq(AddressBook::getUserId, UserContext.currentUserId());//分页查询Page<AddressBook> serveTypePage = baseMapper.selectPage(page, wrapper);return PageUtils.toPage(serveTypePage, AddressBookResDTO.class);
}

效果展示:
 

3.地址簿详情:

进入我的地址页面,首先要根据地址的id查询地址详细信息

请求路径:GET /customer/consumer/address-book/{id}
请求、响应参数:

AddressBookController:

@ApiOperation("地址薄详情")
@GetMapping("/{id}")
public AddressBookResDTO detail(@PathVariable("id") Long id) {AddressBook addressBook = addressBookService.getById(id);return BeanUtil.toBean(addressBook, AddressBookResDTO.class);
}

这里的toBean方法用于将AddressBook的属性拷贝到AddressBookResDTO类当中

效果展示:
 

4.地址簿编辑:

在编辑页面修改内容,点击确定完成编辑
 

请求路径:PUT /customer/consumer/address-book/{id}
请求、响应参数:

AddressBookController:

@ApiOperation("地址薄修改")
@PutMapping("/{id}")
public void update(@PathVariable("id") Long id, @RequestBody AddressBookUpsertReqDTO addressBookUpsertReqDTO) {addressBookService.updateAddressBook(id, addressBookUpsertReqDTO);
}

IAddressBookService:

/*** 修改地址簿** @param id 主键* @param addressBookUpsertReqDTO 修改内容*/
void updateAddressBook(Long id, AddressBookUpsertReqDTO addressBookUpsertReqDTO);

AddressBookServiceImpl:

@Override
@Transactional
public void updateAddressBook(Long id, AddressBookUpsertReqDTO addressBookUpsertReqDTO) {//1. 如果新增地址设为默认,则将当前用户的其它地址设置为非默认if (1 == addressBookUpsertReqDTO.getIsDefault()) {this.lambdaUpdate().set(AddressBook::getIsDefault, 0).eq(AddressBook::getUserId, UserContext.currentUserId()).update();}//2. 拷贝赋值AddressBook addressBook = BeanUtil.toBean(addressBookUpsertReqDTO, AddressBook.class);addressBook.setId(id);//3. 如果请求体中没有经纬度,则调用第三方api根据详细地址获取经纬度if (ObjectUtil.isEmpty(addressBookUpsertReqDTO.getLocation())) {//组装详细地址String completeAddress = addressBookUpsertReqDTO.getProvince() +addressBookUpsertReqDTO.getCity() +addressBookUpsertReqDTO.getCounty() +addressBookUpsertReqDTO.getAddress();//远程请求高德获取经纬度LocationResDTO locationDto = mapApi.getLocationByAddress(completeAddress);//经纬度(字符串格式:经度,纬度),经度在前,纬度在后String location = locationDto.getLocation();addressBookUpsertReqDTO.setLocation(location);}if (StringUtils.isNotEmpty(addressBookUpsertReqDTO.getLocation())) {// 经度addressBook.setLon(NumberUtils.parseDouble(addressBookUpsertReqDTO.getLocation().split(",")[0]));// 纬度addressBook.setLat(NumberUtils.parseDouble(addressBookUpsertReqDTO.getLocation().split(",")[1]));}//4. 执行修改baseMapper.updateById(addressBook);
}

效果展示:

5.地址簿删除:

进入我的地址页面,点击“删除”对地址簿进行删除,批量删除也走此接口

请求路径:DELETE /customer/consumer/address-book/batch
请求、响应参数:

AddressBookController:

@ApiOperation("地址薄批量删除")
@DeleteMapping("/batch")
public void logicallyDelete(@RequestBody List<Long> ids) {addressBookService.removeByIds(ids);
}

6.设置默认地址:

进入我的地址,点击默认地址将当前地址设置为默认地址

注意:默认地址一个用户只能有一个,如果设置新地址为默认地址,则需要取消旧的默认地址

请求路径:PUT /customer/consumer/address-book/default

请求、响应参数:

AddressBookController:

@ApiOperation("地址薄设为默认/取消默认")
@PutMapping("/default")
public void updateDefaultStatus(Long id, Integer flag) {addressBookService.updateDefaultStatus(id, flag);
}

IAddressBookService:

/*** 地址薄设为默认/取消默认* @param id 主键* @param flag 默认/取消默认*/
void updateDefaultStatus(Long id, Integer flag);

AddressBookServiceImpl:

@Transactional(rollbackFor = Exception.class)
@Override
public void updateDefaultStatus(Long id, Integer flag) {//如果设默认地址,先把其他地址取消默认if (1 == flag) {this.lambdaUpdate().set(AddressBook::getIsDefault, 0).eq(AddressBook::getUserId, UserContext.currentUserId()).update();}//2. 修改AddressBook addressBook = new AddressBook();addressBook.setId(id);addressBook.setIsDefault(flag);getBaseMapper().updateById(addressBook);
}

效果展示:
 

三、代码提交:

http://www.dtcms.com/a/592681.html

相关文章:

  • C++11实用的“新特性”:列表初始化+右值引用与偷懒艺术——移动语义
  • CE(Chrony服务器)
  • 专门做游轮的网站聊城哪里做网站
  • STM32 几种烧录方式
  • 有哪些数据结构?
  • 7层/4层模型讲解
  • 5种主流的API架构风格
  • MAC 安装openJDK8
  • Linux网络编程:(七)Vim 编辑器完全指南:从入门到精通的全方位实战教程
  • ⚡️2025-11-10GitHub日榜Top5|AI黑客漏洞发现工具
  • 傅里叶变换五大主要特性介绍
  • 计算机网络10
  • C++基于websocket的多用户网页五子棋 --- 项目设计
  • 牛客周赛 Round 117 ABCDE 题解
  • 1.1.3 Program_Alarm的使用
  • C++pair学习笔记
  • 泉州网站建设平台项目计划书怎么做
  • Matplotlib Pyplot各种函数对比详解以及隐式显式对比详解
  • SQL,CROSS JOIN速度优化
  • 企业网站实名认证时间设计有关的网站
  • [免费]基于Python的农产品可视化系统(Django+echarts)【论文+源码+SQL脚本】
  • 【题解】P2472 [SCOI2007] 蜥蜴 [网络流]
  • RV1126 NO.47:RV1126+OPENCV对视频流进行视频腐蚀操作
  • 消息称苹果 iPhone 17 系列国内激活销量超 825 万
  • 狠狠做网站 百度一下做家政服务网站
  • 企业网站 php定制软件开发公司
  • SAP-ABAP:SAP 系统与外部服务的 HTTP 通信cl_http_client 的深度解析与应用实践
  • COC Asia 2025|得帆云 ETL:顺应 Hive 新特性,重塑数据管道的未来
  • 深度学习:基于YOLOv8模型的海洋生物目标检测系统 深度学习 pytorch 计算机 PySide6界面✅
  • 学习随笔-http和https有何区别