package com.mossle.user.web;
import javax.annotation.Resource;
import com.mossle.api.store.StoreConnector;
import com.mossle.api.user.UserCache;
import com.mossle.api.user.UserDTO;
import com.mossle.core.auth.CustomPasswordEncoder;
import com.mossle.core.export.Exportor;
import com.mossle.core.mapper.BeanMapper;
import com.mossle.core.spring.MessageHelper;
import com.mossle.user.persistence.domain.AccountInfo;
import com.mossle.user.persistence.domain.PersonInfo;
import com.mossle.user.persistence.manager.AccountInfoManager;
import com.mossle.user.persistence.manager.PersonInfoManager;
import com.mossle.user.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
@Controller
@RequestMapping("user")
public class PersonInfoController {
private AccountInfoManager accountInfoManager;
private PersonInfoManager personInfoManager;
private UserCache userCache;
private MessageHelper messageHelper;
private Exportor exportor;
private BeanMapper beanMapper = new BeanMapper();
private CustomPasswordEncoder customPasswordEncoder;
private UserService userService;
private StoreConnector storeConnector;
@RequestMapping("person-info-account-input")
public String accountInput(@RequestParam("code") String code) {
PersonInfo personInfo = personInfoManager.findUniqueBy("code", code);
if (personInfo == null) {
personInfo = new PersonInfo();
personInfo.setCode(code);
personInfoManager.save(personInfo);
}
return "redirect:/user/person-info-input.do?id=" + personInfo.getId();
}
@RequestMapping("person-info-input")
public String input(@RequestParam(value = "id", required = false) Long id,
Model model) {
PersonInfo personInfo = null;
if (id != null) {
personInfo = personInfoManager.get(id);
} else {
personInfo = new PersonInfo();
}
model.addAttribute("model", personInfo);
return "user/person-info-input";
}
@RequestMapping("person-info-save")
public String save(@ModelAttribute PersonInfo personInfo,
RedirectAttributes redirectAttributes) throws Exception {
// 再进行数据复制
PersonInfo dest = null;
Long id = personInfo.getId();
if (id != null) {
dest = personInfoManager.get(id);
beanMapper.copy(personInfo, dest);
} else {
dest = personInfo;
}
personInfoManager.save(dest);
messageHelper.addFlashMessage(redirectAttributes, "core.success.save",
"保存成功");
AccountInfo accountInfo = accountInfoManager.findUniqueBy("code",
personInfo.getCode());
if (accountInfo != null) {
UserDTO userDto = new UserDTO();
userDto.setId(Long.toString(accountInfo.getId()));
userDto.setUsername(accountInfo.getUsername());
userDto.setRef(accountInfo.getCode());
userDto.setUserRepoRef("1");
userCache.removeUser(userDto);
}
return "redirect:/user/account-info-list.do";
}
// ~ ======================================================================
@Resource
public void setAccountInfoManager(AccountInfoManager accountInfoManager) {
this.accountInfoManager = accountInfoManager;
}
@Resource
public void setPersonInfoManager(PersonInfoManager personInfoManager) {
this.personInfoManager = personInfoManager;
}
@Resource
public void setUserCache(UserCache userCache) {
this.userCache = userCache;
}
@Resource
public void setMessageHelper(MessageHelper messageHelper) {
this.messageHelper = messageHelper;
}
@Resource
public void setExportor(Exportor exportor) {
this.exportor = exportor;
}
@Resource
public void setStoreConnector(StoreConnector storeConnector) {
this.storeConnector = storeConnector;
}
}