xiaoyong931011
2022-10-25 29a53109bdab489d23285af3d12d197eed98f3a4
20221021
15 files modified
3 files added
483 ■■■■■ changed files
src/main/java/cc/mrbird/febs/dapp/controller/AdminOnHookPlanController.java 50 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/controller/MemberMoneyFlowController.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/controller/ViewOnHookPlanController.java 32 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/entity/DappAccountMoneyChangeEntity.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/entity/IgtOnHookPlanOrder.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/mapper/IgtOnHookPlanOrderDao.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/AdminOnHookPlanService.java 3 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/AdminOnHookPlanServiceImpl.java 15 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/ApiIgtOnHookPlanServiceImpl.java 2 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/vo/AdminIgtOnHookPlanOrderVo.java 36 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/vo/AdminPlanSetVo.java 12 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/job/OnHookPlanJob.java 2 ●●● patch | view | raw | blame | history
src/main/resources/mapper/dapp/DappAccountMoneyChangeDao.xml 5 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/dapp/IgtOnHookPlanOrderDao.xml 23 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/dapp/money-change-flow.html 13 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/onhookplan/planList.html 151 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/onhookplan/planSet.html 112 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/walletCoin/transferInsideList.html 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/controller/AdminOnHookPlanController.java
@@ -3,12 +3,23 @@
import cc.mrbird.febs.common.controller.BaseController;
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.common.utils.FebsUtil;
import cc.mrbird.febs.dapp.entity.DataDictionaryCustom;
import cc.mrbird.febs.dapp.entity.IgtOnHookPlanOrder;
import cc.mrbird.febs.dapp.enumerate.DataDictionaryEnum;
import cc.mrbird.febs.dapp.mapper.DataDictionaryCustomMapper;
import cc.mrbird.febs.dapp.service.AdminOnHookPlanService;
import cc.mrbird.febs.dapp.vo.AdminPlanSetVo;
import cc.mrbird.febs.dapp.vo.AdminTransferInsideSetVo;
import cc.mrbird.febs.system.entity.User;
import cc.mrbird.febs.system.service.IUserService;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
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.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -22,6 +33,8 @@
public class AdminOnHookPlanController extends BaseController {
    private final AdminOnHookPlanService adminOnHookPlanService;
    private final IUserService userService;
    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
    /**
     * 挂机-列表
@@ -29,8 +42,45 @@
     */
    @GetMapping("getplanList")
    public FebsResponse getplanList(IgtOnHookPlanOrder igtOnHookPlanOrder, QueryRequest request) {
        User currentUser = FebsUtil.getCurrentUser();
        User currentUserDetail = userService.findByName(currentUser.getUsername());
        if(ObjectUtil.isNotEmpty(currentUserDetail.getDescription())){
            igtOnHookPlanOrder.setDescription(currentUser.getDescription());
        }
        Map<String, Object> data = getDataTable(adminOnHookPlanService.getplanList(igtOnHookPlanOrder, request));
        return new FebsResponse().success().data(data);
    }
    /**
     * IGT挂机时间规则 -- 更新
     */
    @PostMapping(value = "/setPlan")
    public FebsResponse setPlan(AdminPlanSetVo adminPlanSetVo) {
        if(StrUtil.isEmpty(adminPlanSetVo.getMaxHours())){
            return new FebsResponse().fail().message("请输入持续挂机时长");
        }
        if(StrUtil.isEmpty(adminPlanSetVo.getStartTime())){
            return new FebsResponse().fail().message("请输入挂机开始时间");
        }
        if(StrUtil.isEmpty(adminPlanSetVo.getEndTime())){
            return new FebsResponse().fail().message("请输入挂机结束时间");
        }
        String maxHours = adminPlanSetVo.getMaxHours();
        DataDictionaryCustom maxHoursDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.MAX_HOURS.getType(), DataDictionaryEnum.MAX_HOURS.getCode());
        maxHoursDic.setValue(maxHours);
        dataDictionaryCustomMapper.updateById(maxHoursDic);
        String startTime = adminPlanSetVo.getStartTime();
        DataDictionaryCustom startTimeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.START_TIME.getType(), DataDictionaryEnum.START_TIME.getCode());
        startTimeDic.setValue(startTime);
        dataDictionaryCustomMapper.updateById(startTimeDic);
        String endTime = adminPlanSetVo.getEndTime();
        DataDictionaryCustom endTimeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.END_TIME.getType(), DataDictionaryEnum.END_TIME.getCode());
        endTimeDic.setValue(endTime);
        dataDictionaryCustomMapper.updateById(endTimeDic);
        return new FebsResponse().success();
    }
}
src/main/java/cc/mrbird/febs/dapp/controller/MemberMoneyFlowController.java
@@ -8,6 +8,7 @@
import cc.mrbird.febs.dapp.entity.DappFundFlowEntity;
import cc.mrbird.febs.dapp.service.DappWalletService;
import cc.mrbird.febs.system.entity.User;
import cn.hutool.core.util.ObjectUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
@@ -52,6 +53,10 @@
    @RequestMapping(value = "accountMoneyChangeFlow")
    public FebsResponse accountMoneyChangeFlow(DappAccountMoneyChangeEntity record, QueryRequest request) {
        User currentUser = FebsUtil.getCurrentUser();
        if(ObjectUtil.isNotEmpty(currentUser.getDescription())){
            record.setDescription(currentUser.getDescription());
        }
        return new FebsResponse().success().data(getDataTable(dappWalletService.accountMoneyChangeInPage(record, request)));
    }
}
src/main/java/cc/mrbird/febs/dapp/controller/ViewOnHookPlanController.java
@@ -2,10 +2,17 @@
import cc.mrbird.febs.common.entity.FebsConstant;
import cc.mrbird.febs.common.utils.FebsUtil;
import cc.mrbird.febs.dapp.entity.DataDictionaryCustom;
import cc.mrbird.febs.dapp.enumerate.DataDictionaryEnum;
import cc.mrbird.febs.dapp.mapper.DataDictionaryCustomMapper;
import cc.mrbird.febs.dapp.service.AdminOnHookPlanService;
import cc.mrbird.febs.dapp.vo.AdminPlanSetVo;
import cc.mrbird.febs.dapp.vo.AdminTransferInsideSetVo;
import cn.hutool.core.util.ObjectUtil;
import lombok.RequiredArgsConstructor;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -15,6 +22,7 @@
public class ViewOnHookPlanController {
    private final AdminOnHookPlanService adminOnHookPlanService;
    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
    /**
     * 挂机-列表
@@ -25,6 +33,30 @@
    public String planList() {
        return FebsUtil.view("onhookplan/planList");
    }
    /**
     * 内部转账规则设置
     * @param model
     * @return
     */
    @GetMapping("/planSet")
    @RequiresPermissions("planSet:view")
    public String transferInsideSet(Model model) {
        AdminPlanSetVo adminPlanSetVo = new AdminPlanSetVo();
        DataDictionaryCustom maxHoursDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.MAX_HOURS.getType(), DataDictionaryEnum.MAX_HOURS.getCode());
        if (ObjectUtil.isNotNull(maxHoursDic)) {
            adminPlanSetVo.setMaxHours(maxHoursDic.getValue());
        }
        DataDictionaryCustom startTimeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.START_TIME.getType(), DataDictionaryEnum.START_TIME.getCode());
        if (ObjectUtil.isNotNull(startTimeDic)) {
            adminPlanSetVo.setStartTime(startTimeDic.getValue());
        }
        DataDictionaryCustom endTimeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.END_TIME.getType(), DataDictionaryEnum.END_TIME.getCode());
        if (ObjectUtil.isNotNull(endTimeDic)) {
            adminPlanSetVo.setEndTime(endTimeDic.getValue());
        }
        model.addAttribute("planSet", adminPlanSetVo);
        return FebsUtil.view("onhookplan/planSet");
    }
}
src/main/java/cc/mrbird/febs/dapp/entity/DappAccountMoneyChangeEntity.java
@@ -75,4 +75,10 @@
    @TableField(exist = false)
    private String endTime;
    /**
     * 后台操作用户的标识
     */
    @TableField(exist = false)
    private String description;
}
src/main/java/cc/mrbird/febs/dapp/entity/IgtOnHookPlanOrder.java
@@ -1,6 +1,7 @@
package cc.mrbird.febs.dapp.entity;
import cc.mrbird.febs.common.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
@@ -30,4 +31,10 @@
    private Integer profitState;
    //总收益
    private BigDecimal profit;
    /**
     * 后台操作用户的标识
     */
    @TableField(exist = false)
    private String description;
}
src/main/java/cc/mrbird/febs/dapp/mapper/IgtOnHookPlanOrderDao.java
@@ -1,7 +1,10 @@
package cc.mrbird.febs.dapp.mapper;
import cc.mrbird.febs.dapp.entity.IgtOnHookPlanOrder;
import cc.mrbird.febs.dapp.vo.AdminIgtOnHookPlanOrderVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
@@ -20,4 +23,6 @@
    BigDecimal selectSumProfitByMemberId(@Param("memberId")Long memberId);
    List<IgtOnHookPlanOrder> selectByCreateTime(@Param("createTime")String format);
    IPage<AdminIgtOnHookPlanOrderVo> findMemberPlanListInPage(Page<IgtOnHookPlanOrder> page, @Param("record")IgtOnHookPlanOrder igtOnHookPlanOrder);
}
src/main/java/cc/mrbird/febs/dapp/service/AdminOnHookPlanService.java
@@ -2,11 +2,12 @@
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.dapp.entity.IgtOnHookPlanOrder;
import cc.mrbird.febs.dapp.vo.AdminIgtOnHookPlanOrderVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
public interface AdminOnHookPlanService extends IService<IgtOnHookPlanOrder> {
    IPage<IgtOnHookPlanOrder> getplanList(IgtOnHookPlanOrder igtOnHookPlanOrder, QueryRequest request);
    IPage<AdminIgtOnHookPlanOrderVo> getplanList(IgtOnHookPlanOrder igtOnHookPlanOrder, QueryRequest request);
}
src/main/java/cc/mrbird/febs/dapp/service/impl/AdminOnHookPlanServiceImpl.java
@@ -2,9 +2,14 @@
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.dapp.entity.IgtOnHookPlanOrder;
import cc.mrbird.febs.dapp.entity.MemberCoinWithdrawEntity;
import cc.mrbird.febs.dapp.mapper.IgtOnHookPlanOrderDao;
import cc.mrbird.febs.dapp.mapper.MemberCoinWithdrawDao;
import cc.mrbird.febs.dapp.service.AdminOnHookPlanService;
import cc.mrbird.febs.dapp.vo.AdminIgtOnHookPlanOrderVo;
import cc.mrbird.febs.dapp.vo.AdminMemberCoinWithdrawVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -14,8 +19,14 @@
@Service
@RequiredArgsConstructor
public class AdminOnHookPlanServiceImpl extends ServiceImpl<IgtOnHookPlanOrderDao, IgtOnHookPlanOrder> implements AdminOnHookPlanService {
    private final IgtOnHookPlanOrderDao igtOnHookPlanOrderDao;
    @Override
    public IPage<IgtOnHookPlanOrder> getplanList(IgtOnHookPlanOrder igtOnHookPlanOrder, QueryRequest request) {
        return null;
    public IPage<AdminIgtOnHookPlanOrderVo> getplanList(IgtOnHookPlanOrder igtOnHookPlanOrder, QueryRequest request) {
        Page<IgtOnHookPlanOrder> page = new Page<>(request.getPageNum(), request.getPageSize());
        IPage<AdminIgtOnHookPlanOrderVo> adminIgtOnHookPlanOrderVoIPage = igtOnHookPlanOrderDao.findMemberPlanListInPage(page, igtOnHookPlanOrder);
        return adminIgtOnHookPlanOrderVoIPage;
    }
}
src/main/java/cc/mrbird/febs/dapp/service/impl/ApiIgtOnHookPlanServiceImpl.java
@@ -234,7 +234,7 @@
        //更新主表为结束状态
        IgtOnHookPlanOrder igtOnHookPlanOrder = igtOnHookPlanOrderDao.selectById(orderId);
        igtOnHookPlanOrder.setState(2);
        igtOnHookPlanOrder.setPlanAmount(totalProfit);
        igtOnHookPlanOrder.setProfit(totalProfit);
        igtOnHookPlanOrderDao.updateById(igtOnHookPlanOrder);
        //所有未中奖的本金
        BigDecimal totalAmount = igtOnHookPlanOrderItemDao.selectTotalAmountByByOrderIdAndMemberIdAndState(orderId,memberId,1,1);
src/main/java/cc/mrbird/febs/dapp/vo/AdminIgtOnHookPlanOrderVo.java
New file
@@ -0,0 +1,36 @@
package cc.mrbird.febs.dapp.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class AdminIgtOnHookPlanOrderVo {
    @TableId(value = "id",type = IdType.AUTO)
    private Long id;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;
    //挂机开始时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date startTime;
    //挂机状态 1:开始 2:结束
    private Integer state;
    public static final Integer STATE_START = 1;
    public static final Integer STATE_END = 2;
    //挂机总金额
    private BigDecimal planAmount;
    //挂机剩余金额
    private BigDecimal avaAmount;
    //挂机方案倍数
    private Integer planCode;
    //盈利状态:1:盈利 2:亏损
    private Integer profitState;
    //总收益
    private BigDecimal profit;
    private String username;
}
src/main/java/cc/mrbird/febs/dapp/vo/AdminPlanSetVo.java
New file
@@ -0,0 +1,12 @@
package cc.mrbird.febs.dapp.vo;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@Data
@ApiModel(value = "AdminPlanSetVo", description = "挂机时间规则")
public class AdminPlanSetVo {
    private String maxHours;
    private String startTime;
    private String endTime;
}
src/main/java/cc/mrbird/febs/job/OnHookPlanJob.java
@@ -145,7 +145,7 @@
                }else{
                    igtOnHookPlanOrder.setProfitState(1);
                }
                igtOnHookPlanOrder.setPlanAmount(totalProfit);
                igtOnHookPlanOrder.setProfit(totalProfit);
                igtOnHookPlanOrderDao.updateById(igtOnHookPlanOrder);
                dappMemberEntity.setIsOnHook(3);
                dappMemberDao.updateById(dappMemberEntity);
src/main/resources/mapper/dapp/DappAccountMoneyChangeDao.xml
@@ -6,8 +6,11 @@
        select a.*, b.username username from dapp_account_money_change a
        inner join dapp_member b on a.member_id=b.id
        <where>
            <if test="record.description!=null and record.description!=''">
                (a.member_id in (select id from dapp_member where FIND_IN_SET(#{record.description}, referer_ids)))
            </if>
            <if test="record.address !='' and record.address != null">
                and (b.username = #{record.address} or b.invite_id=#{record.address})
                and b.username like CONCAT('%',#{record.address},'%')
            </if>
            <if test="record.type != null">
                and a.type=#{record.type}
src/main/resources/mapper/dapp/IgtOnHookPlanOrderDao.xml
@@ -50,4 +50,27 @@
        where and date_format(a.create_time, '%Y-%m-%d') = #{createTime}
    </select>
    <select id="findMemberPlanListInPage" resultType="cc.mrbird.febs.dapp.vo.AdminIgtOnHookPlanOrderVo">
        SELECT
        s.*,
        m.username username
        FROM
        igt_on_hook_plan_order s
        left join dapp_member m on m.id = s.member_id
        <where>
            <if test="record != null" >
                <if test="record.description!=null and record.description!=''">
                    (s.member_id in (select id from dapp_member where FIND_IN_SET(#{record.description}, referer_ids)))
                </if>
                <if test="record.state!=null and record.state!=''">
                    and s.state= #{record.state}
                </if>
                <if test="record.profitState!=null and record.profitState!=''">
                    and s.profit_state= #{record.profitState}
                </if>
            </if>
        </where>
        order by s.create_time desc
    </select>
</mapper>
src/main/resources/templates/febs/views/dapp/money-change-flow.html
@@ -145,20 +145,17 @@
                    {field: 'amount', title: '变化金额', minWidth: 100},
                    {field: 'afterAmount', title: '变化后金额', minWidth: 100},
                    {field: 'content', title: '描述', minWidth: 130},
                    {title: '类型', templet: '#type-format'},
                    // {title: '类型', templet: '#type-format'},
                    {field: 'createTime', title: '创建时间', minWidth: 180}
                ]]
            });
        }
        function getQueryParams() {
            // return {
            //     inviteId: $searchForm.find('input[name="inviteId"]').val().trim(),
            //     changeAble: $searchForm.find("select[name='changeAble']").val(),
            //     accountStatus: $searchForm.find("select[name='accountStatus']").val(),
            //     withdrawAble: $searchForm.find("input[name='withdrawAble']").val(),
            //     invalidate_ie_cache: new Date()
            // };
            return {
                type: $searchForm.find("select[name='type']").val(),
                address: $searchForm.find('input[name="address"]').val().trim()
            };
        }
        function changeStatus(url) {
src/main/resources/templates/febs/views/onhookplan/planList.html
@@ -1,10 +1,143 @@
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div class="layui-fluid layui-anim febs-anim" id="febs-member-plan" 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">
                                        <label class="layui-form-label layui-form-label-sm">操作类型</label>
                                        <div class="layui-input-inline">
                                            <select name="state">
                                                <option value=""></option>
                                                <option value="1">挂机中</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">&#xe848;</i>
                                </div>
                                <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset">
                                    <i class="layui-icon">&#xe79b;</i>
                                </div>
                            </div>
                        </div>
                    </form>
                    <table lay-filter="planTable" lay-data="{id: 'planTable'}"></table>
                </div>
            </div>
        </div>
    </div>
</div>
<style>
    .layui-table-cell {
        height: auto !important;
    }
</style>
<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,
            dropdown = layui.dropdown,
            $view = $('#febs-member-plan'),
            $query = $view.find('#query'),
            $reset = $view.find('#reset'),
            $searchForm = $view.find('form'),
            sortObject = {field: 'createTime', type: null},
            tableIns;
</body>
</html>
        form.render();
        initTable();
        table.on('tool(planTable)', function (obj) {
            var data = obj.data,
                layEvent = obj.event;
            if (layEvent === 'agree') {
                febs.modal.confirm('同意', '是否同意操作?', function () {
                    agree(data.id);
                });
            }
            if (layEvent === 'disagree') {
                febs.modal.confirm('拒绝', '是否拒绝操作?', function () {
                    disagree(data.id);
                });
            }
        });
        function agree(id) {
            febs.get(ctx + 'admin/walletCoin/agreeWithdraw/' + id, null, function () {
                febs.alert.success('操作成功');
                $query.click();
            });
        }
        function disagree(id) {
            febs.get(ctx + 'admin/walletCoin/disagreeWithdraw/' + id, null, function () {
                febs.alert.success('操作成功');
                $query.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();
            tableIns.reload({where: getQueryParams(), page: {curr: 1}});
        });
        function initTable() {
            tableIns = febs.table.init({
                elem: $view.find('table'),
                id: 'planTable',
                url: ctx + 'admin/onHook/getplanList',
                totalRow: true,
                cols: [[
                    {field: 'username', title: '用户名', minWidth: 120, align: 'left', totalRowText: '合计'},
                    {field: 'state', title: '挂机状态',
                        templet: function (d) {
                            if (d.state === 1) {
                                return '<span>挂机中</span>'
                            } else if (d.state === 2) {
                                return '<span>结束</span>'
                            }else{
                                return
                            }
                        }, minWidth: 100, align: 'center'},
                    {field: 'planAmount', title: '挂机总金额', minWidth: 100, align: 'center'},
                    {field: 'avaAmount', title: '剩余金额', minWidth: 120, align: 'center', totalRow: true},
                    {field: 'planCode', title: '挂机方案倍数', minWidth: 120, align: 'center'},
                    {field: 'profit', title: '总收益', minWidth: 120, align: 'center', totalRow: true},
                    {field: 'createTime', title: '时间', minWidth: 180, align: 'center'},
                    // {title: '操作',
                    //     templet: function (d) {
                    //         if(d.status === 1){
                    //             return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="agree" shiro:hasPermission="user:update">同意</button>'
                    //                 +'<button class="layui-btn layui-btn-danger layui-btn-xs layui-btn-danger" lay-event="disagree" shiro:hasPermission="user:update">拒绝</button>'
                    //         }else{
                    //             return ''
                    //         }
                    //     },minWidth: 120,align:'center'}
                ]]
            });
        }
        function getQueryParams() {
            return {
                state: $searchForm.find("select[name='state']").val()
            };
        }
    })
</script>
src/main/resources/templates/febs/views/onhookplan/planSet.html
New file
@@ -0,0 +1,112 @@
<div class="layui-fluid layui-anim febs-anim" id="plan-setting" lay-title="挂机时间设置">
    <div class="layui-row layui-col-space8 febs-container">
        <form class="layui-form" action="" lay-filter="plan-setting-form">
            <div class="layui-card">
                <div class="m-title">挂机时间设置</div>
                <div class="layui-card-body">
                    <div class="layui-form-item">
                        <label class="layui-form-label">挂机开始时间:</label>
                        <div class="layui-input-block" style="width: 50%">
                            <input type="text" class="layui-input" id="startTime" placeholder="HH:mm:ss" name="startTime">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">挂机结束时间:</label>
                        <div class="layui-input-block" style="width: 50%">
                            <input type="text" class="layui-input" id="endTime" placeholder="HH:mm:ss" name="endTime">
                        </div>
                        <div class="layui-input-block">
                            <div class="layui-form-mid layui-word-aux">以上两个时间表示:在这个时间段内可以点击开始挂机</div>
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">持续挂机时长:</label>
                        <div class="layui-input-block" style="width: 50%">
                            <input type="text" name="maxHours"
                                   lay-verify="" autocomplete="off" class="layui-input" >
                        </div>
                        <div class="layui-input-block">
                            <div class="layui-form-mid layui-word-aux">持续挂机时长表示:不手动点击结束的自动挂机时长</div>
                        </div>
                    </div>
                </div>
                <div class="layui-card-footer">
                    <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="plan-setting-form-submit" id="submit">保存</button>
                </div>
            </div>
        </form>
    </div>
</div>
<style>
    .layui-form-label {
        width: 120px;
    }
    .layui-form-item .layui-input-block {
        margin-left: 150px;
    }
    .layui-table-form .layui-form-item {
        margin-bottom: 20px !important;
    }
    .m-title{
        position: relative;
        font-size: 16px;
        font-weight: bold;
        color: #000000;
        padding-left: 20px;
        margin: 0 0 10px;
    }
    .m-title::before{
        content: '';
        position: absolute;
        left: 0;
        width: 4px;
        height: 20px;
        background: #1890ff;
    }
</style>
<script data-th-inline="javascript" type="text/javascript">
    layui.use(['dropdown', 'jquery', 'validate', 'febs', 'form', 'laydate'], function () {
        var $ = layui.jquery,
            febs = layui.febs,
            form = layui.form,
            validate = layui.validate,
            planSet = [[${planSet}]],
            $view = $('#plan-setting'),
            laydate = layui.laydate;
        //时间选择器
        laydate.render({
            elem: '#startTime'
            ,type: 'time'
        });
        //时间选择器
        laydate.render({
            elem: '#endTime'
            ,type: 'time'
        });
        form.verify(validate);
        form.render();
        initUserValue();
        function initUserValue() {
            $("#startTime").val(planSet.startTime);
            $("#endTime").val(planSet.endTime);
            form.val("plan-setting-form", {
                "maxHours": planSet.maxHours,
                "startTime": planSet.startTime,
                "endTime": planSet.endTime
            });
        }
        form.on('submit(plan-setting-form-submit)', function (data) {
            console.log(data.field);
            febs.post(ctx + 'admin/onHook/setPlan', data.field, function (res) {
                febs.alert.success('设置成功');
            });
            return false;
        });
    });
</script>
src/main/resources/templates/febs/views/walletCoin/transferInsideList.html
@@ -1,4 +1,4 @@
<div class="layui-fluid layui-anim febs-anim" id="febs-member" lay-title="用户列表">
<div class="layui-fluid layui-anim febs-anim" id="febs-member-withDraw" lay-title="用户列表">
    <div class="layui-row febs-container">
        <div class="layui-col-md12">
            <div class="layui-card">
@@ -59,7 +59,7 @@
            form = layui.form,
            table = layui.table,
            dropdown = layui.dropdown,
            $view = $('#febs-member'),
            $view = $('#febs-member-withDraw'),
            $query = $view.find('#query'),
            $reset = $view.find('#reset'),
            $searchForm = $view.find('form'),