package com.pj.usersync;

import com.pj.utils.SaResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

/**
 * 接收从 ssp-server 发出来的广播信息
 *
 * @author click33
 * @since 2022/11/22
 */
@RestController
@RequestMapping("/ssp/brd/")
public class SspClientListenController {

    /*
     * 注意点：
     *  如果是异步广播，对接口返回数据格式无要求
     *  如果是同步广播，则所有接口的返回值都必须是 JSON 类型，且包含以下字段：
     * {
     *      code: 200,
     *      msg: "ok"
     * }
     * 否则认证中心将视为接受失败
     * 如果需要主动返回失败信息，请返回如下格式：
     * {
     *      code: 500,
     *      msg: "xxx"  // 失败原因
     * }
     */

    // 收到通知：增加用户
    @RequestMapping("user/add")
    SaResult userAdd(HttpServletRequest request) {
        System.out.println("-------- 收到广播: user/add");
        System.out.println(SspClientListenUtil.getData(request));

        // 回复认证中心，已处理ok
        return SaResult.ok();
    }

    // 收到通知：删除用户
    @RequestMapping("user/delete")
    SaResult userDelete(HttpServletRequest request) {
        System.out.println("-------- 收到广播: user/delete");
        System.out.println(SspClientListenUtil.getData(request));

        // 回复认证中心，已处理ok
        return SaResult.ok();
    }

    // 收到通知：修改用户
    @RequestMapping("user/update")
    SaResult userUpdate(HttpServletRequest request) {
        System.out.println("-------- 收到广播: user/update");
        System.out.println(SspClientListenUtil.getData(request));

        // 回复认证中心，已处理ok
        return SaResult.ok();
    }

    // 收到通知：修改用户密码
    @RequestMapping("user/updatePassword")
    SaResult userUpdatePassword(HttpServletRequest request) {
        System.out.println("-------- 收到广播: user/updatePassword");
        System.out.println(SspClientListenUtil.getData(request));

        // 回复认证中心，已处理ok
        return SaResult.ok();
    }

}