From 22a1ada1fefc901e391279e01a251aa3c471e96a Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Thu, 18 Jun 2020 17:58:00 +0800 Subject: [PATCH] 20200618 代码提交 --- src/main/resources/mapper/modules/MemberQuickBuySaleMapper.xml | 5 src/main/java/com/xcong/excoin/modules/member/entity/MemberAccountMoneyChangeEntity.java | 26 src/main/java/com/xcong/excoin/modules/trademanage/mapper/MemberWalletAgentMapper.java | 8 src/main/java/com/xcong/excoin/modules/trademanage/mapper/ContractOrderMapper.java | 15 src/main/resources/templates/febs/views/modules/member/chargeUsdt.html | 2 src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinWithdrawEntity.java | 2 src/main/java/com/xcong/excoin/modules/trademanage/controller/TradeManageController.java | 66 + src/main/java/com/xcong/excoin/modules/trademanage/service/TradeManageService.java | 26 src/main/java/com/xcong/excoin/modules/member/mapper/MemberAccountMoneyChangeMapper.java | 7 src/main/resources/mapper/modules/MemberAccountMoneyChangeMapper.xml | 30 src/main/resources/mapper/modules/MemberMapper.xml | 34 src/main/java/com/xcong/excoin/modules/member/vo/MemberCoinWithdrawVo.java | 2 src/main/resources/mapper/modules/ContractHoldOrderEntityMapper.xml | 20 src/main/java/com/xcong/excoin/common/utils/RedisUtils.java | 554 ++++++++++++++++ src/main/java/com/xcong/excoin/modules/trademanage/entity/MemberWalletAgentEntity.java | 60 + src/main/java/com/xcong/excoin/modules/trademanage/service/impl/TradeManageServiceImpl.java | 131 +++ src/main/resources/templates/febs/views/modules/trademanage/agentReturnInfo.html | 116 +++ src/main/resources/templates/febs/views/modules/member/extractUsdt.html | 6 src/main/java/com/xcong/excoin/modules/trademanage/dto/MemberAccountInfoDto.java | 11 src/main/java/com/xcong/excoin/modules/member/mapper/MemberMapper.java | 8 src/main/java/com/xcong/excoin/common/utils/CoinTypeConvert.java | 50 + src/main/java/com/xcong/excoin/modules/member/vo/MemberQuickBuySaleVo.java | 2 src/main/java/com/xcong/excoin/modules/trademanage/vo/MemberAccountInfoVo.java | 55 + src/main/resources/mapper/modules/MemberCoinChargeMapper.xml | 2 src/main/resources/templates/febs/views/modules/member/applyCoin.html | 2 src/main/java/com/xcong/excoin/modules/member/vo/MemberCoinChargeVo.java | 6 src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java | 1 src/main/resources/mapper/modules/MemberCoinWithdrawMapper.xml | 2 src/main/java/com/xcong/excoin/modules/member/vo/MemberQuickSaleVo.java | 2 src/main/java/com/xcong/excoin/modules/trademanage/entity/ContractHoldOrderEntity.java | 28 /dev/null | 20 src/main/resources/templates/febs/views/modules/member/withdrawCoin.html | 2 src/main/java/com/xcong/excoin/modules/trademanage/entity/ContractOrderEntity.java | 217 ++++++ src/main/resources/templates/febs/views/modules/trademanage/contractHoldOrder.html | 104 +- src/main/resources/mapper/modules/ContractOrderMapper.xml | 21 src/main/java/com/xcong/excoin/modules/trademanage/mapper/ContractHoldOrderEntityMapper.java | 10 src/main/resources/templates/febs/views/modules/trademanage/accountInfo.html | 107 +++ src/main/resources/templates/febs/views/modules/trademanage/historyOrder.html | 197 +++++ src/main/java/com/xcong/excoin/modules/trademanage/controller/ViewController.java | 35 + 39 files changed, 1,905 insertions(+), 87 deletions(-) diff --git a/src/main/java/com/xcong/excoin/common/utils/CoinTypeConvert.java b/src/main/java/com/xcong/excoin/common/utils/CoinTypeConvert.java new file mode 100644 index 0000000..ef93a58 --- /dev/null +++ b/src/main/java/com/xcong/excoin/common/utils/CoinTypeConvert.java @@ -0,0 +1,50 @@ +package com.xcong.excoin.common.utils; + +/** + * @author wzy + * @date 2020-05-28 + **/ +public class CoinTypeConvert { + + public static String convert(String symbol) { + switch (symbol) { + case "btcusdt": + return "BTC/USDT"; + case "ethusdt": + return "ETH/USDT"; + case "xrpusdt": + return "XRP/USDT"; + case "ltcusdt": + return "LTC/USDT"; + case "bchusdt": + return "BCH/USDT"; + case "eosusdt": + return "EOS/USDT"; + case "etcusdt": + return "ETC/USDT"; + default: + return null; + } + } + + public static String convertToKey(String symbol) { + switch (symbol) { + case "BTC/USDT": + return "BTC_NEW_PRICE"; + case "ETH/USDT": + return "ETH_NEW_PRICE"; + case "XRP/USDT": + return "XRP_NEW_PRICE"; + case "LTC/USDT": + return "LTC_NEW_PRICE"; + case "BCH/USDT": + return "BCH_NEW_PRICE"; + case "EOS/USDT": + return "EOS_NEW_PRICE"; + case "ETC/USDT": + return "ETC_NEW_PRICE"; + default: + return null; + } + } +} diff --git a/src/main/java/com/xcong/excoin/common/utils/RedisUtils.java b/src/main/java/com/xcong/excoin/common/utils/RedisUtils.java new file mode 100644 index 0000000..7cec755 --- /dev/null +++ b/src/main/java/com/xcong/excoin/common/utils/RedisUtils.java @@ -0,0 +1,554 @@ +package com.xcong.excoin.common.utils; + +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.TimeUnit; + +/** + * @Author wzy + * @Date 2020/5/10 + * @email wangdoubleone@gmail.com + * @Version V1.0 + **/ +@Component +public class RedisUtils { + + + @Resource + private RedisTemplate<String, Object> redisTemplate; + + + // =============================common============================ + /** + * 指定缓存失效时间 + * @param key 键 + * @param time 时间(秒) + * @return + */ + public boolean expire(String key, long time) { + try { + if (time > 0) { + redisTemplate.expire(key, time, TimeUnit.SECONDS); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 根据key 获取过期时间 + * @param key 键 不能为null + * @return 时间(秒) 返回0代表为永久有效 + */ + public long getExpire(String key) { + return redisTemplate.getExpire(key, TimeUnit.SECONDS); + } + + /** + * 判断key是否存在 + * @param key 键 + * @return true 存在 false不存在 + */ + public boolean hasKey(String key) { + try { + return redisTemplate.hasKey(key); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 删除缓存 + * @param key 可以传一个值 或多个 + */ + @SuppressWarnings("unchecked") + public void del(String... key) { + if (key != null && key.length > 0) { + if (key.length == 1) { + redisTemplate.delete(key[0]); + } else { + redisTemplate.delete(CollectionUtils.arrayToList(key)); + } + } + } + + // ============================String============================= + /** + * 普通缓存获取 + * @param key 键 + * @return 值 + */ + public Object get(String key) { + return key == null ? null : redisTemplate.opsForValue().get(key); + } + + + /** + * 普通缓存获取 + * @param key 键 + * @return 值 + */ + public String getString(String key) { + Object obj = key == null ? null : redisTemplate.opsForValue().get(key); + if(obj!=null){ + return obj.toString(); + } + return null; + } + + /** + * 普通缓存放入 + * @param key 键 + * @param value 值 + * @return true成功 false失败 + */ + public boolean set(String key, Object value) { + try { + redisTemplate.opsForValue().set(key, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 普通缓存放入并设置时间 + * @param key 键 + * @param value 值 + * @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期 + * @return true成功 false 失败 + */ + public boolean set(String key, Object value, long time) { + try { + if (time > 0) { + redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS); + } else { + set(key, value); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + public boolean setNotExist(String key, Object value, long time) { + return redisTemplate.opsForValue().setIfAbsent(key, value, time, TimeUnit.SECONDS); + } + + /** + * 递增 + * @param key 键 + * @param delta 要增加几(大于0) + * @return + */ + public long incr(String key, long delta) { + if (delta < 0) { + throw new RuntimeException("递增因子必须大于0"); + } + return redisTemplate.opsForValue().increment(key, delta); + } + + /** + * 递减 + * @param key 键 + * @param delta 要减少几(小于0) + * @return + */ + public long decr(String key, long delta) { + if (delta < 0) { + throw new RuntimeException("递减因子必须大于0"); + } + return redisTemplate.opsForValue().increment(key, -delta); + } + + + // ================================Map================================= + + /** + * HashGet + * @param key 键 不能为null + * @param item 项 不能为null + * @return 值 + */ + public Object hget(String key, String item) { + return redisTemplate.opsForHash().get(key, item); + } + + /** + * 获取hashKey对应的所有键值 + * @param key 键 + * @return 对应的多个键值 + */ + public Map<Object, Object> hmget(String key) { + return redisTemplate.opsForHash().entries(key); + } + /** + * HashSet + + * @param key 键 + * @param map 对应多个键值 + * @return true 成功 false 失败 + */ + public boolean hmset(String key, Map<String, Object> map) { + try { + redisTemplate.opsForHash().putAll(key, map); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * HashSet 并设置时间 + * @param key 键 + * @param map 应多个键值 + * @param time 时间(秒) + * @return true成功 false失败 + */ + public boolean hmset(String key, Map<String, Object> map, long time) { + try { + redisTemplate.opsForHash().putAll(key, map); + if (time > 0) { + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + + /** + * 向一张hash表中放入数据,如果不存在将创建 + * @param key 键 + * @param item 项 + * @param value 值 + * @return true 成功 false失败 + */ + public boolean hset(String key, String item, Object value) { + try { + redisTemplate.opsForHash().put(key, item, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 向一张hash表中放入数据,如果不存在将创建 + * @param key 键 + * @param item 项 + * @param value 值 + * @param time 时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间 + * @return true 成功 false失败 + */ + public boolean hset(String key, String item, Object value, long time) { + try { + redisTemplate.opsForHash().put(key, item, value); + if (time > 0) { + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 删除hash表中的值 + * @param key 键 不能为null + * @param item 项 可以使多个 不能为null + */ + public void hdel(String key, Object... item) { + redisTemplate.opsForHash().delete(key, item); + } + /** + * 判断hash表中是否有该项的值 + * @param key 键 不能为null + * @param item 项 不能为null + * @return true 存在 false不存在 + */ + public boolean hHasKey(String key, String item) { + return redisTemplate.opsForHash().hasKey(key, item); + } + + /** + * hash递增 如果不存在,就会创建一个 并把新增后的值返回 + * @param key 键 + * @param item 项 + * @param by 要增加几(大于0) + * @return + */ + public double hincr(String key, String item, double by) { + return redisTemplate.opsForHash().increment(key, item, by); + } + + /** + * hash递减 + * @param key 键 + * @param item 项 + * @param by 要减少记(小于0) + * @return + */ + public double hdecr(String key, String item, double by) { + return redisTemplate.opsForHash().increment(key, item, -by); + } + // ============================set============================= + /** + * 根据key获取Set中的所有值 + * @param key 键 + * @return + */ + public Set<Object> sGet(String key) { + try { + return redisTemplate.opsForSet().members(key); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + /** + * 根据value从一个set中查询,是否存在 + * @param key 键 + * @param value 值 + * @return true 存在 false不存在 + */ + public boolean sHasKey(String key, Object value) { + try { + return redisTemplate.opsForSet().isMember(key, value); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 将数据放入set缓存 + * @param key 键 + * @param values 值 可以是多个 + * @return 成功个数 + */ + public long sSet(String key, Object... values) { + try { + return redisTemplate.opsForSet().add(key, values); + } catch (Exception e) { + e.printStackTrace(); + + return 0; + } + } + /** + 336 + * 将set数据放入缓存 + 337 + * @param key 键 + * @param time 时间(秒) + * @param values 值 可以是多个 + * @return 成功个数 + */ + public long sSetAndTime(String key, long time, Object... values) { + try { + Long count = redisTemplate.opsForSet().add(key, values); + if (time > 0) + expire(key, time); + return count; + + }catch(Exception e) { + e.printStackTrace(); + return 0; + } + } + /** + * 获取set缓存的长度 + * @param key 键 + * @return + */ + + public long sGetSetSize(String key) { + try { + return redisTemplate.opsForSet().size(key); + + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + + } + + /** + * 移除值为value的 + * @param key 键 + * @param values 值 可以是多个 + * @return 移除的个数 + + */ + public long setRemove(String key, Object... values) { + try { + Long count = redisTemplate.opsForSet().remove(key, values); + return count; + + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + // ===============================list================================= + /** + * 获取list缓存的内容 * @param key 键 + * @param start 开始 + * @param end 结束 0 到 -1代表所有值 + * @return + */ + public List<Object> lGet(String key, long start, long end) { + try { + return redisTemplate.opsForList().range(key, start, end); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + + } + + /** + * 获取list缓存的长度 + * @param key 键 + + * @return + */ + public long lGetListSize(String key) { try { + return redisTemplate.opsForList().size(key); + } catch (Exception e) { + + e.printStackTrace(); + return 0; + } + } /** + * 通过索引 获取list中的值 + * @param key 键 + * @param index 索引 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推 + * @return + */ + public Object lGetIndex(String key, long index) { + + try { + return redisTemplate.opsForList().index(key, index); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * 将list放入缓存 + * @param key 键 + * @param value 值 + * @return + */ + public boolean lSet(String key, Object value) { + try { + redisTemplate.opsForList().rightPush(key, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 将list放入缓存 + * @param key 键 + * @param value 值 + * @param time 时间(秒) + * @return + */ + public boolean lSet(String key, Object value, long time) { + try { + redisTemplate.opsForList().rightPush(key, value); + if (time > 0) + expire(key, time); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 将list放入缓存 + * @param key 键 + * @param value 值 + * @return + */ + public boolean lSet(String key, List<Object> value) { + try { + redisTemplate.opsForList().rightPushAll(key, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 将list放入缓存 + * + * @param key 键 + * @param value 值 + * @param time 时间(秒) + * @return + */ + public boolean lSet(String key, List<Object> value, long time) { + try { + redisTemplate.opsForList().rightPushAll(key, value); + if (time > 0) + expire(key, time); + return true; + + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + /** + * 根据索引修改list中的某条数据 + * @param key 键 + * @param index 索引 + * @param value 值 + * @return + */ + public boolean lUpdateIndex(String key, long index, Object value) { + try { + redisTemplate.opsForList().set(key, index, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + + /** + * 移除N个值为value + * @param key 键 + * @param count 移除多少个 + * @param value 值 + * @return 移除的个数 + */ + public long lRemove(String key, long count, Object value) { + try { + return redisTemplate.opsForList().remove(key, count, value); + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } +} 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 4707454..be7967d 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 @@ -10,7 +10,6 @@ import com.xcong.excoin.modules.member.entity.MemberEntity; import com.xcong.excoin.modules.member.entity.MemberQuickBuySaleEntity; import com.xcong.excoin.modules.member.service.IMemberService; -import com.xcong.excoin.system.entity.User; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/com/xcong/excoin/modules/member/entity/MemberAccountMoneyChangeEntity.java b/src/main/java/com/xcong/excoin/modules/member/entity/MemberAccountMoneyChangeEntity.java index 8fc79fd..c0ceb88 100644 --- a/src/main/java/com/xcong/excoin/modules/member/entity/MemberAccountMoneyChangeEntity.java +++ b/src/main/java/com/xcong/excoin/modules/member/entity/MemberAccountMoneyChangeEntity.java @@ -1,8 +1,11 @@ package com.xcong.excoin.modules.member.entity; import java.math.BigDecimal; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; import com.xcong.excoin.common.entity.BaseEntity; import lombok.Data; @@ -11,6 +14,10 @@ @TableName("member_account_money_change") public class MemberAccountMoneyChangeEntity extends BaseEntity { private static final long serialVersionUID = 1L; + + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; /** * 类型【1:币币资产2:合约资产3:代理资产】 @@ -48,5 +55,24 @@ * 状态【0:待审核 1:成功2:失败】 */ private int status; + + /** + * 手机号(包含国际手机号) + */ + @TableField(exist = false) + private String phone; + /** + * 邮箱 + */ + @TableField(exist = false) + private String email; + + @TableField(exist = false) + private String account; + /** + * 邀请码 + */ + @TableField(exist = false) + private String inviteId; } diff --git a/src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinWithdrawEntity.java b/src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinWithdrawEntity.java index d45e2dd..0da4e59 100644 --- a/src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinWithdrawEntity.java +++ b/src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinWithdrawEntity.java @@ -1,8 +1,6 @@ package com.xcong.excoin.modules.member.entity; import java.math.BigDecimal; -import java.util.Date; - import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.xcong.excoin.common.entity.BaseEntity; diff --git a/src/main/java/com/xcong/excoin/modules/member/mapper/MemberAccountMoneyChangeMapper.java b/src/main/java/com/xcong/excoin/modules/member/mapper/MemberAccountMoneyChangeMapper.java index 0e429d8..b56a692 100644 --- a/src/main/java/com/xcong/excoin/modules/member/mapper/MemberAccountMoneyChangeMapper.java +++ b/src/main/java/com/xcong/excoin/modules/member/mapper/MemberAccountMoneyChangeMapper.java @@ -1,8 +1,15 @@ package com.xcong.excoin.modules.member.mapper; +import org.apache.ibatis.annotations.Param; + import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.xcong.excoin.modules.member.entity.MemberAccountMoneyChangeEntity; public interface MemberAccountMoneyChangeMapper extends BaseMapper<MemberAccountMoneyChangeEntity> { + IPage<MemberAccountMoneyChangeEntity> findMemberAccountInfoListInPage(Page<MemberAccountMoneyChangeEntity> page, + @Param("record") MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity); + } diff --git a/src/main/java/com/xcong/excoin/modules/member/mapper/MemberMapper.java b/src/main/java/com/xcong/excoin/modules/member/mapper/MemberMapper.java index 2780518..7d4cdb7 100644 --- a/src/main/java/com/xcong/excoin/modules/member/mapper/MemberMapper.java +++ b/src/main/java/com/xcong/excoin/modules/member/mapper/MemberMapper.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.xcong.excoin.modules.member.entity.MemberEntity; +import com.xcong.excoin.modules.trademanage.vo.MemberAccountInfoVo; + import org.apache.ibatis.annotations.Param; /** @@ -13,5 +15,11 @@ public interface MemberMapper extends BaseMapper<MemberEntity> { IPage<MemberEntity> selectMemberListInPage(Page<MemberEntity> page, @Param("record") MemberEntity memberEntity); + + IPage<MemberAccountInfoVo> findMemberAccountInfoListInPage(Page<MemberEntity> page, @Param("record")MemberEntity memberEntity); + + String selectAgentForAccount(long memberId); + + String selectTradeSetting(); } diff --git a/src/main/java/com/xcong/excoin/modules/member/vo/MemberCoinChargeVo.java b/src/main/java/com/xcong/excoin/modules/member/vo/MemberCoinChargeVo.java index f1b5993..235f03d 100644 --- a/src/main/java/com/xcong/excoin/modules/member/vo/MemberCoinChargeVo.java +++ b/src/main/java/com/xcong/excoin/modules/member/vo/MemberCoinChargeVo.java @@ -4,6 +4,7 @@ import java.util.Date; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.fasterxml.jackson.annotation.JsonFormat; @@ -58,5 +59,10 @@ * 订单编号 */ private String orderCode; + + /** + * 邀请码 + */ + private String inviteId; } diff --git a/src/main/java/com/xcong/excoin/modules/member/vo/MemberCoinWithdrawVo.java b/src/main/java/com/xcong/excoin/modules/member/vo/MemberCoinWithdrawVo.java index 1ddfa0b..e101546 100644 --- a/src/main/java/com/xcong/excoin/modules/member/vo/MemberCoinWithdrawVo.java +++ b/src/main/java/com/xcong/excoin/modules/member/vo/MemberCoinWithdrawVo.java @@ -55,5 +55,7 @@ * 是否内部转账 Y-是N-不是 */ private String isInside; + + private String inviteId; } diff --git a/src/main/java/com/xcong/excoin/modules/member/vo/MemberQuickBuySaleVo.java b/src/main/java/com/xcong/excoin/modules/member/vo/MemberQuickBuySaleVo.java index 2df927f..579e470 100644 --- a/src/main/java/com/xcong/excoin/modules/member/vo/MemberQuickBuySaleVo.java +++ b/src/main/java/com/xcong/excoin/modules/member/vo/MemberQuickBuySaleVo.java @@ -60,5 +60,7 @@ * 订单编号 */ private String orderNo; + + private String inviteId; } diff --git a/src/main/java/com/xcong/excoin/modules/member/vo/MemberQuickSaleVo.java b/src/main/java/com/xcong/excoin/modules/member/vo/MemberQuickSaleVo.java index dd6933e..ed221eb 100644 --- a/src/main/java/com/xcong/excoin/modules/member/vo/MemberQuickSaleVo.java +++ b/src/main/java/com/xcong/excoin/modules/member/vo/MemberQuickSaleVo.java @@ -69,5 +69,7 @@ * 订单编号 */ private String orderNo; + + private String inviteId; } diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/controller/ContractHoldOrderController.java b/src/main/java/com/xcong/excoin/modules/trademanage/controller/ContractHoldOrderController.java deleted file mode 100644 index 36b5e95..0000000 --- a/src/main/java/com/xcong/excoin/modules/trademanage/controller/ContractHoldOrderController.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.xcong.excoin.modules.trademanage.controller; - -import java.util.Map; - -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.xcong.excoin.common.controller.BaseController; -import com.xcong.excoin.common.entity.FebsResponse; -import com.xcong.excoin.common.entity.QueryRequest; -import com.xcong.excoin.modules.trademanage.entity.ContractHoldOrderEntity; -import com.xcong.excoin.modules.trademanage.service.ContractHoldOrderService; - -import lombok.RequiredArgsConstructor; - -/** - * 当前持仓订单列表 - */ -@Validated -@RestController -@RequiredArgsConstructor -@RequestMapping(value = "/contractHoldOrder") -public class ContractHoldOrderController extends BaseController{ - - private final ContractHoldOrderService contractHoldOrderService; - - @GetMapping("getList") - public FebsResponse getList(ContractHoldOrderEntity contractHoldOrderEntity, QueryRequest request) { - IPage<ContractHoldOrderEntity> findMemberListInPage = contractHoldOrderService.findContractHoldOrderListInPage(contractHoldOrderEntity, request); - Map<String, Object> data = getDataTable(findMemberListInPage); - return new FebsResponse().success().data(data); - } - - -} diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/controller/TradeManageController.java b/src/main/java/com/xcong/excoin/modules/trademanage/controller/TradeManageController.java new file mode 100644 index 0000000..3848095 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/trademanage/controller/TradeManageController.java @@ -0,0 +1,66 @@ +package com.xcong.excoin.modules.trademanage.controller; + +import java.util.Map; + +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.xcong.excoin.common.controller.BaseController; +import com.xcong.excoin.common.entity.FebsResponse; +import com.xcong.excoin.common.entity.QueryRequest; +import com.xcong.excoin.modules.member.entity.MemberAccountMoneyChangeEntity; +import com.xcong.excoin.modules.member.entity.MemberEntity; +import com.xcong.excoin.modules.trademanage.entity.ContractHoldOrderEntity; +import com.xcong.excoin.modules.trademanage.entity.ContractOrderEntity; +import com.xcong.excoin.modules.trademanage.service.TradeManageService; + +import lombok.RequiredArgsConstructor; + +@Validated +@RestController +@RequiredArgsConstructor +@RequestMapping(value = "/tradeManage") +public class TradeManageController extends BaseController{ + + private final TradeManageService tradeManageService; + + /** + * 当前持仓---列表 + */ + @GetMapping("contractHoldOrder") + public FebsResponse getList(ContractHoldOrderEntity contractHoldOrderEntity, QueryRequest request) { + Map<String, Object> data = getDataTable(tradeManageService.findContractHoldOrderListInPage(contractHoldOrderEntity, request)); + return new FebsResponse().success().data(data); + } + + /** + * 账户信息---列表 + */ + @GetMapping("memberAccountInfo") + public FebsResponse memberAccountInfo(MemberEntity memberEntity, QueryRequest request) { + Map<String, Object> data = getDataTable(tradeManageService.findMemberAccountInfoListInPage(memberEntity, request)); + return new FebsResponse().success().data(data); + } + + /** + * 返佣明细---列表 + */ + @GetMapping("memberAgentReturnInfo") + public FebsResponse memberAgentReturnInfo(MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity, QueryRequest request) { + Map<String, Object> data = getDataTable(tradeManageService.findMemberAgentReturnInfoInPage(memberAccountMoneyChangeEntity, request)); + return new FebsResponse().success().data(data); + } + + /** + * 历史委托明细---列表 + */ + @GetMapping("historyOrderInfo") + public FebsResponse historyOrderInfo(ContractOrderEntity contractOrderEntity, QueryRequest request) { + Map<String, Object> data = getDataTable(tradeManageService.findMemberHistoryOrderInfoInPage(contractOrderEntity, request)); + return new FebsResponse().success().data(data); + } + + +} diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/controller/ViewController.java b/src/main/java/com/xcong/excoin/modules/trademanage/controller/ViewController.java index 4cb3ab6..d5bf587 100644 --- a/src/main/java/com/xcong/excoin/modules/trademanage/controller/ViewController.java +++ b/src/main/java/com/xcong/excoin/modules/trademanage/controller/ViewController.java @@ -11,14 +11,47 @@ * @author wzy * @date 2020-06-10 **/ -@Controller("contractHoldOrderView") +@Controller("tradeManageView") @RequestMapping(FebsConstant.VIEW_PREFIX + "modules/trademanage") public class ViewController { + /** + * 当前持仓 + */ @GetMapping("contractHoldOrder") @RequiresPermissions("contractHoldOrder:view") public String contractHoldOrder() { return FebsUtil.view("modules/trademanage/contractHoldOrder"); } + /** + * 账户信息 + * @return + */ + @GetMapping("accountInfo") + @RequiresPermissions("accountInfo:view") + public String accountInfo() { + return FebsUtil.view("modules/trademanage/accountInfo"); + } + + /** + * 返佣明细 + * @return + */ + @GetMapping("agentReturnInfo") + @RequiresPermissions("agentReturnInfo:view") + public String agentReturnInfo() { + return FebsUtil.view("modules/trademanage/agentReturnInfo"); + } + + /** + * 历史委托明细 + * @return + */ + @GetMapping("historyOrder") + @RequiresPermissions("historyOrder:view") + public String historyOrder() { + return FebsUtil.view("modules/trademanage/historyOrder"); + } + } diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/dto/MemberAccountInfoDto.java b/src/main/java/com/xcong/excoin/modules/trademanage/dto/MemberAccountInfoDto.java new file mode 100644 index 0000000..8214c42 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/trademanage/dto/MemberAccountInfoDto.java @@ -0,0 +1,11 @@ +package com.xcong.excoin.modules.trademanage.dto; + +import com.baomidou.mybatisplus.annotation.TableField; + +import lombok.Data; +@Data +public class MemberAccountInfoDto { + @TableField(exist = false) + private String account; + +} diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/entity/ContractHoldOrderEntity.java b/src/main/java/com/xcong/excoin/modules/trademanage/entity/ContractHoldOrderEntity.java index 4257bd7..dec05f7 100644 --- a/src/main/java/com/xcong/excoin/modules/trademanage/entity/ContractHoldOrderEntity.java +++ b/src/main/java/com/xcong/excoin/modules/trademanage/entity/ContractHoldOrderEntity.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.entity.BaseEntity; @@ -18,6 +19,10 @@ public class ContractHoldOrderEntity extends BaseEntity { /** + * + */ + private static final long serialVersionUID = 1L; + /** * 是否可平仓 1-是 */ public static final int ORDER_CAN_CLOSING_Y = 1; @@ -147,4 +152,27 @@ * 批次号 队列平仓时使用,避免重复 */ public String batchNo; + + /** + * 手机号(包含国际手机号) + */ + @TableField(exist = false) + private String phone; + /** + * 邮箱 + */ + @TableField(exist = false) + private String email; + @TableField(exist = false) + private String account; + /** + * 邀请码 + */ + @TableField(exist = false) + private String inviteId; + /** + * 系统盈亏 + */ + @TableField(exist = false) + private BigDecimal rewardRatio; } diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/entity/ContractOrderEntity.java b/src/main/java/com/xcong/excoin/modules/trademanage/entity/ContractOrderEntity.java new file mode 100644 index 0000000..468c481 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/trademanage/entity/ContractOrderEntity.java @@ -0,0 +1,217 @@ +package com.xcong.excoin.modules.trademanage.entity; + +import java.math.BigDecimal; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.xcong.excoin.common.entity.BaseEntity; + +import lombok.Data; + +@Data +@TableName("contract_order") +public class ContractOrderEntity extends BaseEntity {/** + * + */ + private static final long serialVersionUID = 1L; + /** + * 交易类型 市价 + */ + public static final int TRADE_TYPE_MARK_PRICE = 1; + + /** + * 交易类型 限价 + */ + public static final int TRADE_TYPE_LIMIT_PRICE = 2; + + /** + * 订单状态 撤单 + */ + public static final int ORDER_STATUS_CANCEL = 2; + + /** + * 订单状态 成交 + */ + public static final int ORDER_STATUS_SUCCESS = 1; + + /** + * 订单类型 开多 + */ + public static final int ORDER_TYPE_OPEN_MORE = 1; + + /** + * 订单类型 开空 + */ + public static final int ORDER_TYPE_OPEN_LESS = 2; + + /** + * 订单类型 平多 + */ + public static final int ORDER_TYPE_CLOSE_MORE = 3; + + /** + * 订单类型 平空 + */ + public static final int ORDER_TYPE_CLOSE_LESS = 4; + + + /** + * 会员Id + */ + private Long memberId; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 仓位类型 1-逐仓 2-全仓 + */ + private int positionType; + + /** + * 交易类型 1-市价 2-限价 + */ + private int tradeType; + + /** + * 订单类型 - 1开多,2开空,3平多,4平空 + */ + private int orderType; + + /** + * 订单状态 - 1成交 2撤单 + */ + private int orderStatus = 1; + + /** + * 委托开仓价 + */ + private BigDecimal entrustOpeningPrice; + + /** + * 委托时间 + */ + private Date entrustTime; + + /** + * 币种 + */ + private String symbol; + + /** + * 手数 + */ + private int symbolCnt; + + /** + * 币种规格 + */ + private BigDecimal symbolSku; + + /** + * 平仓价 + */ + private BigDecimal closingPrice; + + /** + * 平仓手续费 + */ + private BigDecimal closingFeeAmount; + + /** + * 平仓时间 + */ + private Date closingTime; + + /** + * 平仓类型 2平多3平空4爆仓平多5爆仓平空6止盈平多7止盈平空8止损平多9止损平空 + */ + private int closingType; + + /** + * 杠杆倍率 + */ + private int leverRatio; + + /** + * 止损价 + */ + private BigDecimal stopLossPrice; + + /** + * 止盈价 + */ + private BigDecimal stopProfitPrice; + + /** + * 盈亏金额 + */ + private BigDecimal rewardAmount; + + /** + * 盈亏比例 + */ + private BigDecimal rewardRatio; + + /** + * 开仓价 + */ + private BigDecimal openingPrice; + + /** + * 开仓手续费 + */ + private BigDecimal openingFeeAmount; + + private Date openingTime; + + /** + * 预付款金额 + */ + private BigDecimal prePaymentAmount; + + /** + * 保证金 + */ + private BigDecimal bondAmount; + + /** + * 市场价 + */ + private BigDecimal markPrice; + + /** + * 预估强平价 + */ + private BigDecimal forceClosingPrice; + + /** + * 持仓费 + */ + private BigDecimal holdAmount; + + private int operateNo; + + /** + * 手机号(包含国际手机号) + */ + @TableField(exist = false) + private String phone; + /** + * 邮箱 + */ + @TableField(exist = false) + private String email; + @TableField(exist = false) + private String account; + /** + * 邀请码 + */ + @TableField(exist = false) + private String inviteId; + + +} diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/entity/MemberWalletAgentEntity.java b/src/main/java/com/xcong/excoin/modules/trademanage/entity/MemberWalletAgentEntity.java new file mode 100644 index 0000000..66f5150 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/trademanage/entity/MemberWalletAgentEntity.java @@ -0,0 +1,60 @@ +package com.xcong.excoin.modules.trademanage.entity; + +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.xcong.excoin.common.entity.BaseEntity; + +import lombok.Data; + +/** + * 代理用户钱包 + * + * @author wzy + * @date 2020-05-18 + **/ +@Data +@TableName("member_wallet_agent") +public class MemberWalletAgentEntity extends BaseEntity { + + /** + * + */ + private static final long serialVersionUID = 1L; + + /** + * 用户Id + */ + private Long memberId; + + /** + * 可用余额 + */ + private BigDecimal availableBalance; + + /** + * 总金额 + */ + private BigDecimal totalBalance; + + /** + * 冻结金额 + */ + private BigDecimal frozenBalance; + + /** + * 借入资产金额 + */ + private BigDecimal borrowedFund; + + /** + * 钱包标识 + */ + private String walletCode; + + /** + * 钱包地址 + */ + private String walletAddress; + +} diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/mapper/ContractHoldOrderEntityMapper.java b/src/main/java/com/xcong/excoin/modules/trademanage/mapper/ContractHoldOrderEntityMapper.java index 9dcfc86..1c94218 100644 --- a/src/main/java/com/xcong/excoin/modules/trademanage/mapper/ContractHoldOrderEntityMapper.java +++ b/src/main/java/com/xcong/excoin/modules/trademanage/mapper/ContractHoldOrderEntityMapper.java @@ -1,22 +1,14 @@ package com.xcong.excoin.modules.trademanage.mapper; import org.apache.ibatis.annotations.Param; -import org.mapstruct.Mapper; - import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.xcong.excoin.modules.trademanage.entity.ContractHoldOrderEntity; -/** - * @author wzy - * @date 2020-05-31 - **/ -@Mapper public interface ContractHoldOrderEntityMapper extends BaseMapper<ContractHoldOrderEntity> { IPage<ContractHoldOrderEntity> selectContractHoldOrderListInPage(Page<ContractHoldOrderEntity> page, - @Param("contractHoldOrderEntity") ContractHoldOrderEntity contractHoldOrderEntity); + @Param("record") ContractHoldOrderEntity contractHoldOrderEntity); - long countContractHoldOrderSql(@Param("contractHoldOrderEntity") ContractHoldOrderEntity contractHoldOrderEntity); } diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/mapper/ContractOrderMapper.java b/src/main/java/com/xcong/excoin/modules/trademanage/mapper/ContractOrderMapper.java new file mode 100644 index 0000000..1082687 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/trademanage/mapper/ContractOrderMapper.java @@ -0,0 +1,15 @@ +package com.xcong.excoin.modules.trademanage.mapper; + +import org.apache.ibatis.annotations.Param; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.xcong.excoin.modules.trademanage.entity.ContractOrderEntity; + +public interface ContractOrderMapper extends BaseMapper<ContractOrderEntity> { + + IPage<ContractOrderEntity> findMemberHistoryOrderInfoInPage(Page<ContractOrderEntity> page, + @Param("record") ContractOrderEntity contractOrderEntity); + +} diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/mapper/MemberWalletAgentMapper.java b/src/main/java/com/xcong/excoin/modules/trademanage/mapper/MemberWalletAgentMapper.java new file mode 100644 index 0000000..4587d73 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/trademanage/mapper/MemberWalletAgentMapper.java @@ -0,0 +1,8 @@ +package com.xcong.excoin.modules.trademanage.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.xcong.excoin.modules.trademanage.entity.MemberWalletAgentEntity; + +public interface MemberWalletAgentMapper extends BaseMapper<MemberWalletAgentEntity>{ + +} diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/service/ContractHoldOrderService.java b/src/main/java/com/xcong/excoin/modules/trademanage/service/ContractHoldOrderService.java deleted file mode 100644 index f09ab25..0000000 --- a/src/main/java/com/xcong/excoin/modules/trademanage/service/ContractHoldOrderService.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.xcong.excoin.modules.trademanage.service; - -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.service.IService; -import com.xcong.excoin.common.entity.QueryRequest; -import com.xcong.excoin.modules.trademanage.entity.ContractHoldOrderEntity; - -/** - * @author helius - */ -public interface ContractHoldOrderService extends IService<ContractHoldOrderEntity> { - - IPage<ContractHoldOrderEntity> findContractHoldOrderListInPage(ContractHoldOrderEntity contractHoldOrderEntity, QueryRequest request); - -} diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/service/TradeManageService.java b/src/main/java/com/xcong/excoin/modules/trademanage/service/TradeManageService.java new file mode 100644 index 0000000..c5503ce --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/trademanage/service/TradeManageService.java @@ -0,0 +1,26 @@ +package com.xcong.excoin.modules.trademanage.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.xcong.excoin.common.entity.QueryRequest; +import com.xcong.excoin.modules.member.entity.MemberAccountMoneyChangeEntity; +import com.xcong.excoin.modules.member.entity.MemberEntity; +import com.xcong.excoin.modules.trademanage.entity.ContractHoldOrderEntity; +import com.xcong.excoin.modules.trademanage.entity.ContractOrderEntity; +import com.xcong.excoin.modules.trademanage.vo.MemberAccountInfoVo; + +/** + * @author helius + */ +public interface TradeManageService extends IService<ContractHoldOrderEntity> { + + IPage<ContractHoldOrderEntity> findContractHoldOrderListInPage(ContractHoldOrderEntity contractHoldOrderEntity, QueryRequest request); + + IPage<MemberAccountInfoVo> findMemberAccountInfoListInPage(MemberEntity memberEntity, QueryRequest request); + + IPage<MemberAccountMoneyChangeEntity> findMemberAgentReturnInfoInPage(MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity, + QueryRequest request); + + IPage<ContractOrderEntity> findMemberHistoryOrderInfoInPage(ContractOrderEntity contractOrderEntity, QueryRequest request); + +} diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/service/impl/ContractHoldOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/trademanage/service/impl/ContractHoldOrderServiceImpl.java deleted file mode 100644 index 87c55ad..0000000 --- a/src/main/java/com/xcong/excoin/modules/trademanage/service/impl/ContractHoldOrderServiceImpl.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.xcong.excoin.modules.trademanage.service.impl; - -import javax.annotation.Resource; - -import org.springframework.stereotype.Service; - -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.xcong.excoin.common.entity.QueryRequest; -import com.xcong.excoin.modules.trademanage.entity.ContractHoldOrderEntity; -import com.xcong.excoin.modules.trademanage.mapper.ContractHoldOrderEntityMapper; -import com.xcong.excoin.modules.trademanage.service.ContractHoldOrderService; - -@Service -public class ContractHoldOrderServiceImpl extends ServiceImpl<ContractHoldOrderEntityMapper, ContractHoldOrderEntity> implements ContractHoldOrderService{ - - @Resource - ContractHoldOrderEntityMapper contractHoldOrderEntityMapper; - - @Override - public IPage<ContractHoldOrderEntity> findContractHoldOrderListInPage( - ContractHoldOrderEntity contractHoldOrderEntity, QueryRequest request) { - Page<ContractHoldOrderEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); - return this.baseMapper.selectContractHoldOrderListInPage(page, contractHoldOrderEntity); - } - -} diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/service/impl/TradeManageServiceImpl.java b/src/main/java/com/xcong/excoin/modules/trademanage/service/impl/TradeManageServiceImpl.java new file mode 100644 index 0000000..46577cc --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/trademanage/service/impl/TradeManageServiceImpl.java @@ -0,0 +1,131 @@ +package com.xcong.excoin.modules.trademanage.service.impl; + + +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.xcong.excoin.common.entity.QueryRequest; +import com.xcong.excoin.common.utils.CoinTypeConvert; +import com.xcong.excoin.common.utils.RedisUtils; +import com.xcong.excoin.modules.member.entity.MemberAccountMoneyChangeEntity; +import com.xcong.excoin.modules.member.entity.MemberEntity; +import com.xcong.excoin.modules.member.mapper.MemberAccountMoneyChangeMapper; +import com.xcong.excoin.modules.member.mapper.MemberMapper; +import com.xcong.excoin.modules.trademanage.entity.ContractHoldOrderEntity; +import com.xcong.excoin.modules.trademanage.entity.ContractOrderEntity; +import com.xcong.excoin.modules.trademanage.entity.MemberWalletAgentEntity; +import com.xcong.excoin.modules.trademanage.mapper.ContractHoldOrderEntityMapper; +import com.xcong.excoin.modules.trademanage.mapper.ContractOrderMapper; +import com.xcong.excoin.modules.trademanage.mapper.MemberWalletAgentMapper; +import com.xcong.excoin.modules.trademanage.service.TradeManageService; +import com.xcong.excoin.modules.trademanage.vo.MemberAccountInfoVo; +import lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +public class TradeManageServiceImpl extends ServiceImpl<ContractHoldOrderEntityMapper, ContractHoldOrderEntity> implements TradeManageService{ + + private final ContractHoldOrderEntityMapper contractHoldOrderEntityMapper; + + private final MemberMapper memberMapper; + + private final MemberWalletAgentMapper memberWalletAgentMapper; + + private final MemberAccountMoneyChangeMapper memberAccountMoneyChangeMapper; + + private final ContractOrderMapper contractHoldOrderMapper; + + private final RedisUtils redisUtils; + + @Override + public IPage<ContractHoldOrderEntity> findContractHoldOrderListInPage( + ContractHoldOrderEntity contractHoldOrderEntity, QueryRequest request) { + Page<ContractHoldOrderEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); + IPage<ContractHoldOrderEntity> findMemberAccountInfoListInPage = contractHoldOrderEntityMapper.selectContractHoldOrderListInPage(page, contractHoldOrderEntity); + List<ContractHoldOrderEntity> records = findMemberAccountInfoListInPage.getRecords(); + + if (records != null) { + for (ContractHoldOrderEntity holdOrderEntity : records) { + MemberEntity selectById = memberMapper.selectById(holdOrderEntity.getMemberId()); + // 获取最新价 + BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(holdOrderEntity.getSymbol()))); + BigDecimal lotNumber = holdOrderEntity.getSymbolSku(); + // 盈亏 + BigDecimal rewardRatio = BigDecimal.ZERO; + // 开多 + if (ContractHoldOrderEntity.OPENING_TYPE_MORE == holdOrderEntity.getOpeningType()) { + // (最新价-开仓价)*规格*张数 + rewardRatio = newPrice.subtract(holdOrderEntity.getOpeningPrice()).multiply(lotNumber).multiply(new BigDecimal(holdOrderEntity.getSymbolCnt())); + // 开空 + } else { + // (开仓价-最新价)*规格*张数 + rewardRatio = holdOrderEntity.getOpeningPrice().subtract(newPrice).multiply(lotNumber).multiply(new BigDecimal(holdOrderEntity.getSymbolCnt())); + } + + if (selectById.getIsProfit() == MemberEntity.IS_PROFIT_Y) { + String selectTradeSetting = memberMapper.selectTradeSetting(); + BigDecimal profitParam=new BigDecimal(selectTradeSetting); + if (rewardRatio.compareTo(BigDecimal.ZERO) > -1) { + rewardRatio = rewardRatio.multiply(BigDecimal.ONE.subtract(profitParam)); + } else { + rewardRatio = rewardRatio.multiply(BigDecimal.ONE.add(profitParam)); + } + } + + holdOrderEntity.setRewardRatio(rewardRatio); + } + } + return findMemberAccountInfoListInPage; + } + + @Override + public IPage<MemberAccountInfoVo> findMemberAccountInfoListInPage(MemberEntity memberEntity, QueryRequest request) { + Page<MemberEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); + IPage<MemberAccountInfoVo> selectMemberListInPage = memberMapper.findMemberAccountInfoListInPage(page, memberEntity); + List<MemberAccountInfoVo> records = selectMemberListInPage.getRecords(); + if(records.size() > 0) { + for(MemberAccountInfoVo memberAccountInfoVo : records) { + Long memberId = memberAccountInfoVo.getId(); + String inviteId = memberMapper.selectAgentForAccount(memberId); + if("".equals(inviteId) || inviteId == null) { + memberAccountInfoVo.setIsSuAccount(0); + }else { + memberAccountInfoVo.setIsSuAccount(1); + } + Map<String, Object> columnMap = new HashMap<>(); + columnMap.put("member_id", memberId); + List<MemberWalletAgentEntity> selectByMap = memberWalletAgentMapper.selectByMap(columnMap); + if(selectByMap.size() > 0) { + BigDecimal availableBalance = selectByMap.get(0).getAvailableBalance(); + memberAccountInfoVo.setAgentAvailableBalance(availableBalance); + } + + } + } + return selectMemberListInPage; + } + + @Override + public IPage<MemberAccountMoneyChangeEntity> findMemberAgentReturnInfoInPage( + MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity, QueryRequest request) { + Page<MemberAccountMoneyChangeEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); + IPage<MemberAccountMoneyChangeEntity> findMemberAccountInfoListInPage = memberAccountMoneyChangeMapper.findMemberAccountInfoListInPage(page, memberAccountMoneyChangeEntity); + return findMemberAccountInfoListInPage; + } + + @Override + public IPage<ContractOrderEntity> findMemberHistoryOrderInfoInPage( + ContractOrderEntity contractOrderEntity, QueryRequest request) { + Page<ContractOrderEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); + IPage<ContractOrderEntity> findMemberAccountInfoListInPage = contractHoldOrderMapper.findMemberHistoryOrderInfoInPage(page, contractOrderEntity); + return findMemberAccountInfoListInPage; + } + +} diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/vo/MemberAccountInfoVo.java b/src/main/java/com/xcong/excoin/modules/trademanage/vo/MemberAccountInfoVo.java new file mode 100644 index 0000000..efd947b --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/trademanage/vo/MemberAccountInfoVo.java @@ -0,0 +1,55 @@ +package com.xcong.excoin.modules.trademanage.vo; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +@Data +public class MemberAccountInfoVo { + + @TableId(value = "id",type = IdType.AUTO) + private Long id; + /** + * 手机号(包含国际手机号) + */ + private String phone; + /** + * 邮箱 + */ + private String email; + private String inviteId; + /** + * 币币可用金额 + */ + private BigDecimal walletCoinAvailableBalance; + /** + * 币币总金额 + */ + private BigDecimal walletCoinTotalBalance; + /** + * 币币冻结金额 + */ + private BigDecimal walletCoinFrozenBalance; + /** + * 合约可用金额 + */ + private BigDecimal walletAvailableBalance; + /** + * 合约总金额 + */ + private BigDecimal walletTotalBalance; + /** + * 合约冻结金额 + */ + private BigDecimal walletFrozenBalance; + /** + * 是否是代理 + */ + private int isSuAccount; + /** + * 代理可用金额 + */ + private BigDecimal agentAvailableBalance; + +} diff --git a/src/main/resources/mapper/modules/ContractHoldOrderEntityMapper.xml b/src/main/resources/mapper/modules/ContractHoldOrderEntityMapper.xml new file mode 100644 index 0000000..be4ee04 --- /dev/null +++ b/src/main/resources/mapper/modules/ContractHoldOrderEntityMapper.xml @@ -0,0 +1,20 @@ +<?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.trademanage.mapper.ContractHoldOrderEntityMapper"> + + <select id="selectContractHoldOrderListInPage" resultType="com.xcong.excoin.modules.trademanage.entity.ContractHoldOrderEntity"> + SELECT + * + FROM + contract_hold_order s + LEFT JOIN member m ON m.id = s.member_id + <where> + <if test="record != null" > + <if test="record.account!=null and record.account!=''"> + and (m.phone = #{record.account} or m.email = #{record.account} or m.invite_id=#{record.account}) + </if> + </if> + </where> + </select> + +</mapper> \ No newline at end of file diff --git a/src/main/resources/mapper/modules/ContractOrderMapper.xml b/src/main/resources/mapper/modules/ContractOrderMapper.xml new file mode 100644 index 0000000..5bc1ccd --- /dev/null +++ b/src/main/resources/mapper/modules/ContractOrderMapper.xml @@ -0,0 +1,21 @@ +<?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.trademanage.mapper.ContractOrderMapper"> + + <select id="findMemberHistoryOrderInfoInPage" resultType="com.xcong.excoin.modules.trademanage.entity.ContractOrderEntity"> + SELECT + * + FROM + contract_order s + LEFT JOIN member m ON m.id = s.member_id + <where> + <if test="record != null" > + <if test="record.account!=null and record.account!=''"> + and (m.phone = #{record.account} or m.email = #{record.account} or m.invite_id=#{record.account}) + </if> + </if> + </where> + order by s.order_no DESC,s.create_time asc + </select> + +</mapper> \ No newline at end of file diff --git a/src/main/resources/mapper/modules/MemberAccountMoneyChangeMapper.xml b/src/main/resources/mapper/modules/MemberAccountMoneyChangeMapper.xml new file mode 100644 index 0000000..870285f --- /dev/null +++ b/src/main/resources/mapper/modules/MemberAccountMoneyChangeMapper.xml @@ -0,0 +1,30 @@ +<?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.member.mapper.MemberAccountMoneyChangeMapper"> + + <select id="findMemberAccountInfoListInPage" resultType="com.xcong.excoin.modules.member.entity.MemberAccountMoneyChangeEntity"> + SELECT + m.phone, + m.email, + m.invite_id inviteId, + s.symbol, + s.amount, + s.content, + s.create_time createTime, + s. STATUS, + s.type + FROM + member_account_money_change s + LEFT JOIN member m ON m.id = s.member_id + <where> + s.type = 3 + and s.content like '%佣金入账%' + <if test="record != null" > + <if test="record.account!=null and record.account!=''"> + and (m.phone = #{record.account} or m.email = #{record.account} or m.invite_id=#{record.account}) + </if> + </if> + </where> + </select> + +</mapper> \ No newline at end of file diff --git a/src/main/resources/mapper/modules/MemberCoinChargeMapper.xml b/src/main/resources/mapper/modules/MemberCoinChargeMapper.xml index c57cc3f..0017314 100644 --- a/src/main/resources/mapper/modules/MemberCoinChargeMapper.xml +++ b/src/main/resources/mapper/modules/MemberCoinChargeMapper.xml @@ -7,7 +7,7 @@ <where> <if test="record != null" > <if test="record.account!=null and record.account!=''"> - and (m.phone = #{record.account} or m.email = #{record.account} or s.member_id=#{record.account}) + and (m.phone = #{record.account} or m.email = #{record.account} or m.invite_id=#{record.account}) </if> <if test="record.address!=null and record.address!=''"> and s.address=#{record.address} diff --git a/src/main/resources/mapper/modules/MemberCoinWithdrawMapper.xml b/src/main/resources/mapper/modules/MemberCoinWithdrawMapper.xml index 2616c75..1bc3418 100644 --- a/src/main/resources/mapper/modules/MemberCoinWithdrawMapper.xml +++ b/src/main/resources/mapper/modules/MemberCoinWithdrawMapper.xml @@ -10,7 +10,7 @@ <where> <if test="record != null" > <if test="record.account!=null and record.account!=''"> - and (m.phone = #{record.account} or m.email = #{record.account} or s.member_id=#{record.account}) + and (m.phone = #{record.account} or m.email = #{record.account} or m.invite_id=#{record.account}) </if> <if test="record.isInside!=null and record.isInside!=''"> and s.is_inside= #{record.isInside} diff --git a/src/main/resources/mapper/modules/MemberMapper.xml b/src/main/resources/mapper/modules/MemberMapper.xml index 380a747..0e7783d 100644 --- a/src/main/resources/mapper/modules/MemberMapper.xml +++ b/src/main/resources/mapper/modules/MemberMapper.xml @@ -2,7 +2,6 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.xcong.excoin.modules.member.mapper.MemberMapper"> - <select id="selectMemberListInPage" resultType="com.xcong.excoin.modules.member.entity.MemberEntity"> select * from member <where> @@ -29,5 +28,38 @@ </where> order by create_time desc </select> + + <select id="findMemberAccountInfoListInPage" resultType="com.xcong.excoin.modules.trademanage.vo.MemberAccountInfoVo"> + SELECT + m.id, + m.phone, + m.email, + m.invite_id inviteId, + a.available_balance walletCoinAvailableBalance, + a.total_balance walletCoinTotalBalance, + a.frozen_balance walletCoinFrozenBalance, + b.available_balance walletAvailableBalance, + b.total_balance walletTotalBalance, + b.frozen_balance walletFrozenBalance + FROM + member m + LEFT JOIN member_wallet_coin b ON m.id = b.member_id + LEFT JOIN member_wallet_contract a ON a.member_id = m.id + <where> + b.wallet_code = 'USDT' + <if test="record.account!=null and record.account!=''"> + and (m.phone = #{record.account} or m.email = #{record.account} or m.invite_id=#{record.account}) + </if> + </where> + order by m.create_time desc + </select> + + <select id="selectAgentForAccount" resultType="java.lang.String"> + select invite_id from agent_friend_relation where member_id = #{memberId} + </select> + + <select id="selectTradeSetting" resultType="java.lang.String"> + select profit_param from platform_trade_setting + </select> </mapper> \ No newline at end of file diff --git a/src/main/resources/mapper/modules/MemberQuickBuySaleMapper.xml b/src/main/resources/mapper/modules/MemberQuickBuySaleMapper.xml index 1e6caa7..d6b9f41 100644 --- a/src/main/resources/mapper/modules/MemberQuickBuySaleMapper.xml +++ b/src/main/resources/mapper/modules/MemberQuickBuySaleMapper.xml @@ -9,7 +9,7 @@ s.order_type = 'B' <if test="record != null" > <if test="record.account!=null and record.account!=''"> - and (m.phone = #{record.account} or m.email = #{record.account} or s.member_id=#{record.account}) + and (m.phone = #{record.account} or m.email = #{record.account} or m.invite_id=#{record.account}) </if> <if test="record.orderStatus!=null and record.orderStatus!= 0" > and s.order_status = #{record.orderStatus} @@ -32,6 +32,7 @@ s.order_status orderStatus, m.name, m.account, + a.invite_id inviteId, m.payment_qrcode paymentQrcode, m.bank, m.payment_type paymentType, @@ -44,7 +45,7 @@ s.order_type = 'S' <if test="record != null" > <if test="record.account!=null and record.account!=''"> - and (a.phone = #{record.account} or a.email = #{record.account} or s.member_id=#{record.account}) + and (a.phone = #{record.account} or a.email = #{record.account} or a.invite_id=#{record.account}) </if> <if test="record.orderStatus!=null and record.orderStatus!= 0" > and s.order_status = #{record.orderStatus} diff --git a/src/main/resources/mapper/modules/contract/ContractHoldOrderDao.xml b/src/main/resources/mapper/modules/contract/ContractHoldOrderDao.xml deleted file mode 100644 index e9797fe..0000000 --- a/src/main/resources/mapper/modules/contract/ContractHoldOrderDao.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?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.trademanage.mapper.ContractHoldOrderEntityMapper"> - <sql id="countContractHoldOrderSql"> - SELECT - COUNT(1) - FROM - contract_hold_order - </sql> - - <sql id="findContractHoldOrderSql"> - SELECT a.* FROM contract_hold_order a - </sql> - - <select id="selectContractHoldOrderListInPage" - parameterType="contractHoldOrderEntity" resultType="contractHoldOrderEntity"> - <include refid="findContractHoldOrderSql" /> - </select> -</mapper> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/modules/member/applyCoin.html b/src/main/resources/templates/febs/views/modules/member/applyCoin.html index a66aa37..e2c4b21 100644 --- a/src/main/resources/templates/febs/views/modules/member/applyCoin.html +++ b/src/main/resources/templates/febs/views/modules/member/applyCoin.html @@ -105,7 +105,7 @@ cols: [[ {field: 'phone', title: '手机号码', minWidth: 120,align:'left'}, {field: 'email', title: '邮箱', minWidth: 200,align:'left'}, - {field: 'memberId', title: '邀请码UID', minWidth: 100,align:'center'}, + {field: 'inviteId', title: '邀请码UID', minWidth: 80,align:'center'}, {field: 'symbol', title: '币种', minWidth: 60,align:'center'}, {field: 'tag', title: 'USDT类型', minWidth: 60,align:'center'}, {field: 'amount', title: '充币数量', minWidth: 100,align:'center'}, diff --git a/src/main/resources/templates/febs/views/modules/member/chargeUsdt.html b/src/main/resources/templates/febs/views/modules/member/chargeUsdt.html index c73732b..8457960 100644 --- a/src/main/resources/templates/febs/views/modules/member/chargeUsdt.html +++ b/src/main/resources/templates/febs/views/modules/member/chargeUsdt.html @@ -166,7 +166,7 @@ cols: [[ {field: 'phone', title: '手机号码', minWidth: 120,align:'left'}, {field: 'email', title: '邮箱', minWidth: 200,align:'left'}, - {field: 'memberId', title: '邀请码UID', minWidth: 100,align:'center'}, + {field: 'inviteId', title: '邀请码UID', minWidth: 120,align:'center'}, {field: 'amountCny', title: '人民币金额', minWidth: 120,align:'center'}, {field: 'amountUsdt', title: 'USDT金额', minWidth: 120,align:'center'}, {field: 'unitPrice', title: '单价', minWidth: 80,align:'center'}, diff --git a/src/main/resources/templates/febs/views/modules/member/extractUsdt.html b/src/main/resources/templates/febs/views/modules/member/extractUsdt.html index ae18824..499fcd8 100644 --- a/src/main/resources/templates/febs/views/modules/member/extractUsdt.html +++ b/src/main/resources/templates/febs/views/modules/member/extractUsdt.html @@ -167,17 +167,17 @@ cols: [[ {field: 'phone', title: '手机号码', minWidth: 120,align:'left'}, {field: 'email', title: '邮箱', minWidth: 200,align:'left'}, - {field: 'memberId', title: '邀请码UID', minWidth: 100,align:'center'}, + {field: 'inviteId', title: '邀请码UID', minWidth: 80,align:'center'}, {field: 'amountCny', title: '人民币金额', minWidth: 120,align:'center'}, {field: 'amountUsdt', title: 'USDT金额', minWidth: 120,align:'center'}, {field: 'unitPrice', title: '单价', minWidth: 80,align:'center'}, {field: 'createTime', title: '提现时间', minWidth: 180,align:'center'}, {title: '提现状态', templet: '#order-Status', minWidth: 100,align:'center'}, - {field: 'orderNo', title: '订单编号', minWidth: 150,align:'center'}, + {title: '收款方式', templet: '#payment-Type', minWidth: 100,align:'center'}, {field: 'paymentQrcode', title: '支付码', minWidth: 120,align:'center'}, + {field: 'orderNo', title: '订单编号', minWidth: 150,align:'center'}, {field: 'name', title: '收款人', minWidth: 150,align:'center'}, {field: 'account', title: '收款账号', minWidth: 150,align:'center'}, - {title: '收款方式', templet: '#payment-Type', minWidth: 100,align:'center'}, {field: 'paymentAccount', title: '二维码', minWidth: 150,align:'center'}, {field: 'bank', title: '所属银行', minWidth: 150,align:'center'}, {title: '操作', toolbar: '#user-option', minWidth: 150, fixed : 'right'} diff --git a/src/main/resources/templates/febs/views/modules/member/withdrawCoin.html b/src/main/resources/templates/febs/views/modules/member/withdrawCoin.html index 041579e..845aaaf 100644 --- a/src/main/resources/templates/febs/views/modules/member/withdrawCoin.html +++ b/src/main/resources/templates/febs/views/modules/member/withdrawCoin.html @@ -166,7 +166,7 @@ cols: [[ {field: 'phone', title: '手机号码', minWidth: 120,align:'left'}, {field: 'email', title: '邮箱', minWidth: 200,align:'left'}, - {field: 'memberId', title: '邀请码UID', minWidth: 100,align:'center'}, + {field: 'inviteId', title: '邀请码UID', minWidth: 80,align:'center'}, {field: 'symbol', title: '币种', minWidth: 100,align:'center'}, {field: 'amount', title: '提币数量', minWidth: 120,align:'center'}, {field: 'address', title: '提币地址', minWidth: 300,align:'center'}, diff --git a/src/main/resources/templates/febs/views/modules/trademanage/accountInfo.html b/src/main/resources/templates/febs/views/modules/trademanage/accountInfo.html new file mode 100644 index 0000000..887f87d --- /dev/null +++ b/src/main/resources/templates/febs/views/modules/trademanage/accountInfo.html @@ -0,0 +1,107 @@ +<div class="layui-fluid layui-anim febs-anim" id="febs-user" lay-title="账户信息"> + <div class="layui-row febs-container"> + <div class="layui-col-md12"> + <div class="layui-card"> + <div class="layui-card-body febs-table-full"> + <form class="layui-form layui-table-form" lay-filter="user-table-form"> + <div class="layui-row"> + <div class="layui-col-md10"> + <div class="layui-form-item"> + <div class="layui-inline"> + <div class="layui-input-inline"> + <input type="text" placeholder="手机号/邮箱/邀请码" name="account" autocomplete="off" class="layui-input"> + </div> + </div> + </div> + </div> + <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area"> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query"> + <i class="layui-icon"></i> + </div> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset"> + <i class="layui-icon"></i> + </div> + </div> + </div> + </form> + <table lay-filter="userTable" lay-data="{id: 'userTable'}"></table> + </div> + </div> + </div> + </div> +</div> +<script type="text/html" id="isSuAccount"> + {{# + var isSuAccount = { + "1": {title: '是' , color: 'green'}, + "0": {title: '否' , color: 'red' } + }[d.isSuAccount]; + }} + <span class="layui-badge febs-tag-{{isSuAccount.color}}">{{ isSuAccount.title }}</span> +</script> +<!-- 表格操作栏 end --> +<script data-th-inline="none" type="text/javascript"> + // 引入组件并初始化 + layui.use(['dropdown', 'jquery', 'laydate', 'form', 'table', 'febs', 'treeSelect'], function () { + var $ = layui.jquery, + laydate = layui.laydate, + febs = layui.febs, + form = layui.form, + table = layui.table, + treeSelect = layui.treeSelect, + dropdown = layui.dropdown, + $view = $('#febs-user'), + $query = $view.find('#query'), + $reset = $view.find('#reset'), + $searchForm = $view.find('form'), + sortObject = {field: 'createTime', type: null}, + tableIns; + + form.render(); + + // 表格初始化 + initTable(); + + // 查询按钮 + $query.on('click', function () { + var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type}); + tableIns.reload({where: params, page: {curr: 1}}); + }); + + // 刷新按钮 + $reset.on('click', function () { + $searchForm[0].reset(); + sortObject.type = 'null'; + tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject}); + }); + + function initTable() { + tableIns = febs.table.init({ + elem: $view.find('table'), + id: 'userTable', + url: ctx + 'tradeManage/memberAccountInfo', + cols: [[ + {field: 'phone', title: '手机号', minWidth: 100,align:'left'}, + {field: 'email', title: '邮箱', minWidth: 200,align:'left'}, + {field: 'inviteId', title: '邀请码UID', minWidth: 80,align:'center'}, + {field: 'walletCoinAvailableBalance', title: '币币可用', minWidth: 80,align:'center'}, + {field: 'walletCoinFrozenBalance', title: '币币冻结', minWidth: 80,align:'center'}, + {field: 'walletCoinTotalBalance', title: '币币总金额', minWidth: 80,align:'center'}, + {field: 'walletAvailableBalance', title: '合约可用', minWidth: 80,align:'center'}, + {field: 'walletFrozenBalance', title: '合约冻结', minWidth: 80,align:'center'}, + {field: 'walletTotalBalance', title: '合约总金额', minWidth: 80,align:'center'}, + {title: '是否是代理', templet: '#isSuAccount', minWidth: 100,align:'center'}, + {field: 'agentAvailableBalance', title: '代理账户', minWidth: 80,align:'center'} + ]] + }); + } + + // 获取查询参数 + function getQueryParams() { + return { + account: $searchForm.find('input[name="account"]').val().trim(), + }; + } + + }) +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/modules/trademanage/agentReturnInfo.html b/src/main/resources/templates/febs/views/modules/trademanage/agentReturnInfo.html new file mode 100644 index 0000000..633f076 --- /dev/null +++ b/src/main/resources/templates/febs/views/modules/trademanage/agentReturnInfo.html @@ -0,0 +1,116 @@ +<div class="layui-fluid layui-anim febs-anim" id="febs-user" lay-title="返佣明细"> + <div class="layui-row febs-container"> + <div class="layui-col-md12"> + <div class="layui-card"> + <div class="layui-card-body febs-table-full"> + <form class="layui-form layui-table-form" lay-filter="user-table-form"> + <div class="layui-row"> + <div class="layui-col-md10"> + <div class="layui-form-item"> + <div class="layui-inline"> + <div class="layui-input-inline"> + <input type="text" placeholder="手机号/邮箱/邀请码" name="account" autocomplete="off" class="layui-input"> + </div> + </div> + </div> + </div> + <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area"> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query"> + <i class="layui-icon"></i> + </div> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset"> + <i class="layui-icon"></i> + </div> + </div> + </div> + </form> + <table lay-filter="userTable" lay-data="{id: 'userTable'}"></table> + </div> + </div> + </div> + </div> +</div> +<script type="text/html" id="isType"> + {{# + var type = { + "1": {title: '币币资产' , color: 'red'}, + "2": {title: '合约资产' , color: 'green'}, + "3": {title: '代理资产' , color: 'blue' } + }[d.type]; + }} + <span class="layui-badge febs-tag-{{type.color}}">{{ type.title }}</span> +</script> +<script type="text/html" id="status"> + {{# + var status = { + "2": {title: '失败' , color: 'red'}, + "1": {title: '成功' , color: 'green'}, + "0": {title: '待审核' , color: 'blue' } + }[d.status]; + }} + <span class="layui-badge febs-tag-{{status.color}}">{{ status.title }}</span> +</script> +<!-- 表格操作栏 end --> +<script data-th-inline="none" type="text/javascript"> + // 引入组件并初始化 + layui.use(['dropdown', 'jquery', 'laydate', 'form', 'table', 'febs', 'treeSelect'], function () { + var $ = layui.jquery, + laydate = layui.laydate, + febs = layui.febs, + form = layui.form, + table = layui.table, + treeSelect = layui.treeSelect, + dropdown = layui.dropdown, + $view = $('#febs-user'), + $query = $view.find('#query'), + $reset = $view.find('#reset'), + $searchForm = $view.find('form'), + sortObject = {field: 'createTime', type: null}, + tableIns; + + form.render(); + + // 表格初始化 + initTable(); + + // 查询按钮 + $query.on('click', function () { + var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type}); + tableIns.reload({where: params, page: {curr: 1}}); + }); + + // 刷新按钮 + $reset.on('click', function () { + $searchForm[0].reset(); + sortObject.type = 'null'; + tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject}); + }); + + function initTable() { + tableIns = febs.table.init({ + elem: $view.find('table'), + id: 'userTable', + url: ctx + 'tradeManage/memberAgentReturnInfo', + cols: [[ + {field: 'phone', title: '手机号', minWidth: 100,align:'left'}, + {field: 'email', title: '邮箱', minWidth: 200,align:'left'}, + {field: 'inviteId', title: '邀请码UID', minWidth: 80,align:'center'}, + {field: 'symbol', title: '币种', minWidth: 80,align:'center'}, + {field: 'amount', title: '金额', minWidth: 80,align:'center'}, + {field: 'content', title: '记录内容', minWidth: 80,align:'center'}, + {field: 'createTime', title: '时间', minWidth: 80,align:'center'}, + {title: '状态', templet: '#status', minWidth: 100,align:'center'}, + {title: '类型', templet: '#isType', minWidth: 100,align:'center'}, + ]] + }); + } + + // 获取查询参数 + function getQueryParams() { + return { + account: $searchForm.find('input[name="account"]').val().trim(), + }; + } + + }) +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/modules/trademanage/contractHoldOrder.html b/src/main/resources/templates/febs/views/modules/trademanage/contractHoldOrder.html index 151cf48..a9cb42e 100644 --- a/src/main/resources/templates/febs/views/modules/trademanage/contractHoldOrder.html +++ b/src/main/resources/templates/febs/views/modules/trademanage/contractHoldOrder.html @@ -8,9 +8,8 @@ <div class="layui-col-md10"> <div class="layui-form-item"> <div class="layui-inline"> - <label class="layui-form-label layui-form-label-sm">用户名</label> <div class="layui-input-inline"> - <input type="text" name="username" autocomplete="off" class="layui-input"> + <input type="text" placeholder="手机号/邮箱/邀请码" name="account" autocomplete="off" class="layui-input"> </div> </div> </div> @@ -22,30 +21,36 @@ <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset"> <i class="layui-icon"></i> </div> - <div class="layui-btn layui-btn-sm layui-btn-primary table-action action-more" - shiro:hasAnyPermissions="user:add,user:update,user:password:reset,user:export"> - <i class="layui-icon"></i> - </div> </div> </div> </form> - <table lay-filter="contractHoldOrderTable" lay-data="{id: 'contractHoldOrderTable'}"></table> + <table lay-filter="userTable" lay-data="{id: 'userTable'}"></table> </div> </div> </div> </div> </div> -<script type="text/html" id="user-option"> - <span shiro:lacksPermission="user:view,user:update,user:delete"> - <span class="layui-badge-dot febs-bg-orange"></span> 无权限 - </span> - <a lay-event="detail" shiro:hasPermission="user:view"><i - class="layui-icon febs-edit-area febs-green"></i></a> - <a lay-event="edit" shiro:hasPermission="user:update"><i - class="layui-icon febs-edit-area febs-blue"></i></a> - <a lay-event="del" shiro:hasPermission="user:delete"><i class="layui-icon febs-edit-area febs-red"></i></a> +<script type="text/html" id="tradeType"> + {{# + var tradeType = { + 1: {title: '市价' , color: 'green'}, + 2: {title: '限价' , color: 'blue' } + }[d.tradeType]; + }} + <span class="layui-badge febs-tag-{{tradeType.color}}">{{ tradeType.title }}</span> </script> +<script type="text/html" id="openingType"> + {{# + var openingType = { + 1: {title: '开多' , color: 'green'}, + 2: {title: '开空' , color: 'red' } + }[d.openingType]; + }} + <span class="layui-badge febs-tag-{{openingType.color}}">{{ openingType.title }}</span> +</script> +<!-- 表格操作栏 end --> <script data-th-inline="none" type="text/javascript"> + // 引入组件并初始化 layui.use(['dropdown', 'jquery', 'laydate', 'form', 'table', 'febs', 'treeSelect'], function () { var $ = layui.jquery, laydate = layui.laydate, @@ -59,47 +64,60 @@ $reset = $view.find('#reset'), $searchForm = $view.find('form'), sortObject = {field: 'createTime', type: null}, - tableIns, - createTimeFrom, - createTimeTo; + tableIns; form.render(); + // 表格初始化 initTable(); + + // 查询按钮 + $query.on('click', function () { + var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type}); + tableIns.reload({where: params, page: {curr: 1}}); + }); + + // 刷新按钮 + $reset.on('click', function () { + $searchForm[0].reset(); + sortObject.type = 'null'; + tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject}); + }); function initTable() { tableIns = febs.table.init({ elem: $view.find('table'), - id: 'contractHoldOrderTable', - url: ctx + 'contractHoldOrder/getList', + id: 'userTable', + url: ctx + 'tradeManage/contractHoldOrder', cols: [[ - {type: 'checkbox'}, - {field: 'memberId', title: 'uId', minWidth: 100}, - {field: 'memberId', title: '用户账号', minWidth: 100}, - {field: 'symbol', title: '币种', minWidth: 100}, - {field: 'tradeType', title: '建仓类型', minWidth: 100}, - {field: 'openingPrice', title: '建仓价格', minWidth: 100}, - {field: 'symbolCnt', title: '建仓张数', minWidth: 100} + {field: 'phone', title: '手机号', minWidth: 100,align:'left'}, + {field: 'email', title: '邮箱', minWidth: 200,align:'left'}, + {field: 'inviteId', title: '邀请码UID', minWidth: 120,align:'center'}, + {field: 'orderNo', title: '订单编号', minWidth: 200,align:'center'}, + {title: '开仓类型', templet: '#openingType', minWidth: 80,align:'center'}, + {title: '交易类型', templet: '#tradeType', minWidth: 80,align:'center'}, + {field: 'symbol', title: '币种', minWidth: 100,align:'center'}, + {field: 'symbolCnt', title: '手数', minWidth: 80,align:'center'}, + {field: 'rewardRatio', title: '实时盈亏', minWidth: 120,align:'center'}, + {field: 'symbolSku', title: '币种规格', minWidth: 120,align:'center'}, + {field: 'openingPrice', title: '开仓价', minWidth: 100,align:'center'}, + {field: 'openingFeeAmount', title: '开仓手续费', minWidth: 120,align:'center'}, + {field: 'bondAmount', title: '保证金', minWidth: 120,align:'center'}, + {field: 'leverRatio', title: '杠杆倍率', minWidth: 120,align:'center'}, + {field: 'stopLossPrice', title: '止损价', minWidth: 120,align:'center'}, + {field: 'stopProfitPrice', title: '止盈价', minWidth: 120,align:'center'}, + {field: 'prePaymentAmount', title: '预付款金额', minWidth: 120,align:'center'}, + {field: 'forceClosingPrice', title: '预估强平价', minWidth: 120,align:'center'} ]] }); } - /* function getQueryParams() { - var createTime = $searchForm.find('input[name="createTime"]').val(); - if (createTime) { - createTimeFrom = createTime.split(' - ')[0]; - createTimeTo = createTime.split(' - ')[1]; - } + // 获取查询参数 + function getQueryParams() { return { - createTimeFrom: createTimeFrom, - createTimeTo: createTimeTo, - username: $searchForm.find('input[name="username"]').val().trim(), - status: $searchForm.find("select[name='status']").val(), - sex: $searchForm.find("select[name='sex']").val(), - mobile: $searchForm.find("input[name='mobile']").val().trim(), - deptId: $searchForm.find("input[name='dept']").val().trim(), - invalidate_ie_cache: new Date() + account: $searchForm.find('input[name="account"]').val().trim(), }; - } */ + } + }) </script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/modules/trademanage/historyOrder.html b/src/main/resources/templates/febs/views/modules/trademanage/historyOrder.html new file mode 100644 index 0000000..7601346 --- /dev/null +++ b/src/main/resources/templates/febs/views/modules/trademanage/historyOrder.html @@ -0,0 +1,197 @@ +<div class="layui-fluid layui-anim febs-anim" id="febs-user" lay-title="历史委托明细"> + <div class="layui-row febs-container"> + <div class="layui-col-md12"> + <div class="layui-card"> + <div class="layui-card-body febs-table-full"> + <form class="layui-form layui-table-form" lay-filter="user-table-form"> + <div class="layui-row"> + <div class="layui-col-md10"> + <div class="layui-form-item"> + <div class="layui-inline"> + <div class="layui-input-inline"> + <input type="text" placeholder="手机号/邮箱/邀请码" name="account" autocomplete="off" class="layui-input"> + </div> + </div> + </div> + </div> + <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area"> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query"> + <i class="layui-icon"></i> + </div> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset"> + <i class="layui-icon"></i> + </div> + </div> + </div> + </form> + <table lay-filter="userTable" lay-data="{id: 'userTable'}"></table> + </div> + </div> + </div> + </div> +</div> +<script type="text/html" id="tradeType"> + {{# + var tradeType = { + 1: {title: '市价' , color: 'green'}, + 2: {title: '限价' , color: 'blue' } + }[d.tradeType]; + }} + <span class="layui-badge febs-tag-{{tradeType.color}}">{{ tradeType.title }}</span> +</script> +<script type="text/html" id="closingType"> + {{# + var closingType = { + 0: {title: '开仓' , color: 'blue'}, + 2: {title: '平多' , color: 'green'}, + 3: {title: '平空' , color: 'red'}, + 4: {title: '爆仓平多' , color: 'red'}, + 5: {title: '爆仓平空' , color: 'red'}, + 6: {title: '止盈平多' , color: 'green'}, + 7: {title: '止盈平空' , color: 'green'}, + 8: {title: '止损平多' , color: 'red'}, + 9: {title: '止损平空' , color: 'red'} + }[d.closingType]; + }} + <span class="layui-badge febs-tag-{{closingType.color}}">{{ closingType.title }}</span> +</script> +<script type="text/html" id="orderStatus"> + {{# + var orderStatus = { + 1: {title: '成交' , color: 'green'}, + 2: {title: '撤单' , color: 'blue' } + }[d.orderStatus]; + }} + <span class="layui-badge febs-tag-{{orderStatus.color}}">{{ orderStatus.title }}</span> +</script> +<script type="text/html" id="orderType"> + {{# + var orderType = { + 1: {title: '开多' , color: 'green'}, + 2: {title: '开空' , color: 'red'}, + 3: {title: '平多' , color: 'green'}, + 4: {title: '平空' , color: 'red' } + }[d.orderType]; + }} + <span class="layui-badge febs-tag-{{orderType.color}}">{{ orderType.title }}</span> +</script> +<script type="text/html" id="openingType"> + {{# + var openingType = { + 1: {title: '开多' , color: 'green'}, + 2: {title: '开空' , color: 'red' } + }[d.openingType]; + }} + <span class="layui-badge febs-tag-{{openingType.color}}">{{ openingType.title }}</span> +</script> +<script type="text/html" id="isCanClosing"> + {{# + var openingType = { + 1: {title: '是' , color: 'green'}, + 0: {title: '否' , color: 'red' } + }[d.isCanClosing]; + }} + <span class="layui-badge febs-tag-{{isCanClosing.color}}">{{ isCanClosing.title }}</span> +</script> +<!-- 表格操作栏 end --> +<script data-th-inline="none" type="text/javascript"> + // 引入组件并初始化 + layui.use(['dropdown', 'jquery', 'laydate', 'form', 'table', 'febs', 'treeSelect'], function () { + var $ = layui.jquery, + laydate = layui.laydate, + febs = layui.febs, + form = layui.form, + table = layui.table, + treeSelect = layui.treeSelect, + dropdown = layui.dropdown, + $view = $('#febs-user'), + $query = $view.find('#query'), + $reset = $view.find('#reset'), + $searchForm = $view.find('form'), + sortObject = {field: 'createTime', type: null}, + tableIns; + + form.render(); + + // 表格初始化 + initTable(); + + // 查询按钮 + $query.on('click', function () { + var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type}); + tableIns.reload({where: params, page: {curr: 1}}); + }); + + // 刷新按钮 + $reset.on('click', function () { + $searchForm[0].reset(); + sortObject.type = 'null'; + tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject}); + }); + + function initTable() { + tableIns = febs.table.init({ + elem: $view.find('table'), + id: 'userTable', + url: ctx + 'tradeManage/historyOrderInfo', + cols: [[ + {field: 'phone', title: '手机号', minWidth: 100,align:'left'}, + {field: 'email', title: '邮箱', minWidth: 200,align:'left'}, + {field: 'inviteId', title: '邀请码UID', minWidth: 120,align:'center'}, + {field: 'orderNo', title: '订单编号', minWidth: 200,align:'center'}, + {title: '交易类型', templet: '#tradeType', minWidth: 120,align:'center'}, + {title: '订单类型', templet: '#orderType', minWidth: 120,align:'center'}, + {title: '订单状态', templet: '#orderStatus', minWidth: 120,align:'center'}, + {title: '平仓类型', templet: '#closingType', minWidth: 120,align:'center'}, + {field: 'rewardAmount', title: '盈亏金额', + templet: function (d) { + if (d.rewardAmount > 0) { + return '<span style="color:green;">' + d.rewardAmount + '</span>' + } + if (d.rewardAmount < 0) { + return '<span style="color:red;">' + d.rewardAmount + '</span>' + } + if (d.rewardAmount == 0 || d.rewardAmount == "" || d.rewardAmount == null) { + return '<span></span>' + } + },minWidth: 120,align:'center'}, + {field: 'openingPrice', title: '开仓价', + templet: function (d) { + if (d.closingPrice > 0 || d.closingPrice < 0) { + return '<span></span>' + }else{ + return '<span>' + d.openingPrice + '</span>' + } + }, minWidth: 150,align:'center'}, + {field: 'closingPrice', title: '平仓价', minWidth: 150,align:'center'}, + {field: 'openingTime', title: '开仓时间', minWidth: 200,align:'center'}, + {field: 'closingTime', title: '平仓时间', minWidth: 200,align:'center'}, + {field: 'entrustOpeningPrice', title: '委托开仓价', minWidth: 150,align:'center'}, + {field: 'entrustTime', title: '委托时间', minWidth: 200,align:'center'}, + + {field: 'symbol', title: '币种', minWidth: 120,align:'center'}, + {field: 'symbolCnt', title: '手数', minWidth: 80,align:'center'}, + {field: 'symbolSku', title: '币种规格', minWidth: 100,align:'center'}, + {field: 'leverRatio', title: '杠杆倍率', minWidth: 120,align:'center'}, + {field: 'stopLossPrice', title: '止损价', minWidth: 120,align:'center'}, + {field: 'stopProfitPrice', title: '止盈价', minWidth: 120,align:'center'}, + {field: 'rewardRatio', title: '盈亏比例', minWidth: 120,align:'center'}, + {field: 'prePaymentAmount', title: '预付款金额', minWidth: 120,align:'center'}, + {field: 'forceClosingPrice', title: '预估强平价', minWidth: 120,align:'center'}, + {field: 'bondAmount', title: '保证金', minWidth: 120,align:'center'}, + {field: 'openingFeeAmount', title: '开仓手续费', minWidth: 120,align:'center'}, + {field: 'closingFeeAmount', title: '平仓手续费', minWidth: 100,align:'center'}, + {field: 'holdAmount', title: '持仓费', minWidth: 120,align:'center'} + ]] + }); + } + + // 获取查询参数 + function getQueryParams() { + return { + account: $searchForm.find('input[name="account"]').val().trim(), + }; + } + + }) +</script> \ No newline at end of file -- Gitblit v1.9.1