예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
    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)
예제 #4
0
    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)
예제 #5
0
    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)
예제 #6
0
    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)
예제 #7
0
    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)
예제 #8
0
    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)
예제 #9
0
    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)
예제 #10
0
    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)
예제 #11
0
    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)
예제 #12
0
    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)
예제 #13
0
    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)
예제 #14
0
    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)
예제 #15
0
    def getLog(self):
        res = self.getConfig()

        if (res.isPositive()):
            return Result(ResultEnum.SUCCESS, res.getData().getLog())
        else:
            self.logger.error("getLog()")
            return res
예제 #16
0
    def deleteAppByAppId(self, appid):

        self.mAppController.deleteAppByAppId(appid)
        self.mPriceService.deletePriceByAppId(appid)

        self.logger.warning("deleteAppByAppId()删除app:" + appid)

        return Result(ResultEnum.SUCCESS)
예제 #17
0
    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)
예제 #18
0
    def unstarApp(self, app):
        app.setStar(0)
        self.mAppController.updateApp(app)
        self.logger.info("取消收藏app:" + app.getAppId())

        self.sortAppStar()

        return Result(ResultEnum.SUCCESS)
예제 #19
0
    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)
예제 #20
0
    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)
예제 #21
0
    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)
예제 #22
0
    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)
예제 #23
0
    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))
예제 #24
0
    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))
예제 #25
0
    def countPrices(self):
        res = self.mPriceService.countPrices()

        return Result(ResultEnum.SUCCESS, res.getData())
예제 #26
0
 def setLogger_Run(self, arg):
     self.logger.setRun(arg)
     self.mPriceService.setLogger_Run(arg)
     self.mConfigService.setLogger_Run(arg)
     return Result(ResultEnum.SUCCESS)
예제 #27
0
 def clearDataBase(self):
     self.logger.warning("清理数据库:")
     self.deleteAllApps()
     self.mPriceService.deleteAllPrices()
     return Result(ResultEnum.SUCCESS)
예제 #28
0
    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)
예제 #29
0
    def countCategory(self):
        res = self.mAppController.countCategory()

        return Result(ResultEnum.SUCCESS, res)
예제 #30
0
    def sumNewestPrices(self):
        res = self.mPriceService.sumNewestPrices()

        return Result(ResultEnum.SUCCESS, res.getData())