package gongyinglian import ( "shylinux.com/x/ice" kit "shylinux.com/x/toolkits" "shylinux.com/x/enterprise/src/gongyinglian/model" "shylinux.com/x/enterprise/src/guanlixitong" ) type Table struct { guanlixitong.Table list string `name:"list store_uid uid auto" role:"void"` } func (s Table) Inputs(m *ice.Message, arg ...string) { switch arg[0] { case model.USER_STORE_ROLE: for k, v := range UserStoreRoleList { if k != UserStoreCreator && k != UserStoreVisitor { m.Push(arg[0], k).Push(model.NAME, v) } } m.SortInt(arg[0]).DisplayInputKeyNameIconTitle() case model.STORE_TYPE: for k, v := range StoreTypeList { m.Push(arg[0], k).Push(model.NAME, v) } m.SortInt(arg[0]).DisplayInputKeyNameIconTitle() case model.PRODUCT_TYPE: for k, v := range ProductTypeList { m.Push(arg[0], k).Push(model.NAME, v) } m.SortInt(arg[0]).DisplayInputKeyNameIconTitle() case model.FROM_STORE_UID, model.TO_STORE_UID: m.Cmdy(userStore{}, m.Option(model.USER_UID)).Cut(model.STORE_UID, model.STORE_NAME).DisplayInputKeyNameIconTitle() m.RenameAppend(model.STORE_UID, arg[0]) case model.COMPANY_UID: m.Cmdy(guanlixitong.Company{}, s.Select).Cut(model.UID, model.NAME).DisplayInputKeyNameIconTitle() m.RenameAppend(model.UID, arg[0]) default: s.Table.Inputs(m, arg...) } } func (s Table) RewriteAppend(m *ice.Message, arg ...string) *ice.Message { m.RewriteAppend(func(value, key string, index int) string { kit.If(key == model.USER_STORE_ROLE, func() { value = UserStoreRole(kit.Int(value)).String() }) kit.If(key == model.STORE_TYPE, func() { value = StoreType(kit.Int(value)).String() }) kit.If(key == model.PRODUCT_TYPE, func() { value = ProductType(kit.Int(value)).String() }) kit.If(key == model.ORDER_TYPE, func() { value = OrderType(kit.Int(value)).String() }) kit.If(key == model.ORDER_STATUS, func() { value = OrderStatus(kit.Int(value)).String() }) kit.If(key == model.PAYMENT_STATUS, func() { value = PaymentStatus(kit.Int(value)).String() }) kit.If(key == model.EXPRESS_STATUS, func() { value = ExpressStatus(kit.Int(value)).String() }) kit.If(key == model.RETURN_STATUS, func() { value = ReturnStatus(kit.Int(value)).String() }) kit.If(key == model.REFUND_STATUS, func() { value = RefundStatus(kit.Int(value)).String() }) kit.If(key == model.PRICE, func() { value = kit.Format("%0.2f", float64(kit.Int(value))/100) }) kit.If(key == model.AMOUNT, func() { value = kit.Format("%0.2f", float64(kit.Int(value))/100) }) return value }) return s.Table.RewriteAppend(m) } func (s Table) CheckRole(m *ice.Message, arg ...string) *ice.Message { role := UserStoreRole(kit.Int(m.Cmd(userStore{}, s.Select, m.OptionSimple(model.STORE_UID, model.USER_UID)).Append(model.ROLE))) m.WarnNotRight(!kit.IsIn(role.String(), append(arg, UserStoreCreator.String())...), role.String()) return m } func (s Table) checkRole(m *ice.Message, arg ...UserStoreRole) bool { kit.If(len(arg) == 0, func() { arg = append(arg, UserStoreBoss) }) if msg := m.Cmd(userStore{}, s.Select, m.OptionSimple(model.STORE_UID, model.USER_UID)); msg.Length() > 0 { role := UserStoreRole(kit.Int(msg.Append(model.ROLE))) for _, v := range append(arg, UserStoreCreator) { if role == v { return true } } } return !m.WarnNotRight(true) } func (s Table) userStoreRole(m *ice.Message, arg ...string) UserStoreRole { msg := m.Cmd(userStore{}, s.Select, model.STORE_UID, arg[0], model.USER_UID, m.Option(model.USER_UID)) if msg.Length() > 0 { return UserStoreRole(kit.Int(msg.Append(model.ROLE))) } else { return -1 } } func (s Table) checkOrderRole(m *ice.Message, arg ...string) bool { user_uid := m.Option(model.USER_UID) msg := s.Select(m.Spawn(), "(from_store_uid = ? OR to_store_uid = ?) AND uid = ?", arg[0], arg[0], arg[1]) if msg.Append(model.FROM_USER_UID) != "" && msg.Append(model.TO_USER_UID) != "" && user_uid != msg.Append(model.FROM_USER_UID) && user_uid != msg.Append(model.TO_USER_UID) { return false } return true } func (s Table) recordEvent(m *ice.Message, info string, arg ...string) { s.Table.RecordEvent(m, m.Option(model.STORE_UID), info, kit.Select(m.Option(model.UID), arg, 0)) } func (s Table) recordEventWithUID(m *ice.Message, info string, arg ...string) { uid := kit.Select(m.Result(), m.Option(model.UID)) kit.If(info == "", func() { info = m.ActionCmdTitle() }) s.recordEvent(m, kit.JoinWord(info, kit.Cut(uid, 6), m.Option(model.NAME)), uid) } type Tables struct{ Table } func (s Tables) BeforeMigrate(m *ice.Message, arg ...string) {} func newTable() Table { return Table{Table: guanlixitong.NewTable(userStore{}, store{})} }