UsersController.java 8.69 KB
package com.cnlive.shenhe.controller;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.cnlive.shenhe.bean.SessionUser;
import com.cnlive.shenhe.dto.UsersDTO;
import com.cnlive.shenhe.entity.ShyLog;
import com.cnlive.shenhe.entity.ShySites;
import com.cnlive.shenhe.entity.ShyUsers;
import com.cnlive.shenhe.service.ShyLogService;
import com.cnlive.shenhe.service.SitesService;
import com.cnlive.shenhe.service.UsersService;
import com.cnlive.shenhe.utils.CommonConst;
import com.cnlive.shenhe.utils.CommonUtils;
import com.github.pagehelper.PageInfo;
import org.jasig.cas.client.authentication.AttributePrincipal;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Auther: liwei
 * @Date: 2019/08/20 14:22
 * @Description:
 */
@Controller
public class UsersController extends BaseController {

    private static Logger logger = LoggerFactory.getLogger(UsersController.class);

    @Autowired
    private UsersService usersService;
    @Autowired
    private SitesService sitesService;
    @Autowired
    private ShyLogService shyLogService;

    /**
     * 登录入口
     */
    @Value("${SERVICE_LOGIN}")
    private String SERVICE_LOGIN;

    /**
     * 注销
     */
    @Value("${SERVICE_LOGINOUT}")
    private String SERVICE_LOGINOUT;

    /**
     * 本机的名称
     */
    @Value("${spring.localhost.url}")
    private String redirect_url;

    @Value("${CAS_SERVER_LOGIN_URL}")
    private String CAS_SERVER_LOGIN_URL;

    @Value("${CAS_SERVER_URL_PREFIX}")
    private String CAS_SERVER_URL_PREFIX;

    @GetMapping(value = "/users/{id}")
    @ResponseBody
    public Object getTest(@PathVariable Integer id) {
        return usersService.get(id);
    }

    /**
     * 登录
     *
     * @param request
     * @return
     */
    @RequestMapping({"/users/login", "/"})
    public String index(HttpServletRequest request) {
        AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
        if (CommonUtils.isNull(principal)) {
            return "redirect:" + CAS_SERVER_LOGIN_URL + "?service=" + SERVICE_LOGIN;
        }
        //用户ID
        String id = principal.getName();
        if (CommonUtils.isNotEmpty(id)) {
            ShyUsers user = usersService.get(Integer.parseInt(id));
            if (CommonUtils.isNotNull(user) && user.getState()) {
                SessionUser sessionUser = new SessionUser();
                sessionUser.setId(id);
                sessionUser.setUserId(user.getUser_id());
                sessionUser.setSpid(Integer.parseInt(principal.getAttributes().get("new_sp_id").toString()));
                sessionUser.setUserName(user.getUsername());
                sessionUser.setCompany(user.getCompany_brief());
                sessionUser.setEmail(user.getEmail());
                sessionUser.setLogo(user.getUser_logo());
                sessionUser.setMaster(user.getMaster());
                request.getSession().setAttribute(SessionUser.SESSION_KEY, sessionUser);
                ShyLog shyLog = new ShyLog();
                shyLog.setVideoId("-");
                shyLog.setVideoName("-");
                shyLog.setOperator(user.getUsername() + "(" + user.getId() + ")");
                shyLog.setOperationTime(new Date());
                shyLog.setOperationType("登录");
                shyLog.setRemark(user.getUsername() + "--" + "登录");
                shyLogService.addShyLog(shyLog);
                return "redirect:" + redirect_url + "/videos/page?state=0&receive=0&page=1&pageSize=10";
            }
        }

        return "page/error.html";
    }

    /**
     * 注销
     *
     * @param session
     * @return
     */
    @RequestMapping("/users/logout")
    public String logout(HttpSession session) {
        SessionUser sessionUser = (SessionUser) session.getAttribute(SessionUser.SESSION_KEY);
        if (sessionUser != null) {
            ShyLog shyLog = new ShyLog();
            shyLog.setVideoId("-");
            shyLog.setVideoName("-");
            shyLog.setOperator(sessionUser.getUserName() + "(" + sessionUser.getId() + ")");
            shyLog.setOperationTime(new Date());
            shyLog.setOperationType("注销");
            shyLog.setRemark(sessionUser.getUserName() + "--" + "注销");
            shyLogService.addShyLog(shyLog);
        }
        session.invalidate();
        return "redirect:" + CAS_SERVER_URL_PREFIX + "/logout?service=" + SERVICE_LOGIN;
    }

    /**
     * 用户列表
     *
     * @param model
     * @param usersDTO
     * @param session
     * @return
     */
    @GetMapping(value = "/users/page")
    public String page(Model model, UsersDTO usersDTO, HttpSession session) {
        logger.info("列表请求参数:{}", JSON.toJSONString(usersDTO));
        SessionUser sessionUser = (SessionUser) session.getAttribute(SessionUser.getSessionKey());
        if (CommonUtils.isNull(sessionUser)) {
            return "redirect:/users/login";
        }
        Integer spid = sessionUser.getSpid();
        //usersDTO.setSp_id(usersDTO.getSp_id());
        //if (spid == 0) {
        //    usersDTO.setSp_id(null);
        //}

        PageInfo<ShyUsers> usersPage = usersService.getPage(usersDTO);
        List<ShyUsers> list = usersPage.getList();
        JSONObject notice = CommonConst.NOTICE;
        if (!list.isEmpty()) {
            for (ShyUsers users : list) {
                //显示spid简称
                ShySites shySites = sitesService.findspidDescByspid(users.getSp_id());
                if (CommonUtils.isNotNull(shySites)) {
                    users.setSp_desc(shySites.getName());
                }
            }
        }
        model.addAttribute("usersPage", usersPage);
        model.addAttribute("pageSize", usersDTO.getPageSize());
        model.addAttribute("notice", notice);
        model.addAttribute("Sp_id", usersDTO.getSp_id());
        model.addAttribute("Username", usersDTO.getUsername());
        model.addAttribute("Mobile", usersDTO.getMobile());
        return "page/users.html";
    }

    /**
     * 获取通知是否显示
     *
     * @param
     * @param session
     * @return
     */
    @PostMapping(value = "/users/getNoticeShow")
    @ResponseBody
    public Map<String, Object> getNoticeShow(HttpSession session) {
        SessionUser sessionUser = (SessionUser) session.getAttribute(SessionUser.getSessionKey());
        ShyUsers shyUser = new ShyUsers();
        shyUser.setUser_id(sessionUser.getUserId());
        shyUser = usersService.select(shyUser);
        //是否显示频道消息框
        boolean isShowChinnal = false;
        //是否显示直播申请消息框
        boolean isShowLiveApply = false;
        //是否显示话题审核消息框
        boolean isShowTopic = false;
        if (CommonUtils.isNotEmpty(shyUser.getNotice_show()) && shyUser.getNotice_show().contains(CommonConst.NOTICE_CHANNAL.toString())) {
            isShowChinnal = true;
        }
        if (CommonUtils.isNotEmpty(shyUser.getNotice_show()) && shyUser.getNotice_show().contains(CommonConst.NOTICE_LIVEAPPLY.toString())) {
            isShowLiveApply = true;
        }
        if (CommonUtils.isNotEmpty(shyUser.getNotice_show()) && shyUser.getNotice_show().contains(CommonConst.NOTICE_TOPIC.toString())) {
            isShowTopic = true;
        }
        Map<String, Object> map = new HashMap<>(16);
        map.put("isShowChinnal", isShowChinnal);
        map.put("isShowLiveApply", isShowLiveApply);
        map.put("isShowTopic", isShowTopic);
        return map;
    }


    @PostMapping(value = "/users/write")
    public String write(Model model, Integer userId, String[] write_notice, HttpSession session, String redirect_url) {
        SessionUser sessionUser = (SessionUser) session.getAttribute(SessionUser.getSessionKey());
        ShyUsers user = usersService.get(userId);
        StringBuilder write = new StringBuilder();
        if (CommonUtils.isNotNull(write_notice) && write_notice.length > 0) {
            for (String w : write_notice) {
                write.append(",").append(w);
            }
            write = new StringBuilder(write.substring(1));
        }
        user.setNotice_show(write.toString());
        boolean success = usersService.update(user);
        if (success) {
            return "redirect:" + redirect_url;
        } else {
            setmodelResult(model);
            return "error.html";
        }
    }
}