This commit is contained in:
张良(004796)
2024-03-12 15:27:05 +08:00
parent 2bd2871df0
commit 7bc31dc69e
22 changed files with 298 additions and 90 deletions

View File

@@ -13,6 +13,7 @@ import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup; import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.xq.domain.UserAuth; import com.ruoyi.xq.domain.UserAuth;
import com.ruoyi.xq.dto.admin.user.UserAuthAdminVo;
import com.ruoyi.xq.service.UserAuthService; import com.ruoyi.xq.service.UserAuthService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@@ -41,8 +42,8 @@ public class UserAuthController extends BaseController {
*/ */
@SaCheckPermission("xq:userAuth:list") @SaCheckPermission("xq:userAuth:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo<UserAuth> list(UserAuth bo, PageQuery pageQuery) { public TableDataInfo<UserAuthAdminVo> list(UserAuthAdminVo bo, PageQuery pageQuery) {
Page<UserAuth> page = userAuthService.page(pageQuery.build(), Wrappers.lambdaQuery(bo)); Page<UserAuthAdminVo> page = userAuthService.pageApp(pageQuery, bo);
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }

View File

@@ -15,12 +15,15 @@ import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.xq.domain.User; import com.ruoyi.xq.domain.User;
import com.ruoyi.xq.service.UserService; import com.ruoyi.xq.service.UserService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/** /**
* 用户管理 * 用户管理
@@ -46,6 +49,22 @@ public class UserController extends BaseController {
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }
@GetMapping("/getByUsercode")
public R<User> getByUsercode(String usercode){
return R.ok(userService.getByUsercode(usercode));
}
@GetMapping("/listByUserCode")
public R<List<String>> listByUserCode(String usercode, int limit){
if(limit == 0){
limit = 40;
}
List<User> users = userService.list(Wrappers.lambdaQuery(User.class)
.select(User::getUsercode)
.like(StringUtils.isNotEmpty(usercode), User::getUsercode, usercode)
.last("limit " + limit));
return R.ok(users.stream().map(User::getUsercode).collect(Collectors.toList()));
}
/** /**
* 获取用户管理详细信息 * 获取用户管理详细信息

View File

@@ -12,7 +12,11 @@ import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup; import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.xq.domain.User;
import com.ruoyi.xq.domain.UserVip; import com.ruoyi.xq.domain.UserVip;
import com.ruoyi.xq.dto.admin.user.UserVipAdminVo;
import com.ruoyi.xq.dto.admin.user.req.AddVipReq;
import com.ruoyi.xq.service.UserService;
import com.ruoyi.xq.service.UserVipService; import com.ruoyi.xq.service.UserVipService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@@ -35,14 +39,15 @@ import java.util.Arrays;
public class UserVipController extends BaseController { public class UserVipController extends BaseController {
private final UserVipService userVipService; private final UserVipService userVipService;
private final UserService userService;
/** /**
* 查询VIP用户列表 * 查询VIP用户列表
*/ */
@SaCheckPermission("xq:userVip:list") @SaCheckPermission("xq:userVip:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo<UserVip> list(UserVip bo, PageQuery pageQuery) { public TableDataInfo<UserVipAdminVo> list(UserVipAdminVo bo, PageQuery pageQuery) {
Page<UserVip> page = userVipService.page(pageQuery.build(), Wrappers.lambdaQuery(bo)); Page<UserVipAdminVo> page = userVipService.pageApp(pageQuery, bo);
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }
@@ -58,38 +63,28 @@ public class UserVipController extends BaseController {
return R.ok(userVipService.getById(id)); return R.ok(userVipService.getById(id));
} }
/**
* 新增VIP用户
*/
@SaCheckPermission("xq:userVip:add") @SaCheckPermission("xq:userVip:add")
@Log(title = "VIP用户", businessType = BusinessType.INSERT) @Log(title = "VIP用户", businessType = BusinessType.INSERT)
@RepeatSubmit() @RepeatSubmit()
@PostMapping() @PostMapping("/addVip")
public R<Void> add(@Validated(AddGroup.class) @RequestBody UserVip bo) { public R<Void> addVip(@RequestBody AddVipReq bo) {
return toAjax(userVipService.save(bo)); User user = userService.getByUsercode(bo.getUsercode());
} if(user == null){
return R.fail("用户不存在!");
/** }
* 修改VIP用户 userVipService.updateVipOrderAdmin(bo,user);
*/ return R.ok();
@SaCheckPermission("xq:userVip:edit")
@Log(title = "VIP用户", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody UserVip bo) {
return toAjax(userVipService.updateById(bo));
} }
/** /**
* 删除VIP用户 * 删除VIP用户
* *
* @param ids 主键串
*/ */
@SaCheckPermission("xq:userVip:remove") @SaCheckPermission("xq:userVip:remove")
@Log(title = "VIP用户", businessType = BusinessType.DELETE) @Log(title = "VIP用户", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}") @DeleteMapping("/{id}")
public R<Void> remove(@NotEmpty(message = "主键不能为空") public R<Void> remove(@NotNull(message = "主键不能为空") @PathVariable Long id) {
@PathVariable Long[] ids) { userVipService.removeVip(id);
return toAjax(userVipService.removeBatchByIds(Arrays.asList(ids))); return R.ok();
} }
} }

View File

@@ -13,6 +13,7 @@ import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup; import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.xq.domain.VipOrder; import com.ruoyi.xq.domain.VipOrder;
import com.ruoyi.xq.dto.admin.vipOrder.VipOrderAdminVo;
import com.ruoyi.xq.service.VipOrderService; import com.ruoyi.xq.service.VipOrderService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@@ -41,8 +42,8 @@ public class VipOrderController extends BaseController {
*/ */
@SaCheckPermission("xq:vipOrder:list") @SaCheckPermission("xq:vipOrder:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo<VipOrder> list(VipOrder bo, PageQuery pageQuery) { public TableDataInfo<VipOrderAdminVo> list(VipOrderAdminVo bo, PageQuery pageQuery) {
Page<VipOrder> page = vipOrderService.page(pageQuery.build(), Wrappers.lambdaQuery(bo)); Page<VipOrderAdminVo> page = vipOrderService.pageApp(pageQuery, bo);
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }

View File

@@ -41,6 +41,10 @@ public class VipOrder implements Serializable {
* 1-普通会员 2-黄金会员 3-钻石会员 * 1-普通会员 2-黄金会员 3-钻石会员
*/ */
private Integer vipType; private Integer vipType;
/**
* 开通月份
*/
private Integer vipMonth;
/** /**
* 1-月卡 2-季卡 3-年卡 * 1-月卡 2-季卡 3-年卡
*/ */
@@ -81,7 +85,7 @@ public class VipOrder implements Serializable {
/** /**
* 是否为后台管理新增 * 是否为后台管理新增
*/ */
private String admin; private Boolean admin;
/** /**
* 后台操作管理员ID * 后台操作管理员ID
*/ */

View File

@@ -0,0 +1,15 @@
package com.ruoyi.xq.dto.admin.user;
import com.ruoyi.xq.domain.UserAuth;
import lombok.Data;
@Data
public class UserAuthAdminVo extends UserAuth {
/**
* 昵称
*/
private String nickname;
private String mobile;
private String avatar;
}

View File

@@ -0,0 +1,15 @@
package com.ruoyi.xq.dto.admin.user;
import com.ruoyi.xq.domain.UserVip;
import lombok.Data;
@Data
public class UserVipAdminVo extends UserVip {
/**
* 昵称
*/
private String nickname;
private String mobile;
private String avatar;
}

View File

@@ -0,0 +1,10 @@
package com.ruoyi.xq.dto.admin.user.req;
import lombok.Data;
@Data
public class AddVipReq {
private String usercode;
private Integer openVipType;
private Integer openVipMonthNum;
}

View File

@@ -0,0 +1,12 @@
package com.ruoyi.xq.dto.admin.vipOrder;
import com.ruoyi.xq.domain.VipOrder;
import lombok.Data;
@Data
public class VipOrderAdminVo extends VipOrder {
private String nickname;
private String mobile;
private String avatar;
}

View File

@@ -1,13 +1,14 @@
package com.ruoyi.xq.enums.vip; package com.ruoyi.xq.enums.vip;
import lombok.Getter; import lombok.Getter;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.Arrays;
@Getter @Getter
public enum VipTypeEnum { public enum VipTypeEnum {
ONE(1,"一级会员"), ONE(1,"普通会员"),
TWO(2,"二级会员"), TWO(2,"黄金会员"),
THREE(3,"三级会员"), THREE(3,"钻石会员"),
; ;
private final Integer code; private final Integer code;
private final String text; private final String text;
@@ -16,4 +17,8 @@ public enum VipTypeEnum {
this.code = code; this.code = code;
this.text = text; this.text = text;
} }
public static VipTypeEnum getByCode(Integer code){
return Arrays.stream(VipTypeEnum.values()).filter(i -> i.getCode().equals(code)).findFirst().orElse(null);
}
} }

View File

@@ -1,7 +1,10 @@
package com.ruoyi.xq.mapper; package com.ruoyi.xq.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.xq.domain.UserAuth; import com.ruoyi.xq.domain.UserAuth;
import com.ruoyi.xq.dto.admin.user.UserAuthAdminVo;
import org.apache.ibatis.annotations.Param;
/** /**
* 用户认证管理Mapper接口 * 用户认证管理Mapper接口
@@ -11,4 +14,5 @@ import com.ruoyi.xq.domain.UserAuth;
*/ */
public interface UserAuthMapper extends BaseMapper<UserAuth> { public interface UserAuthMapper extends BaseMapper<UserAuth> {
Page<UserAuthAdminVo> pageApp(@Param("build") Page<Object> build, @Param("bo") UserAuthAdminVo bo);
} }

View File

@@ -1,7 +1,10 @@
package com.ruoyi.xq.mapper; package com.ruoyi.xq.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.xq.domain.UserVip; import com.ruoyi.xq.domain.UserVip;
import com.ruoyi.xq.dto.admin.user.UserVipAdminVo;
import org.apache.ibatis.annotations.Param;
/** /**
* VIP用户Mapper接口 * VIP用户Mapper接口
@@ -11,4 +14,5 @@ import com.ruoyi.xq.domain.UserVip;
*/ */
public interface UserVipMapper extends BaseMapper<UserVip> { public interface UserVipMapper extends BaseMapper<UserVip> {
Page<UserVipAdminVo> pageApp(@Param("build") Page<Object> build, @Param("bo") UserVipAdminVo bo);
} }

View File

@@ -1,7 +1,10 @@
package com.ruoyi.xq.mapper; package com.ruoyi.xq.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.xq.domain.VipOrder; import com.ruoyi.xq.domain.VipOrder;
import com.ruoyi.xq.dto.admin.vipOrder.VipOrderAdminVo;
import org.apache.ibatis.annotations.Param;
/** /**
* VIP订单Mapper接口 * VIP订单Mapper接口
@@ -11,4 +14,5 @@ import com.ruoyi.xq.domain.VipOrder;
*/ */
public interface VipOrderMapper extends BaseMapper<VipOrder> { public interface VipOrderMapper extends BaseMapper<VipOrder> {
Page<VipOrderAdminVo> pageApp(@Param("build") Page<Object> build, @Param("bo") VipOrderAdminVo bo);
} }

View File

@@ -1,7 +1,10 @@
package com.ruoyi.xq.service; package com.ruoyi.xq.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.xq.domain.UserAuth; import com.ruoyi.xq.domain.UserAuth;
import com.ruoyi.xq.dto.admin.user.UserAuthAdminVo;
/** /**
* 用户认证管理Service接口 * 用户认证管理Service接口
@@ -11,4 +14,6 @@ import com.ruoyi.xq.domain.UserAuth;
*/ */
public interface UserAuthService extends IService<UserAuth> { public interface UserAuthService extends IService<UserAuth> {
UserAuth getByUserId(Long userId); UserAuth getByUserId(Long userId);
Page<UserAuthAdminVo> pageApp(PageQuery pageQuery, UserAuthAdminVo bo);
} }

View File

@@ -1,8 +1,13 @@
package com.ruoyi.xq.service; package com.ruoyi.xq.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.xq.domain.User;
import com.ruoyi.xq.domain.UserVip; import com.ruoyi.xq.domain.UserVip;
import com.ruoyi.xq.domain.VipOrder; import com.ruoyi.xq.domain.VipOrder;
import com.ruoyi.xq.dto.admin.user.UserVipAdminVo;
import com.ruoyi.xq.dto.admin.user.req.AddVipReq;
/** /**
* VIP用户Service接口 * VIP用户Service接口
@@ -18,4 +23,11 @@ public interface UserVipService extends IService<UserVip> {
UserVip getByUserVipMaster(Long userId); UserVip getByUserVipMaster(Long userId);
void updateVipOrderAdmin(AddVipReq bo, User user);
void incsVip(User user, Integer vipType, Integer vipMonth);
Page<UserVipAdminVo> pageApp(PageQuery pageQuery, UserVipAdminVo bo);
void removeVip(Long id);
} }

View File

@@ -1,7 +1,10 @@
package com.ruoyi.xq.service; package com.ruoyi.xq.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.xq.domain.VipOrder; import com.ruoyi.xq.domain.VipOrder;
import com.ruoyi.xq.dto.admin.vipOrder.VipOrderAdminVo;
/** /**
* VIP订单Service接口 * VIP订单Service接口
@@ -11,4 +14,6 @@ import com.ruoyi.xq.domain.VipOrder;
*/ */
public interface VipOrderService extends IService<VipOrder> { public interface VipOrderService extends IService<VipOrder> {
VipOrder createVipOrder(Long userId, Long vipPriceSettingId); VipOrder createVipOrder(Long userId, Long vipPriceSettingId);
Page<VipOrderAdminVo> pageApp(PageQuery pageQuery, VipOrderAdminVo bo);
} }

View File

@@ -1,8 +1,11 @@
package com.ruoyi.xq.service.impl; package com.ruoyi.xq.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.xq.domain.UserAuth; import com.ruoyi.xq.domain.UserAuth;
import com.ruoyi.xq.dto.admin.user.UserAuthAdminVo;
import com.ruoyi.xq.mapper.UserAuthMapper; import com.ruoyi.xq.mapper.UserAuthMapper;
import com.ruoyi.xq.service.UserAuthService; import com.ruoyi.xq.service.UserAuthService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -21,4 +24,9 @@ public class UserAuthServiceImpl extends ServiceImpl<UserAuthMapper,UserAuth> im
return this.getOne(Wrappers.lambdaQuery(UserAuth.class) return this.getOne(Wrappers.lambdaQuery(UserAuth.class)
.eq(UserAuth::getUserId, userId)); .eq(UserAuth::getUserId, userId));
} }
@Override
public Page<UserAuthAdminVo> pageApp(PageQuery pageQuery, UserAuthAdminVo bo) {
return baseMapper.pageApp(pageQuery.build(), bo);
}
} }

View File

@@ -1,15 +1,32 @@
package com.ruoyi.xq.service.impl; package com.ruoyi.xq.service.impl;
import cn.hutool.extra.spring.SpringUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.xq.domain.User;
import com.ruoyi.xq.domain.UserVip; import com.ruoyi.xq.domain.UserVip;
import com.ruoyi.xq.domain.VipOrder;
import com.ruoyi.xq.dto.admin.user.UserVipAdminVo;
import com.ruoyi.xq.dto.admin.user.req.AddVipReq;
import com.ruoyi.xq.enums.common.OrderTypeEnum;
import com.ruoyi.xq.enums.pay.PayStatusEnum;
import com.ruoyi.xq.enums.vip.VipStatusEnum; import com.ruoyi.xq.enums.vip.VipStatusEnum;
import com.ruoyi.xq.enums.vip.VipTypeEnum;
import com.ruoyi.xq.manager.OrderNoUtil;
import com.ruoyi.xq.mapper.UserVipMapper; import com.ruoyi.xq.mapper.UserVipMapper;
import com.ruoyi.xq.service.UserVipService; import com.ruoyi.xq.service.UserVipService;
import lombok.RequiredArgsConstructor; import com.ruoyi.xq.service.VipOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
@@ -19,10 +36,12 @@ import java.util.List;
* @author 77 * @author 77
* @date 2024-03-04 * @date 2024-03-04
*/ */
@RequiredArgsConstructor
@Service @Service
public class UserVipServiceImpl extends ServiceImpl<UserVipMapper,UserVip> implements UserVipService { public class UserVipServiceImpl extends ServiceImpl<UserVipMapper,UserVip> implements UserVipService {
@Autowired
private VipOrderService vipOrderService;
@Override @Override
public UserVip getUserVip(Long userId, Integer vipType){ public UserVip getUserVip(Long userId, Integer vipType){
return this.getOne(Wrappers.lambdaQuery(UserVip.class) return this.getOne(Wrappers.lambdaQuery(UserVip.class)
@@ -50,4 +69,70 @@ public class UserVipServiceImpl extends ServiceImpl<UserVipMapper,UserVip> imple
return userVipList.stream().max(Comparator.comparing(UserVip::getVipType)).orElse(null); return userVipList.stream().max(Comparator.comparing(UserVip::getVipType)).orElse(null);
} }
/**
* 后台管理强制覆盖VIP
* @param bo
* @param user
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void updateVipOrderAdmin(AddVipReq bo, User user) {
VipTypeEnum vipTypeEnum = VipTypeEnum.getByCode(bo.getOpenVipType());
if(vipTypeEnum == null || bo.getOpenVipMonthNum() == null || bo.getOpenVipMonthNum() < 1){
throw new ServiceException("参数异常!");
}
String text = String.format("管理员开通%s %s个月", vipTypeEnum.getText(), bo.getOpenVipMonthNum());
VipOrder vipOrder = new VipOrder();
vipOrder.setUserId(user.getId());
vipOrder.setUsercode(user.getUsercode());
vipOrder.setVipType(vipTypeEnum.getCode());
vipOrder.setVipMonth(bo.getOpenVipMonthNum());
vipOrder.setOrderName(text);
vipOrder.setOrderNo(OrderNoUtil.gen(OrderTypeEnum.VIP));
vipOrder.setPayStatus(PayStatusEnum.NO_PAY.getCode());
vipOrder.setAdmin(true);
vipOrder.setAdminId(LoginHelper.getUserId());
vipOrderService.save(vipOrder);
UserVipService userVipService = SpringUtil.getBean(UserVipService.class);
userVipService.incsVip(user,bo.getOpenVipType(),bo.getOpenVipMonthNum());
}
@Override
public void incsVip(User user, Integer vipType, Integer vipMonth){
// TODO 加锁
UserVip userVip = this.getUserVip(user.getId(),vipType);
LocalDateTime now = LocalDateTime.now();
// 以前会员失效
if(userVip == null ||
!VipStatusEnum.NORMAL.getCode().equals(userVip.getVipStatus()) || // 会员不可用
userVip.getVipTimeout().isBefore(now)){
if(userVip == null){
userVip = new UserVip();
}
userVip.setUserId(user.getId());
userVip.setUsercode(user.getUsercode());
userVip.setVipType(vipType);
LocalDate expireDate = now.plusMonths(vipMonth).plusDays(1).toLocalDate();
userVip.setVipTimeout(LocalDateTime.of(expireDate, LocalTime.MIN));
userVip.setVipStatus(VipStatusEnum.NORMAL.getCode());
this.saveOrUpdate(userVip);
}else{
userVip.setVipTimeout(userVip.getVipTimeout().plusMonths(vipMonth));
this.saveOrUpdate(userVip);
}
}
@Override
public Page<UserVipAdminVo> pageApp(PageQuery pageQuery, UserVipAdminVo bo) {
return baseMapper.pageApp(pageQuery.build(), bo);
}
@Override
public void removeVip(Long id) {
this.update(Wrappers.lambdaUpdate(UserVip.class)
.eq(UserVip::getId,id)
.set(UserVip::getVipStatus, VipStatusEnum.CLOSE.getCode()));
}
} }

View File

@@ -1,10 +1,13 @@
package com.ruoyi.xq.service.impl; package com.ruoyi.xq.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.xq.domain.User; import com.ruoyi.xq.domain.User;
import com.ruoyi.xq.domain.VipOrder; import com.ruoyi.xq.domain.VipOrder;
import com.ruoyi.xq.domain.VipPrice; import com.ruoyi.xq.domain.VipPrice;
import com.ruoyi.xq.dto.admin.vipOrder.VipOrderAdminVo;
import com.ruoyi.xq.enums.common.OrderTypeEnum; import com.ruoyi.xq.enums.common.OrderTypeEnum;
import com.ruoyi.xq.enums.pay.PayStatusEnum; import com.ruoyi.xq.enums.pay.PayStatusEnum;
import com.ruoyi.xq.manager.OrderNoUtil; import com.ruoyi.xq.manager.OrderNoUtil;
@@ -51,4 +54,9 @@ public class VipOrderServiceImpl extends ServiceImpl<VipOrderMapper,VipOrder> im
this.save(vipOrder); this.save(vipOrder);
return vipOrder; return vipOrder;
} }
@Override
public Page<VipOrderAdminVo> pageApp(PageQuery pageQuery, VipOrderAdminVo bo) {
return baseMapper.pageApp(pageQuery.build(), bo);
}
} }

View File

@@ -3,31 +3,23 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.xq.mapper.UserAuthMapper"> <mapper namespace="com.ruoyi.xq.mapper.UserAuthMapper">
<select id="pageApp" resultType="com.ruoyi.xq.dto.admin.user.UserAuthAdminVo">
<resultMap type="com.ruoyi.xq.domain.UserAuth" id="UserAuthResult"> select t1.*, t2.nickname,t2.mobile,t2.avatar
<result property="id" column="id"/> from xq_user_auth t1
<result property="userId" column="user_id"/> left join xq_user t2 on t1.user_id = t2.id
<result property="usercode" column="usercode"/> <where>
<result property="cardNumAuth" column="card_num_auth"/> <if test="bo.usercode != null and bo.usercode != ''">
<result property="cardNumId" column="card_num_id"/> and t1.usercode = #{bo.usercode}
<result property="cardNumName" column="card_num_name"/> </if>
<result property="phoneAuth" column="phone_auth"/> <if test="bo.nickname != null and bo.nickname != ''">
<result property="phone" column="phone"/> and t2.nickname like concat('%',#{bo.nickname},'%')
<result property="singlePersonAuth" column="single_person_auth"/> </if>
<result property="educationAuth" column="education_auth"/> <if test="bo.mobile != null and bo.mobile != ''">
<result property="educationPic" column="education_pic"/> and t2.mobile = #{bo.mobile}
<result property="jobAuth" column="job_auth"/> </if>
<result property="jobAuthType" column="job_auth_type"/> </where>
<result property="jobPic" column="job_pic"/> order by t1.id desc
<result property="carAuth" column="car_auth"/> </select>
<result property="carPic" column="car_pic"/>
<result property="houseAuth" column="house_auth"/>
<result property="housePic" column="house_pic"/>
<result property="marriageAuth" column="marriage_auth"/>
<result property="marriagePic" column="marriage_pic"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
</mapper> </mapper>

View File

@@ -4,16 +4,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.xq.mapper.UserVipMapper"> <mapper namespace="com.ruoyi.xq.mapper.UserVipMapper">
<resultMap type="com.ruoyi.xq.domain.UserVip" id="UserVipResult"> <select id="pageApp" resultType="com.ruoyi.xq.dto.admin.user.UserVipAdminVo">
<result property="id" column="id"/> select t1.*, t2.nickname, t2.mobile,t2.avatar
<result property="userId" column="user_id"/> from xq_user_vip t1
<result property="usercode" column="usercode"/> left join xq_user t2 on t1.user_id = t2.id
<result property="vipType" column="vip_type"/> <where>
<result property="vipTimeout" column="vip_timeout"/> <if test="bo.usercode != null and bo.usercode != ''">
<result property="vipStatus" column="vip_status"/> and t1.usercode = #{bo.usercode}
<result property="createTime" column="create_time"/> </if>
<result property="updateTime" column="update_time"/> <if test="bo.nickname != null and bo.nickname != ''">
</resultMap> and t2.nickname like concat('%',#{bo.nickname},'%')
</if>
<if test="bo.mobile != null and bo.mobile != ''">
and t2.mobile = #{bo.mobile}
</if>
</where>
order by id desc
</select>
</mapper> </mapper>

View File

@@ -4,26 +4,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.xq.mapper.VipOrderMapper"> <mapper namespace="com.ruoyi.xq.mapper.VipOrderMapper">
<resultMap type="com.ruoyi.xq.domain.VipOrder" id="VipOrderResult"> <select id="pageApp" resultType="com.ruoyi.xq.dto.admin.vipOrder.VipOrderAdminVo">
<result property="id" column="id"/> select t1.*, t2.nickname,t2.mobile,t2.avatar
<result property="userId" column="user_id"/> from xq_vip_order t1
<result property="usercode" column="usercode"/> left join xq_user t2 on t1.user_id = t2.id
<result property="vipId" column="vip_id"/> <where>
<result property="vipType" column="vip_type"/> <if test="bo.usercode != null and bo.usercode != ''">
<result property="vipTime" column="vip_time"/> and t1.usercode = #{bo.usercode}
<result property="vipPrice" column="vip_price"/> </if>
<result property="orderNo" column="order_no"/> <if test="bo.nickname != null and bo.nickname != ''">
<result property="platformType" column="platform_type"/> and t2.nickname like concat('%',#{bo.nickname},'%')
<result property="payStatus" column="pay_status"/> </if>
<result property="payTime" column="pay_time"/> <if test="bo.mobile != null and bo.mobile != ''">
<result property="appid" column="appid"/> and t2.mobile = #{bo.mobile}
<result property="returnContent" column="return_content"/> </if>
<result property="operateIp" column="operate_ip"/> </where>
<result property="admin" column="admin"/> order by t1.create_time desc
<result property="adminId" column="admin_id"/> </select>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
</mapper> </mapper>