Commit ffb74ca6 authored by shiyu's avatar shiyu

用户账户更新

parent cc002df1
......@@ -8,10 +8,12 @@ import com.wwdz.ch.core.util.IdUtils;
import com.wwdz.ch.db.dao.distribution.DistributorProfitDao;
import com.wwdz.ch.db.dao.distribution.UserAccountDetailDao;
import com.wwdz.ch.db.dao.distribution.UserBillDao;
import com.wwdz.ch.db.dao.openShop.UserAccountDao;
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.domain.distribution.UserBill;
import com.wwdz.ch.db.domain.openShop.UserAccount;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.slf4j.Logger;
......@@ -45,6 +47,9 @@ public class SysUserBillServiceImpl implements SysUserBillService {
@Autowired
UserAccountDetailDao userAccountDetailDao;
@Autowired
UserAccountDao userAccountDao;
@Transactional(propagation = Propagation.REQUIRES_NEW)
@Override
public Result finishCalculate(DistributionOrder distributionOrder){
......@@ -69,6 +74,13 @@ public class SysUserBillServiceImpl implements SysUserBillService {
//卖家实际收益
long sellerProfitAmount = distributorProfit.getProfit();
//更新卖家账户
UserAccount oldUserAccount = userAccountDao.findByUserId(distributionOrder.getSellerId());
UserAccount newUserAccount = new UserAccount();
newUserAccount.setUserId(distributionOrder.getSellerId());
newUserAccount.setGoodsWaitEntryAmount(oldUserAccount.getGoodsWaitEntryAmount() - sellerProfitAmount);
newUserAccount.setGoodsAmount(oldUserAccount.getGoodsAmount() + sellerProfitAmount);
UserBill userBill = userBillDao.findOne(accountPeriod, distributionOrder.getSellerId(), BillEnum.BillStateEnum.NOT_PAID.getCode());
UserBill updateBill = new UserBill();
updateBill.setId(userBill.getId());
......@@ -85,12 +97,17 @@ public class SysUserBillServiceImpl implements SysUserBillService {
updateBill.setIntroduceEntryAmount(newIntroduceEntryAmount);
updateBill.setTotalWaitEntryAmount(orderWaitEntryAmount + newIntroduceWaitEntryAmount);
updateBill.setTotalEntryAmount(updateBill.getOrderEntryAmount() + newIntroduceEntryAmount);
//更新卖家的介绍佣金入账金额
newUserAccount.setIntroduceWaitEntryAmount(oldUserAccount.getIntroduceWaitEntryAmount() - introduceCost);
newUserAccount.setIntroduceAmount(oldUserAccount.getIntroduceAmount() + introduceCost);
} else {
//如果介绍人不是卖家自己,那原来的待入账介绍佣金和已入账介绍佣金都不用变化
updateBill.setTotalWaitEntryAmount(updateBill.getOrderWaitEntryAmount() + userBill.getIntroduceWaitEntryAmount());
updateBill.setTotalEntryAmount(updateBill.getOrderEntryAmount() + userBill.getIntroduceEntryAmount());
}
userBillDao.updateByPrimaryKey(updateBill);
//更新卖家的账户
userAccountDao.update(newUserAccount);
//计算介绍人的佣金(介绍人非卖家自己和平台)
if (!distributionOrder.getShareRecordId().equals(distributionOrder.getSellerId().toString())
......@@ -139,5 +156,13 @@ public class SysUserBillServiceImpl implements SysUserBillService {
updateBill.setTotalEntryAmount(newTotalEntryAmount);
updateBill.setIntroduceEntryAmount(newIntroduceEntryAmount);
userBillDao.updateByPrimaryKey(updateBill);
//更新介绍人账户
UserAccount oldUserAccount = userAccountDao.findByUserId(userAccountDetail.getUserId());
UserAccount newUserAccount = new UserAccount();
newUserAccount.setUserId(userAccountDetail.getUserId());
newUserAccount.setIntroduceWaitEntryAmount(oldUserAccount.getIntroduceWaitEntryAmount() - amount);
newUserAccount.setIntroduceAmount(oldUserAccount.getIntroduceAmount() + amount);
userAccountDao.update(newUserAccount);
}
}
......@@ -5,8 +5,10 @@ import com.wwdz.ch.core.consts.EarnestEnum;
import com.wwdz.ch.core.entity.UserAccountVo;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.core.util.PriceUtil;
import com.wwdz.ch.db.dao.distribution.UserAccountDetailDao;
import com.wwdz.ch.db.dao.openShop.EarnestRecordDao;
import com.wwdz.ch.db.dao.openShop.UserAccountDao;
import com.wwdz.ch.db.domain.distribution.UserAccountDetail;
import com.wwdz.ch.db.domain.openShop.UserAccount;
import com.wwdz.ch.db.dto.request.openShop.EarnestRecordRequestDto;
import com.wwdz.ch.wx.service.UserAccountService;
......@@ -14,8 +16,10 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
@Service
public class UserAccountServiceImpl implements UserAccountService {
......@@ -28,6 +32,9 @@ public class UserAccountServiceImpl implements UserAccountService {
@Autowired
EarnestRecordDao earnestRecordDao;
@Autowired
UserAccountDetailDao userAccountDetailDao;
@Override
public Result initAccount(long userId) {
try {
......@@ -74,4 +81,20 @@ public class UserAccountServiceImpl implements UserAccountService {
}
return Result.failed();
}
@Deprecated
@Transactional
@Override
public Result finishEntryAmount(String distributionOrderId) {
try {
List<UserAccountDetail> userAccountDetailList = userAccountDetailDao.findByTransactionId(distributionOrderId);
for (UserAccountDetail userAccountDetail : userAccountDetailList) {
}
return Result.success();
} catch (Exception e) {
logger.info("订单完成入账失败 error: {}", e);
}
return Result.failed();
}
}
......@@ -9,12 +9,15 @@ import com.wwdz.ch.db.dao.CollectorWhiteListDao;
import com.wwdz.ch.db.dao.distribution.DistributionOrderDao;
import com.wwdz.ch.db.dao.distribution.UserAccountDetailDao;
import com.wwdz.ch.db.dao.distribution.UserBillDao;
import com.wwdz.ch.db.dao.openShop.UserAccountDao;
import com.wwdz.ch.db.domain.CollectorWhiteList;
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.domain.distribution.UserBill;
import com.wwdz.ch.db.domain.openShop.UserAccount;
import com.wwdz.ch.db.dto.request.distribution.UserAccountDetailRequestDto;
import com.wwdz.ch.wx.service.UserAccountService;
import com.wwdz.ch.wx.service.distribution.UserAccountDetailService;
import com.wwdz.ch.wx.service.distribution.UserBillService;
import com.xxdxxs.utils.StringUtils;
......@@ -50,6 +53,11 @@ public class UserAccountDetailServiceImpl implements UserAccountDetailService {
@Autowired
DistributionOrderDao distributionOrderDao;
@Autowired
UserAccountDao userAccountDao;
@Transactional(propagation=Propagation.REQUIRED)
@Override
......@@ -88,6 +96,13 @@ public class UserAccountDetailServiceImpl implements UserAccountDetailService {
channelAccountDetail.setCreateTime(distributionOrder.getCreateTime());
userAccountDetailDao.insert(channelAccountDetail);
//更新卖家的账户,增加待入账货款
UserAccount oldSellerAccount = userAccountDao.findByUserId(distributionOrder.getSellerId());
UserAccount newUserAccount = new UserAccount();
newUserAccount.setUserId(distributionOrder.getSellerId());
newUserAccount.setGoodsWaitEntryAmount(oldSellerAccount.getGoodsWaitEntryAmount() + sellerProfitAmount);
userAccountDao.update(newUserAccount);
//记录介绍佣金,判断介绍人是平台还是用户
UserAccountDetail introduceAccountDetail = new UserAccountDetail();
if (StringUtils.isEmpty(distributionOrder.getShareRecordId()) || CommConsts.DEFAULT_SHARE_ID.equals(distributionOrder.getShareRecordId())
......@@ -95,6 +110,12 @@ public class UserAccountDetailServiceImpl implements UserAccountDetailService {
introduceAccountDetail.setUserId(CommConsts.SYSTEM_ACCOUNT);
} else {
introduceAccountDetail.setUserId(distributionOrder.getIntroducerId() == null ? Long.valueOf(distributionOrder.getShareRecordId()) : distributionOrder.getIntroducerId());
//更新介绍人账户,增加待入账介绍佣金
UserAccount oldIntroducerAccount = userAccountDao.findByUserId(introduceAccountDetail.getUserId());
UserAccount newIntroducerAccount = new UserAccount();
newIntroducerAccount.setUserId(introduceAccountDetail.getUserId());
newIntroducerAccount.setIntroduceWaitEntryAmount(oldIntroducerAccount.getIntroduceWaitEntryAmount() + introduceCost);
userAccountDao.update(newIntroducerAccount);
}
introduceAccountDetail.setTransactionId(distributionOrder.getDistributionOrderId());
introduceAccountDetail.setAmount(introduceCost);
......
package com.wwdz.ch.wx.service;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.db.domain.distribution.DistributionOrder;
public interface UserAccountService {
......@@ -11,11 +12,16 @@ public interface UserAccountService {
*/
Result initAccount(long userId);
/**
* 查询用户账户信息
* @param userId
* @return
*/
Result find(long userId);
/**
* 订单完成,货款和介绍佣金变成已入账
* @return
*/
Result finishEntryAmount(String distributionOrderId);
}
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