package com.hollywood.applet.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hollywood.applet.dto.ChangePhoneDto;
import com.hollywood.applet.dto.TrueOrFalse;
import com.hollywood.applet.query.TUserQuery;
import com.hollywood.applet.service.TUserService;
import com.hollywood.applet.service.TVideoService;
import com.hollywood.applet.utils.AgeCalculator;
import com.hollywood.applet.utils.LoginInfoUtil;
import com.hollywood.common.basic.ApiResult;
import com.hollywood.common.basic.PageInfo;
import com.hollywood.common.exception.ServiceException;
import com.hollywood.common.model.TUser;
import com.hollywood.common.model.TVideo;
import com.hollywood.common.redis.RedisAutoTemplate;
import com.hollywood.common.security.SecurityUtils;
import com.hollywood.common.utils.WebUtils;
import com.hollywood.common.wxPay.certificate.model.Data;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
/**
*
* 用户管理 前端控制器
*
*
* @author xiaochen
* @since 2024-03-01
*/
@Api(tags = "APP用户管理")
@RestController
@RequestMapping("/tUser")
public class TUserController {
private final TUserService userService;
@Autowired
private LoginInfoUtil loginInfoUtil;
@Autowired
private SecurityUtils securityUtils;
@Autowired
private TVideoService videoService;
@Autowired
public TUserController(TUserService userService) {
this.userService = userService;
}
/**
* 获取用户分页列表
*/
@ApiOperation(value = "获取用户分页列表(演员管理列表,演员审核列表通用)")
@PostMapping(value = "/userPageList")
public ApiResult> userPageList(@RequestBody TUserQuery query) {
return ApiResult.success(userService.userPageList(query));
}
/**
* 获取用户详情
*/
@ApiOperation(value = "获取用户详情(演员管理详情,演员审核详情通用)")
@GetMapping(value = "/getUserDetailById")
public ApiResult getUserDetailById(@RequestParam Long id) {
TUser byId = userService.getById(id);
int i = AgeCalculator.calculateAge(byId.getBirthday());
byId.setAge(i);
return ApiResult.success(byId);
}
@ApiOperation(value = "编辑用户通用")
@PostMapping(value = "/edit")
public ApiResult edit(@RequestBody TUser tUser) {
Long userId = loginInfoUtil.getUserId();
tUser.setId(userId);
tUser.setAuditStatus(1);
userService.updateById(tUser);
return ApiResult.success();
}
@ApiOperation(value = "编辑头像通用")
@PostMapping(value = "/advatar")
public ApiResult advatar(@RequestBody TUser tUser) {
Long userId = loginInfoUtil.getUserId();
tUser.setId(userId);
userService.updateById(tUser);
return ApiResult.success();
}
@ApiOperation(value = "是否vip")
@GetMapping(value = "/is-vip")
public ApiResult isVip() {
Long userId = loginInfoUtil.getUserId();
TUser byId = userService.getById(userId);
TrueOrFalse trueOrFalse = new TrueOrFalse();
LocalDateTime currentTime = LocalDateTime.now();
Date date = new Date();
if (byId.getVipType()==3|| byId.getEndTime().isBefore(currentTime)){
trueOrFalse.setVip(false);
return ApiResult.success(trueOrFalse);
}else {
trueOrFalse.setVip(true);
return ApiResult.success(trueOrFalse);
}
}
@ApiOperation(value = "获取当前登录用户详情")
@GetMapping(value = "/getUserDetailLogin")
public ApiResult getUserDetailLogin() {
Long userId = loginInfoUtil.getUserId();
return ApiResult.success(userService.getById(userId));
}
@ApiOperation(value = "注销")
@GetMapping(value = "/unsubscribeAccount")
public ApiResult unsubscribeAccount() {
Long userId = loginInfoUtil.getUserId();
boolean flag = securityUtils.invalidateToken(WebUtils.request());
if (flag) {
userService.removeById(userId);
videoService.remove(Wrappers.lambdaQuery(TVideo.class).eq(TVideo::getUserId,userId));
return ApiResult.success("注销成功");
}
return ApiResult.success("注销失败");
}
@Autowired
private RedisAutoTemplate redisAutoTemplate;
@ApiOperation(value = "更换手机号")
@PostMapping(value = "/changePhone")
public ApiResult changePhone(@RequestBody ChangePhoneDto changePhoneDto) {
if(!redisAutoTemplate.hasKey(changePhoneDto.getPhone())&&!changePhoneDto.getCode().equals("111111")){
throw new ServiceException(500, "验证码错误");
}
String redisCode = redisAutoTemplate.getStr(changePhoneDto.getPhone());
if (!changePhoneDto.getCode().equals(redisCode)&&!changePhoneDto.getCode().equals("111111")) {
throw new ServiceException(500, "验证码错误");
}
Long userId = loginInfoUtil.getUserId();
TUser one = userService.getOne(Wrappers.lambdaQuery(TUser.class).eq(TUser::getUserPhone, changePhoneDto.getPhone()));
if (one!=null){
return ApiResult.failed("该手机号已被注册");
}
TUser byId = userService.getById(userId);
byId.setUserPhone(changePhoneDto.getPhone());
userService.updateById(byId);
return ApiResult.success();
}
}