UserOperationController.java 6.44 KB
package com.topdraw.business.process.rest;

import com.alibaba.druid.support.json.JSONUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.topdraw.annotation.AnonymousAccess;
import com.topdraw.annotation.Log;
import com.topdraw.business.module.member.profile.domain.MemberProfile;
import com.topdraw.business.module.user.iptv.domain.UserTv;
import com.topdraw.business.module.user.weixin.service.dto.UserWeixinDTO;
import com.topdraw.business.process.domian.TempIptvUser;
import com.topdraw.business.process.domian.UnbindGroup;
import com.topdraw.business.process.domian.weixin.SubscribeBean;
import com.topdraw.business.process.domian.weixin.SubscribeBeanEvent;
import com.topdraw.business.process.domian.weixin.WeiXinUserBean;
import com.topdraw.business.process.service.UserOperationService;
import com.topdraw.common.ResultInfo;
import com.topdraw.module.mq.DataSyncMsg;
import com.topdraw.util.JSONUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

@Api("账户处理")
@RestController
@RequestMapping(value = "/ucEngine/api/userOperation")
@Slf4j
public class UserOperationController {

    @Autowired
    private UserOperationService userTvOperationService;

    @Log("带参二维码")
    @PostMapping(value = "/sendQrCodeMessage")
    @ApiOperation("带参二维码")
    @AnonymousAccess
    public ResultInfo sendQrCodeMessage(@RequestBody String content) {
        log.info("resources :[{}]",content);
        boolean result = true;
        return ResultInfo.success(result);
    }

    @Log("删除全部收藏")
    @PostMapping(value = "/deleteAllCollection")
    @ApiOperation("删除全部收藏")
    @AnonymousAccess
    public ResultInfo deleteAllCollection(@RequestBody String content) {
        log.info("resources :[{}]",content);
        boolean result = true;
        return ResultInfo.success(result);
    }

    @Log("删除收藏")
    @PostMapping(value = "/deleteCollection")
    @ApiOperation("删除收藏")
    @AnonymousAccess
    public ResultInfo deleteCollection(@RequestBody String content) {
        log.info("resources :[{}]",content);
        boolean result = true;
        return ResultInfo.success(result);
    }

    @Log("添加收藏")
    @PostMapping(value = "/addCollection")
    @ApiOperation("添加收藏")
    @AnonymousAccess
    public ResultInfo addCollection(@RequestBody String content) {
        log.info("resources :[{}]",content);
        boolean result = true;
        return ResultInfo.success(result);
    }

    @Log("新增大屏账户同时创建会员信息")
    @PostMapping(value = "/createUserAndCreateMember")
    @ApiOperation("新增大屏账户同时创建会员信息")
    public ResultInfo createUserAndCreateMember(@Validated @RequestBody TempIptvUser resources) {
        UserTv userTv = new UserTv();
        BeanUtils.copyProperties(resources,userTv);
        this.userTvOperationService.createMemberByUserTv(userTv);
        return ResultInfo.success();
    }

    @Log("大屏用户解绑")
    @PutMapping(value = "/unbind")
    @ApiOperation("大屏用户解绑")
    public ResultInfo unbind(@Validated(value = {UnbindGroup.class}) @RequestBody TempIptvUser resources) {
        UserTv userTv = new UserTv();
        BeanUtils.copyProperties(resources,userTv);
        this.userTvOperationService.unbind(userTv);
        return ResultInfo.success();
    }

    @Log("大屏更换主账号")
    @PutMapping(value = "/changeMainAccount")
    @ApiOperation("大屏更换主账号")
    public ResultInfo changeMainAccount(@Validated(value = {UnbindGroup.class}) @RequestBody TempIptvUser resources) {
        UserTv userTv = new UserTv();
        BeanUtils.copyProperties(resources,userTv);
        this.userTvOperationService.changeMainAccount(userTv);
        return ResultInfo.success("update success");
    }

    @Log("微信小程序登录")
    @PostMapping("/appletLogin")
    @ApiOperation("微信小程序登录")
    public ResultInfo appletLogin(@Validated @RequestBody WeiXinUserBean resources) {
        UserWeixinDTO result = this.userTvOperationService.appletLogin(resources);
        return ResultInfo.success(result);
    }

    @Log("微信公众号关注")
    @PostMapping("/subscribe")
    @ApiOperation("微信公众号关注")
    @AnonymousAccess
    public ResultInfo subscribe(@Validated @RequestBody SubscribeBeanEvent data) {
        String content = data.getContent();
        SubscribeBean subscribeBean = JSONUtil.parseMsg2Object(content, SubscribeBean.class);
        boolean result = this.userTvOperationService.subscribe(subscribeBean);
        return ResultInfo.success(result);
    }

    @Log("微信公众号取关")
    @PostMapping("/unsubscribe")
    @ApiOperation("微信公众号取关")
    @AnonymousAccess
    public ResultInfo unsubscribe(@Validated @RequestBody SubscribeBeanEvent data) {
        String content = data.getContent();
        SubscribeBean subscribeBean = JSONUtil.parseMsg2Object(content, SubscribeBean.class);
        boolean result = this.userTvOperationService.unsubscribe(subscribeBean);
        return ResultInfo.success(result);
    }

    /**
     * @param data
     * @description 通过大屏关注的订阅号,因为订阅号不支持带参二维码,
     * 所以需要先跳到H5(带大屏参数),
     * 再做服务号授权(订阅号只能按钮触发获取信息),
     * 再将服务号信息和大屏参数缓存下来(该接口的功能)
     * 然后跳转到订阅号关注页
     * 关注后回调处理时,根据unionid进行相关逻辑
     * @author Hongyan Wang
     * @date 2021/8/24 4:54 下午
     */
    @PostMapping(value = "/saveUserInfo")
    @ApiOperation("保存大屏侧信息")
    public ResultInfo saveUserInfo(@RequestBody String data) {
        String s = this.userTvOperationService.saveUserInfo(data);
        return ResultInfo.success(s);
    }

    @Log("保存用户手机号信息")
    @PostMapping(value = "/saveUserWeixinPhone")
    @ApiOperation("保存用户手机号信息")
    public ResultInfo saveUserWeixinPhone(@RequestBody WeiXinUserBean resources) {
        log.info("resources :[{}]",resources);
        MemberProfile s = this.userTvOperationService.saveUserWeixinPhone(resources);
        return ResultInfo.success(s);
    }



}