From a3ee255827cd44b92c697e5f3e313359e4407547 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Thu, 18 Jun 2020 18:16:02 +0800 Subject: [PATCH] add buy list --- src/main/java/com/xcong/excoin/modules/contract/vo/CoinVo.java | 31 +++++ src/main/java/com/xcong/excoin/modules/contract/controller/CoinController.java | 42 ++++++ src/main/java/com/xcong/excoin/modules/contract/controller/ViewController.java | 6 + src/main/java/com/xcong/excoin/modules/contract/mapper/CoinMapper.java | 14 ++ src/main/java/com/xcong/excoin/modules/contract/service/ICoinService.java | 10 + src/main/resources/mapper/modules/CoinMapper.xml | 36 ++++++ src/main/java/com/xcong/excoin/modules/contract/service/impl/CoinServiceImpl.java | 27 ++++ src/main/resources/templates/febs/views/modules/contract/buy-list.html | 156 ++++++++++++++++++++++++++ 8 files changed, 321 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/xcong/excoin/modules/contract/controller/CoinController.java b/src/main/java/com/xcong/excoin/modules/contract/controller/CoinController.java index 65a5fd9..36fbdb2 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/controller/CoinController.java +++ b/src/main/java/com/xcong/excoin/modules/contract/controller/CoinController.java @@ -1,8 +1,48 @@ package com.xcong.excoin.modules.contract.controller; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.xcong.excoin.common.controller.BaseController; +import com.xcong.excoin.common.entity.FebsConstant; +import com.xcong.excoin.common.entity.FebsResponse; +import com.xcong.excoin.common.entity.QueryRequest; +import com.xcong.excoin.modules.contract.service.ICoinService; +import com.xcong.excoin.modules.contract.vo.CoinVo; +import com.xcong.excoin.system.entity.User; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +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 java.util.Map; + /** * @author wzy * @date 2020-06-16 **/ -public class CoinController { +@Slf4j +@Validated +@RestController +@RequiredArgsConstructor +@RequestMapping(value = "/coin") +public class CoinController extends BaseController { + + private final ICoinService coinService; + + @GetMapping("buyList") + public FebsResponse buyList(CoinVo coinVo, QueryRequest request) { + User user = getCurrentUser(); + if (user.getType().equals(FebsConstant.USER_TYPE_ADMIN)) { + coinVo.setRefererId(FebsConstant.DEFAULT_REFERER_ID); + } else { + coinVo.setRefererId(user.getInviteId()); + } + Map<String, Object> data = getDataTable(coinService.findBuyList(coinVo, request)); + return new FebsResponse().success().data(data); + } + + public FebsResponse saleList() { + return null; + } } diff --git a/src/main/java/com/xcong/excoin/modules/contract/controller/ViewController.java b/src/main/java/com/xcong/excoin/modules/contract/controller/ViewController.java index 3ce0be7..a3f4062 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/controller/ViewController.java +++ b/src/main/java/com/xcong/excoin/modules/contract/controller/ViewController.java @@ -20,4 +20,10 @@ public String holdList() { return FebsUtil.view("modules/contract/hold-list"); } + + @GetMapping("buyList") + @RequiresPermissions("buy:view") + public String buyList() { + return FebsUtil.view("modules/contract/buy-list"); + } } diff --git a/src/main/java/com/xcong/excoin/modules/contract/mapper/CoinMapper.java b/src/main/java/com/xcong/excoin/modules/contract/mapper/CoinMapper.java new file mode 100644 index 0000000..f21a280 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/contract/mapper/CoinMapper.java @@ -0,0 +1,14 @@ +package com.xcong.excoin.modules.contract.mapper; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.xcong.excoin.modules.contract.vo.CoinVo; +import org.apache.ibatis.annotations.Param; + +/** + * @author helius + */ +public interface CoinMapper { + + IPage<CoinVo> selectBuyList(@Param("record") CoinVo coinVo, Page<CoinVo> page); +} diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/ICoinService.java b/src/main/java/com/xcong/excoin/modules/contract/service/ICoinService.java new file mode 100644 index 0000000..3d394f5 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/contract/service/ICoinService.java @@ -0,0 +1,10 @@ +package com.xcong.excoin.modules.contract.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.xcong.excoin.common.entity.QueryRequest; +import com.xcong.excoin.modules.contract.vo.CoinVo; + +public interface ICoinService { + + IPage<CoinVo> findBuyList(CoinVo coinVo, QueryRequest request); +} diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/CoinServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/CoinServiceImpl.java new file mode 100644 index 0000000..e41211f --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/CoinServiceImpl.java @@ -0,0 +1,27 @@ +package com.xcong.excoin.modules.contract.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.xcong.excoin.common.entity.QueryRequest; +import com.xcong.excoin.modules.contract.mapper.CoinMapper; +import com.xcong.excoin.modules.contract.service.ICoinService; +import com.xcong.excoin.modules.contract.vo.CoinVo; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +/** + * @author wzy + * @date 2020-06-18 + **/ +@RequiredArgsConstructor +@Service +public class CoinServiceImpl implements ICoinService { + + private final CoinMapper coinMapper; + + @Override + public IPage<CoinVo> findBuyList(CoinVo coinVo, QueryRequest request) { + Page<CoinVo> page = new Page<>(request.getPageNum(), request.getPageSize()); + return coinMapper.selectBuyList(coinVo, page); + } +} diff --git a/src/main/java/com/xcong/excoin/modules/contract/vo/CoinVo.java b/src/main/java/com/xcong/excoin/modules/contract/vo/CoinVo.java new file mode 100644 index 0000000..13f99e3 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/contract/vo/CoinVo.java @@ -0,0 +1,31 @@ +package com.xcong.excoin.modules.contract.vo; + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author wzy + * @date 2020-06-18 + **/ +@Data +public class CoinVo { + private String symbol; + + private String inviteId; + + private String phone; + + private String email; + + private BigDecimal usdtAmount; + + private BigDecimal coinAmount; + + private String orderNo; + + private Date createTime; + + private String refererId; +} diff --git a/src/main/resources/mapper/modules/CoinMapper.xml b/src/main/resources/mapper/modules/CoinMapper.xml new file mode 100644 index 0000000..4b363a2 --- /dev/null +++ b/src/main/resources/mapper/modules/CoinMapper.xml @@ -0,0 +1,36 @@ +<?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.contract.mapper.CoinMapper"> + + <select id="selectBuyList" resultType="com.xcong.excoin.modules.contract.vo.CoinVo"> + select * from ( + select + a.invite_id inviteId, + a.phone phone, + a.email email, + b.amount_usdt usdtAmount, + null coinAmount, + b.order_no orderNo, + 'USDT' symbol, + b.create_time createTime + from member a + inner join member_quick_buy_sale b on a.id=b.member_id and b.order_type='B' + where find_in_set(#{record.refererId}, a.referer_ids) + union + select + a.invite_id inviteId, + a.phone phone, + a.email email, + null usdtAmount, + b.amount coinAmount, + b.order_code orderNo, + b.symbol symbol, + b.create_time createTime + from member a + inner join member_coin_charge b on a.id=b.member_id and b.status=2 + where find_in_set(#{record.refererId}, a.referer_ids) + ) x + order by createTime desc + </select> + +</mapper> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/modules/contract/buy-list.html b/src/main/resources/templates/febs/views/modules/contract/buy-list.html new file mode 100644 index 0000000..ef46ab1 --- /dev/null +++ b/src/main/resources/templates/febs/views/modules/contract/buy-list.html @@ -0,0 +1,156 @@ +<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 class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">创建时间</label> + <div class="layui-input-inline"> + <input type="text" name="createTime" id="user-createTime" + class="layui-input"> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">账号类型</label> + <div class="layui-input-inline"> + <select name="accountType"> + <option value=""></option> + <option value="1">测试账号</option> + <option value="2">正常账号</option> + </select> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">账号状态</label> + <div class="layui-input-inline"> + <select name="accountStatus"> + <option value=""></option> + <option value="0">禁用</option> + <option value="1">正常</option> + </select> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">实名状态</label> + <div class="layui-input-inline"> + <select name="certifyStatus"> + <option value=""></option> + <option value="0">未通过</option> + <option value="1">审核中</option> + <option value="2">审核通过</option> + <option value="2">未实名</option> + </select> + </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 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, + $view = $('#febs-user'), + $query = $view.find('#query'), + $reset = $view.find('#reset'), + $searchForm = $view.find('form'), + sortObject = {field: 'createTime', type: null}, + tableIns, + createTimeFrom, + createTimeTo; + + form.render(); + + // 表格初始化 + initTable(); + + // 时间组件 + laydate.render({ + elem: '#user-createTime', + range: true, + trigger: 'click' + }); + + // 查询按钮 + $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'; + createTimeTo = null; + createTimeFrom = null; + tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject}); + }); + + function initTable() { + tableIns = febs.table.init({ + elem: $view.find('table'), + id: 'userTable', + url: ctx + 'coin/buyList', + cols: [[ + {type: 'checkbox'}, + {field: 'inviteId', title: 'UID', minWidth: 100, align: 'center'}, + {field: 'symbol', title: '币种', minWidth: 100, align: 'center'}, + {field: 'phone', title: '手机号', minWidth: 130, align: 'center'}, + {field: 'email', title: '邮箱', minWidth: 100, align: 'center'}, + {field: 'usdtAmount', title: '买入USDT', minWidth: 100, align: 'center'}, + {field: 'coinAmount', title: '充币USDT', minWidth: 100, align: 'center'}, + {field: 'orderNo', title: '订单编号', minWidth: 150, align: 'center'}, + {field: 'createTime', title: '交易时间', minWidth: 160, align: 'center'}, + ]] + }); + } + + // 获取查询参数 + function getQueryParams() { + var createTime = $searchForm.find('input[name="createTime"]').val(); + if (createTime) { + createTimeFrom = createTime.split(' - ')[0]; + createTimeTo = createTime.split(' - ')[1]; + } + return { + startTime: createTimeFrom, + endTime: createTimeTo, + account: $searchForm.find('input[name="account"]').val().trim(), + accountStatus: $searchForm.find("select[name='accountStatus']").val(), + accountType: $searchForm.find("select[name='accountType']").val(), + certifyStatus: $searchForm.find("select[name='certifyStatus']").val(), + invalidate_ie_cache: new Date() + }; + } + }) +</script> \ No newline at end of file -- Gitblit v1.9.1