Commit f3da4b6c authored by shiyu's avatar shiyu

问题修复2

parent db5a65e2
......@@ -41,6 +41,11 @@ public class AuctionOfferNoticeMsg implements Entity {
*/
private Date auctionEndTime;
/**
* 支付截止时间
*/
private Date payEndTime;
/**
* 拍卖当前价
*/
......
......@@ -234,6 +234,7 @@ public class AuctionRecordServiceImpl implements AuctionRecordService {
auctionRecordVo.setState(DistributionEnum.AuctionStateEnum.END.getCode());
auctionRecordVo.setStateName(DistributionEnum.AuctionStateEnum.END.getDes());
//如果是该用户竞拍成功,还没生成订单则用户状态为立即支付
if (lastedRecord != null) {
if (lastedRecord.getUserId().longValue() == dto.getUserId().longValue()) {
//竞拍结束后未生成订单
if (distributionOrder == null || distributionOrder.getPayTime() == null) {
......@@ -245,6 +246,10 @@ public class AuctionRecordServiceImpl implements AuctionRecordService {
auctionRecordVo.setUserStateName(DistributionEnum.AuctionUserStateEnum.END.getDes());
}
}
} else {
auctionRecordVo.setUserState(DistributionEnum.AuctionUserStateEnum.END.getCode());
auctionRecordVo.setUserStateName(DistributionEnum.AuctionUserStateEnum.END.getDes());
}
} else {
auctionRecordVo.setState(DistributionEnum.AuctionStateEnum.IN_AUCTION.getCode());
auctionRecordVo.setStateName(DistributionEnum.AuctionStateEnum.IN_AUCTION.getDes());
......@@ -314,6 +319,16 @@ public class AuctionRecordServiceImpl implements AuctionRecordService {
if (distributionOrder == null || distributionOrder.getPayTime() == null) {
auctionRecordVo.setUserState(DistributionEnum.AuctionUserStateEnum.PRE_PAY.getCode());
auctionRecordVo.setUserStateName(DistributionEnum.AuctionUserStateEnum.PRE_PAY.getDes());
//检查是否超时未支付
if (distributionOrder != null) {
Date createOrderTime = distributionOrder.getCreateTime();
Instant createInstant = createOrderTime.toInstant().plus(Duration.ofHours(24));
Date time = Date.from(createInstant);
if (now.after(time)) {
auctionRecordVo.setUserState(DistributionEnum.AuctionUserStateEnum.END.getCode());
auctionRecordVo.setUserStateName(DistributionEnum.AuctionUserStateEnum.END.getDes());
}
}
} else {
//竞拍结束页生成了订单并支付过了就显示竞拍结束
auctionRecordVo.setUserState(DistributionEnum.AuctionUserStateEnum.END.getCode());
......
......@@ -15,6 +15,7 @@ import com.wwdz.ch.db.dao.distribution.*;
import com.wwdz.ch.db.domain.distribution.*;
import com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto;
import com.wwdz.ch.db.dto.request.distribution.SupplierItemRequestDto;
import com.wwdz.ch.wx.entity.AuctionOfferNoticeMsg;
import com.wwdz.ch.wx.entity.DeliveryNoticeMsg;
import com.wwdz.ch.wx.entity.SignedNoticeMsg;
import com.wwdz.ch.wx.entity.vo.distribution.DistributionOrderDetailVo;
......@@ -200,7 +201,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
if (auctionRecord.getUserId().longValue() != dto.getBuyerId().longValue()) {
return Result.failed("下单信息错误");
}
Date now = new Date();
AuctionConfig auctionConfig = auctionConfigDao.findByItemId(dto.getItemId());
//查询用户第一次出价对应的分销商
AuctionRecord firstAuctionRecord = auctionRecordDao.findFirstRecord(dto.getItemId(), auctionRecord.getUserId());
......@@ -217,8 +218,8 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
distributionOrder.setShopId(distributorShareRecord.getShopId());
distributionOrder.setSellerId(firstAuctionRecord.getDistributorId());
distributionOrder.setAmount(auctionRecord.getPrice());
distributionOrder.setCreateTime(new Date());
distributionOrder.setUpdateTime(new Date());
distributionOrder.setCreateTime(auctionConfig.getRealEndTime());
distributionOrder.setUpdateTime(now);
distributionOrder.setState(DistributionEnum.DistributionOrderStateEnum.PRE_PAY.getCode());
distributionOrder.setType(DistributionEnum.DistributionTypeEnum.AUCTION.getCode());
distributionOrderDao.insert(distributionOrder);
......@@ -261,9 +262,24 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
//把该拍卖配置信息改为已处理
auctionConfigDao.setDeal(dto.getItemId());
//发送中拍信息给用户
/**
*
*/
String userOpenId = sendMsgService.getOpenIdByUserId(auctionRecord.getUserId());
if (com.xxdxxs.utils.StringUtils.hasLength(userOpenId)) {
SupplierItem supplierItem = supplierItemDao.findById(distributionOrder.getItemId());
AuctionOfferNoticeMsg auctionOfferNoticeMsg = new AuctionOfferNoticeMsg();
auctionOfferNoticeMsg.setCurrentPrice(PriceUtil.convertPriceFenToYuan(auctionRecord.getPrice()));
auctionOfferNoticeMsg.setOpenId(userOpenId);
auctionOfferNoticeMsg.setItemName(supplierItem.getName());
auctionOfferNoticeMsg.setDistributionOrderId(distributionOrderId);
Instant instant = now.toInstant();
// auctionOfferNoticeMsg.setPayEndTime();
// sendMsgService.auctionSuccessMsg(signedNoticeMsg);
} else {
logger.info(">>>>> 分销商id :{}, 获取openid失败,无法发送模板信息 <<<<<", distributionOrder.getSellerId());
}
return Result.success(map);
} else {
return Result.failed("稍后再试");
......
......@@ -175,7 +175,7 @@ public class SendMsgServiceImpl implements SendMsgService {
map.put("miniprogram", miniprogramMap);
Map<String, Object> paramMap = new LinkedHashMap<>();
paramMap.put("thing4", new HashMap(){{put("value", auctionOfferNoticeMsg.getItemName());}});
paramMap.put("thing4", new HashMap(){{put("value", auctionOfferNoticeMsg.getItemName().substring(0,20));}});
paramMap.put("amount5", new HashMap(){{put("value", auctionOfferNoticeMsg.getCurrentPrice());}});
map.put("data", paramMap);
logger.info("============ 拍卖出价被超越通知模板消息内容 : {}", JsonUtils.fromMap(map));
......@@ -195,7 +195,42 @@ public class SendMsgServiceImpl implements SendMsgService {
@Override
public Result auctionSuccessMsg(AuctionOfferNoticeMsg auctionOfferNoticeMsg) {
return null;
String openId = auctionOfferNoticeMsg.getOpenId();
String token = officialAccountApi.getAccessToken();
String url = SEND_MSG_URL + "?access_token=" + token;
OkHttpUtil okHttpUtil = OkHttpUtil.builder().url(url);
Map<String, Object> map = new HashMap<>();
map.put("touser", openId);
map.put("template_id", "Yy_58dviNzK1sDOilw6FnolJysIceRjm6qkhCN0RgcQ");
Map<String, Object> miniprogramMap = new HashMap<>();
miniprogramMap.put("appid", APPLET_APPID);
StringBuffer stringBuffer = new StringBuffer(AUCTION_MSG_URL);
stringBuffer.append("?itemId=" + auctionOfferNoticeMsg.getItemId());
if (StringUtils.hasLength(auctionOfferNoticeMsg.getShareRecordId())) {
stringBuffer.append("&shareRecordId=" + auctionOfferNoticeMsg.getShareRecordId());
}
miniprogramMap.put("pagepath", stringBuffer.toString());
map.put("miniprogram", miniprogramMap);
Map<String, Object> paramMap = new LinkedHashMap<>();
paramMap.put("thing4", new HashMap(){{put("value", auctionOfferNoticeMsg.getItemName().substring(0,20));}});
paramMap.put("amount6", new HashMap(){{put("value", auctionOfferNoticeMsg.getCurrentPrice());}});
paramMap.put("character_string5", new HashMap(){{put("value", auctionOfferNoticeMsg.getDistributionOrderId());}});
paramMap.put("time3", new HashMap(){{put("value", DateUtils.toString(auctionOfferNoticeMsg.getPayEndTime()));}});
map.put("data", paramMap);
logger.info("============ 竞拍成功通知模板消息内容 : {}", JsonUtils.fromMap(map));
okHttpUtil.addParams(map);
okHttpUtil.post(true);
String responseStr = okHttpUtil.async();
logger.info("openid : {}, 发送竞拍成功模板消息 response :{}", openId, responseStr);
String errorCode = JsonUtils.getValueByPath(responseStr, "errcode");
String errmsg = JsonUtils.getValueByPath(responseStr, "errmsg");
if (!"0".equals(errorCode)) {
logger.error("openid : {}, 发送竞拍成功模板消息, errorCode : {}, errmsg : {} ", openId, errorCode, errmsg);
return Result.failed();
}
logger.info("=============发送竞拍成功模板消息 成功 ===========");
return Result.success();
}
@Override
......
......@@ -29,6 +29,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import java.time.Duration;
import java.time.Instant;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
......@@ -408,6 +411,16 @@ public class SupplierItemServiceImpl implements SupplierItemService {
if (distributionOrder == null || distributionOrder.getPayTime() == null) {
auctionDetailVo.setUserState(DistributionEnum.AuctionUserStateEnum.PRE_PAY.getCode());
auctionDetailVo.setUserStateName(DistributionEnum.AuctionUserStateEnum.PRE_PAY.getDes());
//检查是否超时未支付
if (distributionOrder != null) {
Date createOrderTime = distributionOrder.getCreateTime();
Instant createInstant = createOrderTime.toInstant().plus(Duration.ofHours(24));
Date time = Date.from(createInstant);
if (now.after(time)) {
auctionDetailVo.setUserState(DistributionEnum.AuctionUserStateEnum.END.getCode());
auctionDetailVo.setUserStateName(DistributionEnum.AuctionUserStateEnum.END.getDes());
}
}
} else {
//竞拍结束页生成了订单并支付过了就显示竞拍结束
auctionDetailVo.setUserState(DistributionEnum.AuctionUserStateEnum.END.getCode());
......
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