feat(新增/修复): 提交订单结算,删除购物车失效,订单mapper路径错误

Signed-off-by: bunny <1319900154@qq.com>
This commit is contained in:
bunny 2024-03-29 13:46:08 +08:00
parent 5b9ef88d53
commit c36d0c3a4b
10 changed files with 28 additions and 16 deletions

View File

@ -8,6 +8,7 @@ import com.atguigu.feign.product.ProductFeignClient;
import com.atguigu.spzx.model.entity.h5.CartInfo;
import com.atguigu.spzx.model.entity.product.ProductSku;
import com.atguigu.utils.RedisUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
@ -19,6 +20,7 @@ import java.util.Objects;
import java.util.stream.Collectors;
@Service
@Slf4j
public class CartServiceImpl implements CartService {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@ -186,11 +188,13 @@ public class CartServiceImpl implements CartService {
*/
@Override
public void deleteChecked() {
log.info("清空提交过的购物车");
Long userId = BaseContext.getUserInfo().getId();
String cartKey = RedisUtils.getCartKey(userId);
List<Object> objectList = redisTemplate.opsForHash().values(cartKey); // 删除选中的购物项数据
if (!CollectionUtils.isEmpty(objectList)) {
objectList.stream().map(cartInfoJSON -> JSON.parseObject(cartInfoJSON.toString(), CartInfo.class))
objectList.stream().map(cartInfoJSON -> JSON.parseObject(JSON.toJSONString(cartInfoJSON), CartInfo.class))
.filter(cartInfo -> cartInfo.getIsChecked() == 1)
.forEach(cartInfo -> redisTemplate.opsForHash().delete(cartKey, String.valueOf(cartInfo.getSkuId())));
}

View File

@ -5,10 +5,12 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@EnableFeignClients(basePackages = {"com.atguigu.feign"})
@EnableUserTokenFeignInterceptor
@ComponentScan("com.atguigu")
@Slf4j
public class OrderApplication {
public static void main(String[] args) {

View File

@ -55,7 +55,7 @@ public class OrderInfoController {
@PathVariable Integer page,
@Parameter(name = "limit", description = "每页记录数", required = true)
@PathVariable Integer limit,
@Parameter(name = "orderStatus", description = "订单状态", required = false)
@Parameter(name = "orderStatus", description = "订单状态")
@RequestParam(required = false, defaultValue = "") Integer orderStatus) {
PageInfo<OrderInfo> pageInfo = orderInfoService.findUserPage(page, limit, orderStatus);
return Result.success(pageInfo);

View File

@ -21,7 +21,6 @@ import com.atguigu.spzx.model.entity.user.UserAddress;
import com.atguigu.spzx.model.entity.user.UserInfo;
import com.atguigu.spzx.model.vo.h5.TradeVo;
import com.atguigu.spzx.model.vo.result.ResultCodeEnum;
import com.atguigu.utils.EmptyUtil;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -48,9 +47,6 @@ public class OrderInfoServiceImpl implements OrderInfoService {
private OrderItemMapper orderItemMapper;
@Autowired
private OrderLogMapper orderLogMapper;
@Autowired
private EmptyUtil emptyUtil;
/**
* 确认下单
@ -85,21 +81,23 @@ public class OrderInfoServiceImpl implements OrderInfoService {
// 数据校验
List<OrderItem> orderItemList = orderInfoDto.getOrderItemList();
if (CollectionUtils.isEmpty(orderItemList)) {
log.error("com.atguigu.order.service.impl===>submitOrder,orderItemList为空");
throw new BunnyException(ResultCodeEnum.DATA_ERROR);
}
// 检验商品库存是否充足遍历list集合
orderItemList.forEach(orderItem -> {
ProductSku productSku = productFeignClient.getBySkuId(orderItem.getSkuId()).getData();
if (productSku == null) {
log.error("com.atguigu.order.service.impl===>submitOrder,productSku");
throw new BunnyException(MessageConstant.DATA_IS_EMPTY);
}
// 检验每个库存是否充足
if (productSku.getStockNum() < orderItem.getSkuNum()) {
log.error("com.atguigu.order.service.impl===>submitOrder,库存不足");
throw new BunnyException(MessageConstant.STOCK_LESS);
}
});
// 添加数据到order_info表
// 构建订单数据保存订单
UserInfo userInfo = BaseContext.getUserInfo();
OrderInfo orderInfo = new OrderInfo();
@ -129,7 +127,6 @@ public class OrderInfoServiceImpl implements OrderInfoService {
orderInfo.setFeightFee(orderInfoDto.getFeightFee());
orderInfo.setPayType(2);
orderInfo.setOrderStatus(0);
// 添加数据到order_info中
orderInfoMapper.save(orderInfo);
// 保存订单明细
@ -159,6 +156,7 @@ public class OrderInfoServiceImpl implements OrderInfoService {
*/
@Override
public OrderInfo getOrderInfo(Long orderId) {
log.info("com.atguigu.order.service.impl===>getOrderInfo");
return orderInfoMapper.getById(orderId);
}

View File

@ -7,7 +7,7 @@
</sql>
<!-- 添加数据到order_info中 -->
<insert id="save">
<insert id="save" useGeneratedKeys="true" keyProperty="id">
insert into order_info (id,
user_id,
nick_name,

View File

@ -1,5 +1,6 @@
package com.atguigu.pay.controller;
import com.alipay.api.AlipayApiException;
import com.atguigu.pay.service.AlipayService;
import com.atguigu.spzx.model.vo.result.Result;
import io.swagger.v3.oas.annotations.Operation;
@ -18,7 +19,7 @@ public class AlipayController {
@Operation(summary = "支付宝下单")
@GetMapping("submitAlipay/{orderNo}")
@ResponseBody
public Result<String> submitAlipay(@Parameter(name = "orderNo", description = "订单号", required = true) @PathVariable(value = "orderNo") String orderNo) {
public Result<String> submitAlipay(@Parameter(name = "orderNo", description = "订单号", required = true) @PathVariable(value = "orderNo") String orderNo) throws AlipayApiException {
String form = alipayService.submitAlipay(orderNo);
return Result.success(form);
}

View File

@ -37,7 +37,7 @@ public class AlipayServiceImpl implements AlipayService {
* @return 支付表单
*/
@Override
public String submitAlipay(String orderNo) throws AlipayApiException {
public String submitAlipay(String orderNo) {
// 保存支付记录
PaymentInfo paymentInfo = paymentInfoService.savePaymentInfo(orderNo);
@ -54,12 +54,19 @@ public class AlipayServiceImpl implements AlipayService {
map.put("out_trade_no", paymentInfo.getOrderNo());
map.put("product_code", "QUICK_WAP_WAY");
// map.put("total_amount",paymentInfo.getAmount());
// TODO 修改金额
map.put("total_amount", new BigDecimal("0.01"));
map.put("subject", paymentInfo.getContent());
alipayRequest.setBizContent(JSON.toJSONString(map));
// 发送请求
AlipayTradeWapPayResponse response = alipayClient.pageExecute(alipayRequest);
AlipayTradeWapPayResponse response = null;
try {
response = alipayClient.pageExecute(alipayRequest);
} catch (AlipayApiException exception) {
throw new BunnyException(exception.getMessage());
}
if (response.isSuccess()) {
log.info("调用成功");
return response.getBody();

View File

@ -3,5 +3,5 @@ alipay:
app_id: 2021000122609658
app_private_key: MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCXHXwKl51d5htttzJDQg1Oq+w/RAdjdGlTgGlodWxM5Vszd9IgnEffB2HlsGcpgHDteppONr8rWsEy/LmwaMR9C83YfgFPRbSIYATrQw1VynuwEFwvlW5FBT00QUqmL1AXaFGWLAao8xjRjQiArhnQA+o88DXEVnUwHTWFd8aOymesOUjJGWOId6x1MnK8om66Zxc/QFR/vZoQaE8YrATNGMMd1O1CGsnwgJ1bBOcG1Cv1dF903gllGwkLhSE3LK1/SbUg0fUi8mHU0EUyasbknlFqBdvFvJZZJ0NC+Z2sZqXV57DLa8M7bp6+YsDuc0o0EAVnLx7beYlDjwGDMgqxAgMBAAECggEAJo9UfpNviW1VJGrxvW3WXXPLRd2DESK8WZ1TyF7mMrz3x6tUiBO41zVYCrc3q8RljIOTak/X+iUfVXZdn6EsOkhPz2Vfyi2cQoxV1P54IaMYarXSACZeS+hpVLMwbDV4d3CcGPjE/kmB1L7rI4LJfWXyWHhnD+GL56ocZSFKHlcsY2bx99T+HHKTretBRnLQ8q8/iZLkTbxReaMd3o9dGTqS75d3O1nT4u0A8Pupo2dPrlE7NvtOLJMEKixToJPAfJ0b2/H1nxV19/ZW3xvRPJjSIdx32ULuUIyzkAMlH5jwO3D9NMR8fbLcsewgDAif0sPB3USpUT/4AfmJAdcVrQKBgQDf1DnUXQ/JPH/SS78W1EdUzvhGjead1NCG70gZH9YKWS3+l4wkl7l1bqrXGe17jVnPD0vHQZT7V9MjQpa0n9mGU6jKt7ym27BQwF6CLqLE82ITKKqRhUAY7D/TpXPD+DI4STmRqEWDzCgAeX2B9Y7MtOndlExPh8ZxPKtPxDPsNwKBgQCs1cH8h/nGXMv2I0hLPdIKVAQRPDCVBpzuycxn2ezHDcz5rBrYsjOpdNr3SWzcavduGI4A673uWa5znO2KE4e8Y8Uoi75wI7nx4/VapsnS8IuqpIOpkLR2ovEjxGz1BI6QyIg1Xl3QFF65BBVEucgYeLXvt/dMdUA7Z7id/h9cVwKBgDZkZmE69Dkc4JsEGT28/FCZsy/CEAbOzpXb1BN27xa4sTqrLT0/OaxV5mI7RMC/itGMkAet4jxqDT8GUYU3Sy8faWdJ2yhZPrGA7faIyrk9w9mQClMupHLqBmCyVj2LNPkEol7JG4t5s0baPyuztq38UNCt1xWEky61ZZQOw+dlAoGAQdEhD0bEwlpCPZhQBn8jRlWaOun94jJjfreQRJgDiAXkYcu9aXnrHIPogrUOZJ3DXcSyBv2/FU5HlbVT6/nl/cLMqNUWj2O7grb5jyzmvJJnzXLaxK7bWjZQt/ssNt4mYFJNNG2cMgofzDsW0lYhMdh+CCy5Wv9nl3e3IUtNq/8CgYASPcPdaCBLzCSGlTV9HMhQwRhOpWLOzQNKprebQf0fubNFGd6+yfM6DdejHXf6KH4IgV9l8OPe5ro85tmrBkvMlbh7KHbpYJ/V9cdMKd+kbxoJTkRKCnoZhY5QSuEMoC8OB1qhzJeuoqUvmpi0q569IBXrxZguD29ZqwGxoa1KNg==
alipay_public_key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk41ooyX7utKM9B7jNcc4EzmyVU0Qfs18KFVFwyhl7YQMw/PB2YVQreVSvvb1rS/2YVxcjLK/9ehD//79b8aoxhFlEGqA7fGu0C2UR6pl+PhmRLcHeyN+DOG87Fhqb1t4JXmXQc1LXUfelJoh+r5XnMPWDAlY5JJtH3GZIU+AoBt9PuEtfhh03LL6WtnJMwOnqH94T8qHymLDftEGOWme1iAlenB692cUId20BmLJal621EAN+xpmkeJZEpx1wQ2fGhyTo7pm4v8LVLuqzOXkraffITvfbPl5IU0kjjs/QECwItAI0IBbNsDutezw/a0JobijjoF28uo4gtwmncBoQwIDAQAB
return_payment_url: http://192.168.136.142/#/pages/money/paySuccess
notify_payment_url: http://127.0.0.1:8500/api/order/alipay/callback/notify
return_payment_url: http://localhost/#/pages/money/paySuccess
notify_payment_url: http://4c428eff.r7.cpolar.top/api/order/alipay/callback/notify

View File

@ -43,7 +43,7 @@ logging:
mybatis:
type-aliases-package: com.atguigu.spzx.model
mapper-locations: classpath:/mapper/*.xml
mapper-locations: classpath:/mapper/*/*.xml
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
map-underscore-to-camel-case: true

View File

@ -55,7 +55,7 @@
<select id="getById" resultType="com.atguigu.spzx.model.entity.product.ProductSku">
select *
from product_sku
where id = #{id}
where id = #{skuId}
</select>
<!-- 同一个商品下面的sku信息列表 -->