com.roncoo.pay.permission.controller.PmsOperatorController.java Source code

Java tutorial

Introduction

Here is the source code for com.roncoo.pay.permission.controller.PmsOperatorController.java

Source

/*
 * Copyright 2015-2102 RonCoo(http://www.roncoo.com) Group.
 *  
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *  
 *      http://www.apache.org/licenses/LICENSE-2.0
 *  
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
    
 */
package com.roncoo.pay.permission.controller;

import java.util.Date;
import java.util.List;
import java.util.regex.Pattern;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.roncoo.pay.common.core.dwz.DwzAjax;
import com.roncoo.pay.common.core.enums.PublicStatusEnum;
import com.roncoo.pay.common.core.page.PageBean;
import com.roncoo.pay.common.core.page.PageParam;
import com.roncoo.pay.controller.common.BaseController;
import com.roncoo.pay.permission.entity.PmsOperator;
import com.roncoo.pay.permission.entity.PmsOperatorRole;
import com.roncoo.pay.permission.enums.OperatorTypeEnum;
import com.roncoo.pay.permission.service.PmsOperatorRoleService;
import com.roncoo.pay.permission.service.PmsOperatorService;
import com.roncoo.pay.permission.service.PmsRoleService;
import com.roncoo.pay.permission.utils.PasswordHelper;
import com.roncoo.pay.permission.utils.ValidateUtils;

/**
 * ??????
 *
 * www.roncoo.com
 * 
 * @authorshenjialong
 */
@Controller
@RequestMapping("/pms/operator")
public class PmsOperatorController extends BaseController {

    private static Log log = LogFactory.getLog(PmsOperatorController.class);

    @Autowired
    private PmsOperatorService pmsOperatorService;
    @Autowired
    private PmsRoleService pmsRoleService;
    @Autowired
    private PmsOperatorRoleService pmsOperatorRoleService;

    /**
     * ???????.
     * 
     * @return listPmsOperator or operateError .
     * 
     */
    @RequiresPermissions("pms:operator:view")
    @RequestMapping("/list")
    public String listPmsOperator(HttpServletRequest req, PageParam pageParam, PmsOperator operator, Model model) {
        try {

            PageBean pageBean = pmsOperatorService.listPage(pageParam, operator);
            model.addAttribute(pageBean);
            model.addAttribute("OperatorStatusEnum", PublicStatusEnum.toMap());
            model.addAttribute("OperatorTypeEnum", OperatorTypeEnum.toMap());
            return "pms/pmsOperatorList";
        } catch (Exception e) {
            log.error("== listPmsOperator exception:", e);
            return operateError("??", model);
        }
    }

    /**
     * ?.
     * 
     * @return .
     */
    @RequiresPermissions("pms:operator:view")
    @RequestMapping("/viewUI")
    public String viewPmsOperatorUI(HttpServletRequest req, Long id, Model model) {
        try {
            PmsOperator pmsOperator = pmsOperatorService.getDataById(id);
            if (pmsOperator == null) {
                return operateError("???", model);
            }

            // ????
            if (OperatorTypeEnum.USER.name().equals(this.getPmsOperator().getType())
                    && OperatorTypeEnum.ADMIN.name().equals(pmsOperator.getType())) {
                return operateError("???", model);
            }

            // 
            model.addAttribute("rolesList", pmsRoleService.listAllRole());

            // ID
            List<PmsOperatorRole> lisPmsOperatorRoles = pmsOperatorRoleService.listOperatorRoleByOperatorId(id);
            StringBuffer owenedRoleIdBuffer = new StringBuffer("");
            for (PmsOperatorRole pmsOperatorRole : lisPmsOperatorRoles) {
                owenedRoleIdBuffer.append(pmsOperatorRole.getRoleId());
                owenedRoleIdBuffer.append(",");
            }
            String owenedRoleIds = owenedRoleIdBuffer.toString();
            if (StringUtils.isNotBlank(owenedRoleIds) && owenedRoleIds.length() > 0) {
                owenedRoleIds = owenedRoleIds.substring(0, owenedRoleIds.length() - 1);
            }
            model.addAttribute("pmsOperator", pmsOperator);
            model.addAttribute("owenedRoleIds", owenedRoleIds);
            return "/pms/pmsOperatorView";
        } catch (Exception e) {
            log.error("== viewPmsOperatorUI exception:", e);
            return operateError("??", model);
        }
    }

    /**
     * ?? .
     * 
     * @return addPmsOperatorUI or operateError .
     */
    @RequiresPermissions("pms:operator:add")
    @RequestMapping("/addUI")
    public String addPmsOperatorUI(HttpServletRequest req, Model model) {
        try {
            model.addAttribute("rolesList", pmsRoleService.listAllRole());
            model.addAttribute("OperatorStatusEnumList", PublicStatusEnum.toList());
            return "/pms/pmsOperatorAdd";
        } catch (Exception e) {
            log.error("== addPmsOperatorUI exception:", e);
            return operateError("??", model);
        }
    }

    /**
     * ??
     * 
     */
    @RequiresPermissions("pms:operator:add")
    @RequestMapping("/add")
    public String addPmsOperator(HttpServletRequest req, PmsOperator pmsOperator,
            @RequestParam("selectVal") String selectVal, Model model, DwzAjax dwz) {
        try {
            pmsOperator.setType(OperatorTypeEnum.USER.name()); // 
            // "0":'?',"1":'?'??
            String roleOperatorStr = getRoleOperatorStr(selectVal);

            // ??
            String validateMsg = validatePmsOperator(pmsOperator, roleOperatorStr);

            if (StringUtils.isNotBlank(validateMsg)) {
                return operateError(validateMsg, model); // ?
            }

            // ????
            PmsOperator loginNameCheck = pmsOperatorService.findOperatorByLoginName(pmsOperator.getLoginName());
            if (loginNameCheck != null) {
                return operateError("???" + pmsOperator.getLoginName() + "", model);
            }

            PasswordHelper.encryptPassword(pmsOperator);
            pmsOperator.setCreater(getPmsOperator().getLoginName());
            pmsOperator.setCreateTime(new Date());
            pmsOperatorService.saveOperator(pmsOperator, roleOperatorStr);

            return operateSuccess(model, dwz);
        } catch (Exception e) {
            log.error("== addPmsOperator exception:", e);
            return operateError("???", model);
        }
    }

    /**
     * ????
     * 
     * @param email
     * @return ??
     */
    public static boolean emailFormat(String email) {
        // boolean tag = true;
        String check = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
        boolean result = Pattern.matches(check, email);
        return result;
    }

    /**
     * ?????
     * 
     * @param loginPwd
     * @return ??
     */
    public static boolean loginPwdFormat(String loginPwd) {
        return loginPwd.matches(".*?[^a-zA-Z\\d]+.*?") && loginPwd.matches(".*?[a-zA-Z]+.*?")
                && loginPwd.matches(".*?[\\d]+.*?");
    }

    /**
     * ???????
     * 
     * @param loginPwd
     * @return ??
     */
    public static boolean realNameFormat(String realName) {
        return realName.matches("[^\\x00-\\xff]+");
    }

    /**
     * Pms???.
     * 
     * @param PmsOperator
     *            ??.
     * @param roleOperatorStr
     *            ?ID.
     * @return
     */
    private String validatePmsOperator(PmsOperator operator, String roleOperatorStr) {
        String msg = ""; // ?????
        msg += ValidateUtils.lengthValidate("??", operator.getRealName(), true, 2, 15);
        msg += ValidateUtils.lengthValidate("??", operator.getLoginName(), true, 3, 50);

        /*
         * String specialChar = "`!@#$%^&*()_+\\/"; if
         * (operator.getLoginName().contains(specialChar)) { msg +=
         * "????"; }
         */
        //      if (!realNameFormat(operator.getRealName())) {
        //         msg += "????";
        //      }

        // if (!emailFormat(operator.getLoginName())) {
        // msg += "?????";
        // }

        // ?
        //      String loginPwd = operator.getLoginPwd();
        //      String loginPwdMsg = ValidateUtils.lengthValidate("?", loginPwd, true, 6, 50);
        //      /*
        //       * if (StringUtils.isBlank(loginPwdMsg) &&
        //       * !ValidateUtils.isAlphanumeric(loginPwd)) { loginPwdMsg +=
        //       * "???"; }
        //       */
        //      msg += loginPwdMsg;

        // ??
        String mobileNo = operator.getMobileNo();
        String mobileNoMsg = ValidateUtils.lengthValidate("?", mobileNo, true, 0, 12);
        if (StringUtils.isBlank(mobileNoMsg) && !ValidateUtils.isMobile(mobileNo)) {
            mobileNoMsg += "???";
        }
        msg += mobileNoMsg;

        // ?
        String status = operator.getStatus();
        if (status == null) {
            msg += "?";
        } else if (!PublicStatusEnum.ACTIVE.name().equals(status)
                || PublicStatusEnum.UNACTIVE.name().equals(status)) {
            msg += "??";
        }

        msg += ValidateUtils.lengthValidate("??", operator.getRemark(), true, 3, 100);

        // ?????
        if (StringUtils.isBlank(roleOperatorStr) && operator.getId() == null) {
            msg += "???";
        }
        return msg;
    }

    /**
     * ?
     * 
     * @return
     * */
    @RequestMapping("/delete")
    public String deleteOperatorStatus(HttpServletRequest req, Long id, Model model, DwzAjax dwz) {
        pmsOperatorService.deleteOperatorById(id);
        return this.operateSuccess(model, dwz);
    }

    /**
     * ??
     * 
     * @return PmsOperatorEdit or operateError .
     */
    @RequiresPermissions("pms:operator:edit")
    @RequestMapping("/editUI")
    public String editPmsOperatorUI(HttpServletRequest req, Long id, Model model) {
        try {
            PmsOperator pmsOperator = pmsOperatorService.getDataById(id);
            if (pmsOperator == null) {
                return operateError("???", model);
            }

            // ????
            if (OperatorTypeEnum.USER.name().equals(this.getPmsOperator().getType())
                    && OperatorTypeEnum.ADMIN.name().equals(pmsOperator.getType())) {
                return operateError("???", model);
            }
            // 
            model.addAttribute("rolesList", pmsRoleService.listAllRole());

            // ID
            List<PmsOperatorRole> lisPmsOperatorRoles = pmsOperatorRoleService.listOperatorRoleByOperatorId(id);
            StringBuffer owenedRoleIdBuffer = new StringBuffer("");
            for (PmsOperatorRole pmsOperatorRole : lisPmsOperatorRoles) {
                owenedRoleIdBuffer.append(pmsOperatorRole.getRoleId());
                owenedRoleIdBuffer.append(",");
            }
            String owenedRoleIds = owenedRoleIdBuffer.toString();
            if (StringUtils.isNotBlank(owenedRoleIds) && owenedRoleIds.length() > 0) {
                owenedRoleIds = owenedRoleIds.substring(0, owenedRoleIds.length() - 1);
            }
            model.addAttribute("owenedRoleIds", owenedRoleIds);

            model.addAttribute("OperatorStatusEnum", PublicStatusEnum.toMap());
            model.addAttribute("OperatorTypeEnum", OperatorTypeEnum.toMap());
            model.addAttribute("pmsOperator", pmsOperator);
            return "pms/pmsOperatorEdit";
        } catch (Exception e) {
            log.error("== editPmsOperatorUI exception:", e);
            return operateError("??", model);
        }
    }

    /**
     * ????
     * 
     * @return operateSuccess or operateError .
     */
    @RequiresPermissions("pms:operator:edit")
    @RequestMapping("/edit")
    public String editPmsOperator(HttpServletRequest req, PmsOperator operator, String selectVal, Model model,
            DwzAjax dwz) {
        try {
            Long id = operator.getId();

            PmsOperator pmsOperator = pmsOperatorService.getDataById(id);
            if (pmsOperator == null) {
                return operateError("????", model);
            }

            // ????
            if ("USER".equals(this.getPmsOperator().getType()) && "ADMIN".equals(pmsOperator.getType())) {
                return operateError("???", model);
            }

            pmsOperator.setRemark(operator.getRemark());
            pmsOperator.setMobileNo(operator.getMobileNo());
            pmsOperator.setRealName(operator.getRealName());
            // ??
            // pmsOperator.setStatus(getInteger("status"));

            String roleOperatorStr = getRoleOperatorStr(selectVal);

            // ??
            String validateMsg = validatePmsOperator(pmsOperator, roleOperatorStr);
            if (StringUtils.isNotBlank(validateMsg)) {
                return operateError(validateMsg, model); // ?
            }

            pmsOperatorService.updateOperator(pmsOperator, roleOperatorStr);
            return operateSuccess(model, dwz);
        } catch (Exception e) {
            log.error("== editPmsOperator exception:", e);
            return operateError("??", model);
        }
    }

    /**
     * ?ID?.
     * 
     * @return operateSuccess or operateError .
     */
    @RequiresPermissions("pms:operator:changestatus")
    @RequestMapping("/changeStatus")
    public String changeOperatorStatus(HttpServletRequest req, PmsOperator operator, Model model, DwzAjax dwz) {
        try {
            Long operatorId = operator.getId();
            PmsOperator pmsOperator = pmsOperatorService.getDataById(operatorId);
            if (pmsOperator == null) {
                return operateError("????", model);
            }

            if (this.getPmsOperator().getId() == operatorId) {
                return operateError("??", model);
            }

            // ????
            if ("USER".equals(this.getPmsOperator().getType()) && "ADMIN".equals(pmsOperator.getType())) {
                return operateError("???", model);
            }

            // 2014-01-02,?
            // pmsPermissionBiz.deleteOperator(id);
            // ??
            if (pmsOperator.getStatus().equals(PublicStatusEnum.ACTIVE.name())) {
                if ("ADMIN".equals(pmsOperator.getType())) {
                    return operateError("?" + pmsOperator.getLoginName() + "??",
                            model);
                }
                pmsOperator.setStatus(PublicStatusEnum.UNACTIVE.name());
                pmsOperatorService.updateData(pmsOperator);
            } else {
                pmsOperator.setStatus(PublicStatusEnum.ACTIVE.name());
                pmsOperatorService.updateData(pmsOperator);
            }
            return operateSuccess(model, dwz);
        } catch (Exception e) {
            log.error("== changeOperatorStatus exception:", e);
            return operateError("?:" + e.getMessage(), model);
        }
    }

    /***
     * ???????? .
     * 
     * @return
     */
    @RequiresPermissions("pms:operator:resetpwd")
    @RequestMapping("/resetPwdUI")
    public String resetOperatorPwdUI(HttpServletRequest req, Long id, Model model) {
        PmsOperator operator = pmsOperatorService.getDataById(id);
        if (operator == null) {
            return operateError("????", model);
        }

        // ????
        if ("USER".equals(this.getPmsOperator().getType()) && "ADMIN".equals(operator.getType())) {
            return operateError("???", model);
        }

        model.addAttribute("operator", operator);

        return "pms/pmsOperatorResetPwd";
    }

    /**
     * ???.
     * 
     * @return
     */
    @RequiresPermissions("pms:operator:resetpwd")
    @RequestMapping("/resetPwd")
    public String resetOperatorPwd(HttpServletRequest req, Long id, String newPwd, String newPwd2, Model model,
            DwzAjax dwz) {
        try {
            PmsOperator operator = pmsOperatorService.getDataById(id);
            if (operator == null) {
                return operateError("??????", model);
            }

            // ????
            if ("USER".equals(this.getPmsOperator().getType()) && "ADMIN".equals(operator.getType())) {
                return operateError("???", model);
            }

            String validateMsg = validatePassword(newPwd, newPwd2);
            if (StringUtils.isNotBlank(validateMsg)) {
                return operateError(validateMsg, model); // ?
            }
            operator.setLoginPwd(newPwd);
            PasswordHelper.encryptPassword(operator);
            pmsOperatorService.updateData(operator);
            return operateSuccess(model, dwz);
        } catch (Exception e) {
            log.error("== resetOperatorPwd exception:", e);
            return operateError("??:" + e.getMessage(), model);
        }
    }

    /**
     * ??ID
     * 
     * @return
     */
    private String getRoleOperatorStr(String selectVal) throws Exception {
        String roleStr = selectVal;
        if (StringUtils.isNotBlank(roleStr) && roleStr.length() > 0) {
            roleStr = roleStr.substring(0, roleStr.length() - 1);
        }
        return roleStr;
    }

    /***
     * ???
     * 
     * @param newPwd
     * @param newPwd2
     * @return
     */
    private String validatePassword(String newPwd, String newPwd2) {
        String msg = ""; // ?????
        if (StringUtils.isBlank(newPwd)) {
            msg += "??";
        } else if (newPwd.length() < 6) {
            msg += "??6?";
        }

        if (!newPwd.equals(newPwd2)) {
            msg += "??";
        }
        return msg;
    }
}