integral писал(а):rem_111 писал(а):За это низкий поклон
... а еще что-нибудь "проверяющее" и "разблокирующее" лицевой счет при наличии денег или нет нельзя ли накатать ?
Ну вот что удалось накидать, на идеальную версию не претендую надо проверять в работе..
Скрипт должен включить всех кто заблокирован, но у кого на балансе денег больше чем АП.
[/code]
Спасибо, щас на стенд тестовый попробую поставить погонять... о результате и багах отпишусь.
-----------------------------------------------------------------------------
через час:
При выполнении скрипта "включения" чтобы исключить пользователей у которых "Добровольная" блокировка сделал следующее:
В поле Комментарий поставил цифру 1 и в запрос добавил
---------------------------------------------------------------------
Через какое то время:
Переделал скрипт под MYSQL и FREEBSD 7 время выполнения запроса ~5 сек, остальное время выполнения занимает консольная админка:
Код: Выделить всё
#!/bin/sh
MYUSER="user"
MYPASS="pass"
MYHOST="localhost"
UTM5DB="UTM5_DB"
#Day="01"
Day=`date -j -v +1d +%d`
RESULT=`echo "SELECT users.basic_account AS aid FROM users \
INNER JOIN accounts ON (users.basic_account = accounts.id) \
INNER JOIN service_links ON (accounts.id = service_links.account_id) \
LEFT OUTER JOIN periodic_services_data ON (service_links.service_id = periodic_services_data.id) \
WHERE users.is_deleted = 0 AND accounts.is_deleted = 0 AND service_links.is_deleted = 0 AND \
periodic_services_data.is_deleted = 0 AND periodic_services_data.discount_method = 1 AND \
periodic_services_data.cost > 0 AND accounts.balance < periodic_services_data.cost AND \
accounts.is_blocked = 0 AND \
accounts.credit = 0" | \
mysql -h $MYHOST -u $MYUSER -p$MYPASS -D $UTM5DB`
case $1 in
check)
for i in $RESULT;
do
echo "Need block account - $i"
done
exit 0
;;
write)
if [ $Day = "01" ]; then
for i in $RESULT;
do
# echo "Blockin accounts"
java -jar /netup/utm5/script/admin/u5sh.jar --AdminLogin login --AdminPass pass --CoreHost localhost --CorePort 11758 --ChangeAccount -aid $i -noabon -chtraf -block 1792 >> /usr/log/off_inet_if_no_balance.log
done
else
echo "No last day"
fi
exit 0
;;
*)
echo "<script> [check|write]"
exit 0
;;
esac
Из замеченных багов:
1. Время выполнения java -jar /netup/utm5/script/admin/u5sh.jar ооооооооочень долгое (1-2 пользователя в секунду т.е. на 5000 пользователей уйдет ~1 час 23 минуты), есть какие либо способы "ускорить процесс" ?
2 (решено).
В не зависимости от того заблокирован акаунт или нет скрипт "деграет" лиц. счет, т.е. нужно добавить проверку на "уже заблокирован" (Что уже частично поможет в пункте 1)
-----------------------------------------------------------------------------------
any time:
Если добавить в запрос
То запрос перестает бегать по тем у кого стоит блокировка.
Чтобы не тронуло пользователей с кредитом добавил:
------------------------------------------------------------------------------------
Скрипт разблокировки
Возникла следующая проблема:
Если на л.с. подключено несколько услуг то по моему скрипт берет их все... и если хватает хоть на 1 услугу - разблокирует... нужно решение...