4 files added
7 files modified
| | |
| | | import com.xcong.excoin.common.entity.FebsResponse;
|
| | | import com.xcong.excoin.common.entity.QueryRequest;
|
| | | import com.xcong.excoin.modules.member.dto.MemberDetailConfirmDto;
|
| | | import com.xcong.excoin.modules.member.entity.ActivityReceiveRecord;
|
| | | import com.xcong.excoin.modules.member.entity.AgentFriendRelationEntity;
|
| | | import com.xcong.excoin.modules.member.entity.MemberAccountMoneyChangeEntity;
|
| | | import com.xcong.excoin.modules.member.entity.MemberCoinChargeEntity;
|
| | |
| | | private final IMemberService memberService;
|
| | |
|
| | | /**
|
| | | * 会员列表---会员活动领取---详情
|
| | | */
|
| | | @GetMapping("/seeReceiveInfo")
|
| | | public FebsResponse seeReceiveInfo(QueryRequest request, ActivityReceiveRecord activityReceiveRecord,Integer parentId) {
|
| | | if(parentId==null){
|
| | | ViewController.idFromMember=0;
|
| | | }
|
| | | activityReceiveRecord.setId(ViewController.idFromMember);
|
| | | Map<String, Object> dataTable = getDataTable(memberService.seeReceiveInfo(request, activityReceiveRecord));
|
| | | return new FebsResponse().success().data(dataTable);
|
| | | }
|
| | | |
| | | /**
|
| | | * 会员列表---会员活动领取
|
| | | * @return
|
| | | */
|
| | | @GetMapping("memberActivityReceive")
|
| | | public FebsResponse memberActivityReceive(ActivityReceiveRecord activityReceiveRecord, QueryRequest request) {
|
| | | Map<String, Object> data = getDataTable(memberService.memberActivityReceive(activityReceiveRecord, request));
|
| | | return new FebsResponse().success().data(data);
|
| | | }
|
| | | |
| | | /**
|
| | | *会员列表---拨币
|
| | | * @return
|
| | | */
|
| | |
| | |
|
| | | private final IMemberService memberService;
|
| | |
|
| | | public static long idFromMember;
|
| | | |
| | | /**
|
| | | *会员列表---会员活动领取---详情
|
| | | */
|
| | | @GetMapping("seeReceiveInfo/{id}")
|
| | | public String seeReceiveInfo(@PathVariable long id, Model model) {
|
| | | idFromMember = id;
|
| | | return FebsUtil.view("modules/member/seeReceiveInfo");
|
| | | }
|
| | | |
| | | /**
|
| | | * 会员列表---会员活动领取
|
| | | * @return
|
| | | */
|
| | | @GetMapping("memberActivityReceive")
|
| | | @RequiresPermissions("memberActivityReceive:view")
|
| | | public String memberActivityReceive() {
|
| | | return FebsUtil.view("modules/member/memberActivityReceive");
|
| | | }
|
| | |
|
| | | /**
|
| | | * 平台全部信息
|
| | | * @return
|
New file |
| | |
| | | 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; |
| | | /** |
| | | * @description 活动记录表 |
| | | * @author yourName |
| | | * @date 2021-03-18 17:53 |
| | | */ |
| | | @Data |
| | | @TableName("activity_receive_record") |
| | | public class ActivityReceiveRecord extends BaseEntity{ |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | |
| | | /** |
| | | * 用户ID |
| | | */ |
| | | |
| | | |
| | | private Long memberId; |
| | | |
| | | /** |
| | | * 活动主表ID |
| | | */ |
| | | |
| | | |
| | | private Long mainId; |
| | | |
| | | /** |
| | | * 活动子表ID |
| | | */ |
| | | |
| | | |
| | | private Long subId; |
| | | |
| | | /** |
| | | * 领取金额 |
| | | */ |
| | | |
| | | |
| | | private BigDecimal receiveCoinAmount; |
| | | |
| | | /** |
| | | * 资产变化记录ID(领取时生成流水记录,划转到币币账户) |
| | | */ |
| | | |
| | | |
| | | private Long amcId; |
| | | |
| | | /** |
| | | *激活状态1已激活2未激活3已失效 |
| | | */ |
| | | public static final Integer RECEIVESTATE_ONE = 1; |
| | | public static final Integer RECEIVESTATE_TWO = 2; |
| | | public static final Integer RECEIVESTATE_THREE = 3; |
| | | private Integer receiveState; |
| | | |
| | | /** |
| | | * 激活时间 |
| | | */ |
| | | |
| | | |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date receiveTime; |
| | | |
| | | /** |
| | | * 失效时间 |
| | | */ |
| | | //激活后在当前时间的基础上新增30天 |
| | | public static final long DAYS = 30; |
| | | private Date invalidTime; |
| | | |
| | | |
| | | @TableField(exist = false) |
| | | private String account; |
| | | @TableField(exist = false) |
| | | private String email; |
| | | @TableField(exist = false) |
| | | private String phone; |
| | | @TableField(exist = false) |
| | | private String realName; |
| | | @TableField(exist = false) |
| | | private String inviteId; |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | 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.ActivityReceiveRecord;
|
| | | import com.xcong.excoin.modules.member.entity.MemberAccountMoneyChangeEntity;
|
| | | import com.xcong.excoin.modules.member.entity.MemberEntity;
|
| | | import com.xcong.excoin.modules.member.vo.MemberActivityReceiveVo;
|
| | | import com.xcong.excoin.modules.member.vo.MemberDataInfoVo;
|
| | | import com.xcong.excoin.modules.trademanage.vo.MemberAccountInfoVo;
|
| | |
|
| | |
| | |
|
| | |
|
| | | MemberEntity selectMemberInfoByQueryKey(@Param("queryKey") String queryKey);
|
| | |
|
| | | IPage<MemberActivityReceiveVo> memberActivityReceive(Page<ActivityReceiveRecord> page,
|
| | | @Param("record")ActivityReceiveRecord activityReceiveRecord);
|
| | |
|
| | | IPage<ActivityReceiveRecord> seeReceiveInfo(Page<ActivityReceiveRecord> page,
|
| | | @Param("record")ActivityReceiveRecord activityReceiveRecord);
|
| | | }
|
| | |
| | | import com.xcong.excoin.common.entity.FebsResponse;
|
| | | import com.xcong.excoin.common.entity.QueryRequest;
|
| | | import com.xcong.excoin.modules.member.dto.MemberDetailConfirmDto;
|
| | | import com.xcong.excoin.modules.member.entity.ActivityReceiveRecord;
|
| | | import com.xcong.excoin.modules.member.entity.AgentFriendRelationEntity;
|
| | | import com.xcong.excoin.modules.member.entity.MemberAccountMoneyChangeEntity;
|
| | | import com.xcong.excoin.modules.member.entity.MemberCoinChargeEntity;
|
| | | import com.xcong.excoin.modules.member.entity.MemberCoinWithdrawEntity;
|
| | | import com.xcong.excoin.modules.member.entity.MemberEntity;
|
| | | import com.xcong.excoin.modules.member.entity.MemberQuickBuySaleEntity;
|
| | | import com.xcong.excoin.modules.member.vo.MemberActivityReceiveVo;
|
| | | import com.xcong.excoin.modules.member.vo.MemberAuthenticationVo;
|
| | | import com.xcong.excoin.modules.member.vo.MemberCoinChargeVo;
|
| | | import com.xcong.excoin.modules.member.vo.MemberCoinWithdrawVo;
|
| | |
| | | IPage<MemberAccountMoneyChangeEntity> memberBoBiList(MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity, QueryRequest request);
|
| | |
|
| | | IPage<MemberDataInfoVo> findAllDataInfoListInPage(MemberEntity memberEntity, QueryRequest request);
|
| | |
|
| | | IPage<MemberActivityReceiveVo> memberActivityReceive(ActivityReceiveRecord activityReceiveRecord, QueryRequest request);
|
| | |
|
| | | IPage<ActivityReceiveRecord> seeReceiveInfo(QueryRequest request, ActivityReceiveRecord activityReceiveRecord);
|
| | | }
|
| | |
| | | import com.xcong.excoin.common.exception.GlobalException; |
| | | import com.xcong.excoin.modules.Sms106Send; |
| | | import com.xcong.excoin.modules.member.dto.MemberDetailConfirmDto; |
| | | import com.xcong.excoin.modules.member.entity.ActivityReceiveRecord; |
| | | import com.xcong.excoin.modules.member.entity.AgentFriendRelationEntity; |
| | | import com.xcong.excoin.modules.member.entity.MemberAccountMoneyChangeEntity; |
| | | import com.xcong.excoin.modules.member.entity.MemberAuthenticationEntity; |
| | |
| | | import com.xcong.excoin.modules.member.mapper.MemberQuickBuySaleMapper; |
| | | import com.xcong.excoin.modules.member.mapper.MemberWalletCoinMapper; |
| | | import com.xcong.excoin.modules.member.service.IMemberService; |
| | | import com.xcong.excoin.modules.member.vo.MemberActivityReceiveVo; |
| | | import com.xcong.excoin.modules.member.vo.MemberAuthenticationVo; |
| | | import com.xcong.excoin.modules.member.vo.MemberCoinChargeVo; |
| | | import com.xcong.excoin.modules.member.vo.MemberCoinWithdrawVo; |
| | |
| | | return selectMemberListInPage; |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public IPage<MemberActivityReceiveVo> memberActivityReceive(ActivityReceiveRecord activityReceiveRecord, |
| | | QueryRequest request) { |
| | | |
| | | Page<ActivityReceiveRecord> page = new Page<>(request.getPageNum(), request.getPageSize()); |
| | | return memberMapper.memberActivityReceive(page, activityReceiveRecord); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public IPage<ActivityReceiveRecord> seeReceiveInfo(QueryRequest request, |
| | | ActivityReceiveRecord activityReceiveRecord) { |
| | | Page<ActivityReceiveRecord> page = new Page<>(request.getPageNum(), request.getPageSize()); |
| | | return memberMapper.seeReceiveInfo(page, activityReceiveRecord); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.xcong.excoin.modules.member.vo; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | import com.fasterxml.jackson.databind.annotation.JsonSerialize; |
| | | import com.xcong.excoin.common.utils.BigDecimalSerialize; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel(value = "MemberActivityReceiveVo", description = "参数返回类") |
| | | public class MemberActivityReceiveVo { |
| | | private long id; |
| | | private long memberId; |
| | | //手机号 |
| | | private String phone; |
| | | //邮箱 |
| | | private String email; |
| | | //邀请码 |
| | | private String inviteId; |
| | | //待领取 |
| | | @JsonSerialize(using = BigDecimalSerialize.class) |
| | | private BigDecimal receiveTotal; |
| | | //已领取 |
| | | @JsonSerialize(using = BigDecimalSerialize.class) |
| | | private BigDecimal receivedTotal; |
| | | //姓名 |
| | | public String realName; |
| | | |
| | | private int accountType; |
| | | |
| | | } |
| | |
| | | <!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="seeReceiveInfo" resultType="com.xcong.excoin.modules.member.entity.ActivityReceiveRecord">
|
| | | SELECT
|
| | | a.id id,
|
| | | a.member_id,
|
| | | a.receive_time,
|
| | | a.receive_coin_amount,
|
| | | b.phone phone,
|
| | | b.invite_id inviteId,
|
| | | b.email email,
|
| | | concat(c.first_name,c.second_name) realName
|
| | | FROM
|
| | | activity_receive_record a
|
| | | LEFT JOIN member b on a.member_id = b.id
|
| | | left JOIN member_authentication c on a.member_id = c.member_id
|
| | | where
|
| | | a.receive_state = 1
|
| | | and a.member_id = (select member_id from activity_receive_record where id = #{record.id})
|
| | | </select>
|
| | |
|
| | | <select id="memberActivityReceive" resultType="com.xcong.excoin.modules.member.vo.MemberActivityReceiveVo">
|
| | | SELECT
|
| | | a.id id,
|
| | | a.member_id memberId,
|
| | | SUM(a.receive_coin_amount) receivedTotal,
|
| | | (100-SUM(a.receive_coin_amount)) receiveTotal,
|
| | | b.phone phone,
|
| | | b.account_type accountType,
|
| | | b.invite_id inviteId,
|
| | | b.email email,
|
| | | concat(c.first_name,c.second_name) realName
|
| | | FROM
|
| | | activity_receive_record a
|
| | | LEFT JOIN member b on a.member_id = b.id
|
| | | left JOIN member_authentication c on a.member_id = c.member_id
|
| | | <where>
|
| | | a.receive_state = 1
|
| | | <if test="record != null" >
|
| | | <if test="record.account!=null and record.account!=''">
|
| | | and (b.phone = #{record.account} or b.email = #{record.account} or b.invite_id=#{record.account})
|
| | | </if>
|
| | | </if>
|
| | | </where>
|
| | | group by a.member_id ORDER BY receivedTotal DESC;
|
| | | </select>
|
| | |
|
| | | <select id="selectMemberInfoByQueryKey" resultType="com.xcong.excoin.modules.member.entity.MemberEntity">
|
| | | select * from member where phone=#{queryKey} or invite_id=#{queryKey} or email=#{queryKey}
|
| | | </select>
|
| | |
| | | offset: '30px', |
| | | btn2: function () { |
| | | layer.closeAll(); |
| | | }, |
| | | cancel: function(){ |
| | | var index=parent.layer.getFrameIndex(window.name); //获取当前窗口的name |
| | | parent.layer.close(index);//关闭当前窗口 |
| | | window.parent.location.reload();//刷新 |
| | | } |
| | | }); |
| | | $query.click(); |
New file |
| | |
| | | <div class="layui-fluid layui-anim febs-anim" id="febs-receive" 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> |
| | | <!-- 表格操作栏 end --> |
| | | <script data-th-inline="none" type="text/javascript"> |
| | | // 引入组件并初始化 |
| | | layui.use(['jquery', 'form', 'table', 'febs'], function () { |
| | | var $ = layui.jquery, |
| | | febs = layui.febs, |
| | | form = layui.form, |
| | | table = layui.table, |
| | | $view = $('#febs-receive'), |
| | | $query = $view.find('#query'), |
| | | $reset = $view.find('#reset'), |
| | | $searchForm = $view.find('form'), |
| | | sortObject = {field: 'phone', type: null}, |
| | | tableIns; |
| | | |
| | | form.render(); |
| | | |
| | | // 表格初始化 |
| | | initTable(); |
| | | |
| | | // 初始化表格操作栏各个按钮功能 |
| | | table.on('tool(userTable)', function (obj) { |
| | | var data = obj.data, |
| | | layEvent = obj.event; |
| | | |
| | | if (layEvent === 'seeReceiveInfo') { |
| | | febs.modal.open('领取详情', 'modules/member/seeReceiveInfo/' + data.id, { |
| | | area: $(window).width() <= 750 ? '90%' : '80%', |
| | | offset: '30px', |
| | | btn2: function () { |
| | | layer.closeAll(); |
| | | }, |
| | | cancel: function(){ |
| | | var index=parent.layer.getFrameIndex(window.name); //获取当前窗口的name |
| | | parent.layer.close(index);//关闭当前窗口 |
| | | window.parent.location.reload();//刷新 |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | // 查询按钮 |
| | | $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 + 'member/memberActivityReceive', |
| | | totalRow: true, |
| | | cols: [[ |
| | | {field: 'phone', title: '手机号', minWidth: 100, align: 'left'}, |
| | | {field: 'realName', title: '姓名', minWidth: 100, align: 'left'}, |
| | | {field: 'inviteId', title: '邀请码UID', minWidth: 80, align: 'center'}, |
| | | {field: 'receiveTotal', title: '待领取', minWidth: 80, align: 'center',totalRow: true}, |
| | | {field: 'receivedTotal', title: '已领取', minWidth: 80, align: 'center',totalRow: true}, |
| | | {title: '领取记录', |
| | | templet: function (d) { |
| | | return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="seeReceiveInfo" shiro:hasPermission="user:update">查看</button>' |
| | | }, minWidth: 100, align: 'center' |
| | | }, |
| | | {field: 'accountType', title: '账号类型', |
| | | templet: function (d) { |
| | | if (d.accountType === 2) { |
| | | return '<span style="color:green;">测试账号</span>' |
| | | } else if (d.accountType === 1) { |
| | | return '<span style="color:red;">正常账号</span>' |
| | | } else { |
| | | return '' |
| | | } |
| | | }, minWidth: 80, align: 'center' |
| | | }, |
| | | {field: 'email', title: '邮箱', minWidth: 100, align: 'left'}, |
| | | ]] |
| | | }); |
| | | } |
| | | |
| | | // 获取查询参数 |
| | | function getQueryParams() { |
| | | return { |
| | | account: $searchForm.find('input[name="account"]').val().trim(), |
| | | }; |
| | | } |
| | | |
| | | }) |
| | | </script> |
New file |
| | |
| | | |
| | | <div class="layui-fluid layui-anim febs-anim" id="febs-user-child" 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"> |
| | | <table lay-filter="userTableChild" lay-data="{id: 'userTableChild'}"></table> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <script data-th-inline="none" type="text/javascript"> |
| | | layui.use(['dropdown', 'jquery', 'laydate', 'form', 'table', 'febs', 'treeSelect' ,'eleTree'], 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-child'), |
| | | $query = $view.find('#queryChild'), |
| | | $searchForm = $view.find('formChild'), |
| | | sortObject = {field: 'createTime', type: null}, |
| | | tableIns, |
| | | createTimeFrom, |
| | | createTimeTo; |
| | | |
| | | form.render(); |
| | | |
| | | initTable(); |
| | | |
| | | laydate.render({ |
| | | elem: '#user-createTime', |
| | | range: true, |
| | | trigger: 'click' |
| | | }); |
| | | |
| | | |
| | | function initTable() { |
| | | tableIns = febs.table.init({ |
| | | elem: $view.find('table'), |
| | | id: 'userTable', |
| | | url: ctx + 'member/seeReceiveInfo?parentId=1', |
| | | cols: [[ |
| | | {field: 'phone', title: '手机号', minWidth: 100,align:'left'}, |
| | | {field: 'email', title: '邮箱', minWidth: 100,align:'left'}, |
| | | {field: 'realName', title: '姓名', minWidth: 100,align:'left'}, |
| | | {field: 'inviteId', title: '邀请码UID', minWidth: 80,align:'center'}, |
| | | {field: 'receiveCoinAmount', title: '领取金额', minWidth: 150,align:'left'}, |
| | | {field: 'receiveTime', title: '领取时间', minWidth: 150,align:'center'}, |
| | | ]] |
| | | }); |
| | | } |
| | | |
| | | }) |
| | | </script> |