Commit 19ad3519 authored by shiyu's avatar shiyu

Merge branch 'quanku_v3.7' into qiandao_v1.0.1

parents 8e28687e 242316fd
......@@ -87,6 +87,7 @@ public class WxPayServiceApi {
String prepayStr = response.getPackageVal();
if (StringUtils.hasLength(prepayStr)) {
String prepayId = prepayStr.split("=")[1];
logger.info("订单号: {}, 预支付prepayId = {}", dto.getDistributionOrderId(), prepayId);
return Result.success(prepayId);
}
} catch (HttpException e) { // 发送HTTP请求失败
......
......@@ -245,8 +245,9 @@ public class WxPayCallbackController {
if (!updateResult.getSuccess()) {
return JsonUtils.from(returnMap);
}
} else if (distributionOrder.getType() == DistributionEnum.DistributionTypeEnum.DISCOUNT.getCode()) {
//折扣订单
} else if (distributionOrder.getType() == DistributionEnum.DistributionTypeEnum.DISCOUNT.getCode()
|| distributionOrder.getType() == DistributionEnum.DistributionTypeEnum.GIFT.getCode()) {
//折扣订单,签到赠品订单
Result updateResult = handleOrderOfDiscount(transaction);
if (!updateResult.getSuccess()) {
return JsonUtils.from(returnMap);
......
......@@ -287,5 +287,8 @@ public class DistributionOrderDetailVo implements Entity {
*/
private UserExchangeInfo userExchangeInfo;
/**
* 运费
*/
private String logisticsAmount;
}
......@@ -214,5 +214,10 @@ public class DistributionOrderVo implements Entity {
* 团购相关信息
*/
private GroupPurchaseInfo groupPurchaseInfo;
/**
* 运费
*/
private String logisticsAmount;
}
package com.wwdz.ch.wx.impl;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.wwdz.ch.core.consts.CommConsts;
import com.wwdz.ch.core.consts.DisposableSubscribeRecordEnum;
import com.wwdz.ch.core.consts.DistributionEnum;
import com.wwdz.ch.core.consts.SigninEnum;
import com.wwdz.ch.core.api.wxpay.WxPayServiceApi;
import com.wwdz.ch.core.consts.*;
import com.wwdz.ch.core.entity.SignDateRecord;
import com.wwdz.ch.core.entity.SupplierItemVo;
import com.wwdz.ch.core.type.Result;
......@@ -20,7 +18,9 @@ import com.wwdz.ch.db.domain.UserSignIn;
import com.wwdz.ch.db.domain.distribution.DistributionOrder;
import com.wwdz.ch.db.domain.distribution.SupplierItem;
import com.wwdz.ch.db.dto.request.UserSignInRequestDto;
import com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto;
import com.wwdz.ch.db.dto.request.distribution.SupplierItemRequestDto;
import com.wwdz.ch.db.dto.request.openShop.EarnestRecordRequestDto;
import com.wwdz.ch.wx.entity.vo.SignInRewardVo;
import com.wwdz.ch.wx.service.UserSigninService;
import com.xxdxxs.utils.DateUtils;
......@@ -68,6 +68,9 @@ public class UserSigninServiceImpl implements UserSigninService {
@Autowired
DisposableSubscribeRecordDao disposableSubscribeRecordDao;
@Autowired
WxPayServiceApi wxPayServiceApi;
@Override
public Result signIn(UserSignInRequestDto dto) {
try {
......@@ -204,19 +207,31 @@ public class UserSigninServiceImpl implements UserSigninService {
beforeUpdateDto.setSignInDate(newDateString);
userSignInDao.updateInvalid(beforeUpdateDto);
}
String distributionOrderId = IdUtils.getOrderNumber(CommConsts.DISTRIBUTION_ORDER_PREFIX);
//赠品订单收取运费10元
long orderAmount = 1000L;
DistributionOrderRequestDto prePayDto = new DistributionOrderRequestDto();
prePayDto.setDistributionOrderId(distributionOrderId);
prePayDto.setAmount(String.valueOf(orderAmount));
prePayDto.setBuyerOpenid(dto.getUserOpenId());
prePayDto.setItemName("签到礼品运费");
Result prePayResult = wxPayServiceApi.createPrepareOrder(prePayDto);
if (!prePayResult.getSuccess()) {
return Result.failed("签到礼品支付运费预下单失败");
}
String prepayId = (String) prePayResult.getData();
//创建赠品订单
DistributionOrder distributionOrder = new DistributionOrder();
String distributionOrderId = IdUtils.getOrderNumber(CommConsts.DISTRIBUTION_ORDER_PREFIX);
distributionOrder.setItemId(dto.getItemId());
distributionOrder.setItemNum(1);
distributionOrder.setDistributionOrderId(distributionOrderId);
distributionOrder.setBuyerId(dto.getUserId());
distributionOrder.setBuyerOpenid(dto.getUserOpenId());
distributionOrder.setPrepayId(prepayId);
distributionOrder.setShopId(CommConsts.SYSTEM_ACCOUNT.longValue());
distributionOrder.setSellerId(CommConsts.SYSTEM_ACCOUNT.longValue());
distributionOrder.setAmount(0L);
distributionOrder.setAmount(orderAmount);
distributionOrder.setReceiverAddress(dto.getReceiverAddress());
distributionOrder.setReceiverName(dto.getReceiverName());
distributionOrder.setReceiverPhone(dto.getReceiverPhone());
......@@ -224,9 +239,12 @@ public class UserSigninServiceImpl implements UserSigninService {
distributionOrder.setUpdateTime(new Date());
distributionOrder.setType(DistributionEnum.DistributionTypeEnum.GIFT.getCode());
distributionOrder.setRemark(null);
distributionOrder.setState(DistributionEnum.DistributionOrderStateEnum.PRE_SEND.getCode());
distributionOrder.setState(DistributionEnum.DistributionOrderStateEnum.PRE_PAY.getCode());
distributionOrderDao.insert(distributionOrder);
return Result.success();
Map<String, String> map = new HashMap<>();
map.put("distributionOrderId", distributionOrderId);
map.put("prepayId", prepayId);
return Result.success(map);
} catch (Exception e) {
logger.error("领取奖励失败 error : {}", e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
......
......@@ -1099,7 +1099,12 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
distributionOrderVo.setItemName(supplierItem.getName());
long itemPrice = distributionOrder.getAmount() / distributionOrder.getItemNum();
distributionOrderVo.setAmount(PriceUtil.convertPriceFenToYuan(distributionOrder.getAmount()));
distributionOrderVo.setItemPrice(PriceUtil.convertPriceFenToYuan(itemPrice));
if (distributionOrder.getType() == DistributionEnum.DistributionTypeEnum.GIFT.getCode()) {
distributionOrderVo.setItemPrice("0");
distributionOrderVo.setLogisticsAmount("10");
} else {
distributionOrderVo.setItemPrice(PriceUtil.convertPriceFenToYuan(itemPrice));
}
distributionOrderVo.setStateName(DistributionEnum.DistributionOrderStateEnum.getNameByCode(distributionOrder.getState()));
distributionOrderVo.setTypeName(DistributionEnum.DistributionTypeEnum.getNameByCode(distributionOrder.getType()));
distributionOrderVo.setHomePageImage(MediaUtil.getHomePageImage(supplierItem.getImages(), supplierItem.getVideos()));
......@@ -1113,7 +1118,8 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
distributionOrderVo.setGroupPurchaseInfo(result.getData());
}
Date date = distributionOrder.getCreateTime();
if (distributionOrder.getType() == DistributionEnum.DistributionTypeEnum.FIXED_PRICE.getCode() || distributionOrder.getType() == DistributionEnum.DistributionTypeEnum.GROUP_PURCHASE.getCode()) {
if (distributionOrder.getType() == DistributionEnum.DistributionTypeEnum.FIXED_PRICE.getCode() || distributionOrder.getType() == DistributionEnum.DistributionTypeEnum.GROUP_PURCHASE.getCode()
|| distributionOrder.getType() == DistributionEnum.DistributionTypeEnum.GIFT.getCode()) {
Instant instant = date.toInstant().plus(Duration.ofMinutes(30));
Date time = Date.from(instant);
distributionOrderVo.setPayEndTime(time);
......@@ -1147,7 +1153,12 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
distributionOrderDetailVo.setItemName(supplierItem.getName());
long itemPrice = distributionOrder.getAmount() / distributionOrder.getItemNum();
distributionOrderDetailVo.setAmount(PriceUtil.convertPriceFenToYuan(distributionOrder.getAmount()));
distributionOrderDetailVo.setItemPrice(PriceUtil.convertPriceFenToYuan(itemPrice));
if (distributionOrder.getType() == DistributionEnum.DistributionTypeEnum.GIFT.getCode()) {
distributionOrderDetailVo.setItemPrice("0");
distributionOrderDetailVo.setLogisticsAmount("10");
} else {
distributionOrderDetailVo.setItemPrice(PriceUtil.convertPriceFenToYuan(itemPrice));
}
distributionOrderDetailVo.setStateName(DistributionEnum.DistributionOrderStateEnum.getNameByCode(distributionOrder.getState()));
distributionOrderDetailVo.setHomePageImage(MediaUtil.getHomePageImage(supplierItem.getImages(), supplierItem.getVideos()));
distributionOrderDetailVo.setTypeName(DistributionEnum.DistributionTypeEnum.getNameByCode(distributionOrder.getType()));
......@@ -1205,7 +1216,8 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
//一口价支付截止时间为下单半小时后,竞拍为24小时
Date date = distributionOrder.getCreateTime();
if (type == DistributionEnum.DistributionTypeEnum.FIXED_PRICE.getCode() || type == DistributionEnum.DistributionTypeEnum.GROUP_PURCHASE.getCode()) {
if (type == DistributionEnum.DistributionTypeEnum.FIXED_PRICE.getCode() || type == DistributionEnum.DistributionTypeEnum.GROUP_PURCHASE.getCode()
|| type == DistributionEnum.DistributionTypeEnum.GIFT.getCode()) {
Instant instant = date.toInstant().plus(Duration.ofMinutes(30));
Date time = Date.from(instant);
distributionOrderDetailVo.setPayEndTime(time);
......@@ -1392,7 +1404,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
DistributionOrder distributionOrder = distributionOrderDao.findById(distributionOrderId);
if (distributionOrder.getState() == DistributionEnum.DistributionOrderStateEnum.PRE_PAY.getCode()) {
long diffInMillies = Math.abs(new Date().getTime() - distributionOrder.getCreateTime().getTime());
if (type == DistributionEnum.DistributionTypeEnum.FIXED_PRICE.getCode()) {
if (type == DistributionEnum.DistributionTypeEnum.FIXED_PRICE.getCode() || type == DistributionEnum.DistributionTypeEnum.GIFT.getCode()) {
long diffInMinutes = diffInMillies / (60 * 1000);
if (diffInMinutes >= 30) {
//待支付超出半小时,订单取消
......@@ -1438,7 +1450,8 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
prePayList.forEach(distributionOrder -> {
long diffInMillies = Math.abs(new Date().getTime() - distributionOrder.getCreateTime().getTime());
int type = distributionOrder.getType();
if (type == DistributionEnum.DistributionTypeEnum.FIXED_PRICE.getCode() || type == DistributionEnum.DistributionTypeEnum.COLLECT.getCode()) {
if (type == DistributionEnum.DistributionTypeEnum.FIXED_PRICE.getCode() || type == DistributionEnum.DistributionTypeEnum.COLLECT.getCode()
|| type == DistributionEnum.DistributionTypeEnum.GIFT.getCode()) {
long diffInMinutes = diffInMillies / (60 * 1000);
if (diffInMinutes >= 30) {
//待支付超出半小时,订单取消
......
......@@ -89,12 +89,12 @@ public class WxPayServiceTest {
@Test
public void refund() {
List<String> list = Arrays.asList("DA2411291619274673652");
List<String> list = Arrays.asList("DA2412231150567567502", "DA2412231152083026099");
list.forEach(orderId ->{
DistributionOrderRequestDto dto = new DistributionOrderRequestDto();
dto.setDistributionOrderId(orderId);
dto.setAmount("94.8");
dto.setRefundPrice("94.8");
dto.setAmount("10");
dto.setRefundPrice("10");
Result result = wxPayServiceApi.refund(dto);
logger.info("申请微信支付退款:{}", result);
});
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment