|
- package com.iformall.controller;
-
-
- import com.alibaba.fastjson.JSON;
- import com.google.code.kaptcha.Producer;
- import com.iformall.annotation.AuthIgnore;
- import com.iformall.common.ErrorCode;
- import com.iformall.common.ResultData;
- import com.iformall.domain.po.WxCUserBasicInfo;
- import com.iformall.domain.vo.WxCLiveLoginVo;
- import com.iformall.service.*;
- import com.iformall.utils.Constant;
- import com.iformall.utils.PasswordHelper;
- import com.iformall.utils.RedisCacheUtils;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import org.apache.commons.io.IOUtils;
- import org.apache.commons.lang3.StringUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Qualifier;
- import org.springframework.data.redis.core.RedisTemplate;
- import org.springframework.web.bind.annotation.*;
- import springfox.documentation.spring.web.json.Json;
-
- import javax.imageio.ImageIO;
- import javax.servlet.ServletOutputStream;
- import javax.servlet.http.HttpServletResponse;
- import java.awt.image.BufferedImage;
- import java.io.IOException;
- import java.util.*;
-
- @RestController
- @RequestMapping("/api/live")
- @Api(description = "直播相关接口")
- public class UserLiveController extends BaseController {
-
- private final Logger logger = LoggerFactory.getLogger(this.getClass());
-
- @Autowired
- private Producer producer;
-
- @Autowired
- @Qualifier("objectCommonRedisTemplate")
- RedisTemplate<String, Object> redisTemplate;
-
- @Autowired
- private WxCUserBasicInfoService wxCUserBasicInfoService;
-
- @Autowired
- private WxCLiveUserBasicInfoService wxCLiveUserBasicInfoService;
-
- @Autowired
- private WxCVideoService wxCVideoService;
-
- @Autowired
- private WxCVoiceService wxCVoiceService;
-
- @Autowired
- private WxCUserAuthorityService wxCUserAuthorityService;
-
- @AuthIgnore
- @ApiOperation("验证码")
- @GetMapping("/captcha.jpg")
- public void captcha(HttpServletResponse response) {
- logger.debug("[" + getIpAddr() + "] WxUserGrantController::captcha");
- response.setHeader("Cache-Control", "no-store, no-cache");
- response.setContentType("image/jpeg");
-
- //生成文字验证码
- String text = producer.createText();
- //生成图片验证码
- BufferedImage image = producer.createImage(text);
-
- //保存到redis
- String ipAddr = getIpAddr();
- String key = Constant.captchaPrev + ":" + ipAddr;
- RedisCacheUtils.cache(redisTemplate, key, text, 60);
-
- ServletOutputStream out = null;
- try {
- out = response.getOutputStream();
- ImageIO.write(image, "jpg", out);
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- IOUtils.closeQuietly(out);
- }
- }
-
- @AuthIgnore
- @PostMapping("/login")
- @ApiOperation(value = "用户登录", notes = "{\"username\":\"string\",\"password\":\"string\",\"code\":\"string\",\"Mcode\":\"string\",\"status\":\"int\"}")
- public Map<String,Object> login(@RequestBody Map<String, String> map, HttpServletResponse response) {
- Map<String,Object> wxCLiveLoginVos = new HashMap<>();
- String ipAddr = getIpAddr();
- logger.debug("[" + ipAddr + "] WxUserGrantController::login");
- String code = map.get("code");
- if (StringUtils.isBlank(code)) {
- HashMap<Object, Object> status = new HashMap<>();
- status.put("code",ErrorCode.SYS_PARAMETER_NOT_NULL.getCode());
- status.put("message","请输入验证码");
- wxCLiveLoginVos.put("status",status);
- return wxCLiveLoginVos;
- // new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "请输入验证码");
- }
- String key = Constant.captchaPrev + ":" + ipAddr;
- String code1 = RedisCacheUtils.getCacheString(redisTemplate, key);
- // if (StringUtils.isBlank(code1)) {
- // return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "验证码已过期");
- // }
- // if (!code1.equals(code)) {
- // return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "验证码不正确");
- // }
- String phone = map.get("username");
- String password = map.get("password");
- if (StringUtils.isBlank(phone) || StringUtils.isBlank(password)) {
- HashMap<Object, Object> status = new HashMap<>();
- status.put("code",ErrorCode.SYS_PARAMETER_ERROR.getCode());
- status.put("message","手机号或密码为空");
- wxCLiveLoginVos.put("status",status);
- return wxCLiveLoginVos;
- // return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "手机号或密码为空");
- }
- WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.findInfoByPhone(getTenantInfo(), phone);
- if (basicInfo == null) {
- HashMap<Object, Object> status = new HashMap<>();
- status.put("code",ErrorCode.USER_IS_EMPTY);
- status.put("message","用户不存在");
- wxCLiveLoginVos.put("status",status);
- return wxCLiveLoginVos;
- // return new ResultData(ErrorCode.USER_IS_EMPTY);
- }
-
- String encryptPassword = new PasswordHelper().encryptPassword(password);
-
- if (!encryptPassword.equals(basicInfo.getPassword())) {
- HashMap<Object, Object> status = new HashMap<>();
- status.put("code",ErrorCode.USER_PASSWD_ERR.getCode());
- status.put("message","手机号或密码错误");
- wxCLiveLoginVos.put("status",status);
- return wxCLiveLoginVos;
- // return new ResultData(ErrorCode.USER_PASSWD_ERR.getCode(), "手机号或密码错误");
- }
-
- int statu = Integer.parseInt(map.get("status"));
-
- if (statu == 0) {
- WxCUserBasicInfo basicLiveInfo = wxCLiveUserBasicInfoService.getById(basicInfo.getId());
- if (basicLiveInfo.getCode() != null && !map.get("Mcode").equals(basicLiveInfo.getCode())) {
- HashMap<Object, Object> status = new HashMap<>();
- status.put("code",ErrorCode.USER_ALREADY_LOGIN.getCode());
- status.put("message","用户已在其他设备登录");
- wxCLiveLoginVos.put("status",status);
- return wxCLiveLoginVos;
- // return new ResultData(ErrorCode.USER_ALREADY_LOGIN.getCode(), "用户已在其他设备登录");
- }
- if (basicLiveInfo.getCode() == null) {
- wxCLiveUserBasicInfoService.updateCode(basicInfo.getId(), map.get("Mcode"));
- }
- }
- if (statu == -1) {
- wxCLiveUserBasicInfoService.updateCode(basicInfo.getId(), null);
- basicInfo.setStatus(-2);
- HashMap<Object, Object> status = new HashMap<>();
- status.put("code",ErrorCode.USER_CANCEL_MCODE.getCode());
- status.put("message","设备已注销");
- wxCLiveLoginVos.put("status",status);
- return wxCLiveLoginVos;
- // return new ResultData(ErrorCode.USER_CANCEL_MCODE.getCode(), "设备已注销");
- }
-
-
- wxCUserBasicInfoService.handleLoginUser(basicInfo);
- WxCUserBasicInfo basicLiveInfo = wxCLiveUserBasicInfoService.getById(basicInfo.getId());
-
-
-
- WxCLiveLoginVo wxCLiveLoginVo = new WxCLiveLoginVo();
- wxCLiveLoginVo.setCode(Integer.parseInt(map.get("Mcode")));
- //wxCLiveLoginVo.setVersion(basicLiveInfo.getVersion());
- wxCLiveLoginVo.setUsername(map.get("username"));
- //wxCLiveLoginVo.setStatus(0);
- //wxCLiveLoginVo.setCurrent_time(new Date(System.currentTimeMillis() / 1000));
- // wxCLiveLoginVo.setExpire_time(basicLiveInfo.getExpireTime().getTime() / 1000);
- //生成一个token
- String token = UUID.randomUUID().toString().replace("-","");
- //将token和用户信息绑定放到redis redis--key:user:info:token value:用户信息
- redisTemplate.opsForValue().set("user:login"+token,JSON.toJSONString(wxCLiveLoginVo));
- //返回给前端
- wxCLiveLoginVo.setToken(token);
- Map<String, Object> info = new HashMap();
- Map<String, Object> data = new HashMap();
- Map<Object, Object> status = new HashMap<>();
- status.put("code",1000);
- status.put("message","success");
-
-
- data.put("status",0);
- data.put("version",basicLiveInfo.getVersion());
- data.put("current_time",new Date(System.currentTimeMillis() / 1000));
- data.put("expire_time",basicLiveInfo.getExpireTime().getTime() / 1000);
-
- info.put("log_id", basicInfo.getId());
- info.put("server_type","user login");
- info.put("username", basicInfo.getPhone());
- wxCLiveLoginVos.put("data",data);
- wxCLiveLoginVos.put("info",info);
- wxCLiveLoginVo.setData(data);
- wxCLiveLoginVo.setInfo(info);
- wxCLiveLoginVos.put("status",status);
- wxCLiveLoginVos.put("token",token);
- System.out.println("wxCLiveLoginVo.getToken() = " + wxCLiveLoginVo.getToken());
-
-
- return wxCLiveLoginVos;
- // return new ResultData(1000,"success",wxCLiveLoginVo);
- }
-
- /**
- * 视频模板列表
- */
- @AuthIgnore
- @PostMapping("/avatarList")
- @ApiOperation(value = "视频模板列表", notes = "{\"username\",\"string\",\"code\",\"string\"}")
- public Map<String,Object> avatarList(@RequestBody Map<String, String> params) {
- Map<String,Object> avatarVos = new HashMap<>();
- String ipaddress = getIpAddr();
- logger.debug("[" + ipaddress + "] WxUserGrantController::getAvatarList");
- String phone = params.get("username");
- WxCUserBasicInfo infoByPhone = wxCUserBasicInfoService.findInfoByPhone(getTenantInfo(), phone);
- Long id = infoByPhone.getId();
- System.out.println("id = " + id);
-
- Map<Object, Object> status = new HashMap<>();
- status.put("code",1000);
- status.put("msg","success");
- // long id = getMemberId();
- // System.out.println("id = " + id);
- // WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.getById(infoByPhone.getId());
- avatarVos.put("status",status);
-
- return wxCVideoService.getById(infoByPhone.getId());
- // return new ResultData(1000,"success",wxCVideoService.getById(infoByPhone.getId()));
- }
-
-
- /**
- * 音频模板列表
- */
- @AuthIgnore
- @PostMapping("/audioList")
- @ApiOperation(value = "音频模板列表", notes = "{\"username\",\"string\",\"code\",\"string\"}")
- public Map<String,Object> audioList(@RequestBody Map<String, String> params) {
- String ipaddress = getIpAddr();
- logger.debug("[" + ipaddress + "] WxUserGrantController::getAudioList");
- String phone = params.get("username");
-
- WxCUserBasicInfo infoByPhone = wxCUserBasicInfoService.findInfoByPhone(getTenantInfo(), phone);
- Long id = infoByPhone.getId();
- System.out.println("id = " + id);
-
- // long id = getMemberId();
-
-
- return wxCVoiceService.getById(id);
- }
-
- /**
- * 资源权限查询
- */
-
- @AuthIgnore
- @ApiOperation(value = "资源权限查询", notes = "{\"username\",\"string\",\"code\",\"string\",\"type\",\"int\",\"resource_id\",\"long\"}")
- @PostMapping("/author")
- public Map<String,Object> getAuthor(@RequestBody Map<String, String> params) {
- String ipaddress = getIpAddr();
- logger.debug("[" + ipaddress + "] WxUserGrantController::getAuthor");
-
-
- String phone = params.get("username");
- WxCUserBasicInfo infoByPhone = wxCUserBasicInfoService.findInfoByPhone(getTenantInfo(), phone);
- Long id = infoByPhone.getId();
- System.out.println("id = " + id);
-
-
- //long id = getMemberId();
-
- String username = params.get("username");
- String code = params.get("code");
- Integer type = Integer.parseInt(params.get("type"));
- Long resourceId = Long.valueOf(params.get("resource_id"));
-
-
- return wxCUserAuthorityService.getAuthor(id, code, type, resourceId);
- }
- }
|