From 9e6054ca0612a05ec2b698b8a63db7605c600725 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Fri, 05 Mar 2021 14:51:08 +0800
Subject: [PATCH] modify
---
src/main/java/com/xcong/excoin/modules/blackchain/service/TrxUsdtUpdateService.java | 2
src/main/java/com/xcong/excoin/common/system/vo/MemberInfoVo.java | 34 +
src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java | 11
src/main/java/com/xcong/excoin/modules/documentary/vo/BeTraderConditionVo.java | 32 +
src/main/resources/mapper/member/MemberSettingDao.xml | 7
src/main/java/com/xcong/excoin/modules/member/entity/MemberEntity.java | 5
src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberSubmitCoinApplyInDto.java | 3
src/main/java/com/xcong/excoin/modules/documentary/vo/TradeSetInfoVo.java | 3
src/main/java/com/xcong/excoin/modules/documentary/controller/TraderController.java | 18
src/main/java/com/xcong/excoin/modules/documentary/controller/DocumentaryController.java | 17
src/main/java/com/xcong/excoin/modules/documentary/vo/DocumentaryOrderSetStateVo.java | 14
src/main/resources/application-newprice.yml | 18
src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderListVo.java | 12
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java | 47 +
src/main/resources/logback-spring.xml | 2
src/main/java/com/xcong/excoin/modules/documentary/entity/FollowTraderInfoEntity.java | 18
src/main/resources/application-loop.yml | 18
src/main/java/com/xcong/excoin/common/aop/ExceptionCatchAspect.java | 69 +++
src/main/java/com/xcong/excoin/configurations/security/WebSecurityConfig.java | 1
src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java | 2
src/main/java/com/xcong/excoin/modules/documentary/vo/FollowInfoVo.java | 6
src/main/resources/mapper/documentary/FollowFollowerProfitDao.xml | 1
src/main/java/com/xcong/excoin/modules/contract/parameter/vo/ContractMoneyInfoVo.java | 6
src/main/java/com/xcong/excoin/modules/documentary/vo/FollowTraderProfitInfoVo.java | 12
src/main/java/com/xcong/excoin/modules/member/parameter/vo/MemberMessageReminderVo.java | 15
src/main/java/com/xcong/excoin/modules/documentary/dao/FollowTraderInfoDao.java | 4
src/main/java/com/xcong/excoin/modules/platform/dao/SysExceptionDetailDao.java | 11
src/main/java/com/xcong/excoin/rabbit/producer/FollowProducer.java | 44 ++
src/main/java/com/xcong/excoin/modules/documentary/dto/FollowTraderProfitInfoDto.java | 25 +
src/main/java/com/xcong/excoin/modules/documentary/dto/BeTraderDto.java | 26 +
src/main/resources/application-app.yml | 18
src/main/resources/i18n/messages_en_US.properties | 2
src/main/java/com/xcong/excoin/common/system/bean/SysExceptionDetailEntity.java | 30 +
src/main/java/com/xcong/excoin/modules/member/dao/MemberSettingDao.java | 2
src/main/java/com/xcong/excoin/modules/member/entity/MemberSettingEntity.java | 4
src/main/java/com/xcong/excoin/modules/documentary/dao/FollowFollowerSettingDao.java | 2
src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java | 59 +
src/main/java/com/xcong/excoin/modules/blackchain/service/UsdtErc20UpdateService.java | 2
src/main/java/com/xcong/excoin/modules/documentary/service/impl/DocumentaryServiceImpl.java | 364 ++++++++++++----
src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberAddCoinAddressDto.java | 13
src/main/java/com/xcong/excoin/modules/documentary/service/impl/FollowOrderOperationServiceImpl.java | 40 +
src/main/resources/mapper/documentary/FollowTraderProfitInfoDao.xml | 12
src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java | 14
src/main/java/com/xcong/excoin/modules/documentary/service/DocumentaryService.java | 12
src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java | 49 +-
src/main/java/com/xcong/excoin/modules/platform/dao/PlatformSymbolsCoinDao.java | 4
src/main/resources/mapper/platform/PlatformSymbolsCoinDao.xml | 8
src/main/java/com/xcong/excoin/rabbit/consumer/FollowConsumer.java | 31 +
src/main/java/com/xcong/excoin/modules/documentary/entity/FollowTraderProfitInfoEntity.java | 4
src/main/resources/application-dayline.yml | 18
src/main/resources/i18n/messages_zh_CN.properties | 2
src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberFingerprintStateDto.java | 20
src/main/java/com/xcong/excoin/modules/documentary/vo/HistoryOrderRecordsVo.java | 3
src/main/java/com/xcong/excoin/modules/member/parameter/vo/MemberPersonCenterInfoVo.java | 3
src/main/resources/mapper/documentary/FollowFollowerSettingDao.xml | 8
src/main/java/com/xcong/excoin/quartz/job/FollowProfitUpdateJob.java | 3
src/main/resources/mapper/platform/SysExceptionDetailDao.xml | 5
src/main/java/com/xcong/excoin/modules/documentary/vo/DocumentaryOrderSetInfoVo.java | 4
src/main/resources/mapper/documentary/FollowTraderInfoDao.xml | 6
src/main/java/com/xcong/excoin/common/system/controller/LoginController.java | 13
src/main/resources/application.yml | 20
src/main/java/com/xcong/excoin/modules/member/service/MemberService.java | 18
62 files changed, 1,042 insertions(+), 234 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/common/aop/ExceptionCatchAspect.java b/src/main/java/com/xcong/excoin/common/aop/ExceptionCatchAspect.java
new file mode 100644
index 0000000..3eeff37
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/common/aop/ExceptionCatchAspect.java
@@ -0,0 +1,69 @@
+package com.xcong.excoin.common.aop;
+
+import com.xcong.excoin.common.exception.GlobalException;
+import com.xcong.excoin.common.system.bean.SysExceptionDetailEntity;
+import com.xcong.excoin.modules.platform.dao.SysExceptionDetailDao;
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.AfterThrowing;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DuplicateKeyException;
+import org.springframework.security.authentication.BadCredentialsException;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.MethodArgumentNotValidException;
+
+import javax.validation.ValidationException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.net.InetAddress;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author wzy
+ * @date 2021-03-05
+ **/
+@Slf4j
+@Aspect
+@Component
+public class ExceptionCatchAspect {
+
+ private static final List EXCLUDE_EXCEPTION = new ArrayList(Arrays.asList("java.io.IOException: Broken pipe"));
+
+ @Autowired
+ private SysExceptionDetailDao sysExceptionDetailDao;
+
+ @Pointcut("execution(* com.xcong.excoin..*.*(..))")
+ public void exceptionCatch() {
+ }
+
+ @AfterThrowing(pointcut = "exceptionCatch()", throwing = "ex")
+ public void afterThrows(JoinPoint jp, Exception ex) throws Exception {
+ if (ex instanceof GlobalException || ex instanceof MethodArgumentNotValidException || ex instanceof ValidationException || ex instanceof DuplicateKeyException || ex instanceof BadCredentialsException) {
+ throw ex;
+ }
+
+ if (EXCLUDE_EXCEPTION.contains(ex.getMessage())) {
+ throw ex;
+ }
+
+ SysExceptionDetailEntity exceptionData = new SysExceptionDetailEntity();
+ exceptionData.setCreateTime(new Date());
+ exceptionData.setMachine(InetAddress.getLocalHost().getHostName());
+ exceptionData.setAddress(InetAddress.getLocalHost().getHostAddress());
+ exceptionData.setExceptionMsg(printStackTraceToString(ex));
+ exceptionData.setSimpleMsg(ex.getMessage());
+ sysExceptionDetailDao.insert(exceptionData);
+ throw ex;
+ }
+
+ public String printStackTraceToString(Throwable t) {
+ StringWriter sw = new StringWriter();
+ t.printStackTrace(new PrintWriter(sw, true));
+ return sw.getBuffer().toString();
+ }
+}
diff --git a/src/main/java/com/xcong/excoin/common/system/bean/SysExceptionDetailEntity.java b/src/main/java/com/xcong/excoin/common/system/bean/SysExceptionDetailEntity.java
new file mode 100644
index 0000000..4e53e4b
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/common/system/bean/SysExceptionDetailEntity.java
@@ -0,0 +1,30 @@
+package com.xcong.excoin.common.system.bean;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author wzy
+ * @date 2021-03-05
+ **/
+@Data
+@TableName("sys_exception_detail")
+public class SysExceptionDetailEntity {
+
+ @TableId(value = "id",type = IdType.AUTO)
+ private Long id;
+
+ private Date createTime;
+
+ private String machine;
+
+ private String simpleMsg;
+
+ private String exceptionMsg;
+
+ private String address;
+}
diff --git a/src/main/java/com/xcong/excoin/common/system/controller/LoginController.java b/src/main/java/com/xcong/excoin/common/system/controller/LoginController.java
index 4754bb5..8b50722 100644
--- a/src/main/java/com/xcong/excoin/common/system/controller/LoginController.java
+++ b/src/main/java/com/xcong/excoin/common/system/controller/LoginController.java
@@ -16,8 +16,10 @@
import com.xcong.excoin.common.system.bean.LoginUserBean;
import com.xcong.excoin.common.system.dto.LoginDto;
import com.xcong.excoin.common.system.dto.RegisterDto;
+import com.xcong.excoin.common.system.vo.MemberInfoVo;
import com.xcong.excoin.configurations.properties.ApplicationProperties;
import com.xcong.excoin.configurations.properties.SecurityProperties;
+import com.xcong.excoin.modules.member.entity.MemberEntity;
import com.xcong.excoin.modules.member.service.MemberService;
import com.xcong.excoin.utils.RedisUtils;
import io.swagger.annotations.Api;
@@ -94,14 +96,21 @@
redisUtils.set(redisToken, JSONObject.toJSONString(loginUserBean.getMemberEntity()), applicationProperties.getRedisExpire());
redisUtils.set(redisMember, token);
Map<String, Object> authInfo = new HashMap<>();
+ //获取返回的个人信息
+ MemberInfoVo memberInfoVo = new MemberInfoVo();
+ MemberEntity memberEntity = loginUserBean.getMemberEntity();
+ memberInfoVo.setEmail(memberEntity.getEmail());
+ memberInfoVo.setPhone(memberEntity.getPhone());
+ memberInfoVo.setInviteId(memberEntity.getInviteId());
+ memberInfoVo.setFingerprintState(memberEntity.getFingerprintState());
// 开启debug模式,则将加密后的token返回
if (applicationProperties.isDebug()) {
authInfo.put("token", token);
authInfo.put("rsaToken", AppContants.TOKEN_START_WITH + generateAsaToken(token));
- authInfo.put("user", loginUserBean);
+ authInfo.put("user", memberInfoVo);
} else {
authInfo.put("token", token);
- authInfo.put("user", loginUserBean);
+ authInfo.put("user", memberInfoVo);
}
return Result.ok("success", authInfo);
}
diff --git a/src/main/java/com/xcong/excoin/common/system/vo/MemberInfoVo.java b/src/main/java/com/xcong/excoin/common/system/vo/MemberInfoVo.java
new file mode 100644
index 0000000..f16dc2c
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/common/system/vo/MemberInfoVo.java
@@ -0,0 +1,34 @@
+package com.xcong.excoin.common.system.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "MemberInfoVo", description = "返回类")
+public class MemberInfoVo {
+
+ /**
+ * 手机号(包含国际手机号)
+ */
+ @ApiModelProperty("手机号")
+ private String phone;
+
+ /**
+ * 邮箱
+ */
+
+ @ApiModelProperty("邮箱")
+ private String email;
+ /**
+ * 邀请码
+ */
+ @ApiModelProperty("邀请码")
+ private String inviteId;
+ /**
+ * 指纹解锁功能 1:是 0:否
+ */
+ @ApiModelProperty("指纹解锁功能 1:是 0:否")
+ private Integer fingerprintState;
+
+}
diff --git a/src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java b/src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java
index b8a2da2..5a0308f 100644
--- a/src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java
+++ b/src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java
@@ -79,6 +79,10 @@
// 全仓价格操作
public static final String QUEUE_WHOLE_PRICE = "QUEUE_WHOLE_PRCE";
+ // 跟单下单
+ public static final String QUEUE_FOLLOW_ORDER = "QUEUE_FOLLOW_ORDER";
+
+ public static final String ROUTINGKEY_FOLLOW_ORDER = "ROUTINGKEY_FOLLOW_ORDER";
// 开多止盈路由键
public static final String ROUTINGKEY_MOREPRO = "ROUTINGKEY_MOREPRO";
@@ -295,6 +299,16 @@
return new Queue(QUEUE_WHOLE_BOMB, true);
}
+ @Bean
+ public Queue queueFollowOrder() {
+ return new Queue(QUEUE_FOLLOW_ORDER, true);
+ }
+
+ @Bean
+ public Binding bindingFollowOrder() {
+ return BindingBuilder.bind(queueFollowOrder()).to(orderExchange()).with(RabbitMqConfig.ROUTINGKEY_FOLLOW_ORDER);
+ }
+
@Bean
public Binding bindingWholePrice() {
diff --git a/src/main/java/com/xcong/excoin/configurations/security/WebSecurityConfig.java b/src/main/java/com/xcong/excoin/configurations/security/WebSecurityConfig.java
index 2b1a72e..6a6b837 100644
--- a/src/main/java/com/xcong/excoin/configurations/security/WebSecurityConfig.java
+++ b/src/main/java/com/xcong/excoin/configurations/security/WebSecurityConfig.java
@@ -55,6 +55,7 @@
.antMatchers("/api/orderCoin/findCollect").permitAll()
.antMatchers("/api/orderCoin/findCollect").permitAll()
.antMatchers("/api/documentary/getFollowTraderProfitInfo").permitAll()
+ .antMatchers("/api/trader/beTraderStatusCondition").permitAll()
.antMatchers("/api/helpCenter/**").permitAll()
.anyRequest().authenticated()
.and().apply(securityConfiguereAdapter());
diff --git a/src/main/java/com/xcong/excoin/modules/blackchain/service/TrxUsdtUpdateService.java b/src/main/java/com/xcong/excoin/modules/blackchain/service/TrxUsdtUpdateService.java
index 42367ee..3424be1 100644
--- a/src/main/java/com/xcong/excoin/modules/blackchain/service/TrxUsdtUpdateService.java
+++ b/src/main/java/com/xcong/excoin/modules/blackchain/service/TrxUsdtUpdateService.java
@@ -65,7 +65,7 @@
// 扫块区块
Object trc20BlockNum = redisUtils.get("USDT_TRC20_BLOCK_NUM");
if(trc20BlockNum==null){
- trc20BlockNum = 27805917L;
+ trc20BlockNum = 28095275L;
}
Long blockNum = Long.valueOf(trc20BlockNum.toString());
diff --git a/src/main/java/com/xcong/excoin/modules/blackchain/service/UsdtErc20UpdateService.java b/src/main/java/com/xcong/excoin/modules/blackchain/service/UsdtErc20UpdateService.java
index 396da2f..c51dfe2 100644
--- a/src/main/java/com/xcong/excoin/modules/blackchain/service/UsdtErc20UpdateService.java
+++ b/src/main/java/com/xcong/excoin/modules/blackchain/service/UsdtErc20UpdateService.java
@@ -85,7 +85,7 @@
// 获取最新区块
String string = redisUtils.getString(ETH_USDT_BLOCK_NUM);
if(string==null){
- string = "11925303";
+ string = "11957825";
}
BigInteger blockNum = new BigInteger(string);
Credentials credentials = Credentials.create(privateKey);
diff --git a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/ContractMoneyInfoVo.java b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/ContractMoneyInfoVo.java
index 614882c..d5d5361 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/ContractMoneyInfoVo.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/ContractMoneyInfoVo.java
@@ -17,6 +17,12 @@
@ApiModelProperty(value = "占用保证金")
private BigDecimal beUsedBondAmount;
+ @ApiModelProperty(value = "开多占用保证金")
+ private BigDecimal moreBondAmount;
+
+ @ApiModelProperty(value = "开空占用保证金")
+ private BigDecimal lessBondAmount;
+
@ApiModelProperty(value = "冻结保证金")
private BigDecimal frozenBondAmount;
diff --git a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderListVo.java b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderListVo.java
index 5c5c435..235ab79 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderListVo.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderListVo.java
@@ -1,5 +1,6 @@
package com.xcong.excoin.modules.contract.parameter.vo;
+import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -35,7 +36,7 @@
@ApiModelProperty("开仓均价")
private BigDecimal openingPrice;
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ @JsonFormat(pattern = "MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("开仓价")
private Date openingTime;
@@ -60,7 +61,7 @@
@ApiModelProperty("平仓手续费")
private BigDecimal closingFeeAmount;
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ @JsonFormat(pattern = "MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("平仓时间")
private Date closingTime;
@@ -76,6 +77,13 @@
@ApiModelProperty(value = "合约类型 1-普通 2-跟单")
private Integer contractType;
+ @ApiModelProperty(value = "订单编号")
+ private String orderNo;
+
+ public String getOrderNo() {
+ return StrUtil.isNotBlank(orderNo) ? orderNo.substring(orderNo.length() - 6) : "";
+ }
+
public String getOpeningFeeAmount() {
return openingFeeAmount == null ? "" : openingFeeAmount.setScale(4, BigDecimal.ROUND_DOWN).toPlainString();
}
diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java
index 72452b8..fd1095a 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java
@@ -1,6 +1,8 @@
package com.xcong.excoin.modules.contract.service.impl;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+
import com.alibaba.druid.sql.visitor.functions.If;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -37,11 +39,13 @@
import com.xcong.excoin.modules.member.entity.*;
import com.xcong.excoin.modules.platform.dao.TradeSettingDao;
import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity;
+import com.xcong.excoin.rabbit.producer.FollowProducer;
import com.xcong.excoin.rabbit.producer.OrderProducer;
import com.xcong.excoin.utils.*;
import com.xcong.excoin.rabbit.pricequeue.OrderModel;
import jnr.a64asm.Mem;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import sun.rmi.runtime.Log;
@@ -100,6 +104,9 @@
private FollowTraderInfoDao followTraderInfoDao;
@Resource
private FollowFollowerOrderRelationDao followFollowerOrderRelationDao;
+
+ @Autowired
+ private FollowProducer followProducer;
@Transactional(rollbackFor = Exception.class)
@Override
@@ -320,7 +327,7 @@
FollowTraderInfoEntity tradeInfo = null;
if (MemberEntity.IS_TRADER_Y.equals(memberEntity.getIsTrader())) {
tradeInfo = followTraderInfoDao.selectTraderInfoByMemberId(memberEntity.getId());
- if (tradeInfo.getIsOpen().equals(FollowTraderInfoEntity.ISOPEN_Y)) {
+ if (FollowTraderInfoEntity.ISOPEN_Y.equals(tradeInfo.getIsOpen())) {
isOpenFollow = true;
}
}
@@ -380,7 +387,8 @@
relationEntity.setTradeOrderNo(holdOrderEntity.getOrderNo());
followFollowerOrderRelationDao.insert(relationEntity);
- ThreadPoolUtils.sendFollowOrderTask(holdOrderEntity.getId());
+ followProducer.sendAddFollowOrder(holdOrderEntity.getId());
+// ThreadPoolUtils.sendFollowOrderTask(holdOrderEntity.getId());
}
// 提交成功
return Result.ok(MessageSourceUtils.getString("member_service_0024"));
@@ -824,6 +832,8 @@
// 占用保证金 -- 即持仓单中的保证金之和
BigDecimal beUsedBondAmount = BigDecimal.ZERO;
+ BigDecimal moreBondAmount = BigDecimal.ZERO;
+ BigDecimal lessBondAmount = BigDecimal.ZERO;
// 总盈利
BigDecimal totalProfitOrLess = BigDecimal.ZERO;
if (CollUtil.isNotEmpty(holdOrderEntities)) {
@@ -837,9 +847,11 @@
BigDecimal profitOrLess = BigDecimal.ZERO;
// 开多
if (ContractHoldOrderEntity.OPENING_TYPE_MORE == holdOrderEntity.getOpeningType()) {
+ moreBondAmount = moreBondAmount.add(holdOrderEntity.getBondAmount());
profitOrLess = newPrice.subtract(holdOrderEntity.getOpeningPrice()).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale())).multiply(lotNumber);
// 开空
} else {
+ lessBondAmount = lessBondAmount.add(holdOrderEntity.getBondAmount());
profitOrLess = holdOrderEntity.getOpeningPrice().subtract(newPrice).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale())).multiply(lotNumber);
}
@@ -886,6 +898,8 @@
contractMoneyInfoVo.setUpOrDown(upOrDown);
contractMoneyInfoVo.setSymbolSku(cacheSettingUtils.getSymbolSku(symbol));
contractMoneyInfoVo.setLeverRate(rateEntity.getLevelRateUp());
+ contractMoneyInfoVo.setMoreBondAmount(moreBondAmount);
+ contractMoneyInfoVo.setLessBondAmount(lessBondAmount);
return Result.ok(contractMoneyInfoVo);
}
@@ -1016,8 +1030,27 @@
List<ContractHoldOrderEntity> list = contractHoldOrderDao.selectHoldOrderListByMemberId(member.getId());
List<ContractEntrustOrderEntity> entrustList = contractEntrustOrderDao.selectEntrustOrderListByMemberId(member.getId());
- if (CollUtil.isNotEmpty(list) || CollUtil.isNotEmpty(entrustList)) {
- return Result.fail("存在持仓/委托, 无法更改");
+// if (CollUtil.isNotEmpty(list) || CollUtil.isNotEmpty(entrustList)) {
+// return Result.fail("存在持仓/委托, 无法更改");
+// }
+
+ if(CollUtil.isNotEmpty(list)) {
+ for(ContractHoldOrderEntity contractHoldOrderEntity : list) {
+ String symbol = contractHoldOrderEntity.getSymbol();
+ if(StrUtil.isEmpty(symbol)) {
+ return Result.fail("存在持仓/委托, 无法更改");
+ }
+ return Result.fail("币种"+symbol+"存在持仓/委托, 无法更改");
+ }
+ }
+ if(CollUtil.isNotEmpty(entrustList)) {
+ for(ContractEntrustOrderEntity contractEntrustOrderEntity : entrustList) {
+ String symbol = contractEntrustOrderEntity.getSymbol();
+ if(StrUtil.isEmpty(symbol)) {
+ return Result.fail("存在持仓/委托, 无法更改");
+ }
+ return Result.fail("币种"+symbol+"存在持仓/委托, 无法更改");
+ }
}
/**
@@ -1069,8 +1102,10 @@
holdOrderEntity.setOperateNo(holdOrderEntity.getOperateNo() + 1);
contractHoldOrderDao.updateById(holdOrderEntity);
- // 发送爆仓消息
- sendOrderBombMsg(holdOrderEntity.getId(), holdOrderEntity.getOpeningType(), newForcePrice, holdOrderEntity.getSymbol(), holdOrderEntity.getOperateNo(), holdOrderEntity.getMemberId());
+ if (ContractEntrustOrderEntity.POSITION_TYPE_ADD == holdOrderEntity.getPositionType()) {
+ // 发送爆仓消息
+ sendOrderBombMsg(holdOrderEntity.getId(), holdOrderEntity.getOpeningType(), newForcePrice, holdOrderEntity.getSymbol(), holdOrderEntity.getOperateNo(), holdOrderEntity.getMemberId());
+ }
}
}
}
diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java
index d6c5c3c..b61cfba 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java
@@ -16,6 +16,7 @@
import com.xcong.excoin.modules.contract.service.ContractEntrustOrderService;
import com.xcong.excoin.modules.contract.service.ContractHoldOrderService;
import com.xcong.excoin.modules.contract.service.ContractOrderService;
+import com.xcong.excoin.modules.documentary.service.FollowOrderOperationService;
import com.xcong.excoin.modules.member.dao.AgentReturnDao;
import com.xcong.excoin.modules.member.dao.MemberSettingDao;
import com.xcong.excoin.modules.member.entity.AgentReturnEntity;
@@ -80,7 +81,8 @@
private ContractEntrustOrderDao contractEntrustOrderDao;
@Resource
private RedisUtils redisUtils;
-
+ @Resource
+ private FollowOrderOperationService followOrderOperationService;
public void dealOrderFromMq(List<OrderModel> list, Integer type) {
if (CollectionUtils.isNotEmpty(list)) {
@@ -794,6 +796,7 @@
continue;
}
+ // 仅逐仓有用
if (ContractEntrustOrderEntity.POSITION_TYPE_ADD == coinsOrder.getPositionType()) {
bombOrder(coinsOrder);
} else {
@@ -880,6 +883,12 @@
record.setSymbol(coinsOrder.getSymbol());
record.setPrice(coinsOrder.getBondAmount());
memberAccountFlowEntityDao.insert(record);
+
+ MemberEntity memberEntity = memberService.getById(memId);
+ // 如果订单为交易员的订单,爆仓了,则旗下的所有跟单都进行平仓
+ if (ContractOrderEntity.CONTRACTTYPE_DOCUMENTARY == coinsOrder.getContractType() && MemberEntity.IS_TRADER_Y.equals(memberEntity.getIsTrader())) {
+ followOrderOperationService.closingFollowOrders(coinsOrder.getOrderNo());
+ }
} else {
MemberWalletContractEntity wallet = memberWalletContractService.findWalletContractByMemberIdAndSymbol(memId, "USDT");
diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java
index e8c1396..4bdd613 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java
@@ -215,7 +215,7 @@
followOrderOperationService.closingFollowOrders(holdOrderEntity.getOrderNo());
} else {
followFollowerProfitDao.updateFollowerProfitByTradeMemberId(holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getOpeningFeeAmount()), profitOrLoss, traderInfoEntity.getMemberId(), memberEntity.getId());
- LogRecordUtils.insertFollowerNotice(memberEntity.getId(), NoticeConstant.CLOSE_ORDER_TITLE, StrUtil.format(NoticeConstant.CLOSE_ORDER_CONTENT, contractOrderEntity.getSymbol(), contractOrderEntity.getClosingPrice(), profitOrLoss.setScale(8, BigDecimal.ROUND_DOWN), traderInfoEntity.getNickname()));
+ LogRecordUtils.insertFollowerNotice(memberEntity.getId(), NoticeConstant.CLOSE_ORDER_TITLE, StrUtil.format(NoticeConstant.CLOSE_ORDER_CONTENT, contractOrderEntity.getSymbol(), contractOrderEntity.getClosingPrice(), profitOrLoss.setScale(8, BigDecimal.ROUND_DOWN).toString(), traderInfoEntity.getNickname()));
}
}
}
diff --git a/src/main/java/com/xcong/excoin/modules/documentary/controller/DocumentaryController.java b/src/main/java/com/xcong/excoin/modules/documentary/controller/DocumentaryController.java
index 2d734e4..0530fea 100644
--- a/src/main/java/com/xcong/excoin/modules/documentary/controller/DocumentaryController.java
+++ b/src/main/java/com/xcong/excoin/modules/documentary/controller/DocumentaryController.java
@@ -16,6 +16,7 @@
import com.xcong.excoin.modules.documentary.dto.DocumentaryOrderSetDto;
import com.xcong.excoin.modules.documentary.dto.FollowFollowerNoticeDto;
import com.xcong.excoin.modules.documentary.dto.FollowRecordsDto;
+import com.xcong.excoin.modules.documentary.dto.FollowTraderProfitInfoDto;
import com.xcong.excoin.modules.documentary.dto.HistoryOrderRecordsDto;
import com.xcong.excoin.modules.documentary.dto.MyFollowOrderDto;
import com.xcong.excoin.modules.documentary.dto.MyFollowTraderInfoDto;
@@ -23,6 +24,7 @@
import com.xcong.excoin.modules.documentary.service.DocumentaryService;
import com.xcong.excoin.modules.documentary.vo.DocumentaryOrderInfoVo;
import com.xcong.excoin.modules.documentary.vo.DocumentaryOrderSetInfoVo;
+import com.xcong.excoin.modules.documentary.vo.DocumentaryOrderSetStateVo;
import com.xcong.excoin.modules.documentary.vo.FollowFollowerNoticeVo;
import com.xcong.excoin.modules.documentary.vo.FollowInfoVo;
import com.xcong.excoin.modules.documentary.vo.FollowRecordsVo;
@@ -76,7 +78,7 @@
@ApiOperation(value="交易员列表", notes="交易员列表")
@ApiResponses({@ApiResponse( code = 200, message = "success", response = FollowTraderProfitInfoVo.class)})
@PostMapping(value = "/getFollowTraderProfitInfo")
- public Result getFollowTraderProfitInfo(@RequestBody @Valid RecordsPageDto recordsPageDto) {
+ public Result getFollowTraderProfitInfo(@RequestBody @Valid FollowTraderProfitInfoDto recordsPageDto) {
return documentaryService.getFollowTraderProfitInfo(recordsPageDto);
}
@@ -165,6 +167,19 @@
}
/**
+ * 跟单---跟单设置--是否已跟单
+ */
+ @ApiOperation(value="跟单---跟单设置--是否已跟单", notes="跟单---跟单设置--是否已跟单")
+ @ApiResponses({@ApiResponse( code = 200, message = "success", response = DocumentaryOrderSetStateVo.class)})
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "tradeId", value = "交易员ID", required = true, dataType = "String", paramType="query")
+ })
+ @GetMapping(value = "/getDocumentaryOrderSetState")
+ public Result getDocumentaryOrderSetState(String tradeId) {
+ return documentaryService.getDocumentaryOrderSetState(tradeId);
+ }
+
+ /**
* 跟单---跟单设置--新增跟单
*/
@ApiOperation(value="跟单---跟单设置--新增跟单", notes="跟单---跟单设置--新增跟单")
diff --git a/src/main/java/com/xcong/excoin/modules/documentary/controller/TraderController.java b/src/main/java/com/xcong/excoin/modules/documentary/controller/TraderController.java
index ae140b0..1e7c417 100644
--- a/src/main/java/com/xcong/excoin/modules/documentary/controller/TraderController.java
+++ b/src/main/java/com/xcong/excoin/modules/documentary/controller/TraderController.java
@@ -10,11 +10,13 @@
import org.springframework.web.bind.annotation.RestController;
import com.xcong.excoin.common.response.Result;
+import com.xcong.excoin.modules.documentary.dto.BeTraderDto;
import com.xcong.excoin.modules.documentary.dto.OutFollowInfoDto;
import com.xcong.excoin.modules.documentary.dto.TradeFollowInfoDto;
import com.xcong.excoin.modules.documentary.dto.TradeOrderInfoDto;
import com.xcong.excoin.modules.documentary.dto.UpdateTradeSetInfoDto;
import com.xcong.excoin.modules.documentary.service.DocumentaryService;
+import com.xcong.excoin.modules.documentary.vo.BeTraderConditionVo;
import com.xcong.excoin.modules.documentary.vo.TradeFollowInfoVo;
import com.xcong.excoin.modules.documentary.vo.TradeHistoryOrderInfoVo;
import com.xcong.excoin.modules.documentary.vo.TradeOrderInfoVo;
@@ -39,6 +41,16 @@
@Resource
DocumentaryService documentaryService;
+
+ /**
+ * 成为交易员---条件查询
+ */
+ @ApiOperation(value="成为交易员---条件查询", notes="成为交易员---条件查询")
+ @ApiResponses({@ApiResponse( code = 200, message = "success", response = BeTraderConditionVo.class)})
+ @GetMapping(value = "/beTraderStatusCondition")
+ public Result beTraderCondition() {
+ return documentaryService.beTraderCondition();
+ }
/**
* 成为交易员---状态查询
@@ -103,9 +115,9 @@
* 成为交易员---立即入驻
*/
@ApiOperation(value="成为交易员---立即入驻", notes="成为交易员---立即入驻")
- @GetMapping(value = "/beTrader")
- public Result beTrader() {
- return documentaryService.beTrader();
+ @PostMapping(value = "/beTrader")
+ public Result beTrader(@RequestBody @Valid BeTraderDto beTraderDto) {
+ return documentaryService.beTrader(beTraderDto);
}
/**
diff --git a/src/main/java/com/xcong/excoin/modules/documentary/dao/FollowFollowerSettingDao.java b/src/main/java/com/xcong/excoin/modules/documentary/dao/FollowFollowerSettingDao.java
index ffb1b68..48f8626 100644
--- a/src/main/java/com/xcong/excoin/modules/documentary/dao/FollowFollowerSettingDao.java
+++ b/src/main/java/com/xcong/excoin/modules/documentary/dao/FollowFollowerSettingDao.java
@@ -17,4 +17,6 @@
FollowFollowerSettingEntity selectOneBymemberIdAndTradeId(@Param("memberId")Long memberId, @Param("traderId")Long traderId);
List<FollowFollowerSettingEntity> selectAllFollowerSettingByTradeMemberId(@Param("memberId") Long memberId);
+
+ List<FollowFollowerSettingEntity> selectDocumentaryOrderSetInfosBymemberId(@Param("memberId")Long memberId);
}
diff --git a/src/main/java/com/xcong/excoin/modules/documentary/dao/FollowTraderInfoDao.java b/src/main/java/com/xcong/excoin/modules/documentary/dao/FollowTraderInfoDao.java
index d49b8a5..291b7c6 100644
--- a/src/main/java/com/xcong/excoin/modules/documentary/dao/FollowTraderInfoDao.java
+++ b/src/main/java/com/xcong/excoin/modules/documentary/dao/FollowTraderInfoDao.java
@@ -2,6 +2,8 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xcong.excoin.modules.documentary.entity.FollowTraderInfoEntity;
+import com.xcong.excoin.modules.documentary.vo.BeTraderConditionVo;
+
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -15,4 +17,6 @@
FollowTraderInfoEntity selectTraderInfoByOrderId(@Param("orderId") Long orderId);
List<FollowTraderInfoEntity> selectAllTraderInfo();
+
+ List<BeTraderConditionVo> selectBeTraderCondition(@Param("type")String type);
}
diff --git a/src/main/java/com/xcong/excoin/modules/documentary/dto/BeTraderDto.java b/src/main/java/com/xcong/excoin/modules/documentary/dto/BeTraderDto.java
new file mode 100644
index 0000000..2b5e1b7
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/documentary/dto/BeTraderDto.java
@@ -0,0 +1,26 @@
+package com.xcong.excoin.modules.documentary.dto;
+
+import javax.validation.constraints.NotNull;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "BeTraderDto", description = "参数接受类")
+public class BeTraderDto {
+
+ @ApiModelProperty("头像")
+ private String avatar;
+
+ @NotNull(message = "名称不能为空")
+ @ApiModelProperty("名称")
+ private String nickname;
+
+ @ApiModelProperty("宣言")
+ private String declaration;
+
+ @NotNull(message = "标签不能为空")
+ @ApiModelProperty("标签")
+ private String labels;
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/documentary/dto/FollowTraderProfitInfoDto.java b/src/main/java/com/xcong/excoin/modules/documentary/dto/FollowTraderProfitInfoDto.java
new file mode 100644
index 0000000..4790c50
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/documentary/dto/FollowTraderProfitInfoDto.java
@@ -0,0 +1,25 @@
+package com.xcong.excoin.modules.documentary.dto;
+
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "FollowTraderProfitInfoDto", description = "参数接受类")
+public class FollowTraderProfitInfoDto {
+ @NotNull
+ @Min(1)
+ @ApiModelProperty(value = "第几页", example = "1")
+ private int pageNum;
+
+ @NotNull
+ @ApiModelProperty(value = "每页数量", example = "10")
+ private int pageSize;
+
+ @ApiModelProperty(value = "1:首页", example = "1")
+ private int type;
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/documentary/entity/FollowTraderInfoEntity.java b/src/main/java/com/xcong/excoin/modules/documentary/entity/FollowTraderInfoEntity.java
index 28f4d6f..6db2e7a 100644
--- a/src/main/java/com/xcong/excoin/modules/documentary/entity/FollowTraderInfoEntity.java
+++ b/src/main/java/com/xcong/excoin/modules/documentary/entity/FollowTraderInfoEntity.java
@@ -21,6 +21,8 @@
private static final long serialVersionUID = 1L;
public static final String DECLARATION_DEFAULT = "正忙着赚钱,什么也没写";
+
+ public static final Integer FOLLOWNUM_DEFAULT = 500;
/**
* 会员ID
*/
@@ -33,6 +35,12 @@
* 名称
*/
private String nickname;
+ /**
+ * 名称是否已修改
+ */
+ private Integer nicknameState;
+ public static final Integer STATE_Y = 1;
+ public static final Integer STATE_N = 0;
/**
* 宣言
*/
@@ -47,6 +55,12 @@
private Integer isAll;
public static final Integer IS_ALL_Y = 1;
public static final Integer IS_ALL_N = 2;
+
+ /**
+ * 设置成首页
+ */
+ private Integer isSetFrist;
+ public static final Integer IS_SETFRIST_Y = 1;
/**
* 利润
*/
@@ -64,6 +78,10 @@
private Integer isOpen;
public static final Integer ISOPEN_Y = 1;
public static final Integer ISOPEN_N = 2;
+ /**
+ * 最大跟随人数
+ */
+ private Integer followNum;
}
diff --git a/src/main/java/com/xcong/excoin/modules/documentary/entity/FollowTraderProfitInfoEntity.java b/src/main/java/com/xcong/excoin/modules/documentary/entity/FollowTraderProfitInfoEntity.java
index d819f7f..cadb89c 100644
--- a/src/main/java/com/xcong/excoin/modules/documentary/entity/FollowTraderProfitInfoEntity.java
+++ b/src/main/java/com/xcong/excoin/modules/documentary/entity/FollowTraderProfitInfoEntity.java
@@ -2,6 +2,7 @@
import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xcong.excoin.common.system.base.BaseEntity;
@@ -53,5 +54,8 @@
*/
private int totalOrderCnt;
+ @TableField(exist = false)
+ private int type;
+
}
diff --git a/src/main/java/com/xcong/excoin/modules/documentary/service/DocumentaryService.java b/src/main/java/com/xcong/excoin/modules/documentary/service/DocumentaryService.java
index f29bdcf..86015d8 100644
--- a/src/main/java/com/xcong/excoin/modules/documentary/service/DocumentaryService.java
+++ b/src/main/java/com/xcong/excoin/modules/documentary/service/DocumentaryService.java
@@ -2,13 +2,17 @@
import javax.validation.Valid;
+import org.springframework.web.bind.annotation.RequestBody;
+
import com.baomidou.mybatisplus.extension.service.IService;
import com.xcong.excoin.common.response.Result;
import com.xcong.excoin.modules.coin.parameter.dto.RecordsPageDto;
+import com.xcong.excoin.modules.documentary.dto.BeTraderDto;
import com.xcong.excoin.modules.documentary.dto.CancelDocumentaryOrderSetDto;
import com.xcong.excoin.modules.documentary.dto.DocumentaryOrderSetDto;
import com.xcong.excoin.modules.documentary.dto.FollowFollowerNoticeDto;
import com.xcong.excoin.modules.documentary.dto.FollowRecordsDto;
+import com.xcong.excoin.modules.documentary.dto.FollowTraderProfitInfoDto;
import com.xcong.excoin.modules.documentary.dto.HistoryOrderRecordsDto;
import com.xcong.excoin.modules.documentary.dto.MyFollowOrderDto;
import com.xcong.excoin.modules.documentary.dto.MyFollowTraderInfoDto;
@@ -23,7 +27,7 @@
public Result getMemberIsTradeInfo();
- public Result getFollowTraderProfitInfo(@Valid RecordsPageDto recordsPageDto);
+ public Result getFollowTraderProfitInfo(@Valid FollowTraderProfitInfoDto recordsPageDto);
public Result getHistoryOrderRecords(@Valid HistoryOrderRecordsDto historyOrderRecordsDto);
@@ -49,7 +53,7 @@
public Result getFollowTraderProfit(long traderId);
- public Result beTrader();
+ public Result beTrader(@Valid BeTraderDto beTraderDto);
public Result beTraderStatus();
@@ -71,5 +75,9 @@
public Result getTradeSetLabelInfo();
+ public Result beTraderCondition();
+
+ public Result getDocumentaryOrderSetState(String tradeId);
+
}
diff --git a/src/main/java/com/xcong/excoin/modules/documentary/service/impl/DocumentaryServiceImpl.java b/src/main/java/com/xcong/excoin/modules/documentary/service/impl/DocumentaryServiceImpl.java
index de44524..2986740 100644
--- a/src/main/java/com/xcong/excoin/modules/documentary/service/impl/DocumentaryServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/documentary/service/impl/DocumentaryServiceImpl.java
@@ -11,9 +11,12 @@
import javax.validation.Valid;
import com.xcong.excoin.modules.documentary.common.NoticeConstant;
+import com.xcong.excoin.modules.member.entity.MemberSettingEntity;
+import com.xcong.excoin.modules.member.parameter.vo.MemberMessageReminderVo;
import com.xcong.excoin.utils.*;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.RequestBody;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
@@ -37,10 +40,12 @@
import com.xcong.excoin.modules.documentary.dao.FollowTraderLabelDao;
import com.xcong.excoin.modules.documentary.dao.FollowTraderProfitDetailDao;
import com.xcong.excoin.modules.documentary.dao.FollowTraderProfitInfoDao;
+import com.xcong.excoin.modules.documentary.dto.BeTraderDto;
import com.xcong.excoin.modules.documentary.dto.CancelDocumentaryOrderSetDto;
import com.xcong.excoin.modules.documentary.dto.DocumentaryOrderSetDto;
import com.xcong.excoin.modules.documentary.dto.FollowFollowerNoticeDto;
import com.xcong.excoin.modules.documentary.dto.FollowRecordsDto;
+import com.xcong.excoin.modules.documentary.dto.FollowTraderProfitInfoDto;
import com.xcong.excoin.modules.documentary.dto.HistoryOrderRecordsDto;
import com.xcong.excoin.modules.documentary.dto.MyFollowOrderDto;
import com.xcong.excoin.modules.documentary.dto.MyFollowTraderInfoDto;
@@ -57,8 +62,10 @@
import com.xcong.excoin.modules.documentary.entity.FollowTraderLabelEntity;
import com.xcong.excoin.modules.documentary.entity.FollowTraderProfitInfoEntity;
import com.xcong.excoin.modules.documentary.service.DocumentaryService;
+import com.xcong.excoin.modules.documentary.vo.BeTraderConditionVo;
import com.xcong.excoin.modules.documentary.vo.DocumentaryOrderInfoVo;
import com.xcong.excoin.modules.documentary.vo.DocumentaryOrderSetInfoVo;
+import com.xcong.excoin.modules.documentary.vo.DocumentaryOrderSetStateVo;
import com.xcong.excoin.modules.documentary.vo.FollowFollowerNoticeVo;
import com.xcong.excoin.modules.documentary.vo.FollowInfoVo;
import com.xcong.excoin.modules.documentary.vo.FollowRecordsVo;
@@ -76,6 +83,7 @@
import com.xcong.excoin.modules.documentary.vo.TraderStatusVo;
import com.xcong.excoin.modules.member.dao.MemberDao;
import com.xcong.excoin.modules.member.dao.MemberLevelRateDao;
+import com.xcong.excoin.modules.member.dao.MemberSettingDao;
import com.xcong.excoin.modules.member.dao.MemberWalletContractDao;
import com.xcong.excoin.modules.member.entity.MemberEntity;
import com.xcong.excoin.modules.member.entity.MemberLevelRateEntity;
@@ -124,6 +132,8 @@
private FollowFollowerNoticeDao followFollowerNoticeDao;
@Resource
private FollowTraderLabelDao followTraderLabelDao;
+ @Resource
+ private MemberSettingDao memberSettingDao;
@Override
@@ -143,10 +153,14 @@
}
@Override
- public Result getFollowTraderProfitInfo(@Valid RecordsPageDto recordsPageDto) {
-
+ public Result getFollowTraderProfitInfo(@Valid FollowTraderProfitInfoDto recordsPageDto) {
+
+ int type = recordsPageDto.getType();
Page<FollowTraderProfitInfoVo> page = new Page<>(recordsPageDto.getPageNum(), recordsPageDto.getPageSize());
FollowTraderProfitInfoEntity followTraderProfitInfoEntity = new FollowTraderProfitInfoEntity();
+ if(FollowTraderInfoEntity.IS_SETFRIST_Y.equals(type)) {
+ followTraderProfitInfoEntity.setType(type);
+ }
IPage<FollowTraderProfitInfoVo> followTraderProfitInfoList = followTraderProfitInfoDao.selectFollowTraderProfitInfoEntity(page, followTraderProfitInfoEntity);
List<FollowTraderProfitInfoVo> followTraderProfitInfoVoList = followTraderProfitInfoList.getRecords();
@@ -221,7 +235,8 @@
historyOrderRecordsVo.setClosingPrice(closingPrice);
BigDecimal openingPrice = historyOrderRecordsVo.getOpeningPrice().setScale(2, BigDecimal.ROUND_DOWN);
historyOrderRecordsVo.setOpeningPrice(openingPrice);
- }
+ historyOrderRecordsVo.setClosingTimeStamp(historyOrderRecordsVo.getClosingTime().getTime());
+ }
}
return Result.ok(historyOrderRecordsVoList);
}
@@ -273,7 +288,43 @@
}else {
followInfoVo.setNickname(phone);
}
-
+
+ List<ContractHoldOrderEntity> myFollowOrder = followFollowerProfitDao.getFollowOrderNowRecords(memberId);
+
+ BigDecimal totalBondAmount = BigDecimal.ZERO;
+ BigDecimal profitOrLess = BigDecimal.ZERO;
+ if (CollUtil.isNotEmpty(myFollowOrder)) {
+ for(ContractHoldOrderEntity contractHoldOrderEntity : myFollowOrder) {
+ BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(contractHoldOrderEntity.getSymbol())));
+ BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(contractHoldOrderEntity.getSymbol());
+
+ // 盈亏
+ BigDecimal rewardRatio = BigDecimal.ZERO;
+ // 开多
+ if (contractHoldOrderEntity.OPENING_TYPE_MORE == contractHoldOrderEntity.getOpeningType()) {
+ // (最新价-开仓价)*规格*张数
+ rewardRatio = newPrice.subtract(contractHoldOrderEntity.getOpeningPrice()).multiply(lotNumber).multiply(new BigDecimal(contractHoldOrderEntity.getSymbolCnt()));
+ // 开空
+ } else {
+ // (开仓价-最新价)*规格*张数
+ rewardRatio = contractHoldOrderEntity.getOpeningPrice().subtract(newPrice).multiply(lotNumber).multiply(new BigDecimal(contractHoldOrderEntity.getSymbolCnt()));
+ }
+
+ if (member.getIsProfit() == MemberEntity.IS_PROFIT_Y) {
+ PlatformTradeSettingEntity tradeSettingEntity = cacheSettingUtils.getTradeSetting();
+ if (rewardRatio.compareTo(BigDecimal.ZERO) > -1) {
+ rewardRatio = rewardRatio.multiply(BigDecimal.ONE.subtract(tradeSettingEntity.getProfitParam()));
+ }
+ }
+
+ profitOrLess = profitOrLess.add(rewardRatio).setScale(2, BigDecimal.ROUND_DOWN);
+ totalBondAmount = totalBondAmount.add(contractHoldOrderEntity.getBondAmount()).setScale(2, BigDecimal.ROUND_DOWN);
+ }
+ }
+
+ followInfoVo.setTotalAmount(totalBondAmount);
+ followInfoVo.setTotalProfitOrLess(profitOrLess);
+
BigDecimal totalPrincipals = BigDecimal.ZERO;
BigDecimal totalProfits = BigDecimal.ZERO;
Map<String, Object> columnMap = new HashMap<>();
@@ -308,38 +359,41 @@
MyFollowOrderVo myFollowOrderVo = new MyFollowOrderVo();
//获取交易员信息
Long orderId = contractOrderEntity.getId();
- myFollowOrderVo.setOrderId(orderId);
FollowFollowerOrderRelationEntity FollowFollowerOrderRelation = followFollowerOrderRelationDao.selectHistoryOneByorderId(orderId);
- Long tradeId = FollowFollowerOrderRelation.getTradeId();
- FollowTraderInfoEntity followTraderInfoEntity = followTraderInfoDao.selectById(tradeId);
- String nickname = followTraderInfoEntity.getNickname();
- myFollowOrderVo.setNickname(nickname);
-
- String symbol = contractOrderEntity.getSymbol();
- myFollowOrderVo.setSymbol(symbol);
- int orderType = contractOrderEntity.getOrderType();
- myFollowOrderVo.setOrderType(orderType);
- int leverRatio = contractOrderEntity.getLeverRatio();
- myFollowOrderVo.setLeverRatio(leverRatio);
- BigDecimal rewardAmount = contractOrderEntity.getRewardAmount().setScale(2, BigDecimal.ROUND_DOWN);
- myFollowOrderVo.setRewardAmount(rewardAmount);
- BigDecimal rewardRatio = contractOrderEntity.getRewardRatio().setScale(4, BigDecimal.ROUND_DOWN);
- myFollowOrderVo.setRewardRatio(rewardRatio);
- int symbolCnt = contractOrderEntity.getSymbolCnt();
- myFollowOrderVo.setSymbolCnt(symbolCnt);
- BigDecimal bondAmount = contractOrderEntity.getBondAmount().setScale(2, BigDecimal.ROUND_DOWN);
- myFollowOrderVo.setBondAmount(bondAmount);
- BigDecimal openingPrice = contractOrderEntity.getOpeningPrice().setScale(2, BigDecimal.ROUND_DOWN);
- myFollowOrderVo.setOpeningPrice(openingPrice);
- BigDecimal closingPrice = contractOrderEntity.getClosingPrice().setScale(2, BigDecimal.ROUND_DOWN);
- myFollowOrderVo.setClosingPrice(closingPrice);
- Date openingTime = contractOrderEntity.getOpeningTime();
- myFollowOrderVo.setOpeningTime(openingTime);
- Date closingTime = contractOrderEntity.getClosingTime();
- myFollowOrderVo.setClosingTime(closingTime);
- String orderNo = contractOrderEntity.getOrderNo();
- myFollowOrderVo.setOrderNo(orderNo);
- myFollowOrderVos.add(myFollowOrderVo);
+ if(ObjectUtil.isNotEmpty(FollowFollowerOrderRelation)) {
+ myFollowOrderVo.setOrderId(orderId);
+ Long tradeId = FollowFollowerOrderRelation.getTradeId();
+ FollowTraderInfoEntity followTraderInfoEntity = followTraderInfoDao.selectById(tradeId);
+ if(ObjectUtil.isNotEmpty(followTraderInfoEntity)) {
+ String nickname = followTraderInfoEntity.getNickname();
+ myFollowOrderVo.setNickname(nickname);
+ }
+ String symbol = contractOrderEntity.getSymbol();
+ myFollowOrderVo.setSymbol(symbol);
+ int orderType = contractOrderEntity.getOrderType();
+ myFollowOrderVo.setOrderType(orderType);
+ int leverRatio = contractOrderEntity.getLeverRatio();
+ myFollowOrderVo.setLeverRatio(leverRatio);
+ BigDecimal rewardAmount = contractOrderEntity.getRewardAmount().setScale(2, BigDecimal.ROUND_DOWN);
+ myFollowOrderVo.setRewardAmount(rewardAmount);
+ BigDecimal rewardRatio = contractOrderEntity.getRewardRatio().setScale(4, BigDecimal.ROUND_DOWN);
+ myFollowOrderVo.setRewardRatio(rewardRatio);
+ int symbolCnt = contractOrderEntity.getSymbolCnt();
+ myFollowOrderVo.setSymbolCnt(symbolCnt);
+ BigDecimal bondAmount = contractOrderEntity.getBondAmount().setScale(2, BigDecimal.ROUND_DOWN);
+ myFollowOrderVo.setBondAmount(bondAmount);
+ BigDecimal openingPrice = contractOrderEntity.getOpeningPrice().setScale(2, BigDecimal.ROUND_DOWN);
+ myFollowOrderVo.setOpeningPrice(openingPrice);
+ BigDecimal closingPrice = contractOrderEntity.getClosingPrice().setScale(2, BigDecimal.ROUND_DOWN);
+ myFollowOrderVo.setClosingPrice(closingPrice);
+ Date openingTime = contractOrderEntity.getOpeningTime();
+ myFollowOrderVo.setOpeningTime(openingTime);
+ Date closingTime = contractOrderEntity.getClosingTime();
+ myFollowOrderVo.setClosingTime(closingTime);
+ String orderNo = contractOrderEntity.getOrderNo();
+ myFollowOrderVo.setOrderNo(orderNo);
+ myFollowOrderVos.add(myFollowOrderVo);
+ }
}
}
return Result.ok(myFollowOrderVos);
@@ -579,8 +633,23 @@
public Result getDocumentaryOrderSetInfo(String tradeId) {
//获取用户ID
Long memberId = LoginUserUtils.getAppLoginUser().getId();
+ log.info("跟单---点击跟单或者编辑---"+memberId+"参数"+tradeId);
DocumentaryOrderSetInfoVo documentaryOrderSetInfoVo = new DocumentaryOrderSetInfoVo();
long parseLong = Long.parseLong(tradeId);
+
+ //只能跟随一个人
+// Map<String, Object> columnMaps = new HashMap<>();
+// columnMaps.put("member_id", memberId);
+// List<FollowFollowerSettingEntity> followFollowerSettingEntityAllows = followFollowerSettingDao.selectByMap(columnMaps);
+// if(CollUtil.isNotEmpty(followFollowerSettingEntityAllows)) {
+// for(FollowFollowerSettingEntity followFollowerSettingEntityAllow : followFollowerSettingEntityAllows) {
+// Long tradeIdAllow = followFollowerSettingEntityAllow.getTraderId();
+// if(parseLong != tradeIdAllow) {
+// return Result.fail(MessageSourceUtils.getString("documentary_service_0015"));
+// }
+// }
+// }
+
//获取【跟随者设置】数据
FollowFollowerSettingEntity followFollowerSettingEntity = followFollowerSettingDao.selectOneBymemberIdAndTradeId(memberId,parseLong);
@@ -607,8 +676,12 @@
documentaryOrderSetInfoVo.setFollowCnt(followCnt);
Integer maxFollowCnt = followFollowerSettingEntity.getMaxFollowCnt();
- documentaryOrderSetInfoVo.setMaxFollowCnt(maxFollowCnt);
-
+ if(maxFollowCnt > 0){
+ documentaryOrderSetInfoVo.setMaxFollowCnt(maxFollowCnt.toString());
+ }else {
+ documentaryOrderSetInfoVo.setMaxFollowCnt("");
+ }
+ log.info(memberId + "-最大持仓张数-"+maxFollowCnt.toString());
return Result.ok(documentaryOrderSetInfoVo);
}
@@ -676,6 +749,18 @@
String nickname = followTraderInfoEntity.getNickname();
String declaration = followTraderInfoEntity.getDeclaration();
Integer isAll = followTraderInfoEntity.getIsAll();
+ Integer followNum = followTraderInfoEntity.getFollowNum();
+ //获取当前跟单人数
+ Map<String, Object> columnMap = new HashMap<>();
+ columnMap.put("trade_id", traderId);
+ columnMap.put("is_follow", FollowFollowerProfitEntity.IS_FOLLOW_Y);
+ List<FollowFollowerProfitEntity> selectByMap = followFollowerProfitDao.selectByMap(columnMap);
+ if(CollUtil.isNotEmpty(selectByMap)) {
+ followTraderProfitInfoVo.setFollowNumNow(selectByMap.size());
+ }else {
+ followTraderProfitInfoVo.setFollowNumNow(0);
+ }
+ followTraderProfitInfoVo.setFollowNum(followNum);
followTraderProfitInfoVo.setAvatar(avatar);
followTraderProfitInfoVo.setNickname(nickname);
followTraderProfitInfoVo.setDeclaration(declaration);
@@ -685,7 +770,15 @@
@Override
@Transactional
- public Result beTrader() {
+ public Result beTrader(@Valid BeTraderDto beTraderDto) {
+ //头像
+ String avatar = beTraderDto.getAvatar();
+ //昵称
+ String nickname = beTraderDto.getNickname();
+ //宣言
+ String declaration = beTraderDto.getDeclaration();
+ //标签
+ String labels = beTraderDto.getLabels();
//获取用户ID
Long memberId = LoginUserUtils.getAppLoginUser().getId();
MemberEntity memberEntity = memberDao.selectById(memberId);
@@ -723,14 +816,25 @@
followTraderInfoEntity.setMemberId(memberId);
followTraderInfoEntity.setProfitRatio(BigDecimal.valueOf(0.1));
// followTraderInfoEntity.setAvatar(FollowTraderInfoEntity.AVATAR_DEFAULT);
- String phone = memberEntity.getPhone();
- String email = memberEntity.getEmail();
- if(StrUtil.isNotEmpty(phone)) {
- followTraderInfoEntity.setNickname(phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"));
- }else {
- followTraderInfoEntity.setNickname(email.replaceAll("(\\w?)(\\w+)(\\w)(@\\w+\\.[a-z]+(\\.[a-z]+)?)","$1****$3$4"));
+// String phone = memberEntity.getPhone();
+// String email = memberEntity.getEmail();
+// if(StrUtil.isNotEmpty(phone)) {
+// followTraderInfoEntity.setNickname(phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"));
+// }else {
+// followTraderInfoEntity.setNickname(email.replaceAll("(\\w?)(\\w+)(\\w)(@\\w+\\.[a-z]+(\\.[a-z]+)?)","$1****$3$4"));
+// }
+ if(StrUtil.isNotEmpty(avatar)) {
+ followTraderInfoEntity.setAvatar(avatar);
}
- followTraderInfoEntity.setDeclaration(FollowTraderInfoEntity.DECLARATION_DEFAULT);
+ followTraderInfoEntity.setNickname(nickname);
+ followTraderInfoEntity.setNicknameState(FollowTraderInfoEntity.STATE_Y);
+ if(StrUtil.isEmpty(declaration)) {
+ followTraderInfoEntity.setDeclaration(FollowTraderInfoEntity.DECLARATION_DEFAULT);
+ }else {
+ followTraderInfoEntity.setDeclaration(declaration);
+ }
+ followTraderInfoEntity.setLabels(labels);
+ followTraderInfoEntity.setFollowNum(FollowTraderInfoEntity.FOLLOWNUM_DEFAULT);
followTraderInfoEntity.setIsAll(FollowTraderInfoEntity.IS_ALL_N);
followTraderInfoEntity.setProfitRatio(BigDecimal.ZERO);
followTraderInfoEntity.setVerifyStatus(FollowTraderInfoEntity.VERIFYSTATUS_ING);
@@ -776,6 +880,8 @@
tradeSetInfoVo.setAvatar(avatar);
String nickname = followTraderInfoEntity.getNickname();
tradeSetInfoVo.setNickname(nickname);
+ Integer nicknameState = followTraderInfoEntity.getNicknameState();
+ tradeSetInfoVo.setNicknameState(nicknameState);
String declaration = followTraderInfoEntity.getDeclaration();
tradeSetInfoVo.setDeclaration(declaration);
Integer isOpen = followTraderInfoEntity.getIsOpen();
@@ -810,6 +916,14 @@
String declaration = updateTradeSetInfoDto.getDeclaration();
int isOpen = updateTradeSetInfoDto.getIsOpen();
String labels = updateTradeSetInfoDto.getLabels();
+ Integer nicknameState = followTraderInfoEntity.getNicknameState();
+ if(FollowTraderInfoEntity.STATE_Y == nicknameState && !nickname.equals(followTraderInfoEntity.getNickname())) {
+ return Result.ok(MessageSourceUtils.getString("member_service_0099"));
+ }
+ if(!nickname.equals(followTraderInfoEntity.getNickname())) {
+ followTraderInfoEntity.setNickname(nickname);
+ followTraderInfoEntity.setNicknameState(FollowTraderInfoEntity.STATE_Y);
+ }
followTraderInfoEntity.setLabels(labels);
followTraderInfoEntity.setAvatar(avatar);
followTraderInfoEntity.setNickname(nickname);
@@ -870,58 +984,59 @@
TradeOrderInfoVo myFollowOrderVo = new TradeOrderInfoVo();
//获取交易员信息
Long orderId = contractHoldOrderEntity.getId();
- myFollowOrderVo.setOrderId(orderId);
FollowTraderInfoEntity followTraderInfoEntity = followTraderInfoDao.selectTraderInfoByMemberId(memberId);
- String nickname = followTraderInfoEntity.getNickname();
- myFollowOrderVo.setNickname(nickname);
-
- String symbol = contractHoldOrderEntity.getSymbol();
- myFollowOrderVo.setSymbol(symbol);
- int orderType = contractHoldOrderEntity.getOpeningType();
- myFollowOrderVo.setOrderType(orderType);
- int leverRatio = contractHoldOrderEntity.getLeverRatio();
- myFollowOrderVo.setLeverRatio(leverRatio);
- int symbolCnt = contractHoldOrderEntity.getSymbolCnt();
- myFollowOrderVo.setSymbolCnt(symbolCnt);
- BigDecimal bondAmount = contractHoldOrderEntity.getBondAmount().setScale(2, BigDecimal.ROUND_DOWN);
- myFollowOrderVo.setBondAmount(bondAmount);
- BigDecimal openingPrice = contractHoldOrderEntity.getOpeningPrice().setScale(2, BigDecimal.ROUND_DOWN);
- myFollowOrderVo.setOpeningPrice(openingPrice);
- String orderNo = contractHoldOrderEntity.getOrderNo();
- myFollowOrderVo.setOrderNo(orderNo);
- Date openingTime = contractHoldOrderEntity.getCreateTime();
- myFollowOrderVo.setOpeningTime(openingTime);
-
- // 获取最新价
- BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(contractHoldOrderEntity.getSymbol())));
- myFollowOrderVo.setNewPrice(newPrice);
-
- BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(contractHoldOrderEntity.getSymbol());
- // 盈亏
- BigDecimal rewardRatio = BigDecimal.ZERO;
- // 开多
- if (contractHoldOrderEntity.OPENING_TYPE_MORE == contractHoldOrderEntity.getOpeningType()) {
- // (最新价-开仓价)*规格*张数
- rewardRatio = newPrice.subtract(contractHoldOrderEntity.getOpeningPrice()).multiply(lotNumber).multiply(new BigDecimal(contractHoldOrderEntity.getSymbolCnt()));
- // 开空
- } else {
- // (开仓价-最新价)*规格*张数
- rewardRatio = contractHoldOrderEntity.getOpeningPrice().subtract(newPrice).multiply(lotNumber).multiply(new BigDecimal(contractHoldOrderEntity.getSymbolCnt()));
- }
-
- if (member.getIsProfit() == MemberEntity.IS_PROFIT_Y) {
- PlatformTradeSettingEntity tradeSettingEntity = cacheSettingUtils.getTradeSetting();
- if (rewardRatio.compareTo(BigDecimal.ZERO) > -1) {
- rewardRatio = rewardRatio.multiply(BigDecimal.ONE.subtract(tradeSettingEntity.getProfitParam()));
+ if(ObjectUtil.isNotEmpty(followTraderInfoEntity)) {
+ myFollowOrderVo.setOrderId(orderId);
+ String nickname = followTraderInfoEntity.getNickname();
+ myFollowOrderVo.setNickname(nickname);
+ String symbol = contractHoldOrderEntity.getSymbol();
+ myFollowOrderVo.setSymbol(symbol);
+ int orderType = contractHoldOrderEntity.getOpeningType();
+ myFollowOrderVo.setOrderType(orderType);
+ int leverRatio = contractHoldOrderEntity.getLeverRatio();
+ myFollowOrderVo.setLeverRatio(leverRatio);
+ int symbolCnt = contractHoldOrderEntity.getSymbolCnt();
+ myFollowOrderVo.setSymbolCnt(symbolCnt);
+ BigDecimal bondAmount = contractHoldOrderEntity.getBondAmount().setScale(2, BigDecimal.ROUND_DOWN);
+ myFollowOrderVo.setBondAmount(bondAmount);
+ BigDecimal openingPrice = contractHoldOrderEntity.getOpeningPrice().setScale(2, BigDecimal.ROUND_DOWN);
+ myFollowOrderVo.setOpeningPrice(openingPrice);
+ String orderNo = contractHoldOrderEntity.getOrderNo();
+ myFollowOrderVo.setOrderNo(orderNo);
+ Date openingTime = contractHoldOrderEntity.getCreateTime();
+ myFollowOrderVo.setOpeningTime(openingTime);
+
+ // 获取最新价
+ BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(contractHoldOrderEntity.getSymbol())));
+ myFollowOrderVo.setNewPrice(newPrice);
+
+ BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(contractHoldOrderEntity.getSymbol());
+ // 盈亏
+ BigDecimal rewardRatio = BigDecimal.ZERO;
+ // 开多
+ if (contractHoldOrderEntity.OPENING_TYPE_MORE == contractHoldOrderEntity.getOpeningType()) {
+ // (最新价-开仓价)*规格*张数
+ rewardRatio = newPrice.subtract(contractHoldOrderEntity.getOpeningPrice()).multiply(lotNumber).multiply(new BigDecimal(contractHoldOrderEntity.getSymbolCnt()));
+ // 开空
+ } else {
+ // (开仓价-最新价)*规格*张数
+ rewardRatio = contractHoldOrderEntity.getOpeningPrice().subtract(newPrice).multiply(lotNumber).multiply(new BigDecimal(contractHoldOrderEntity.getSymbolCnt()));
}
+
+ if (member.getIsProfit() == MemberEntity.IS_PROFIT_Y) {
+ PlatformTradeSettingEntity tradeSettingEntity = cacheSettingUtils.getTradeSetting();
+ if (rewardRatio.compareTo(BigDecimal.ZERO) > -1) {
+ rewardRatio = rewardRatio.multiply(BigDecimal.ONE.subtract(tradeSettingEntity.getProfitParam()));
+ }
+ }
+ myFollowOrderVo.setRewardAmount(rewardRatio.setScale(2, BigDecimal.ROUND_DOWN));
+
+ // 回报率
+ BigDecimal returnRate = rewardRatio.divide(contractHoldOrderEntity.getBondAmount().subtract(contractHoldOrderEntity.getOpeningFeeAmount()), 8, BigDecimal.ROUND_DOWN);
+ myFollowOrderVo.setRewardRatio(returnRate.setScale(4, BigDecimal.ROUND_DOWN));
+
+ myFollowOrderVos.add(myFollowOrderVo);
}
- myFollowOrderVo.setRewardAmount(rewardRatio.setScale(2, BigDecimal.ROUND_DOWN));
-
- // 回报率
- BigDecimal returnRate = rewardRatio.divide(contractHoldOrderEntity.getBondAmount().subtract(contractHoldOrderEntity.getOpeningFeeAmount()), 8, BigDecimal.ROUND_DOWN);
- myFollowOrderVo.setRewardRatio(returnRate.setScale(4, BigDecimal.ROUND_DOWN));
-
- myFollowOrderVos.add(myFollowOrderVo);
}
}
@@ -1054,6 +1169,18 @@
long id = outFollowInfoDto.getId();
//获取【跟随者收益】
FollowFollowerProfitEntity followFollowerProfitEntity = followFollowerProfitDao.selectById(id);
+
+ //当前有跟单合约不允许移除
+ //获取【跟随者-订单关联表】
+ Map<String, Object> selectColumnMap = new HashMap<>();
+ selectColumnMap.put("member_id", followFollowerProfitEntity.getMemberId());
+ selectColumnMap.put("trade_member_id", memberId);
+ selectColumnMap.put("order_type", FollowFollowerOrderRelationEntity.ORDER_TYPE_HOLD);
+ List<FollowFollowerOrderRelationEntity> followFollowerOrderRelationEntitys = followFollowerOrderRelationDao.selectByMap(selectColumnMap);
+ if(CollUtil.isNotEmpty(followFollowerOrderRelationEntitys)) {
+ return Result.fail(MessageSourceUtils.getString("documentary_service_0019"));
+ }
+
followFollowerProfitEntity.setIsFollow(FollowFollowerProfitEntity.IS_FOLLOW_N);
followFollowerProfitDao.updateById(followFollowerProfitEntity);
@@ -1079,6 +1206,7 @@
}
@Override
+ @Transactional
public Result getFollowFollowerNoticeList(FollowFollowerNoticeDto followFollowerNoticeDto) {
//获取用户ID
Long memberId = LoginUserUtils.getAppLoginUser().getId();
@@ -1100,6 +1228,12 @@
followFollowerNoticeVo.setCreateTime(createTime);
arrayList.add(followFollowerNoticeVo);
}
+ }
+ MemberSettingEntity memberSettingEntity = memberSettingDao.selectMemberSettingByMemberId(memberId);
+ if(ObjectUtil.isNotEmpty(memberSettingEntity)) {
+ log.info(memberId + "的消息提醒状态变更");
+ memberSettingEntity.setMessageReminder(0);
+ memberSettingDao.updateById(memberSettingEntity);
}
return Result.ok(arrayList);
@@ -1125,6 +1259,48 @@
}
return Result.ok(arrayList);
}
+
+ @Override
+ public Result beTraderCondition() {
+ String type = "apply_trader_rule";
+ List<BeTraderConditionVo> beTraderConditionVos = followTraderInfoDao.selectBeTraderCondition(type);
+ return Result.ok(beTraderConditionVos);
+ }
+
+ @Override
+ public Result getDocumentaryOrderSetState(String tradeId) {
+ //获取用户ID
+ Long memberId = LoginUserUtils.getAppLoginUser().getId();
+ boolean orderSetState = false;
+ long parseLong = Long.parseLong(tradeId);
+ //只能跟随一个人
+ Map<String, Object> columnMaps = new HashMap<>();
+ columnMaps.put("member_id", memberId);
+ List<FollowFollowerSettingEntity> followFollowerSettingEntityAllows = followFollowerSettingDao.selectByMap(columnMaps);
+ if(CollUtil.isEmpty(followFollowerSettingEntityAllows)) {
+ orderSetState = Boolean.TRUE;
+ }else {
+ if(followFollowerSettingEntityAllows.size() == 1) {
+ Long tradeIdAllow = followFollowerSettingEntityAllows.get(0).getTraderId();
+ if(parseLong == tradeIdAllow) {
+ orderSetState = Boolean.TRUE;
+ }
+ }
+ }
+
+ DocumentaryOrderSetStateVo documentaryOrderSetStateVo = new DocumentaryOrderSetStateVo();
+// if(OrderSetState) {
+// documentaryOrderSetStateVo.setState(Boolean.TRUE);
+// }else {
+// documentaryOrderSetStateVo.setState(Boolean.FALSE);
+// }
+
+ if (orderSetState) {
+ return Result.ok("获取成功");
+ } else {
+ return Result.fail("最多跟单一人");
+ }
+ }
diff --git a/src/main/java/com/xcong/excoin/modules/documentary/service/impl/FollowOrderOperationServiceImpl.java b/src/main/java/com/xcong/excoin/modules/documentary/service/impl/FollowOrderOperationServiceImpl.java
index 7e50874..e0f411b 100644
--- a/src/main/java/com/xcong/excoin/modules/documentary/service/impl/FollowOrderOperationServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/documentary/service/impl/FollowOrderOperationServiceImpl.java
@@ -1,8 +1,11 @@
package com.xcong.excoin.modules.documentary.service.impl;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.xcong.excoin.common.enumerates.CoinTypeEnum;
import com.xcong.excoin.common.enumerates.RabbitPriceTypeEnum;
import com.xcong.excoin.common.response.Result;
@@ -26,20 +29,21 @@
import com.xcong.excoin.modules.documentary.service.FollowOrderOperationService;
import com.xcong.excoin.modules.member.dao.MemberDao;
import com.xcong.excoin.modules.member.dao.MemberLevelRateDao;
+import com.xcong.excoin.modules.member.dao.MemberSettingDao;
import com.xcong.excoin.modules.member.dao.MemberWalletContractDao;
-import com.xcong.excoin.modules.member.entity.AgentReturnEntity;
-import com.xcong.excoin.modules.member.entity.MemberEntity;
-import com.xcong.excoin.modules.member.entity.MemberLevelRateEntity;
-import com.xcong.excoin.modules.member.entity.MemberWalletContractEntity;
+import com.xcong.excoin.modules.member.entity.*;
import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity;
import com.xcong.excoin.rabbit.pricequeue.OrderModel;
+import com.xcong.excoin.rabbit.producer.FollowProducer;
import com.xcong.excoin.rabbit.producer.OrderProducer;
import com.xcong.excoin.utils.CacheSettingUtils;
import com.xcong.excoin.utils.CalculateUtil;
import com.xcong.excoin.utils.LogRecordUtils;
import com.xcong.excoin.utils.ThreadPoolUtils;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
@@ -79,15 +83,33 @@
private RabbitOrderService rabbitOrderService;
@Resource
private MemberLevelRateDao memberLevelRateDao;
+ @Resource
+ private MemberSettingDao memberSettingDao;
+
+ @Autowired
+ private FollowProducer followProducer;
@Override
+ @Transactional(rollbackFor = Exception.class)
public void addFollowerOrder(Long id) {
- log.info("进入跟单处理逻辑");
+ log.info("进入跟单处理逻辑 : {}", id);
// 查询交易员订单
ContractHoldOrderEntity holdOrderEntity = contractHoldOrderDao.selectById(id);
+ if (holdOrderEntity == null) {
+ try {
+ log.info("等待事务提交:{}", id);
+ Thread.sleep(200);
+ followProducer.sendAddFollowOrder(id);
+ return;
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+
List<FollowFollowerSettingEntity> followerSettings = followFollowerSettingDao.selectAllFollowerSettingByTradeMemberId(holdOrderEntity.getMemberId());
+ log.info("进入跟单处理逻辑---跟单人数"+followerSettings.size());
// 开仓价
BigDecimal openPrice = holdOrderEntity.getOpeningPrice();
PlatformTradeSettingEntity tradeSettingEntity = cacheSettingUtils.getTradeSetting();
@@ -101,6 +123,14 @@
if (CollUtil.isNotEmpty(followerSettings)) {
for (FollowFollowerSettingEntity followerSetting : followerSettings) {
+ //更新更新消息提醒的状态
+ MemberSettingEntity memberSettingEntity = memberSettingDao.selectMemberSettingByMemberId(followerSetting.getId());
+ if(ObjectUtil.isNotEmpty(memberSettingEntity)){
+ Long memberId = memberSettingEntity.getMemberId();
+ log.info("更新更新消息提醒的状态");
+ memberSettingDao.updateMessageReminderByMemberId(memberId);
+ }
+
if (!followerSetting.getSymbols().contains(holdOrderEntity.getSymbol().replace("/USDT", ""))) {
log.info("不在跟单币种内,不跟单:{},{}", followerSetting.getSymbols(), holdOrderEntity.getSymbol());
continue;
diff --git a/src/main/java/com/xcong/excoin/modules/documentary/vo/BeTraderConditionVo.java b/src/main/java/com/xcong/excoin/modules/documentary/vo/BeTraderConditionVo.java
new file mode 100644
index 0000000..c9673e4
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/documentary/vo/BeTraderConditionVo.java
@@ -0,0 +1,32 @@
+package com.xcong.excoin.modules.documentary.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "BeTraderConditionVo", description = "参数返回类")
+public class BeTraderConditionVo {
+
+ /**
+ * 名称
+ */
+ @ApiModelProperty("名称")
+ private String name;
+ /**
+ * 所属分类(对应英文简写)
+ */
+ @ApiModelProperty("所属分类(对应英文简写)")
+ private String type;
+ /**
+ * 内容
+ */
+ @ApiModelProperty("内容")
+ private String content;
+ /**
+ * 状态0禁用 1 启用
+ */
+ @ApiModelProperty("状态0禁用 1 启用")
+ private int state;
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/documentary/vo/DocumentaryOrderSetInfoVo.java b/src/main/java/com/xcong/excoin/modules/documentary/vo/DocumentaryOrderSetInfoVo.java
index 026969d..a832386 100644
--- a/src/main/java/com/xcong/excoin/modules/documentary/vo/DocumentaryOrderSetInfoVo.java
+++ b/src/main/java/com/xcong/excoin/modules/documentary/vo/DocumentaryOrderSetInfoVo.java
@@ -32,9 +32,9 @@
private Integer followCnt;
@ApiModelProperty(value = "跟单最大持仓张数数量", example = "2")
- private int maxFollowCnt;
+ private String maxFollowCnt;
public BigDecimal getProfit() {
- return profit.multiply(BigDecimal.valueOf(10));
+ return profit.multiply(BigDecimal.valueOf(1));
}
}
diff --git a/src/main/java/com/xcong/excoin/modules/documentary/vo/DocumentaryOrderSetStateVo.java b/src/main/java/com/xcong/excoin/modules/documentary/vo/DocumentaryOrderSetStateVo.java
new file mode 100644
index 0000000..ab7215f
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/documentary/vo/DocumentaryOrderSetStateVo.java
@@ -0,0 +1,14 @@
+package com.xcong.excoin.modules.documentary.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "DocumentaryOrderSetStateVo", description = "参数返回类")
+public class DocumentaryOrderSetStateVo {
+
+ @ApiModelProperty("是否允许跟单的状态")
+ private Boolean state;
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/documentary/vo/FollowInfoVo.java b/src/main/java/com/xcong/excoin/modules/documentary/vo/FollowInfoVo.java
index b17fcea..5b47802 100644
--- a/src/main/java/com/xcong/excoin/modules/documentary/vo/FollowInfoVo.java
+++ b/src/main/java/com/xcong/excoin/modules/documentary/vo/FollowInfoVo.java
@@ -35,5 +35,11 @@
*/
@ApiModelProperty(value = "累计收益")
private BigDecimal totalProfit;
+
+ @ApiModelProperty(value = "总金额")
+ private BigDecimal totalAmount;
+
+ @ApiModelProperty(value = "未实现盈亏")
+ private BigDecimal totalProfitOrLess;
}
diff --git a/src/main/java/com/xcong/excoin/modules/documentary/vo/FollowTraderProfitInfoVo.java b/src/main/java/com/xcong/excoin/modules/documentary/vo/FollowTraderProfitInfoVo.java
index 2dacc51..155c8fe 100644
--- a/src/main/java/com/xcong/excoin/modules/documentary/vo/FollowTraderProfitInfoVo.java
+++ b/src/main/java/com/xcong/excoin/modules/documentary/vo/FollowTraderProfitInfoVo.java
@@ -89,5 +89,17 @@
*/
@ApiModelProperty("跟单状态 1:已跟单2:未跟单")
private Integer documentaryType;
+
+ /**
+ * 最大跟单人数
+ */
+ @ApiModelProperty("最大跟单人数")
+ private Integer followNum;
+
+ /**
+ * 当前跟单人数
+ */
+ @ApiModelProperty("当前跟单人数")
+ private Integer followNumNow;
}
diff --git a/src/main/java/com/xcong/excoin/modules/documentary/vo/HistoryOrderRecordsVo.java b/src/main/java/com/xcong/excoin/modules/documentary/vo/HistoryOrderRecordsVo.java
index 8836574..2d8bd94 100644
--- a/src/main/java/com/xcong/excoin/modules/documentary/vo/HistoryOrderRecordsVo.java
+++ b/src/main/java/com/xcong/excoin/modules/documentary/vo/HistoryOrderRecordsVo.java
@@ -38,6 +38,9 @@
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty("平仓时间")
private Date closingTime;
+
+ @ApiModelProperty("平仓时间时间戳")
+ private long closingTimeStamp;
@ApiModelProperty("订单编号")
private String orderNo;
diff --git a/src/main/java/com/xcong/excoin/modules/documentary/vo/TradeSetInfoVo.java b/src/main/java/com/xcong/excoin/modules/documentary/vo/TradeSetInfoVo.java
index 59ef975..555f00e 100644
--- a/src/main/java/com/xcong/excoin/modules/documentary/vo/TradeSetInfoVo.java
+++ b/src/main/java/com/xcong/excoin/modules/documentary/vo/TradeSetInfoVo.java
@@ -18,6 +18,9 @@
@ApiModelProperty("名称")
private String nickname;
+
+ @ApiModelProperty("名称状态:0:未修改 1:已修改")
+ private int nicknameState;
@ApiModelProperty("是否开启带单 1是2否")
private int isOpen;
diff --git a/src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java b/src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java
index 4375126..0ae5d27 100644
--- a/src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java
+++ b/src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java
@@ -3,6 +3,8 @@
import javax.annotation.Resource;
import javax.validation.Valid;
+import com.xcong.excoin.modules.member.parameter.dto.*;
+import com.xcong.excoin.modules.member.parameter.vo.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -10,32 +12,6 @@
import org.springframework.web.bind.annotation.RestController;
import com.xcong.excoin.common.response.Result;
-import com.xcong.excoin.modules.member.parameter.dto.MemberAddCoinAddressDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberAddCoinAddressInDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberAuthenticationDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberBindEmailDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberBindPhoneDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberDelCoinAddressDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberDelPaymethodDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberForgetPwdDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberPaymethodDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberSubmitCoinApplyDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberSubmitCoinApplyInDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberUpdatePwdDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberUpdateTradePwdDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberUpdateTradersPwdTimeDto;
-import com.xcong.excoin.modules.member.parameter.vo.AppVersionListVo;
-import com.xcong.excoin.modules.member.parameter.vo.MemberAuthenticationInfoVo;
-import com.xcong.excoin.modules.member.parameter.vo.MemberAvivableCoinInfoVo;
-import com.xcong.excoin.modules.member.parameter.vo.MemberCoinAddressCountListVo;
-import com.xcong.excoin.modules.member.parameter.vo.MemberCoinAddressInListVo;
-import com.xcong.excoin.modules.member.parameter.vo.MemberCoinAddressListVo;
-import com.xcong.excoin.modules.member.parameter.vo.MemberCoinInfoListVo;
-import com.xcong.excoin.modules.member.parameter.vo.MemberInfoVo;
-import com.xcong.excoin.modules.member.parameter.vo.MemberPaymethodDetailListVo;
-import com.xcong.excoin.modules.member.parameter.vo.MemberPaymethodDetailVo;
-import com.xcong.excoin.modules.member.parameter.vo.MemberPersonCenterInfoVo;
-import com.xcong.excoin.modules.member.parameter.vo.MemberSendCodeWayVo;
import com.xcong.excoin.modules.member.service.MemberService;
import io.swagger.annotations.Api;
@@ -356,7 +332,26 @@
public Result memberPersonCenterInfo() {
return memberService.memberPersonCenterInfo();
}
-
+
+ /**
+ * 指纹解锁功能保存
+ */
+ @ApiOperation(value="指纹解锁功能保存", notes="指纹解锁功能保存")
+ @PostMapping(value="/memberFingerprintState")
+ public Result memberFingerprintState(@RequestBody @Valid MemberFingerprintStateDto memberFingerprintStateDto) {
+ return memberService.memberFingerprintState(memberFingerprintStateDto);
+ }
+
+ /**
+ * 获取消息提醒的状态
+ */
+ @ApiOperation(value = "获取消息提醒的状态", notes = "获取消息提醒的状态")
+ @ApiResponses({@ApiResponse( code = 200, message = "success", response = MemberMessageReminderVo.class)})
+ @GetMapping(value = "/memberMessageReminder")
+ public Result memberMessageReminder() {
+ return memberService.memberMessageReminder();
+ }
+
/**
* 提币币种信息
* @return
diff --git a/src/main/java/com/xcong/excoin/modules/member/dao/MemberSettingDao.java b/src/main/java/com/xcong/excoin/modules/member/dao/MemberSettingDao.java
index 620a813..3bb001e 100644
--- a/src/main/java/com/xcong/excoin/modules/member/dao/MemberSettingDao.java
+++ b/src/main/java/com/xcong/excoin/modules/member/dao/MemberSettingDao.java
@@ -16,4 +16,6 @@
public int batchInsert(@Param("list") List<MemberSettingEntity> list);
+ public void updateMessageReminderByMemberId(@Param("memberId")Long memberId);
+
}
diff --git a/src/main/java/com/xcong/excoin/modules/member/entity/MemberEntity.java b/src/main/java/com/xcong/excoin/modules/member/entity/MemberEntity.java
index e73a151..6f4797f 100644
--- a/src/main/java/com/xcong/excoin/modules/member/entity/MemberEntity.java
+++ b/src/main/java/com/xcong/excoin/modules/member/entity/MemberEntity.java
@@ -178,4 +178,9 @@
* 合约仓位类型
*/
private Integer contractPositionType;
+
+ /**
+ * 指纹解锁功能 1:是 0:否
+ */
+ private Integer fingerprintState;
}
diff --git a/src/main/java/com/xcong/excoin/modules/member/entity/MemberSettingEntity.java b/src/main/java/com/xcong/excoin/modules/member/entity/MemberSettingEntity.java
index 36ea5a7..17d4448 100644
--- a/src/main/java/com/xcong/excoin/modules/member/entity/MemberSettingEntity.java
+++ b/src/main/java/com/xcong/excoin/modules/member/entity/MemberSettingEntity.java
@@ -30,5 +30,9 @@
* 强平系数
*/
private BigDecimal forceParam;
+ /**
+ * 跟单消息提醒0:没有 1:有
+ */
+ private Integer messageReminder;
}
diff --git a/src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberAddCoinAddressDto.java b/src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberAddCoinAddressDto.java
index 4bf9314..8fec68b 100644
--- a/src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberAddCoinAddressDto.java
+++ b/src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberAddCoinAddressDto.java
@@ -10,9 +10,16 @@
@ApiModel(value = "MemberAddCoinAddressDto", description = "增加提币地址参数接收类")
public class MemberAddCoinAddressDto {
- @NotNull(message = "币种ID不能为空")
- @ApiModelProperty(value = "币种ID")
- private Long symbolscoinId;
+ //@NotNull(message = "币种ID不能为空")
+ //@ApiModelProperty(value = "币种ID")
+ //private Long symbolscoinId;
+
+ /**
+ * 地址
+ */
+ @NotNull(message = "币种不能为空")
+ @ApiModelProperty(value = "币种")
+ private String symbol;
/**
* 地址
*/
diff --git a/src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberFingerprintStateDto.java b/src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberFingerprintStateDto.java
new file mode 100644
index 0000000..dec0ffe
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberFingerprintStateDto.java
@@ -0,0 +1,20 @@
+package com.xcong.excoin.modules.member.parameter.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+@ApiModel(value = "MemberFingerprintStateDto", description = "参数接收类")
+public class MemberFingerprintStateDto {
+
+ @ApiModelProperty(value = "是否开启0:否 1:是", example = "0")
+ private Integer fingerprintState;
+
+ @NotNull(message = "登录密码不能为空")
+ @ApiModelProperty(value = "登录密码", example = "123564")
+ private String password;
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberSubmitCoinApplyInDto.java b/src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberSubmitCoinApplyInDto.java
index 0bc4ccf..6615786 100644
--- a/src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberSubmitCoinApplyInDto.java
+++ b/src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberSubmitCoinApplyInDto.java
@@ -35,4 +35,7 @@
@ApiModelProperty(value = "币种", example = "BTC")
private String symbol;
+ @ApiModelProperty(value = "币种子类", example = "ERC20")
+ private String lable;
+
}
\ No newline at end of file
diff --git a/src/main/java/com/xcong/excoin/modules/member/parameter/vo/MemberMessageReminderVo.java b/src/main/java/com/xcong/excoin/modules/member/parameter/vo/MemberMessageReminderVo.java
new file mode 100644
index 0000000..77ec26f
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/member/parameter/vo/MemberMessageReminderVo.java
@@ -0,0 +1,15 @@
+package com.xcong.excoin.modules.member.parameter.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "MemberMessageReminderVo", description = "信息")
+public class MemberMessageReminderVo {
+
+
+ @ApiModelProperty(value = " 新的跟单消息提醒 1:是 0:否")
+ private Integer messageReminder;
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/member/parameter/vo/MemberPersonCenterInfoVo.java b/src/main/java/com/xcong/excoin/modules/member/parameter/vo/MemberPersonCenterInfoVo.java
index 97576fc..0c3607c 100644
--- a/src/main/java/com/xcong/excoin/modules/member/parameter/vo/MemberPersonCenterInfoVo.java
+++ b/src/main/java/com/xcong/excoin/modules/member/parameter/vo/MemberPersonCenterInfoVo.java
@@ -25,6 +25,9 @@
@ApiModelProperty(value = "交易密码时效性设置1:一直需要输入密码 2不需要输入密码")
private Integer tradeAgingSetting;
+
+ @ApiModelProperty(value = " 指纹解锁功能 1:是 0:否")
+ private Integer fingerprintState;
/**
* 一直需要输入密码
*/
diff --git a/src/main/java/com/xcong/excoin/modules/member/service/MemberService.java b/src/main/java/com/xcong/excoin/modules/member/service/MemberService.java
index 500f893..986270b 100644
--- a/src/main/java/com/xcong/excoin/modules/member/service/MemberService.java
+++ b/src/main/java/com/xcong/excoin/modules/member/service/MemberService.java
@@ -6,20 +6,7 @@
import com.xcong.excoin.common.response.Result;
import com.xcong.excoin.common.system.dto.RegisterDto;
import com.xcong.excoin.modules.member.entity.MemberEntity;
-import com.xcong.excoin.modules.member.parameter.dto.MemberAddCoinAddressDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberAddCoinAddressInDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberAuthenticationDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberBindEmailDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberBindPhoneDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberDelCoinAddressDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberDelPaymethodDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberForgetPwdDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberPaymethodDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberSubmitCoinApplyDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberSubmitCoinApplyInDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberUpdatePwdDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberUpdateTradePwdDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberUpdateTradersPwdTimeDto;
+import com.xcong.excoin.modules.member.parameter.dto.*;
import com.xcong.excoin.modules.member.parameter.vo.NeedMoneyMemberVo;
import org.apache.ibatis.annotations.Param;
@@ -100,5 +87,8 @@
public Result memberCoinAddressInList();
+ public Result memberFingerprintState(@Valid MemberFingerprintStateDto memberFingerprintStateDto);
+
+ public Result memberMessageReminder();
}
diff --git a/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java b/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
index 658e0b7..19fdafd 100644
--- a/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
@@ -18,20 +18,7 @@
import com.xcong.excoin.modules.contract.entity.ContractEntrustOrderEntity;
import com.xcong.excoin.modules.member.dao.*;
import com.xcong.excoin.modules.member.entity.*;
-import com.xcong.excoin.modules.member.parameter.dto.MemberAddCoinAddressDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberAddCoinAddressInDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberAuthenticationDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberBindEmailDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberBindPhoneDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberDelCoinAddressDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberDelPaymethodDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberForgetPwdDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberPaymethodDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberSubmitCoinApplyDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberSubmitCoinApplyInDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberUpdatePwdDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberUpdateTradePwdDto;
-import com.xcong.excoin.modules.member.parameter.dto.MemberUpdateTradersPwdTimeDto;
+import com.xcong.excoin.modules.member.parameter.dto.*;
import com.xcong.excoin.modules.member.parameter.vo.*;
import com.xcong.excoin.modules.member.service.MemberService;
import com.xcong.excoin.modules.platform.dao.PlatformFeeSettingDao;
@@ -690,10 +677,10 @@
Long memberId = LoginUserUtils.getAppLoginUser().getId();
String address = memberAddCoinAddressDto.getAddress();
String isBiyict = memberAddCoinAddressDto.getIsBiyict();
- Long symbolscoinId = memberAddCoinAddressDto.getSymbolscoinId();
+ String symbol = memberAddCoinAddressDto.getSymbol();
String remark = memberAddCoinAddressDto.getRemark();
-
- PlatformSymbolsCoinEntity platformSymbolsCoinEntity = platformSymbolsCoinDao.selectById(symbolscoinId);
+ PlatformSymbolsCoinEntity platformSymbolsCoinEntity = platformSymbolsCoinDao.selectOneBySymbol(symbol);
+ Long symbolscoinId = platformSymbolsCoinEntity.getId();
MemberCoinAddressEntity memberCoinAddressEntity = new MemberCoinAddressEntity();
memberCoinAddressEntity.setAddress(address);
@@ -803,6 +790,9 @@
memberPersonCenterInfoVo.setTradeAgingSetting(MemberPersonCenterInfoVo.PWD_NEED_NO);
}
+ Integer fingerprintState = member.getFingerprintState();
+ memberPersonCenterInfoVo.setFingerprintState(fingerprintState);
+
return Result.ok(memberPersonCenterInfoVo);
}
@@ -909,6 +899,7 @@
memberCoinWithdrawEntity.setFeeAmount(memberSubmitCoinApplyDto.getFeeAmount());
memberCoinWithdrawEntity.setSymbol(memberSubmitCoinApplyDto.getSymbol());
memberCoinWithdrawEntity.setMemberId(memberId);
+ memberCoinWithdrawEntity.setLabel(memberSubmitCoinApplyDto.getLable());
memberCoinWithdrawEntity.setStatus(MemberCoinWithdrawEntity.STATUS_DOING);
Map<String, Object> columnMap = new HashMap<>();
@@ -1062,6 +1053,7 @@
memberCoinWithdrawEntity.setMemberId(memberId);
memberCoinWithdrawEntity.setStatus(MemberCoinWithdrawEntity.STATUS_DOING);
memberCoinWithdrawEntity.setIsInside(MemberCoinWithdrawEntity.ISINSIDE_YES);
+ memberCoinWithdrawEntity.setLabel(memberSubmitCoinApplyInDto.getLable());
memberCoinWithdrawDao.insert(memberCoinWithdrawEntity);
BigDecimal subtract = walletCoin.getAvailableBalance().subtract(coinNumber);
walletCoin.setAvailableBalance(subtract);
@@ -1139,6 +1131,39 @@
return Result.ok(arrayList);
}
+ @Override
+ public Result memberFingerprintState(@Valid MemberFingerprintStateDto memberFingerprintStateDto) {
+ //获取用户ID
+ Long memberId = LoginUserUtils.getAppLoginUser().getId();
+
+ String password = SecureUtil.md5(memberFingerprintStateDto.getPassword());
+ MemberEntity member = memberDao.selectById(memberId);
+
+ if(password.equals(member.getPassword())){
+ Integer fingerprintState = memberFingerprintStateDto.getFingerprintState();
+ MemberEntity memberEntity = memberDao.selectById(memberId);
+ memberEntity.setFingerprintState(fingerprintState);
+ memberDao.updateById(memberEntity);
+ return Result.ok(MessageSourceUtils.getString("member_service_0024"));
+ }else{
+ return Result.fail(MessageSourceUtils.getString("home_service_0005"));
+ }
+ }
+
+ @Override
+ @Transactional
+ public Result memberMessageReminder() {
+ //获取用户ID
+ Long memberId = LoginUserUtils.getAppLoginUser().getId();
+ MemberMessageReminderVo memberMessageReminderVo = new MemberMessageReminderVo();
+ MemberSettingEntity selectById = memberSettingDao.selectMemberSettingByMemberId(memberId);
+ if(ObjectUtil.isNotEmpty(selectById)) {
+ memberMessageReminderVo.setMessageReminder(selectById.getMessageReminder());
+ }
+ return Result.ok(memberMessageReminderVo);
+ }
+
+
}
diff --git a/src/main/java/com/xcong/excoin/modules/platform/dao/PlatformSymbolsCoinDao.java b/src/main/java/com/xcong/excoin/modules/platform/dao/PlatformSymbolsCoinDao.java
index a116b5a..3595ec9 100644
--- a/src/main/java/com/xcong/excoin/modules/platform/dao/PlatformSymbolsCoinDao.java
+++ b/src/main/java/com/xcong/excoin/modules/platform/dao/PlatformSymbolsCoinDao.java
@@ -5,9 +5,11 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xcong.excoin.modules.member.parameter.vo.MemberCoinAddressCountVo;
import com.xcong.excoin.modules.platform.entity.PlatformSymbolsCoinEntity;
+import org.apache.ibatis.annotations.Param;
public interface PlatformSymbolsCoinDao extends BaseMapper<PlatformSymbolsCoinEntity> {
List<MemberCoinAddressCountVo> selectCoinAddressCount(Long memberId);
-
+
+ PlatformSymbolsCoinEntity selectOneBySymbol(@Param("symbol")String symbol);
}
diff --git a/src/main/java/com/xcong/excoin/modules/platform/dao/SysExceptionDetailDao.java b/src/main/java/com/xcong/excoin/modules/platform/dao/SysExceptionDetailDao.java
new file mode 100644
index 0000000..7d944ee
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/platform/dao/SysExceptionDetailDao.java
@@ -0,0 +1,11 @@
+package com.xcong.excoin.modules.platform.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xcong.excoin.common.system.bean.SysExceptionDetailEntity;
+
+/**
+ * @author wzy
+ * @date 2021-03-05
+ **/
+public interface SysExceptionDetailDao extends BaseMapper<SysExceptionDetailEntity> {
+}
diff --git a/src/main/java/com/xcong/excoin/quartz/job/FollowProfitUpdateJob.java b/src/main/java/com/xcong/excoin/quartz/job/FollowProfitUpdateJob.java
index c396ee9..ee31c58 100644
--- a/src/main/java/com/xcong/excoin/quartz/job/FollowProfitUpdateJob.java
+++ b/src/main/java/com/xcong/excoin/quartz/job/FollowProfitUpdateJob.java
@@ -41,7 +41,8 @@
@Resource
private FollowTraderProfitInfoDao followTraderProfitInfoDao;
- @Scheduled(cron = "0 0/30 * * * ? ")
+ //@Scheduled(cron = "0 0/30 * * * ? ")
+ @Scheduled(cron = "0 0/5 * * * ?")
public void traderProfitUpdate() {
log.info("交易员定时任务执行");
// 查询所有交易员信息
diff --git a/src/main/java/com/xcong/excoin/rabbit/consumer/FollowConsumer.java b/src/main/java/com/xcong/excoin/rabbit/consumer/FollowConsumer.java
new file mode 100644
index 0000000..d3c140b
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/rabbit/consumer/FollowConsumer.java
@@ -0,0 +1,31 @@
+package com.xcong.excoin.rabbit.consumer;
+
+import com.rabbitmq.client.Channel;
+import com.xcong.excoin.configurations.RabbitMqConfig;
+import com.xcong.excoin.modules.documentary.service.FollowOrderOperationService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author wzy
+ * @date 2021-03-04
+ **/
+@Slf4j
+@Component
+@ConditionalOnProperty(prefix = "app", name = "rabbit-consumer", havingValue = "true")
+public class FollowConsumer {
+
+ @Autowired
+ private FollowOrderOperationService followOrderOperationService;
+
+ @RabbitListener(queues = RabbitMqConfig.QUEUE_FOLLOW_ORDER)
+ public void addFollowOrder(Message message, Channel channel) {
+ String content = new String(message.getBody());
+ log.info("==收到跟单下单消息 : {}", content);
+ followOrderOperationService.addFollowerOrder(Long.parseLong(content));
+ }
+}
diff --git a/src/main/java/com/xcong/excoin/rabbit/producer/FollowProducer.java b/src/main/java/com/xcong/excoin/rabbit/producer/FollowProducer.java
new file mode 100644
index 0000000..cecb098
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/rabbit/producer/FollowProducer.java
@@ -0,0 +1,44 @@
+package com.xcong.excoin.rabbit.producer;
+
+
+import com.xcong.excoin.configurations.RabbitMqConfig;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.rabbit.connection.CorrelationData;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.UUID;
+
+/**
+ * @author wzy
+ * @date 2021-03-04
+ **/
+@Slf4j
+@Component
+public class FollowProducer implements RabbitTemplate.ConfirmCallback {
+
+ private RabbitTemplate rabbitTemplate;
+
+ @Autowired
+ public FollowProducer(RabbitTemplate rabbitTemplate) {
+ this.rabbitTemplate = rabbitTemplate;
+ rabbitTemplate.setConfirmCallback(this);
+ }
+
+ @Override
+ public void confirm(CorrelationData correlationData, boolean b, String s) {
+
+ }
+
+ /**
+ * 发送跟单下单消息
+ *
+ * @param id
+ */
+ public void sendAddFollowOrder(Long id) {
+ CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
+ log.info("发送跟单下单消息: {}, {}", id, correlationData.getId());
+ rabbitTemplate.convertAndSend(RabbitMqConfig.EXCHANGE_A, RabbitMqConfig.ROUTINGKEY_FOLLOW_ORDER, id.toString(), correlationData);
+ }
+}
diff --git a/src/main/resources/application-app.yml b/src/main/resources/application-app.yml
index cf2ff6f..21b55e3 100644
--- a/src/main/resources/application-app.yml
+++ b/src/main/resources/application-app.yml
@@ -7,9 +7,9 @@
profiles:
active: app
datasource:
- url: jdbc:mysql://120.27.238.55:3306/db_hibit?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2b8
- username: ct_test
- password: 123456
+ url: jdbc:mysql://192.168.0.151:3306/db_hibit?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2b8
+ username: db_hibit
+ password: hibit123!@#
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
druid:
@@ -48,13 +48,13 @@
## redis配置
redis:
## Redis数据库索引(默认为0)
- database: 1
+ database: 0
## Redis服务器地址
- host: 114.55.92.106
+ host: 192.168.0.36
## Redis服务器连接端口
port: 6379
## Redis服务器连接密码(默认为空)
- password: hibit123
+ password: d32ncxe@i3#!dV
jedis:
pool:
## 连接池最大连接数(使用负值表示没有限制)
@@ -72,10 +72,10 @@
## 连接超时时间(毫秒)
timeout: 30000
rabbitmq:
- host: 120.55.86.146
+ host: 192.168.0.36
port: 5672
- username: biyict
- password: biyict123
+ username: hibit
+ password: hibit123
publisher-confirm-type: correlated
diff --git a/src/main/resources/application-dayline.yml b/src/main/resources/application-dayline.yml
index abfbeb2..5065abd 100644
--- a/src/main/resources/application-dayline.yml
+++ b/src/main/resources/application-dayline.yml
@@ -7,9 +7,9 @@
profiles:
active: dayline
datasource:
- url: jdbc:mysql://120.27.238.55:3306/db_hibit?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2b8
- username: ct_test
- password: 123456
+ url: jdbc:mysql://192.168.0.151:3306/db_hibit?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2b8
+ username: db_hibit
+ password: hibit123!@#
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
druid:
@@ -48,13 +48,13 @@
## redis配置
redis:
## Redis数据库索引(默认为0)
- database: 1
+ database: 0
## Redis服务器地址
- host: 114.55.92.106
+ host: 192.168.0.36
## Redis服务器连接端口
port: 6379
## Redis服务器连接密码(默认为空)
- password: hibit123
+ password: d32ncxe@i3#!dV
jedis:
pool:
## 连接池最大连接数(使用负值表示没有限制)
@@ -72,10 +72,10 @@
## 连接超时时间(毫秒)
timeout: 30000
rabbitmq:
- host: 120.55.86.146
+ host: 192.168.0.36
port: 5672
- username: biyict
- password: biyict123
+ username: hibit
+ password: hibit123
publisher-confirm-type: correlated
diff --git a/src/main/resources/application-loop.yml b/src/main/resources/application-loop.yml
index db72e06..5ef1dbd 100644
--- a/src/main/resources/application-loop.yml
+++ b/src/main/resources/application-loop.yml
@@ -7,9 +7,9 @@
profiles:
active: loop
datasource:
- url: jdbc:mysql://120.27.238.55:3306/db_hibit?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2b8
- username: ct_test
- password: 123456
+ url: jdbc:mysql://192.168.0.151:3306/db_hibit?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2b8
+ username: db_hibit
+ password: hibit123!@#
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
druid:
@@ -48,13 +48,13 @@
## redis配置
redis:
## Redis数据库索引(默认为0)
- database: 1
+ database: 0
## Redis服务器地址
- host: 114.55.92.106
+ host: 192.168.0.36
## Redis服务器连接端口
port: 6379
## Redis服务器连接密码(默认为空)
- password: hibit123
+ password: d32ncxe@i3#!dV
jedis:
pool:
## 连接池最大连接数(使用负值表示没有限制)
@@ -72,10 +72,10 @@
## 连接超时时间(毫秒)
timeout: 30000
rabbitmq:
- host: 120.55.86.146
+ host: 192.168.0.36
port: 5672
- username: biyict
- password: biyict123
+ username: hibit
+ password: hibit123
publisher-confirm-type: correlated
diff --git a/src/main/resources/application-newprice.yml b/src/main/resources/application-newprice.yml
index 70effde..2d1b25b 100644
--- a/src/main/resources/application-newprice.yml
+++ b/src/main/resources/application-newprice.yml
@@ -7,9 +7,9 @@
profiles:
active: newprice
datasource:
- url: jdbc:mysql://120.27.238.55:3306/db_hibit?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2b8
- username: ct_test
- password: 123456
+ url: jdbc:mysql://192.168.0.151:3306/db_hibit?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2b8
+ username: db_hibit
+ password: hibit123!@#
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
druid:
@@ -48,13 +48,13 @@
## redis配置
redis:
## Redis数据库索引(默认为0)
- database: 1
+ database: 0
## Redis服务器地址
- host: 114.55.92.106
+ host: 192.168.0.36
## Redis服务器连接端口
port: 6379
## Redis服务器连接密码(默认为空)
- password: hibit123
+ password: d32ncxe@i3#!dV
jedis:
pool:
## 连接池最大连接数(使用负值表示没有限制)
@@ -72,10 +72,10 @@
## 连接超时时间(毫秒)
timeout: 30000
rabbitmq:
- host: 120.55.86.146
+ host: 192.168.0.36
port: 5672
- username: biyict
- password: biyict123
+ username: hibit
+ password: hibit123
publisher-confirm-type: correlated
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 69b6898..49a403b 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -5,14 +5,14 @@
spring:
profiles:
- active: test
+ active: dev
datasource:
# url: jdbc:mysql://rm-bp151tw8er79ig9kb5o.mysql.rds.aliyuncs.com:3306/db_biue?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2b8
# username: ctcoin_data
# password: ctcoin_123
- url: jdbc:mysql://120.27.238.55:3306/db_hibit?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2b8
- username: ct_test
- password: 123456
+ url: jdbc:mysql://124.70.222.34:3306/db_hibit?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2b8
+ username: db_hibit
+ password: hibit123!@#
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
druid:
@@ -51,13 +51,13 @@
## redis配置
redis:
## Redis数据库索引(默认为0)
- database: 1
+ database: 0
## Redis服务器地址
- host: 120.27.238.55
+ host: 121.37.162.173
## Redis服务器连接端口
port: 6379
## Redis服务器连接密码(默认为空)
- password: xcong123
+ password: d32ncxe@i3#!dV
jedis:
pool:
## 连接池最大连接数(使用负值表示没有限制)
@@ -75,10 +75,10 @@
## 连接超时时间(毫秒)
timeout: 30000
rabbitmq:
- host: 120.27.238.55
+ host: 121.37.162.173
port: 5672
- username: ct_rabbit
- password: 123456
+ username: hibit
+ password: hibit123
publisher-confirm-type: correlated
diff --git a/src/main/resources/i18n/messages_en_US.properties b/src/main/resources/i18n/messages_en_US.properties
index add0045..1b5f99a 100644
--- a/src/main/resources/i18n/messages_en_US.properties
+++ b/src/main/resources/i18n/messages_en_US.properties
@@ -140,6 +140,7 @@
member_service_0096=Transfer fail
member_service_0097=Payment method already exists
member_service_0098=Please select another account
+member_service_0099=The nickname can only be modified once
order_service_0001=Wrong parameter value
order_service_0002=Not logged in
@@ -230,6 +231,7 @@
documentary_service_0016=The trader has been set not to follow orders
documentary_service_0017=Please change the contract to separate margin mode
documentary_service_0018=In documentary, cannot adjust to full position margin mode
+documentary_service_0019=The follower has a documentary contract and cannot kick out
uploadFile_controller_0001=Upload failed
diff --git a/src/main/resources/i18n/messages_zh_CN.properties b/src/main/resources/i18n/messages_zh_CN.properties
index 8fddc1f..fa50004 100644
--- a/src/main/resources/i18n/messages_zh_CN.properties
+++ b/src/main/resources/i18n/messages_zh_CN.properties
@@ -140,6 +140,7 @@
member_service_0096=划转失败
member_service_0097=支付方式已存在
member_service_0098=请选择其他账户
+member_service_0099=昵称只允许修改一次
order_service_0001=参值有误
order_service_0002=未登录
@@ -230,6 +231,7 @@
documentary_service_0016=该交易员已设置不能跟单
documentary_service_0017=请将合约修改为分仓保证金模式
documentary_service_0018=正在跟单中,无法调整为全仓保证金模式
+documentary_service_0019=跟随者拥有跟单合约,无法踢出
uploadFile_controller_0001=上传失败
diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml
index 0d0bf1b..af9bfd5 100644
--- a/src/main/resources/logback-spring.xml
+++ b/src/main/resources/logback-spring.xml
@@ -2,7 +2,7 @@
<configuration>
<contextName>logback</contextName>
<!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 -->
- <property name="log.path" value="biue/logs" />
+ <property name="log.path" value="hibit/logs" />
<!-- <springProperty scope="context" name="log.path" source="logging.file.path"/>-->
<!-- 彩色日志 -->
diff --git a/src/main/resources/mapper/documentary/FollowFollowerProfitDao.xml b/src/main/resources/mapper/documentary/FollowFollowerProfitDao.xml
index 545682b..a65d1e5 100644
--- a/src/main/resources/mapper/documentary/FollowFollowerProfitDao.xml
+++ b/src/main/resources/mapper/documentary/FollowFollowerProfitDao.xml
@@ -82,7 +82,6 @@
WHERE
member_id = #{memberId}
and contract_type = 2
- order by opening_time desc
</select>
<select id="selectDocumentaryOrderSetInfoBymemberIdAndTradeId" resultType="com.xcong.excoin.modules.documentary.entity.FollowFollowerProfitEntity">
diff --git a/src/main/resources/mapper/documentary/FollowFollowerSettingDao.xml b/src/main/resources/mapper/documentary/FollowFollowerSettingDao.xml
index 941cd8a..e7a0151 100644
--- a/src/main/resources/mapper/documentary/FollowFollowerSettingDao.xml
+++ b/src/main/resources/mapper/documentary/FollowFollowerSettingDao.xml
@@ -25,5 +25,13 @@
from follow_follower_setting a, follow_follower_profit b
where a.member_id=b.member_id and a.trader_member_id=b.trade_member_id and a.trader_member_id=#{memberId} and b.is_follow=1
</select>
+ <select id="selectDocumentaryOrderSetInfosBymemberId" resultType="com.xcong.excoin.modules.documentary.entity.FollowFollowerSettingEntity">
+ SELECT
+ *
+ FROM
+ follow_follower_setting
+ WHERE
+ member_id = #{memberId}
+ </select>
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/documentary/FollowTraderInfoDao.xml b/src/main/resources/mapper/documentary/FollowTraderInfoDao.xml
index 1633b37..d518a77 100644
--- a/src/main/resources/mapper/documentary/FollowTraderInfoDao.xml
+++ b/src/main/resources/mapper/documentary/FollowTraderInfoDao.xml
@@ -23,4 +23,10 @@
from follow_trader_info
where verify_status=1
</select>
+
+ <select id="selectBeTraderCondition" resultType="com.xcong.excoin.modules.documentary.vo.BeTraderConditionVo">
+ select *
+ from common_configuration
+ where state=1 and type = #{type}
+ </select>
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/documentary/FollowTraderProfitInfoDao.xml b/src/main/resources/mapper/documentary/FollowTraderProfitInfoDao.xml
index eb35811..d66f75b 100644
--- a/src/main/resources/mapper/documentary/FollowTraderProfitInfoDao.xml
+++ b/src/main/resources/mapper/documentary/FollowTraderProfitInfoDao.xml
@@ -3,8 +3,16 @@
<mapper namespace="com.xcong.excoin.modules.documentary.dao.FollowTraderProfitInfoDao">
<select id="selectFollowTraderProfitInfoEntity" resultType="com.xcong.excoin.modules.documentary.vo.FollowTraderProfitInfoVo">
- select * from follow_trader_profit_info f left join member m on f.member_id = m.id
- where m.is_trader = 1
+ select * from follow_trader_profit_info f
+ left join member m on f.member_id = m.id
+ left join follow_trader_info t on t.member_id = f.member_id
+ <where>
+ m.is_trader = 1
+ <if test="record.type != null and record.type != '' ">
+ and t.is_set_frist = #{record.type}
+ </if>
+ </where>
+
order by f.id desc
</select>
diff --git a/src/main/resources/mapper/member/MemberSettingDao.xml b/src/main/resources/mapper/member/MemberSettingDao.xml
index 2a56bce..4dcddd6 100644
--- a/src/main/resources/mapper/member/MemberSettingDao.xml
+++ b/src/main/resources/mapper/member/MemberSettingDao.xml
@@ -35,4 +35,11 @@
</foreach>
</insert>
+ <update id="updateMessageReminderByMemberId">
+ UPDATE member_setting s
+ SET s.message_reminder = 1
+ WHERE
+ member_id = #{memberId}
+ </update>
+
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/platform/PlatformSymbolsCoinDao.xml b/src/main/resources/mapper/platform/PlatformSymbolsCoinDao.xml
index dc1328b..63033e5 100644
--- a/src/main/resources/mapper/platform/PlatformSymbolsCoinDao.xml
+++ b/src/main/resources/mapper/platform/PlatformSymbolsCoinDao.xml
@@ -15,5 +15,13 @@
a.id,
a. NAME
</select>
+
+ <select id="selectOneBySymbol" resultType="com.xcong.excoin.modules.platform.entity.PlatformSymbolsCoinEntity">
+ SELECT
+ *
+ FROM
+ platform_symbols_coin a
+ where a.name = #{symbol}
+ </select>
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/platform/SysExceptionDetailDao.xml b/src/main/resources/mapper/platform/SysExceptionDetailDao.xml
new file mode 100644
index 0000000..21ac6c5
--- /dev/null
+++ b/src/main/resources/mapper/platform/SysExceptionDetailDao.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xcong.excoin.modules.platform.dao.SysExceptionDetailDao">
+
+</mapper>
\ No newline at end of file
--
Gitblit v1.9.1