From ddc52ca9c8a7597b410be4e802e598844bdc5d4a Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Thu, 09 May 2024 16:25:41 +0800
Subject: [PATCH] 1
---
src/main/java/com/nq/service/impl/UserServiceImpl.java | 92 ++++++++++++++++++++++++++++++++++++---------
1 files changed, 73 insertions(+), 19 deletions(-)
diff --git a/src/main/java/com/nq/service/impl/UserServiceImpl.java b/src/main/java/com/nq/service/impl/UserServiceImpl.java
index 87ccd15..05201dc 100644
--- a/src/main/java/com/nq/service/impl/UserServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserServiceImpl.java
@@ -13,6 +13,7 @@
import com.nq.pojo.*;
import com.nq.pojo.reponse.RUserAssets;
import com.nq.service.*;
+import com.nq.utils.UserPointUtil;
import com.nq.utils.timeutil.DateTimeUtil;
import com.nq.utils.PropertiesUtil;
import com.nq.utils.SymmetricCryptoUtil;
@@ -27,6 +28,7 @@
import com.nq.vo.indexposition.IndexPositionVO;
import com.nq.vo.position.PositionProfitVO;
import com.nq.vo.position.PositionVO;
+import com.nq.vo.position.UserPositionVO;
import com.nq.vo.stock.StockListVO;
import com.nq.vo.user.UserInfoVO;
@@ -117,8 +119,14 @@
@Autowired
ISiteMessageService iSiteMessageService;
+ @Autowired
+ private UserPositionMapper userPositionMapper;
+ @Autowired
+ IPriceServices priceServices;
+ @Resource
+ ApplyLeverMapper applyLeverMapper;
@@ -286,9 +294,30 @@
String userJson = RedisShardedPoolUtils.get(loginToken);
User user = (User) JsonUtil.string2Obj(userJson, User.class);
User dbuser = this.userMapper.selectById(user.getId());
+
SiteSetting siteSetting = iSiteSettingService.getSiteSetting();
UserInfoVO userInfoVO = assembleUserInfoVO(dbuser, siteSetting);
+ ApplyLever applyLever = applyLeverMapper.selectOne(new LambdaQueryWrapper<ApplyLever>()
+ .eq(ApplyLever::getUserId, user.getId())
+ .eq(ApplyLever::getState, 1)
+ .orderByDesc(ApplyLever::getCreateTime)
+ .last(" limit 1"));
+ if(null == applyLever || applyLever.getLever().equals("1")){
+ userInfoVO.setSiteLever("1");
+ }else{
+ userInfoVO.setSiteLever(leverSplit(applyLever.getLever()));
+ }
return ServerResponse.createBySuccess(userInfoVO);
+ }
+
+ public String leverSplit(String lever){
+ String levers = "1/2/5/10";
+ String[] parts = levers.split("/");
+ int index = Arrays.asList(parts).indexOf(lever);
+ if (index != -1) {
+ return String.join("/", Arrays.copyOfRange(parts, 0, index + 1));
+ }
+ return null;
}
@@ -484,19 +513,20 @@
rUserAssets.setCumulativeProfitAndLoss(hProfitAndLose.toString());
rUserAssets.setHandlingCharge(hMoney.toString());
rUserAssets.setProfitAndLoss(profitAndLose.toString());
-
+ rUserAssets.setIsZf(userAssets.getIsZf());
+ rUserAssets.setAmountToBeCovered(userAssets.getAmountToBeCovered().toString());
BigDecimal rate = rateServices.currencyRate(
EStockType.getEStockTypeByCode(userAssets.getAccectType()),EStockType.US);
- BigDecimal availableBalanceUSD = amt;
- if(amt.compareTo(BigDecimal.ZERO)>0){
- availableBalanceUSD = amt.multiply(rate);
- }
+ BigDecimal availableBalanceUSD = amt;
+ if(amt.compareTo(BigDecimal.ZERO)>0){
+ availableBalanceUSD = amt.multiply(rate);
+ }
BigDecimal freezeMoneyUSD = freeMoney;
- if(freeMoney.compareTo(BigDecimal.ZERO)>0){
- freezeMoneyUSD = freeMoney.multiply(rate);
- }
+ if(freeMoney.compareTo(BigDecimal.ZERO)>0){
+ freezeMoneyUSD = freeMoney.multiply(rate);
+ }
BigDecimal totleMoneyUSD = totalAssets;
if(totalAssets.compareTo(BigDecimal.ZERO)>0){
@@ -527,7 +557,9 @@
rUserAssets.setCumulativeProfitAndLossUSD(cumulativeProfitAndLossUSD.setScale(s,BigDecimal.ROUND_UP).toString());
rUserAssets.setHandlingChargeUSD(handlingChargeUSD.setScale(s,BigDecimal.ROUND_UP).toString());
rUserAssets.setProfitAndLossUSD(profitAndLossUSD.setScale(s,BigDecimal.ROUND_UP).toString());
-
+ rUserAssets.setProfitAndLoss(getProfitAndLose(userId,userAssets.getAccectType()).toString());
+ BigDecimal decimal = new BigDecimal(rUserAssets.getTotalMoney()).add(new BigDecimal(rUserAssets.getProfitAndLoss()));
+ rUserAssets.setTotalMoney(decimal.toString());
AllProfitAndLose = AllProfitAndLose.add(profitAndLossUSD);
allTotalAssets = allTotalAssets.add(totleMoneyUSD);
allAmt = allAmt.add(availableBalanceUSD);
@@ -566,6 +598,28 @@
return ServerResponse.createBySuccess(rUserAssetsList);
}
+ public BigDecimal getProfitAndLose(Integer userId,String accectType){
+ List<UserPosition> userPositions;
+ userPositions = userPositionMapper.
+ findMyPositionByCodeAndSpell(userId,
+ "","",
+ 0, accectType);
+
+
+ List<UserPositionVO> userPositionVOS = Lists.newArrayList();
+ if (userPositions.size() > 0) {
+ for (UserPosition position : userPositions) {
+ UserPositionVO userPositionVO = UserPointUtil.assembleUserPositionVO(position, priceServices.getNowPrice(position.getStockCode()));
+ userPositionVOS.add(userPositionVO);
+ }
+ }
+ BigDecimal profitAndLose = BigDecimal.ZERO;
+ for (UserPositionVO f : userPositionVOS) {
+ profitAndLose = profitAndLose.add(f.getProfitAndLose());
+ }
+ return profitAndLose;
+ }
+
@Override
public ServerResponse transfer(String fromType, String toType, String amt,HttpServletRequest request) {
User user = userService.getCurrentUser(request);
@@ -575,7 +629,11 @@
return ServerResponse.createByErrorMsg("余额不足",request);
}
userAssetsServices.availablebalanceChange(fromType,user.getId(), EUserAssets.TRANSFER,amtBig.negate(),fromType+"/"+toType,"");
- amtBig = rateServices.currencyRate(EStockType.getEStockTypeByCode(fromType),EStockType.getEStockTypeByCode(toType)).multiply(amtBig);
+ if(fromType.equals("US")){
+ amtBig = (new BigDecimal(83.5)).multiply(amtBig);
+ }else{
+ amtBig = rateServices.currencyRate(EStockType.getEStockTypeByCode(fromType),EStockType.getEStockTypeByCode(toType)).multiply(amtBig);
+ }
userAssetsServices.availablebalanceChange(toType,user.getId(),EUserAssets.TRANSFER,amtBig.setScale(5,RoundingMode.HALF_DOWN),fromType+"/"+toType,"");
return ServerResponse.createBySuccess();
}
@@ -701,22 +759,17 @@
}
- public ServerResponse addSimulatedAccount(Integer agentId, String phone, String pwd, String amt, Integer accountType, HttpServletRequest request) {
+ public ServerResponse addSimulatedAccount(Integer agentId, String phone, String pwd,Integer accountType, HttpServletRequest request) {
if (StringUtils.isBlank(phone) || StringUtils.isBlank(pwd)) {
return ServerResponse.createByErrorMsg("The parameter cannot be null");
}
- User dbUser = this.userMapper.findByPhone(phone);
- if (dbUser != null) {
+ Long count = userMapper.selectCount(new LambdaQueryWrapper<User>().eq(User::getPhone, phone));
+ if (count > 0) {
return ServerResponse.createByErrorMsg("The phone number is registered");
}
-
- if ((new BigDecimal(amt)).compareTo(new BigDecimal("200000")) == 1) {
- return ServerResponse.createByErrorMsg("The phone number is registered");
- }
- amt = "0"; //代理后台添加用户时金额默认为0
User user = new User();
user.setAccountType(accountType);
user.setPhone(phone);
@@ -724,7 +777,8 @@
user.setIsLogin(Integer.valueOf(0));
user.setIsActive(Integer.valueOf(0));
user.setRegTime(new Date());
-
+ user.setUserPwd(SymmetricCryptoUtil.encryptPassword(pwd));
+ user.setLever("1");
if (accountType.intValue() == 1) {
user.setNickName("模拟用户");
}
--
Gitblit v1.9.3