community/src/gonganxitong/goodslist.go
2024-12-09 12:24:45 +08:00

114 lines
4.3 KiB
Go

package gonganxitong
import (
"time"
"shylinux.com/x/ice"
kit "shylinux.com/x/toolkits"
"shylinux.com/x/community/src/api"
"shylinux.com/x/community/src/gonganxitong/model"
)
type goodslist struct {
Table
quotalist quotalist
spendlist spendlist
paymentlist paymentlist
order string `data:"91"`
auth string `data:"issued"`
fields string `data:"name,amount,title,content,user_uid"`
create string `name:"create name* amount* title* content*" role:"leader"`
remove string `name:"remove" role:"leader"`
request string `name:"request" help:"购买" style:"notice" role:"void"`
response string `name:"response" role:"void"`
}
func (s goodslist) AfterMigrate(m *ice.Message, arg ...string) {
s.Table.AfterMigrate(m, arg...)
if s.PrefixPortal(m) == api.RENZHENGSHOUQUAN_PORTAL {
s.insert(m, "service", "3-1", "1000", "基础版")
s.insert(m, "service", "3-2", "3000", "高级版")
s.insert(m, "service", "3-3", "5000", "旗舰版")
s.insert(m, "company", "4-1", "10000", "企业基础版")
s.insert(m, "company", "4-2", "30000", "企业高级版")
s.insert(m, "company", "4-3", "50000", "企业旗舰版")
s.insert(m, "school", "5-1", "10000", "教育基础版")
s.insert(m, "school", "5-2", "30000", "教育高级版")
s.insert(m, "school", "5-3", "50000", "教育旗舰版")
s.insert(m, "street", "6-1", "10000", "社区基础版")
s.insert(m, "street", "6-2", "30000", "社区高级版")
s.insert(m, "street", "6-3", "50000", "社区旗舰版")
}
}
func (s goodslist) Create(m *ice.Message, arg ...string) {
s.Insert(m, kit.Simple(s.TransPrice(m, arg, model.AMOUNT), m.OptionSimple(model.PLACE_UID, model.USER_UID))...)
s.RecordEventWithName(m, "")
}
func (s goodslist) List(m *ice.Message, arg ...string) {
if len(arg) == 1 {
if s.PrefixPortal(m) == api.RENZHENGSHOUQUAN_PORTAL {
msg := m.Cmd(api.RENZHENGSHOUQUAN_AUTH, s.Select, model.UID, arg[0])
switch kit.Int(msg.Append(model.AUTH_TYPE)) {
case 3:
s.Select(m, model.PLACE_UID, "service")
case 4:
s.Select(m, model.PLACE_UID, "company")
case 5:
s.Select(m, model.PLACE_UID, "school")
case 6:
s.Select(m, model.PLACE_UID, "street")
}
m.PushAction(s.Request).Action()
} else {
if s.IsLeader(m) {
s.Select(m, model.PLACE_UID, "service")
m.PushAction(s.Request).Action()
}
msg := s.Select(m.Spawn(), model.PLACE_UID, arg[0])
if s.IsLeader(m) {
msg.PushAction(s.Request, s.Remove).Action(s.Create)
} else {
msg.PushAction(s.Request).Action()
}
m.Copy(msg)
s.SelectJoinUser(m)
}
m.Display("")
} else if len(arg) == 2 {
m.Cmdy(s.Prefix(m, s.quotalist), s.Select, model.GOODSLIST_UID, arg[1])
m.EchoInfoButton("请购买会员", s.Request).Action()
m.Display("quotalist.js")
}
}
func (s goodslist) Request(m *ice.Message, arg ...string) {
if msg := s.Select(m.Spawn(), m.OptionSimple(model.UID)...); msg.IsErr() {
m.Copy(msg)
} else if _msg := m.Cmd(s.Prefix(m, s.paymentlist), s.Create, model.GOODSLIST_UID, m.Option(model.UID),
model.AMOUNT, kit.Float(msg.Append(model.AMOUNT))/100, msg.AppendSimple(model.TITLE, model.CONTENT)); _msg.IsErr() {
m.Copy(_msg)
} else {
m.Options(msg.AppendSimple(model.AMOUNT, model.TITLE, model.CONTENT))
m.Cmdy(s.Prefix(m, s.paymentlist), m.ActionKey(), m.PrefixKey(), "", m.Option(model.PLACE_UID), _msg.Result())
m.Push(model.PAYMENTLIST_UID, _msg.Result())
}
}
func (s goodslist) Response(m *ice.Message, arg ...string) {
if m.Cmdy(s.Prefix(m, s.paymentlist), m.ActionKey(), arg).IsErr() {
return
}
t := time.Now().AddDate(0, 1, 0)
msg := m.Cmd(s.Prefix(m, s.paymentlist), s.Select, model.UID, arg[1])
m.Cmd(s.Prefix(m, s.quotalist), s.Select, msg.AppendSimple(model.GOODSLIST_UID)).Table(func(value ice.Maps) {
m.Cmd(s.Prefix(m, s.spendlist), s.Insert, model.PLACE_UID, arg[0], msg.AppendSimple(model.USER_UID), model.PAYMENTLIST_UID, arg[1],
model.QUOTALIST_UID, value[model.UID], model.EXPIRE_TIME, t.Format(ice.MOD_TIME), model.VENDOR, value[model.VENDOR], model.TOTAL, value[model.TOTAL])
})
}
func init() { ice.TeamCtxCmd(goodslist{Table: newTable()}) }
func (s goodslist) insert(m *ice.Message, auth, level, amount string, arg ...string) {
s.Insert(m, model.UID, kit.Hashs(auth, level), model.PLACE_UID, auth, model.NAME, level,
model.AMOUNT, amount, model.TITLE, kit.Select("", arg, 0), model.CONTENT, kit.Select("", arg, 1))
}