package service import ( "fmt" "log" "points_service/entity" "time" ) type IntegralService struct{} //消耗积分流水 func(service *IntegralService) IntegralConsumeService(data entity.FlowJSON) (int,string) { orm := entity.Engine flow := entity.Flow{} flow.UserId = data.UserId flow.PointType = data.PointType flow.BusinessTypeId = data.BusinessTypeId flow.BusinessType = data.BusinessType flow.Point = data.Point flow.CreateTime = time.Now().Format("2006-01-02 15:04:05") flow.EndDate = data.EndDate flow.AppId = data.AppId //判断是否为消耗积分:false if !data.Sort { //查询积分余额是否充足 balance := entity.Balance{} balance.UserId = data.UserId balance.AppId = data.AppId b,err := orm.Table("integral_balance").Select("countPoints"). Where("userId = ? AND appId = ?",data.UserId,data.AppId). Get(&balance) if !b || err != nil { log.Printf("积分余额查询出错,userId:[%s],err:[%v]", data.UserId, err) return entity.ErrorCode,"积分余额不足" } if balance.CountPoints 0 { log.Println("积分记录成功-积分增减类型:",data.Sort) return entity.SuccessCode,"积分记录成功" } return entity.SuccessCode,"积分记录成功" } //到期积分查询 func(service *IntegralService) IntegralExpireCheckService(data entity.ExpireJSON) []entity.Flow { orm := entity.Engine var flow []entity.Flow var err error point := "" if data.PointType != 0 { point = "AND pointType = "+fmt.Sprint(data.PointType)+"" } err = orm.Table("integral_flow"). Select("id,pointType,SUM(point) AS point"). Where("userId = ? AND appId = ? AND endDate < ? "+point+"", data.UserId,data.AppId,data.EndDate). GroupBy("pointType"). Find(&flow) if err != nil { log.Println(err) return nil } return flow } //积分守护 func(service *IntegralService) IntegralGuardService(data entity.ExpireJSON) []entity.Flow { orm := entity.Engine var flow []entity.Flow var err error point := "" if data.PointType != 0 { point = "AND pointType = "+fmt.Sprint(data.PointType)+"" } err = orm.Table("integral_flow"). Select("id,pointType,SUM(point) AS point"). Where("userId = ? AND appId = ? AND endDate < ? "+point+"", data.UserId,data.AppId,data.EndDate). GroupBy("pointType"). Find(&flow) if err != nil { log.Println(err) return nil } return flow }