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