feat:完善项目信息

This commit is contained in:
henry
2022-01-13 17:48:41 +08:00
parent 4637a5fb4b
commit 27cb063a6c
11 changed files with 85 additions and 79 deletions

View File

@ -45,6 +45,12 @@ type (
}
)
func (c *Instance) checkIsExist(iModel model2.IModel, where ...*model2.ModelWhere) (bool, error) {
var count int64
err := model2.Count(iModel, &count, where...)
return count > 0, err
}
// Index 首页列表信息
func (c *Instance) Index(name string, page, pageSize int) (*controller.ReturnPages, error) {
mSysTenant := model.NewSysTenant()
@ -110,6 +116,8 @@ func (c *Instance) Select() (map[string]*InstanceSelectInfo, error) {
func (c *Instance) Form(params *InstanceParams) error {
mSysTenant := model.NewSysTenant()
isExist := false
if params.ID > 0 {
mSysTenant.ID = params.ID
@ -122,7 +130,12 @@ func (c *Instance) Form(params *InstanceParams) error {
}
if mSysTenant.Province != params.Area.Province || mSysTenant.City != params.Area.City {
// TODO:查询区域是否存在租户平台
if isExist, err = c.checkIsExist(mSysTenant.SysTenant, model2.NewWhere("province", params.Area.Province),
model2.NewWhere("city", params.Area.City)); err != nil {
return err
} else if isExist {
return errors.New("操作错误,该区域下已存在平台信息")
}
}
}
mSysTenant.Name = params.Name
@ -137,10 +150,21 @@ func (c *Instance) Form(params *InstanceParams) error {
if mSysTenant.ID > 0 {
return model2.Updates(mSysTenant.SysTenant, mSysTenant.SysTenant)
}
if !utils.ValidateUrl(params.Domain) {
return errors.New("操作错误,域名地址信息错误")
}
mSysTenant.Key = utils.GetRandomString(12)
mSysTenant.Domain = params.Domain
if err := model2.Create(mSysTenant.SysTenant); err != nil {
var err error
if isExist, err = c.checkIsExist(mSysTenant.SysTenant, model2.NewWhere("province", params.Area.Province),
model2.NewWhere("city", params.Area.City)); err != nil {
return err
} else if isExist {
return errors.New("操作错误,该区域下已存在平台信息")
}
if err = model2.Create(mSysTenant.SysTenant); err != nil {
return err
}
_session := session.NewTenant()

View File

@ -18,8 +18,7 @@ func (*Activity) Applys(c *gin.Context) {
api.APIFailure(err.(error))(c)
return
}
data, err := activity.NewApply()(api.GetSession()(c).(*session.Enterprise), api.GetTenantID()(c).(string)).
List(form.Title, form.Page, form.PageSize)
data, err := activity.NewApply()(api.GetSession()(c).(*session.Enterprise)).Instance(form.Title, form.Page, form.PageSize)
api.APIResponse(err, data)(c)
}
@ -39,11 +38,10 @@ func (*Activity) ApplyLaunch(c *gin.Context) {
api.APIFailure(err.(error))(c)
return
}
err := activity.NewApply()(api.GetSession()(c).(*session.Enterprise), api.GetTenantID()(c).(string)).
Launch(&activity.ApplyLaunchParams{
Mode: form.Mode, MaxNUmber: form.MaxNumber, Title: form.Title, Amount: form.Amount, Content: form.Content,
BeginAt: form.BeginAt, FinishAt: form.FinishAt, JoinDeadline: form.JoinDeadline,
})
err := activity.NewApply()(api.GetSession()(c).(*session.Enterprise)).Launch(&activity.ApplyLaunchParams{
Mode: form.Mode, MaxNUmber: form.MaxNumber, Title: form.Title, Amount: form.Amount, Content: form.Content,
BeginAt: form.BeginAt, FinishAt: form.FinishAt, JoinDeadline: form.JoinDeadline,
})
api.APIResponse(err)(c)
}
@ -54,8 +52,7 @@ func (*Activity) ApplyRevoke(c *gin.Context) {
api.APIFailure(err.(error))(c)
return
}
err := activity.NewApply()(api.GetSession()(c).(*session.Enterprise), api.GetTenantID()(c).(string)).
Revoke(form.Convert())
err := activity.NewApply()(api.GetSession()(c).(*session.Enterprise)).Revoke(form.Convert())
api.APIResponse(err)(c)
}
@ -66,8 +63,7 @@ func (*Activity) ApplyDelete(c *gin.Context) {
api.APIFailure(err.(error))(c)
return
}
err := activity.NewApply()(api.GetSession()(c).(*session.Enterprise), api.GetTenantID()(c).(string)).
Delete(form.Convert())
err := activity.NewApply()(api.GetSession()(c).(*session.Enterprise)).Delete(form.Convert())
api.APIResponse(err)(c)
}
@ -81,8 +77,7 @@ func (*Activity) Joins(c *gin.Context) {
api.APIFailure(err.(error))(c)
return
}
data, err := activity.NewInstance()(api.GetSession()(c).(*session.Enterprise), api.GetTenantID()(c).(string)).
Joins(form.Title, form.Status, form.Page, form.PageSize)
data, err := activity.NewInstance()(api.GetSession()(c).(*session.Enterprise)).Joins(form.Title, form.Status, form.Page, form.PageSize)
api.APIResponse(err, data)(c)
}
@ -93,7 +88,6 @@ func (*Activity) JoinDelete(c *gin.Context) {
api.APIFailure(err.(error))(c)
return
}
err := activity.NewInstance()(api.GetSession()(c).(*session.Enterprise), api.GetTenantID()(c).(string)).
JoinDelete(form.Convert())
err := activity.NewInstance()(api.GetSession()(c).(*session.Enterprise)).JoinDelete(form.Convert())
api.APIResponse(err)(c)
}

View File

@ -12,10 +12,9 @@ import (
type Apply struct {
*session.Enterprise
local string
}
type ApplyHandle func(session *session.Enterprise, local string) *Apply
type ApplyHandle func(session *session.Enterprise) *Apply
type (
// ApplyLaunchParams 参数信息
@ -28,18 +27,18 @@ type (
)
// List 列表信息
func (c *Apply) List(title string, page, pageSize int) (*controller.ReturnPages, error) {
func (c *Apply) Instance(title string, page, pageSize int) (*controller.ReturnPages, error) {
mActivityApply := model.NewActivityApply()
out := make([]*model2.ActivityApply, 0)
where := []*model2.ModelWhereOrder{
&model2.ModelWhereOrder{
Where: model2.NewWhere("local", c.local),
Where: model2.NewWhere("uid", c.UID),
Order: model2.NewOrder("id", model2.OrderModeToDesc),
},
&model2.ModelWhereOrder{
Where: model2.NewWhere("identity_uid", c.IdentityUID),
Where: model2.NewWhere("identity", c.SelectIdentity),
},
}
if title != "" {
@ -79,7 +78,7 @@ func (c *Apply) Revoke(id uint64) error {
mActivityApply := model.NewActivityApply()
mActivityApply.ID = id
isExist, err := model2.FirstField(mActivityApply.ActivityApply, []string{"id", "identity_uid", "status"})
isExist, err := model2.FirstField(mActivityApply.ActivityApply, []string{"id", "uid", "status"})
if err != nil {
return err
@ -88,7 +87,7 @@ func (c *Apply) Revoke(id uint64) error {
} else if mActivityApply.Status != model2.ActivityApplyStatusForProcessing {
return errors.New("操作错误,当前活动状态易发生变化,不可撤销")
} else if mActivityApply.UID != c.UID {
return errors.New("无权限操作")
return errors.New("操作错误,无权限操作")
}
return model2.Updates(mActivityApply.ActivityApply, map[string]interface{}{
"status": model2.ActivityApplyStatusForRevoke, "updated_at": time.Now(),
@ -100,23 +99,20 @@ func (c *Apply) Delete(id uint64) error {
mActivityApply := model.NewActivityApply()
mActivityApply.ID = id
isExist, err := model2.FirstField(mActivityApply.ActivityApply, []string{"id", "identity_uid"})
isExist, err := model2.FirstField(mActivityApply.ActivityApply, []string{"id", "uid"})
if err != nil {
return err
} else if !isExist {
return errors.New("操作错误,活动信息不存在或已被删除")
} else if mActivityApply.UID != c.IdentityUID {
return errors.New("无权限操作")
return errors.New("操作错误,无权限操作")
}
return model2.Delete(mActivityApply.ActivityApply)
}
func NewApply() ApplyHandle {
return func(session *session.Enterprise, local string) *Apply {
return &Apply{
Enterprise: session,
local: local,
}
return func(session *session.Enterprise) *Apply {
return &Apply{session}
}
}

View File

@ -10,10 +10,9 @@ import (
type Instance struct {
*session.Enterprise
local string
}
type InstanceHandle func(session *session.Enterprise, local string) *Instance
type InstanceHandle func(session *session.Enterprise) *Instance
type InstanceForJoin struct {
*model.ActivityInstanceJoinInfo
@ -25,9 +24,8 @@ func (c *Instance) Joins(title string, status, page, pageSize int) (*controller.
mActivityInstance := model.NewActivityInstance()
where := []*model2.ModelWhere{
model2.NewWhere("a.local", c.local),
model2.NewWhere("a.identity", c.Identity),
model2.NewWhere("j.m_uid", c.UID),
model2.NewWhere("j.identity", c.SelectIdentity),
model2.NewWhere("j.uid", c.UID),
}
if title != "" {
@ -73,7 +71,7 @@ func (c *Instance) JoinDelete(id uint64) error {
}
func NewInstance() InstanceHandle {
return func(session *session.Enterprise, local string) *Instance {
return &Instance{Enterprise: session, local: local}
return func(session *session.Enterprise) *Instance {
return &Instance{Enterprise: session}
}
}

View File

@ -18,7 +18,7 @@ func (*Activity) Instance(c *gin.Context) {
api.APIFailure(err.(error))(c)
return
}
data, err := controller.NewActivity()(nil, "").Instance(form.Title, form.Mode, form.Page, form.PageSize)
data, err := controller.NewActivity()(getSession(c)).Instance(form.Title, form.Mode, form.Page, form.PageSize)
api.APIResponse(err, data)(c)
}
@ -30,7 +30,7 @@ func (*Activity) Detail(c *gin.Context) {
api.APIFailure(err.(error))(c)
return
}
data, err := controller.NewActivity()(nil, "").Detail(form.Convert())
data, err := controller.NewActivity()(getSession(c)).Detail(form.Convert())
api.APIResponse(err, data)(c)
}
@ -42,6 +42,6 @@ func (*Activity) Join(c *gin.Context) {
api.APIFailure(err.(error))(c)
return
}
err := controller.NewActivity()(nil, "").Join(form.Convert())
err := controller.NewActivity()(getSession(c)).Join(form.Convert())
api.APIResponse(err)(c)
}

View File

@ -12,10 +12,9 @@ import (
type Activity struct {
*session.Enterprise
local string
}
type ActivityHandle func(session *session.Enterprise, local string) *Activity
type ActivityHandle func(session *session.Enterprise) *Activity
type (
// ActivityInfo 活动信息
@ -38,11 +37,6 @@ func (c *Activity) Instance(title string, mode, page, pageSize int) (*controller
var count int64
var identityUID uint64
if c.Enterprise != nil {
identityUID = c.IdentityUID
}
where := make([]*model2.ModelWhere, 0)
if title != "" {
@ -51,7 +45,7 @@ func (c *Activity) Instance(title string, mode, page, pageSize int) (*controller
if mode > 0 {
where = append(where, model2.NewWhere("a.mode", mode))
}
out, err := mActivityInstance.Activity(identityUID, page, pageSize, &count)
out, err := mActivityInstance.Activity(c.UID, c.SelectIdentity, page, pageSize, &count)
if err != nil {
return nil, err
@ -61,9 +55,7 @@ func (c *Activity) Instance(title string, mode, page, pageSize int) (*controller
for _, v := range out {
list = append(list, &ActivityInfo{
ID: v.GetEncodeID(),
ActivityInstanceInfo: v,
JoinStatus: v.JoinID > 0,
ID: v.GetEncodeID(), ActivityInstanceInfo: v, JoinStatus: v.JoinID > 0,
})
}
return &controller.ReturnPages{Data: list, Count: count}, nil
@ -73,12 +65,7 @@ func (c *Activity) Instance(title string, mode, page, pageSize int) (*controller
func (c *Activity) Detail(id uint64) (*ActivityDetail, error) {
mActivityInstance := model.NewActivityInstance()
var identityUID uint64
if c.Enterprise != nil {
identityUID = c.IdentityUID
}
out, err := mActivityInstance.Detail(id, identityUID)
out, err := mActivityInstance.Detail(id, c.UID, c.SelectIdentity)
if err != nil {
return nil, err
@ -107,10 +94,14 @@ func (c *Activity) Join(id uint64) error {
if !mActivityInstance.IsCanJoin() {
return errors.New("操作错误,当前活动信息不可报名")
}
if c.SelectIdentity <= 0 {
return errors.New("操作错误,当前未选择任何身份信息")
}
// 查看当前活动是否报名
var count int64
if err = model2.Count(model.NewActivityJoin().ActivityJoin, &count, model2.NewWhere("identity_id", c.IdentityUID),
if err = model2.Count(model.NewActivityJoin().ActivityJoin, &count, model2.NewWhere("id", c.UID),
model2.NewWhere("identity", c.SelectIdentity),
model2.NewWhere("activity_id", id), model2.NewWhere("status", model2.ActivityJoinStatusForSuccess)); err != nil {
return err
}
@ -118,16 +109,13 @@ func (c *Activity) Join(id uint64) error {
return errors.New("操作错误,不可重复报名")
}
if mActivityInstance.Amount <= 0 {
service.Publish(config.EventForActivityJoinProduce, c.IdentityUID, c.UID)
service.Publish(config.EventForActivityJoinProduce, id, c.UID, c.SelectIdentity)
}
return nil
}
func NewActivity() ActivityHandle {
return func(session *session.Enterprise, local string) *Activity {
return &Activity{
Enterprise: session,
local: local,
}
return func(session *session.Enterprise) *Activity {
return &Activity{session}
}
}

View File

@ -29,14 +29,14 @@ type (
)
// Activity 活动信息
func (m *ActivityInstance) Activity(uid uint64, page, pageSize int, count *int64, where ...*model.ModelWhere) ([]*ActivityInstanceInfo, error) {
func (m *ActivityInstance) Activity(uid uint64, identity, page, pageSize int, count *int64, where ...*model.ModelWhere) ([]*ActivityInstanceInfo, error) {
mActivityJoin := model.NewActivityJoin()
db := orm.GetDB().Table(m.TableName()+" AS a").
Select("a.id", "a.title", "a.image", "a.begin_at", "a.finish_at", "a.join_deadline",
"IFNULL(u.id, 0) AS join_id", "j.count AS join_count").
Joins(fmt.Sprintf("LEFT JOIN %s u ON a.id = u.activity_id AND u.identity_uid = %d AND u.status = %d AND u.is_deleted = %d",
mActivityJoin.TableName(), uid, model.ActivityJoinStatusForSuccess, model.DeleteStatusForNot)).
Joins(fmt.Sprintf("LEFT JOIN %s u ON a.id = u.activity_id AND u.uid = %d AND u.identity = %d AND u.status = %d AND u.is_deleted = %d",
mActivityJoin.TableName(), uid, identity, model.ActivityJoinStatusForSuccess, model.DeleteStatusForNot)).
Joins(fmt.Sprintf("LEFT JOIN (SELECT activity_id, COUNT(id) AS count FROM %s WHERE status = %d AND is_deleted = %d GROUP BY activity_id) AS j ON a.id = j.activity_id",
mActivityJoin.TableName(), model.ActivityJoinStatusForSuccess, model.DeleteStatusForNot)).
Where("a.status = ?", model.ActivityInstanceStatusForShow).
@ -59,14 +59,14 @@ func (m *ActivityInstance) Activity(uid uint64, page, pageSize int, count *int64
}
// Detail 详细信息
func (m *ActivityInstance) Detail(id, uid uint64) (*ActivityInstanceDetail, error) {
func (m *ActivityInstance) Detail(id, uid uint64, identity int) (*ActivityInstanceDetail, error) {
mActivityJoin := model.NewActivityJoin()
db := orm.GetDB().Table(m.TableName()+" AS a").
Select("a.id", "a.title", "a.image", "a.begin_at", "a.finish_at", "a.join_deadline",
"IFNULL(u.id, 0) AS join_id", "j.count AS join_count").
Joins(fmt.Sprintf("LEFT JOIN %s u ON a.id = u.activity_id AND u.identity_uid = %d AND u.status = %d AND u.is_deleted = %d",
mActivityJoin.TableName(), uid, model.ActivityJoinStatusForSuccess, model.DeleteStatusForNot)).
Joins(fmt.Sprintf("LEFT JOIN %s u ON a.id = u.activity_id AND u.uid = %d AND u.identity = %d AND u.status = %d AND u.is_deleted = %d",
mActivityJoin.TableName(), uid, identity, model.ActivityJoinStatusForSuccess, model.DeleteStatusForNot)).
Joins(fmt.Sprintf("LEFT JOIN (SELECT activity_id, COUNT(id) AS count FROM %s WHERE status = %d AND is_deleted = %d GROUP BY activity_id) AS j ON a.id = j.activity_id",
mActivityJoin.TableName(), model.ActivityJoinStatusForSuccess, model.DeleteStatusForNot)).
Where("a.id = ?", id)

View File

@ -6,8 +6,9 @@ type ActivityJoin struct{}
func (*ActivityJoin) Handle(arg ...interface{}) {
_ = model.Create(&model.ActivityJoin{
//IdentityUID: arg[0].(uint64),
ActivityID: arg[1].(uint64),
ActivityID: arg[0].(uint64),
UID: arg[1].(uint64),
Identity: arg[2].(int),
Status: model.ActivityJoinStatusForSuccess,
})
}

View File

@ -18,7 +18,7 @@ type Enterprise struct {
VipStatus bool `json:"vip_status"` // VIP状态
VipDeadline time.Time `json:"vip_deadline"` // VIP过期时间
Currency float64 `json:"currency"` // 货币-创新币
Identity int `json:"identity"` // 身份信息
Identity int `json:"identity"` // 身份合集信息
SelectIdentity int `json:"select_identity"` // 选中身份信息
}

View File

@ -14,8 +14,9 @@ func ValidateEmail(email string) bool {
return reg.MatchString(email)
}
func ValidateUrl(url string) {
//reg := regexp.MustCompile("^([hH][tT]{2}[pP]:|||[hH][tT]{2}[pP][sS]:|www\.)(([A-Za-z0-9-~]+)\.)+([A-Za-z0-9-~\/])+$")
func ValidateUrl(obj string) bool {
reg := regexp.MustCompile("^(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]")
return reg.MatchString(obj)
}
func ValidateIDCard(obj string) bool {

View File

@ -45,9 +45,13 @@ func TestValidateCompile(t *testing.T) {
//status := ValidateCompile(src, compile)
//t.Log(status)
src := "htt2ps:2134"
//src := "htt2ps:2134"
//t.Log(src)
//compile := "^(http|https):"
//status := ValidateCompile(src, compile)
//t.Log(status)
src := "http://213213213213"
t.Log(src)
compile := "^(http|https):"
status := ValidateCompile(src, compile)
status := ValidateUrl(src)
t.Log(status)
}