package com.youzan.pfcase.web.account;
import com.youzan.pfcase.service.AccountService;
import com.youzan.pfcase.web.account.AccountForm.NewAccount;
import org.dozer.Mapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.validation.groups.Default;
/**
* Created by sunjun on 16/8/8.
*/
@Controller
@RequestMapping("account")
public class AccountController {
@Autowired
protected Mapper beanMapper;
@Autowired
protected AccountHelper accountHelper;
@Autowired
protected AccountService accountService;
@Autowired
protected PasswordEqualsValidator passwordEqualsValidator;
@InitBinder("accountForm")
public void initBinder(WebDataBinder webDataBinder) {
webDataBinder.addValidators(passwordEqualsValidator);
}
@ModelAttribute
public AccountForm setUpForm() {
return new AccountForm();
}
@RequestMapping("signonForm")
public String signonForm() {
return "account/SignonForm";
}
@RequestMapping("newAccountForm")
public String newAccountForm() {
return "account/NewAccountForm";
}
@RequestMapping("newAccount")
public String newAccount(@Validated({ NewAccount.class, Default.class }) AccountForm form, BindingResult result, ModelMap model) {
if (result.hasErrors()) {
return "account/NewAccountForm";
}
if (accountService.getAccount(form.getUsername()) != null) {
model.addAttribute("duplicatedUsers", "用户名已存在");
return "account/NewAccountForm";
}
accountHelper.newAccount(form);
return "redirect:/account/signonForm";
}
}