|
@@ -233,3 +233,157 @@ func CheckSubjectCodesError(midSubjects []models.HisSubject, Vouchers []models.H
|
|
|
}
|
|
|
return true, ""
|
|
|
}
|
|
|
+
|
|
|
+func Unlocking(start time.Time, tasks []models.TaxTask) {
|
|
|
+ reqs := []string{}
|
|
|
+ for _, v := range tasks {
|
|
|
+ reqs = append(reqs, strings.Split(v.ReqNo, "&")...)
|
|
|
+ }
|
|
|
+ req := strings.Join(reqs, "*")
|
|
|
+ UnTels := make(map[string]bool, 1000)
|
|
|
+ if len(tasks) < 1 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //工商的任务不在这里解锁了(避免影响到这个手机号下的税局申报任务,因为如果不加锁的话120秒是可能不够工商申报的,并发的话税局任务会一直挂掉)
|
|
|
+ //如果想要工商任务快一点(客户嫌慢的话),工商任务拿到的时候自己加锁,加锁时长要大于等待验证码的时间(确保收到验证码后解锁 解的是自己加的锁),然后收到验证码的时候解锁
|
|
|
+ for _, task := range tasks {
|
|
|
+ if task.TaskName == variable.TaxCjGsnb || task.TaskName == variable.TaxSbGsnb {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 采集pdf除外 因为超了20分钟就不解锁了 pdf统一上锁3600
|
|
|
+ if (tasks[0].Address == "jiangsu" || tasks[0].Address == "henan") && tasks[0].TaskName != variable.TaxCjInvoicePdf { //&& (tasks[0].LoginType == "政务网登录" || tasks[0].LoginType == "免验证码登录")
|
|
|
+ checkPass := true
|
|
|
+ info, _ := GetEacComInfo(tasks[0])
|
|
|
+ if info.Dlfs == "新版登录" && strings.Contains(tasks[0].Result.BusinessLog, "验证码接收失败") {
|
|
|
+ logger.Info("结束该手机号剩余任务:" + info.Tel)
|
|
|
+ common.CancelLeftTasks(info.Tel)
|
|
|
+ }
|
|
|
+ for _, task := range tasks {
|
|
|
+ if strings.Contains(task.Result.BusinessLog, "超限") { //strings.Contains(task.Result.BusinessLog, "锁定") ||
|
|
|
+ checkPass = false
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if tasks[0].Address == "henan" && checkPass {
|
|
|
+ if !time.Now().After(start.Add(12 * time.Minute)) { //不超过7分钟的解锁
|
|
|
+ tel := strings.Split(tasks[0].Tel, `#`)[0]
|
|
|
+ if time.Since(start).Seconds() < 45 {
|
|
|
+ itv := common.FloatToIntStr((45 - time.Since(start).Seconds()) / 1)
|
|
|
+ logger.Info("加锁:" + tel + " " + itv)
|
|
|
+ common.AddTelLockerX2(tel, itv)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ logger.Info("解锁:" + tel)
|
|
|
+ common.AddTelLockerX2Req(tel, "-1", req)
|
|
|
+ } else if tasks[0].TaskName == variable.TaxCjInvoicePdf { //pdf的任务,如果没有任务在执行也解锁
|
|
|
+ tel := strings.Split(tasks[0].Tel, `#`)[0]
|
|
|
+ status, err := common.GetTelTaskStatus(tel)
|
|
|
+ if err != nil {
|
|
|
+ logger.Info("获取手机号任务状态失败")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if !status {
|
|
|
+ logger.Info("解锁:" + tel)
|
|
|
+ common.AddTelLockerX2Req(tel, "-1", req)
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ if tasks[0].Address == "jiangsu" && !time.Now().After(start.Add(18*time.Minute)) && checkPass {
|
|
|
+ tel := strings.Split(tasks[0].Tel, `#`)[0]
|
|
|
+ if time.Since(start).Seconds() < 45 {
|
|
|
+ itv := common.FloatToIntStr((45 - time.Since(start).Seconds()) / 1)
|
|
|
+ logger.Info("加锁:" + tel + " " + itv)
|
|
|
+ common.AddTelLockerX2(tel, itv)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ logger.Info("解锁:" + tel)
|
|
|
+ common.AddTelLockerX2Req(tel, "-1", req)
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, task := range tasks {
|
|
|
+ info, _ := GetEacComInfo(task)
|
|
|
+ //address := info.Area
|
|
|
+ // 新版登录 收不到验证码撤销掉剩余的任务,避免一直发导致超限
|
|
|
+ if info.Dlfs == "新版登录" && strings.Contains(task.Result.BusinessLog, "验证码接收失败") {
|
|
|
+ logger.Info("结束该手机号剩余任务:" + info.Tel)
|
|
|
+ common.CancelLeftTasks(info.Tel)
|
|
|
+ }
|
|
|
+ //
|
|
|
+ {
|
|
|
+
|
|
|
+ //// 新版=统一解锁
|
|
|
+ //if (info.Dlfs == "新版登录" || info.Dlfs == "代理登录") && info.Tel != "" && !(strings.Contains(task.Result.BusinessLog, "超限") || strings.Contains(task.Result.BusinessLog, "发送短信过于频繁")) {
|
|
|
+ // if !UnTels[info.Tel] {
|
|
|
+ // UnTels[info.Tel] = true
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+ //// zrridno统一解锁
|
|
|
+ //if address == Hebei || address == Hainan || address == Yunnan || address == Shandong || address == Beijing || address == Xizang || address == "zhejiang" || address == "guangdong" || address == "jilin" {
|
|
|
+ // if info.Dlfs == "新版登录" {
|
|
|
+ // if !UnTels[info.Tel] {
|
|
|
+ // UnTels[info.Tel] = true
|
|
|
+ // }
|
|
|
+ // } else {
|
|
|
+ // if !UnTels[info.Zzridno] {
|
|
|
+ // UnTels[info.Zzridno] = true
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+ //// zrrxm解锁
|
|
|
+ //if address == "ningxia" {
|
|
|
+ // if !UnTels[info.Zzrxm] {
|
|
|
+ // UnTels[info.Zzrxm] = true
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+ //// 所有登陆方式都需要解锁的地区
|
|
|
+ //if address == Shanxi || address == Jiangxi || address == Guangxi || address == Neimenggu || address == Xinjiang || address == Shenzhen || address == Henan || address == Anhui || address == Shaanxi || address == Hunan || address == Qingdao || address == Sichuan || address == Guizhou || address == Gansu || address == Dalian {
|
|
|
+ // if !UnTels[info.Tel] {
|
|
|
+ // UnTels[info.Tel] = true
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+ ////if (address == "tianjin" || address == "guangdong" || address == "zhejiang" || address == "hubei") && info.Dlfs == "新版登录" {
|
|
|
+ //// if !UnTels[info.Zzridno+"_"+info.Area] {
|
|
|
+ //// UnTels[info.Zzridno+"_"+info.Area] = true
|
|
|
+ //// }
|
|
|
+ ////}
|
|
|
+ //// 针对发送超限
|
|
|
+ //if strings.Contains(task.Result.BusinessLog, "超限") || strings.Contains(task.Result.BusinessLog, "发送短信过于频繁") {
|
|
|
+ // common.AddTelLockerX2(info.Tel, "600")
|
|
|
+ //}
|
|
|
+ //// 针对新疆
|
|
|
+ //if strings.Contains(task.Result.BusinessLog, "因上条短信验证码未正常使用,无法重新获取验证码,请您在5分钟后上条短信失效后") {
|
|
|
+ // common.AddTelLockerX2(info.Tel, "300")
|
|
|
+ //}
|
|
|
+ }
|
|
|
+ // 现在直接用手机号解锁,因为不管用什么加锁都会加到tel字段上
|
|
|
+ if info.Tel != "" {
|
|
|
+ UnTels[info.Tel] = true
|
|
|
+ }
|
|
|
+ // 频繁加锁
|
|
|
+ if strings.Contains(task.Result.BusinessLog, "短信发送申请过于频繁") || strings.Contains(task.Result.BusinessLog, "超限") || strings.Contains(task.Result.BusinessLog, "发送短信过于频繁") || strings.Contains(task.Result.BusinessLog, "因上条短信验证码未正常使用,无法重新获取验证码,请您在5分钟后上条短信失效后") {
|
|
|
+ UnTels[info.Tel] = false
|
|
|
+ common.AddTelLockerX2(info.Tel, "300") // 直接覆盖一个5分钟的锁
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for k := range UnTels {
|
|
|
+ haspdf := false
|
|
|
+ for _, v := range tasks {
|
|
|
+ if v.TaskName == variable.TaxCjInvoicePdf {
|
|
|
+ haspdf = true
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if time.Since(start).Seconds() < 1195 || haspdf {
|
|
|
+ logger.Info("开始时间:", start.Format("2006-01-02 15:04:05"), ";结束时间:", time.Now().Format("2006-01-02 15:04:05"), ";任务时长:", time.Since(start).Seconds())
|
|
|
+ logger.Info("解锁:" + k)
|
|
|
+ common.AddTelLockerX2Req(k, "-1", req)
|
|
|
+ }
|
|
|
+ //if strings.Contains(k, "anhui") {
|
|
|
+ // logger.Info("安徽暂时全解锁:" + k)
|
|
|
+ // common.AddTelLockerX2Req(k, "-1", req)
|
|
|
+ //}
|
|
|
+ }
|
|
|
+}
|