feat:完善项目信息
This commit is contained in:
@ -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()
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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}
|
||||
}
|
||||
}
|
||||
|
@ -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}
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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}
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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,
|
||||
})
|
||||
}
|
||||
|
@ -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"` // 选中身份信息
|
||||
}
|
||||
|
||||
|
@ -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 {
|
||||
|
@ -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)
|
||||
}
|
||||
|
Reference in New Issue
Block a user