Skip to content

Commit 48d63b2

Browse files
committed
会員登録とお問い合わせ機能が完了
1 parent 44c5d22 commit 48d63b2

34 files changed

+664
-690
lines changed

business/src/main/java/com/isystk/sample/common/FrontUrl.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,12 @@ public class FrontUrl {
99
* ---- URLs ----
1010
**/
1111
public static final String TOP = "/";
12-
1312
public static final String REGISTER = "/register";
1413

14+
public static final String REGISTER_REMIND = "/register/remind";
15+
16+
public static final String REGISTER_REMIND_CONFIG = "/register/remind/config";
17+
1518
/**
1619
* ---- APIs ----
1720
**/
@@ -22,12 +25,6 @@ public class FrontUrl {
2225

2326
public static final String API_V1_MYCARTS = "/api/v1/mycarts";
2427

25-
public static final String API_V1_ENTRY_REGIST = "/api/v1/entry/regist";
26-
27-
public static final String API_V1_ENTRY_REMIND = "/api/v1/entry/remind";
28-
29-
public static final String API_V1_ENTRY_REMIND_CONFIG = "/api/v1/entry/remind/config";
30-
3128
public static final String API_V1_CONSTS = "/api/v1/consts";
3229

3330
public static final String API_V1_LIKES = "/api/v1/likes";

business/src/main/java/com/isystk/sample/domain/repository/CartRepository.java

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,42 +6,35 @@
66
import com.isystk.sample.common.dto.StripePaymentDto;
77
import com.isystk.sample.common.dto.mail.MailStockPaymentComplete;
88
import com.isystk.sample.common.exception.ErrorMessagesException;
9-
import com.isystk.sample.common.exception.NoDataFoundException;
109
import com.isystk.sample.common.exception.SystemException;
11-
import com.isystk.sample.common.exception.ValidationErrorException;
1210
import com.isystk.sample.common.helper.SendMailHelper;
1311
import com.isystk.sample.common.service.BaseRepository;
1412
import com.isystk.sample.common.util.DateUtils;
1513
import com.isystk.sample.common.util.ObjectMapperUtils;
1614
import com.isystk.sample.common.values.MailTemplateDiv;
1715
import com.isystk.sample.domain.dao.CartDao;
18-
import com.isystk.sample.domain.dao.MailTemplateDao;
1916
import com.isystk.sample.domain.dao.OrderHistoryDao;
2017
import com.isystk.sample.domain.dao.StockDao;
2118
import com.isystk.sample.domain.dto.CartCriteria;
2219
import com.isystk.sample.domain.dto.CartRepositoryDto;
2320
import com.isystk.sample.domain.dto.StockCriteria;
2421
import com.isystk.sample.domain.entity.Cart;
25-
import com.isystk.sample.domain.entity.MailTemplate;
2622
import com.isystk.sample.domain.entity.OrderHistory;
2723
import com.isystk.sample.domain.entity.Stock;
2824
import com.isystk.sample.domain.entity.User;
2925
import com.stripe.Stripe;
3026
import com.stripe.exception.StripeException;
31-
import com.stripe.model.Charge;
3227
import com.stripe.model.PaymentIntent;
3328
import java.math.BigInteger;
3429
import java.util.List;
3530
import java.util.Map;
3631
import java.util.stream.Collectors;
3732
import lombok.val;
38-
import org.apache.commons.compress.utils.Lists;
3933
import org.apache.commons.logging.Log;
4034
import org.apache.commons.logging.LogFactory;
4135
import org.springframework.beans.factory.annotation.Autowired;
4236
import org.springframework.beans.factory.annotation.Value;
4337
import org.springframework.stereotype.Repository;
44-
import org.springframework.validation.Errors;
4538

4639
/**
4740
* マイカートリポジトリ
@@ -67,7 +60,7 @@ public class CartRepository extends BaseRepository {
6760
OrderHistoryDao orderHistoryDao;
6861

6962
@Autowired
70-
MailTemplateDao mailTemplateDao;
63+
MailTemplateRepository mailTemplateRepository;
7164

7265
@Autowired
7366
SendMailHelper sendMailHelper;
@@ -247,7 +240,7 @@ public boolean checkout(User user) {
247240

248241
// ユーザ宛に購入完了メール送信
249242
int amount = cartList.stream().mapToInt(e->e.getStock().getPrice()).sum();
250-
val mailTemplate = getMailTemplate(Long.valueOf(MailTemplateDiv.STOCK_PAYMENT_COMPLETE.getCode()));
243+
val mailTemplate = mailTemplateRepository.getMailTemplate(MailTemplateDiv.STOCK_PAYMENT_COMPLETE);
251244
val subject = mailTemplate.getTitle();
252245
val templateBody = mailTemplate.getText();
253246
var dto = new MailStockPaymentComplete();
@@ -261,15 +254,4 @@ public boolean checkout(User user) {
261254
return true;
262255
}
263256

264-
/**
265-
* メールテンプレートを取得する。
266-
*
267-
* @return
268-
*/
269-
protected MailTemplate getMailTemplate(Long templateId) {
270-
val mailTemplate = mailTemplateDao.selectById(templateId).orElseThrow(
271-
() -> new NoDataFoundException("templateKey=" + templateId + " のデータが見つかりません。"));
272-
return mailTemplate;
273-
}
274-
275257
}

business/src/main/java/com/isystk/sample/domain/repository/ContactFormRepository.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ public ContactForm create(final ContactFormRepositoryDto contactFormDto) {
151151
contactFormDto.getImageList().stream()
152152
.forEach((e) -> {
153153
val contactFormImage = new ContactFormImage();
154+
contactFormImage.setContactFormId(contactForm.getId());
154155
contactFormImage.setFileName(e.getContactImageName());
155156
contactFormImage.setCreatedAt(time); // 作成日
156157
contactFormImage.setUpdatedAt(time); // 更新日
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.isystk.sample.domain.repository;
2+
3+
import com.isystk.sample.common.exception.NoDataFoundException;
4+
import com.isystk.sample.common.service.BaseRepository;
5+
import com.isystk.sample.common.values.MailTemplateDiv;
6+
import com.isystk.sample.domain.dao.MailTemplateDao;
7+
import com.isystk.sample.domain.entity.MailTemplate;
8+
import lombok.val;
9+
import org.springframework.beans.factory.annotation.Autowired;
10+
import org.springframework.stereotype.Repository;
11+
12+
/**
13+
* メールテンプレートリポジトリ
14+
*/
15+
@Repository
16+
public class MailTemplateRepository extends BaseRepository {
17+
18+
@Autowired
19+
MailTemplateDao mailTemplateDao;
20+
21+
/**
22+
* メールテンプレートを取得する。
23+
*
24+
* @return
25+
*/
26+
public MailTemplate getMailTemplate(MailTemplateDiv mailTemplateDiv) {
27+
val mailTemplate = mailTemplateDao.selectById(Long.valueOf(mailTemplateDiv.getCode())).orElseThrow(
28+
() -> new NoDataFoundException("templateKey=" + mailTemplateDiv.getCode() + " のデータが見つかりません。"));
29+
return mailTemplate;
30+
}
31+
32+
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
DELETE FROM mail_template;
33
INSERT INTO mail_template (mail_template_id, mail_template_div, title, text, created_at, updated_at) VALUES
4-
(1, 1, '会員仮登録完了のお知らせ', '[[${dto.userName}]] 様\r\n\r\nご登録いただき、ありがとうございます。\r\n現在、仮登録の状態ですので、下記URLをクリックして登録を完了させてください。\r\n\r\nhttps://[[${dto.domain}]]/entry/regist/[[${dto.onetimeKey}]]/\r\n\r\n', now(), now()),
4+
(1, 1, '会員仮登録完了のお知らせ', '[[${dto.userName}]] 様\r\n\r\nご登録いただき、ありがとうございます。\r\n現在、仮登録の状態ですので、下記URLをクリックして登録を完了させてください。\r\n\r\nhttps://[[${dto.domain}]]/register/valified/[[${dto.onetimeKey}]]/\r\n\r\n', now(), now()),
55
(2, 1, '会員本登録完了のお知らせ', '[[${dto.userName}]] 様\r\n\r\nこの度はご登録いただき、ありがとうございます。\r\n[[${dto.userName}]]様の会員登録手続きが完了しました。\r\n\r\n------------------------------------------------------------------------\r\n会員専用ページへは、下記URLより、\r\nご登録いただいたメールアドレスとパスワードを入力してログインしてください。\r\n\r\nhttps://[[${dto.domain}]]/login/\r\n------------------------------------------------------------------------\r\n\r\n今後ともよろしくお願い致します。\r\n', now(), now()),
6-
(3, 1, '新パスワード設定画面のお知らせ', '[[${dto.userName}]] 様\r\n\r\n新パスワード設定画面のURLをお知らせします。\r\n下記URLをクリックして、新しいパスワードを設定してください。\r\n\r\nhttps://[[${dto.domain}]]/entry/remind/config/[[${dto.onetimeKey}]]/\r\n\r\n', now(), now()),
7-
(4, 2, '商品の購入が完了しました。', '[[${dto.userName}]] 様\r\n\r\nこの度は、商品をご購入頂き、誠にありがとうございました。\r\n合計金額:${dto.amount}円\r\n\r\n', now(), now());
6+
(3, 1, '新パスワード設定画面のお知らせ', '[[${dto.userName}]] 様\r\n\r\n新パスワード設定画面のURLをお知らせします。\r\n下記URLをクリックして、新しいパスワードを設定してください。\r\n\r\nhttps://[[${dto.domain}]]/register/remind/config/[[${dto.onetimeKey}]]/\r\n\r\n', now(), now()),
7+
(4, 2, '商品の購入が完了しました。', '[[${dto.userName}]] 様\r\n\r\nこの度は、商品をご購入頂き、誠にありがとうございました。\r\n合計金額:[[${dto.amount}]] \r\n\r\n', now(), now());

web-front/resources/src/components/elements/ImageFile.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,9 @@ export const ImageFileInput: FC<Props> = ({ label, name, ...rest }) => {
5959
console.log(values)
6060
return (
6161
<CardImg
62-
src={values[name] || '../static/images/no-image.gif'}
62+
src={
63+
values[name + 'Data'] || '../static/images/no-image.gif'
64+
}
6365
alt="Contemplative Reptile"
6466
/>
6567
)

web-front/resources/src/constants/url.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ export const Url = {
1212
LOGOUT: '/auth/logout',
1313
/** 会員登録 */
1414
REGISTER: '/register',
15+
/** 仮会員登録 */
16+
REGISTER_SENDMAIL: '/register/sendMail',
17+
/** 会員登録完了 */
18+
REGISTER_COMPLETE: '/register/complete',
1519
/** パスワード忘れ */
1620
PASSWORD_RESET: '/password/reset',
1721
/** メールアドレス認証 */

web-front/resources/src/pages/contact/index.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ const ContactCreate: FC<Props> = ({ appRoot }) => {
3131
}
3232

3333
const initialValues = {
34-
your_name: auth.name || '',
34+
yourName: auth.name || '',
3535
email: auth.email || '',
3636
gender: '',
3737
age: '',
@@ -44,7 +44,7 @@ const ContactCreate: FC<Props> = ({ appRoot }) => {
4444
}
4545

4646
const validation = Yup.object().shape({
47-
your_name: Yup.string()
47+
yourName: Yup.string()
4848
.max(20, 'お名前は20文字以下を入れてください')
4949
.required('お名前を入力してください'),
5050
email: Yup.string()
@@ -85,22 +85,22 @@ const ContactCreate: FC<Props> = ({ appRoot }) => {
8585
<CSRFToken appRoot={appRoot} />
8686
<FormGroup>
8787
<div style={{ width: '100%' }}>
88-
<Label for="your_name" className="item-name">
88+
<Label for="yourName" className="item-name">
8989
お名前を入力してください
9090
<span className="required">必須</span>
9191
</Label>
9292
<div className="text-wrap large">
9393
<Input
9494
type="text"
95-
id="your_name"
96-
name="your_name"
97-
value={values.your_name}
95+
id="yourName"
96+
name="yourName"
97+
value={values.yourName}
9898
onChange={handleChange}
9999
onBlur={handleBlur}
100-
invalid={Boolean(touched.your_name && errors.your_name)}
100+
invalid={Boolean(touched.yourName && errors.yourName)}
101101
/>
102102
<div className="form-bottom"></div>
103-
<p className="error">{errors.your_name}</p>
103+
<p className="error">{errors.yourName}</p>
104104
</div>
105105
</div>
106106
</FormGroup>
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import * as React from 'react'
2+
import { Url } from '@/constants/url'
3+
import Layout from '@/components/Layout'
4+
import { FC } from 'react'
5+
import MainService from '@/services/main'
6+
import { Link } from 'react-router-dom'
7+
8+
type Props = {
9+
appRoot: MainService
10+
}
11+
12+
const ContactComplete: FC<Props> = ({ appRoot }) => {
13+
return (
14+
<Layout appRoot={appRoot} title="会員登録">
15+
<main className="main">
16+
<div className="contentsArea">
17+
<h2
18+
className="heading02"
19+
style={{
20+
color: '#555555',
21+
fontSize: '1.2em',
22+
padding: '24px 0px',
23+
}}
24+
>
25+
会員登録手続きが完了しました。
26+
</h2>
27+
28+
<div className="ta-center">
29+
<p>
30+
会員専用ページへは、ログイン画面より、ご登録いただいたメールアドレスとパスワードを入力してログインしてください。
31+
</p>
32+
<Link to={Url.LOGIN} className="btn text-danger mt40">
33+
ログイン画面へ戻る
34+
</Link>
35+
</div>
36+
</div>
37+
</main>
38+
</Layout>
39+
)
40+
}
41+
42+
export default ContactComplete

web-front/resources/src/pages/register/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ const RegisterForm: FC<Props> = ({ appRoot }) => {
4343
label="パスワード"
4444
/>
4545
<TextInput
46-
identity="password-confirm"
46+
identity="passwordConfirmation"
4747
controlType="password"
48-
name="password_confirmation"
48+
name="passwordConfirmation"
4949
autoComplete="new-password"
5050
label="パスワード(確認)"
5151
/>

0 commit comments

Comments
 (0)