src/main/java/cc/mrbird/febs/video/controller/ViewVideoMemberController.java
@@ -32,6 +32,7 @@ return FebsUtil.view("videoMember/memberList"); } /** * 会员列表-设置会员 * @param id src/main/java/cc/mrbird/febs/video/dto/AdminSetVipDto.java
@@ -7,9 +7,7 @@ @Data @ApiModel(value = "ApiMyVideoCollectionDto", description = "接收参数类") public class AdminSetVipDto { @NotBlank(message = "入参不能为空") private Long id; @NotBlank(message = "入参不能为空") private String vipType; } src/main/java/cc/mrbird/febs/video/entity/VideoMemberEntity.java
@@ -1,7 +1,10 @@ package cc.mrbird.febs.video.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 com.google.type.Date; import lombok.Data; @Data @@ -93,4 +96,12 @@ * 测试账号 */ public static final Integer ACCOUNT_TYPE_TEST = 2; @TableField(exist = false) // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date buyTime; @TableField(exist = false) // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date expireTime; } src/main/java/cc/mrbird/febs/video/mapper/VideoMemberMapper.java
@@ -2,6 +2,7 @@ import cc.mrbird.febs.video.entity.AppVersion; import cc.mrbird.febs.video.entity.VideoMemberEntity; import cc.mrbird.febs.video.vo.AdminVideoMemberEntityVo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -15,7 +16,7 @@ VideoMemberEntity selectInfoByAccountAndPwd(@Param("account") String account, @Param("password") String password); IPage<VideoMemberEntity> selectVideoMemberListInPage(Page<VideoMemberEntity> page, @Param("record")VideoMemberEntity videoMember); IPage<AdminVideoMemberEntityVo> selectVideoMemberListInPage(Page<VideoMemberEntity> page, @Param("record")VideoMemberEntity videoMember); IPage<AppVersion> getAppVersionListInPage(Page<AppVersion> page, AppVersion appVersion); } src/main/java/cc/mrbird/febs/video/service/IAdminVideoMemberService.java
@@ -5,13 +5,14 @@ import cc.mrbird.febs.video.dto.AdminSetVipDto; import cc.mrbird.febs.video.entity.AppVersion; import cc.mrbird.febs.video.entity.VideoMemberEntity; import cc.mrbird.febs.video.vo.AdminVideoMemberEntityVo; import cc.mrbird.febs.video.vo.AdminVideoMemberVo; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; public interface IAdminVideoMemberService extends IService<VideoMemberEntity> { IPage<VideoMemberEntity> getVideoMembers(VideoMemberEntity videoMember, QueryRequest request); IPage<AdminVideoMemberEntityVo> getVideoMembers(VideoMemberEntity videoMember, QueryRequest request); FebsResponse resetPwd(Long id); src/main/java/cc/mrbird/febs/video/service/impl/AdminVideoMemberServiceImpl.java
@@ -13,6 +13,7 @@ import cc.mrbird.febs.video.mapper.VideoVipInfoMapper; import cc.mrbird.febs.video.service.IAdminVideoMemberService; import cc.mrbird.febs.video.service.IApiVideoMemberService; import cc.mrbird.febs.video.vo.AdminVideoMemberEntityVo; import cc.mrbird.febs.video.vo.AdminVideoMemberVo; import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateUtil; @@ -41,9 +42,9 @@ private final IApiVideoMemberService apiVideoMemberService; @Override public IPage<VideoMemberEntity> getVideoMembers(VideoMemberEntity videoMember, QueryRequest request) { public IPage<AdminVideoMemberEntityVo> getVideoMembers(VideoMemberEntity videoMember, QueryRequest request) { Page<VideoMemberEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); IPage<VideoMemberEntity> videoMembers = this.baseMapper.selectVideoMemberListInPage(page, videoMember); IPage<AdminVideoMemberEntityVo> videoMembers = this.baseMapper.selectVideoMemberListInPage(page, videoMember); return videoMembers; } @@ -58,7 +59,7 @@ String pwd = SecureUtil.md5("a123456"); videoMemberEntity.setPassword(pwd); this.baseMapper.updateById(videoMemberEntity); return new FebsResponse().success().message("重置成功"); return new FebsResponse().success().message("重置成功,重置后的密码为:a123456"); } @Override @@ -107,21 +108,21 @@ apiVideoMemberService.extendVipTime(adminSetVipDto.getVipType(), videoMemberEntity.getId()); VideoVipInfoEntity videoVipInfoEntity = new VideoVipInfoEntity(); videoVipInfoEntity.setMemberId(adminSetVipDto.getId()); videoVipInfoEntity.setVipType(adminSetVipDto.getVipType()); videoVipInfoEntity.setBuyTime(new Date()); videoVipInfoEntity.setState(1); if(VipTypeEnum.MONTH.name().equals(adminSetVipDto.getVipType())){ videoVipInfoEntity.setExpireTime(DateUtil.offset(new Date(), DateField.MONTH,1)); } if(VipTypeEnum.PERIOD.name().equals(adminSetVipDto.getVipType())){ videoVipInfoEntity.setExpireTime(DateUtil.offset(new Date(), DateField.MONTH,3)); } if(VipTypeEnum.YEAR.name().equals(adminSetVipDto.getVipType())){ videoVipInfoEntity.setExpireTime(DateUtil.offset(new Date(), DateField.MONTH,12)); } videoVipInfoMapper.insert(videoVipInfoEntity); // VideoVipInfoEntity videoVipInfoEntity = new VideoVipInfoEntity(); // videoVipInfoEntity.setMemberId(adminSetVipDto.getId()); // videoVipInfoEntity.setVipType(adminSetVipDto.getVipType()); // videoVipInfoEntity.setBuyTime(new Date()); // videoVipInfoEntity.setState(1); // if(VipTypeEnum.MONTH.name().equals(adminSetVipDto.getVipType())){ // videoVipInfoEntity.setExpireTime(DateUtil.offset(new Date(), DateField.MONTH,1)); // } // if(VipTypeEnum.PERIOD.name().equals(adminSetVipDto.getVipType())){ // videoVipInfoEntity.setExpireTime(DateUtil.offset(new Date(), DateField.MONTH,3)); // } // if(VipTypeEnum.YEAR.name().equals(adminSetVipDto.getVipType())){ // videoVipInfoEntity.setExpireTime(DateUtil.offset(new Date(), DateField.MONTH,12)); // } // videoVipInfoMapper.insert(videoVipInfoEntity); return new FebsResponse().success(); } src/main/java/cc/mrbird/febs/video/vo/AdminVideoMemberEntityVo.java
New file @@ -0,0 +1,73 @@ package cc.mrbird.febs.video.vo; import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import lombok.Data; import java.util.Date; @Data @ApiModel(value = "AdminVideoMemberEntityVo", description = "返回参数类") public class AdminVideoMemberEntityVo { private Long id; /** * 账号 */ private String account; /** * 昵称 */ private String name; /** * 是否会员 1/是 2/否 */ private Integer isVip; /** * 是 */ public static final Integer ISVIP_STATUS_YES = 1; /** * 否 */ public static final Integer ISVIP_STATUS_NO = 2; /** * 账号状态 1/正常 2/禁用 */ private Integer accountStatus; /** * 启用 */ public static final Integer ACCOUNT_STATUS_ENABLE = 1; /** * 禁用 */ public static final Integer ACCOUNT_STATUS_DISABLED = 2; /** * 账号类型 1/正常 2/测试 */ private Integer accountType; /** * 正常账号 */ public static final Integer ACCOUNT_TYPE_NORMAL = 1; /** * 测试账号 */ public static final Integer ACCOUNT_TYPE_TEST = 2; private Date createdTime; // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date buyTime; // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date expireTime; } src/main/resources/mapper/modules/VideoMemberMapper.xml
@@ -14,10 +14,19 @@ select * from video_member where account=#{account} and password=#{password} </select> <select id="selectVideoMemberListInPage" resultType="cc.mrbird.febs.video.entity.VideoMemberEntity"> <select id="selectVideoMemberListInPage" resultType="cc.mrbird.febs.video.vo.AdminVideoMemberEntityVo"> SELECT a.* a.id id, a.account account, a.name name, a.is_vip isVip, a.account_type accountType, a.account_status accountStatus, a.created_time createdTime, b.buy_time buyTime, b.expire_time expireTime FROM video_member a left join video_vip_info b on a.id = b.member_id <where> <if test="record != null" > <if test="record.account!=null and record.account!=''"> src/main/resources/templates/febs/views/videoMember/memberList.html
@@ -186,6 +186,8 @@ return '' } }, minWidth: 80,align:'center'}, {field: 'buyTime', title: '会员开始日期', minWidth: 180,align:'center'}, {field: 'expireTime', title: '会员结束日期', minWidth: 180,align:'center'}, {field: 'accountType', title: '账号类型', templet: function (d) { if (d.accountType === 2) { @@ -210,10 +212,15 @@ {title: '操作', templet: function (d) { if (d.accountStatus === 1) { if(d.isVip === 2){ 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="close" shiro:hasPermission="user:update">禁用</button>' +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="cancelVip" 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>'