getslidecarddata

This commit is contained in:
Le Viet
2022-05-30 20:59:47 +07:00
parent e9f2c97da2
commit de08c434b3
4 changed files with 140 additions and 35 deletions
+6 -2
View File
@@ -124,7 +124,11 @@ module.exports = {
getSlideCardData(req, res) { getSlideCardData(req, res) {
memberServices.getSlideCard(req) memberServices.getSlideCard(req)
.then(data => res.status(200).send(data)) .then(data => {
.catch(error => res.status(400).send(error.errors)); return res.status(201).send(data)
})
.catch(error => {
res.status(400).send(error.errors)
});
}, },
}; };
+1
View File
@@ -46,6 +46,7 @@ module.exports = (memberCardService, memberService) => {
}; };
cardBehavior.behaviorBH0005 = async (member) => { cardBehavior.behaviorBH0005 = async (member) => {
return memberCardService.CARD_ADD_ALLOWED;
const weeklySpending = await memberService.weeklyMemberSpending(member); const weeklySpending = await memberService.weeklyMemberSpending(member);
if (weeklySpending.weekly_total == 0) { if (weeklySpending.weekly_total == 0) {
return memberCardService.CARD_ADD_ALLOWED; return memberCardService.CARD_ADD_ALLOWED;
+124 -23
View File
@@ -4,8 +4,7 @@ const { forEach, invoke } = require('lodash');
const MembersCardAssign = require("../../models").MembersCardAssign; const MembersCardAssign = require("../../models").MembersCardAssign;
module.exports = (memberService) => { module.exports = (memberService) => {
const cardBehaviorService = require("./cardBehavior")(this,memberService); const cardService = {
return {
CARD_BEHAVIORS: { CARD_BEHAVIORS: {
BH0001: 'BH0001', BH0001: 'BH0001',
BH0002: 'BH0002', BH0002: 'BH0002',
@@ -113,7 +112,6 @@ module.exports = (memberService) => {
} }
} }
}); });
}, },
async getMemberCardClickTrack(memberId, cardId) { async getMemberCardClickTrack(memberId, cardId) {
@@ -157,8 +155,6 @@ module.exports = (memberService) => {
async getMemberCardsByType(member, cardType, limit) { async getMemberCardsByType(member, cardType, limit) {
var memberId = member.id; var memberId = member.id;
var result = {};
var total = 0;
var queryMain = ''; var queryMain = '';
var sqlSelect = ''; var sqlSelect = '';
var sqlCount = ''; var sqlCount = '';
@@ -208,7 +204,9 @@ module.exports = (memberService) => {
sqlCount = `SELECT count(a.id) `; sqlCount = `SELECT count(a.id) `;
sqlSelect = `SELECT a.*, a.id AS card_id,b.name AS card_action_name,b.type AS card_action_type,b.data AS card_action_data `; sqlSelect = `SELECT a.*, a.id AS card_id,b.name AS card_action_name,b.type AS card_action_type,b.data AS card_action_data `;
queryMain = `FROM main_cards a LEFT JOIN card_actions b ON (b.id=a.card_action_id) queryMain = `FROM main_cards a LEFT JOIN card_actions b ON (b.id=a.card_action_id)
WHERE a.status = 1 AND a.deleted IS NULL ORDER BY RANDOM()`; WHERE a.status = 1 AND a.deleted IS NULL`;
sqlCount += queryMain;
sqlSelect += queryMain + ` ORDER BY RANDOM()`;
break; break;
default: default:
sql = `select 1 from 1`; sql = `select 1 from 1`;
@@ -218,36 +216,139 @@ module.exports = (memberService) => {
const results = await sequelize.query(sqlSelect, { const results = await sequelize.query(sqlSelect, {
replacements: { member_id: memberId } replacements: { member_id: memberId }
}); });
var testCardAllowed = this.CARD_ADD_DENIED
let resultOut = {};
let total_record = 0;
if (results[0]) { if (results[0]) {
var self = this; var self = this;
forEach(results[0], async function (card) { var dealCardCount = 0;
//console.log("card behavior: ", card.card_behavior) var surveyCardCount = 0;
var blogCardCount = 0;
for(const card of results[0]){
let testCardAllowed = this.CARD_ADD_ALLOWED
if (cardType == 22000) { if (cardType == 22000) {
testCardAllowed = self.verifyMemberCardDescision(card, member); testCardAllowed = await this.verifyMemberCardDescision(card, member);
} }
}); console.log('testCardAllowed', testCardAllowed);
result = results[0]; let cardCountryAllow = true;
if (card.card_country != "") {
//cardCountryAllow = false;
if (card.card_country == member.country) {
cardCountryAllow = true;
}
}
countBlock = false;
// let see i card expired
if (card.card_canexpire == 1 && card.expr_val < 0) {
countBlock = true;
} else {
if (cardType == 22000) {
if (card.button1_action == "GOOFFERS") {
if (dealCardCount > 0) {
countBlock = true;
}
if (card.card_country == "" || card.card_country == member.country) {
dealCardCount++;
}
}
if (card.button1_action == "SURVEYA") {
if (surveyCardCount > 0) {
countBlock = true;
}
surveyCardCount++;
}
if (card.button1_action == "BLOGCARD") {
if (blogCardCount > 0) {
countBlock = true;
}
blogCardCount++;
}
}
} //card is not expired
//console.log(testCardAllowed, cardCountryAllow, countBlock, (self.CARD_ADD_ALLOWED == testCardAllowed && true == cardCountryAllow && false == countBlock))
if (this.CARD_ADD_ALLOWED == testCardAllowed && true == cardCountryAllow && false == countBlock) {
//console.log(testCardAllowed, cardCountryAllow, countBlock)
suffix = total_record.toString().padStart(5, '0');
resultOut['name_' + suffix] = card.name;
resultOut['assign_id_' + suffix] = card.assign_id;
resultOut['card_id_' + suffix] = card.card_id;
resultOut['can_save_' + suffix] = card.can_save;
resultOut['short_title_' + suffix] = card.short_title;
resultOut['title_' + suffix] = card.short_title;
resultOut['background_picture_' + suffix] = card.background_picture;
resultOut['button1_' + suffix] = card.button1;
resultOut['button1_text_' + suffix] = card.button1_text;
resultOut['button1_action_' + suffix] = card.button1_action;
resultOut['expires_' + suffix] = card.card_expiration;
resultOut['template_' + suffix] = card.template;
resultOut['card_canexpire_' + suffix] = card.card_canexpire;
resultOut['card_action_type_' + suffix] = card.card_action_type;
resultOut['card_action_data_' + suffix] = card.card_action_data;
resultOut['titleshow_' + suffix] = card.titleshow;
resultOut['multiple_answer_' + suffix] = card.multiple_answer;
resultOut['use_short_title_' + suffix] = card.use_short_title;
resultOut['target_key_' + suffix] = card.target_key;
resultOut['target_text_' + suffix] = card.target_text;
resultOut['description_' + suffix] = card.description;
resultOut['long_description_' + suffix] = card.long_description;
resultOut['card_behavior_' + suffix] = card.card_behavior;
resultOut['card_type_' + suffix] = card.card_type;
resultOut['card_type_' + suffix] = card.card_type;
resultOut['card_country_' + suffix] = card.card_country;
resultOut['card_location_' + suffix] = card.card_location;
resultOut['latitude_' + suffix] = card.latitude;
resultOut['longitude_' + suffix] = card.longitude;
resultOut['card_order_' + suffix] = card.card_order;
resultOut['background_color_' + suffix] = card.background_color;
resultOut['blog_id_' + suffix] = card.blog_id;
resultOut['expiration_' + suffix] = card.expiration;
if (card.button1_action == "CARPOOL") {
sqlCarpool = `SELECT * FROM members_carpool_friends WHERE carpool_id IN (select id from members_carpool WHERE member_id =:member_id) AND status = 1`;
const carPool = await sequelize.query(sqlCarpool,
{
replacements: {
member_id: member.id
}
});
if (carPool && carPool[0].added) {
resultOut['subscribe_' + suffix] = carPool[0].added;
} else {
resultOut['subscribe_' + suffix] = "";
}
} else {
resultOut['subscribe_' + suffix] = card.subscribe;
}
total_record++;
}
};
} }
const totalCards = await sequelize.query(sqlCount, {
replacements: { member_id: memberId } console.log('total', total_record)
}); return { total_record: total_record, result: resultOut };
if (totalCards[0][0]) {
total = parseInt(totalCards[0][0].count);
}
return { total: total, result: result };
}, },
async verifyMemberCardDescision(cardData, member) { async verifyMemberCardDescision(cardData, member) {
var behavior = cardData.card_behavior; var behavior = cardData.card_behavior;
var func = 'behavior' + behavior; var func = 'behavior' + behavior;
console.log(func)
if (func in cardBehaviorService) { if (func in cardBehaviorService) {
//console.log('call function ', func) console.log('call function ', func)
return invoke(cardBehaviorService, func, member); //console.log(await invoke(cardBehaviorService, func, member))
return await invoke(cardBehaviorService, func, member);
} }
return this.CARD_ADD_ALLOWED; return this.CARD_ADD_ALLOWED;
} }
} }
const cardBehaviorService = require("./cardBehavior")(cardService, memberService);
return cardService;
} }
+9 -10
View File
@@ -10,6 +10,7 @@ const MembersBankAccount = require("../../models").MembersBankAccounts;
const resetPasswordService = require("./resetPassword"); const resetPasswordService = require("./resetPassword");
const memberCardService = require("../card").memberCard.bind(this); const memberCardService = require("../card").memberCard.bind(this);
const mailServiceMember = require("../mail").member; const mailServiceMember = require("../mail").member;
const { memberCard } = require('../card');
console.log('card in member', memberCardService) console.log('card in member', memberCardService)
module.exports = { module.exports = {
@@ -517,11 +518,12 @@ module.exports = {
var queryMemberAverage = `SELECT avg(amount) *0.01 AS member_average var queryMemberAverage = `SELECT avg(amount) *0.01 AS member_average
FROM members_bankimport FROM members_bankimport
WHERE category IN (SELECT category FROM activity_listcategory) AND member_id = :member_id AND currency='USD'`; WHERE category IN (SELECT category FROM activity_listcategory) AND member_id = :member_id AND currency='USD'`;
const memberAverge = await sequelize.query(queryMemberAverage, { const memberAvg = await sequelize.query(queryMemberAverage, {
replacements: { member_id: member.id } replacements: { member_id: member.id }
}); });
if (memberAverge[0][0]) {
memberAverage = parseFloat(memberAverge[0][0].member_average); if (memberAvg[0][0]) {
memberAverage = parseFloat(memberAvg[0][0].member_average);
} }
if (memberAverage > 0 && memberAverage > populationAverage) { if (memberAverage > 0 && memberAverage > populationAverage) {
@@ -571,7 +573,7 @@ module.exports = {
} }
weeklyTotal = totalWeeklySpend; weeklyTotal = totalWeeklySpend;
return { return {
over_spending: overSpending, over_spending: overSpending,
under_spending: underSpending, under_spending: underSpending,
@@ -605,13 +607,10 @@ module.exports = {
//const surveyCards = await memberCardService.getMemberSurveyCards(member_id); //const surveyCards = await memberCardService.getMemberSurveyCards(member_id);
//console.log(surveyCards); //console.log(surveyCards);
console.log("card_type:", card_type); console.log("card_type:", card_type);
console.log("get cards")
const member = await this.getProfile(req); const member = await this.getProfile(req);
const memberCards = await memberCardService(this).getMemberCardsByType(member, parseInt(card_type), card_count); const cards = await memberCardService(this).getMemberCardsByType(member, parseInt(card_type), card_count);
//console.log("member cards",cards);
//console.log("memberCards", memberCards) return cards;
if (surveyCards) {
}
} }
} }