浏览代码

no message

zhangchuanxing 3 天之前
父节点
当前提交
a20480bbc3

+ 240 - 0
controllers/jinmencaijing.go

@@ -0,0 +1,240 @@
+package controllers
+
+import (
+	"encoding/json"
+	"fmt"
+	jinmencaijingReq "hongze/hongze_open_api/models/request/jinmencaijing"
+	"hongze/hongze_open_api/models/response/jinmencaijing"
+	cygxActivity "hongze/hongze_open_api/models/tables/cygx/cygx_activity"
+	"hongze/hongze_open_api/models/tables/wx_user"
+	servicesWxUser "hongze/hongze_open_api/services/wx_user"
+	"hongze/hongze_open_api/utils"
+	"strconv"
+	"time"
+)
+
+// JinMenCaiJingControllerCommon 进门财经模块
+type JinMenCaiJingController struct {
+	BaseAuth
+}
+
+// 活动详情
+// @Title 活动详情接口
+// @Description 活动详情接口
+// @router /activity/detail [get]
+func (c *JinMenCaiJingController) ActivityDetail() {
+	//回调中url参数要做签名(get请求中的参数,按照自己的方式签名,避免链接被别人拿去随意请求)
+	activityId, _ := c.GetInt("activity_id")
+	activityInfo, err := cygxActivity.GetAddActivityInfoByActivityId(activityId)
+	if err != nil {
+		c.FailWithMessage("会议id异常:" + strconv.Itoa(activityId))
+		return
+	}
+	//resp := new(*jinmencaijing.CygxActivityDetailResp)
+	detail := new(jinmencaijing.CygxActivityResp)
+	detail.ActivityID = activityInfo.ActivityId
+	detail.PublishStatus = activityInfo.PublishStatus
+	detail.ActivityName = activityInfo.ActivityName
+	detail.Label = activityInfo.Label
+	detail.ActivityTime = activityInfo.ActivityTime
+	detail.ActivityTimeText = activityInfo.ActivityTimeText
+	detail.ActivityTypeId = activityInfo.ActivityTypeId
+	detail.ActivityTypeName = activityInfo.ActivityTypeName
+	detail.ChartPermissionName = activityInfo.ChartPermissionName
+	detail.IsLimitPeople = activityInfo.IsLimitPeople
+	detail.LimitPeopleNum = activityInfo.LimitPeopleNum
+	detail.Expert = activityInfo.Expert
+	detail.Host = activityInfo.Host
+	detail.Speaker = activityInfo.Speaker
+	detail.City = activityInfo.City
+	detail.Address = activityInfo.Address
+	detail.Highlights = activityInfo.Highlights
+	detail.DistinguishedGuest = activityInfo.DistinguishedGuest
+	detail.MainlandTell = activityInfo.MainlandTell
+	detail.HongKongTell = activityInfo.HongKongTell
+	detail.TaiwanTell = activityInfo.TaiwanTell
+	detail.AmericaTell = activityInfo.AmericaTell
+	detail.ParticipationCode = activityInfo.ParticipationCode
+	detail.OnlineParticipation = activityInfo.OnlineParticipation
+	detail.TencentConferenceNumber = activityInfo.TencentConferenceNumber
+	detail.LinkParticipants = activityInfo.LinkParticipants
+	detail.VmpRobotMeetingId = activityInfo.VmpRobotMeetingId
+	detail.ConferencePassword = activityInfo.ConferencePassword
+	detail.ReportLink = activityInfo.ReportLink
+	detail.Theme = activityInfo.Theme
+	detail.Remarks = activityInfo.Remarks
+	c.OkDetailed(detail, "获取成功")
+}
+
+// 活动报名
+// @Title 活动报名接口
+// @Description 活动报名接口
+// @router /activity/signup/add [post]
+func (c *JinMenCaiJingController) ActivitySignupAdd() {
+	//回调中url参数要做签名(get请求中的参数,按照自己的方式签名,避免链接被别人拿去随意请求)
+	var req jinmencaijingReq.ActivitySignupReq
+	err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		c.FailWithMessage("参数解析异常")
+		return
+	}
+	activityId := req.ActivityId
+	mobile := req.Mobile
+	countryCode := req.CountryCode
+	realName := req.RealName
+	companyName := req.CompanyName
+	var dateTxt = []byte(mobile)
+	resultDe := utils.DesBase64Decrypt(dateTxt)
+	deMobile := string(resultDe)
+	fmt.Println(activityId)
+	userTotal, err := wx_user.GetWxUserCountByMobile(deMobile)
+	if err != nil {
+		c.FailWithMessage("根据手机号判断用户信息失败")
+		return
+	}
+	var user *wx_user.WxUser
+	if userTotal == 0 {
+		userId, err := servicesWxUser.AddWxUserByMobile(deMobile, countryCode, realName)
+		if err != nil {
+			c.FailWithMessage("根据手机号录入用户信息失败")
+			return
+		}
+		user, err = wx_user.GetByUserId(userId)
+		if err != nil {
+			c.FailWithMessage("获取用户信息失败")
+			return
+		}
+	} else {
+		user, err = wx_user.GetByUserMobile(deMobile)
+		if err != nil {
+			c.FailWithMessage("获取用户信息失败")
+			return
+		}
+	}
+
+	signupCount, err := cygxActivity.GetActivitySignupCountByUserId(int(user.UserId), activityId)
+	if err != nil {
+		c.FailWithMessage("获取用户是否报名信息失败")
+		return
+	}
+
+	if signupCount == 0 {
+		item := new(cygxActivity.CygxActivitySignup)
+		item.UserId = int(user.UserId)
+		item.RealName = user.RealName
+		item.ActivityId = activityId
+		item.CreateTime = time.Now()
+		item.Email = user.Email
+		item.CompanyId = user.CompanyId
+		item.CompanyName = companyName
+		item.SignupType = 3
+		item.ThreeSource = 1
+		item.Mobile = user.Mobile
+		item.CountryCode = user.CountryCode
+		item.OutboundMobile = user.OutboundMobile
+		if user.OutboundMobile == "" {
+			item.OutboundMobile = user.Mobile
+		}
+		if user.CountryCode == "" {
+			item.CountryCode = "86"
+		}
+		_, err = cygxActivity.AddActivitySignup(item)
+		if err != nil {
+			c.FailWithMessage("报名失败")
+			return
+		}
+	}
+
+	c.OkWithMessage("操作成功")
+}
+
+// 活动报名相关信息校验
+// @Title 活动报名相关信息校验接口
+// @Description 活动报名相关信息校验接口
+// @router /activity/signup/check [post]
+func (c *JinMenCaiJingController) ActivitySignupCheck() {
+	//回调中url参数要做签名(get请求中的参数,按照自己的方式签名,避免链接被别人拿去随意请求)
+	var req jinmencaijingReq.ActivitySignupReq
+	err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		c.FailWithMessage("参数解析异常")
+		return
+	}
+	activityId := req.ActivityId
+	mobile := req.Mobile
+
+	var dateTxt = []byte(mobile)
+	resultDe := utils.DesBase64Decrypt(dateTxt)
+	deMobile := string(resultDe)
+
+	userTotal, err := wx_user.GetWxUserCountByMobile(deMobile)
+	if err != nil {
+		c.FailWithMessage("根据手机号判断用户信息失败")
+		return
+	}
+	var user *wx_user.WxUser
+	var signupCount int
+	if userTotal == 0 {
+
+	} else {
+		user, err = wx_user.GetByUserMobile(deMobile)
+		if err != nil {
+			c.FailWithMessage("获取用户信息失败")
+			return
+		}
+		signupCount, err = cygxActivity.GetActivitySignupCountByUserId(int(user.UserId), activityId)
+		if err != nil {
+			c.FailWithMessage("获取用户是否报名信息失败")
+			return
+		}
+	}
+	fmt.Println(user)
+	fmt.Println(activityId)
+
+	//item := new(cygxActivity.CygxActivitySignup)
+	//item.UserId = int(user.UserId)
+	//item.RealName = user.RealName
+	//
+	//item.ActivityId = activityId
+	//item.CreateTime = time.Now()
+	//item.Mobile = user.Mobile
+	//item.Email = user.Email
+	//item.CompanyId = user.CompanyId
+	//item.CompanyName = companyName
+	//item.SignupType = 3
+	//item.ThreeSource = 1
+	//
+	//item.OutboundMobile = user.Mobile
+	//if user.OutboundMobile != "" {
+	//	item.OutboundMobile = user.OutboundMobile
+	//	if user.OutboundCountryCode == "" {
+	//		item.CountryCode = "86"
+	//	} else {
+	//		item.CountryCode = user.OutboundCountryCode
+	//	}
+	//} else {
+	//	item.OutboundMobile = user.Mobile
+	//	if user.CountryCode == "" {
+	//		item.CountryCode = "86"
+	//	} else {
+	//		item.CountryCode = user.CountryCode
+	//	}
+	//}
+	//_, err = cygxActivity.AddActivitySignup(item)
+	//if err != nil {
+	//	c.FailWithMessage("报名失败")
+	//	return
+	//}
+	resp := jinmencaijing.CygxActivitySignupCheckResp{
+		IsSignup:  signupCount,
+		SignupNum: signupCount,
+	}
+
+	c.OkDetailed(resp, "获取成功")
+}
+
+//func init() {
+//	mobile := "15557271717"
+//	encryptMobile := string(utils.DesBase64Encrypt([]byte(mobile)))
+//	fmt.Println(encryptMobile)
+//}

+ 1 - 0
models/db_init.go

@@ -61,6 +61,7 @@ func init() {
 		new(article.CygxArticleCeluePush),                  //策略平台推送过来更新的文章
 		new(article.CygxArticleCeluePush),                  //策略平台推送过来更新的文章
 		new(cygx_chart.CygxChartCeluePush),                 //策略平台推送过来更新的图表
 		new(cygx_chart.CygxChartCeluePush),                 //策略平台推送过来更新的图表
 		new(cygx_activity.CygxActivitySignup),              //易董报名审核
 		new(cygx_activity.CygxActivitySignup),              //易董报名审核
+		new(cygx_activity.CygxActivitySignupLog),           //报名日志
 		new(cygx_activity.CygxYidongActivitySignupLog),     //易董报名记录日志
 		new(cygx_activity.CygxYidongActivitySignupLog),     //易董报名记录日志
 		new(cygx_activity.CygxYidongActivityExamineStatus), //易董审核记录日志
 		new(cygx_activity.CygxYidongActivityExamineStatus), //易董审核记录日志
 		new(cygx_activity.CygxMySchedule),                  //易董审核通过之后添加我的日程
 		new(cygx_activity.CygxMySchedule),                  //易董审核通过之后添加我的日程

+ 10 - 0
models/request/jinmencaijing/jinmencaijing.go

@@ -0,0 +1,10 @@
+package jinmencaijing
+
+// ActivitySignupReq 用户报名、取消报名结构体
+type ActivitySignupReq struct {
+	ActivityId  int    `description:"活动ID" json:"activity_id"`
+	Mobile      string `description:"手机号" json:"mobile"`
+	CompanyName string `description:"公司名称" json:"company_name"`
+	RealName    string `description:"用户名称" json:"real_name"`
+	CountryCode string `description:"区号,86、852、886等" json:"country_code" `
+}

+ 58 - 0
models/response/jinmencaijing/jinmencaijing.go

@@ -0,0 +1,58 @@
+package jinmencaijing
+
+// CustomerInfo 客户信息
+type CustomerInfo struct {
+	CompanyName string `json:"company_name" description:"客户(公司)名称"`
+	Name        string `json:"name" description:"联系人名称"`
+	Mobile      string `json:"mobile" description:"手机号"`
+	Status      string `json:"status" description:"状态"`
+	IsSuspend   int    `json:"is_suspend" description:"启用与否字段:1:暂停,0:启用"`
+	HasApply    bool   `json:"has_apply" description:"是否有申请过"`
+}
+
+// CygxActivity 活动表结构体
+type CygxActivityResp struct {
+	ActivityID              int    `json:"activity_id" description:"活动ID"`
+	PublishStatus           int    `json:"publish_status" description:"发布状态,0未发布,1已发布"`
+	ActivityName            string `json:"activity_name" description:"活动名称"`
+	Label                   string `json:"label" description:"标签"`
+	ActivityTime            string `json:"activity_time" description:"活动时间"`
+	ActivityTimeText        string `json:"activity_time_text" description:"活动时间带文字"`
+	ActivityTypeId          int    `json:"activity_type_id" description:"活动类型ID"`
+	ActivityTypeName        string `json:"activity_type_name" description:"活动类型名称"`
+	ChartPermissionName     string `json:"chart_permission_name" description:"行业名称"`
+	IsLimitPeople           int    `json:"is_limit_people" description:"是否限制人数 1是,0否"`
+	LimitPeopleNum          int    `json:"limit_people_num" description:"限制人数数量"`
+	Expert                  string `json:"expert" description:"专家"`
+	Host                    string `json:"host" description:"主持人"`
+	Speaker                 string `json:"speaker" description:"主讲人"`
+	City                    string `json:"city" description:"城市"`
+	Address                 string `json:"address" description:"活动地址"`
+	Highlights              string `json:"highlights" description:"活动亮点"`
+	DistinguishedGuest      string `json:"distinguished_guest" description:"嘉宾"`
+	MainlandTell            string `json:"mainland_tell" description:"大陆拨入"`
+	HongKongTell            string `json:"hong_kong_tell" description:"香港拨入"`
+	TaiwanTell              string `json:"taiwan_tell" description:"台湾拨入"`
+	AmericaTell             string `json:"america_tell" description:"美国拨入"`
+	ParticipationCode       string `json:"participation_code" description:"拨入密码"`
+	OnlineParticipation     string `json:"online_participation" description:"网络参会"`
+	TencentConferenceNumber string `json:"tencent_conference_number" description:"腾讯会议号"`
+	LinkParticipants        string `json:"link_participants" description:"链接参会"`
+	VmpRobotMeetingId       string `json:"vmp_robot_meeting_id" description:"会议ID"`
+	ConferencePassword      string `json:"conference_password" description:"会议密码"`
+	ReportLink              string `json:"report_link" description:"报告链接"`
+	Theme                   string `json:"theme" description:"主题"`
+	Remarks                 string `json:"remarks" description:"备注"`
+}
+
+// CygxActivity 活动表结构体
+type CygxActivityDetailResp struct {
+	Detail *CygxActivityResp `json:"detail" description:"备注"`
+}
+
+// CygxActivity 活动表结构体
+type CygxActivitySignupCheckResp struct {
+	IsWhite   bool `json:"is_white" description:"是否在白名单里面"`
+	IsSignup  int  `json:"is_signup" description:"是否报名了"`
+	SignupNum int  `json:"signup_num" description:"已报名人数"`
+}

+ 146 - 46
models/tables/cygx/cygx_activity/cygx_activity.go

@@ -1,58 +1,61 @@
 package cygx_activity
 package cygx_activity
 
 
 import (
 import (
+	"fmt"
 	"github.com/beego/beego/v2/client/orm"
 	"github.com/beego/beego/v2/client/orm"
 	"time"
 	"time"
 )
 )
 
 
 // 活动详情
 // 活动详情
 type CygxActivity struct {
 type CygxActivity struct {
-	ActivityId           int       `orm:"column(activity_id);pk";description:"活动ID 等于0新增活动,大于0修改活动"`
-	ActivityTypeId       int       `description:"活动类型id"`
-	ActivityTypeName     string    `description:"活动类型名称"`
-	ChartPermissionId    int       `description:"行业id"`
-	ChartPermissionName  string    `description:"行业名称"`
-	ChartPermissionNames string    `description:"行业名称辅助字段,区分研选子分类"`
-	Body                 string    `description:"内容"`
-	CreateTime           time.Time `description:"创建时间"`
-	IsLimitPeople        int       `description:"是否限制人数 1是,0否"`
-	LimitPeopleNum       int       `description:"限制的人数数量"`
-	CustomerTypeIds      string    `description:"活动可见的客户类型,多个ID用 , 隔开"`
-	PublishStatus        int       `description:"发布状态 1已发布,0未发布"`
-	LastUpdatedTime      time.Time `description:"更新时间"`
-	ActivityTime         string    `description:"活动时间"`
-	ActivityTimeText     string    `description:"活动时间带文字"`
-	DistinguishedGuest   string    `description:"嘉宾"`
-	Host                 string    `description:"主持人"`
-	MainlandTell         string    `description:"大陆拨入号"`
-	HongKongTell         string    `description:"香港拨入号"`
-	TaiwanTell           string    `description:"台湾拨入号"`
-	AmericaTell          string    `description:"美国拨入号"`
-	ParticipationCode    string    `description:"参会密码"`
-	Theme                string    `description:"主题"`
-	Expert               string    `description:"专家"`
-	ActivityName         string    `description:"活动名称"`
-	ActivityNameTask     string    `description:"活动名称定时任务同步的时候使用"`
-	OnlineParticipation  string    `description:"网络参会"`
-	ReportLink           string    `description:"报告链接"`
-	City                 string    `description:"城市"`
-	Address              string    `description:"活动地址"`
-	Highlights           string    `description:"活动亮点"`
-	Remarks              string    `description:"备注"`
-	Speaker              string    `description:"主讲人"`
-	ArticleId            int       `description:"关联报告id"`
-	Label                string    `description:"标签"`
-	LinkParticipants     string    `description:"链接参会"`
-	AppAttendance        string    `description:"App参会"`
-	ConferencePassword   string    `description:"会议密码"`
-	TemporaryLabel       string    `description:"临时标签"`
-	IsMakerShow          int       `description:"是否仅决策人可见 0,否 、1,是"`
-	VisibleRange         int       `description:"可见范围 1,仅本组可见 、2,全部客户可见"`
-	Scale                string    `description:"管理规模,空不填,1::50亿以下,2:50~100亿,3:100亿以上。多个用, 隔开"`
-	IsShowSubjectName    int       `description:"小程序内是否展示标的名称 1是 ,0 否 默认0 "`
-	IsHideAppointment    int       `description:"是否隐藏预约纪要按钮 1是 ,0 否 默认0 "`
-	AdminId              int       `description:"销售/管理员ID"`
-	AdminName            string    `description:"销售/管理员姓名"`
+	ActivityId              int       `orm:"column(activity_id);pk";description:"活动ID 等于0新增活动,大于0修改活动"`
+	ActivityTypeId          int       `description:"活动类型id"`
+	ActivityTypeName        string    `description:"活动类型名称"`
+	ChartPermissionId       int       `description:"行业id"`
+	ChartPermissionName     string    `description:"行业名称"`
+	ChartPermissionNames    string    `description:"行业名称辅助字段,区分研选子分类"`
+	Body                    string    `description:"内容"`
+	CreateTime              time.Time `description:"创建时间"`
+	IsLimitPeople           int       `description:"是否限制人数 1是,0否"`
+	LimitPeopleNum          int       `description:"限制的人数数量"`
+	CustomerTypeIds         string    `description:"活动可见的客户类型,多个ID用 , 隔开"`
+	PublishStatus           int       `description:"发布状态 1已发布,0未发布"`
+	LastUpdatedTime         time.Time `description:"更新时间"`
+	ActivityTime            string    `description:"活动时间"`
+	ActivityTimeText        string    `description:"活动时间带文字"`
+	DistinguishedGuest      string    `description:"嘉宾"`
+	Host                    string    `description:"主持人"`
+	MainlandTell            string    `description:"大陆拨入号"`
+	HongKongTell            string    `description:"香港拨入号"`
+	TaiwanTell              string    `description:"台湾拨入号"`
+	AmericaTell             string    `description:"美国拨入号"`
+	ParticipationCode       string    `description:"参会密码"`
+	Theme                   string    `description:"主题"`
+	Expert                  string    `description:"专家"`
+	ActivityName            string    `description:"活动名称"`
+	ActivityNameTask        string    `description:"活动名称定时任务同步的时候使用"`
+	OnlineParticipation     string    `description:"网络参会"`
+	ReportLink              string    `description:"报告链接"`
+	City                    string    `description:"城市"`
+	Address                 string    `description:"活动地址"`
+	Highlights              string    `description:"活动亮点"`
+	Remarks                 string    `description:"备注"`
+	Speaker                 string    `description:"主讲人"`
+	ArticleId               int       `description:"关联报告id"`
+	Label                   string    `description:"标签"`
+	LinkParticipants        string    `description:"链接参会"`
+	AppAttendance           string    `description:"App参会"`
+	ConferencePassword      string    `description:"会议密码"`
+	TemporaryLabel          string    `description:"临时标签"`
+	IsMakerShow             int       `description:"是否仅决策人可见 0,否 、1,是"`
+	VisibleRange            int       `description:"可见范围 1,仅本组可见 、2,全部客户可见"`
+	Scale                   string    `description:"管理规模,空不填,1::50亿以下,2:50~100亿,3:100亿以上。多个用, 隔开"`
+	IsShowSubjectName       int       `description:"小程序内是否展示标的名称 1是 ,0 否 默认0 "`
+	IsHideAppointment       int       `description:"是否隐藏预约纪要按钮 1是 ,0 否 默认0 "`
+	AdminId                 int       `description:"销售/管理员ID"`
+	AdminName               string    `description:"销售/管理员姓名"`
+	TencentConferenceNumber string    `description:"腾讯会议号"`
+	VmpRobotMeetingId       string    `description:"会议ID"`
 }
 }
 
 
 type CygxActivitySignup struct {
 type CygxActivitySignup struct {
@@ -71,6 +74,7 @@ type CygxActivitySignup struct {
 	RealName            string    `description:"用户实际名称"`
 	RealName            string    `description:"用户实际名称"`
 	SellerName          string    `description:"所属销售"`
 	SellerName          string    `description:"所属销售"`
 	YidongExamineStatus int       `description:"易董活动报名审核状态0审核中,1:审核通过、2审核不通过"`
 	YidongExamineStatus int       `description:"易董活动报名审核状态0审核中,1:审核通过、2审核不通过"`
+	ThreeSource         int       `description:"三方来源,1进门财经"`
 }
 }
 
 
 type CygxYidongActivityExamineStatus struct {
 type CygxYidongActivityExamineStatus struct {
@@ -96,6 +100,19 @@ func GetAddActivityInfoById(activityIdYiDong string) (item *CygxActivity, err er
 	return
 	return
 }
 }
 
 
+// 通过ID获取活动详情
+func GetAddActivityInfoByActivityId(activityId int) (item *CygxActivity, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT
+			a.*
+		FROM
+			cygx_activity  as a
+		WHERE
+			activity_id = ? `
+	err = o.Raw(sql, activityId).QueryRow(&item)
+	return
+}
+
 type ExamineStatusReq struct {
 type ExamineStatusReq struct {
 	ActivityId    int    `description:"活动ID"`
 	ActivityId    int    `description:"活动ID"`
 	Mobile        string `description:"手机号" json:"mobile"`
 	Mobile        string `description:"手机号" json:"mobile"`
@@ -220,6 +237,19 @@ type CygxMySchedule struct {
 	CompanyName string    `description:"公司名称"`
 	CompanyName string    `description:"公司名称"`
 }
 }
 
 
+// 报名记录日志
+type CygxActivitySignupLog struct {
+	Id          int       `orm:"column(id);pk"`
+	ActivityId  int       `description:"活动ID"`
+	UserId      int       `description:"用户ID"`
+	CreateTime  time.Time `description:"创建时间"`
+	Mobile      string    `description:"手机号"`
+	Email       string    `description:"邮箱"`
+	CompanyId   int       `description:"公司id"`
+	CompanyName string    `description:"公司名称"`
+	Type        int       `description:"操作方式,1报名,2取消报名"`
+}
+
 // GetCygxMyScheduleList 获取我的日程数据
 // GetCygxMyScheduleList 获取我的日程数据
 func GetCygxMyScheduleList(activityId int) (items []*CygxMySchedule, err error) {
 func GetCygxMyScheduleList(activityId int) (items []*CygxMySchedule, err error) {
 	o := orm.NewOrmUsingDB("hz_cygx")
 	o := orm.NewOrmUsingDB("hz_cygx")
@@ -253,3 +283,73 @@ func DelCygxcActivitySignup(mobile string, activityId int) (err error) {
 	_, err = o.Raw(sql, activityId).Exec()
 	_, err = o.Raw(sql, activityId).Exec()
 	return
 	return
 }
 }
+
+// 添加报名信息
+func AddActivitySignup(item *CygxActivitySignup) (lastId int64, err error) {
+	o, err := orm.NewOrmUsingDB("hz_cygx").Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		fmt.Println(err)
+		if err == nil {
+			o.Commit()
+		} else {
+			o.Rollback()
+		}
+	}()
+	var count int
+	var countMySchedule int
+	sql := `SELECT COUNT(1) AS count FROM cygx_my_schedule WHERE user_id=? AND activity_id=? `
+	err = o.Raw(sql, item.UserId, item.ActivityId).QueryRow(&countMySchedule)
+	if err != nil {
+		return
+	}
+	if countMySchedule == 0 {
+		itemMy := new(CygxMySchedule)
+		itemMy.UserId = item.UserId
+		itemMy.ActivityId = item.ActivityId
+		itemMy.CreateTime = time.Now()
+		itemMy.Mobile = item.Mobile
+		itemMy.Email = item.Email
+		itemMy.CompanyId = item.CompanyId
+		itemMy.CompanyName = item.CompanyName
+		lastId, err = o.Insert(itemMy)
+		if err != nil {
+			return
+		}
+	}
+	sql = `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE user_id=? AND activity_id=? `
+	err = o.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
+	if err != nil {
+		return
+	}
+	if count > 0 {
+		sql = `UPDATE cygx_activity_signup SET is_cancel = 0 ,do_fail_type = 0, signup_type=? WHERE user_id=?  AND activity_id=? `
+		_, err = o.Raw(sql, item.SignupType, item.UserId, item.ActivityId).Exec()
+	} else {
+		lastId, err = o.Insert(item)
+	}
+	if err != nil {
+		return
+	}
+	itemLog := new(CygxActivitySignupLog)
+	itemLog.UserId = item.UserId
+	itemLog.ActivityId = item.ActivityId
+	itemLog.CreateTime = time.Now()
+	itemLog.Mobile = item.Mobile
+	itemLog.Email = item.Email
+	itemLog.CompanyId = item.CompanyId
+	itemLog.CompanyName = item.CompanyName
+	itemLog.Type = 1
+	lastId, err = o.Insert(itemLog)
+	return
+}
+
+// 获取用户是否报了名
+func GetActivitySignupCountByUserId(uid, activityId int) (count int, err error) {
+	sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE user_id=? AND activity_id=? `
+	o := orm.NewOrm()
+	err = o.Raw(sqlCount, uid, activityId).QueryRow(&count)
+	return
+}

+ 44 - 17
models/tables/wx_user/wx_user.go

@@ -6,28 +6,39 @@ import (
 )
 )
 
 
 type WxUser struct {
 type WxUser struct {
-	UserId           int64 `orm:"column(user_id);pk"`
-	Mobile           string
-	Email            string
-	CompanyId        int
-	RealName         string `description:"姓名"`
-	CreatedTime      time.Time
-	MobileTwo        string `description:"备用手机号"`
-	BusinessCardUrl  string `description:"名片"`
-	IsMaker          int    `description:"是否决策人,1:是,0:否"`
-	Position         string `description:"职位"`
-	Sex              int    `description:"普通用户性别,1为男性,2为女性"`
-	DepartmentName   string `description:"联系人部门"`
-	RegisterTime     time.Time
-	RegisterPlatform int
-	Enabled          int8 `description:"用户状态"`
+	UserId              int64 `orm:"column(user_id);pk"`
+	Mobile              string
+	Email               string
+	CompanyId           int
+	RealName            string `description:"姓名"`
+	CreatedTime         time.Time
+	MobileTwo           string `description:"备用手机号"`
+	BusinessCardUrl     string `description:"名片"`
+	IsMaker             int    `description:"是否决策人,1:是,0:否"`
+	Position            string `description:"职位"`
+	Sex                 int    `description:"普通用户性别,1为男性,2为女性"`
+	DepartmentName      string `description:"联系人部门"`
+	RegisterTime        time.Time
+	RegisterPlatform    int
+	Enabled             int8   `description:"用户状态"`
+	FirstLogin          int    `description:"是否第一次登陆"`
+	CountryCode         string `description:"区号,86、852、886等"`
+	OutboundMobile      string `description:"外呼手机号"`
+	OutboundCountryCode string `description:"外呼手机号区号,86、852、886等"`
 }
 }
 
 
 type OpenIdList struct {
 type OpenIdList struct {
 	OpenId string
 	OpenId string
 }
 }
 
 
-//获取所有的用户openid列表
+// 添加日志记录
+func AddWxUser(item *WxUser) (lastId int64, err error) {
+	o := orm.NewOrm()
+	lastId, err = o.Insert(item)
+	return
+}
+
+// 获取所有的用户openid列表
 func GetOpenIdList(openIdStr string) (items []*OpenIdList, err error) {
 func GetOpenIdList(openIdStr string) (items []*OpenIdList, err error) {
 	sql := `SELECT DISTINCT ur.open_id FROM wx_user AS wu 
 	sql := `SELECT DISTINCT ur.open_id FROM wx_user AS wu 
           INNER JOIN company AS c ON c.company_id = wu.company_id 
           INNER JOIN company AS c ON c.company_id = wu.company_id 
@@ -41,7 +52,7 @@ func GetOpenIdList(openIdStr string) (items []*OpenIdList, err error) {
 	return
 	return
 }
 }
 
 
-//根据手机号获取用户的openid列表
+// 根据手机号获取用户的openid列表
 func GetOpenIdListByMobile(mobile, openIdStr string) (items []*OpenIdList, err error) {
 func GetOpenIdListByMobile(mobile, openIdStr string) (items []*OpenIdList, err error) {
 	sql := `SELECT DISTINCT ur.open_id FROM wx_user AS wu 
 	sql := `SELECT DISTINCT ur.open_id FROM wx_user AS wu 
           INNER JOIN company AS c ON c.company_id = wu.company_id 
           INNER JOIN company AS c ON c.company_id = wu.company_id 
@@ -106,3 +117,19 @@ func GetByUserId(userId int) (wxUser *WxUser, err error) {
 	err = o.Raw(sql, userId).QueryRow(&wxUser)
 	err = o.Raw(sql, userId).QueryRow(&wxUser)
 	return
 	return
 }
 }
+
+// GetByUserMobile 根据mobile获取用户信息
+func GetByUserMobile(mobile string) (wxUser *WxUser, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM wx_user WHERE mobile = ? LIMIT 1 `
+	err = o.Raw(sql, mobile).QueryRow(&wxUser)
+	return
+}
+
+// GetWxUserCountByMobile 查询系统中是否存在该手机号
+func GetWxUserCountByMobile(mobile string) (count int, err error) {
+	sql := `SELECT COUNT(1) AS count FROM wx_user WHERE mobile=? `
+	o := orm.NewOrm()
+	err = o.Raw(sql, mobile).QueryRow(&count)
+	return
+}

+ 18 - 0
routers/commentsRouter.go

@@ -88,6 +88,24 @@ func init() {
             Filters: nil,
             Filters: nil,
             Params: nil})
             Params: nil})
 
 
+    beego.GlobalControllerRouter["hongze/hongze_open_api/controllers:JinMenCaiJingController"] = append(beego.GlobalControllerRouter["hongze/hongze_open_api/controllers:JinMenCaiJingController"],
+        beego.ControllerComments{
+            Method: "ActivityDetail",
+            Router: `/activity/detail`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hongze_open_api/controllers:JinMenCaiJingController"] = append(beego.GlobalControllerRouter["hongze/hongze_open_api/controllers:JinMenCaiJingController"],
+        beego.ControllerComments{
+            Method: "ActivitySignupAdd",
+            Router: `/activity/signup/add`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_open_api/controllers:QuanShiControllerCommon"] = append(beego.GlobalControllerRouter["hongze/hongze_open_api/controllers:QuanShiControllerCommon"],
     beego.GlobalControllerRouter["hongze/hongze_open_api/controllers:QuanShiControllerCommon"] = append(beego.GlobalControllerRouter["hongze/hongze_open_api/controllers:QuanShiControllerCommon"],
         beego.ControllerComments{
         beego.ControllerComments{
             Method: "CallBack",
             Method: "CallBack",

+ 5 - 0
routers/router.go

@@ -76,6 +76,11 @@ func init() {
 				&controllers.EdbController{},
 				&controllers.EdbController{},
 			),
 			),
 		),
 		),
+		web.NSNamespace("/jinmencaijing",
+			web.NSInclude(
+				&controllers.JinMenCaiJingController{},
+			),
+		),
 	)
 	)
 	web.AddNamespace(ns)
 	web.AddNamespace(ns)
 }
 }

+ 23 - 0
services/wx_user/wx_user.go

@@ -0,0 +1,23 @@
+package wx_user
+
+import (
+	"hongze/hongze_open_api/models/tables/wx_user"
+	"time"
+)
+
+func AddWxUserByMobile(mobile, countryCode, realName string) (userId int, err error) {
+	user := new(wx_user.WxUser)
+	user.RealName = realName
+	user.CountryCode = countryCode
+	user.Mobile = mobile
+	user.OutboundCountryCode = countryCode
+	user.OutboundMobile = mobile
+	user.MobileTwo = mobile
+	user.CompanyId = 1
+	user.CreatedTime = time.Now()
+	user.RegisterPlatform = 4 //来源统计成查研观向小程序
+	newId, e := wx_user.AddWxUser(user)
+	userId = int(newId)
+	err = e
+	return
+}