提交 50c78a79 authored 作者: Whispa's avatar Whispa

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/main/java/com/example/afrishop_v3/controllers/FlutterWaveController.java
#	src/main/java/com/example/afrishop_v3/security/WebSecurityConfig.java
package com.example.afrishop_v3.controllers;
import com.alibaba.fastjson.JSONObject;
import com.example.afrishop_v3.base.Result;
import com.example.afrishop_v3.enums.ResultCodeEnum;
import com.example.afrishop_v3.models.Activity;
import com.example.afrishop_v3.models.TbCfCartRecordR;
import com.example.afrishop_v3.models.TbCfStationItem;
import com.example.afrishop_v3.repository.ActivityRepository;
import com.example.afrishop_v3.repository.TbCfCartRecordRRepository;
import com.example.afrishop_v3.repository.TbCfStationItemRepository;
import com.example.afrishop_v3.vo.Condition;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* @Auther: wudepeng
......@@ -22,17 +29,217 @@ import java.util.List;
public class ActivityController {
private final ActivityRepository activityRepository;
private final TbCfStationItemRepository itemRepository;
private final TbCfCartRecordRRepository cartRecordRRepository;
public ActivityController(ActivityRepository activityRepository) {
public ActivityController(ActivityRepository activityRepository, TbCfStationItemRepository itemRepository, TbCfCartRecordRRepository cartRecordRRepository) {
this.activityRepository = activityRepository;
this.itemRepository = itemRepository;
this.cartRecordRRepository = cartRecordRRepository;
}
@GetMapping("/getAllActivity")
public Result getAllActivity(@RequestParam("pageNum") Integer pageNum,
@RequestParam("pageSize") Integer pageSize) {
public Result getAllActivity(@RequestParam(value = "pageNum", defaultValue = "0") Integer pageNum,
@RequestParam(value = "pageSize", defaultValue = "12") Integer pageSize) {
return new Result(activityRepository.getAllActivity());
return new Result(activityRepository.getAllActivity(PageRequest.of(pageNum, pageSize)));
}
@GetMapping("/info/{id}")
public Result getActivityInfo(@PathVariable("id") String id) {
return new Result(activityRepository.findById(id));
}
//查询商品活动
@GetMapping("item/{itemId}")
public Result getItemActivity(@PathVariable("itemId") String itemId) throws ParseException {
Result result = new Result();
Activity activity = null;
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//全场活动
if (activityRepository.existsByUseType(1)) {
List<Activity> fullList = activityRepository.findAllByUseType(1);
if (fullList != null && fullList.size() > 0)
activity = fullList.get(0);
}
//商品分类活动
if (activityRepository.existsByUseType(2)) {
Optional<TbCfStationItem> byId = itemRepository.findById(itemId);
if (byId.isPresent()) {
TbCfStationItem item = byId.get();
String category1 = item.getItemCategory();
String category2 = item.getItemCategorytwo();
String category3 = item.getItemDescritionId();
String con2 = category1 + "," + category2;
String con3 = category1 + "," + category2 + "," + category3;
List<Activity> activityList = activityRepository.findAllByUseType(2);
List<Activity> actList = new ArrayList<>();
for (Activity act2 : activityList) {
if (category1.equals(act2.getCategoryId())) {
act2.setOrder(3);
actList.add(act2);
}
if (con2.equals(act2.getCategoryId())) {
act2.setOrder(2);
actList.add(act2);
}
if (con3.equals(act2.getCategoryId())) {
act2.setOrder(1);
actList.add(act2);
}
}
Collections.sort(actList, Comparator.comparing(Activity::getOrder));
if (actList.size() > 0 && actList != null)
activity = actList.get(0);
}
}
//特定商品
if (activityRepository.existsByUseType(3)) {
List<Activity> list = activityRepository.findAllByUseType(3);
for (Activity act3 : list) {
String[] itemIdArr = act3.getItemIds().split(",");
List<String> idList = Arrays.asList(itemIdArr);
if (idList.contains(itemId))
activity = act3;
break;
}
}
if (activity != null) {
Date endTime = df.parse(activity.getEndTime().toString());
Date now = df.parse(df.format(new Date()));
long l = endTime.getTime() - now.getTime();
long day = l / (24 * 60 * 60 * 1000);
long hour = (l / (60 * 60 * 1000) - day * 24);
long min = ((l / (60 * 1000)) - day * 24 * 60 - hour * 60);
long s = (l / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
activity.setDeadline(day + ":" + getTime(hour) + ":" + getTime(min) + ":" + getTime(s));
result.setData(activity);
return result;
}
result.setCode(ResultCodeEnum.QUERY_ERROR.getCode());
result.setMessage("No online activity");
return result;
}
public String getTime(long time) {
String t = String.valueOf(time);
if (time < 10) {
t = "0" + time;
}
return t;
}
@GetMapping("/caculateCartDiscount")
public Result caculateCartDiscount(@RequestBody String[] cartIds) {
// Activity activity = null;
// List<Activity> activityList = new ArrayList<>();
BigDecimal itemPrice = BigDecimal.ZERO;
BigDecimal lessAmount = BigDecimal.ZERO;
String discount = null;
int itemCount = 0;
Map<String, Object> map = new HashMap<>();
for (String cartId : cartIds) {
Optional<TbCfCartRecordR> byId = cartRecordRRepository.findById(cartId);
if (byId.isPresent()) {
TbCfCartRecordR cart = byId.get();
itemPrice = itemPrice.add(cart.getItemPrice());
itemCount += cart.getItemNum();
// String itemId = cart.getItemId();
// activity = checkActivity(itemId);
// activityList.add(activity);
}
}
if (activityRepository.existsByUseType(1)) {
List<Activity> fullList = activityRepository.findAllByUseType(1);
Activity activity = fullList.get(0);
String type = activity.getType().toString();
List<Condition> conList = JSONObject.parseArray(activity.getCondition(), Condition.class);
Collections.sort(conList, Comparator.comparing(Condition::getKey));
// BigDecimal finalItemPrice = itemPrice;
if ("1".equals(type) || "2".equals(type)) {
for (Condition con : conList) {
double key = con.getKey();
BigDecimal threshold = new BigDecimal(key);
double value = con.getValue();
discount = String.valueOf(value);
if (itemPrice.compareTo(threshold) < 0) {
lessAmount = threshold.subtract(itemPrice);
map.put("discount", discount);
map.put("lessAmount", lessAmount);
}
break;
}
} else if ("3".equals(type)) {
for (Condition con : conList) {
int key = (int) con.getKey();
double value = con.getValue();
discount = String.valueOf(value);
if (itemCount < key) {
map.put("discount", discount);
map.put("lessAmount", key - itemCount);
}
break;
}
}
}
return new Result(map);
}
public Activity checkActivity(String itemId) {
Result result = new Result();
Activity activity = null;
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//全场活动
if (activityRepository.existsByUseType(1)) {
List<Activity> fullList = activityRepository.findAllByUseType(1);
activity = fullList.get(0);
}
//商品分类活动
if (activityRepository.existsByUseType(2)) {
Optional<TbCfStationItem> byId = itemRepository.findById(itemId);
if (byId.isPresent()) {
TbCfStationItem item = byId.get();
String category1 = item.getItemCategory();
String category2 = item.getItemCategorytwo();
String category3 = item.getItemDescritionId();
String con2 = category1 + "," + category2;
String con3 = category1 + "," + category2 + "," + category3;
List<Activity> activityList = activityRepository.findAllByUseType(2);
List<Activity> actList = new ArrayList<>();
for (Activity act2 : activityList) {
if (category1.equals(act2.getCategoryId())) {
act2.setOrder(3);
actList.add(act2);
}
if (con2.equals(act2.getCategoryId())) {
act2.setOrder(2);
actList.add(act2);
}
if (con3.equals(act2.getCategoryId())) {
act2.setOrder(1);
actList.add(act2);
}
}
Collections.sort(actList, Comparator.comparing(Activity::getOrder));
if (actList.size() > 0 && actList != null)
activity = actList.get(0);
}
}
return activity;
}
}
......@@ -189,73 +189,73 @@ public class BonusController extends Controller {
TbCfUserInfo info = user.user();
Optional<String> userIdOptional = bonus.userId();
String orderId = bonus.getOrderId();
if( orderId == null )
return new Result(ResultCodeEnum.VALIDATE_ERROR.getCode(),"Order is missing !!!");
Optional<TbCfOrder> orderOptional = orderRepository.findById(orderId);
if( !orderOptional.isPresent() )
return new Result(ResultCodeEnum.VALIDATE_ERROR.getCode(),"Order is missing !!!");
TbCfOrder order = orderOptional.get();
if( !OrderStatusEnum.PAID.getValue().equals(order.getPayStatus()) ){
return new Result(ResultCodeEnum.VALIDATE_ERROR.getCode(),"Invalid order status");
}
if( repository.existsByOrderId(orderId) ){
return new Result(ResultCodeEnum.VALIDATE_ERROR.getCode(),"Transaction already done !!!");
}
BigDecimal amount = bonus.getAmount();
if (userIdOptional.isPresent()) {
Optional<TbCfUserInfo> optionalUser = userRepository.findById(userIdOptional.get());
if (optionalUser.isPresent()) {
TbCfUserInfo user = optionalUser.get();
Post post = bonus.getPost();
Optional<Post> postOptional = post == null ? Optional.empty() : postRepository.findById(post.getId());
String productSharer = bonus.getProductSharer();
Optional<TbCfUserInfo> sharer = Optional.empty();
if( productSharer != null){
sharer = userRepository.findByCode(productSharer);
}
if (user.invited()) {
BigDecimal v = amount.multiply(BigDecimal.valueOf(10)).divide(BigDecimal.valueOf(100),RoundingMode.CEILING);
bonus.setAmount(v);
bonus.setUserInfo(user);
bonus.setPercentage(10);
bonus = repository.save(bonus);
if( user.hasFcm() ){
sendNotification(user.getFcm(),"Bonus alert !!",user.display()+", You received bonus of $"+formatter.format(v)+" in your account");
}
}
TbCfUserInfo bonusInc = runBonusInc(user, amount, 5,false, orderId);
if (sharer.isPresent()&&sharer.get().getUserId().equals(user.getUserId())){
runBonusInc(bonusInc, amount, 5,false, orderId);
}
runBonusInc(sharer.orElseGet(() -> (postOptional.isPresent()&& !postOptional.get().getUserId().equals(user.getUserId()))? postOptional.get().getRealUser() : bonusInc),
amount, 5,postOptional.isPresent() || sharer.isPresent(), orderId);
//runBonusInc(bonusInc, amount, 0);
}
}
// Optional<String> userIdOptional = bonus.userId();
//
// String orderId = bonus.getOrderId();
//
// if( orderId == null )
// return new Result(ResultCodeEnum.VALIDATE_ERROR.getCode(),"Order is missing !!!");
//
// Optional<TbCfOrder> orderOptional = orderRepository.findById(orderId);
//
// if( !orderOptional.isPresent() )
// return new Result(ResultCodeEnum.VALIDATE_ERROR.getCode(),"Order is missing !!!");
//
// TbCfOrder order = orderOptional.get();
//
// if( !OrderStatusEnum.PAID.getValue().equals(order.getPayStatus()) ){
// return new Result(ResultCodeEnum.VALIDATE_ERROR.getCode(),"Invalid order status");
// }
//
// if( repository.existsByOrderId(orderId) ){
// return new Result(ResultCodeEnum.VALIDATE_ERROR.getCode(),"Transaction already done !!!");
// }
//
//
// BigDecimal amount = bonus.getAmount();
//
// if (userIdOptional.isPresent()) {
//
// Optional<TbCfUserInfo> optionalUser = userRepository.findById(userIdOptional.get());
//
// if (optionalUser.isPresent()) {
//
// TbCfUserInfo user = optionalUser.get();
//
// Post post = bonus.getPost();
//
// Optional<Post> postOptional = post == null ? Optional.empty() : postRepository.findById(post.getId());
//
// String productSharer = bonus.getProductSharer();
//
// Optional<TbCfUserInfo> sharer = Optional.empty();
//
// if( productSharer != null){
// sharer = userRepository.findByCode(productSharer);
// }
//
//
// if (user.invited()) {
// BigDecimal v = amount.multiply(BigDecimal.valueOf(10)).divide(BigDecimal.valueOf(100),RoundingMode.CEILING);
// bonus.setAmount(v);
// bonus.setUserInfo(user);
// bonus.setPercentage(10);
// bonus = repository.save(bonus);
// if( user.hasFcm() ){
// sendNotification(user.getFcm(),"Bonus alert !!",user.display()+", You received bonus of $"+formatter.format(v)+" in your account");
// }
// }
//
//
// TbCfUserInfo bonusInc = runBonusInc(user, amount, 5,false, orderId);
// if (sharer.isPresent()&&sharer.get().getUserId().equals(user.getUserId())){
// runBonusInc(bonusInc, amount, 5,false, orderId);
// }
// runBonusInc(sharer.orElseGet(() -> (postOptional.isPresent()&& !postOptional.get().getUserId().equals(user.getUserId()))? postOptional.get().getRealUser() : bonusInc),
// amount, 5,postOptional.isPresent() || sharer.isPresent(), orderId);
// //runBonusInc(bonusInc, amount, 0);
// }
// }
return new Result<>(bonus);
}
......
......@@ -28,6 +28,7 @@ import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.locks.ReentrantLock;
@RestController
@RequestMapping("/dpo")
......@@ -44,6 +45,7 @@ public class DpoPayController extends Controller {
private final PostRepository postRepository;
private final TbCfOrderRepository orderRepository;
public DpoPayController(TbCfOrderRepository repository, UserRepository userRepository, TbCfFinanceRepository financeRepository, AuthenticationUser user, DpoConfiguration config, NetworkRepository networkRepository, BonusRepository bonusRepository, PostRepository postRepository, TbCfOrderRepository orderRepository) {
this.repository = repository;
this.userRepository = userRepository;
......@@ -336,7 +338,7 @@ public class DpoPayController extends Controller {
tranMap.put("CompanyRefUnique", 0);
// logger.info("getOrderSource---------->>>>>>>>>>>>" + order.getOrderSource());
//回调地址
if ("2".equals(order.getOrderSource().toString())||"3".equals(order.getOrderSource().toString())) {
if ("2".equals(order.getOrderSource().toString()) || "3".equals(order.getOrderSource().toString())) {
tranMap.put("RedirectURL", config.getNotifyUrl() + "/web");
} else {
tranMap.put("RedirectURL", config.getNotifyUrl());
......@@ -360,36 +362,35 @@ public class DpoPayController extends Controller {
}
public Result saveNetworkMarketing(Bonus bonus, String userId) {
TbCfUserInfo info = user.user();
public void saveNetworkMarketing(Bonus bonus, String userId) {
// Optional<String> userIdOptional = userId;
System.out.println("userId==" + userId);
String orderId = bonus.getOrderId();
if (orderId == null)
return new Result(ResultCodeEnum.VALIDATE_ERROR.getCode(), "Order is missing !!!");
logger.info("佣金:orderId为空");
Optional<TbCfOrder> orderOptional = orderRepository.findById(orderId);
if (!orderOptional.isPresent())
return new Result(ResultCodeEnum.VALIDATE_ERROR.getCode(), "Order is missing !!!");
logger.info("佣金:订单不存在");
TbCfOrder order = orderOptional.get();
if (!OrderStatusEnum.PAID.getValue().equals(order.getPayStatus())) {
return new Result(ResultCodeEnum.VALIDATE_ERROR.getCode(), "Invalid order status");
logger.info("佣金:订单未支付");
}
if (bonusRepository.existsByOrderId(orderId)) {
return new Result(ResultCodeEnum.VALIDATE_ERROR.getCode(), "Transaction already done !!!");
}
boolean condition = orderId != null && orderOptional.isPresent() && OrderStatusEnum.PAID.getValue().equals(order.getPayStatus()) && !StringUtils.isBlank(userId);
// if (bonusRepository.existsByOrderId(orderId)) {
// return new Result(ResultCodeEnum.VALIDATE_ERROR.getCode(), "Transaction already done !!!");
// }
BigDecimal amount = bonus.getAmount();
if (!StringUtils.isBlank(userId)) {
if (condition) {
Optional<TbCfUserInfo> optionalUser = userRepository.findById(userId);
......@@ -408,9 +409,9 @@ public class DpoPayController extends Controller {
if (productSharer != null) {
sharer = userRepository.findByCode(productSharer);
}
if (user.invited()) {
synchronized (this) {
boolean exists = bonusRepository.existsByOrderId(orderId);
if (!exists && user.invited()) {
BigDecimal v = amount.multiply(BigDecimal.valueOf(10)).divide(BigDecimal.valueOf(100), RoundingMode.CEILING);
bonus.setAmount(v);
bonus.setUserInfo(user);
......@@ -420,15 +421,16 @@ public class DpoPayController extends Controller {
sendNotification(user.getFcm(), "Bonus alert !!", user.display() + ", You received bonus of $" + formatter.format(v) + " in your account");
}
}
}
TbCfUserInfo bonusInc = runBonusInc(user, amount, 5, false, orderId);
runBonusInc(sharer.orElseGet(() -> postOptional.isPresent() ? postOptional.get().getRealUser() : bonusInc), amount, 5, postOptional.isPresent() || sharer.isPresent(), orderId);
//runBonusInc(bonusInc, amount, 0);
}
}
return new Result<>(bonus);
}
private TbCfUserInfo runBonusInc(TbCfUserInfo user, BigDecimal amount, int percent, boolean direct, String orderId) {
......@@ -443,7 +445,7 @@ public class DpoPayController extends Controller {
bonus.setAmount(v);
bonus.setPercentage(percent);
bonus.setOrderId(orderId);
if (userInfo!=null&&userInfo.invited()&&!"000000".equals(userInfo.getCode())) {
if (userInfo != null && userInfo.invited() && !"000000".equals(userInfo.getCode())) {
bonusRepository.save(bonus);
// bonus = repository.save(bonus);
if (userInfo.hasFcm()) {
......
......@@ -81,7 +81,7 @@ public class FlutterWaveController extends Controller {
public ResponseEntity<String> payForOrderByCard(@RequestParam("orderId") String orderId, @RequestBody FlutterWaveCard flutterWaveCard) {
RaveConstant.PUBLIC_KEY = PUBLIC_KEY;
RaveConstant.SECRET_KEY = SECRET_KEY;
RaveConstant.ENVIRONMENT = Environment.STAGING; //or live
RaveConstant.ENVIRONMENT = Environment.LIVE; //or live
// Result result = new Result();
Optional<TbCfOrder> byId = repository.findById(orderId);
......@@ -358,36 +358,35 @@ public class FlutterWaveController extends Controller {
return result;
}
public Result saveNetworkMarketing(Bonus bonus,String userId) {
TbCfUserInfo info = user.user();
public void saveNetworkMarketing(Bonus bonus, String userId) {
// Optional<String> userIdOptional = userId;
System.out.println("userId=="+userId);
String orderId = bonus.getOrderId();
if (orderId == null)
return new Result(ResultCodeEnum.VALIDATE_ERROR.getCode(), "Order is missing !!!");
logger.info("佣金:orderId为空");
Optional<TbCfOrder> orderOptional = orderRepository.findById(orderId);
if (!orderOptional.isPresent())
return new Result(ResultCodeEnum.VALIDATE_ERROR.getCode(), "Order is missing !!!");
logger.info("佣金:订单不存在");
TbCfOrder order = orderOptional.get();
if (!OrderStatusEnum.PAID.getValue().equals(order.getPayStatus())) {
return new Result(ResultCodeEnum.VALIDATE_ERROR.getCode(), "Invalid order status");
logger.info("佣金:订单未支付");
}
if (bonusRepository.existsByOrderId(order.getOrderId())) {
return new Result(ResultCodeEnum.VALIDATE_ERROR.getCode(), "Transaction already done !!!");
}
boolean condition = orderId != null && orderOptional.isPresent() && OrderStatusEnum.PAID.getValue().equals(order.getPayStatus()) && !StringUtils.isBlank(userId);
// if (bonusRepository.existsByOrderId(orderId)) {
// return new Result(ResultCodeEnum.VALIDATE_ERROR.getCode(), "Transaction already done !!!");
// }
BigDecimal amount = bonus.getAmount();
if (!StringUtils.isBlank(userId)) {
if (condition) {
Optional<TbCfUserInfo> optionalUser = userRepository.findById(userId);
......@@ -406,9 +405,9 @@ public class FlutterWaveController extends Controller {
if (productSharer != null) {
sharer = userRepository.findByCode(productSharer);
}
if (user.invited()) {
synchronized (this) {
boolean exists = bonusRepository.existsByOrderId(orderId);
if (!exists && user.invited()) {
BigDecimal v = amount.multiply(BigDecimal.valueOf(10)).divide(BigDecimal.valueOf(100), RoundingMode.CEILING);
bonus.setAmount(v);
bonus.setUserInfo(user);
......@@ -418,15 +417,16 @@ public class FlutterWaveController extends Controller {
sendNotification(user.getFcm(), "Bonus alert !!", user.display() + ", You received bonus of $" + formatter.format(v) + " in your account");
}
}
}
TbCfUserInfo bonusInc = runBonusInc(user, amount, 5, false, orderId);
runBonusInc(sharer.orElseGet(() -> postOptional.isPresent() ? postOptional.get().getRealUser() : bonusInc), amount, 5, postOptional.isPresent() || sharer.isPresent(), orderId);
//runBonusInc(bonusInc, amount, 0);
}
}
return new Result<>(bonus);
}
private TbCfUserInfo runBonusInc(TbCfUserInfo user, BigDecimal amount, int percent, boolean direct, String orderId) {
......
......@@ -23,6 +23,7 @@ import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.URISyntaxException;
import java.text.ParseException;
import java.time.Duration;
import java.util.*;
import java.util.concurrent.ExecutionException;
......@@ -45,10 +46,11 @@ public class OrderController extends Controller {
private final TbCfItemCommentRepository commentRepository;
private final TbCfExpressTemplateRepository templateRepository;
private final TbCfExchangeRepository exchangeRepository;
private final ActivityRepository activityRepository;
private final AuthenticationUser user;
private static Logger logger = LoggerFactory.getLogger(OrderController.class);
public OrderController(TbCfToicouponRepository couponRepository, TbCfOrderRepository repository, TbCfCartRecordRRepository cartRepository, TbCfAddressRepository addressRepository, TbCfToicouponRepository toicouponRepository, TbCfStationItemRepository itemRepository, TbCfItemSkuRepository itemSkuRepository, TbCfItemCommentRepository commentRepository, TbCfExpressTemplateRepository templateRepository, @Qualifier("tbCfExchangeRepository") TbCfExchangeRepository exchangeRepository, AuthenticationUser user) {
public OrderController(TbCfToicouponRepository couponRepository, TbCfOrderRepository repository, TbCfCartRecordRRepository cartRepository, TbCfAddressRepository addressRepository, TbCfToicouponRepository toicouponRepository, TbCfStationItemRepository itemRepository, TbCfItemSkuRepository itemSkuRepository, TbCfItemCommentRepository commentRepository, TbCfExpressTemplateRepository templateRepository, @Qualifier("tbCfExchangeRepository") TbCfExchangeRepository exchangeRepository, ActivityRepository activityRepository, AuthenticationUser user) {
this.couponRepository = couponRepository;
this.repository = repository;
this.cartRepository = cartRepository;
......@@ -59,6 +61,7 @@ public class OrderController extends Controller {
this.commentRepository = commentRepository;
this.templateRepository = templateRepository;
this.exchangeRepository = exchangeRepository;
this.activityRepository = activityRepository;
this.user = user;
}
......@@ -98,7 +101,8 @@ public class OrderController extends Controller {
@RequestParam("itemNum") Integer itemNum,
@RequestParam(value = "itemSku", defaultValue = "") String itemSku,
@RequestParam(value = "itemSkuId", required = false) String itemSkuId,
@RequestParam(value = "toitableId", required = false) String toitableId) {
@RequestParam(value = "toitableId", required = false) String toitableId,
@RequestParam(value = "open", required = false) boolean open) throws ParseException {
TbCfOrder order = new TbCfOrder();
......@@ -138,15 +142,16 @@ public class OrderController extends Controller {
order.setCoupon(coupon);
}
}
order.setOpen(open);
order.setCouponMap(map);
order.getItemOrderListFromCartList(list, itemRepository);
order.getItemOrderListFromCartList(list, itemRepository,activityRepository);
return new Result<>(order);
}
@PostMapping("/settle")
public Result<TbCfOrder> settleAccount(@RequestBody String[] ids, @RequestParam(value = "toitableId", required = false) String toitableId) {
public Result<TbCfOrder> settleAccount(@RequestBody String[] ids, @RequestParam(value = "toitableId", required = false) String toitableId,
@RequestParam(value = "open", required = false) boolean open) throws ParseException {
//String userId = user.userId();
List<TbCfCartRecordR> allByUserId = cartRepository.findAllByCartRecordIdIn(ids);
BigDecimal orderPrice = BigDecimal.ZERO;
......@@ -178,8 +183,8 @@ public class OrderController extends Controller {
}
}
order.getItemOrderListFromCartList(allByUserId, itemRepository);
order.setOpen(open);
order.getItemOrderListFromCartList(allByUserId, itemRepository,activityRepository);
return new Result<>(order);
......@@ -200,8 +205,9 @@ public class OrderController extends Controller {
@RequestParam(value = "itemNum", required = false) Integer itemNum,
@RequestParam(value = "itemSku", required = false) String itemSku,
@RequestParam(value = "itemSkuId", required = false) String itemSkuId,
@RequestParam(value = "orderSource", required = false) Integer orderSource
) throws IOException, URISyntaxException, ExecutionException, InterruptedException, TimeoutException {
@RequestParam(value = "orderSource", required = false) Integer orderSource,
@RequestParam(value = "open", required = false) boolean open
) throws IOException, URISyntaxException, ExecutionException, InterruptedException, TimeoutException, ParseException {
TbCfUserInfo user = this.user.user();
String userId = user.getUserId();
......@@ -320,8 +326,8 @@ public class OrderController extends Controller {
order.setOrderSource(orderSource);
}
order.getItemOrderListFromCartList(allByUserId, itemRepository);
order.setOpen(open);
order.getItemOrderListFromCartList(allByUserId, itemRepository,activityRepository);
TbCfOrder save = repository.save(order);
......
......@@ -286,36 +286,35 @@ public class PaypalContoller extends Controller {
return now;
}
public Result saveNetworkMarketing(Bonus bonus, String userId) {
public void saveNetworkMarketing(Bonus bonus, String userId) {
// TbCfUserInfo info = user.user();
// Optional<String> userIdOptional = userId;
System.out.println("userId=="+userId);
String orderId = bonus.getOrderId();
if (orderId == null)
return new Result(ResultCodeEnum.VALIDATE_ERROR.getCode(), "Order is missing !!!");
logger.info("佣金:orderId为空");
Optional<TbCfOrder> orderOptional = orderRepository.findById(orderId);
if (!orderOptional.isPresent())
return new Result(ResultCodeEnum.VALIDATE_ERROR.getCode(), "Order is missing !!!");
logger.info("佣金:订单不存在");
TbCfOrder order = orderOptional.get();
if (!OrderStatusEnum.PAID.getValue().equals(order.getPayStatus())) {
return new Result(ResultCodeEnum.VALIDATE_ERROR.getCode(), "Invalid order status");
logger.info("佣金:订单未支付");
}
if (bonusRepository.existsByOrderId(orderId)) {
return new Result(ResultCodeEnum.VALIDATE_ERROR.getCode(), "Transaction already done !!!");
}
boolean condition = orderId != null && orderOptional.isPresent() && OrderStatusEnum.PAID.getValue().equals(order.getPayStatus()) && !StringUtils.isBlank(userId);
// if (bonusRepository.existsByOrderId(orderId)) {
// return new Result(ResultCodeEnum.VALIDATE_ERROR.getCode(), "Transaction already done !!!");
// }
BigDecimal amount = bonus.getAmount();
if (!StringUtils.isBlank(userId)) {
if (condition) {
Optional<TbCfUserInfo> optionalUser = userRepository.findById(userId);
......@@ -334,9 +333,9 @@ public class PaypalContoller extends Controller {
if (productSharer != null) {
sharer = userRepository.findByCode(productSharer);
}
if (user.invited()) {
synchronized (this) {
boolean exists = bonusRepository.existsByOrderId(orderId);
if (!exists && user.invited()) {
BigDecimal v = amount.multiply(BigDecimal.valueOf(10)).divide(BigDecimal.valueOf(100), RoundingMode.CEILING);
bonus.setAmount(v);
bonus.setUserInfo(user);
......@@ -346,17 +345,17 @@ public class PaypalContoller extends Controller {
sendNotification(user.getFcm(), "Bonus alert !!", user.display() + ", You received bonus of $" + formatter.format(v) + " in your account");
}
}
}
TbCfUserInfo bonusInc = runBonusInc(user, amount, 5, false, orderId);
runBonusInc(sharer.orElseGet(() -> postOptional.isPresent() ? postOptional.get().getRealUser() : bonusInc), amount, 5, postOptional.isPresent() || sharer.isPresent(), orderId);
//runBonusInc(bonusInc, amount, 0);
}
}
return new Result<>(bonus);
}
}
private TbCfUserInfo runBonusInc(TbCfUserInfo user, BigDecimal amount, int percent, boolean direct, String orderId) {
if (user == null) return null;
Optional<Network> userCode = networkRepository.findByNetworkInfoCode(user.getCode());
......
package com.example.afrishop_v3.models;
import lombok.Data;
import lombok.ToString;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Transient;
......@@ -17,6 +20,8 @@ import java.util.List;
*/
@Entity
@Data
@ToString
public class Activity implements Serializable {
private static final long serialVersionUID = 1L;
......@@ -30,7 +35,11 @@ public class Activity implements Serializable {
*/
private String name;
/**
* 活动类型 1:满减 2:满折 3:满几件打折
* 活动内容
*/
private String content;
/**
* 活动类型 1:满减 2:满折 3:满件打折
*/
private Integer type;
/**
......@@ -46,19 +55,11 @@ public class Activity implements Serializable {
*/
private String picture;
/**
* 满减金额
*/
private BigDecimal fullAmount;
/**
* 抵扣金额
*/
private BigDecimal reducedAmount;
/**
* 折扣率
* 活动条件(json)
*/
private Double discountRate;
private String condition;
/**
* 商品IDS
* 特定商品链接
*/
private String itemIds;
/**
......@@ -77,233 +78,146 @@ public class Activity implements Serializable {
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
// @Transient
// private List<TbCfStationItem> itemList;
/**
* 设置:活动ID
* 距离活动截至时间
*/
@Transient
private String deadline;
@Transient
private Integer order;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
/**
* 获取:活动ID
*/
public String getId() {
return id;
public String getName() {
return name;
}
/**
* 设置:活动名称
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取:活动名称
*/
public String getName() {
return name;
public String getContent() {
return content;
}
/**
* 设置:活动类型 1:满减 2:满折 3:满几件打折
*/
public void setType(Integer type) {
this.type = type;
public void setContent(String content) {
this.content = content;
}
/**
* 获取:活动类型 1:满减 2:满折 3:满几件打折
*/
public Integer getType() {
return type;
}
/**
* 设置:使用类型 1:全场 2:分类商品 3:特定商品
*/
public void setUseType(Integer useType) {
this.useType = useType;
public void setType(Integer type) {
this.type = type;
}
/**
* 获取:使用类型 1:全场 2:分类商品 3:特定商品
*/
public Integer getUseType() {
return useType;
}
/**
* 设置:商品分类ID
*/
public void setCategoryId(String categoryId) {
this.categoryId = categoryId;
public void setUseType(Integer useType) {
this.useType = useType;
}
/**
* 获取:商品分类ID
*/
public String getCategoryId() {
return categoryId;
}
/**
* 设置:活动图片
*/
public void setPicture(String picture) {
this.picture = picture;
public void setCategoryId(String categoryId) {
this.categoryId = categoryId;
}
/**
* 获取:活动图片
*/
public String getPicture() {
return picture;
}
/**
* 设置:满减金额
*/
public void setFullAmount(BigDecimal fullAmount) {
this.fullAmount = fullAmount;
}
/**
* 获取:满减金额
*/
public BigDecimal getFullAmount() {
return fullAmount;
}
/**
* 设置:抵扣金额
*/
public void setReducedAmount(BigDecimal reducedAmount) {
this.reducedAmount = reducedAmount;
public void setPicture(String picture) {
this.picture = picture;
}
/**
* 获取:抵扣金额
*/
public BigDecimal getReducedAmount() {
return reducedAmount;
public String getCondition() {
return condition;
}
/**
* 设置:折扣率
*/
public void setdiscountRate(Double discountRate) {
this.discountRate = discountRate;
public void setCondition(String condition) {
this.condition = condition;
}
/**
* 获取:折扣率
*/
public Double getdiscountRate() {
return discountRate;
public String getItemIds() {
return itemIds;
}
/**
* 设置:商品IDS
*/
public void setItemIds(String itemIds) {
this.itemIds = itemIds;
}
/**
* 获取:商品IDS
*/
public String getItemIds() {
return itemIds;
public Integer getStatus() {
return status;
}
/**
* 设置:活动状态 0:关闭 1:开启
*/
public void setStatus(Integer status) {
this.status = status;
}
/**
* 获取:活动状态 0:关闭 1:开启
*/
public Integer getStatus() {
return status;
public Date getStartTime() {
return startTime;
}
/**
* 设置:活动开始时间
*/
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
/**
* 获取:活动开始时间
*/
public Date getStartTime() {
return startTime;
public Date getEndTime() {
return endTime;
}
/**
* 设置:活动结束时间
*/
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
/**
* 获取:活动结束时间
*/
public Date getEndTime() {
return endTime;
public Date getCreateTime() {
return createTime;
}
/**
* 设置:创建时间
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* 获取:创建时间
*/
public Date getCreateTime() {
return createTime;
public Date getUpdateTime() {
return updateTime;
}
/**
* 设置:更新时间
*/
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
/**
* 获取:更新时间
*/
public Date getUpdateTime() {
return updateTime;
public String getDeadline() {
return deadline;
}
public Double getDiscountRate() {
return discountRate;
public void setDeadline(String deadline) {
this.deadline = deadline;
}
public void setDiscountRate(Double discountRate) {
this.discountRate = discountRate;
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
}
package com.example.afrishop_v3.models;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* @Auther: wudepeng
* @Date: 2020/12/11
* @Description:活动模板
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ActivityVo {
private Activity activity;
private String activityId;
private Integer itemNum;
private BigDecimal itemPrice;
public String getActivityId() {
return activity == null ? null : activity.getId();
}
}
package com.example.afrishop_v3.models;
import com.alibaba.fastjson.JSONObject;
import com.example.afrishop_v3.base.Result;
import com.example.afrishop_v3.base.StateConstant;
import com.example.afrishop_v3.enums.OrderStatusEnum;
import com.example.afrishop_v3.enums.ResultCodeEnum;
import com.example.afrishop_v3.repository.ActivityRepository;
import com.example.afrishop_v3.repository.TbCfStationItemRepository;
import com.example.afrishop_v3.util.IdUtil;
import com.example.afrishop_v3.vo.Condition;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import net.sf.json.JSONArray;
import org.hibernate.annotations.Where;
import org.springframework.data.relational.core.sql.In;
import org.springframework.web.bind.annotation.PathVariable;
import javax.persistence.*;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
......@@ -157,7 +167,14 @@ public class TbCfOrder {
private String remarkInfo;
@Transient
private Map<String,Object> couponMap;
private BigDecimal reduceAmount;
@Transient
private Map<String, Object> couponMap;
@Transient
private boolean open = false;
public Map<String, Object> getCouponMap() {
return couponMap;
......@@ -178,6 +195,8 @@ public class TbCfOrder {
@Transient
private Integer commentCount;
@Transient
private BigDecimal rate;
@Transient
private String expiration;
......@@ -194,7 +213,7 @@ public class TbCfOrder {
this.commentCount = commentCount;
}
@OneToMany(mappedBy = "orderId", cascade = CascadeType.ALL,fetch = FetchType.EAGER)
@OneToMany(mappedBy = "orderId", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<TbCfItemOrderR> itemOrderList = new ArrayList<>();
......@@ -236,9 +255,9 @@ public class TbCfOrder {
return itemOrderList;
}
public void getItemOrderListFromCartList(List<TbCfCartRecordR> cartList, TbCfStationItemRepository itemRepository) {
public void getItemOrderListFromCartList(List<TbCfCartRecordR> cartList, TbCfStationItemRepository itemRepository, ActivityRepository activityRepository) throws ParseException {
itemOrderList = cartList.stream().map(f -> f.getOrderItem(orderId)).collect(Collectors.toList());
doSomeCalculations(itemRepository);
doSomeCalculations(itemRepository, activityRepository);
setOrderTime(new Date());
setDealTime(new Date());
setOrderNo(String.valueOf(IdUtil.createLongIdByDate()));
......@@ -249,26 +268,39 @@ public class TbCfOrder {
this.defaultTemplate = defaultTemplate;
}
private void doSomeCalculations(TbCfStationItemRepository itemRepository) {
private void doSomeCalculations(TbCfStationItemRepository itemRepository, ActivityRepository activityRepository) throws ParseException {
itemsPrice = itemsPrice == null ? new BigDecimal(0.0) : itemsPrice;
expressCost = expressCost == null ? new BigDecimal(0.0) : expressCost;
fee = fee == null ? new BigDecimal(0.0) : fee;
tax = tax == null ? new BigDecimal(0.0) : tax;
reduceAmount = reduceAmount == null ? new BigDecimal(0.0) : reduceAmount;
List<TemplateVo> templateList = new ArrayList<>();
// List<ActivityVo> activityList = new ArrayList<>();
itemOrderList.forEach(item -> {
BigDecimal itemPrice = item.getItemPriceTotal();
TbCfExpressTemplate template = item.getTemplate();
if( template != null){
System.out.println(template.getHandlingFee());
System.out.println(template.getTariff());
}
// if (template != null) {
// System.out.println(template.getHandlingFee());
// System.out.println(template.getTariff());
// }
Optional<TbCfStationItem> optionalTbCfStationItem = itemRepository.findById(item.getItemId());
if( optionalTbCfStationItem.isPresent() ){
boolean categoriesAct = activityRepository.existsByUseType(2);
boolean specialAct = activityRepository.existsByUseType(3);
// Activity activity = new Activity();
// if (categoriesAct || specialAct) {
// try {
// activity = getItemActivity(activityRepository, itemRepository, item.getItemId());
// } catch (ParseException e) {
// e.printStackTrace();
// }
//
// activityList.add(new ActivityVo(activity, activity.getId(), item.getItemNum(), itemPrice));
// }
if (optionalTbCfStationItem.isPresent()) {
TbCfStationItem stationItem = optionalTbCfStationItem.get();
if( stationItem.getExpress() != null ){
if (stationItem.getExpress() != null) {
template = stationItem.getExpress();
}
}
......@@ -281,7 +313,10 @@ public class TbCfOrder {
templateList.add(new TemplateVo(template, template.getTemplateId(), item.getItemNum(), itemPrice));
});
Map<String, List<TemplateVo>> map = templateList.stream().collect(Collectors.groupingBy(TemplateVo::getTemplateId));
// Map<String, List<ActivityVo>> actMap = activityList.stream().collect(Collectors.groupingBy(ActivityVo::getActivityId));
//按模板分组计算商品价格
Integer itemSum = 0;
List<TemplateVo> list = new ArrayList<>();
for (String key : map.keySet()) {
TemplateVo templateVo = new TemplateVo();
......@@ -291,6 +326,7 @@ public class TbCfOrder {
for (TemplateVo template : map.get(key)) {
totalPrice = totalPrice.add(template.getItemPrice());
count += template.getItemCount();
itemSum += template.getItemCount();
_template = template.getTemplate();
}
templateVo.setTemplateId(key);
......@@ -319,13 +355,101 @@ public class TbCfOrder {
expressCost = expressCost.add(express.getExpressFee().add(express.getContinuationFee().multiply(new BigDecimal(extralNum))));
}
}
System.out.println("活动是否开启:" + this.open);
/**
* 活动模块:活动类型 1:满减 2:满折 3:满件打折(type)
* 使用类型 1:全场 2:分类商品 3:特定商品(use_type)
*/
boolean fullAct = activityRepository.existsByUseType(1);
if (this.open && fullAct) {
Activity activity = activityRepository.findAllByUseType(1).get(0);
String type = String.valueOf(activity.getType());
if ("1".equals(type)) {
reduceAmount = caculateActFee(false, false, activity, itemsPrice, null);
System.out.println("减免金额:" + reduceAmount);
} else if ("2".equals(type)) {
rate = caculateActFee(false, true, activity, itemsPrice, null);
System.out.println("折扣比例:" + rate);
itemsPrice = rate.multiply(itemsPrice);
} else if ("3".equals(type)) {
rate = caculateActFee(true, true, activity, itemsPrice, itemSum);
System.out.println("购买件数:" + itemSum);
System.out.println("折扣比例:" + rate);
itemsPrice = rate.multiply(itemsPrice);
}
} /*else {
//按活动类型计算优惠价格
Integer sum = 0;
List<ActivityVo> actlist = new ArrayList<>();
for (String key : actMap.keySet()) {
Activity activity = null;
ActivityVo activityVo = new ActivityVo();
Integer count = 0;
BigDecimal totalPrice = BigDecimal.ZERO;
for (ActivityVo act : actMap.get(key)) {
totalPrice = totalPrice.add(act.getItemPrice());
count += act.getItemNum();
sum += act.getItemNum();
activity = act.getActivity();
}
activityVo.setActivity(activity);
activityVo.setActivityId(key);
activityVo.setItemNum(count);
activityVo.setItemPrice(totalPrice);
actlist.add(activityVo);
}
actlist.forEach(act -> {
while (act.getActivityId() == null) {
continue;
}
if ("1".equals(act.getActivity().getUseType())) {
reduceAmount = caculateActFee(false, false, act.getActivity(), act.getItemPrice(), null);
System.out.println("减免金额:" + reduceAmount);
} else if ("2".equals(act.getActivity().getUseType())) {
rate = caculateActFee(false, true, act.getActivity(), act.getItemPrice(), null);
System.out.println("折扣比例:" + rate);
itemsPrice = rate.multiply(itemsPrice);
} else if ("3".equals(act.getActivity().getUseType())) {
rate = caculateActFee(true, true, act.getActivity(), act.getItemPrice(), act.getItemNum());
System.out.println("购买件数:" + act.getItemNum());
System.out.println("折扣比例:" + rate);
itemsPrice = rate.multiply(itemsPrice);
}
});
}*/
totalPrice = itemsPrice.add(fee).add(tax).add(expressCost);
totalPrice = itemsPrice.add(fee).add(tax).add(expressCost).subtract(reduceAmount);
countRealityPay();
}
public BigDecimal caculateActFee(Boolean isCount, Boolean discount, Activity activity, BigDecimal itemsPrice, Integer itemCount) {
List<Condition> conList = JSONObject.parseArray(activity.getCondition(), Condition.class);
Collections.sort(conList, Comparator.comparing(Condition::getKey));
System.out.println(conList);
BigDecimal result = new BigDecimal("0.0");
for (int i = 0; i < conList.size(); i++) {
if (isCount) {
if (itemCount >= conList.get(i).getKey()) {
result = new BigDecimal(conList.get(i).getValue());
}
} else {
if (itemsPrice.compareTo(new BigDecimal(conList.get(i).getKey())) >= 0) {
result = new BigDecimal(conList.get(i).getValue());
}
}
}
if (discount) {
result = new BigDecimal(1).subtract(result.divide(new BigDecimal(100)));
}
return result;
}
@Transient
private TbCfCoupon coupon;
......@@ -825,4 +949,63 @@ public class TbCfOrder {
public String getRemarkInfo() {
return remarkInfo;
}
public Activity getItemActivity(ActivityRepository activityRepository, TbCfStationItemRepository itemRepository, String itemId) throws ParseException {
Activity activity = null;
//
//全场活动
if (activityRepository.existsByUseType(1)) {
List<Activity> fullList = activityRepository.findAllByUseType(1);
activity = fullList.get(0);
}
//商品分类活动
if (activityRepository.existsByUseType(2)) {
Optional<TbCfStationItem> byId = itemRepository.findById(itemId);
if (byId.isPresent()) {
TbCfStationItem item = byId.get();
String category1 = item.getItemCategory();
String category2 = item.getItemCategorytwo();
String category3 = item.getItemDescritionId();
String con2 = category1 + "," + category2;
String con3 = category1 + "," + category2 + "," + category3;
List<Activity> activityList = activityRepository.findAllByUseType(2);
List<Activity> actList = new ArrayList<>();
for (Activity act2 : activityList) {
if (category1.equals(act2.getCategoryId())) {
act2.setOrder(3);
actList.add(act2);
}
if (con2.equals(act2.getCategoryId())) {
act2.setOrder(2);
actList.add(act2);
}
if (con3.equals(act2.getCategoryId())) {
act2.setOrder(1);
actList.add(act2);
}
}
Collections.sort(actList, Comparator.comparing(Activity::getOrder));
if (actList.size() > 0 && actList != null)
activity = actList.get(0);
}
}
//特定商品
if (activityRepository.existsByUseType(3)) {
List<Activity> list = activityRepository.findAllByUseType(3);
for (Activity act3 : list) {
String[] itemIdArr = act3.getItemIds().split(",");
List<String> idList = Arrays.asList(itemIdArr);
if (idList.contains(itemId))
activity = act3;
break;
}
}
return activity;
}
}
......@@ -5,16 +5,29 @@ import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.relational.core.sql.In;
import javax.annotation.Nullable;
import java.util.List;
import java.util.Optional;
/**
* @Auther: wudepeng
* @Date: 2020/12/02
* @Description:
*/
public interface ActivityRepository extends JpaRepository<Activity,String> {
public interface ActivityRepository extends JpaRepository<Activity, String> {
@Query(value = "select a from Activity a where CURRENT_TIMESTAMP between startTime and endTime and status=1 order by a.createTime desc")
Page<Activity> getAllActivity(Pageable pageable);
boolean existsByUseType(Integer useType);
// @Query(value = "select * from Activity a where CURRENT_TIMESTAMP between a.start_time and a.end_time and a.status=1 and use_type=:useType order by a.create_time desc limit 1", nativeQuery = true)
// Optional<Activity> findFirstByUseType(Integer useType);
@Query(value = "select * from Activity a where CURRENT_TIMESTAMP between a.start_time and a.end_time and a.status=1 and a.use_type=:useType order by a.create_time desc ", nativeQuery = true)
List<Activity> findAllByUseType(Integer useType);
@Query(value = "select a from Activity a where CURRENT_TIMESTAMP between startTime and endTime and status=1")
List<Activity> getAllActivity();
}
package com.example.afrishop_v3.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.math.BigDecimal;
/**
* @Auther: wudepeng
* @Date: 2020/12/09
* @Description:活动条件
*/
@Data
@AllArgsConstructor
public class Condition {
private double key;
private double value;
}
server:
servlet:
context-path: /afrishop
port: 8099
#server:
# servlet:
# context-path: /afrishop
# port: 8099
spring:
datasource:
url: jdbc:mysql://159.138.48.71:3306/chinafrica_ref_test?useUnicode=true&connectionCollation=utf8mb4_general_ci&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
url: jdbc:mysql://159.138.48.71:3306/chinafrica?useUnicode=true&connectionCollation=utf8mb4_general_ci&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
username: root
driver-class-name: com.mysql.cj.jdbc.Driver
password: Diaoyunnuli.8
......@@ -57,9 +57,9 @@ dpo:
#服务类型
service_type: 35711
#回调地址
notify_url: https://app.afrieshop.com/afrishop/dpo/notify
notify_url: https://app.afrieshop.com/zion/dpo/notify
#取消地址
back_url: https://app.afrieshop.com/afrishop/dpo/cancel
back_url: https://app.afrieshop.com/zion/dpo/cancel
#支付成功页面
success_url: https://www.afrieshop.com/payment_successful
#支付失败页面
......
server.servlet.context-path=/zion
spring.jpa.hibernate.ddl-auto=update
server.port=8083
spring.profiles.active=test
spring.profiles.active=dev
#spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/afrishop_test?useUnicode=true&connectionCollation=utf8mb4_general_ci&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
#spring.datasource.username=root
#spring.datasource.password=Diaoyunnuli.8
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论