This commit is contained in:
wh_zcy 2023-05-25 13:42:42 +08:00
parent bbf8a2d57c
commit f375b528eb
4 changed files with 58 additions and 44 deletions

View File

@ -15,6 +15,7 @@ import (
"path/filepath" "path/filepath"
"strings" "strings"
"sync" "sync"
"sync/atomic"
cfg "go_dreamfactory/sys/configure/structs" cfg "go_dreamfactory/sys/configure/structs"
@ -29,7 +30,7 @@ import (
type RtaskTestView struct { type RtaskTestView struct {
BaseformView BaseformView
itemList *common.ItemList itemList *common.ItemList
resultCount int //结果条数 resultCount int32 //结果条数
resultChan chan string //结果内容 resultChan chan string //结果内容
flag bool flag bool
msgs []string msgs []string
@ -103,7 +104,6 @@ func (this *RtaskTestView) CreateView(t *model.TestCase) fyne.CanvasObject {
if tb, err := cfg.NewTables(commCfg.Loader); err == nil { if tb, err := cfg.NewTables(commCfg.Loader); err == nil {
for _, v := range tb.RdtaskCondi.GetDataList() { for _, v := range tb.RdtaskCondi.GetDataList() {
wg.Add(1) wg.Add(1)
this.resultCount++
params := []int32{v.Data1, v.Data2, v.Data3, v.Data4, v.Data5} params := []int32{v.Data1, v.Data2, v.Data3, v.Data4, v.Data5}
var p []int32 var p []int32
for _, v := range params { for _, v := range params {
@ -128,38 +128,46 @@ func (this *RtaskTestView) CreateView(t *model.TestCase) fyne.CanvasObject {
// msgs = append(msgs, fmt.Sprintf("condId:%v rtype:%v params:%v", condId, rtype, p)) // msgs = append(msgs, fmt.Sprintf("condId:%v rtype:%v params:%v", condId, rtype, p))
}(v.Id, v.Type, p) }(v.Id, v.Type, p)
wg.Wait() wg.Wait()
// time.Sleep(time.Millisecond * 100)
} }
} }
go func() { go func() {
for msg := range this.resultChan { for msg := range this.resultChan {
// logrus.Debug("add msg")
this.msgs = append(this.msgs, msg) this.msgs = append(this.msgs, msg)
// old := atomic.LoadInt32(&this.resultCount)
// n := old - 1
// if atomic.CompareAndSwapInt32(&this.resultCount, old, n) {
// break
// }
} }
}() }()
go func() { go func() {
var flag bool var flag bool
for this.resultCount == 0 && flag { for !flag {
logrus.Debug("结束") count := atomic.LoadInt32(&this.resultCount)
logrus.Debug("count:", count)
if count == 100 {
logrus.Debug("结束")
record := strings.Join(this.msgs, "\n")
var buf bytes.Buffer
buf.WriteString(fmt.Sprintf("---任务参数测试报告---\n"))
buf.WriteString(record)
buf.WriteString("\n-------")
record := strings.Join(this.msgs, "\n") file, err := os.OpenFile(filepath.Join(this.reportPath, "report.txt"), os.O_TRUNC|os.O_CREATE, os.ModePerm)
var buf bytes.Buffer if err != nil {
buf.WriteString(fmt.Sprintf("---任务参数测试报告---\n")) logrus.Error(err)
buf.WriteString(record) }
buf.WriteString("\n-------") defer file.Close()
file, err := os.OpenFile(filepath.Join(this.reportPath, "report.txt"), os.O_TRUNC|os.O_CREATE, os.ModePerm) if _, err := file.WriteString(buf.String()); err != nil {
if err != nil { logrus.Error(err)
logrus.Error(err) }
flag = true
} }
defer file.Close()
if _, err := file.WriteString(buf.String()); err != nil {
logrus.Error(err)
}
flag = true
} }
}() }()
} }
@ -223,12 +231,12 @@ func (this *RtaskTestView) rtestListener() {
return return
} }
// if !rsp.Flag {
msg := fmt.Sprintf("%v - %v", rsp.RtaskType, rsp.Flag) msg := fmt.Sprintf("%v - %v", rsp.RtaskType, rsp.Flag)
this.resultChan <- msg this.resultChan <- msg
this.resultCount-- atomic.AddInt32(&this.resultCount, 1)
// }
logrus.Debug("resp", msg)
} }
}, },
}) })

View File

@ -13,7 +13,7 @@ func (this *apiComp) RtestCheck(session comm.IUserSession, req *pb.RtaskTestReq)
} }
func (this *apiComp) Rtest(session comm.IUserSession, req *pb.RtaskTestReq) (code pb.ErrorCode, data *pb.ErrorData) { func (this *apiComp) Rtest(session comm.IUserSession, req *pb.RtaskTestReq) (code pb.ErrorCode, data *pb.ErrorData) {
rsp := &pb.RtaskTestResp{Flag: true} rsp := &pb.RtaskTestResp{Flag: true,RtaskType: req.RtaskType}
if req.CondiId != 0 { if req.CondiId != 0 {
if code = this.moduleRtask.CheckCondi(session.GetUserId(), req.CondiId); code != pb.ErrorCode_Success { if code = this.moduleRtask.CheckCondi(session.GetUserId(), req.CondiId); code != pb.ErrorCode_Success {
rsp.Flag = false rsp.Flag = false
@ -44,7 +44,6 @@ func (this *apiComp) Rtest(session comm.IUserSession, req *pb.RtaskTestReq) (cod
} }
this.moduleRtask.modelRtask.Change(rtask.Uid, update) this.moduleRtask.modelRtask.Change(rtask.Uid, update)
} else { } else {
this.moduleRtask.TriggerTask(session.GetUserId(), &comm.TaskParam{ this.moduleRtask.TriggerTask(session.GetUserId(), &comm.TaskParam{
TT: comm.TaskType(req.RtaskType), TT: comm.TaskType(req.RtaskType),

View File

@ -303,17 +303,17 @@ func (this *ModuleRtask) processOneTask(session comm.IUserSession, rtaskType com
} }
} }
condIds = append(condIds, handle.condId) condIds = append(condIds, handle.condId)
update := map[string]interface{}{
"vals": record.Vals,
}
this.modelRtaskRecord.Change(uid, update)
} }
} }
} }
update := map[string]interface{}{
"vals": record.Vals,
}
this.modelRtaskRecord.Change(uid, update)
for _, condId := range condIds { for _, condId := range condIds {
if code = this.CheckCondi(uid, condId, params...); code == pb.ErrorCode_Success { if code = this.CheckCondi(uid, condId, params...); code == pb.ErrorCode_Success {
module, err := this.service.GetModule(comm.ModuleWorldtask) module, err := this.service.GetModule(comm.ModuleWorldtask)
@ -392,6 +392,13 @@ func (this *ModuleRtask) CheckCondi(uid string, condiId int32, params ...int32)
code = pb.ErrorCode_DataNotFound code = pb.ErrorCode_DataNotFound
return return
} }
if len(params) == 0 {
if v, ok := record.Vals[condiId]; ok {
for _, p := range v.Data {
params = append(params, p)
}
}
}
if _, ok := this.modelRtask.checkCondi(uid, condiId, record, params...); !ok { if _, ok := this.modelRtask.checkCondi(uid, condiId, record, params...); !ok {
code = pb.ErrorCode_RtaskCondiNoReach code = pb.ErrorCode_RtaskCondiNoReach
return return

View File

@ -14,19 +14,10 @@ import (
// five params (1-GreatEqual 2-equal 3-equal 4-equal 5-equal) // five params (1-GreatEqual 2-equal 3-equal 4-equal 5-equal)
func (this *ModelRtaskRecord) verifyGreatEqual(uid string, record *pb.DBRtaskRecord, cfg *cfg.GameRdtaskCondiData, params ...int32) (ok bool, count int32, err error) { func (this *ModelRtaskRecord) verifyGreatEqual(uid string, record *pb.DBRtaskRecord, cfg *cfg.GameRdtaskCondiData, params ...int32) (ok bool, count int32, err error) {
if record == nil { if len(params) == 0 {
err = errors.WithMessagef(err, "玩家数据DBRtaskRecord空") err = errors.New("玩家参数数据缺失")
return return
} }
if v, f := record.Vals[cfg.Id]; f {
if len(v.Data) == 0 {
err = errors.WithMessagef(err, "玩家参数数据缺失 %v", v.Data)
return
}
params = toArr(v.Data)
}
var paramLen int var paramLen int
if paramLen, err = lenParam(cfg, params...); err == nil { if paramLen, err = lenParam(cfg, params...); err == nil {
//参数比较,默认第一个参数soGreateEqual,其它soEqual //参数比较,默认第一个参数soGreateEqual,其它soEqual
@ -88,9 +79,7 @@ func (this *ModelRtaskRecord) verifyGreatEqual(uid string, record *pb.DBRtaskRec
// firstParam (first-Equal) // firstParam (first-Equal)
func (this *ModelRtaskRecord) verifyFirstEqualParam(uid string, record *pb.DBRtaskRecord, cfg *cfg.GameRdtaskCondiData, params ...int32) (ok bool, count int32, err error) { func (this *ModelRtaskRecord) verifyFirstEqualParam(uid string, record *pb.DBRtaskRecord, cfg *cfg.GameRdtaskCondiData, params ...int32) (ok bool, count int32, err error) {
if len(params) == 1 { if len(params) == 1 {
ok, err = soEqual(params[0], cfg.Data1) ok, err = soEqual(params[0], cfg.Data1)
} }
@ -107,7 +96,10 @@ func (this *ModelRtaskRecord) verifyFirstGreatEqualParam(uid string, record *pb.
// three params (first-greatEqual second-equal third-lessEqual) // three params (first-greatEqual second-equal third-lessEqual)
func (this *ModelRtaskRecord) verifyThirdLessEqualParam(uid string, record *pb.DBRtaskRecord, cfg *cfg.GameRdtaskCondiData, params ...int32) (ok bool, count int32, err error) { func (this *ModelRtaskRecord) verifyThirdLessEqualParam(uid string, record *pb.DBRtaskRecord, cfg *cfg.GameRdtaskCondiData, params ...int32) (ok bool, count int32, err error) {
if len(params) == 0 {
err = errors.New("玩家参数数据缺失")
return
}
var paramLen int var paramLen int
if paramLen, err = lenParam(cfg, params...); err == nil { if paramLen, err = lenParam(cfg, params...); err == nil {
//参数比较,默认第一个参数soGreateEqual,其它soEqual //参数比较,默认第一个参数soGreateEqual,其它soEqual
@ -139,6 +131,10 @@ func (this *ModelRtaskRecord) verifyThirdLessEqualParam(uid string, record *pb.D
// three params (first-greatEqual second-equal third-greatEqual) // three params (first-greatEqual second-equal third-greatEqual)
func (this *ModelRtaskRecord) verifyThirdGreatEqualParam(uid string, record *pb.DBRtaskRecord, cfg *cfg.GameRdtaskCondiData, params ...int32) (ok bool, count int32, err error) { func (this *ModelRtaskRecord) verifyThirdGreatEqualParam(uid string, record *pb.DBRtaskRecord, cfg *cfg.GameRdtaskCondiData, params ...int32) (ok bool, count int32, err error) {
if len(params) == 0 {
err = errors.New("玩家参数数据缺失")
return
}
var paramLen int var paramLen int
if paramLen, err = lenParam(cfg, params...); err == nil { if paramLen, err = lenParam(cfg, params...); err == nil {
//参数比较,默认第一个参数soGreateEqual,其它soEqual //参数比较,默认第一个参数soGreateEqual,其它soEqual
@ -170,6 +166,10 @@ func (this *ModelRtaskRecord) verifyThirdGreatEqualParam(uid string, record *pb.
// two params(first-Great second-Equal) // two params(first-Great second-Equal)
func (this *ModelRtaskRecord) veriftyFirstGreatParam(uid string, record *pb.DBRtaskRecord, cfg *cfg.GameRdtaskCondiData, params ...int32) (ok bool, count int32, err error) { func (this *ModelRtaskRecord) veriftyFirstGreatParam(uid string, record *pb.DBRtaskRecord, cfg *cfg.GameRdtaskCondiData, params ...int32) (ok bool, count int32, err error) {
if len(params) == 0 {
err = errors.New("玩家参数数据缺失")
return
}
var paramLen int var paramLen int
if paramLen, err = lenParam(cfg, params...); err == nil { if paramLen, err = lenParam(cfg, params...); err == nil {
//参数比较,默认第一个参数soGreateEqual,其它soEqual //参数比较,默认第一个参数soGreateEqual,其它soEqual