src/main/java/com/xcong/excoin/modules/trademanage/controller/OrderCoinDealController.java
New file @@ -0,0 +1,31 @@ package com.xcong.excoin.modules.trademanage.controller; 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.entity.OrderCoinsDealEntity; import com.xcong.excoin.modules.trademanage.service.OrderCoinDealService; import lombok.RequiredArgsConstructor; 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 javax.annotation.Resource; import java.util.Map; @Validated @RestController @RequiredArgsConstructor @RequestMapping(value = "/orderCoin") public class OrderCoinDealController extends BaseController { private final OrderCoinDealService orderCoinDealService; @GetMapping("/page") public FebsResponse getList(OrderCoinsDealEntity contractHoldOrderEntity, QueryRequest request) { Map<String, Object> data = getDataTable(orderCoinDealService.findOrderCoinsDealListInPage(contractHoldOrderEntity, request)); return new FebsResponse().success().data(data); } } src/main/java/com/xcong/excoin/modules/trademanage/controller/OrderCoinViewController.java
New file @@ -0,0 +1,20 @@ package com.xcong.excoin.modules.trademanage.controller; import com.xcong.excoin.common.entity.FebsConstant; import com.xcong.excoin.common.utils.FebsUtil; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @Controller("orderCoinView") @RequestMapping(FebsConstant.VIEW_PREFIX + "modules/orderCoin") public class OrderCoinViewController { /** * 当前持仓 */ @GetMapping("/page") public String contractHoldOrder() { return FebsUtil.view("modules/orderCoin/orderCoin"); } } src/main/java/com/xcong/excoin/modules/trademanage/entity/OrderCoinsDealEntity.java
New file @@ -0,0 +1,81 @@ package com.xcong.excoin.modules.trademanage.entity; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.math.BigDecimal; import java.util.Date; /** * 币币订单成交表 */ @Data @TableName("coins_order_deal") public class OrderCoinsDealEntity{ /** * */ private static final long serialVersionUID = 1L; private Long id; /** * 会员ID */ private Long memberId; /** * 订单主表ID */ private Long orderId; /** * 订单编号 */ private String orderNo; /** * 订单类型 1、买入2、卖出 */ private Integer orderType; public static final Integer ORDERTYPE_BUY = 1; public static final Integer ORDERTYPE_SELL = 2; /** * 交易类型 1:市价2:限价 */ private Integer tradeType; public static final Integer TRADETYPE_MARKETPRICE = 1; public static final Integer TRADETYPE_FIXEDPRICE = 2; /** * 状态 2:撤单3:已成交 */ private Integer orderStatus; public static final Integer ORDERSTATUS_CANCEL = 2; public static final Integer ORDERSTATUS_DONE = 3; /** * 币种 */ private String symbol; /** * 数量 */ private BigDecimal symbolCnt; /** * 委托价 */ private BigDecimal entrustPrice; /** * 成交价 */ private BigDecimal dealPrice; /** * 成交金额 */ private BigDecimal dealAmount; /** * 手续费 */ private BigDecimal feeAmount; private Date createTime; private String phone; private String email; } src/main/java/com/xcong/excoin/modules/trademanage/mapper/OrderCoinDealMapper.java
New file @@ -0,0 +1,15 @@ package com.xcong.excoin.modules.trademanage.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; import com.xcong.excoin.modules.trademanage.entity.OrderCoinsDealEntity; import org.apache.ibatis.annotations.Param; public interface OrderCoinDealMapper extends BaseMapper<OrderCoinsDealEntity> { IPage<OrderCoinsDealEntity> selectOrderCoinsDealListInPage(Page<OrderCoinsDealEntity> page, @Param("record") OrderCoinsDealEntity OrderCoinsDealEntity); } src/main/java/com/xcong/excoin/modules/trademanage/service/OrderCoinDealService.java
New file @@ -0,0 +1,22 @@ 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.AgentReturnEntity; import com.xcong.excoin.modules.trademanage.entity.ContractHoldOrderEntity; import com.xcong.excoin.modules.trademanage.entity.ContractOrderEntity; import com.xcong.excoin.modules.trademanage.entity.OrderCoinsDealEntity; import com.xcong.excoin.modules.trademanage.vo.MemberAccountInfoVo; /** * @author helius */ public interface OrderCoinDealService extends IService<OrderCoinsDealEntity> { IPage<OrderCoinsDealEntity> findOrderCoinsDealListInPage(OrderCoinsDealEntity contractHoldOrderEntity, QueryRequest request); } src/main/java/com/xcong/excoin/modules/trademanage/service/impl/OrderCoinsDealServiceImpl.java
New file @@ -0,0 +1,44 @@ package com.xcong.excoin.modules.trademanage.service.impl; import cn.hutool.core.collection.CollUtil; 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.MemberAuthenticationEntity; import com.xcong.excoin.modules.member.entity.MemberEntity; import com.xcong.excoin.modules.member.mapper.MemberAccountMoneyChangeMapper; import com.xcong.excoin.modules.member.mapper.MemberAuthenticationMapper; import com.xcong.excoin.modules.member.mapper.MemberMapper; import com.xcong.excoin.modules.trademanage.entity.*; import com.xcong.excoin.modules.trademanage.mapper.*; import com.xcong.excoin.modules.trademanage.service.OrderCoinDealService; import com.xcong.excoin.modules.trademanage.service.TradeManageService; import com.xcong.excoin.modules.trademanage.vo.MemberAccountInfoVo; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.HashMap; import java.util.List; import java.util.Map; @Service @RequiredArgsConstructor public class OrderCoinsDealServiceImpl extends ServiceImpl<OrderCoinDealMapper, OrderCoinsDealEntity> implements OrderCoinDealService { private final OrderCoinDealMapper orderCoinDealMapper; @Override public IPage<OrderCoinsDealEntity> findOrderCoinsDealListInPage(OrderCoinsDealEntity contractHoldOrderEntity, QueryRequest request) { Page<OrderCoinsDealEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); IPage<OrderCoinsDealEntity> findMemberAccountInfoListInPage = orderCoinDealMapper.selectOrderCoinsDealListInPage(page, contractHoldOrderEntity); //List<OrderCoinsDealEntity> records = findMemberAccountInfoListInPage.getRecords(); return findMemberAccountInfoListInPage; } } src/main/resources/mapper/modules/OrderCoinDealMapper.xml
New file @@ -0,0 +1,23 @@ <?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.OrderCoinDealMapper"> <select id="selectOrderCoinsDealListInPage" resultType="com.xcong.excoin.modules.trademanage.entity.OrderCoinsDealEntity"> SELECT s.*,m.phone,m.email FROM coins_order_deal s LEFT JOIN member m ON m.id = s.member_id <where> s.order_status = 3 <if test="record != null" > <if test="record.phone!=null and record.phone!=''"> and (m.phone like concat("%",#{record.phone},"%") or m.email like concat("%",#{record.phone},"%") or m.invite_id=#{record.phone}) </if> </if> </where> ORDER BY s.create_time DESC </select> </mapper> src/main/resources/templates/febs/views/modules/orderCoin/orderCoin.html
New file @@ -0,0 +1,126 @@ <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="phone" 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> <!-- 表格操作栏 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(); // 下拉框选择器 treeSelect.render({ elem: $view.find('#dept'), type: 'get', data: ctx + 'dept/select/tree', placeholder: '请选择', search: false }); // 查询按钮 $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(); tableIns.reload({where: getQueryParams(), page: {curr: 1}}); }); function initTable() { tableIns = febs.table.init({ elem: $view.find('table'), id: 'userTable', url: ctx + 'orderCoin/page', totalRow: true, cols: [[ {field: 'phone', title: '手机号码', minWidth: 120,align:'left',totalRowText: '合计'}, {field: 'email', title: '邮箱', minWidth: 50,align:'left'}, {field: 'orderType', title: '订单类型', templet: function (d) { if (d.orderType === 1) { return '<span style="color:green;">买入</span>' } else if (d.orderType === 2) { return '<span style="color:red;">卖出</span>' } else{ return '' } },minWidth: 20,align:'center'}, {field: 'tradeType', title: '交易类型', templet: function (d) { if (d.tradeType === 1) { return '<span style="color:blue;">市价</span>' } else if (d.tradeType === 2) { return '<span style="color:blue;">限价</span>' } else{ return '' } }, minWidth: 20,align:'center'}, {field: 'symbol', title: '币种', minWidth: 20,align:'center'}, {field: 'symbolCnt', title: '数量', minWidth: 30,align:'center',totalRow: true}, {field: 'entrustPrice', title: '委托价', minWidth: 30,align:'center'}, {field: 'dealPrice', title: '成交价', minWidth: 30,align:'center'}, {field: 'dealAmount', title: '成交金额', minWidth: 30,align:'center'}, {field: 'feeAmount', title: '手续费', minWidth: 30,align:'center'}, {field: 'createTime', title: '创建时间', minWidth: 200,align:'center'}, ]] }); } // 获取查询参数 function getQueryParams() { return { phone: $searchForm.find('input[name="phone"]').val().trim() }; } }) </script>