From efcf1b2c8012060e03836f7b6bdf343023f462d0 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Thu, 16 Dec 2021 16:06:29 +0800 Subject: [PATCH] Merge branch 'master' of http://120.27.238.55:7000/r/xc-video --- src/main/resources/mapper/modules/VideoVipInfoMapper.xml | 12 + src/main/java/cc/mrbird/febs/video/service/impl/AdminVideoMemberServiceImpl.java | 63 ++++++ src/main/java/cc/mrbird/febs/video/controller/ViewVideoMemberController.java | 38 ++++ src/main/java/cc/mrbird/febs/video/mapper/VideoVipInfoMapper.java | 12 + src/main/java/cc/mrbird/febs/video/controller/AdminVideoMemberController.java | 36 +++ src/main/resources/templates/febs/views/videoMember/memberList.html | 212 +++++++++++++++++++++++ src/main/java/cc/mrbird/febs/common/authentication/ShiroConfig.java | 9 src/main/java/cc/mrbird/febs/video/mapper/VideoMemberMapper.java | 3 src/main/resources/templates/febs/views/videoMember/setVip.html | 89 +++++++++ src/main/resources/mapper/modules/VideoMemberMapper.xml | 21 ++ src/main/java/cc/mrbird/febs/video/vo/AdminVideoMemberVo.java | 12 + src/main/java/cc/mrbird/febs/video/service/IAdminVideoMemberService.java | 9 + 12 files changed, 509 insertions(+), 7 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/authentication/ShiroConfig.java b/src/main/java/cc/mrbird/febs/common/authentication/ShiroConfig.java index 781a3e7..27a4fe2 100644 --- a/src/main/java/cc/mrbird/febs/common/authentication/ShiroConfig.java +++ b/src/main/java/cc/mrbird/febs/common/authentication/ShiroConfig.java @@ -93,11 +93,16 @@ // 配置退出过滤器,其中具体的退出代码 Shiro已经替我们实现了 filterChainDefinitionMap.put(febsProperties.getShiro().getLogoutUrl(), "logout"); - // 除上以外所有 url都必须认证通过才可以访问,未通过认证自动访问 LoginUrl - filterChainDefinitionMap.put("/**", "user"); filterChainDefinitionMap.put("/api/**", "anon"); filterChainDefinitionMap.put("/swagger-ui.html/**", "anon"); + filterChainDefinitionMap.put("/v2/api-docs", "anon"); + filterChainDefinitionMap.put("/swagger-resources/**", "anon"); + filterChainDefinitionMap.put("/webjars/**", "anon"); + filterChainDefinitionMap.put("/wsxg", "anon"); + + // 除上以外所有 url都必须认证通过才可以访问,未通过认证自动访问 LoginUrl + filterChainDefinitionMap.put("/**", "user"); shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); return shiroFilterFactoryBean; diff --git a/src/main/java/cc/mrbird/febs/video/controller/AdminVideoMemberController.java b/src/main/java/cc/mrbird/febs/video/controller/AdminVideoMemberController.java index e3b6bab..1abf8a2 100644 --- a/src/main/java/cc/mrbird/febs/video/controller/AdminVideoMemberController.java +++ b/src/main/java/cc/mrbird/febs/video/controller/AdminVideoMemberController.java @@ -1,5 +1,6 @@ package cc.mrbird.febs.video.controller; +import cc.mrbird.febs.common.annotation.ControllerEndpoint; import cc.mrbird.febs.common.controller.BaseController; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; @@ -7,16 +8,15 @@ import cc.mrbird.febs.video.entity.VideoMemberEntity; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import javax.validation.constraints.NotNull; import java.util.Map; @Slf4j @RestController @RequiredArgsConstructor -@RequestMapping("member") +@RequestMapping(value = "/admin/videoMember") public class AdminVideoMemberController extends BaseController { private final IAdminVideoMemberService adminVideoMemberService; @@ -30,6 +30,34 @@ return new FebsResponse().success().data(data); } + @PostMapping("resetPwd/{id}") + @ControllerEndpoint(operation = "会员列表---重置密码", exceptionMessage = "重置密码失败") + public FebsResponse resetPwd(@PathVariable("id") Long id) { + return adminVideoMemberService.resetPwd(id); + } + + /** + * 会员列表---禁止 + * @param id + * @return + */ + @GetMapping("closeAccount/{id}") + @ControllerEndpoint(operation = "会员列表---禁止", exceptionMessage = "禁止失败") + public FebsResponse closeAccount(@NotNull(message = "{required}") @PathVariable Long id) { + return adminVideoMemberService.closeAccount(id); + } + + /** + * 会员列表---开启 + * @param id + * @return + */ + @GetMapping("openAccount/{id}") + @ControllerEndpoint(operation = "会员列表---开启", exceptionMessage = "开启失败") + public FebsResponse openAccount(@NotNull(message = "{required}") @PathVariable Long id) { + return adminVideoMemberService.openAccount(id); + } + } diff --git a/src/main/java/cc/mrbird/febs/video/controller/ViewVideoMemberController.java b/src/main/java/cc/mrbird/febs/video/controller/ViewVideoMemberController.java index 7fb4dad..70ba945 100644 --- a/src/main/java/cc/mrbird/febs/video/controller/ViewVideoMemberController.java +++ b/src/main/java/cc/mrbird/febs/video/controller/ViewVideoMemberController.java @@ -1,9 +1,47 @@ package cc.mrbird.febs.video.controller; +import cc.mrbird.febs.common.entity.FebsConstant; +import cc.mrbird.febs.common.utils.FebsUtil; +import cc.mrbird.febs.video.entity.VideoMemberEntity; +import cc.mrbird.febs.video.mapper.VideoMemberMapper; +import cc.mrbird.febs.video.service.IAdminVideoMemberService; +import cc.mrbird.febs.video.vo.AdminVideoMemberVo; 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.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; @Controller("memberView") +@RequestMapping(FebsConstant.VIEW_PREFIX + "videoMember") @RequiredArgsConstructor public class ViewVideoMemberController { + + private final IAdminVideoMemberService adminVideoMemberService; + + /** + * 会员列表 + * @return + */ + @GetMapping("memberList") + @RequiresPermissions("memberList:view") + public String mallMember() { + return FebsUtil.view("videoMember/memberList"); + } + + /** + * 会员列表-设置会员 + * @param id + * @return + */ + @GetMapping("setVip/{id}") + @RequiresPermissions("setVip:update") + public String setVip(@PathVariable long id, Model model) { + AdminVideoMemberVo videoMember = adminVideoMemberService.getAdminVideoMemberVoById(id); + model.addAttribute("setVip", videoMember); + return FebsUtil.view("videoMember/setVip"); + } + } diff --git a/src/main/java/cc/mrbird/febs/video/mapper/VideoMemberMapper.java b/src/main/java/cc/mrbird/febs/video/mapper/VideoMemberMapper.java index 1ac1464..ac74dab 100644 --- a/src/main/java/cc/mrbird/febs/video/mapper/VideoMemberMapper.java +++ b/src/main/java/cc/mrbird/febs/video/mapper/VideoMemberMapper.java @@ -2,6 +2,8 @@ import cc.mrbird.febs.video.entity.VideoMemberEntity; 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; public interface VideoMemberMapper extends BaseMapper<VideoMemberEntity> { @@ -12,4 +14,5 @@ VideoMemberEntity selectInfoByAccountAndPwd(@Param("account") String account, @Param("password") String password); + IPage<VideoMemberEntity> selectVideoMemberListInPage(Page<VideoMemberEntity> page, @Param("record")VideoMemberEntity videoMember); } diff --git a/src/main/java/cc/mrbird/febs/video/mapper/VideoVipInfoMapper.java b/src/main/java/cc/mrbird/febs/video/mapper/VideoVipInfoMapper.java new file mode 100644 index 0000000..09a42b7 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/video/mapper/VideoVipInfoMapper.java @@ -0,0 +1,12 @@ +package cc.mrbird.febs.video.mapper; + +import cc.mrbird.febs.video.entity.VideoVipInfoEntity; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +public interface VideoVipInfoMapper extends BaseMapper<VideoVipInfoEntity> { + + List<VideoVipInfoEntity> selectVideoVipInfoByMemberId(long id); + +} diff --git a/src/main/java/cc/mrbird/febs/video/service/IAdminVideoMemberService.java b/src/main/java/cc/mrbird/febs/video/service/IAdminVideoMemberService.java index 8ed9170..9584498 100644 --- a/src/main/java/cc/mrbird/febs/video/service/IAdminVideoMemberService.java +++ b/src/main/java/cc/mrbird/febs/video/service/IAdminVideoMemberService.java @@ -1,7 +1,9 @@ package cc.mrbird.febs.video.service; +import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; import cc.mrbird.febs.video.entity.VideoMemberEntity; +import cc.mrbird.febs.video.vo.AdminVideoMemberVo; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; @@ -9,4 +11,11 @@ IPage<VideoMemberEntity> getVideoMembers(VideoMemberEntity videoMember, QueryRequest request); + FebsResponse resetPwd(Long id); + + FebsResponse closeAccount(Long id); + + FebsResponse openAccount(Long id); + + AdminVideoMemberVo getAdminVideoMemberVoById(long id); } diff --git a/src/main/java/cc/mrbird/febs/video/service/impl/AdminVideoMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/video/service/impl/AdminVideoMemberServiceImpl.java index 837f833..0e03c5a 100644 --- a/src/main/java/cc/mrbird/febs/video/service/impl/AdminVideoMemberServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/video/service/impl/AdminVideoMemberServiceImpl.java @@ -1,21 +1,82 @@ package cc.mrbird.febs.video.service.impl; +import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.video.entity.VideoMemberEntity; +import cc.mrbird.febs.video.entity.VideoVipInfoEntity; import cc.mrbird.febs.video.mapper.VideoMemberMapper; +import cc.mrbird.febs.video.mapper.VideoVipInfoMapper; import cc.mrbird.febs.video.service.IAdminVideoMemberService; +import cc.mrbird.febs.video.vo.AdminVideoMemberVo; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.crypto.SecureUtil; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.kotlin.KtQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.List; + @Slf4j @Service @RequiredArgsConstructor public class AdminVideoMemberServiceImpl extends ServiceImpl<VideoMemberMapper, VideoMemberEntity> implements IAdminVideoMemberService { + + private final VideoVipInfoMapper videoVipInfoMapper; + @Override public IPage<VideoMemberEntity> getVideoMembers(VideoMemberEntity videoMember, QueryRequest request) { - return null; + Page<VideoMemberEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); + IPage<VideoMemberEntity> videoMembers = this.baseMapper.selectVideoMemberListInPage(page, videoMember); + return videoMembers; } + + @Override + public FebsResponse resetPwd(Long id) { + VideoMemberEntity videoMemberEntity = this.baseMapper.selectById(id); + if (videoMemberEntity == null) { + throw new FebsException("用户不存在"); + } + + String pwd = SecureUtil.md5("a123456"); + videoMemberEntity.setPassword(pwd); + this.baseMapper.updateById(videoMemberEntity); + return new FebsResponse().success().message("重置成功"); + } + + @Override + public FebsResponse closeAccount(Long id) { + VideoMemberEntity videoMemberEntity = this.baseMapper.selectById(id); + if(ObjectUtil.isEmpty(videoMemberEntity)) { + return new FebsResponse().fail().message("用户不存在"); + } + videoMemberEntity.setAccountStatus(VideoMemberEntity.ACCOUNT_STATUS_DISABLED); + this.baseMapper.updateById(videoMemberEntity); + return new FebsResponse().success(); + } + + @Override + public FebsResponse openAccount(Long id) { + VideoMemberEntity videoMemberEntity = this.baseMapper.selectById(id); + if(ObjectUtil.isEmpty(videoMemberEntity)) { + return new FebsResponse().fail().message("用户不存在"); + } + videoMemberEntity.setAccountStatus(VideoMemberEntity.ACCOUNT_STATUS_ENABLE); + this.baseMapper.updateById(videoMemberEntity); + return new FebsResponse().success(); + } + + @Override + public AdminVideoMemberVo getAdminVideoMemberVoById(long id) { + VideoMemberEntity videoMemberEntity = this.baseMapper.selectById(id); + AdminVideoMemberVo adminVideoMemberVo = new AdminVideoMemberVo(); + adminVideoMemberVo.setMemberId(videoMemberEntity.getId()); + return adminVideoMemberVo; + } + + } diff --git a/src/main/java/cc/mrbird/febs/video/vo/AdminVideoMemberVo.java b/src/main/java/cc/mrbird/febs/video/vo/AdminVideoMemberVo.java new file mode 100644 index 0000000..296a0c6 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/video/vo/AdminVideoMemberVo.java @@ -0,0 +1,12 @@ +package cc.mrbird.febs.video.vo; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@Data +@ApiModel(value = "AdminVideoMemberVo", description = "返回参数类") +public class AdminVideoMemberVo { + + private Long memberId; + +} diff --git a/src/main/resources/mapper/modules/VideoMemberMapper.xml b/src/main/resources/mapper/modules/VideoMemberMapper.xml index 25fcbb8..3cdfc00 100644 --- a/src/main/resources/mapper/modules/VideoMemberMapper.xml +++ b/src/main/resources/mapper/modules/VideoMemberMapper.xml @@ -14,4 +14,25 @@ select * from video_member where account=#{account} and password=#{password} </select> + <select id="selectVideoMemberListInPage" resultType="cc.mrbird.febs.video.entity.VideoMemberEntity"> + SELECT + a.* + FROM video_member a + <where> + <if test="record != null" > + <if test="record.account!=null and record.account!=''"> + and (a.account like concat('%', #{record.account},'%') + or a.name like concat('%', #{record.account}, '%')) + </if> + <if test="record.isVip!=null"> + and a.is_vip = #{record.isVip} + </if> + <if test="record.accountStatus != null" > + and a.account_status = #{record.accountStatus} + </if> + </if> + </where> + order by a.CREATED_TIME desc + </select> + </mapper> \ No newline at end of file diff --git a/src/main/resources/mapper/modules/VideoVipInfoMapper.xml b/src/main/resources/mapper/modules/VideoVipInfoMapper.xml new file mode 100644 index 0000000..da5888e --- /dev/null +++ b/src/main/resources/mapper/modules/VideoVipInfoMapper.xml @@ -0,0 +1,12 @@ +<?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="cc.mrbird.febs.video.mapper.VideoVipInfoMapper"> + + + + <select id="selectVideoVipInfoByMemberId" resultType="cc.mrbird.febs.video.entity.VideoVipInfoEntity"> + select * from video_vip_info where member_id=#{memberId} + </select> + + +</mapper> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/videoMember/memberList.html b/src/main/resources/templates/febs/views/videoMember/memberList.html new file mode 100644 index 0000000..3eb66e2 --- /dev/null +++ b/src/main/resources/templates/febs/views/videoMember/memberList.html @@ -0,0 +1,212 @@ +<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"> + <select name="isVip"> + <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="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"></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> +<!-- 表格操作栏 start --> +<script type="text/html" id="user-option"> + <span shiro:lacksPermission="user:view,user:update,user:delete"> + <span class="layui-badge-dot febs-bg-orange"></span> 无权限 + </span> + <a lay-event="edit" shiro:hasPermission="user:update"><i + class="layui-icon febs-edit-area febs-blue"></i></a> +</script> +<!-- 表格操作栏 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-user'), + $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 === 'close') { + febs.modal.confirm('禁用', '确认禁用该账号?', function () { + closeAccount(data.id); + }); + } + if (layEvent === 'open') { + febs.modal.confirm('开启', '确认开启该账号?', function () { + openAccount(data.id); + }); + } + + if (layEvent === 'resetPwd') { + febs.modal.confirm('重置密码', '是否重置该账号密码?', function () { + resetPwd(data.id); + }); + } + if (layEvent === 'setVip') { + febs.modal.open('系统拨付', 'videoMember/setVip/' + data.id, { + btn: ['提交', '取消'], + yes: function (index, layero) { + $('#setVip-update').find('#submit').trigger('click'); + }, + btn2: function () { + layer.closeAll(); + } + }); + } + }); + function closeAccount(id) { + febs.get(ctx + 'admin/videoMember/closeAccount/' + id, null, function () { + febs.alert.success('禁用成功'); + $query.click(); + }); + } + function openAccount(id) { + febs.get(ctx + 'admin/videoMember/openAccount/' + id, null, function () { + febs.alert.success('开启成功'); + $query.click(); + }); + } + + function resetPwd(id) { + febs.post(ctx + 'admin/videoMember/resetPwd/' + 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(); + sortObject.type = 'null'; + tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject}); + }); + + function initTable() { + tableIns = febs.table.init({ + elem: $view.find('table'), + id: 'userTable', + url: ctx + 'admin/videoMember/getVideoMembers', + cols: [[ + {field: 'account', title: '账号', minWidth: 150,align:'left'}, + {field: 'name', title: '昵称', minWidth: 100,align:'left'}, + {field: 'isVip', title: '是否为会员', + templet: function (d) { + if (d.isVip === 2) { + return '<span>否</span>' + } else if (d.isVip === 1) { + return '<span style="color:green;">是</span>' + }else{ + return '' + } + }, minWidth: 80,align:'center'}, + {field: 'accountType', title: '账号类型', + templet: function (d) { + if (d.accountType === 2) { + return '<span style="color:red;">测试账号</span>' + } else if (d.accountType === 1) { + return '<span style="color:green;">正常账号</span>' + }else{ + return '' + } + }, minWidth: 80,align:'center'}, + {field: 'accountStatus', title: '账号状态', + templet: function (d) { + if (d.accountStatus === 1) { + return '<span style="color:green;">正常</span>' + } else if (d.accountStatus === 2) { + return '<span style="color:red;">禁用</span>' + }else{ + return '' + } + }, minWidth: 80,align:'center'}, + {field: 'createdTime', title: '注册时间', minWidth: 180,align:'center'}, + {title: '操作', + templet: function (d) { + if (d.accountStatus === 1) { + return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="resetPwd" shiro:hasPermission="user:update">重置密码</button>' + +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="close" shiro:hasPermission="user:update">禁用</button>' + +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="setVip" shiro:hasPermission="user:update">设置会员</button>' + }else{ + return'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="resetPwd" shiro:hasPermission="user:update">重置密码</button>' + +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="open" shiro:hasPermission="user:update">启用</button>' + + } + },minWidth: 300,align:'center'} + ]] + }); + } + + // 获取查询参数 + function getQueryParams() { + return { + account: $searchForm.find('input[name="account"]').val().trim(), + isVip: $searchForm.find("select[name='isVip']").val(), + accountStatus: $searchForm.find("select[name='accountStatus']").val(), + }; + } + + }) +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/videoMember/setVip.html b/src/main/resources/templates/febs/views/videoMember/setVip.html new file mode 100644 index 0000000..6b3c82d --- /dev/null +++ b/src/main/resources/templates/febs/views/videoMember/setVip.html @@ -0,0 +1,89 @@ +<style> + #setVip-update { + padding: 20px 25px 25px 0; + } + + #setVip-update .layui-treeSelect .ztree li a, .ztree li span { + margin: 0 0 2px 3px !important; + } + #setVip-update #data-permission-tree-block { + border: 1px solid #eee; + border-radius: 2px; + padding: 3px 0; + } + #setVip-update .layui-treeSelect .ztree li span.button.switch { + top: 1px; + left: 3px; + } + #setVip-update img{ + max-width:100px + } + +</style> +<div class="layui-fluid" id="setVip-update"> + <form class="layui-form" action="" lay-filter="setVip-update-form"> + <div class="layui-form-item febs-hide"> + <label class="layui-form-label febs-form-item-require">id:</label> + <div class="layui-input-block"> + <input type="text" name="id"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">当前余额:</label> + <div class="layui-input-block"> + <input type="number" name="balance" lay-verify="required" autocomplete="off" class="layui-input" readonly> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">拨付数目:</label> + <div class="layui-input-block"> + <input type="number" name="addBalance" lay-verify="required" autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-form-item febs-hide"> + <button class="layui-btn" lay-submit="" lay-filter="setVip-update-form-submit" id="submit"></button> + </div> + </form> +</div> + +<script data-th-inline="javascript"> + layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree', 'laydate'], function () { + var $ = layui.$, + febs = layui.febs, + layer = layui.layer, + formSelects = layui.formSelects, + treeSelect = layui.treeSelect, + form = layui.form, + laydate = layui.laydate, + eleTree = layui.eleTree, + systemPay = [[${systemPay}]], + $view = $('#setVip-update'), + validate = layui.validate; + + form.render(); + laydate.render({ + elem: '#febs-form-group-date' + }); + + formSelects.render(); + + + initUserValue(); + + function initUserValue() { + form.val("setVip-update-form", { + "id": systemPay.id, + "balance": systemPay.balance, + }); + } + + form.on('submit(setVip-update-form-submit)', function (data) { + febs.post(ctx + 'admin/mallMember/updateSystemPay', data.field, function () { + layer.closeAll(); + febs.alert.success('操作成功'); + $('#febs-newInfo').find('#reset').click(); + }); + return false; + }); + }); +</script> \ No newline at end of file -- Gitblit v1.9.1