উপস্থাপিত
আমার উদ্দেশ্য সাবস্ক্রিপশন পরিচালনা করতে একাধিক প্রকল্পের জন্য পুনরায় ব্যবহারযোগ্য কোড তৈরি করা (এবং এটি গিথুবে প্রকাশও করা)। আমি স্ট্রাইপ এবং পুনরাবৃত্ত বিলিং সরবরাহকারীদের সম্পর্কে জানি, তবে এই মডিউলটি কী লক্ষ্য করে তা নয়। অ্যাকাউন্টের ভারসাম্য গণনা, সাবস্ক্রিপশন পুনর্নবীকরণের জন্য সহজ বিজ্ঞপ্তি এবং মূল্য গণনা পরিচালনা করার জন্য এটি কেবল একটি মোড়ক / সহায়ক হতে হবে।
এমন দেশ রয়েছে যা সরবরাহকারীরা বা অর্থ প্রদানের সম্ভাবনাগুলি দুর্বল বা এর জন্য কোনও সমর্থন না থাকায় বা খুব ব্যয়বহুল (মাইক্রোপেমেন্টস) কারণে আপনি পুনরাবৃত্ত বিলিং ব্যবহার করতে পারবেন না। এবং এমন লোকেরা আছেন যাঁরা পুনরাবৃত্ত বিলিং ব্যবহার করতে চান না তবে বছরের শেষে ম্যানুয়ালি / চালানকে চালিত করে তাদের বিল পরিশোধ করতে চান। সুতরাং দয়া করে পেপাল পুনরাবৃত্তি বিলিং, পুনরাবৃত্তি বা অনুরূপ পরিষেবাদির পরামর্শ দিবেন না।
পরিস্থিতি ধরা
যাক আপনার একটি মডেল রয়েছে যা সাবস্ক্রিপশন প্ল্যানে সাবস্ক্রাইব করতে পারে (উদাঃ User
)। এই মডেলটির এমন একটি ক্ষেত্র রয়েছে যা এটি বর্তমানে সাবস্ক্রাইব হওয়া সাবস্ক্রিপশন পরিকল্পনার সনাক্তকারীকে সঞ্চয় করে। সুতরাং, প্রতিটি পরিকল্পনা পরিবর্তনের উপর, পরিবর্তনটি রেকর্ড করা হয়।
SubscriptionPlanChanges
নিম্নলিখিত ক্ষেত্রগুলি উল্লিখিত পরিবর্তনগুলি রেকর্ড করে একটি মডেল রয়েছে (উদাঃ )
subscriber
সাবস্ক্রাইব মডেল সম্পর্কিত (User
এই ক্ষেত্রে)from_plan
মডেল পরিবর্তনের আগে পরিকল্পনা শনাক্তকারীকে সংজ্ঞায়িত করেto_plan
পরিকল্পনা সনাক্তকারীকে সংজ্ঞায়িত করা মডেল এখন নির্বাচন করেছেন hascreated_at
পরিবর্তনটি সংরক্ষণ করার জন্য একটি তারিখ-সময় ক্ষেত্রvalid_until
প্রকৃত সাবস্ক্রিপশন বৈধ না হওয়া পর্যন্ত তারিখ সঞ্চয় করেpaid_at
এটি একটি তারিখ-সময় ক্ষেত্র যা সংজ্ঞা দেয় (এবং কখন) সাবস্ক্রিপশন প্রদান করা হয়েছিল
অবশ্যই, সেই বিন্যাসটি আলোচনাযোগ্য।
অ্যাকাউন্টের ভারসাম্যের প্রশ্ন
যখন একজন ব্যবহারকারী তার সাবস্ক্রিপশন প্ল্যান পরিবর্তন করে, তখন আমার পরিকল্পনার ক্ষেত্রগুলি তুলনা করতে হবে, প্রাইসিংগুলি পেতে হবে এবং বর্তমান পরিকল্পনার valid_until
এবং এর দামের ভিত্তিতে নতুন পরিকল্পনার জন্য ছাড়ের গণনা করতে হবে। বলুন: আপনি পরিকল্পনার এক বছরের জন্য সাবস্ক্রাইব করেছেন তবে months মাস পরে আপনি বি প্ল্যানে আপগ্রেড করেছেন, সুতরাং আপনি পরিকল্পনার for মাসের জন্য অর্ধেক প্রদত্ত দামের ছাড় পাবেন get
আমি কী ভাবছি: যদি কোনও ব্যবহারকারী যেমন মুক্ত পরিকল্পনায় স্যুইচ করে তবে তার একটি ক্রেডিট রয়েছে যা ব্যবহারকারী আবার স্যুইচ করতে চাইলে কেটে নেওয়া যায়। আপনি কি কোনও অতিরিক্ত ক্ষেত্রে সেই মানটি ক্যাশে রাখতে পারবেন, বা প্রতিবার সেই ব্যবহারকারীর সাথে সম্পর্কিত সমস্ত রেকর্ডের মাধ্যমে গণনা করবেন? আপনি কি টেবিল বিন্যাস সম্পর্কে কিছু যুক্ত / পরিবর্তন করবেন?
সহজ বোধগম্যতার প্রশ্ন
যখন সাবস্ক্রিপশন সময়সীমা শেষ হবে, ব্যবহারকারী বিজ্ঞাপিত হয়ে যায় এবং আবার অর্থ প্রদানের মাধ্যমে তার সাবস্ক্রিপশন পুনর্নবীকরণের সম্ভাবনা থাকে। সবচেয়ে সহজ উপায় হ'ল কেবল আপডেট করা paid_at
এবং valid_until
নতুন সাবস্ক্রিপশন বিকল্পগুলি। তবে, আমি নিশ্চিত নই যে আপনি যদি কারও প্রয়োজন হতে পারে এমন প্রতিটি ডেটা, অর্থ প্রদান / সাবস্ক্রিপশন ইতিহাসের মতো সঞ্চয় করেন কিনা।
আরেকটি বিকল্প হ'ল এটির জন্য একটি অতিরিক্ত রেকর্ড তৈরি করা হবে, যেখানে from_plan
এবং to_plan
একই শনাক্তকারী রয়েছে (সুতরাং "কোনও পরিবর্তন নয়" প্রতীকী)। তবে কি কোনওভাবে অ্যাকাউন্টের ভারসাম্য গণনা করতে হস্তক্ষেপ করবে না?
যদি কেউ এই জাতীয় সাবস্ক্রিপশন পরিচালনা করার লজিক্স সম্পর্কে আমাকে সঠিক দিকে নির্দেশ করতে পারে তবে আমি এটির খুব প্রশংসা করব।
আপডেট
এখন অবধি সহায়তার জন্য ধন্যবাদ। আমি মনে করি আমার প্রশ্নটি খুব অস্পষ্ট ছিল তাই আমি কম বিমূর্ততা ব্যবহার করে আরও সুনির্দিষ্ট হওয়ার চেষ্টা করব। দুর্ভাগ্যক্রমে, আমি আমার সমস্যাটি এখনও সমাধান করতে পারিনি।
কেস এ
User
নির্বাচন করতে পারে Subscription Plan A
। এটি বর্তমানে SubscriptionPlanChange
এটির ট্র্যাক রাখতে একটি সঞ্চয় করে। যেমন 5 মাস পরে User
তার সাবস্ক্রিপশনটি আপগ্রেড করে Subscription Plan B
। সুতরাং তিনি তার নতুন সাবস্ক্রিপশনের জন্য মূল্য পরিশোধ করেন, অব্যবহৃত 7 মাসের জন্য পরিকল্পনার দামটি বাদ দিয়ে।
কেস বি
3 মাস পরে, User
তার কাছে ফিরে আসে Subscription Plan A
। তাকে দিতে হবে না তবে এর জন্য একটি ভারসাম্য পান যাতে সাবস্ক্রিপশন শেষে, তিনি তার নতুন সাবস্ক্রিপশনের জন্য সেই ব্যালেন্সটি কেটে যায় gets
কেস সি
User
একটি সাব-সাবস্ক্রিপশনের জন্য সাবস্ক্রিপশন প্ল্যান নির্বাচন করতে পারে যার স্বাধীন সাবস্ক্রিপশন পরিকল্পনা রয়েছে। একই Case A
এবং Case B
উপ-পরিষেবা সাবস্ক্রিপশনের জন্য আবেদন করতে পারে।
_Case D_
ব্যবহারকারী তার একটি সদস্যতা বাতিল করে। এটি তার ভারসাম্যের শীর্ষে উঠে আসে।
আমার প্রশ্ন (বর্তমানে কমপক্ষে) মূলত সেই ডেটা কীভাবে সঠিকভাবে সংরক্ষণ করা যায় তার উপর নির্ভর করে যাতে আমি ব্যবসায়ের বিশ্লেষণের জন্য সাবস্ক্রিপশনের একটি ইতিহাস পুনরুত্পাদন করতে পারি এবং ব্যালেন্স গণনা করতে পারি, সাবস্ক্রিপশনের উপর ভিত্তি করে বকেয়া পেমেন্ট পেতে পারি etc.
আমিও নিশ্চিত নই যে ভারসাম্যটি সংরক্ষণ করা উচিত eg উদাহরণস্বরূপ ব্যবহারকারীগণের মডেল নিজেই, বা এটি সঞ্চিত না থাকলে তবে সঞ্চিত ডেটা / ইতিহাসের ভিত্তিতে যে কোনও সময় গণনা করা যায়।
কিছু বিষয় লক্ষণীয়, যদিও আমি মনে করি না যে তাদের সমস্যার সমাধান করা উচিত:
- এটি একটি
User
হতে হবে না, এটি যে কোনও কিছু হতে পারে, এজন্যইSubscriber
পলিমারফিক হয় Plans
অগত্যা পরিকল্পনা হতে হবে না, তবে যেমনMagazines
উল্লিখিত মত হতে পারে । আমি কেস সি এবং কেস ডি দিয়ে এটি বর্ণনা করেছি ।