def updateApp(self, app): jsontxt = GetJson(app.getURL()) if (jsontxt == None): self.logger.error("jsontxt获取失败:" + app.getURL()) return Result(ResultEnum.URL_INVALID) jsondic = json.loads(jsontxt) if (not IsJsonValid(jsondic)): self.logger.error("无效json:" + app.getURL()) return Result(ResultEnum.URL_INVALID) app.updateByJson(jsondic) self.mAppController.updateApp(app) self.logger.info("更新app:" + app.getAppId()) res = self.mConfigService.getNotice() if (res.isPositive() and res.getData() == 1): if (not os.path.exists(self.rootpath + "img/" + app.getAppId() + ".png")): downLoadImage(app.getImgURL(), self.rootpath + "img/" + app.getAppId() + ".png") cutImage(self.rootpath + "img/" + app.getAppId() + ".png", (387, 102, 813, 528)) res = self.mPriceService.addPrice(app, jsondic) if (app.getStar() and res.isPositive()): notice = self.mConfigService.getNotice() if (notice.isPositive() and notice.getData() == 1): self.noticePrice(app) return Result(ResultEnum.SUCCESS, app)
def noticePrice(self, app): res = self.getPricesByApp(app) if (not res.isPositive()): return res prices = res.getData() if (len(prices) < 2): return Result(ResultEnum.FAULT) newprice = prices[-1] oldprice = prices[-2] if (newprice.getPrice() >= oldprice.getPrice() or newprice.getNoticed() == 1): return Result(ResultEnum.FAULT) self.mPriceService.setNoticed(newprice) note = '你关注的"' + app.getName() + '"降价啦!🎉 当前价格:¥ ' + str( newprice.getPrice()) self.mNotification.addNotice(note) self.logger.info("降价通知:" + app.getName() + "\n" + newprice.toString()) return Result(ResultEnum.SUCCESS)
def getCategories(self): res = self.mAppController.selectCategories() if (res == None): self.logger.error("getCategories()" + ResultEnum.SELECT_ERROR[1]) return Result(ResultEnum.SELECT_ERROR) return Result(ResultEnum.SUCCESS, res)
def getAppByAppId(self, appid): res = self.mAppController.selectAppByAppId(appid) if (res == None): self.logger.error("通过appid查询失败:" + str(appid)) return Result(ResultEnum.SELECT_ERROR) return Result(ResultEnum.SUCCESS, res)
def getAppsByStar(self): res = self.mAppController.selectAppsByStar() if (res == None): self.logger.error("getAppsByStar" + ResultEnum.SELECT_ERROR[1]) return Result(ResultEnum.SELECT_ERROR) return Result(ResultEnum.SUCCESS, res)
def getAllApps(self, where=""): res = self.mAppController.selectAllApps(where) if (res == None): self.logger.error("getAllApps()" + ResultEnum.SELECT_ERROR[1]) return Result(ResultEnum.SELECT_ERROR) return Result(ResultEnum.SUCCESS, res)
def getConfig(self): res = self.mConfigController.selectConfigById(1) if (res == None): self.logger.error("getConfig()" + ResultEnum.SELECT_ERROR[1]) return Result(ResultEnum.SELECT_ERROR) return Result(ResultEnum.SUCCESS, res)
def getPricesByAppId(self, appid): res = self.mPriceController.selectPricesByAppId(appid) if (res == None): self.logger.error("getPricesByAppId()" + ResultEnum.SELECT_ERROR[1]) return Result(ResultEnum.SELECT_ERROR) return Result(ResultEnum.SUCCESS, res)
def deleteApp(self, app): if (app.getId() < 0): self.logger.warning("deleteApp()" + ResultEnum.APP_INVALID[1]) return Result(ResultEnum.APP_INVALID) self.mAppController.deleteAppById(app.getId()) self.mPriceService.deletePriceByAppId(app.getAppId()) self.logger.warning("deleteApp()删除app:" + app.getAppId()) return Result(ResultEnum.SUCCESS)
def setRunTimes(self, times): res = self.mConfigController.selectConfigById(1) if (res == None): self.logger.error("runTimesAddOne()" + ResultEnum.SELECT_ERROR[1]) return Result(ResultEnum.SELECT_ERROR) res.setRunTimes(times) self.mConfigController.updateConfig(res) return Result(ResultEnum.SUCCESS, res)
def setLog(self, log): res = self.mConfigController.selectConfigById(1) if (res == None): self.logger.error("setLog()" + ResultEnum.SELECT_ERROR[1]) return Result(ResultEnum.SELECT_ERROR) res.setLog(log) self.mConfigController.updateConfig(res) self.logger.info("setLog : " + str(log)) return Result(ResultEnum.SUCCESS, res)
def init(self): res = self.mConfigController.selectConfigById(1) if (res == None): self.logger.error("init()" + ResultEnum.SELECT_ERROR[1]) return Result(ResultEnum.SELECT_ERROR) res.setRunTimes(0) res.setNotice(1) res.setDownLoadImg(1) self.mConfigController.updateConfig(res) self.logger.info("setNotice success") return Result(ResultEnum.SUCCESS, res)
def changeAppCategory(self, app, category): self.logger.info("修改app分类: " + str(app.getId()) + " " + app.getApplicationCategory() + " -> " + category) app.setApplicationCategory(category) res = self.mAppController.updateApp(app) return Result(ResultEnum.SUCCESS)
def starApp(self, app): cnt = self.sortAppStar().getData() app.setStar(cnt + 1) self.mAppController.updateApp(app) self.logger.info("收藏app:" + app.getAppId()) return Result(ResultEnum.SUCCESS)
def getLog(self): res = self.getConfig() if (res.isPositive()): return Result(ResultEnum.SUCCESS, res.getData().getLog()) else: self.logger.error("getLog()") return res
def deleteAppByAppId(self, appid): self.mAppController.deleteAppByAppId(appid) self.mPriceService.deletePriceByAppId(appid) self.logger.warning("deleteAppByAppId()删除app:" + appid) return Result(ResultEnum.SUCCESS)
def getAppsByCategory(self, category, key=0, desc=0): keys = ["createtime", "name", "price"] descs = ["", "DESC"] order = "ORDER BY " + keys[key] + " " + descs[desc] if (key == 2): res = self.mAppController.selectAppsByCategoryOrderByNewestPrice( category, order) else: res = self.mAppController.selectAppsByCategory(category, order) if (res == None): self.logger.error("getAppsByCategory()" + ResultEnum.SELECT_ERROR[1]) return Result(ResultEnum.SELECT_ERROR) return Result(ResultEnum.SUCCESS, res)
def unstarApp(self, app): app.setStar(0) self.mAppController.updateApp(app) self.logger.info("取消收藏app:" + app.getAppId()) self.sortAppStar() return Result(ResultEnum.SUCCESS)
def addPrice(self, app, json): price = Price(app.getAppId(), json["offers"]["price"]) res = self.mPriceController.selectPriceByAppId_Day( app.getAppId(), datetime.datetime.now().strftime('%Y-%m-%d')) if (res == None): self.mPriceController.insertPrice(price) self.logger.info("添加price:" + price.toString()) return Result(ResultEnum.SUCCESS, price) else: res.setPrice(price.getPrice()) self.mPriceController.updatePrice(res) self.logger.info("更新price:" + res.toString()) return Result(ResultEnum.PRICE_UPDATE, res) return Result(ResultEnum.SUCCESS, res)
def changeAppStar(self, app, star): if (star < 1): return self.unstarApp() app.setStar(star) self.mAppController.updateApp(app) self.logger.info("修改收藏app顺序:" + app.getAppId() + " " + str(star)) return Result(ResultEnum.SUCCESS)
def addApp(self, url, star=True): app = App(url) jsontxt = GetJson(url) if (jsontxt == None): self.logger.error("jsontxt获取失败:" + url) return Result(ResultEnum.URL_INVALID) jsondic = json.loads(jsontxt) if (not IsJsonValid(jsondic)): self.logger.error("无效json:" + url) return Result(ResultEnum.URL_INVALID) app.initByJson(jsondic) if (self.isExist(app)): res = self.updateApp(app) if (res.equal(ResultEnum.SUCCESS)): return Result(ResultEnum.APP_UPDATE) return res self.mAppController.insertApp(app) self.mPriceService.addPrice(app, jsondic) # 默认开启自动更新,并设置为愿望单 app = self.getAppByAppId(app.getAppId()).getData() if (star): self.starApp(app) self.changeAppAutoUpdate(app, 1) else: self.changeAppAutoUpdate(app, 0) # 调用更新时再下载,加快应用添加速度,以免用户长时间等待 # downLoadImage(app.getImgURL(),"data/img/"+app.getAppId()+".png") self.logger.info("添加app:\n" + app.toString() + "\n") return Result(ResultEnum.SUCCESS, app)
def sortAppStar(self): res = self.getAppsByStar() if (not res.isPositive()): return res apps = res.getData() cnt = len(apps) for i in range(cnt): self.changeAppStar(apps[i], i + 1) #self.logger.info("排序app收藏顺序。") return Result(ResultEnum.SUCCESS, cnt)
def updateAllApps(self): res = self.getAllApps("WHERE autoupdate=1") if (not res.equal(ResultEnum.SUCCESS)): return res apps = res.getData() newapps = [] fault = 0 for i in apps: res = self.updateApp(i) if (res.isPositive()): newapps.append(res.getData()) else: fault += 1 return Result(ResultEnum.SUCCESS, (newapps, fault))
def updateAllApps_Syn(self, syn=None): res = self.getAllApps("WHERE autoupdate=1") if (not res.equal(ResultEnum.SUCCESS)): return res apps = res.getData() newapps = [] fault = 0 l = len(apps) if (not syn == None): syn(0, l) for i in range(l): if (not syn == None): syn(i + 1, l) res = self.updateApp(apps[i]) if (res.isPositive()): newapps.append(res.getData()) else: fault += 1 return Result(ResultEnum.SUCCESS, (l, fault))
def countPrices(self): res = self.mPriceService.countPrices() return Result(ResultEnum.SUCCESS, res.getData())
def setLogger_Run(self, arg): self.logger.setRun(arg) self.mPriceService.setLogger_Run(arg) self.mConfigService.setLogger_Run(arg) return Result(ResultEnum.SUCCESS)
def clearDataBase(self): self.logger.warning("清理数据库:") self.deleteAllApps() self.mPriceService.deleteAllPrices() return Result(ResultEnum.SUCCESS)
def changeAppAutoUpdate(self, app, arg): self.logger.info("修改app自动更新: " + str(app.getAppId()) + " " + str(arg)) app.setAutoUpdate(arg) res = self.mAppController.updateApp(app) return Result(ResultEnum.SUCCESS)
def countCategory(self): res = self.mAppController.countCategory() return Result(ResultEnum.SUCCESS, res)
def sumNewestPrices(self): res = self.mPriceService.sumNewestPrices() return Result(ResultEnum.SUCCESS, res.getData())