/** * */ package jp.agentec.sinaburocast.action.admin.member; import java.io.UnsupportedEncodingException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import javax.mail.MessagingException; 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 org.seasar.struts.util.RequestUtil; import jp.agentec.sinaburocast.action.AbstractAction; import jp.agentec.sinaburocast.common.SinaburoConstant; import jp.agentec.sinaburocast.common.annotation.OperationHistoryAno; import jp.agentec.sinaburocast.common.exception.SystemException; 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.Prefecture; import jp.agentec.sinaburocast.form.admin.member.MemberEditForm; import jp.agentec.sinaburocast.service.MemberService; import jp.agentec.sinaburocast.service.PrefectureService; /** * @author kim-hs * 会員情報編集 * */ public class MemberEditAction extends AbstractAction { private final Logger logger = Logger.getLogger(getClass()); @ActionForm public MemberEditForm memberEditForm; public MemberService memberService; public PrefectureService prefectureService; /** * 初期表示 * * 検索結果から編集画面 * */ @Execute(validator = false) public String index() { Member memberInfo = memberService.findByIdAdmin(Integer.parseInt(memberEditForm.memberId)); memberEditForm.loginId = memberInfo.loginId; memberEditForm.loginIdBefore = memberInfo.loginId; memberEditForm.firstName = memberInfo.firstName; memberEditForm.lastName = memberInfo.lastName; memberEditForm.firstNameKana = memberInfo.firstNameKana; memberEditForm.lastNameKana = memberInfo.lastNameKana; memberEditForm.mainPcEmail = memberInfo.mainPcEmail; memberEditForm.mainPcEmailBefore = memberInfo.mainPcEmail; memberEditForm.subPcEmail = memberInfo.subPcEmail; memberEditForm.subPcEmailBefore = memberInfo.subPcEmail; memberEditForm.password = memberInfo.password; memberEditForm.password2 = memberInfo.password; memberEditForm.zipCode = memberInfo.zipCode; memberEditForm.prefectureId = String.valueOf(memberInfo.prefectureId); memberEditForm.cityName = memberInfo.cityName; memberEditForm.areaName = memberInfo.areaName; memberEditForm.buildingName = memberInfo.buildingName; // memberEditForm.genderCd = StringUtil.isNumber(memberInfo.genderCd+"")?memberInfo.genderCd.toString():null; memberEditForm.telNo = memberInfo.telno; memberEditForm.point = String.valueOf(memberInfo.pointNum); memberEditForm.memo = memberInfo.memo; memberEditForm.withDrawFlg = String.valueOf(memberInfo.delFlg); memberEditForm.withDrawFlgBefore = String.valueOf(memberInfo.delFlg); if (!StringUtil.isBlank(memberInfo.birthday)) { memberEditForm.birthdayY = memberInfo.birthday.substring(0, 4); memberEditForm.birthdayM = Integer.parseInt(memberInfo.birthday.substring(4, 6))+""; memberEditForm.birthdayD = Integer.parseInt(memberInfo.birthday.substring(6, 8))+""; } //都道府県 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)); // トークン発行 TokenProcessor.getInstance().saveToken(request); return "/admin/member/memberEdit.html"; } /** * 前の画面に遷移 * * @return */ @Execute(validator = false) public String back() { memberEditForm = (MemberEditForm)session.getAttribute("memberEditInfo"); return "/admin/member/memberEdit.html"; } /** * 編集内容確認 * @return */ @Execute(validator = true, input="/admin/member/memberEdit.html") public String confirm() { Member memberInfo = null; List<Member> memberList = 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/memberEdit.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("dupEmail", new ActionMessage(SinaburoViewUtil.getMessage("errors.E071"))); request.setAttribute(Globals.ERROR_KEY, messages); return "/user/userEdit/uEdit.html"; } //携帯メールチェック // if (!StringUtil.isBlank(memberEditForm.subPcEmail)) { // if (!SinaburoUtil.mobileAddressCheck(memberEditForm.subPcEmail)) { // ActionMessages messages = (ActionMessages)request.getAttribute(Globals.ERROR_KEY); // if (messages == null) { // messages = new ActionMessages(); // } // messages.add("subPcEmail", new ActionMessage(SinaburoViewUtil.getMessage("errors.email",SinaburoViewUtil.getMessage("labels.mbMail")))); // request.setAttribute(Globals.ERROR_KEY, messages); // return "/admin/member/memberEdit.html"; // } // } //メールアドレス重複チェックメインメール if (!memberEditForm.mainPcEmail.trim().equals(memberEditForm.mainPcEmailBefore)) { if (!StringUtil.isBlank(memberEditForm.mainPcEmail)) { 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/memberEdit.html"; } } } if (memberEditForm.withDrawFlgBefore.equals(SinaburoConstant.MemberDelFlg.DEL) && memberEditForm.withDrawFlg.equals(SinaburoConstant.MemberDelFlg.NOT_DEL)) { if (!StringUtil.isBlank(memberEditForm.mainPcEmail)) { 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")+SinaburoViewUtil.getMessage("errors.E049"))); request.setAttribute(Globals.ERROR_KEY, messages); return "/admin/member/memberEdit.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/memberEdit.html"; } } } if (memberEditForm.withDrawFlgBefore.equals(SinaburoConstant.MemberDelFlg.DEL) && memberEditForm.withDrawFlg.equals(SinaburoConstant.MemberDelFlg.NOT_DEL)) { if (!StringUtil.isBlank(memberEditForm.subPcEmail)) { memberList = memberService.findByEmail(memberEditForm.subPcEmail.trim()); 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")+SinaburoViewUtil.getMessage("errors.E049"))); request.setAttribute(Globals.ERROR_KEY, messages); return "/admin/member/memberEdit.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/memberEdit.html"; } } if (memberEditForm.withDrawFlgBefore.equals(SinaburoConstant.MemberDelFlg.DEL) && memberEditForm.withDrawFlg.equals(SinaburoConstant.MemberDelFlg.NOT_DEL)) { if (!StringUtil.isBlank(memberEditForm.loginId)) { memberInfo = memberService.findByUserId(memberEditForm.loginId); boolean err = false; 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")+SinaburoViewUtil.getMessage("errors.E049"))); request.setAttribute(Globals.ERROR_KEY, messages); err = true; //return "/admin/member/memberEdit.html"; } if (!StringUtil.isBlank(memberEditForm.mainPcEmail)) { 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")+SinaburoViewUtil.getMessage("errors.E049"))); request.setAttribute(Globals.ERROR_KEY, messages); err = true; //return "/admin/member/memberEdit.html"; } } 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")+SinaburoViewUtil.getMessage("errors.E049"))); request.setAttribute(Globals.ERROR_KEY, messages); err = true; //return "/admin/member/memberEdit.html"; } } if (err) return "/admin/member/memberEdit.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/memberEdit.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/memberEdit.html"; } } // トークン発行 TokenProcessor.getInstance().saveToken(request); session.setAttribute("memberEditInfo", memberEditForm); return "/admin/member/memberConfirm.html"; } /** * 会員登録情報更新 * * @return * @throws SystemException * @throws MessagingException * @throws UnsupportedEncodingException */ @Execute(validator = false) @OperationHistoryAno(operationTypeId=SinaburoConstant.OperationType.DELETE,target="会員編集",detail="更新",screenId=SinaburoConstant.screenId.CMM0011) public String editRegist() throws SystemException, UnsupportedEncodingException, MessagingException { memberEditForm = (MemberEditForm)session.getAttribute("memberEditInfo"); // トークン確認 if (!TokenProcessor.getInstance().isTokenValid(RequestUtil.getRequest(), true)) { return "/error/doubleAction.html"; } //Member member = null; AdminUser adminUser = getAdmin(); Member member = memberService.findByIdAdmin(Integer.parseInt(memberEditForm.memberId)); member.loginId = memberEditForm.loginId; //member.memberId = member.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); 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; } memberService.updateMember(member, adminUser.loginId); return "/admin/member/memberRegist.html"; } /** * メンバー削除 * * @return * @throws MessagingException * @throws UnsupportedEncodingException */ @Execute(validator = false) @OperationHistoryAno(operationTypeId=SinaburoConstant.OperationType.DELETE,target="会員削除",detail="削除",screenId=SinaburoConstant.screenId.CMM0009) public String deleteMember() { // トークン確認 if (!TokenProcessor.getInstance().isTokenValid(RequestUtil.getRequest(), true)) { return "/error/doubleAction.html"; } AdminUser adminUser = getAdmin(); memberService.deleteMember(memberEditForm.memberId, adminUser.loginId); return "/admin/member/memberDelete.html"; } }