提交 ad59e26e authored 作者: Whispa's avatar Whispa

commit commit

上级 38fd7b5f
......@@ -3,12 +3,10 @@ package com.example.afrishop_v3.controllers;
import com.example.afrishop_v3.base.Result;
import com.example.afrishop_v3.base.StateConstant;
import com.example.afrishop_v3.enums.ResultCodeEnum;
import com.example.afrishop_v3.models.TbCfCartRecordR;
import com.example.afrishop_v3.models.TbCfExpressTemplate;
import com.example.afrishop_v3.models.TbCfStationItem;
import com.example.afrishop_v3.models.TbCfUserInfo;
import com.example.afrishop_v3.models.*;
import com.example.afrishop_v3.repository.TbCfCartRecordRRepository;
import com.example.afrishop_v3.repository.TbCfExpressTemplateRepository;
import com.example.afrishop_v3.repository.TbCfItemSkuRepository;
import com.example.afrishop_v3.repository.TbCfStationItemRepository;
import com.example.afrishop_v3.security.services.AuthenticationUser;
import com.example.afrishop_v3.util.ValidateUtils;
......@@ -28,12 +26,14 @@ public class CartController extends Controller {
private final TbCfCartRecordRRepository repository;
private final TbCfStationItemRepository itemRepository;
private final TbCfExpressTemplateRepository templateRepository;
private final TbCfItemSkuRepository itemSkuRepository;
private final AuthenticationUser user;
public CartController(TbCfCartRecordRRepository repository, TbCfStationItemRepository itemRepository, TbCfExpressTemplateRepository templateRepository, AuthenticationUser user) {
public CartController(TbCfCartRecordRRepository repository, TbCfStationItemRepository itemRepository, TbCfExpressTemplateRepository templateRepository, TbCfItemSkuRepository itemSkuRepository, AuthenticationUser user) {
this.repository = repository;
this.itemRepository = itemRepository;
this.templateRepository = templateRepository;
this.itemSkuRepository = itemSkuRepository;
this.user = user;
}
......@@ -68,7 +68,19 @@ public class CartController extends Controller {
return new Result(ResultCodeEnum.SERVICE_ERROR.getCode(), "Your shopping cart is full");
}
BigDecimal price = itemDetail.getItemPrice();
String itemSkuId = itemDetail.getItemSkuId();
if( itemSkuId == null )
return new Result(ResultCodeEnum.SERVICE_ERROR.getCode(), "Item sku not found");
Optional<TbCfItemSkus> skuOptional = itemSkuRepository.findById(itemSkuId);
if(!skuOptional.isPresent())
return new Result(ResultCodeEnum.SERVICE_ERROR.getCode(), "Item sku not found");
BigDecimal price = skuOptional.get().getSkuPrice();
if (price == null || price.compareTo(BigDecimal.ZERO) <= 0) {
return new Result(ResultCodeEnum.SERVICE_ERROR.getCode(), "The price of the goods is incorrect");
......
......@@ -11,6 +11,7 @@ import com.example.afrishop_v3.models.TbCfOrder;
import com.example.afrishop_v3.models.TbCfUserInfo;
import com.example.afrishop_v3.repository.TbCfFinanceRepository;
import com.example.afrishop_v3.repository.TbCfOrderRepository;
import com.example.afrishop_v3.repository.UserRepository;
import com.example.afrishop_v3.security.services.AuthenticationUser;
import com.example.afrishop_v3.util.DataUtils;
import com.example.afrishop_v3.util.HttpsUtil;
......@@ -37,12 +38,14 @@ public class DpoPayController extends Controller {
private static Logger logger = LoggerFactory.getLogger(DpoPayController.class);
private final TbCfOrderRepository repository;
private final UserRepository userRepository;
private final TbCfFinanceRepository financeRepository;
private final AuthenticationUser user;
private final DpoConfiguration config;
public DpoPayController(TbCfOrderRepository repository, TbCfFinanceRepository financeRepository, AuthenticationUser user, DpoConfiguration config) {
public DpoPayController(TbCfOrderRepository repository, UserRepository userRepository, TbCfFinanceRepository financeRepository, AuthenticationUser user, DpoConfiguration config) {
this.repository = repository;
this.userRepository = userRepository;
this.financeRepository = financeRepository;
this.user = user;
this.config = config;
......@@ -117,15 +120,18 @@ public class DpoPayController extends Controller {
String resCode = api3G.getString("Result");
//校验交易状态码
if (config.getSuccessCode().equals(resCode)) {
TbCfUserInfo user = this.user.user();
System.out.println("this.user===========" + this.user);
System.out.println("user================" + user);
/**
* Because I let go of this API (DPO /notify) permission,
* so now the user is anonymous, so there is no way to send messages to the user?
*/
if (user != null && user.hasFcm()) {
sendNotification(user.getFcm(), "Order alert !!", "Order of $" + order.getRealityPay() + " has been successfully paid !!");
String userId = order.getUserId();
Optional<TbCfUserInfo> userInfoOptional = userRepository.findById(userId);
if( userInfoOptional.isPresent() ) {
TbCfUserInfo user = userInfoOptional.get();
System.out.println("user================" + user);
/**
* Because I let go of this API (DPO /notify) permission,
* so now the user is anonymous, so there is no way to send messages to the user?
*/
if (user.hasFcm()) {
sendNotification(user.getFcm(), "Order alert !!", "Order of $" + order.getRealityPay() + " has been successfully paid !!");
}
}
//获取缓存中的订单
// TbCfOrderVo tbCfOrderVo = (TbCfOrderVo) orderRedisCache.get(KeyConstant.ORDER_DET + orderId);
......
......@@ -16,6 +16,7 @@ import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
......@@ -39,25 +40,27 @@ public class OrderController extends Controller {
private final TbCfAddressRepository addressRepository;
private final TbCfToicouponRepository toicouponRepository;
private final TbCfStationItemRepository itemRepository;
private final TbCfItemSkuRepository itemSkuRepository;
private final TbCfItemCommentRepository commentRepository;
private final TbCfExpressTemplateRepository templateRepository;
private final TbCfExchangeRepository exchangeRepository;
private final AuthenticationUser user;
private static Logger logger = LoggerFactory.getLogger(OrderController.class);
public OrderController(TbCfOrderRepository repository, TbCfCartRecordRRepository cartRepository, TbCfAddressRepository addressRepository, TbCfToicouponRepository toicouponRepository, TbCfStationItemRepository itemRepository, TbCfItemCommentRepository commentRepository, TbCfExpressTemplateRepository templateRepository, @Qualifier("tbCfExchangeRepository") TbCfExchangeRepository exchangeRepository, AuthenticationUser user) {
public OrderController(TbCfOrderRepository repository, TbCfCartRecordRRepository cartRepository, TbCfAddressRepository addressRepository, TbCfToicouponRepository toicouponRepository, TbCfStationItemRepository itemRepository, TbCfItemSkuRepository itemSkuRepository, TbCfItemCommentRepository commentRepository, TbCfExpressTemplateRepository templateRepository, @Qualifier("tbCfExchangeRepository") TbCfExchangeRepository exchangeRepository, AuthenticationUser user) {
this.repository = repository;
this.cartRepository = cartRepository;
this.addressRepository = addressRepository;
this.toicouponRepository = toicouponRepository;
this.itemRepository = itemRepository;
this.itemSkuRepository = itemSkuRepository;
this.commentRepository = commentRepository;
this.templateRepository = templateRepository;
this.exchangeRepository = exchangeRepository;
this.user = user;
}
private TbCfCartRecordR getCart(TbCfStationItem item, String itemSku, Integer itemNum, Double price) {
private TbCfCartRecordR getCart(TbCfStationItem item, String itemSku, Integer itemNum, BigDecimal price,String itemSkuId) {
TbCfCartRecordR record = new TbCfCartRecordR();
......@@ -66,9 +69,10 @@ public class OrderController extends Controller {
record.setItemId(item.getItemId());
record.setCartRecordId(IdUtil.createIdbyUUID());
record.setItemSku(itemSku);
record.setItemSkuId(itemSkuId);
record.setTemplate(item.getExpress());
record.setItemTitle(item.getItemName());
record.setItemPrice(BigDecimal.valueOf(price));
record.setItemPrice(price);
record.setItemImg(item.catchSingleImage());
return record;
......@@ -91,26 +95,33 @@ public class OrderController extends Controller {
public Result<TbCfOrder> payNow(@RequestParam("itemId") String itemId,
@RequestParam("itemNum") Integer itemNum,
@RequestParam(value = "itemSku", defaultValue = "") String itemSku,
@RequestParam(value = "itemPrice") Double itemPrice,
@RequestParam(value = "itemSkuId", required = false) String itemSkuId,
@RequestParam(value = "toitableId", required = false) String toitableId) {
TbCfOrder order = new TbCfOrder();
Optional<TbCfExpressTemplate> templateOptional = templateRepository.findFirstByIsDefault(1);
templateOptional.ifPresent(order::setDefaultTemplate);
if (StringUtils.isBlank(itemId) || itemNum == null || itemNum <= 0 || itemPrice == null || itemPrice <= 0)
if (StringUtils.isBlank(itemId) || itemNum == null || itemNum <= 0 || itemSkuId == null || itemSkuId.trim().isEmpty())
return new Result<>(ResultCodeEnum.SERVICE_ERROR.getCode(), "Missing information !");
Optional<TbCfStationItem> byId = itemRepository.findById(itemId);
Optional<TbCfItemSkus> skuOptional = itemSkuRepository.findById(itemSkuId);
if (!byId.isPresent())
return new Result<>(ResultCodeEnum.SERVICE_ERROR.getCode(), "Missing information !");
return new Result<>(ResultCodeEnum.SERVICE_ERROR.getCode(), "Item not found !");
if (!skuOptional.isPresent())
return new Result<>(ResultCodeEnum.SERVICE_ERROR.getCode(), "Sku not found !");
TbCfStationItem item = byId.get();
List<TbCfCartRecordR> list = new ArrayList<>();
list.add(getCart(item, itemSku, itemNum, itemPrice));
list.add(getCart(item, itemSku, itemNum, skuOptional.get().getSkuPrice(),itemSkuId));
order.setCouponId(toitableId);
if (toitableId != null && !toitableId.isEmpty()) {
......@@ -169,12 +180,13 @@ public class OrderController extends Controller {
@PostMapping("/place")
@Transactional
public Result<TbCfOrder> placeOrder(@RequestBody OrderRequest tbCfOrder,
@RequestParam(value = "toitableId", required = false) String toitableId,
@RequestParam(value = "itemId", required = false) String itemId,
@RequestParam(value = "itemNum", required = false) Integer itemNum,
@RequestParam(value = "itemSku", required = false) String itemSku,
@RequestParam(value = "itemPrice", required = false) Double itemPrice,
@RequestParam(value = "itemSkuId", required = false) String itemSkuId,
@RequestParam(value = "web", required = false) String web) throws IOException, URISyntaxException, ExecutionException, InterruptedException, TimeoutException {
TbCfUserInfo user = this.user.user();
String userId = user.getUserId();
......@@ -186,7 +198,7 @@ public class OrderController extends Controller {
boolean noCartBody = tbCfOrder.getIds() == null || tbCfOrder.getIds().length <= 0;
boolean noPayNow = itemId == null || itemId.isEmpty() || itemNum == null || itemNum <= 0 || itemPrice == null || itemPrice <= 0;
boolean noPayNow = itemId == null || itemId.isEmpty() || itemNum == null || itemNum <= 0 || itemSkuId == null || itemSkuId.trim().isEmpty();
if (noCartBody && noPayNow)
return new Result<>(v_code, "Empty body");
......@@ -197,15 +209,25 @@ public class OrderController extends Controller {
Optional<TbCfStationItem> byId = itemRepository.findById(itemId);
Optional<TbCfItemSkus> skuOptional = itemSkuRepository.findById(itemSkuId);
if (!byId.isPresent())
return new Result<>(ResultCodeEnum.SERVICE_ERROR.getCode(), "Missing information !");
return new Result<>(ResultCodeEnum.SERVICE_ERROR.getCode(), "Item not found !");
if (!skuOptional.isPresent())
return new Result<>(ResultCodeEnum.SERVICE_ERROR.getCode(), "Sku not found !");
TbCfStationItem stationItem = byId.get();
//减库存 Inventory reduction
// boolean success = subCount(itemId, itemNum);
// if (!success) {
// return new Result<>(v_code, "Goods in short stock!");
// }
allByUserId.add(getCart(stationItem, itemSku, itemNum, itemPrice));
TbCfItemSkus skuObj = skuOptional.get();
allByUserId.add(getCart(stationItem, itemSku, itemNum, skuObj.getSkuPrice(),itemSkuId));
} else {
System.out.println(Arrays.toString(tbCfOrder.getIds()));
......@@ -279,6 +301,8 @@ public class OrderController extends Controller {
TbCfOrder save = repository.save(order);
if (tbCfToicoupon != null) {
tbCfToicoupon.setEnableFlag(0);
toicouponRepository.save(tbCfToicoupon);
......@@ -289,6 +313,8 @@ public class OrderController extends Controller {
List<String> collect = allByUserId.stream().map(TbCfCartRecordR::getCartRecordId).collect(Collectors.toList());
String[] strings = collect.toArray(new String[]{});
cartRepository.updateSkuQuantity(strings);
cartRepository.updateItemQuantity(strings);
cartRepository.deleteAllByCartRecordIdIn(strings);
......
......@@ -216,7 +216,7 @@ public class TbCfCartRecordR {
TbCfItemOrderR getOrderItem(String orderId){
if( template == null ) System.out.println("Template is null");
return new TbCfItemOrderR(cartRecordId,orderId,itemId,itemNum,itemPrice,template,itemImg,itemSku,itemTitle,shopId,shopName,shopUrl);
return new TbCfItemOrderR(cartRecordId,orderId,itemId,itemNum,getItemPrice(),template,itemImg,itemSku,itemTitle,shopId,shopName,shopUrl);
}
public void setTemplate(TbCfExpressTemplate template) {
......
......@@ -24,4 +24,12 @@ public interface TbCfCartRecordRRepository extends PagingAndSortingRepository<Tb
@Transactional
void deleteAllByCartRecordIdIn(String[] ids);
@Transactional
@Query(value = "update tb_cf_item_skus sk INNER JOIN tb_cf_cart_record_r r ON r.item_sku_id=sk.id set sk.sku_count=sk.sku_count-r.item_num WHERE r.cart_record_id IN :ids ",nativeQuery = true)
void updateSkuQuantity(@Param("ids") String[] ids);
@Transactional
@Query(value = "update tb_cf_station_item sk INNER JOIN tb_cf_cart_record_r r ON r.item_id=sk.item_id set sk.item_count=sk.item_count-r.item_num WHERE r.cart_record_id IN :ids ",nativeQuery = true)
void updateItemQuantity(@Param("ids") String[] ids);
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论