|
@@ -0,0 +1,103 @@
|
|
|
|
+package com.bosshand.virgo.api.workark.service;
|
|
|
|
+
|
|
|
|
+import com.bosshand.virgo.api.workark.dao.AccountBalanceDao;
|
|
|
|
+import com.bosshand.virgo.api.workark.dao.AccountBalanceDetailsDao;
|
|
|
|
+import com.bosshand.virgo.api.workark.dao.OrderInfoDao;
|
|
|
|
+import com.bosshand.virgo.api.workark.model.AccountBalance;
|
|
|
|
+import com.bosshand.virgo.api.workark.model.AccountBalanceDetails;
|
|
|
|
+import com.bosshand.virgo.api.workark.model.OrderInfo;
|
|
|
|
+import com.bosshand.virgo.core.dao.InviteDao;
|
|
|
|
+import com.bosshand.virgo.core.model.Invite;
|
|
|
|
+import com.bosshand.virgo.core.utils.ContextUtils;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
+
|
|
|
|
+import java.math.BigDecimal;
|
|
|
|
+import java.math.RoundingMode;
|
|
|
|
+import java.util.List;
|
|
|
|
+
|
|
|
|
+@Service
|
|
|
|
+public class AccountBalanceService {
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ AccountBalanceDao accountBalanceDao;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ AccountBalanceDetailsDao accountBalanceDetailsDao;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ OrderInfoDao orderInfoDao;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ InviteDao inviteDao;
|
|
|
|
+
|
|
|
|
+ public AccountBalance get() {
|
|
|
|
+ long userId = ContextUtils.getUserContext().getUserId();
|
|
|
|
+ AccountBalance accountBalance = accountBalanceDao.getUserId(userId);
|
|
|
|
+ if (accountBalance != null) {
|
|
|
|
+ return accountBalance;
|
|
|
|
+ }
|
|
|
|
+ AccountBalance a = new AccountBalance();
|
|
|
|
+ a.setUserId(userId);
|
|
|
|
+ a.setTotalFee(new BigDecimal(0));
|
|
|
|
+ accountBalanceDao.save(a);
|
|
|
|
+ return a;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Transactional
|
|
|
|
+ public void saveAccountBalanceDetails(String orderNo) {
|
|
|
|
+
|
|
|
|
+ // 获取用户账号
|
|
|
|
+ long userId = ContextUtils.getUserContext().getUserId();
|
|
|
|
+ AccountBalance accountBalance = accountBalanceDao.getUserId(userId);
|
|
|
|
+
|
|
|
|
+ AccountBalanceDetails accountBalanceDetails = new AccountBalanceDetails();
|
|
|
|
+ accountBalanceDetails.setAccountBalanceId(accountBalance.getId());
|
|
|
|
+
|
|
|
|
+ OrderInfo info = orderInfoDao.getOrderNo(orderNo);
|
|
|
|
+ accountBalanceDetails.setTotalFee(info.getTotalFee());
|
|
|
|
+
|
|
|
|
+ // 计算佣金(按百分之一的比例算)
|
|
|
|
+ BigDecimal scale = new BigDecimal("0.01");
|
|
|
|
+ BigDecimal fee = info.getTotalFee().multiply(scale).setScale(2, RoundingMode.DOWN);
|
|
|
|
+ accountBalanceDetails.setFee(fee);
|
|
|
|
+ accountBalanceDetailsDao.save(accountBalanceDetails);
|
|
|
|
+
|
|
|
|
+ // 计算余额
|
|
|
|
+ BigDecimal totalFee = accountBalance.getTotalFee();
|
|
|
|
+ accountBalance.setTotalFee(totalFee.add(fee));
|
|
|
|
+ accountBalanceDao.updateTotalFee(accountBalance);
|
|
|
|
+
|
|
|
|
+ orderInfoDao.updateFeeStatus(info.getId());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 判断订单是否已经领取过佣金
|
|
|
|
+ */
|
|
|
|
+ public boolean getOrderNo(String orderNo) {
|
|
|
|
+ AccountBalanceDetails accountBalanceDetails = accountBalanceDetailsDao.getOrderNo(orderNo);
|
|
|
|
+ if (accountBalanceDetails != null) {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 判断订单是否属于当前用户的的邀请人的
|
|
|
|
+ */
|
|
|
|
+ public boolean getUserId(String orderNo) {
|
|
|
|
+ OrderInfo info = orderInfoDao.getOrderNo(orderNo);
|
|
|
|
+ long userId = ContextUtils.getUserContext().getUserId();
|
|
|
|
+ List<Invite> inviteList = inviteDao.getUserId(userId);
|
|
|
|
+ if (inviteList.size() > 0) {
|
|
|
|
+ for (Invite invite : inviteList) {
|
|
|
|
+ if (invite.getInviteUserId() == info.getUserId()) {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+}
|