下单获取用户收获地址

This commit is contained in:
jieyuu 2024-09-03 17:33:39 +08:00
parent bd12554d42
commit a110127415
9 changed files with 160 additions and 12 deletions

View File

@ -1,5 +1,7 @@
package net.jieyuu.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@ -26,8 +28,18 @@ public class JsonData {
private String msg;
/**
* 获取远程调用数据对象
* 注意 支持多单词下划线转驼峰(序列化和反序列化)
* 空对象不序列化
*/
public <T> T getData(TypeReference<T> typeReference) {
return JSON.parseObject(JSON.toJSONString(data), typeReference);
}
/**
* 成功传入数据
*
* @return
*/
public static JsonData buildSuccess() {
@ -35,7 +47,8 @@ public class JsonData {
}
/**
* 成功传入数据
* 成功传入数据
*
* @param data
* @return
*/
@ -45,6 +58,7 @@ public class JsonData {
/**
* 失败传入描述信息
*
* @param msg
* @return
*/
@ -55,6 +69,7 @@ public class JsonData {
/**
* 自定义状态码和错误信息
*
* @param code
* @param msg
* @return
@ -65,10 +80,11 @@ public class JsonData {
/**
* 传入枚举返回信息
*
* @param codeEnum
* @return
*/
public static JsonData buildResult(BizCodeEnum codeEnum){
return JsonData.buildCodeAndMsg(codeEnum.getCode(),codeEnum.getMessage());
public static JsonData buildResult(BizCodeEnum codeEnum) {
return JsonData.buildCodeAndMsg(codeEnum.getCode(), codeEnum.getMessage());
}
}

View File

@ -26,7 +26,7 @@ import java.io.IOException;
* @author jieyuu
* @since 2024-08-17
*/
@Api("订单模块")
@Api(tags = "订单模块")
@RestController
@RequestMapping("/api/order/v1")
@Slf4j
@ -39,7 +39,7 @@ public class ProductOrderController {
@PostMapping("confirm")
public void confirmOrder(@ApiParam("订单对象") @RequestBody ConfirmOrderRequest confirmOrderRequest, HttpServletResponse response) {
JsonData jsonData = orderService.confirmOrder(orderService);
JsonData jsonData = orderService.confirmOrder(confirmOrderRequest);
if (jsonData.getCode() == 0) {
//根据端类型选择返回类型
String client = confirmOrderRequest.getClientType();

View File

@ -0,0 +1,21 @@
package net.jieyuu.feign;
import net.jieyuu.utils.JsonData;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@FeignClient(name = "xdclass-user-service")
public interface UserFeignService {
/**
* 查看地址详情接口本身已经防止了水平越权
*
* @param id
* @return
*/
@GetMapping("/api/address/v1/find/{address_id}")
public JsonData detail(@PathVariable("address_id") long id);
}

View File

@ -2,6 +2,7 @@ package net.jieyuu.service;
import net.jieyuu.model.ProductOrderDO;
import com.baomidou.mybatisplus.extension.service.IService;
import net.jieyuu.request.ConfirmOrderRequest;
import net.jieyuu.utils.JsonData;
/**
@ -17,10 +18,10 @@ public interface ProductOrderService extends IService<ProductOrderDO> {
/**
* 创建订单
*
* @param orderService
* @param orderRequest
* @return
*/
JsonData confirmOrder(ProductOrderService orderService);
JsonData confirmOrder(ConfirmOrderRequest orderRequest);
/**

View File

@ -1,11 +1,21 @@
package net.jieyuu.service.impl;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import net.jieyuu.enums.BizCodeEnum;
import net.jieyuu.exception.BizException;
import net.jieyuu.feign.UserFeignService;
import net.jieyuu.interceptor.LoginInterceptor;
import net.jieyuu.model.LoginUser;
import net.jieyuu.model.ProductOrderDO;
import net.jieyuu.mapper.ProductOrderMapper;
import net.jieyuu.request.ConfirmOrderRequest;
import net.jieyuu.service.ProductOrderService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import net.jieyuu.utils.CommonUtil;
import net.jieyuu.utils.JsonData;
import net.jieyuu.vo.ProductOrderAddressVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -18,11 +28,15 @@ import org.springframework.stereotype.Service;
* @since 2024-08-17
*/
@Service
@Slf4j
public class ProductOrderServiceImpl extends ServiceImpl<ProductOrderMapper, ProductOrderDO> implements ProductOrderService {
@Autowired
private ProductOrderMapper productOrderMapper;
@Autowired
private UserFeignService userFeignService;
/**
* * 防重提交
* * 用户微服务-确认收货地址
@ -37,15 +51,43 @@ public class ProductOrderServiceImpl extends ServiceImpl<ProductOrderMapper, Pro
* * 发送延迟消息-用于自动关单
* * 创建支付信息-对接三方支付
*
* @param orderService
* @param orderRequest
* @return
*/
@Override
public JsonData confirmOrder(ProductOrderService orderService) {
public JsonData confirmOrder(ConfirmOrderRequest orderRequest) {
LoginUser loginUser = LoginInterceptor.threadLocal.get();
// 32位uuid订单号
String orderOutTradeNo = CommonUtil.getStringNumRandom(32);
// 获取收货地址
ProductOrderAddressVO addressVO = this.getUserAddress(orderRequest.getAddressId());
log.info("收货地址信息:{}", addressVO);
// 获取商品最新信息
// JsonData productJsonData = productFeignService.getProductList(orderRequest.getProductList());
//
return null;
}
/**
* 获取收货地址详情
*
* @param addressId
* @return
*/
private ProductOrderAddressVO getUserAddress(Long addressId) {
JsonData jsonData = userFeignService.detail(addressId);
if (jsonData.getCode() != 0) {
log.error("获取地址详情失败,msg:{}", jsonData);
throw new BizException(BizCodeEnum.ADDRESS_NO_EXITS);
}
ProductOrderAddressVO productOrderAddressVO = jsonData.getData(new TypeReference<ProductOrderAddressVO>() {
});
return productOrderAddressVO;
}
/**
* 查询订单状态
*

View File

@ -0,0 +1,68 @@
package net.jieyuu.vo;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 电商-公司收发货地址表
* </p>
*
* @author jieyuu
* @since 2024-02-12
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("address")
public class ProductOrderAddressVO implements Serializable {
private Long id;
/**
* 用户id
*/
private Long userId;
/**
* 是否默认收货地址0->1->
*/
private Integer defaultStatus;
/**
* 收发货人姓名
*/
private String receiveName;
/**
* 收货人电话
*/
private String phone;
/**
* /直辖市
*/
private String province;
/**
*
*/
private String city;
/**
*
*/
private String region;
/**
* 详细地址
*/
private String detailAddress;
private Date createTime;
}

View File

@ -20,7 +20,7 @@ import org.springframework.web.bind.annotation.RestController;
* @since 2024-08-07
*/
@Api("轮播图模块")
@Api(tags = "轮播图模块")
@RestController
@RequestMapping("/api/banner/v1")
public class BannerController {

View File

@ -25,7 +25,7 @@ import java.util.Map;
* @since 2024-08-07
*/
@Api("购物车")
@Api(tags = "购物车")
@RestController
@RequestMapping("/api/cart/v1/")
public class CartController {

View File

@ -21,7 +21,7 @@ import java.util.Map;
* @author jieyuu
* @since 2024-08-07
*/
@Api("商品模块")
@Api(tags = "商品模块")
@RestController
@RequestMapping("/api/product/v1")
public class ProductController {