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

commit commit

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