forked from free-lancers/electricity_bill_calc_service
		
	enhance(meter):户表表计管理功能增加缓存支持。
This commit is contained in:
		| @@ -1,11 +1,13 @@ | ||||
| package service | ||||
|  | ||||
| import ( | ||||
| 	"electricity_bill_calc/cache" | ||||
| 	"electricity_bill_calc/config" | ||||
| 	"electricity_bill_calc/excel" | ||||
| 	"electricity_bill_calc/global" | ||||
| 	"electricity_bill_calc/model" | ||||
| 	"fmt" | ||||
| 	"strconv" | ||||
|  | ||||
| 	mapset "github.com/deckarep/golang-set/v2" | ||||
| 	"github.com/samber/lo" | ||||
| @@ -18,7 +20,9 @@ type _Meter04kVService struct{} | ||||
| var Meter04kVService _Meter04kVService | ||||
|  | ||||
| func (_Meter04kVService) ListMeterDetail(park, keyword string, page int) ([]model.Meter04KV, int64, error) { | ||||
| 	cond := builder.NewCond() | ||||
| 	var condition = make([]string, 0) | ||||
| 	cond := builder.NewCond().And(builder.Eq{"park_id": park}) | ||||
| 	condition = append(condition, park, strconv.Itoa(page)) | ||||
| 	if len(keyword) > 0 { | ||||
| 		cond = cond.And( | ||||
| 			builder.Like{"address", keyword}. | ||||
| @@ -26,21 +30,38 @@ func (_Meter04kVService) ListMeterDetail(park, keyword string, page int) ([]mode | ||||
| 				Or(builder.Like{"code", keyword}). | ||||
| 				Or(builder.Like{"contact_name", keyword}). | ||||
| 				Or(builder.Like{"contact_phone", keyword})) | ||||
| 		condition = append(condition, keyword) | ||||
| 	} | ||||
| 	total, err := global.DBConn.Where(cond).Count(new(model.Meter04KV)) | ||||
| 	if err != nil { | ||||
| 		return make([]model.Meter04KV, 0), -1, err | ||||
| 	var ( | ||||
| 		total int64 | ||||
| 		err   error | ||||
| 	) | ||||
| 	if cachedTotal, _ := cache.RetreiveCount("meter_04kv", condition...); cachedTotal != -1 { | ||||
| 		total = cachedTotal | ||||
| 	} else { | ||||
| 		total, err = global.DBConn.Where(cond).NoAutoCondition().Count(new(model.Meter04KV)) | ||||
| 		if err != nil { | ||||
| 			return make([]model.Meter04KV, 0), -1, err | ||||
| 		} | ||||
| 		cache.CacheCount("meter_04kv", "meter_04kv", total, condition...) | ||||
| 	} | ||||
| 	var meters = make([]model.Meter04KV, 0) | ||||
| 	startItem := (page - 1) * config.ServiceSettings.ItemsPageSize | ||||
| 	if cachedMeters, _ := cache.RetreiveSearch[[]model.Meter04KV]("meter_04kv", condition...); cachedMeters != nil { | ||||
| 		return *cachedMeters, total, nil | ||||
| 	} | ||||
| 	err = global.DBConn. | ||||
| 		Where(cond). | ||||
| 		Limit(config.ServiceSettings.ItemsPageSize, startItem). | ||||
| 		Find(&meters) | ||||
| 	cache.CacheSearch(meters, "meter_04kv", "meter_04kv", condition...) | ||||
| 	return meters, total, err | ||||
| } | ||||
|  | ||||
| func (_Meter04kVService) Get04kVMeterDetail(park, code string) (*model.Meter04KV, error) { | ||||
| 	if cachedMeter, _ := cache.RetreiveEntity[model.Meter04KV]("meter_04kv", fmt.Sprintf("%s_%s", park, code)); cachedMeter != nil { | ||||
| 		return cachedMeter, nil | ||||
| 	} | ||||
| 	var meter = new(model.Meter04KV) | ||||
| 	has, err := global.DBConn.Where(builder.Eq{"code": code, "park_id": park}).NoAutoCondition().Get(meter) | ||||
| 	if err != nil { | ||||
| @@ -49,6 +70,7 @@ func (_Meter04kVService) Get04kVMeterDetail(park, code string) (*model.Meter04KV | ||||
| 	if !has { | ||||
| 		return nil, nil | ||||
| 	} | ||||
| 	cache.CacheEntity(meter, fmt.Sprintf("meter_04kv_%s_%s", park, code), "meter_04kv", fmt.Sprintf("%s_%s", park, code)) | ||||
| 	return meter, nil | ||||
| } | ||||
|  | ||||
| @@ -57,6 +79,7 @@ func (_Meter04kVService) insertNewMeter(tx *xorm.Session, meter model.Meter04KV) | ||||
| 	if err != nil { | ||||
| 		tx.Rollback() | ||||
| 	} | ||||
| 	cache.AbolishRelation("meter_04kv") | ||||
| 	return err | ||||
| } | ||||
|  | ||||
| @@ -69,6 +92,8 @@ func (_Meter04kVService) updateMeter(tx *xorm.Session, meter model.Meter04KV) er | ||||
| 	if err != nil { | ||||
| 		tx.Rollback() | ||||
| 	} | ||||
| 	cache.AbolishRelation("meter_04kv") | ||||
| 	cache.AbolishRelation(fmt.Sprintf("meter_04kv_%s_%s", meter.ParkId, meter.Code)) | ||||
| 	return err | ||||
| } | ||||
|  | ||||
| @@ -88,6 +113,8 @@ func (m _Meter04kVService) CreateSingleMeter(meter model.Meter04KV) error { | ||||
| 		tx.Rollback() | ||||
| 		return err | ||||
| 	} | ||||
| 	cache.AbolishRelation("meter_04kv") | ||||
| 	cache.AbolishRelation(fmt.Sprintf("meter_04kv_%s_%s", meter.ParkId, meter.Code)) | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| @@ -107,6 +134,8 @@ func (m _Meter04kVService) UpdateSingleMeter(meter *model.Meter04KV) error { | ||||
| 		tx.Rollback() | ||||
| 		return err | ||||
| 	} | ||||
| 	cache.AbolishRelation("meter_04kv") | ||||
| 	cache.AbolishRelation(fmt.Sprintf("meter_04kv_%s_%s", meter.ParkId, meter.Code)) | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| @@ -161,5 +190,6 @@ func (m _Meter04kVService) BatchCreateMeter(meters []model.Meter04KV) error { | ||||
| 		tx.Rollback() | ||||
| 		return err | ||||
| 	} | ||||
| 	cache.AbolishRelation("meter_04kv") | ||||
| 	return nil | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user