From 05683f2b2bdbdbe21cf17ad523c21ab338bd1c54 Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期二, 19 七月 2022 21:49:55 +0800
Subject: [PATCH] 优化添加设备 功能
---
service-acct/src/main/java/com/java110/acct/smo/impl/AccountInnerServiceSMOImpl.java | 136 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 136 insertions(+), 0 deletions(-)
diff --git a/service-acct/src/main/java/com/java110/acct/smo/impl/AccountInnerServiceSMOImpl.java b/service-acct/src/main/java/com/java110/acct/smo/impl/AccountInnerServiceSMOImpl.java
index e66c5eb..a3292ee 100644
--- a/service-acct/src/main/java/com/java110/acct/smo/impl/AccountInnerServiceSMOImpl.java
+++ b/service-acct/src/main/java/com/java110/acct/smo/impl/AccountInnerServiceSMOImpl.java
@@ -1,19 +1,27 @@
package com.java110.acct.smo.impl;
+import com.java110.acct.dao.IAccountDetailServiceDao;
import com.java110.acct.dao.IAccountServiceDao;
import com.java110.core.annotation.Java110Transactional;
import com.java110.core.base.smo.BaseServiceSMO;
+import com.java110.core.factory.GenerateCodeFactory;
import com.java110.dto.PageDto;
import com.java110.dto.account.AccountDto;
+import com.java110.dto.accountDetail.AccountDetailDto;
import com.java110.dto.user.UserDto;
import com.java110.intf.acct.IAccountInnerServiceSMO;
import com.java110.po.account.AccountPo;
+import com.java110.po.accountDetail.AccountDetailPo;
+import com.java110.utils.lock.DistributedLock;
import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
+import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
@@ -30,6 +38,9 @@
@Autowired
private IAccountServiceDao accountServiceDaoImpl;
+
+ @Autowired
+ private IAccountDetailServiceDao accountDetailServiceDaoImpl;
@Override
@@ -89,6 +100,131 @@
return accountServiceDaoImpl.updateAccount(BeanConvertUtil.beanCovertMap(accountPo));
}
+ @Override
+ public int saveAccount(@RequestBody AccountPo accountPo) {
+ accountServiceDaoImpl.saveAccount(BeanConvertUtil.beanCovertMap(accountPo));
+ return 1;
+ }
+
+ /**
+ * 棰勫瓨鎺ュ彛
+ *
+ * @param accountDetailPo
+ * @return
+ */
+ @Override
+ @Java110Transactional
+ public int prestoreAccount(@RequestBody AccountDetailPo accountDetailPo) {
+
+ if (StringUtil.isEmpty(accountDetailPo.getAcctId())) {
+ throw new IllegalArgumentException("璐︽埛ID涓虹┖");
+ }
+ //寮�濮嬫灧閿�
+ String requestId = DistributedLock.getLockUUID();
+ String key = accountDetailPo.getAcctId();
+ AccountDto accountDto = null;
+ List<AccountDto> accounts = null;
+ int flag;
+ try {
+ DistributedLock.waitGetDistributedLock(key, requestId);
+ accountDto = new AccountDto();
+ accountDto.setObjId(accountDetailPo.getObjId());
+ accountDto.setAcctId(accountDetailPo.getAcctId());
+ accounts = BeanConvertUtil.covertBeanList(accountServiceDaoImpl.getAccountInfo(BeanConvertUtil.beanCovertMap(accountDto)), AccountDto.class);
+ if (accounts == null || accounts.size() < 1) {
+ throw new IllegalArgumentException("璐︽埛涓嶅瓨鍦�");
+ }
+ //鍦ㄨ处鎴峰鍔�
+ double amount = Double.parseDouble(accounts.get(0).getAmount());
+ BigDecimal amountBig = new BigDecimal(amount);
+ amount = amountBig.add(new BigDecimal(accountDetailPo.getAmount())).doubleValue();
+ AccountPo accountPo = new AccountPo();
+ accountPo.setObjId(accountDetailPo.getObjId());
+ accountPo.setAcctId(accountDetailPo.getAcctId());
+ accountPo.setAmount(amount + "");
+ flag = accountServiceDaoImpl.updateAccount(BeanConvertUtil.beanCovertMap(accountPo));
+ if (flag < 1) {
+ throw new IllegalArgumentException("鏇存柊璐︽埛澶辫触");
+ }
+ } finally {
+ DistributedLock.releaseDistributedLock(requestId, key);
+ }
+ accountDetailPo.setDetailType(AccountDetailDto.DETAIL_TYPE_IN);
+ if(StringUtil.isEmpty(accountDetailPo.getDetailId())) {
+ accountDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
+ }
+ if(StringUtil.isEmpty(accountDetailPo.getOrderId())){
+ accountDetailPo.setOrderId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_orderId));
+ }
+ if(StringUtil.isEmpty(accountDetailPo.getRelAcctId())){
+ accountDetailPo.setRelAcctId("-1");
+ }
+
+ //淇濆瓨浜ゆ槗鏄庣粏
+ return accountDetailServiceDaoImpl.saveAccountDetails(BeanConvertUtil.beanCovertMap(accountDetailPo));
+ }
+
+ /**
+ * 鎵f鎺ュ彛
+ *
+ * @param accountDetailPo
+ * @return
+ */
+ @Override
+ @Java110Transactional
+ public int withholdAccount(@RequestBody AccountDetailPo accountDetailPo) {
+
+ if (StringUtil.isEmpty(accountDetailPo.getAcctId())) {
+ throw new IllegalArgumentException("璐︽埛ID涓虹┖");
+ }
+ //寮�濮嬫灧閿�
+ String requestId = DistributedLock.getLockUUID();
+ String key = accountDetailPo.getAcctId();
+ AccountDto accountDto = null;
+ List<AccountDto> accounts = null;
+ int flag;
+ try {
+ DistributedLock.waitGetDistributedLock(key, requestId);
+ accountDto = new AccountDto();
+ accountDto.setObjId(accountDetailPo.getObjId());
+ accountDto.setAcctId(accountDetailPo.getAcctId());
+ accounts = BeanConvertUtil.covertBeanList(accountServiceDaoImpl.getAccountInfo(BeanConvertUtil.beanCovertMap(accountDto)), AccountDto.class);
+ if (accounts == null || accounts.size() < 1) {
+ throw new IllegalArgumentException("璐︽埛涓嶅瓨鍦�");
+ }
+ //鍦ㄨ处鎴峰鍔�
+ double amount = Double.parseDouble(accounts.get(0).getAmount());
+ BigDecimal amountBig = new BigDecimal(amount);
+ amount = amountBig.subtract(new BigDecimal(accountDetailPo.getAmount())).doubleValue();
+ if(amount < 0){
+ throw new IllegalArgumentException("浣欓涓嶈冻");
+ }
+ AccountPo accountPo = new AccountPo();
+ accountPo.setObjId(accountDetailPo.getObjId());
+ accountPo.setAcctId(accountDetailPo.getAcctId());
+ accountPo.setAmount(amount + "");
+ flag = accountServiceDaoImpl.updateAccount(BeanConvertUtil.beanCovertMap(accountPo));
+ if (flag < 1) {
+ throw new IllegalArgumentException("鏇存柊璐︽埛澶辫触");
+ }
+ accountDetailPo.setObjType(accounts.get(0).getObjType());
+ } finally {
+ DistributedLock.releaseDistributedLock(requestId, key);
+ }
+ accountDetailPo.setDetailType(AccountDetailDto.DETAIL_TYPE_OUT);
+ if(StringUtil.isEmpty(accountDetailPo.getDetailId())) {
+ accountDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
+ }
+ if(StringUtil.isEmpty(accountDetailPo.getOrderId())){
+ accountDetailPo.setOrderId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_orderId));
+ }
+ if(StringUtil.isEmpty(accountDetailPo.getRelAcctId())){
+ accountDetailPo.setRelAcctId("-1");
+ }
+ //淇濆瓨浜ゆ槗鏄庣粏
+ return accountDetailServiceDaoImpl.saveAccountDetails(BeanConvertUtil.beanCovertMap(accountDetailPo));
+ }
+
public IAccountServiceDao getAccountServiceDaoImpl() {
return accountServiceDaoImpl;
}
--
Gitblit v1.8.0