Merge branch 'master' of http://120.27.238.55:7000/r/xc-video
16 files modified
4 files added
| | |
| | | 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.video.dto.AdminSetVipDto; |
| | | import cc.mrbird.febs.video.entity.AppVersion; |
| | | import cc.mrbird.febs.video.service.IAdminVideoMemberService; |
| | | import cc.mrbird.febs.video.entity.VideoMemberEntity; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.validation.Valid; |
| | | import javax.validation.constraints.NotNull; |
| | | import java.util.Map; |
| | | |
| | |
| | | } |
| | | |
| | | @PostMapping("resetPwd/{id}") |
| | | @ControllerEndpoint(operation = "会员列表---重置密码", exceptionMessage = "重置密码失败") |
| | | @ControllerEndpoint(operation = "会员列表---重置密码", exceptionMessage = "操作失败") |
| | | public FebsResponse resetPwd(@PathVariable("id") Long id) { |
| | | return adminVideoMemberService.resetPwd(id); |
| | | } |
| | |
| | | * @return |
| | | */ |
| | | @GetMapping("closeAccount/{id}") |
| | | @ControllerEndpoint(operation = "会员列表---禁止", exceptionMessage = "禁止失败") |
| | | @ControllerEndpoint(operation = "会员列表---禁止", exceptionMessage = "操作失败") |
| | | public FebsResponse closeAccount(@NotNull(message = "{required}") @PathVariable Long id) { |
| | | return adminVideoMemberService.closeAccount(id); |
| | | } |
| | |
| | | * @return |
| | | */ |
| | | @GetMapping("openAccount/{id}") |
| | | @ControllerEndpoint(operation = "会员列表---开启", exceptionMessage = "开启失败") |
| | | @ControllerEndpoint(operation = "会员列表---开启", exceptionMessage = "操作失败") |
| | | public FebsResponse openAccount(@NotNull(message = "{required}") @PathVariable Long id) { |
| | | return adminVideoMemberService.openAccount(id); |
| | | } |
| | | |
| | | /** |
| | | * 会员列表-会员VIP设置 |
| | | */ |
| | | @PostMapping("setVip") |
| | | @ControllerEndpoint(operation = "会员列表-会员VIP设置", exceptionMessage = "操作失败") |
| | | public FebsResponse setVip(@Valid AdminSetVipDto adminSetVipDto) { |
| | | return adminVideoMemberService.setVip(adminSetVipDto); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 会员列表-取消会员资格 |
| | | */ |
| | | @GetMapping("cancelVip/{id}") |
| | | @ControllerEndpoint(operation = "会员列表---取消会员资格", exceptionMessage = "操作失败") |
| | | public FebsResponse cancelVip(@PathVariable("id") Long id) { |
| | | return adminVideoMemberService.cancelVip(id); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * App版本-列表 |
| | | * @param appVersion |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @GetMapping("getAppVersionList") |
| | | public FebsResponse getAppVersionList(AppVersion appVersion, QueryRequest request) { |
| | | Map<String, Object> data = getDataTable(adminVideoMemberService.getAppVersionList(appVersion, request)); |
| | | return new FebsResponse().success().data(data); |
| | | } |
| | | |
| | | /** |
| | | * App版本-删除 |
| | | */ |
| | | @GetMapping("delAppVersion/{id}") |
| | | @ControllerEndpoint(operation = " App版本-删除", exceptionMessage = "操作失败") |
| | | public FebsResponse delAppVersion(@NotNull(message = "{required}") @PathVariable Long id) { |
| | | return adminVideoMemberService.delCategary(id); |
| | | } |
| | | |
| | | /** |
| | | * App版本-新增 |
| | | */ |
| | | @PostMapping("addAppVersion") |
| | | @ControllerEndpoint(operation = " App版本-新增", exceptionMessage = "操作失败") |
| | | public FebsResponse addAppVersion(@Valid AppVersion appVersion) { |
| | | return adminVideoMemberService.addAppVersion(appVersion); |
| | | } |
| | | |
| | | /** |
| | | * App版本-更新 |
| | | */ |
| | | @PostMapping("updateAppVersion") |
| | | @ControllerEndpoint(operation = "App版本-更新", exceptionMessage = "操作失败") |
| | | public FebsResponse updateAppVersion(@Valid AppVersion appVersion) { |
| | | return adminVideoMemberService.updateAppVersion(appVersion); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | |
| | | import cc.mrbird.febs.common.entity.FebsConstant; |
| | | import cc.mrbird.febs.common.utils.FebsUtil; |
| | | import cc.mrbird.febs.video.entity.AppVersion; |
| | | import cc.mrbird.febs.video.entity.VideoMemberEntity; |
| | | import cc.mrbird.febs.video.mapper.VideoMemberMapper; |
| | | import cc.mrbird.febs.video.service.IAdminVideoMemberService; |
| | |
| | | return FebsUtil.view("videoMember/setVip"); |
| | | } |
| | | |
| | | /** |
| | | * App版本-列表 |
| | | * @return |
| | | */ |
| | | @GetMapping("appVersionList") |
| | | @RequiresPermissions("appVersionList:view") |
| | | public String appVersionList() { |
| | | return FebsUtil.view("videoMember/appVersionList"); |
| | | } |
| | | |
| | | /** |
| | | * App版本-新增 |
| | | * @return |
| | | */ |
| | | @GetMapping("appVersionAdd") |
| | | @RequiresPermissions("appVersionAdd:add") |
| | | public String appVersionAdd() { |
| | | return FebsUtil.view("videoMember/appVersionAdd"); |
| | | } |
| | | |
| | | /** |
| | | * App版本-详情 |
| | | * @param id |
| | | * @param model |
| | | * @return |
| | | */ |
| | | @GetMapping("appVerSionUpdate/{id}") |
| | | @RequiresPermissions("appVerSionUpdate:update") |
| | | public String appVerSionUpdate(@PathVariable long id, Model model) { |
| | | AppVersion data = adminVideoMemberService.getAppVersionInfoById(id); |
| | | model.addAttribute("appVersion", data); |
| | | return FebsUtil.view("videoMember/appVerSionUpdate"); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package cc.mrbird.febs.video.dto; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel(value = "ApiMyVideoCollectionDto", description = "接收参数类") |
| | | public class AdminSetVipDto { |
| | | |
| | | private Long id; |
| | | |
| | | private String vipType; |
| | | |
| | | } |
| | |
| | | private Date buyTime; |
| | | |
| | | private Date expireTime; |
| | | |
| | | /** |
| | | * 生效状态 1:生效中 2:已过期 |
| | | */ |
| | | private Integer state; |
| | | } |
| | |
| | | package cc.mrbird.febs.video.mapper; |
| | | |
| | | import cc.mrbird.febs.video.entity.AppVersion; |
| | | import cc.mrbird.febs.video.entity.VideoMemberEntity; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | |
| | | VideoMemberEntity selectInfoByAccountAndPwd(@Param("account") String account, @Param("password") String password); |
| | | |
| | | IPage<VideoMemberEntity> selectVideoMemberListInPage(Page<VideoMemberEntity> page, @Param("record")VideoMemberEntity videoMember); |
| | | |
| | | IPage<AppVersion> getAppVersionListInPage(Page<AppVersion> page, AppVersion appVersion); |
| | | } |
| | |
| | | |
| | | import cc.mrbird.febs.video.entity.VideoVipInfoEntity; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | public interface VideoVipInfoMapper extends BaseMapper<VideoVipInfoEntity> { |
| | | |
| | | List<VideoVipInfoEntity> selectVideoVipInfoByMemberId(long id); |
| | | List<VideoVipInfoEntity> selectVideoVipInfoByMemberIdAndState(@Param("memberId") long memberId, @Param("state")Integer state); |
| | | |
| | | } |
| | |
| | | |
| | | import cc.mrbird.febs.common.entity.FebsResponse; |
| | | import cc.mrbird.febs.common.entity.QueryRequest; |
| | | 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.AdminVideoMemberVo; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | |
| | | FebsResponse openAccount(Long id); |
| | | |
| | | AdminVideoMemberVo getAdminVideoMemberVoById(long id); |
| | | |
| | | FebsResponse setVip(AdminSetVipDto adminSetVipDto); |
| | | |
| | | FebsResponse cancelVip(Long id); |
| | | |
| | | IPage<AppVersion> getAppVersionList(AppVersion appVersion, QueryRequest request); |
| | | |
| | | FebsResponse delCategary(Long id); |
| | | |
| | | FebsResponse addAppVersion(AppVersion appVersion); |
| | | |
| | | FebsResponse updateAppVersion(AppVersion appVersion); |
| | | |
| | | AppVersion getAppVersionInfoById(long id); |
| | | } |
| | |
| | | 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.dto.AdminSetVipDto; |
| | | import cc.mrbird.febs.video.entity.AppVersion; |
| | | import cc.mrbird.febs.video.entity.VideoMemberEntity; |
| | | import cc.mrbird.febs.video.entity.VideoVipInfoEntity; |
| | | import cc.mrbird.febs.video.enumeration.VipTypeEnum; |
| | | import cc.mrbird.febs.video.mapper.AppVersionMapper; |
| | | 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.date.DateField; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | 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 org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | @Slf4j |
| | |
| | | public class AdminVideoMemberServiceImpl extends ServiceImpl<VideoMemberMapper, VideoMemberEntity> implements IAdminVideoMemberService { |
| | | |
| | | private final VideoVipInfoMapper videoVipInfoMapper; |
| | | private final AppVersionMapper appVersionMapper; |
| | | |
| | | @Override |
| | | public IPage<VideoMemberEntity> getVideoMembers(VideoMemberEntity videoMember, QueryRequest request) { |
| | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public FebsResponse resetPwd(Long id) { |
| | | VideoMemberEntity videoMemberEntity = this.baseMapper.selectById(id); |
| | | if (videoMemberEntity == null) { |
| | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public FebsResponse closeAccount(Long id) { |
| | | VideoMemberEntity videoMemberEntity = this.baseMapper.selectById(id); |
| | | if(ObjectUtil.isEmpty(videoMemberEntity)) { |
| | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public FebsResponse openAccount(Long id) { |
| | | VideoMemberEntity videoMemberEntity = this.baseMapper.selectById(id); |
| | | if(ObjectUtil.isEmpty(videoMemberEntity)) { |
| | |
| | | public AdminVideoMemberVo getAdminVideoMemberVoById(long id) { |
| | | VideoMemberEntity videoMemberEntity = this.baseMapper.selectById(id); |
| | | AdminVideoMemberVo adminVideoMemberVo = new AdminVideoMemberVo(); |
| | | adminVideoMemberVo.setMemberId(videoMemberEntity.getId()); |
| | | adminVideoMemberVo.setId(videoMemberEntity.getId()); |
| | | return adminVideoMemberVo; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public FebsResponse setVip(AdminSetVipDto adminSetVipDto) { |
| | | VideoMemberEntity videoMemberEntity = this.baseMapper.selectById(adminSetVipDto.getId()); |
| | | videoMemberEntity.setIsVip(VideoMemberEntity.ISVIP_STATUS_YES); |
| | | this.baseMapper.updateById(videoMemberEntity); |
| | | |
| | | List<VideoVipInfoEntity> videoVipInfoEntities = videoVipInfoMapper.selectVideoVipInfoByMemberIdAndState(adminSetVipDto.getId(),1); |
| | | if(CollUtil.isNotEmpty(videoVipInfoEntities)){ |
| | | return new FebsResponse().fail().message("用户的会员还未失效"); |
| | | } |
| | | |
| | | 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(); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public FebsResponse cancelVip(Long id) { |
| | | VideoMemberEntity videoMemberEntity = this.baseMapper.selectById(id); |
| | | if(ObjectUtil.isEmpty(videoMemberEntity)) { |
| | | return new FebsResponse().fail().message("用户不存在"); |
| | | } |
| | | if(VideoMemberEntity.ISVIP_STATUS_NO.equals(videoMemberEntity.getIsVip())){ |
| | | return new FebsResponse().fail().message("当前用户还不是会员,无法取消"); |
| | | } |
| | | videoMemberEntity.setIsVip(VideoMemberEntity.ISVIP_STATUS_NO); |
| | | this.baseMapper.updateById(videoMemberEntity); |
| | | List<VideoVipInfoEntity> videoVipInfoEntities = videoVipInfoMapper.selectVideoVipInfoByMemberIdAndState(videoMemberEntity.getId(),1); |
| | | if(CollUtil.isNotEmpty(videoVipInfoEntities)){ |
| | | for(VideoVipInfoEntity videoVipInfoEntity : videoVipInfoEntities){ |
| | | videoVipInfoEntity.setState(2); |
| | | videoVipInfoMapper.updateById(videoVipInfoEntity); |
| | | } |
| | | } |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | public IPage<AppVersion> getAppVersionList(AppVersion appVersion, QueryRequest request) { |
| | | Page<AppVersion> page = new Page<>(request.getPageNum(), request.getPageSize()); |
| | | IPage<AppVersion> appVersions = this.baseMapper.getAppVersionListInPage(page, appVersion); |
| | | return appVersions; |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse delCategary(Long id) { |
| | | AppVersion appVersion = appVersionMapper.selectById(id); |
| | | if(ObjectUtil.isEmpty(appVersion)){ |
| | | return new FebsResponse().fail().message("系统繁忙,请刷新页面重试"); |
| | | } |
| | | appVersionMapper.deleteById(id); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse addAppVersion(AppVersion appVersion) { |
| | | appVersion.setCreatetime(new Date()); |
| | | appVersionMapper.insert(appVersion); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse updateAppVersion(AppVersion appVersion) { |
| | | AppVersion appVersionBefore = appVersionMapper.selectById(appVersion.getId()); |
| | | if(ObjectUtil.isEmpty(appVersionBefore)){ |
| | | return new FebsResponse().fail().message("系统繁忙,请刷新页面重试"); |
| | | } |
| | | appVersion.setCreatetime(new Date()); |
| | | appVersionMapper.updateById(appVersion); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | public AppVersion getAppVersionInfoById(long id) { |
| | | return appVersionMapper.selectById(id); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | import cc.mrbird.febs.video.entity.AppVersion; |
| | | import cc.mrbird.febs.video.entity.DataDictionaryCustom; |
| | | import cc.mrbird.febs.video.entity.VideoMemberEntity; |
| | | import cc.mrbird.febs.video.mapper.AppVersionMapper; |
| | | import cc.mrbird.febs.video.mapper.DataDictionaryCustomMapper; |
| | | import cc.mrbird.febs.video.mapper.VideoCollectionMapper; |
| | | import cc.mrbird.febs.video.mapper.VideoMemberMapper; |
| | | import cc.mrbird.febs.video.entity.VideoVipInfoEntity; |
| | | import cc.mrbird.febs.video.mapper.*; |
| | | import cc.mrbird.febs.video.service.IApiVideoMemberService; |
| | | import cc.mrbird.febs.video.vo.ApiMyVideoCollectionVo; |
| | | import cc.mrbird.febs.video.vo.ApiMyVideoHistoryVo; |
| | |
| | | import cn.hutool.core.util.IdUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.crypto.SecureUtil; |
| | | import cn.hutool.crypto.asymmetric.KeyType; |
| | | import cn.hutool.crypto.asymmetric.RSA; |
| | |
| | | private final VideoCollectionMapper videoCollectionMapper; |
| | | private final DataDictionaryCustomMapper dataDictionaryCustomMapper; |
| | | private final AppVersionMapper appVersionMapper; |
| | | private final VideoVipInfoMapper videoVipInfoMapper; |
| | | |
| | | @Override |
| | | public FebsResponse register(RegisterDto registerDto) { |
| | |
| | | Long id = LoginUserUtil.getLoginUser().getId(); |
| | | VideoMemberEntity videoMemberEntity = this.baseMapper.selectById(id); |
| | | ApiVideoMemberVo apiVideoMemberVo = VideoMemberConversion.INSTANCE.entityToVo(videoMemberEntity); |
| | | List<VideoVipInfoEntity> videoVipInfoEntities = videoVipInfoMapper.selectVideoVipInfoByMemberIdAndState(id, 1); |
| | | if(CollUtil.isNotEmpty(videoVipInfoEntities)){ |
| | | VideoVipInfoEntity videoVipInfoEntity = videoVipInfoEntities.get(0); |
| | | apiVideoMemberVo.setExpireTime(videoVipInfoEntity.getExpireTime()); |
| | | apiVideoMemberVo.setVipType(videoVipInfoEntity.getVipType()); |
| | | } |
| | | return new FebsResponse().success().data(apiVideoMemberVo); |
| | | } |
| | | |
| | |
| | | @ApiModel(value = "AdminVideoMemberVo", description = "返回参数类") |
| | | public class AdminVideoMemberVo { |
| | | |
| | | private Long memberId; |
| | | private Long id; |
| | | |
| | | } |
| | |
| | | package cc.mrbird.febs.video.vo; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | @Data |
| | | @ApiModel(value = "ApiMyVideoHistoryVo", description = "返回参数类") |
| | |
| | | |
| | | @ApiModelProperty(value = "资源ID") |
| | | private Long sourceId; |
| | | |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date createdTime; |
| | | } |
| | |
| | | package cc.mrbird.febs.video.vo; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | @Data |
| | | @ApiModel(value = "ApiVideoMemberVo", description = "返回参数类") |
| | |
| | | * 测试账号 |
| | | */ |
| | | public static final Integer ACCOUNT_TYPE_TEST = 2; |
| | | |
| | | @ApiModelProperty(value = "会员类型;MONTH/PERIOD/YEAR") |
| | | private String vipType; |
| | | |
| | | @ApiModelProperty(value = "到期时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date expireTime; |
| | | } |
| | |
| | | <select id="selectApiMyVideoHistoryInPage" resultType="cc.mrbird.febs.video.vo.ApiMyVideoHistoryVo"> |
| | | select |
| | | a.video_id id, |
| | | a.created_time createdTime, |
| | | b.title title, |
| | | b.intro intro, |
| | | b.thumb thumb, |
| | |
| | | order by a.CREATED_TIME desc |
| | | </select> |
| | | |
| | | <select id="getAppVersionListInPage" resultType="cc.mrbird.febs.video.entity.AppVersion"> |
| | | select a.* from app_version a |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | |
| | | |
| | | |
| | | <select id="selectVideoVipInfoByMemberId" resultType="cc.mrbird.febs.video.entity.VideoVipInfoEntity"> |
| | | select * from video_vip_info where member_id=#{memberId} |
| | | <select id="selectVideoVipInfoByMemberIdAndState" resultType="cc.mrbird.febs.video.entity.VideoVipInfoEntity"> |
| | | select * from video_vip_info where member_id = #{memberId} and state = #{state} |
| | | </select> |
| | | |
| | | |
New file |
| | |
| | | <style> |
| | | #appVersion-update { |
| | | padding: 20px 25px 25px 0; |
| | | } |
| | | |
| | | #appVersion-update .layui-treeSelect .ztree li a, .ztree li span { |
| | | margin: 0 0 2px 3px !important; |
| | | } |
| | | #appVersion-update #data-permission-tree-block { |
| | | border: 1px solid #eee; |
| | | border-radius: 2px; |
| | | padding: 3px 0; |
| | | } |
| | | #appVersion-update .layui-treeSelect .ztree li span.button.switch { |
| | | top: 1px; |
| | | left: 3px; |
| | | } |
| | | #appVersion-update img{ |
| | | max-width:100px |
| | | } |
| | | |
| | | </style> |
| | | <div class="layui-fluid" id="appVersion-update"> |
| | | <form class="layui-form" action="" lay-filter="appVersion-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" data-th-value="${appVersion.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="text" name="version" lay-verify="required" |
| | | autocomplete="off" class="layui-input" > |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label febs-form-item-require">更新内容:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="content" lay-verify="required" |
| | | autocomplete="off" class="layui-input" > |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label febs-form-item-require">下载地址:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="address" lay-verify="required" |
| | | autocomplete="off" class="layui-input" > |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label febs-form-item-require">类型:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="radio" name="type" value="1" title="安卓" checked=""> |
| | | <input type="radio" name="type" value="2" title="苹果"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item febs-hide"> |
| | | <button class="layui-btn" lay-submit="" lay-filter="appVersion-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, |
| | | appVersion = [[${appVersion}]], |
| | | $view = $('#appVersion-update'), |
| | | validate = layui.validate; |
| | | |
| | | form.render(); |
| | | laydate.render({ |
| | | elem: '#febs-form-group-date' |
| | | }); |
| | | |
| | | formSelects.render(); |
| | | |
| | | |
| | | initUserValue(); |
| | | |
| | | function initUserValue() { |
| | | form.val("appVersion-update-form", { |
| | | "id": appVersion.id, |
| | | "version": appVersion.version, |
| | | "content": appVersion.content, |
| | | "address": appVersion.address, |
| | | "type": appVersion.type |
| | | }); |
| | | } |
| | | |
| | | form.on('submit(appVersion-update-form-submit)', function (data) { |
| | | febs.post(ctx + 'admin/videoMember/updateAppVersion', data.field, function () { |
| | | layer.closeAll(); |
| | | febs.alert.success('操作成功'); |
| | | $('#febs-appVersion').find('#reset').click(); |
| | | }); |
| | | return false; |
| | | }); |
| | | }); |
| | | </script> |
New file |
| | |
| | | <style> |
| | | #appVersion-add { |
| | | padding: 20px 25px 25px 0; |
| | | } |
| | | |
| | | #appVersion-add .layui-treeSelect .ztree li a, .ztree li span { |
| | | margin: 0 0 2px 3px !important; |
| | | } |
| | | #appVersion-add #data-permission-tree-block { |
| | | border: 1px solid #eee; |
| | | border-radius: 2px; |
| | | padding: 3px 0; |
| | | } |
| | | #appVersion-add .layui-treeSelect .ztree li span.button.switch { |
| | | top: 1px; |
| | | left: 3px; |
| | | } |
| | | #appVersion-add img{ |
| | | max-width:100px |
| | | } |
| | | |
| | | </style> |
| | | <div class="layui-fluid" id="appVersion-add"> |
| | | <form class="layui-form" action="" lay-filter="appVersion-add-form"> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label febs-form-item-require">版本号:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="version" lay-verify="required" |
| | | autocomplete="off" class="layui-input" > |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label febs-form-item-require">更新内容:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="content" lay-verify="required" |
| | | autocomplete="off" class="layui-input" > |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label febs-form-item-require">下载地址:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="address" lay-verify="required" |
| | | autocomplete="off" class="layui-input" > |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label febs-form-item-require">类型:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="radio" name="type" value="1" title="安卓" checked=""> |
| | | <input type="radio" name="type" value="2" title="苹果"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item febs-hide"> |
| | | <button class="layui-btn" lay-submit="" lay-filter="appVersion-add-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, |
| | | $view = $('#appVersion-add'), |
| | | validate = layui.validate; |
| | | |
| | | form.render(); |
| | | laydate.render({ |
| | | elem: '#febs-form-group-date' |
| | | }); |
| | | |
| | | formSelects.render(); |
| | | |
| | | form.on('submit(appVersion-add-form-submit)', function (data) { |
| | | febs.post(ctx + 'admin/videoMember/addAppVersion', data.field, function () { |
| | | layer.closeAll(); |
| | | febs.alert.success('操作成功'); |
| | | $('#febs-appVersion').find('#reset').click(); |
| | | }); |
| | | return false; |
| | | }); |
| | | }); |
| | | </script> |
New file |
| | |
| | | <div class="layui-fluid layui-anim febs-anim" id="febs-appVersion" 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-md2 layui-col-sm12 layui-col-xs12 table-action-area"> |
| | | <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="add"> |
| | | 新增 |
| | | </div> |
| | | <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-appVersion'), |
| | | $query = $view.find('#query'), |
| | | $add = $view.find('#add'), |
| | | $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 === 'appVerSionUpdate') { |
| | | febs.modal.open('编辑', 'videoMember/appVerSionUpdate/' + data.id, { |
| | | btn: ['提交', '取消'], |
| | | yes: function (index, layero) { |
| | | $('#appVersion-update').find('#submit').trigger('click'); |
| | | }, |
| | | btn2: function () { |
| | | layer.closeAll(); |
| | | } |
| | | }); |
| | | } |
| | | if (layEvent === 'delAppVersion') { |
| | | febs.modal.confirm('删除', '确认删除?', function () { |
| | | delAppVersion(data.id); |
| | | }); |
| | | } |
| | | }); |
| | | |
| | | function delAppVersion(id) { |
| | | febs.get(ctx + 'admin/videoMember/delAppVersion/' + 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}); |
| | | }); |
| | | |
| | | $add.on('click', function () { |
| | | febs.modal.open('新增', 'videoMember/appVersionAdd/', { |
| | | btn: ['提交', '取消'], |
| | | yes: function (index, layero) { |
| | | $('#appVersion-add').find('#submit').trigger('click'); |
| | | }, |
| | | btn2: function () { |
| | | layer.closeAll(); |
| | | } |
| | | }); |
| | | }); |
| | | |
| | | function initTable() { |
| | | tableIns = febs.table.init({ |
| | | elem: $view.find('table'), |
| | | id: 'userTable', |
| | | url: ctx + 'admin/videoMember/getAppVersionList', |
| | | cols: [[ |
| | | {field: 'id', title: '', minWidth: 10,align:'center'}, |
| | | {field: 'version', title: '版本号', minWidth: 120,align:'center'}, |
| | | {field: 'content', title: '更新内容', minWidth: 120,align:'center'}, |
| | | {field: 'address', title: '下载地址', minWidth: 200,align:'center'}, |
| | | {field: 'createtime', title: '更新时间', minWidth: 200,align:'center'}, |
| | | {field: 'type', title: '类型', |
| | | templet: function (d) { |
| | | if(d.type === 1){ |
| | | return '<span>安卓</span>' |
| | | }else if(d.type === 2){ |
| | | return '<span>苹果</span>' |
| | | }else{ |
| | | return '' |
| | | } |
| | | }, minWidth: 100,align:'center'}, |
| | | {title: '操作', |
| | | templet: function (d) { |
| | | return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="appVerSionUpdate" shiro:hasPermission="user:update">编辑</button>' |
| | | +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="delAppVersion" shiro:hasPermission="user:update">删除</button>' |
| | | },minWidth: 300,align:'center'} |
| | | ]] |
| | | }); |
| | | } |
| | | |
| | | // 获取查询参数 |
| | | function getQueryParams() { |
| | | return { |
| | | }; |
| | | } |
| | | |
| | | }) |
| | | </script> |
| | |
| | | resetPwd(data.id); |
| | | }); |
| | | } |
| | | |
| | | if (layEvent === 'cancelVip') { |
| | | if(data.isVip == 1){ |
| | | febs.modal.confirm('会员设置', '是否取消用户会员资格?', function () { |
| | | cancelVip(data.id); |
| | | }); |
| | | }else if(data.isVip == 2){ |
| | | febs.alert.success('当前用户还不是会员,无法取消'); |
| | | }else{ |
| | | febs.alert.success('请刷新页面重试'); |
| | | } |
| | | } |
| | | 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(); |
| | | } |
| | | }); |
| | | if(data.isVip == 2){ |
| | | febs.modal.open('会员设置', 'videoMember/setVip/' + data.id, { |
| | | btn: ['提交', '取消'], |
| | | yes: function (index, layero) { |
| | | $('#setVip-update').find('#submit').trigger('click'); |
| | | }, |
| | | btn2: function () { |
| | | layer.closeAll(); |
| | | } |
| | | }); |
| | | }else if(data.isVip == 1){ |
| | | febs.alert.success('当前用户已经是会员,无法重新设置'); |
| | | }else{ |
| | | febs.alert.success('请刷新页面重试'); |
| | | } |
| | | } |
| | | }); |
| | | function closeAccount(id) { |
| | | febs.get(ctx + 'admin/videoMember/closeAccount/' + id, null, function () { |
| | | febs.alert.success('禁用成功'); |
| | | febs.alert.success('成功'); |
| | | $query.click(); |
| | | }); |
| | | } |
| | | function openAccount(id) { |
| | | febs.get(ctx + 'admin/videoMember/openAccount/' + id, null, function () { |
| | | febs.alert.success('开启成功'); |
| | | febs.alert.success('成功'); |
| | | $query.click(); |
| | | }); |
| | | } |
| | | |
| | | function resetPwd(id) { |
| | | febs.post(ctx + 'admin/videoMember/resetPwd/' + id, null, function () { |
| | | febs.alert.success('重置成功'); |
| | | febs.alert.success('成功'); |
| | | $query.click(); |
| | | }); |
| | | } |
| | | function cancelVip(id) { |
| | | febs.get(ctx + 'admin/videoMember/cancelVip/' + id, null, function () { |
| | | febs.alert.success('成功'); |
| | | $query.click(); |
| | | }); |
| | | } |
| | |
| | | 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>' |
| | | +'<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>' |
| | |
| | | #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"> |
| | |
| | | </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"> |
| | | <label class="layui-form-label febs-form-item-require">会员级别:</label> |
| | | <div class="layui-form-item"> |
| | | <div class="layui-input-block"> |
| | | <input type="radio" name="vipType" value="MONTH" title="月卡" checked=""> |
| | | </div> |
| | | <div class="layui-input-block"> |
| | | <input type="radio" name="vipType" value="PERIOD" title="季卡"> |
| | | </div> |
| | | <div class="layui-input-block"> |
| | | <input type="radio" name="vipType" value="YEAR" title="年卡"> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item febs-hide"> |
| | |
| | | form = layui.form, |
| | | laydate = layui.laydate, |
| | | eleTree = layui.eleTree, |
| | | systemPay = [[${systemPay}]], |
| | | setVip = [[${setVip}]], |
| | | $view = $('#setVip-update'), |
| | | validate = layui.validate; |
| | | |
| | |
| | | }); |
| | | |
| | | formSelects.render(); |
| | | |
| | | |
| | | initUserValue(); |
| | | |
| | | function initUserValue() { |
| | | form.val("setVip-update-form", { |
| | | "id": systemPay.id, |
| | | "balance": systemPay.balance, |
| | | "id": setVip.id |
| | | }); |
| | | } |
| | | |
| | | form.on('submit(setVip-update-form-submit)', function (data) { |
| | | febs.post(ctx + 'admin/mallMember/updateSystemPay', data.field, function () { |
| | | febs.post(ctx + 'admin/videoMember/setVip/', data.field, function () { |
| | | layer.closeAll(); |
| | | febs.alert.success('操作成功'); |
| | | $('#febs-newInfo').find('#reset').click(); |
| | | $('#febs-user').find('#reset').click(); |
| | | }); |
| | | return false; |
| | | }); |