src/main/java/com/xcong/excoin/modules/contract/controller/CoinController.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/xcong/excoin/modules/contract/controller/ViewController.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/xcong/excoin/modules/contract/mapper/CoinMapper.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/xcong/excoin/modules/contract/service/ICoinService.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/xcong/excoin/modules/contract/service/impl/CoinServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/xcong/excoin/modules/contract/vo/CoinVo.java | ●●●●● patch | view | raw | blame | history | |
src/main/resources/mapper/modules/CoinMapper.xml | ●●●●● patch | view | raw | blame | history | |
src/main/resources/templates/febs/views/modules/contract/buy-list.html | ●●●●● patch | view | raw | blame | history |
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; } } 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"); } } src/main/java/com/xcong/excoin/modules/contract/mapper/CoinMapper.java
New file @@ -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); } src/main/java/com/xcong/excoin/modules/contract/service/ICoinService.java
New file @@ -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); } src/main/java/com/xcong/excoin/modules/contract/service/impl/CoinServiceImpl.java
New file @@ -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); } } src/main/java/com/xcong/excoin/modules/contract/vo/CoinVo.java
New file @@ -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; } src/main/resources/mapper/modules/CoinMapper.xml
New file @@ -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> src/main/resources/templates/febs/views/modules/contract/buy-list.html
New file @@ -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>