package jp.agentec.sinaburocast.service; import java.io.UnsupportedEncodingException; import java.util.List; import java.util.Properties; import javax.mail.MessagingException; import jp.agentec.sinaburocast.common.SinaburoConstant; import jp.agentec.sinaburocast.common.util.MailUtil; import jp.agentec.sinaburocast.common.util.PropertyUtil; import jp.agentec.sinaburocast.entity.Member; import jp.agentec.sinaburocast.entity.MemberWithdraw; import jp.agentec.sinaburocast.form.user.WithDrawForm; import org.apache.log4j.Logger; import org.seasar.extension.jdbc.where.SimpleWhere; import org.seasar.framework.container.annotation.tiger.Component; import org.seasar.framework.container.annotation.tiger.InstanceType; import org.seasar.framework.util.StringUtil; @Component(instance=InstanceType.SINGLETON) public class MemberWithdrawService extends AbstractService<MemberWithdraw> { public static final String ID_SEQ_NAME = "member_withdraw_id_seq"; private final Logger logger = Logger.getLogger(getClass()); public MemberService memberService; /** * IDを発行して、登録する。 */ public int insertMemberWithdraw(MemberWithdraw memberWithdraw, String insId) { memberWithdraw.memberWithdrawId = getSeqNextVal(Integer.class, ID_SEQ_NAME); return super.insert(memberWithdraw, insId); } public MemberWithdraw findById(Integer memberWithdrawId) { return select().id(memberWithdrawId).getSingleResult(); } public MemberWithdraw findBymemberId(Integer memberId) { return select().where(new SimpleWhere().eq("memberId", memberId)).getSingleResult(); } public List<MemberWithdraw> findAllOrderById() { return select().orderBy("memberWithdrawId asc").getResultList(); } public List<MemberWithdraw> findBymemberIdList(Integer memberId) { return select().where(new SimpleWhere().eq("memberId", memberId)).getResultList(); } /** * 退会処理を行う。 * "退会情報"insert * "会員情報"update * * @return "退会情報"の更新件数。 * @throws MessagingException * @throws UnsupportedEncodingException */ public int insertMemberWithdrawLogic(Member member,WithDrawForm withDrawForm) throws UnsupportedEncodingException, MessagingException { MemberWithdraw memberWithdraw = new MemberWithdraw(); memberWithdraw.memberId=member.memberId; memberWithdraw.reasonType = 0; memberWithdraw.reasonComment= withDrawForm.reasonMsg; int reasonType = 0; if(withDrawForm.withDrowReasonBoxes != null){ for (String arg : withDrawForm.withDrowReasonBoxes) { switch (Integer.parseInt(arg)) { case 0: reasonType += 1; break; case 1: reasonType += 2; break; case 2: reasonType += 4; } } } memberWithdraw.reasonType = (short)reasonType; insertMemberWithdraw(memberWithdraw,member.loginId); //有効フラグ、削除フラグを無効にする。 member.validFlg=Integer.parseInt(SinaburoConstant.MemberValidFlg.INVALID); member.delFlg=Integer.parseInt(SinaburoConstant.MemberDelFlg.DEL); Properties prop = PropertyUtil.getProperties("application_ja",false); try { if(StringUtil.isNotBlank(member.pcEmail)){ MailUtil.send(member.pcEmail, prop.getProperty("withDrow.mail.title"),prop.getProperty("withDrow.mail.body")); } if(StringUtil.isNotBlank(member.mbEmail)){ MailUtil.send(member.mbEmail, prop.getProperty("withDrow.mail.title"),prop.getProperty("withDrow.mail.body")); } } catch (MessagingException e) { logger.error("Mail send failed." + e.toString()); // 退会時なので例外はスローしない } member.pointNum=0; return memberService.update(member,member.loginId); } }