Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import mercadoenvios.*
- import groovy.time.*
- import groovyx.gpars.GParsPool
- import java.util.concurrent.atomic.AtomicInteger
- import com.google.common.util.concurrent.RateLimiter
- restClient = ctx.restClient
- def itemService = ctx.getBean('itemService')
- def addressesService = ctx.getBean('addressesService')
- def path = "/tmp/buyEqualShip/oferta/mla/users/"
- def users = [93649727]
- //def users = new File(path+"18k_originales.csv").readLines()
- logFile = new File(path+'result_file.log'); logFile.write('')
- log = { text -> logFile << text + "\n" }
- errorFile = new File(path+'error_file.log'); errorFile.write('')
- logError = { text -> errorFile << text + "\n" }
- logMonitorFile = new File(path+'monitor.log'); logMonitorFile.write('')
- logMonitor = { text -> logMonitorFile << text + "\n" }
- def itemAttributes = [
- 'status'
- ]
- def getItems(def id) {
- def result
- restClient.get(
- uri : ("/internal/users/${id}/items/count?status=active,paused&caller.id=${id}").toString(),
- success : {
- result = it.data
- },
- failure : {
- println it.dump()
- if (it.exception){
- errorLog "${id}"
- }
- }
- )
- return result
- }
- def getPreference(def user, def restClient) {
- def uri = "/users/${user}/shipping_preferences?caller.scopes=admin".toString()
- def data
- try {
- restClient.get(
- uri:uri,
- success: {
- data = it.data
- },
- failure: {
- data = null
- }
- )
- }
- catch(Exception e) {
- }
- return data
- }
- RateLimiter rateLimiter = RateLimiter.create(50.0d) // 50 x seg o 3k RPM
- GParsPool.withPool(10) {
- log "userId,dsaStatus,latitude,longitude,option,mandatoryStatus,lls"
- users.eachParallel {user ->
- try {
- logMonitor "${user}"
- def pref = getPreference(user, restClient)
- def dsa = addressesService.getAddressDataByUser(user)
- def isNextToMe2orMandatory = pref?.mandatory_settings?.activation_date != null
- def option = pref?.option
- rateLimiter.acquire()
- def r = getItems(user)
- if (dsa && dsa.normalized){
- if (isNextToMe2orMandatory) {
- log "${user},has_dsa,${dsa.latitude},${dsa.longitude},${option},mandatory,${r.total}"
- }
- else {
- log "${user},has_dsa,${dsa.latitude},${dsa.longitude},${option},not_mandatory,${r.total}"
- }
- } else {
- if (isNextToMe2orMandatory) {
- log "${user},no_dsa,no_atitude,no_longitude,${option},mandatory,${r.total}"
- }
- else {
- log "${user},no_dsa,no_atitude,no_longitude,${option},not_mandatory,${r.total}"
- }
- }
- } catch (Exception e) {
- logError "${e}"
- }
- }
- }
Add Comment
Please, Sign In to add comment