From a6754af1932bcc0dfe30c809d97111cd521d54f5 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Sun, 10 Nov 2024 21:31:49 +0800
Subject: [PATCH] 1
---
src/main/java/com/nq/service/impl/UserServiceImpl.java | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 101 insertions(+), 17 deletions(-)
diff --git a/src/main/java/com/nq/service/impl/UserServiceImpl.java b/src/main/java/com/nq/service/impl/UserServiceImpl.java
index afdaf50..70a952e 100644
--- a/src/main/java/com/nq/service/impl/UserServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserServiceImpl.java
@@ -1,5 +1,6 @@
package com.nq.service.impl;
+import cn.hutool.core.convert.Convert;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
@@ -13,6 +14,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,18 +29,19 @@
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;
import java.math.BigDecimal;
import java.math.RoundingMode;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
+import com.nq.vo.user.UserOut;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -98,7 +101,8 @@
ISiteIndexSettingService iSiteIndexSettingService;
@Autowired
StockPoll stockPoll;
-
+ @Autowired
+ IUserService iUserService;
@Resource
MoneyLogMapper mapper;
@@ -117,8 +121,14 @@
@Autowired
ISiteMessageService iSiteMessageService;
+ @Autowired
+ private ApplyLeverMapper applyLeverMapper;
+ @Autowired
+ private UserPositionMapper userPositionMapper;
+ @Autowired
+ IPriceServices priceServices;
public ServerResponse reg(String yzmCode, String agentCode, String phone, String userPwd, HttpServletRequest request) {
@@ -191,7 +201,8 @@
if (user.getIsLogin().intValue() == 1) {
return ServerResponse.createByErrorMsg("登录失败。账户锁定",request);
}
- userAssetsServices.assetsByTypeAndUserId(EStockType.IN.getCode(),user.getId());
+ userAssetsServices.assetsByTypeAndUserId(EStockType.JP.getCode(),user.getId());
+// userAssetsServices.assetsByTypeAndUserId(EStockType.US.getCode(),user.getId());
this.iSiteLoginLogService.saveLog(user, request);
return ServerResponse.createBySuccess(user);
}
@@ -284,9 +295,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;
}
@@ -464,6 +496,13 @@
* 总手续费
* */
BigDecimal allHMoney = BigDecimal.ZERO;
+
+ /**
+ * 总手续费
+ * */
+ BigDecimal amountToBeCovered = BigDecimal.ZERO;
+
+
for (int i = 0; i <userAssetsList.size() ; i++) {
RUserAssets rUserAssets = new RUserAssets();
UserAssets userAssets = userAssetsList.get(i);
@@ -482,9 +521,10 @@
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);
+ EStockType.getEStockTypeByCode(userAssets.getAccectType()),EStockType.JP);
BigDecimal availableBalanceUSD = amt;
if(amt.compareTo(BigDecimal.ZERO)>0){
@@ -525,17 +565,16 @@
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);
AllHProfitAndLose = AllHProfitAndLose.add(handlingChargeUSD);
allFreeMoney = allFreeMoney.add(freezeMoneyUSD);
allHMoney = allHMoney.add(handlingChargeUSD);
-
-
-
-
+ amountToBeCovered = amountToBeCovered.add(new BigDecimal(rUserAssets.getAmountToBeCovered()));
rUserAssetsList.add(rUserAssets);
}
@@ -559,9 +598,32 @@
rUserAssets.setFreezeMoneyUSD(allFreeMoney.setScale(s,BigDecimal.ROUND_DOWN).toString());
rUserAssets.setSymbol("$");
rUserAssets.setSymbolCode("USD");
+ rUserAssets.setAmountToBeCovered(amountToBeCovered.setScale(s,BigDecimal.ROUND_DOWN).toString());
rUserAssetsList.add(rUserAssets);
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
@@ -735,8 +797,8 @@
int insertCount = this.userMapper.insert(user);
dbUser = userMapper.selectOne(queryWrapper);
- userAssetsServices.getAvailableBalance(EStockType.IN.getCode(),dbUser.getId() );
- userAssetsServices.availablebalanceChange(EStockType.IN.getCode(),dbUser.getId(),EUserAssets.TOP_UP,new BigDecimal(amt),"","");
+ userAssetsServices.getAvailableBalance(EStockType.JP.getCode(),dbUser.getId() );
+ userAssetsServices.availablebalanceChange(EStockType.JP.getCode(),dbUser.getId(),EUserAssets.TOP_UP,new BigDecimal(amt),"","");
if (insertCount > 0) {
return ServerResponse.createBySuccessMsg("Success");
}
@@ -746,11 +808,33 @@
public ServerResponse listByAdmin(String realName, String phone, Integer agentId, Integer accountType, int pageNum, int pageSize, HttpServletRequest request) {
PageHelper.startPage(pageNum, pageSize);
-
List<User> users = this.userMapper.listByAdmin(realName, phone, agentId, accountType);
- PageInfo pageInfo = new PageInfo(users);
+ List<UserOut> userOuts = new ArrayList<>();
+ // 获取用户资产信息并构建返回结果
+ Map<Integer, UserOut> userOutMap = new HashMap<>();
+ for (User user : users) {
+ ServerResponse money = iUserService.getMoney(user.getId());
+ List<RUserAssets> rUserAssetsList = (List<RUserAssets>) money.getData();
+ RUserAssets rUserAssets = rUserAssetsList.stream()
+ .filter(stock -> "ALL".equals(stock.getAccectType()))
+ .findFirst()
+ .orElse(null);
+
+ UserOut userOut = Convert.convert(UserOut.class, user);
+ if (rUserAssets != null) {
+ userOut.setTotalMoney(rUserAssets.getTotalMoney().equals("0E-8") ? "0" : rUserAssets.getTotalMoney());
+ userOut.setFreezeMoney(rUserAssets.getFreezeMoney().equals("0E-8") ? "0" : rUserAssets.getFreezeMoney());
+ userOut.setAvailableBalance(rUserAssets.getAvailableBalance().equals("0E-8") ? "0" : rUserAssets.getAvailableBalance());
+ userOut.setAmountToBeCovered(new BigDecimal(rUserAssets.getAmountToBeCovered()));
+ }
+ userOutMap.put(user.getId(), userOut);
+ userOuts.add(userOut);
+ }
+
+ PageInfo pageInfo = new PageInfo(users);
+ pageInfo.setList(userOuts);
return ServerResponse.createBySuccess(pageInfo);
}
--
Gitblit v1.9.3