본문 바로가기
Web

[JavaScript]자바스크립트로 중복없는 쿠폰번호 생성(4)_프론트엔드 입력 파라미터

by 다봄이 2020. 8. 6.

마지막으로, 쿠폰 코드 생성을 위한 seed 파라미터 입력 또한 프론트엔드에서 받아야 할 것이다. 따라서, 테스트를 위해 백엔드단에서 임의로 입력받아 생성하는 시드를 프론트단으로 빼는 작업만 거치면 완성이다.

FrontEnd 파라미터 입력

seed() : 쿠폰 코드 생성에 필요한 정보 입력

seed(contents : String,  expire : String, uid : String) : Promise < this : Object>
  • params
    • contents : 쿠폰 내용. 런칭 기념 쿠폰 / 생일 축하 쿠폰 등.
    • expire : 생성할 쿠폰의 만료 날짜 설정.
    • uid : 쿠폰을 생성하는 관리자의 정보. firebase의 auth에서 반환하는 userCredential 정보 중 uid값.
let admin = await firebase.auth().signInnWithEmailAndPassword('alwaysblue15@naver.com', '121212');
let uid = (await admin).user.uid;

let couponSeed = await coupons.seed('launching', '2020-03-31', uid);

makeCoupon() : 입력받은 seed 정보를 가지고 쿠폰 생성.

makeCoupon ( seed(), count : String, amount : String ) : Promise < void >
  • params
    • seed() : seed 모듈에서 입력받은 내용
    • count : 해당 금액의 쿠폰을 한 번에 몇 장 생성할 것인가
    • amount : 얼마짜리 쿠폰을 생성할 것인가
await coupons.makeCoupon(couponSeed, 10, 10000);
  • 8비트 쿠폰 생성 및 database 등록.
  • count에 해당하는 개수만큼 amount에 해당하는 금액을 가진 쿠폰 생성

BackEnd 쿠폰 생성 및 DB 등록

module.exports = async function (seed, count, amount) {
    try {
    ...
    let str = seed; //쿠폰 번호 생성에 필요한 seed

    recur:
    for (let i = 0; i < count; i++) {
        let couponCode = await couponInit.concat(await coupon.unixTime(), str.seed1, str.seed2, str.seed3, ...); //seed를 하나의 정보 str으로 합치기

seed모듈과 make모듈의 위 부분만 수정하면 깔끔하게 파라미터 입력 부분은 frontEnd에서, 실제 생성 및 등록 부분은 backEnd에서 진행되도록 나눌 수 있다.


테스트 결과는 다음과 같으며, 해당 Map 객체의 key값이 DB에 등록된다.

댓글