/** * */ package jp.agentec.sinaburocast.action.admin.member; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import org.apache.commons.collections.CollectionUtils; import org.apache.log4j.Logger; import org.apache.struts.Globals; import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; import org.apache.struts.util.TokenProcessor; import org.seasar.framework.util.StringUtil; import org.seasar.struts.annotation.ActionForm; import org.seasar.struts.annotation.Execute; import jp.agentec.sinaburocast.action.AbstractAction; import jp.agentec.sinaburocast.common.SinaburoConstant; import jp.agentec.sinaburocast.common.annotation.OperationHistoryAno; import jp.agentec.sinaburocast.common.util.SinaburoUtil; import jp.agentec.sinaburocast.common.util.SinaburoViewUtil; import jp.agentec.sinaburocast.entity.AdminUser; import jp.agentec.sinaburocast.entity.Member; import jp.agentec.sinaburocast.entity.Postalcode; import jp.agentec.sinaburocast.entity.Prefecture; import jp.agentec.sinaburocast.form.admin.member.MemberEditForm; import jp.agentec.sinaburocast.service.MemberService; import jp.agentec.sinaburocast.service.PostalcodeService; import jp.agentec.sinaburocast.service.PrefectureService; /** * * 会員登録 * @author kim-hs * */ public class MemberRegistAction extends AbstractAction { private final Logger logger = Logger.getLogger(getClass()); @ActionForm public MemberEditForm memberEditForm; public PrefectureService prefectureService; public MemberService memberService; public PostalcodeService postalcodeService; /** * 初期表示 */ @Execute(validator = false) public String index() { //都道府県 List<Prefecture> prefectureList = new ArrayList<Prefecture>(); prefectureList = prefectureService.findAllOrderById(); session.setAttribute("prefectureList", prefectureList); String yy = SinaburoUtil.getTimeStringAs(SinaburoConstant.Formats.TIMESTAMP_FORMAT_YEAR); session.setAttribute("birthYYYY", Integer.parseInt(yy)); // memberEditForm.birthdayY = ""; // memberEditForm.birthdayM = ""; // memberEditForm.birthdayD = ""; // memberEditForm.genderCd=""; memberEditForm.point = "0"; return "/admin/member/memberInput.html"; } /** * 前の画面に遷移 * * @return */ @Execute(validator = false) public String back() { memberEditForm = (MemberEditForm)session.getAttribute("memberRegistInfo"); return "/admin/member/memberInput.html"; } /** * 会員登録確認 * @return */ @Execute(validator = true, input="/admin/member/memberInput.html") public String memberConfirm() { List<Member> memberList = null; Member memberInfo = null; if (memberEditForm.withDrawFlg != null) { memberEditForm.withDrawFlg = "1"; } else { memberEditForm.withDrawFlg = "0"; } // E-mail(メイン)メールアドレス登録チェック if(StringUtil.isBlank(memberEditForm.mainPcEmail)) { ActionMessages messages = (ActionMessages)request.getAttribute(Globals.ERROR_KEY); if (messages == null) { messages = new ActionMessages(); } messages.add("mainPcEmail", new ActionMessage(SinaburoViewUtil.getMessage("errors.E010"))); request.setAttribute(Globals.ERROR_KEY, messages); return "/admin/member/memberInput.html"; } // E-mail(サブ)メールチェック if (StringUtil.isNotBlank(memberEditForm.subPcEmail) && memberEditForm.mainPcEmail.equals(memberEditForm.subPcEmail)) { ActionMessages messages = (ActionMessages)request.getAttribute(Globals.ERROR_KEY); if (messages == null) { messages = new ActionMessages(); } messages.add("Email", new ActionMessage(SinaburoViewUtil.getMessage("errors.E071"))); request.setAttribute(Globals.ERROR_KEY, messages); return "/admin/member/memberInput.html"; } //メールアドレス重複チェックメインメール if (!memberEditForm.mainPcEmail.trim().equals(memberEditForm.mainPcEmailBefore)) { memberList = memberService.findByEmail(memberEditForm.mainPcEmail); if (CollectionUtils.isNotEmpty(memberList)) { ActionMessages messages = (ActionMessages)request.getAttribute(Globals.ERROR_KEY); if (messages == null) { messages = new ActionMessages(); } messages.add("mainPcEmail", new ActionMessage(SinaburoViewUtil.getMessage("errors.E014"))); request.setAttribute(Globals.ERROR_KEY, messages); return "/admin/member/memberInput.html"; } } //メールアドレス重複チェックサブメール if (!memberEditForm.subPcEmail.trim().equals(memberEditForm.subPcEmailBefore)) { if (!StringUtil.isBlank(memberEditForm.subPcEmail)) { memberList = memberService.findByEmail(memberEditForm.subPcEmail); if (CollectionUtils.isNotEmpty(memberList)) { ActionMessages messages = (ActionMessages)request.getAttribute(Globals.ERROR_KEY); if (messages == null) { messages = new ActionMessages(); } messages.add("subPcEmail", new ActionMessage(SinaburoViewUtil.getMessage("errors.E015"))); request.setAttribute(Globals.ERROR_KEY, messages); return "/admin/member/memberInput.html"; } } } //ログインID重複チェック if (!memberEditForm.loginId.trim().equals(memberEditForm.loginIdBefore)) { memberInfo = memberService.findByUserId(memberEditForm.loginId); if (memberInfo != null) { ActionMessages messages = (ActionMessages)request.getAttribute(Globals.ERROR_KEY); if (messages == null) { messages = new ActionMessages(); } messages.add("loginId", new ActionMessage(SinaburoViewUtil.getMessage("errors.E016"))); request.setAttribute(Globals.ERROR_KEY, messages); //memberEditForm.loginId = memberEditForm.loginIdBefore; return "/admin/member/memberInput.html"; } } //パスワードチェック if (!memberEditForm.password.trim().equals(memberEditForm.password2.trim())) { ActionMessages messages = (ActionMessages)request.getAttribute(Globals.ERROR_KEY); if (messages == null) { messages = new ActionMessages(); } messages.add("password", new ActionMessage(SinaburoViewUtil.getMessage("errors.E011"))); request.setAttribute(Globals.ERROR_KEY, messages); return "/admin/member/memberInput.html"; } // if (memberEditForm.prefectureId != "") { Prefecture prefectureInfo = prefectureService.findById(Integer.parseInt(memberEditForm.prefectureId)); if (prefectureInfo != null) { memberEditForm.prefectureName = prefectureInfo.prefecture; } } //誕生日妥当性チェック String birthday = memberEditForm.birthdayY + memberEditForm.birthdayM + memberEditForm.birthdayD; if (birthday.length() > 0 && birthday.length() < 11) { birthday = memberEditForm.birthdayY + SinaburoUtil.LeftPadZero(memberEditForm.birthdayM, 2) + SinaburoUtil.LeftPadZero(memberEditForm.birthdayD, 2); SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); format.setLenient(false); try { format.parse(birthday); } catch (ParseException e) { ActionMessages messages = (ActionMessages)request.getAttribute(Globals.ERROR_KEY); if (messages == null) { messages = new ActionMessages(); } messages.add("birthdayY", new ActionMessage(SinaburoViewUtil.getMessage("errors.invalid",SinaburoViewUtil.getMessage("labels.birthDay")))); request.setAttribute(Globals.ERROR_KEY, messages); return "/admin/member/memberInput.html"; } } // トークン発行 TokenProcessor.getInstance().saveToken(request); session.setAttribute("memberRegistInfo", memberEditForm); return "/admin/member/memberInputConfirm.html"; } /** * 会員登録 * @return */ @Execute(validator = false) @OperationHistoryAno(operationTypeId=SinaburoConstant.OperationType.DELETE,target="会員登録",detail="登録",screenId=SinaburoConstant.screenId.CMM0003) public String memberRegist() { memberEditForm = (MemberEditForm)session.getAttribute("memberRegistInfo"); // トークン確認 if (!TokenProcessor.getInstance().isTokenValid(request, true)) { return "/error/doubleAction.html"; } Member member = new Member(); AdminUser adminUser = getAdmin(); member.loginId = memberEditForm.loginId; //member.memberId = Integer.parseInt(memberEditForm.memberId); member.firstName = memberEditForm.firstName; member.lastName = memberEditForm.lastName; member.firstNameKana = memberEditForm.firstNameKana; member.lastNameKana = memberEditForm.lastNameKana; member.mainPcEmail = memberEditForm.mainPcEmail; member.subPcEmail = memberEditForm.subPcEmail; member.password = memberEditForm.password; member.password = memberEditForm.password2; member.zipCode = memberEditForm.zipCode; if (memberEditForm.prefectureId != "") { member.prefectureId = Integer.parseInt(memberEditForm.prefectureId); } member.cityName = memberEditForm.cityName; member.areaName = memberEditForm.areaName; member.buildingName = memberEditForm.buildingName; // if (memberEditForm.genderCd != "") { if (!StringUtil.isBlank(memberEditForm.genderCd)) { member.genderCd = Integer.parseInt(memberEditForm.genderCd); } member.telno = memberEditForm.telNo; //member.version = member.version; member.birthday = memberEditForm.birthdayY + SinaburoUtil.LeftPadZero(memberEditForm.birthdayM, 2) + SinaburoUtil.LeftPadZero(memberEditForm.birthdayD, 2); member.memo = memberEditForm.memo; member.pointNum = Integer.parseInt(memberEditForm.point); member.authFailNum = 0; if(!StringUtil.isBlank(memberEditForm.zipCode)) { if (memberEditForm.zipCode.substring(0, 3).equals("272")) { member.localCityFlg = 1; } else { member.localCityFlg = 0; } } if (memberEditForm.withDrawFlg.equals("1")) { member.validFlg = 0; member.delFlg = 1; } else { member.validFlg = 1; member.delFlg = 0; } int retValue = memberService.insertMemberAdmin(member, adminUser.loginId); if(retValue < 1){ addError(SinaburoViewUtil.getMessage("errors.S000")); return "/admin/member/memberInput.html"; } return "/admin/member/memberInputRegist.html"; } /** * 住所検索 * * @return */ @Execute(validator = false) public String addrSearch() { String zipCode = memberEditForm.zipCode; List<Postalcode> postalcodeList = new ArrayList<Postalcode>(); if (zipCode.length() < 3) { postalcodeList = null; } else { postalcodeList = postalcodeService.findTestListByName(zipCode); } session.setAttribute("postalcodeList", postalcodeList); return "/user/userEdit/addrSrch.html"; } }