Commit e699f9bb authored by shiyu's avatar shiyu

订单流转,新增已签收状态

parent ac94eea4
......@@ -2,6 +2,7 @@ package com.wwdz.ch.admin.job;
import com.github.pagehelper.PageInfo;
import com.wwdz.ch.core.api.LogisticsApi;
import com.wwdz.ch.core.consts.BillEnum;
import com.wwdz.ch.core.consts.DistributionEnum;
import com.wwdz.ch.core.consts.LogisticsStateEnum;
import com.wwdz.ch.core.entity.LogisticsInfo;
......@@ -9,6 +10,7 @@ import com.wwdz.ch.core.entity.LogisticsRequestDto;
import com.wwdz.ch.core.entity.TrailInfo;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.db.dao.distribution.DistributionOrderDao;
import com.wwdz.ch.db.dao.distribution.UserAccountDetailDao;
import com.wwdz.ch.db.domain.User;
import com.wwdz.ch.db.domain.distribution.DistributionOrder;
import com.wwdz.ch.db.domain.distribution.SpecialPerformance;
......@@ -47,6 +49,9 @@ public class RefreshLogisticsJob {
@Autowired
LogisticsApi logisticsApi;
@Autowired
UserAccountDetailDao userAccountDetailDao;
/**
* 隔4小时运行一次
*/
......@@ -95,6 +100,8 @@ public class RefreshLogisticsJob {
List<TrailInfo> trailInfoList = logisticsInfo.getTrailInfoList();
TrailInfo lastInfo = trailInfoList.get(0);
updateDto.setSignedTime(DateUtils.parseString(lastInfo.getCreateTime()));
//并修改订单状态为已签收
updateDto.setState(DistributionEnum.DistributionOrderStateEnum.SIGNED.getCode());
}
distributionOrderDao.update(updateDto);
}
......@@ -122,7 +129,8 @@ public class RefreshLogisticsJob {
Instant startInstant = now.toInstant().minus(Duration.ofDays(7));
Date endTime = Date.from(startInstant);
distributionOrderRequestDto.setEndSignedTime(endTime);
distributionOrderRequestDto.setState(DistributionEnum.DistributionOrderStateEnum.PRE_SIGNED.getCode());
//查询订单状态为已签收的订单
distributionOrderRequestDto.setState(DistributionEnum.DistributionOrderStateEnum.SIGNED.getCode());
distributionOrderRequestDto.setLogisticsState(LogisticsStateEnum.StateEnum.SIGNED.getCode());
int page = 0;
while (hasNextPage) {
......@@ -130,13 +138,15 @@ public class RefreshLogisticsJob {
distributionOrderRequestDto.setPage(page);
List<DistributionOrder> distributionOrderList = distributionOrderDao.findByPage(distributionOrderRequestDto);
PageInfo pageInfo = new PageInfo(distributionOrderList);
logger.info("================ 签收时间超过七天未确认收货的订单总页数为: {}, 当前查询第 {} 页 ================", pageInfo.getPages(), pageInfo.getPageNum());
logger.info("================ 签收时间超过七天未确认完成的订单总页数为: {}, 当前查询第 {} 页 ================", pageInfo.getPages(), pageInfo.getPageNum());
for (DistributionOrder distributionOrder : distributionOrderList) {
distributionOrderDao.updateState(distributionOrder.getDistributionOrderId(), DistributionEnum.DistributionOrderStateEnum.FINISH.getCode());
logger.info(">>>>>>>>>>>>>> 订单号:{}, 签收时间超过七天系统自动确认收货 <<<<<<<<<<<<<<<");
//关联的订单账单,用户账户的待入账金额改为已入账
userAccountDetailDao.updateState(distributionOrder.getDistributionOrderId(), BillEnum.AccountDetailStateEnum.ENTRY.getCode());
logger.info(">>>>>>>>>>>>>> 订单号:{}, 签收时间超过七天系统自动完成订单 <<<<<<<<<<<<<<<");
}
hasNextPage = pageInfo.isHasNextPage();
}
logger.info(">>>>>>>>>>>>>> 系统自动确认收货任务执行成功 <<<<<<<<<<<<<<<");
logger.info(">>>>>>>>>>>>>> 系统自动确认完成订单任务执行成功 <<<<<<<<<<<<<<<");
}
}
......@@ -11,5 +11,7 @@ public interface UserAccountDetailDao {
boolean update(UserAccountDetail userAccountDetail);
boolean updateState(String transactionId, int state);
List<UserAccountDetail> findList(UserAccountDetailRequestDto dto);
}
......@@ -10,6 +10,7 @@ import com.xxdxxs.db.component.JdbcHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import javax.print.DocFlavor;
import java.util.Date;
import java.util.List;
......@@ -35,6 +36,16 @@ public class UserAccountDetailDaoImpl implements UserAccountDetailDao {
return userAccountDetailMapper.updateByExampleSelective(userAccountDetail, example) > 0;
}
@Override
public boolean updateState(String transactionId, int state) {
UserAccountDetailExample example = new UserAccountDetailExample();
UserAccountDetailExample.Criteria criteria = example.createCriteria();
criteria.andTransactionIdEqualTo(transactionId);
UserAccountDetail userAccountDetail = new UserAccountDetail();
userAccountDetail.setState(state);
userAccountDetail.setUpdateTime(new Date());
return userAccountDetailMapper.updateByExampleSelective(userAccountDetail, example) > 0;
}
@Override
public List<UserAccountDetail> findList(UserAccountDetailRequestDto dto) {
......
......@@ -9,6 +9,7 @@ import com.wwdz.ch.core.api.OfficialAccountApi;
import com.wwdz.ch.core.api.WxAppletApi;
import com.wwdz.ch.core.api.wxpay.WxPayServiceApi;
import com.wwdz.ch.core.consts.AuctionEnum;
import com.wwdz.ch.core.consts.BillEnum;
import com.wwdz.ch.core.consts.DistributionEnum;
import com.wwdz.ch.core.consts.RefundOrderEnum;
import com.wwdz.ch.core.notify.AliSmsSender;
......@@ -98,6 +99,9 @@ public class WxPayCallbackController {
@Autowired
AuctionConfigDao auctionConfigDao;
@Autowired
UserAccountDetailDao userAccountDetailDao;
@RequestMapping(value ="/getPayNotify")
public String payNotify(HttpServletRequest request) throws IOException {
logger.info("------------------ 收到微信支付回调通知 ------------------");
......@@ -284,13 +288,17 @@ public class WxPayCallbackController {
//用户付款成功后,把分销商利润的记录更新为有效,因为未付款前只是创建了预计利润记录,但并未生效
distributorProfitDao.updateValidState(distributionOrderId, true);
//用户账户明细的状态改为待入账
userAccountDetailDao.updateState(distributionOrderId, BillEnum.AccountDetailStateEnum.WAIT_ENTRY.getCode());
DistributionOrder distributionOrder = distributionOrderDao.findById(distributionOrderId);
SupplierItem supplierItem = supplierItemDao.findById(distributionOrder.getItemId());
//更新库存
supplierItemService.reduceStock(distributionOrder.getItemId(), distributionOrder.getItemNum());
logger.info(">>>>>>>>>>>> 竞拍订单,微信支付回调通知处理成功,更新拍卖订单状态和商品库存 <<<<<<<<<<<<");
//用户首次购买的话,即绑定该分销商
boolean isExisted = distributorBindDao.isExisted(distributionOrder.getBuyerId());
/* boolean isExisted = distributorBindDao.isExisted(distributionOrder.getBuyerId());
if (!isExisted) {
Date now = new Date();
DistributorBind distributorBind = new DistributorBind();
......@@ -301,7 +309,7 @@ public class WxPayCallbackController {
distributorBind.setBindShareId(distributionOrder.getShareRecordId());
distributorBind.setIsValid(true);
distributorBindDao.insert(distributorBind);
}
}*/
//更新拍品配置中的状态为"成交"
auctionConfigDao.updateState(distributionOrder.getItemId(), AuctionEnum.StateEnum.DEALED.getCode());
return Result.success();
......@@ -337,6 +345,9 @@ public class WxPayCallbackController {
//用户付款成功后,把藏家利润的记录更新为有效,因为未付款前只是创建了预计利润记录,但并未生效
distributorProfitDao.updateValidState(distributionOrderId, true);
//用户账户明细的状态改为待入账
userAccountDetailDao.updateState(distributionOrderId, BillEnum.AccountDetailStateEnum.WAIT_ENTRY.getCode());
//用户确认签收,新增分销商利润
DistributionOrder distributionOrder = distributionOrderDao.findById(distributionOrderId);
SupplierItem supplierItem = supplierItemDao.findById(distributionOrder.getItemId());
......
......@@ -638,7 +638,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
@Override
public Result confirmSigned(DistributionOrderRequestDto dto) {
try {
distributionOrderDao.updateState(dto.getDistributionOrderId(), DistributionEnum.DistributionOrderStateEnum.FINISH.getCode());
distributionOrderDao.updateState(dto.getDistributionOrderId(), DistributionEnum.DistributionOrderStateEnum.SIGNED.getCode());
String distributionOrderId = dto.getDistributionOrderId();
DistributionOrder distributionOrder = distributionOrderDao.findById(distributionOrderId);
//用户确认收货,发送模板信息通知分销商
......@@ -662,7 +662,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
logger.info(">>>>> 分销商id :{}, 获取openid失败,无法发送模板信息 <<<<<", distributionOrder.getSellerId());
}
} catch (Exception e) {
logger.info("分销订单发货通知模板信息发送失败:{}", e);
logger.info("订单发货通知模板信息发送失败:{}", e);
}
return Result.success();
} catch (Exception e) {
......
......@@ -7,7 +7,6 @@ import com.wwdz.ch.db.dao.distribution.UserAccountDetailDao;
import com.wwdz.ch.db.domain.distribution.DistributionOrder;
import com.wwdz.ch.db.domain.distribution.DistributorProfit;
import com.wwdz.ch.db.domain.distribution.UserAccountDetail;
import com.wwdz.ch.db.dto.request.distribution.UserAccountDetailRequestDto;
import com.wwdz.ch.wx.service.distribution.UserAccountDetailService;
import com.xxdxxs.utils.StringUtils;
import org.slf4j.Logger;
......@@ -17,7 +16,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
@Service
public class UserAccountDetailServiceImpl implements UserAccountDetailService {
......@@ -27,8 +25,6 @@ public class UserAccountDetailServiceImpl implements UserAccountDetailService {
@Autowired
UserAccountDetailDao userAccountDetailDao;
@Transactional(propagation=Propagation.REQUIRED)
@Override
public Result create(DistributionOrder distributionOrder, DistributorProfit distributorProfit) throws Exception {
......@@ -40,7 +36,7 @@ public class UserAccountDetailServiceImpl implements UserAccountDetailService {
//介绍佣金
long introduceCost = distributorProfit.getIntroduceCost();
//卖家实际收益
long sellerProfitAmount = orderAmount - channelCost - introduceCost;
long sellerProfitAmount = distributorProfit.getProfit();
//记录卖家的收益
UserAccountDetail userAccountDetail = new UserAccountDetail();
......@@ -68,24 +64,20 @@ public class UserAccountDetailServiceImpl implements UserAccountDetailService {
//记录介绍佣金,判断介绍人是平台还是用户
UserAccountDetail introduceAccountDetail = new UserAccountDetail();
if (StringUtils.isEmpty(distributionOrder.getShareRecordId()) || CommConsts.DEFAULT_SHARE_ID.equals(distributionOrder.getShareRecordId())) {
if (StringUtils.isEmpty(distributionOrder.getShareRecordId()) || CommConsts.DEFAULT_SHARE_ID.equals(distributionOrder.getShareRecordId())
|| CommConsts.SYSTEM_ACCOUNT.equals(distributionOrder.getShareRecordId())) {
introduceAccountDetail.setUserId(CommConsts.SYSTEM_ACCOUNT);
} else {
introduceAccountDetail.setUserId(Long.valueOf(distributionOrder.getShareRecordId()));
}
introduceAccountDetail.setTransactionId(distributionOrder.getDistributionOrderId());
introduceAccountDetail.setAmount(channelCost);
introduceAccountDetail.setType(BillEnum.AccountDetailTypeEnum.CHANNEL.getCode());
introduceAccountDetail.setAmount(introduceCost);
introduceAccountDetail.setType(BillEnum.AccountDetailTypeEnum.INTRODUCE.getCode());
introduceAccountDetail.setFundType(BillEnum.FundTypeEnum.INCOME.getCode());
//创建订单时状态是无效,等买家付款后变为待入账,订单完成变成已入账
introduceAccountDetail.setState(BillEnum.AccountDetailStateEnum.INVALID.getCode());
introduceAccountDetail.setCreateTime(distributionOrder.getCreateTime());
userAccountDetailDao.insert(introduceAccountDetail);
return Result.success();
} catch (Exception e) {
logger.error("新增用户账户明细error:{}", e);
......
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