Commit 20a82ef3 authored by szh's avatar szh

update

parent ca7a5aa8
......@@ -3,10 +3,10 @@
``
1.用户通过WEB3钱包访问H5页面,需要链接钱包
1.用户通过WEB3钱包访问H5页面,需要链接钱包 (login)
2.首次访问,如果没有通过其他推广链接访问,则首页不显示连接钱包按钮,不显示报名按钮
3.首次访问,如果是通过其他推广链接访问的,则可以链接钱包后,点击报名(即必须认有推荐人才可以报名)
4.报名填写申请表,需要上传1寸照,如果没有,可以唤醒手机摄像头自拍
3.首次访问,如果是通过其他推广链接访问的,则可以链接钱包后,点击报名(即必须认有推荐人才可以报名)(sign)
4.报名填写申请表,需要上传1寸照,如果没有,可以唤醒手机摄像头自拍 (upload)
5.报名后,信息提交后台,需要人工审核(确认照片是否真人,确认其他条件是否符合),后台需要一张用户表(地址,姓名,性别,电话,公司,职务,推荐地址,注册时间,以及调整推荐关系的操作)
6.报名后,不管有没有审核通过,用户都可以生成专属的推广二维码和推广链接,进行分享了
7.审核通过后,点击首页右上角钱包,可以进入我的活动页面,活动根据时间倒序
......
......@@ -8,6 +8,7 @@ import (
courseReq "courseSign/server/model/course/request"
"courseSign/server/service"
"courseSign/server/utils"
"github.com/33cn/chain33/common/address"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
)
......@@ -186,6 +187,10 @@ func (courseSignupApi *CourseSignupApi) SignCourse(c *gin.Context) {
global.GVA_LOG.Error("创建失败!", zap.Error(err))
response.FailWithMessage(err.Error(), c)
}
if !address.IsEthAddress(courseSignup.Addr) {
global.GVA_LOG.Error("地址格式错误!", zap.Error(err),zap.String("addr",courseSignup.Addr))
response.FailWithMessage(err.Error(), c)
}
user,err := courseUsersService.GetCourseUsersByAddr(courseSignup.Addr)
if err != nil {
global.GVA_LOG.Error("查询失败!", zap.Error(err))
......@@ -194,6 +199,7 @@ func (courseSignupApi *CourseSignupApi) SignCourse(c *gin.Context) {
if user.Invitor == "" {
response.FailWithMessage("无推荐人", c)
}
if err := courseSignupService.CreateCourseSignup(courseSignup); err != nil {
global.GVA_LOG.Error("报名失败!", zap.Error(err))
response.FailWithMessage("报名失败", c)
......
package course
import (
"time"
"courseSign/server/global"
"courseSign/server/model/common/request"
"courseSign/server/model/common/response"
"courseSign/server/model/course"
courseReq "courseSign/server/model/course/request"
"courseSign/server/model/system"
systemReq "courseSign/server/model/system/request"
twiReq "courseSign/server/model/twi/request"
"courseSign/server/service"
"courseSign/server/utils"
"github.com/33cn/chain33/common/address"
"github.com/gin-gonic/gin"
"github.com/go-redis/redis/v8"
"go.uber.org/zap"
)
......@@ -16,7 +23,7 @@ type CourseUsersApi struct {
}
var courseUsersService = service.ServiceGroupApp.CourseServiceGroup.CourseUsersService
var jwtService = service.ServiceGroupApp.SystemServiceGroup.JwtService
// CreateCourseUsers 创建CourseUsers
// @Tags CourseUsers
......@@ -119,19 +126,25 @@ func (courseUsersApi *CourseUsersApi) UpdateCourseUsers(c *gin.Context) {
response.FailWithMessage(err.Error(), c)
return
}
verify := utils.Rules{
"Address":{utils.NotEmpty()},
"Name":{utils.NotEmpty()},
"Age":{utils.NotEmpty()},
"Sex":{utils.NotEmpty()},
"Phone":{utils.NotEmpty()},
"Photo":{utils.NotEmpty()},
"Invitor":{utils.NotEmpty()},
}
verify := utils.Rules{
"Address":{utils.NotEmpty()},
"Name":{utils.NotEmpty()},
"Age":{utils.NotEmpty()},
"Sex":{utils.NotEmpty()},
"Phone":{utils.NotEmpty()},
"Photo":{utils.NotEmpty()},
"Invitor":{utils.NotEmpty()},
}
if err := utils.Verify(courseUsers, verify); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
}
if !address.IsEthAddress(courseUsers.Invitor) {
global.GVA_LOG.Error("错误地址",zap.Any("invitor",courseUsers.Invitor))
response.FailWithMessage("地址错误", c)
}
if err := courseUsersService.UpdateCourseUsers(courseUsers); err != nil {
global.GVA_LOG.Error("更新失败!", zap.Error(err))
response.FailWithMessage("更新失败", c)
......@@ -193,7 +206,7 @@ func (courseUsersApi *CourseUsersApi) GetCourseUsersList(c *gin.Context) {
}
}
// FindCourseUsersWeb 用id查询CourseUsers
// FindCourseUsersMM 用id查询CourseUsers
// @Tags CourseUsers
// @Summary 用id查询CourseUsers
// @accept application/json
......@@ -201,7 +214,7 @@ func (courseUsersApi *CourseUsersApi) GetCourseUsersList(c *gin.Context) {
// @Param data query course.CourseUsers true "用id查询CourseUsers"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}"
// @Router /courseUsers/findUsers [get]
func (courseUsersApi *CourseUsersApi) FindCourseUsersWeb(c *gin.Context) {
func (courseUsersApi *CourseUsersApi) FindCourseUsersMM(c *gin.Context) {
var courseUsers course.CourseUsers
err := c.ShouldBindQuery(&courseUsers)
if err != nil {
......@@ -225,3 +238,71 @@ func (courseUsersApi *CourseUsersApi) FindCourseUsersWeb(c *gin.Context) {
}
}
// MetaMaskLogin 创建CourseUsers
// @Tags CourseUsers
// @Summary 创建CourseUsers
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body course.CourseUsers true "创建CourseUsers"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /courseUsers/createCourseUsers [post]
func (courseUsersApi *CourseUsersApi) MetaMaskLogin(c *gin.Context) {
var loginUser twiReq.TwiUserLogin
err := c.ShouldBindJSON(&loginUser)
if err != nil {
response.FailWithMessage(err.Error(), c)
return
}
if err := utils.Verify(loginUser, utils.MetaMaskVerify); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
signTime,err := utils.GetTimeStampFromMsg(loginUser.Msg)
if err != nil {
response.FailWithMessage(err.Error(), c)
return
}
if time.Now().Unix() - 1800 > signTime {
response.FailWithMessage("签名时间已过期,请重新签名", c)
return
}
j := &utils.JWT{SigningKey: []byte(global.GVA_CONFIG.JWT.SigningKey)} // 唯一签名
claims := j.CreateClaims(systemReq.BaseClaims{
//ID: user.ID,
NickName: loginUser.Addr,
Username: loginUser.Addr,
})
token, err := j.CreateToken(claims)
if err != nil {
global.GVA_LOG.Error("获取token失败!", zap.Error(err))
response.FailWithMessage("获取token失败", c)
return
}
if jwtStr, err := jwtService.GetRedisJWT(loginUser.Addr); err == redis.Nil {
if err := jwtService.SetRedisJWT(token, loginUser.Addr); err != nil {
global.GVA_LOG.Error("设置登录状态失败!", zap.Error(err))
response.FailWithMessage("设置登录状态失败", c)
return
}
response.OkWithData(token, c)
} else if err != nil {
global.GVA_LOG.Error("设置登录状态失败!", zap.Error(err))
response.FailWithMessage("设置登录状态失败", c)
} else {
var blackJWT system.JwtBlacklist
blackJWT.Jwt = jwtStr
if err := jwtService.JsonInBlacklist(blackJWT); err != nil {
response.FailWithMessage("jwt作废失败", c)
return
}
if err := jwtService.SetRedisJWT(token, loginUser.Addr); err != nil {
response.FailWithMessage("设置登录状态失败", c)
return
}
response.OkWithData(token, c)
}
}
\ No newline at end of file
......@@ -5,6 +5,6 @@ type ApiGroup struct {
CourseActionApi
CourseSignupApi
CourseUsersApi
CourserActionUsersApi
CourserBannersApi
CourseActionUsersApi
CourseBannersApi
}
......@@ -54,8 +54,8 @@ func RegisterTables() {
course.CourseAction{},
course.CourseSignup{},
course.CourseUsers{},
course.CourserActionUsers{},
course.CourserBanners{},
course.CourseActionUsers{},
course.CourseBanners{},
)
if err != nil {
global.GVA_LOG.Error("register table failed", zap.Error(err))
......
......@@ -136,8 +136,8 @@ func Routers() *gin.Engine {
courseRouter.InitCourseActionRouter(PrivateGroup)
courseRouter.InitCourseSignupRouter(PrivateGroup)
courseRouter.InitCourseUsersRouter(PrivateGroup)
courseRouter.InitCourserActionUsersRouter(PrivateGroup)
courseRouter.InitCourserBannersRouter(PrivateGroup)
courseRouter.InitCourseActionUsersRouter(PrivateGroup)
courseRouter.InitCourseBannersRouter(PrivateGroup)
}
global.GVA_LOG.Info("router register success")
......
// 自动生成模板CourserActionUsers
// 自动生成模板CourseActionUsers
package course
import (
"courseSign/server/global"
"time"
"courseSign/server/global"
)
// CourserActionUsers 结构体
type CourserActionUsers struct {
// CourseActionUsers 结构体
type CourseActionUsers struct {
global.GVA_MODEL
Uid *int `json:"uid" form:"uid" gorm:"column:uid;comment:用户;size:10;"`
Cid *int `json:"cid" form:"cid" gorm:"column:cid;comment:课程;size:10;"`
......@@ -17,8 +18,8 @@ type CourserActionUsers struct {
}
// TableName CourserActionUsers 表名
func (CourserActionUsers) TableName() string {
return "courser_action_users"
// TableName CourseActionUsers 表名
func (CourseActionUsers) TableName() string {
return "course_action_users"
}
// 自动生成模板CourserBanners
// 自动生成模板CourseBanners
package course
import (
......@@ -6,8 +6,8 @@ import (
)
// CourserBanners 结构体
type CourserBanners struct {
// CourseBanners 结构体
type CourseBanners struct {
global.GVA_MODEL
Banner string `json:"banner" form:"banner" gorm:"column:banner;comment:图片;size:128;"`
Name string `json:"name" form:"name" gorm:"column:name;comment:名称;size:128;"`
......@@ -15,8 +15,8 @@ type CourserBanners struct {
}
// TableName CourserBanners 表名
func (CourserBanners) TableName() string {
return "courser_banners"
// TableName CourseBanners 表名
func (CourseBanners) TableName() string {
return "course_banners"
}
......@@ -14,9 +14,19 @@ type CourseSignup struct {
IsPass *bool `json:"isPass" form:"isPass" gorm:"column:is_pass;comment:通过 0 未 1 通过;"`
Addr string `json:"addr" form:"addr" gorm:"-"`
CourseName string `json:"courseName" form:"courseName" gorm:"-"`
}
type CourseSignupRead struct {
global.GVA_MODEL
Uid *int `json:"uid" form:"uid" gorm:"column:uid;comment:用户;size:10;"`
Cid *int `json:"cid" form:"cid" gorm:"column:cid;comment:课程;size:10;"`
IsPass *bool `json:"isPass" form:"isPass" gorm:"column:is_pass;comment:通过 0 未 1 通过;"`
Addr string `json:"addr" form:"addr" `
CourseName string `json:"courseName" form:"courseName" `
}
// TableName CourseSignup 表名
func (CourseSignup) TableName() string {
return "course_signup"
......
......@@ -18,6 +18,10 @@ type CourseUsers struct {
Company string `json:"company" form:"company" gorm:"column:company;comment:公司;size:128;"`
Position string `json:"position" form:"position" gorm:"column:position;comment:职务;size:36;"`
Invitor string `json:"invitor" form:"invitor" gorm:"column:invitor;comment:邀请者;size:72;"`
IsAdmin *bool `json:"isAdmin" form:"isAdmin" gorm:"column:is_admin;comment:管理员;size:72;"`
// CourseSignup `gorm:"foreignKey:Uid"`
// CourseActionUsers `gorm:"foreignKey:Uid"`
}
......
......@@ -6,8 +6,8 @@ import (
"time"
)
type CourserActionUsersSearch struct{
course.CourserActionUsers
type CourseActionUsersSearch struct{
course.CourseActionUsers
StartCreatedAt *time.Time `json:"startCreatedAt" form:"startCreatedAt"`
EndCreatedAt *time.Time `json:"endCreatedAt" form:"endCreatedAt"`
request.PageInfo
......
......@@ -6,8 +6,8 @@ import (
"time"
)
type CourserBannersSearch struct{
course.CourserBanners
type CourseBannersSearch struct{
course.CourseBanners
StartCreatedAt *time.Time `json:"startCreatedAt" form:"startCreatedAt"`
EndCreatedAt *time.Time `json:"endCreatedAt" form:"endCreatedAt"`
request.PageInfo
......
package course
import (
"courseSign/server/api/v1"
"courseSign/server/middleware"
"github.com/gin-gonic/gin"
)
type CourseActionUsersRouter struct {
}
// InitCourseActionUsersRouter 初始化 CourseActionUsers 路由信息
func (s *CourseActionUsersRouter) InitCourseActionUsersRouter(Router *gin.RouterGroup) {
courseActionUsersRouter := Router.Group("courseActionUsers").Use(middleware.OperationRecord())
courseActionUsersRouterWithoutRecord := Router.Group("courseActionUsers")
var courseActionUsersApi = v1.ApiGroupApp.CourseApiGroup.CourseActionUsersApi
{
courseActionUsersRouter.POST("createCourseActionUsers", courseActionUsersApi.CreateCourseActionUsers) // 新建CourseActionUsers
courseActionUsersRouter.DELETE("deleteCourseActionUsers", courseActionUsersApi.DeleteCourseActionUsers) // 删除CourseActionUsers
courseActionUsersRouter.DELETE("deleteCourseActionUsersByIds", courseActionUsersApi.DeleteCourseActionUsersByIds) // 批量删除CourseActionUsers
courseActionUsersRouter.PUT("updateCourseActionUsers", courseActionUsersApi.UpdateCourseActionUsers) // 更新CourseActionUsers
}
{
courseActionUsersRouterWithoutRecord.GET("findCourseActionUsers", courseActionUsersApi.FindCourseActionUsers) // 根据ID获取CourseActionUsers
courseActionUsersRouterWithoutRecord.GET("getCourseActionUsersList", courseActionUsersApi.GetCourseActionUsersList) // 获取CourseActionUsers列表
}
}
package course
import (
"courseSign/server/api/v1"
"courseSign/server/middleware"
"github.com/gin-gonic/gin"
)
type CourseBannersRouter struct {
}
// InitCourseBannersRouter 初始化 CourseBanners 路由信息
func (s *CourseBannersRouter) InitCourseBannersRouter(Router *gin.RouterGroup) {
courseBannersRouter := Router.Group("courseBanners").Use(middleware.OperationRecord())
courseBannersRouterWithoutRecord := Router.Group("courseBanners")
var courseBannersApi = v1.ApiGroupApp.CourseApiGroup.CourseBannersApi
{
courseBannersRouter.POST("createCourseBanners", courseBannersApi.CreateCourseBanners) // 新建CourseBanners
courseBannersRouter.DELETE("deleteCourseBanners", courseBannersApi.DeleteCourseBanners) // 删除CourseBanners
courseBannersRouter.DELETE("deleteCourseBannersByIds", courseBannersApi.DeleteCourseBannersByIds) // 批量删除CourseBanners
courseBannersRouter.PUT("updateCourseBanners", courseBannersApi.UpdateCourseBanners) // 更新CourseBanners
}
{
courseBannersRouterWithoutRecord.GET("findCourseBanners", courseBannersApi.FindCourseBanners) // 根据ID获取CourseBanners
courseBannersRouterWithoutRecord.GET("getCourseBannersList", courseBannersApi.GetCourseBannersList) // 获取CourseBanners列表
}
}
// InitCourseBannersWebRouter 初始化 CourseBanners 路由信息
func (s *CourseBannersRouter) InitCourseBannersWebRouter(Router *gin.RouterGroup) {
courseBannersRouterWithoutRecord := Router.Group("courseBanners")
var courseBannersApi = v1.ApiGroupApp.CourseApiGroup.CourseBannersApi
{
courseBannersRouterWithoutRecord.GET("getBanners", courseBannersApi.GetCourseBannersListWeb) // web端展示bannner 列表
}
}
......@@ -27,10 +27,12 @@ func (s *CourseUsersRouter) InitCourseUsersRouter(Router *gin.RouterGroup) {
}
// InitCourseUsersWebRouter 初始化 CourseUsers 路由信息
func (s *CourseUsersRouter) InitCourseUsersWebRouter(Router *gin.RouterGroup) {
courseUsersRouterWithoutRecord := Router.Group("courseUsers")
func (s *CourseUsersRouter) InitCourseUsersMetaMaskRouter(Router *gin.RouterGroup) {
courseUsersRouter := Router.Group("courseUsers").Use(middleware.OperationRecord())
//courseUsersRouterWithoutRecord := Router.Group("courseUsers")
var courseUsersApi = v1.ApiGroupApp.CourseApiGroup.CourseUsersApi
{
courseUsersRouterWithoutRecord.GET("findUsers", courseUsersApi.FindCourseUsersWeb) // 根据ID,addr获取用户信息
courseUsersRouter.GET("findUsers", courseUsersApi.FindCourseUsersMM) // 根据ID,addr获取用户信息
courseUsersRouter.POST("login",courseUsersApi.MetaMaskLogin)
}
}
package course
import (
"courseSign/server/api/v1"
"courseSign/server/middleware"
"github.com/gin-gonic/gin"
)
type CourserActionUsersRouter struct {
}
// InitCourserActionUsersRouter 初始化 CourserActionUsers 路由信息
func (s *CourserActionUsersRouter) InitCourserActionUsersRouter(Router *gin.RouterGroup) {
courserActionUsersRouter := Router.Group("courserActionUsers").Use(middleware.OperationRecord())
courserActionUsersRouterWithoutRecord := Router.Group("courserActionUsers")
var courserActionUsersApi = v1.ApiGroupApp.CourseApiGroup.CourserActionUsersApi
{
courserActionUsersRouter.POST("createCourserActionUsers", courserActionUsersApi.CreateCourserActionUsers) // 新建CourserActionUsers
courserActionUsersRouter.DELETE("deleteCourserActionUsers", courserActionUsersApi.DeleteCourserActionUsers) // 删除CourserActionUsers
courserActionUsersRouter.DELETE("deleteCourserActionUsersByIds", courserActionUsersApi.DeleteCourserActionUsersByIds) // 批量删除CourserActionUsers
courserActionUsersRouter.PUT("updateCourserActionUsers", courserActionUsersApi.UpdateCourserActionUsers) // 更新CourserActionUsers
}
{
courserActionUsersRouterWithoutRecord.GET("findCourserActionUsers", courserActionUsersApi.FindCourserActionUsers) // 根据ID获取CourserActionUsers
courserActionUsersRouterWithoutRecord.GET("getCourserActionUsersList", courserActionUsersApi.GetCourserActionUsersList) // 获取CourserActionUsers列表
}
}
package course
import (
"courseSign/server/api/v1"
"courseSign/server/middleware"
"github.com/gin-gonic/gin"
)
type CourserBannersRouter struct {
}
// InitCourserBannersRouter 初始化 CourserBanners 路由信息
func (s *CourserBannersRouter) InitCourserBannersRouter(Router *gin.RouterGroup) {
courserBannersRouter := Router.Group("courserBanners").Use(middleware.OperationRecord())
courserBannersRouterWithoutRecord := Router.Group("courserBanners")
var courserBannersApi = v1.ApiGroupApp.CourseApiGroup.CourserBannersApi
{
courserBannersRouter.POST("createCourserBanners", courserBannersApi.CreateCourserBanners) // 新建CourserBanners
courserBannersRouter.DELETE("deleteCourserBanners", courserBannersApi.DeleteCourserBanners) // 删除CourserBanners
courserBannersRouter.DELETE("deleteCourserBannersByIds", courserBannersApi.DeleteCourserBannersByIds) // 批量删除CourserBanners
courserBannersRouter.PUT("updateCourserBanners", courserBannersApi.UpdateCourserBanners) // 更新CourserBanners
}
{
courserBannersRouterWithoutRecord.GET("findCourserBanners", courserBannersApi.FindCourserBanners) // 根据ID获取CourserBanners
courserBannersRouterWithoutRecord.GET("getCourserBannersList", courserBannersApi.GetCourserBannersList) // 获取CourserBanners列表
}
}
// InitCourserBannersWebRouter 初始化 CourserBanners 路由信息
func (s *CourserBannersRouter) InitCourserBannersWebRouter(Router *gin.RouterGroup) {
courserBannersRouterWithoutRecord := Router.Group("courserBanners")
var courserBannersApi = v1.ApiGroupApp.CourseApiGroup.CourserBannersApi
{
courserBannersRouterWithoutRecord.GET("getBanners", courserBannersApi.GetCourserBannersListWeb) // web端展示bannner 列表
}
}
......@@ -5,6 +5,6 @@ type RouterGroup struct {
CourseActionRouter
CourseSignupRouter
CourseUsersRouter
CourserActionUsersRouter
CourserBannersRouter
CourseActionUsersRouter
CourseBannersRouter
}
......@@ -2,57 +2,57 @@ package course
import (
"courseSign/server/global"
"courseSign/server/model/course"
"courseSign/server/model/common/request"
courseReq "courseSign/server/model/course/request"
"courseSign/server/model/course"
courseReq "courseSign/server/model/course/request"
)
type CourserActionUsersService struct {
type CourseActionUsersService struct {
}
// CreateCourserActionUsers 创建CourserActionUsers记录
// CreateCourseActionUsers 创建CourseActionUsers记录
// Author [piexlmax](https://github.com/piexlmax)
func (courserActionUsersService *CourserActionUsersService) CreateCourserActionUsers(courserActionUsers course.CourserActionUsers) (err error) {
err = global.GVA_DB.Create(&courserActionUsers).Error
func (courseActionUsersService *CourseActionUsersService) CreateCourseActionUsers(courseActionUsers course.CourseActionUsers) (err error) {
err = global.GVA_DB.Create(&courseActionUsers).Error
return err
}
// DeleteCourserActionUsers 删除CourserActionUsers记录
// DeleteCourseActionUsers 删除CourseActionUsers记录
// Author [piexlmax](https://github.com/piexlmax)
func (courserActionUsersService *CourserActionUsersService)DeleteCourserActionUsers(courserActionUsers course.CourserActionUsers) (err error) {
err = global.GVA_DB.Delete(&courserActionUsers).Error
func (courseActionUsersService *CourseActionUsersService)DeleteCourseActionUsers(courseActionUsers course.CourseActionUsers) (err error) {
err = global.GVA_DB.Delete(&courseActionUsers).Error
return err
}
// DeleteCourserActionUsersByIds 批量删除CourserActionUsers记录
// DeleteCourseActionUsersByIds 批量删除CourseActionUsers记录
// Author [piexlmax](https://github.com/piexlmax)
func (courserActionUsersService *CourserActionUsersService)DeleteCourserActionUsersByIds(ids request.IdsReq) (err error) {
err = global.GVA_DB.Delete(&[]course.CourserActionUsers{},"id in ?",ids.Ids).Error
func (courseActionUsersService *CourseActionUsersService)DeleteCourseActionUsersByIds(ids request.IdsReq) (err error) {
err = global.GVA_DB.Delete(&[]course.CourseActionUsers{},"id in ?",ids.Ids).Error
return err
}
// UpdateCourserActionUsers 更新CourserActionUsers记录
// UpdateCourseActionUsers 更新CourseActionUsers记录
// Author [piexlmax](https://github.com/piexlmax)
func (courserActionUsersService *CourserActionUsersService)UpdateCourserActionUsers(courserActionUsers course.CourserActionUsers) (err error) {
err = global.GVA_DB.Save(&courserActionUsers).Error
func (courseActionUsersService *CourseActionUsersService)UpdateCourseActionUsers(courseActionUsers course.CourseActionUsers) (err error) {
err = global.GVA_DB.Save(&courseActionUsers).Error
return err
}
// GetCourserActionUsers 根据id获取CourserActionUsers记录
// GetCourseActionUsers 根据id获取CourseActionUsers记录
// Author [piexlmax](https://github.com/piexlmax)
func (courserActionUsersService *CourserActionUsersService)GetCourserActionUsers(id uint) (courserActionUsers course.CourserActionUsers, err error) {
err = global.GVA_DB.Where("id = ?", id).First(&courserActionUsers).Error
func (courseActionUsersService *CourseActionUsersService)GetCourseActionUsers(id uint) (courseActionUsers course.CourseActionUsers, err error) {
err = global.GVA_DB.Where("id = ?", id).First(&courseActionUsers).Error
return
}
// GetCourserActionUsersInfoList 分页获取CourserActionUsers记录
// GetCourseActionUsersInfoList 分页获取CourseActionUsers记录
// Author [piexlmax](https://github.com/piexlmax)
func (courserActionUsersService *CourserActionUsersService)GetCourserActionUsersInfoList(info courseReq.CourserActionUsersSearch) (list []course.CourserActionUsers, total int64, err error) {
func (courseActionUsersService *CourseActionUsersService)GetCourseActionUsersInfoList(info courseReq.CourseActionUsersSearch) (list []course.CourseActionUsers, total int64, err error) {
limit := info.PageSize
offset := info.PageSize * (info.Page - 1)
// 创建db
db := global.GVA_DB.Model(&course.CourserActionUsers{})
var courserActionUserss []course.CourserActionUsers
db := global.GVA_DB.Model(&course.CourseActionUsers{})
var courseActionUserss []course.CourseActionUsers
// 如果有条件搜索 下方会自动创建搜索语句
if info.StartCreatedAt !=nil && info.EndCreatedAt !=nil {
db = db.Where("created_at BETWEEN ? AND ?", info.StartCreatedAt, info.EndCreatedAt)
......@@ -77,6 +77,6 @@ func (courserActionUsersService *CourserActionUsersService)GetCourserActionUsers
return
}
err = db.Limit(limit).Offset(offset).Find(&courserActionUserss).Error
return courserActionUserss, total, err
err = db.Limit(limit).Offset(offset).Find(&courseActionUserss).Error
return courseActionUserss, total, err
}
......@@ -7,52 +7,52 @@ import (
courseReq "courseSign/server/model/course/request"
)
type CourserBannersService struct {
type CourseBannersService struct {
}
// CreateCourserBanners 创建CourserBanners记录
// CreateCourseBanners 创建CourseBanners记录
// Author [piexlmax](https://github.com/piexlmax)
func (courserBannersService *CourserBannersService) CreateCourserBanners(courserBanners course.CourserBanners) (err error) {
err = global.GVA_DB.Create(&courserBanners).Error
func (courseBannersService *CourseBannersService) CreateCourseBanners(courseBanners course.CourseBanners) (err error) {
err = global.GVA_DB.Create(&courseBanners).Error
return err
}
// DeleteCourserBanners 删除CourserBanners记录
// DeleteCourseBanners 删除CourseBanners记录
// Author [piexlmax](https://github.com/piexlmax)
func (courserBannersService *CourserBannersService)DeleteCourserBanners(courserBanners course.CourserBanners) (err error) {
err = global.GVA_DB.Delete(&courserBanners).Error
func (courseBannersService *CourseBannersService)DeleteCourseBanners(courseBanners course.CourseBanners) (err error) {
err = global.GVA_DB.Delete(&courseBanners).Error
return err
}
// DeleteCourserBannersByIds 批量删除CourserBanners记录
// DeleteCourseBannersByIds 批量删除CourseBanners记录
// Author [piexlmax](https://github.com/piexlmax)
func (courserBannersService *CourserBannersService)DeleteCourserBannersByIds(ids request.IdsReq) (err error) {
err = global.GVA_DB.Delete(&[]course.CourserBanners{},"id in ?",ids.Ids).Error
func (courseBannersService *CourseBannersService)DeleteCourseBannersByIds(ids request.IdsReq) (err error) {
err = global.GVA_DB.Delete(&[]course.CourseBanners{},"id in ?",ids.Ids).Error
return err
}
// UpdateCourserBanners 更新CourserBanners记录
// UpdateCourseBanners 更新CourseBanners记录
// Author [piexlmax](https://github.com/piexlmax)
func (courserBannersService *CourserBannersService)UpdateCourserBanners(courserBanners course.CourserBanners) (err error) {
err = global.GVA_DB.Save(&courserBanners).Error
func (courseBannersService *CourseBannersService)UpdateCourseBanners(courseBanners course.CourseBanners) (err error) {
err = global.GVA_DB.Save(&courseBanners).Error
return err
}
// GetCourserBanners 根据id获取CourserBanners记录
// GetCourseBanners 根据id获取CourseBanners记录
// Author [piexlmax](https://github.com/piexlmax)
func (courserBannersService *CourserBannersService)GetCourserBanners(id uint) (courserBanners course.CourserBanners, err error) {
err = global.GVA_DB.Where("id = ?", id).First(&courserBanners).Error
func (courseBannersService *CourseBannersService)GetCourseBanners(id uint) (courseBanners course.CourseBanners, err error) {
err = global.GVA_DB.Where("id = ?", id).First(&courseBanners).Error
return
}
// GetCourserBannersInfoList 分页获取CourserBanners记录
// GetCourseBannersInfoList 分页获取CourseBanners记录
// Author [piexlmax](https://github.com/piexlmax)
func (courserBannersService *CourserBannersService)GetCourserBannersInfoList(info courseReq.CourserBannersSearch) (list []course.CourserBanners, total int64, err error) {
func (courseBannersService *CourseBannersService)GetCourseBannersInfoList(info courseReq.CourseBannersSearch) (list []course.CourseBanners, total int64, err error) {
limit := info.PageSize
offset := info.PageSize * (info.Page - 1)
// 创建db
db := global.GVA_DB.Model(&course.CourserBanners{})
var courserBannerss []course.CourserBanners
db := global.GVA_DB.Model(&course.CourseBanners{})
var courseBannerss []course.CourseBanners
// 如果有条件搜索 下方会自动创建搜索语句
if info.StartCreatedAt !=nil && info.EndCreatedAt !=nil {
db = db.Where("created_at BETWEEN ? AND ?", info.StartCreatedAt, info.EndCreatedAt)
......@@ -62,6 +62,6 @@ func (courserBannersService *CourserBannersService)GetCourserBannersInfoList(inf
return
}
err = db.Limit(limit).Offset(offset).Find(&courserBannerss).Error
return courserBannerss, total, err
err = db.Limit(limit).Offset(offset).Find(&courseBannerss).Error
return courseBannerss, total, err
}
......@@ -2,9 +2,9 @@ package course
import (
"courseSign/server/global"
"courseSign/server/model/course"
"courseSign/server/model/common/request"
courseReq "courseSign/server/model/course/request"
"courseSign/server/model/course"
courseReq "courseSign/server/model/course/request"
)
type CourseSignupService struct {
......@@ -51,8 +51,9 @@ func (courseSignupService *CourseSignupService)GetCourseSignupInfoList(info cour
limit := info.PageSize
offset := info.PageSize * (info.Page - 1)
// 创建db
db := global.GVA_DB.Model(&course.CourseSignup{})
db := global.GVA_DB.Debug().Model(&course.CourseSignup{})
var courseSignups []course.CourseSignup
var courseSignupsRead []course.CourseSignupRead
// 如果有条件搜索 下方会自动创建搜索语句
if info.StartCreatedAt !=nil && info.EndCreatedAt !=nil {
db = db.Where("created_at BETWEEN ? AND ?", info.StartCreatedAt, info.EndCreatedAt)
......@@ -64,10 +65,26 @@ func (courseSignupService *CourseSignupService)GetCourseSignupInfoList(info cour
db = db.Where("cid = ?",info.Cid)
}
err = db.Count(&total).Error
db = db.Select("course_signup.*,course_users.address as addr,course_list.course_name").
Joins("join course_users on course_users.id = course_signup.uid").
Joins("join course_list on course_list.id = course_signup.cid")
if err!=nil {
return
}
err = db.Limit(limit).Offset(offset).Find(&courseSignups).Error
err = db.Limit(limit).
Offset(offset).
Find(&courseSignupsRead).Error
for _,v:= range courseSignupsRead {
var cs course.CourseSignup
cs.ID = v.ID
cs.CourseName = v.CourseName
cs.Addr = v.Addr
cs.Uid = v.Uid
cs.Cid = v.Cid
cs.CreatedAt = v.CreatedAt
cs.IsPass = v.IsPass
courseSignups = append(courseSignups,cs)
}
return courseSignups, total, err
}
......@@ -5,6 +5,6 @@ type ServiceGroup struct {
CourseActionService
CourseSignupService
CourseUsersService
CourserActionUsersService
CourserBannersService
CourseActionUsersService
CourseBannersService
}
import service from '@/utils/request'
// @Tags CourserActionUsers
// @Summary 创建CourserActionUsers
// @Tags CourseActionUsers
// @Summary 创建CourseActionUsers
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.CourserActionUsers true "创建CourserActionUsers"
// @Param data body model.CourseActionUsers true "创建CourseActionUsers"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /courserActionUsers/createCourserActionUsers [post]
export const createCourserActionUsers = (data) => {
// @Router /courseActionUsers/createCourseActionUsers [post]
export const createCourseActionUsers = (data) => {
return service({
url: '/courserActionUsers/createCourserActionUsers',
url: '/courseActionUsers/createCourseActionUsers',
method: 'post',
data
})
}
// @Tags CourserActionUsers
// @Summary 删除CourserActionUsers
// @Tags CourseActionUsers
// @Summary 删除CourseActionUsers
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.CourserActionUsers true "删除CourserActionUsers"
// @Param data body model.CourseActionUsers true "删除CourseActionUsers"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
// @Router /courserActionUsers/deleteCourserActionUsers [delete]
export const deleteCourserActionUsers = (data) => {
// @Router /courseActionUsers/deleteCourseActionUsers [delete]
export const deleteCourseActionUsers = (data) => {
return service({
url: '/courserActionUsers/deleteCourserActionUsers',
url: '/courseActionUsers/deleteCourseActionUsers',
method: 'delete',
data
})
}
// @Tags CourserActionUsers
// @Summary 删除CourserActionUsers
// @Tags CourseActionUsers
// @Summary 删除CourseActionUsers
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body request.IdsReq true "批量删除CourserActionUsers"
// @Param data body request.IdsReq true "批量删除CourseActionUsers"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
// @Router /courserActionUsers/deleteCourserActionUsers [delete]
export const deleteCourserActionUsersByIds = (data) => {
// @Router /courseActionUsers/deleteCourseActionUsers [delete]
export const deleteCourseActionUsersByIds = (data) => {
return service({
url: '/courserActionUsers/deleteCourserActionUsersByIds',
url: '/courseActionUsers/deleteCourseActionUsersByIds',
method: 'delete',
data
})
}
// @Tags CourserActionUsers
// @Summary 更新CourserActionUsers
// @Tags CourseActionUsers
// @Summary 更新CourseActionUsers
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.CourserActionUsers true "更新CourserActionUsers"
// @Param data body model.CourseActionUsers true "更新CourseActionUsers"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}"
// @Router /courserActionUsers/updateCourserActionUsers [put]
export const updateCourserActionUsers = (data) => {
// @Router /courseActionUsers/updateCourseActionUsers [put]
export const updateCourseActionUsers = (data) => {
return service({
url: '/courserActionUsers/updateCourserActionUsers',
url: '/courseActionUsers/updateCourseActionUsers',
method: 'put',
data
})
}
// @Tags CourserActionUsers
// @Summary 用id查询CourserActionUsers
// @Tags CourseActionUsers
// @Summary 用id查询CourseActionUsers
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data query model.CourserActionUsers true "用id查询CourserActionUsers"
// @Param data query model.CourseActionUsers true "用id查询CourseActionUsers"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}"
// @Router /courserActionUsers/findCourserActionUsers [get]
export const findCourserActionUsers = (params) => {
// @Router /courseActionUsers/findCourseActionUsers [get]
export const findCourseActionUsers = (params) => {
return service({
url: '/courserActionUsers/findCourserActionUsers',
url: '/courseActionUsers/findCourseActionUsers',
method: 'get',
params
})
}
// @Tags CourserActionUsers
// @Summary 分页获取CourserActionUsers列表
// @Tags CourseActionUsers
// @Summary 分页获取CourseActionUsers列表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data query request.PageInfo true "分页获取CourserActionUsers列表"
// @Param data query request.PageInfo true "分页获取CourseActionUsers列表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /courserActionUsers/getCourserActionUsersList [get]
export const getCourserActionUsersList = (params) => {
// @Router /courseActionUsers/getCourseActionUsersList [get]
export const getCourseActionUsersList = (params) => {
return service({
url: '/courserActionUsers/getCourserActionUsersList',
url: '/courseActionUsers/getCourseActionUsersList',
method: 'get',
params
})
......
import service from '@/utils/request'
// @Tags CourserBanners
// @Summary 创建CourserBanners
// @Tags CourseBanners
// @Summary 创建CourseBanners
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.CourserBanners true "创建CourserBanners"
// @Param data body model.CourseBanners true "创建CourseBanners"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /courserBanners/createCourserBanners [post]
export const createCourserBanners = (data) => {
// @Router /courseBanners/createCourseBanners [post]
export const createCourseBanners = (data) => {
return service({
url: '/courserBanners/createCourserBanners',
url: '/courseBanners/createCourseBanners',
method: 'post',
data
})
}
// @Tags CourserBanners
// @Summary 删除CourserBanners
// @Tags CourseBanners
// @Summary 删除CourseBanners
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.CourserBanners true "删除CourserBanners"
// @Param data body model.CourseBanners true "删除CourseBanners"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
// @Router /courserBanners/deleteCourserBanners [delete]
export const deleteCourserBanners = (data) => {
// @Router /courseBanners/deleteCourseBanners [delete]
export const deleteCourseBanners = (data) => {
return service({
url: '/courserBanners/deleteCourserBanners',
url: '/courseBanners/deleteCourseBanners',
method: 'delete',
data
})
}
// @Tags CourserBanners
// @Summary 删除CourserBanners
// @Tags CourseBanners
// @Summary 删除CourseBanners
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body request.IdsReq true "批量删除CourserBanners"
// @Param data body request.IdsReq true "批量删除CourseBanners"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
// @Router /courserBanners/deleteCourserBanners [delete]
export const deleteCourserBannersByIds = (data) => {
// @Router /courseBanners/deleteCourseBanners [delete]
export const deleteCourseBannersByIds = (data) => {
return service({
url: '/courserBanners/deleteCourserBannersByIds',
url: '/courseBanners/deleteCourseBannersByIds',
method: 'delete',
data
})
}
// @Tags CourserBanners
// @Summary 更新CourserBanners
// @Tags CourseBanners
// @Summary 更新CourseBanners
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body model.CourserBanners true "更新CourserBanners"
// @Param data body model.CourseBanners true "更新CourseBanners"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}"
// @Router /courserBanners/updateCourserBanners [put]
export const updateCourserBanners = (data) => {
// @Router /courseBanners/updateCourseBanners [put]
export const updateCourseBanners = (data) => {
return service({
url: '/courserBanners/updateCourserBanners',
url: '/courseBanners/updateCourseBanners',
method: 'put',
data
})
}
// @Tags CourserBanners
// @Summary 用id查询CourserBanners
// @Tags CourseBanners
// @Summary 用id查询CourseBanners
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data query model.CourserBanners true "用id查询CourserBanners"
// @Param data query model.CourseBanners true "用id查询CourseBanners"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}"
// @Router /courserBanners/findCourserBanners [get]
export const findCourserBanners = (params) => {
// @Router /courseBanners/findCourseBanners [get]
export const findCourseBanners = (params) => {
return service({
url: '/courserBanners/findCourserBanners',
url: '/courseBanners/findCourseBanners',
method: 'get',
params
})
}
// @Tags CourserBanners
// @Summary 分页获取CourserBanners列表
// @Tags CourseBanners
// @Summary 分页获取CourseBanners列表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data query request.PageInfo true "分页获取CourserBanners列表"
// @Param data query request.PageInfo true "分页获取CourseBanners列表"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /courserBanners/getCourserBannersList [get]
export const getCourserBannersList = (params) => {
// @Router /courseBanners/getCourseBannersList [get]
export const getCourseBannersList = (params) => {
return service({
url: '/courserBanners/getCourserBannersList',
url: '/courseBanners/getCourseBannersList',
method: 'get',
params
})
......
......@@ -95,9 +95,6 @@
</div>
<el-dialog v-model="dialogFormVisible" :before-close="closeDialog" title="添加活动" custom-class="user-dialog">
<el-form :model="formData" label-position="right" ref="elFormRef" :rules="rule" label-width="80px">
<el-form-item label="课程:" prop="cid" >
<el-input v-model.number="formData.cid" :clearable="true" placeholder="请输入" />
</el-form-item>
<el-form-item label="活动名称:" prop="actionName" >
<el-input v-model="formData.actionName" :clearable="true" placeholder="请输入" />
</el-form-item>
......@@ -127,7 +124,7 @@
</div>
</template>
</el-dialog>
<ChooseImg ref="chooseImg" :target="formData" :target-key="`banner`" />
<ChooseImg ref="chooseImg" :target="formData" :target-key="`actionBanner`" />
</div>
</template>
......@@ -148,17 +145,17 @@ import {
} from '@/api/courseAction'
// 全量引入格式化工具 请按需保留
import { useRouter, onBeforeRouteUpdate } from 'vue-router'
import { getDictFunc, formatDate, formatBoolean, filterDict } from '@/utils/format'
import { ElMessage, ElMessageBox } from 'element-plus'
import { useRoute, onBeforeRouteUpdate } from 'vue-router'
import { ref, reactive } from 'vue'
import ChooseImg from '@/components/chooseImg/index.vue'
const path = ref(import.meta.env.VITE_BASE_API + '/')
const router = useRouter()
const route = useRoute()
//console.log(route)
onBeforeRouteUpdate((to) => {
if (to.name === 'courseAction') {
console.log(to)
......@@ -205,11 +202,11 @@ const total = ref(0)
const pageSize = ref(10)
const tableData = ref([])
const searchInfo = ref({})
//const searchInfo = ref({ cid: Number(router.params.id) })
//const searchInfo = ref({ cid: Number(route.params.id) })
// 重置
const onReset = () => {
searchInfo.value = { cid: Number(router.params.id) }
searchInfo.value = { cid: Number(route.params.id) }
getTableData()
}
......@@ -360,6 +357,7 @@ const closeDialog = () => {
}
// 弹窗确定
const enterDialog = async () => {
formData.value.aid = Number(route.params.id)
elFormRef.value?.validate( async (valid) => {
if (!valid) return
let res
......@@ -386,35 +384,35 @@ const enterDialog = async () => {
}
</script>
<style>
<style lang="scss">
.user-dialog {
.header-img-box {
width: 200px;
height: 200px;
border: 1px dashed #ccc;
border-radius: 20px;
text-align: center;
line-height: 200px;
cursor: pointer;
}
.avatar-uploader .el-upload:hover {
border-color: #409eff;
}
.avatar-uploader-icon {
border: 1px dashed #d9d9d9 !important;
border-radius: 6px;
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
line-height: 178px;
text-align: center;
}
.avatar {
width: 178px;
height: 178px;
display: block;
}
.header-img-box {
width: 200px;
height: 200px;
border: 1px dashed #ccc;
border-radius: 20px;
text-align: center;
line-height: 200px;
cursor: pointer;
}
.avatar-uploader .el-upload:hover {
border-color: #409eff;
}
.avatar-uploader-icon {
border: 1px dashed #d9d9d9 !important;
border-radius: 6px;
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
line-height: 178px;
text-align: center;
}
.avatar {
width: 178px;
height: 178px;
display: block;
}
}
.nickName{
display: flex;
......
......@@ -84,7 +84,7 @@
</el-table-column>
<el-table-column align="left" label="按钮组">
<template #default="scope">
<el-button type="primary" link icon="edit" class="table-button" @click="updateCourserActionUsersFunc(scope.row)">变更</el-button>
<el-button type="primary" link icon="edit" class="table-button" @click="updateCourseActionUsersFunc(scope.row)">变更</el-button>
<el-button type="primary" link icon="delete" @click="deleteRow(scope.row)">删除</el-button>
</template>
</el-table-column>
......@@ -131,19 +131,19 @@
<script>
export default {
name: 'CourserActionUsers'
name: 'CourseActionUsers'
}
</script>
<script setup>
import {
createCourserActionUsers,
deleteCourserActionUsers,
deleteCourserActionUsersByIds,
updateCourserActionUsers,
findCourserActionUsers,
getCourserActionUsersList
} from '@/api/courserActionUsers'
createCourseActionUsers,
deleteCourseActionUsers,
deleteCourseActionUsersByIds,
updateCourseActionUsers,
findCourseActionUsers,
getCourseActionUsersList
} from '@/api/courseActionUsers'
// 全量引入格式化工具 请按需保留
import { getDictFunc, formatDate, formatBoolean, filterDict } from '@/utils/format'
......@@ -203,7 +203,7 @@ const handleCurrentChange = (val) => {
// 查询
const getTableData = async() => {
const table = await getCourserActionUsersList({ page: page.value, pageSize: pageSize.value, ...searchInfo.value })
const table = await getCourseActionUsersList({ page: page.value, pageSize: pageSize.value, ...searchInfo.value })
if (table.code === 0) {
tableData.value = table.data.list
total.value = table.data.total
......@@ -238,7 +238,7 @@ const deleteRow = (row) => {
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteCourserActionUsersFunc(row)
deleteCourseActionUsersFunc(row)
})
}
......@@ -260,7 +260,7 @@ const onDelete = async() => {
multipleSelection.value.map(item => {
ids.push(item.ID)
})
const res = await deleteCourserActionUsersByIds({ ids })
const res = await deleteCourseActionUsersByIds({ ids })
if (res.code === 0) {
ElMessage({
type: 'success',
......@@ -278,19 +278,19 @@ const onDelete = async() => {
const type = ref('')
// 更新行
const updateCourserActionUsersFunc = async(row) => {
const res = await findCourserActionUsers({ ID: row.ID })
const updateCourseActionUsersFunc = async(row) => {
const res = await findCourseActionUsers({ ID: row.ID })
type.value = 'update'
if (res.code === 0) {
formData.value = res.data.recourserActionUsers
formData.value = res.data.recourseActionUsers
dialogFormVisible.value = true
}
}
// 删除行
const deleteCourserActionUsersFunc = async (row) => {
const res = await deleteCourserActionUsers({ ID: row.ID })
const deleteCourseActionUsersFunc = async (row) => {
const res = await deleteCourseActionUsers({ ID: row.ID })
if (res.code === 0) {
ElMessage({
type: 'success',
......@@ -330,13 +330,13 @@ const enterDialog = async () => {
let res
switch (type.value) {
case 'create':
res = await createCourserActionUsers(formData.value)
res = await createCourseActionUsers(formData.value)
break
case 'update':
res = await updateCourserActionUsers(formData.value)
res = await updateCourseActionUsers(formData.value)
break
default:
res = await createCourserActionUsers(formData.value)
res = await createCourseActionUsers(formData.value)
break
}
if (res.code === 0) {
......
......@@ -28,16 +28,16 @@
<script>
export default {
name: 'CourserActionUsers'
name: 'CourseActionUsers'
}
</script>
<script setup>
import {
createCourserActionUsers,
updateCourserActionUsers,
findCourserActionUsers
} from '@/api/courserActionUsers'
createCourseActionUsers,
updateCourseActionUsers,
findCourseActionUsers
} from '@/api/courseActionUsers'
// 自动获取字典
import { getDictFunc } from '@/utils/format'
......@@ -65,9 +65,9 @@ const elFormRef = ref()
const init = async () => {
// 建议通过url传参获取目标数据ID 调用 find方法进行查询数据操作 从而决定本页面是create还是update 以下为id作为url参数示例
if (route.query.id) {
const res = await findCourserActionUsers({ ID: route.query.id })
const res = await findCourseActionUsers({ ID: route.query.id })
if (res.code === 0) {
formData.value = res.data.recourserActionUsers
formData.value = res.data.recourseActionUsers
type.value = 'update'
}
} else {
......@@ -83,13 +83,13 @@ const save = async() => {
let res
switch (type.value) {
case 'create':
res = await createCourserActionUsers(formData.value)
res = await createCourseActionUsers(formData.value)
break
case 'update':
res = await updateCourserActionUsers(formData.value)
res = await updateCourseActionUsers(formData.value)
break
default:
res = await createCourserActionUsers(formData.value)
res = await createCourseActionUsers(formData.value)
break
}
if (res.code === 0) {
......
......@@ -44,7 +44,7 @@
<el-table-column align="left" label="详情" prop="desc" width="120" />
<el-table-column align="left" label="按钮组">
<template #default="scope">
<el-button type="primary" link icon="edit" class="table-button" @click="updateCourserBannersFunc(scope.row)">变更</el-button>
<el-button type="primary" link icon="edit" class="table-button" @click="updateCourseBannersFunc(scope.row)">变更</el-button>
<el-button type="primary" link icon="delete" @click="deleteRow(scope.row)">删除</el-button>
</template>
</el-table-column>
......@@ -89,19 +89,19 @@
<script>
export default {
name: 'CourserBanners'
name: 'CourseBanners'
}
</script>
<script setup>
import {
createCourserBanners,
deleteCourserBanners,
deleteCourserBannersByIds,
updateCourserBanners,
findCourserBanners,
getCourserBannersList
} from '@/api/courserBanners'
createCourseBanners,
deleteCourseBanners,
deleteCourseBannersByIds,
updateCourseBanners,
findCourseBanners,
getCourseBannersList
} from '@/api/courseBanners'
// 全量引入格式化工具 请按需保留
import { getDictFunc, formatDate, formatBoolean, filterDict } from '@/utils/format'
......@@ -158,7 +158,7 @@ const handleCurrentChange = (val) => {
// 查询
const getTableData = async() => {
const table = await getCourserBannersList({ page: page.value, pageSize: pageSize.value, ...searchInfo.value })
const table = await getCourseBannersList({ page: page.value, pageSize: pageSize.value, ...searchInfo.value })
if (table.code === 0) {
tableData.value = table.data.list
total.value = table.data.total
......@@ -193,7 +193,7 @@ const deleteRow = (row) => {
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteCourserBannersFunc(row)
deleteCourseBannersFunc(row)
})
}
......@@ -219,7 +219,7 @@ const onDelete = async() => {
multipleSelection.value.map(item => {
ids.push(item.ID)
})
const res = await deleteCourserBannersByIds({ ids })
const res = await deleteCourseBannersByIds({ ids })
if (res.code === 0) {
ElMessage({
type: 'success',
......@@ -237,19 +237,19 @@ const onDelete = async() => {
const type = ref('')
// 更新行
const updateCourserBannersFunc = async(row) => {
const res = await findCourserBanners({ ID: row.ID })
const updateCourseBannersFunc = async(row) => {
const res = await findCourseBanners({ ID: row.ID })
type.value = 'update'
if (res.code === 0) {
formData.value = res.data.recourserBanners
formData.value = res.data.recourseBanners
dialogFormVisible.value = true
}
}
// 删除行
const deleteCourserBannersFunc = async (row) => {
const res = await deleteCourserBanners({ ID: row.ID })
const deleteCourseBannersFunc = async (row) => {
const res = await deleteCourseBanners({ ID: row.ID })
if (res.code === 0) {
ElMessage({
type: 'success',
......@@ -287,13 +287,13 @@ const enterDialog = async () => {
let res
switch (type.value) {
case 'create':
res = await createCourserBanners(formData.value)
res = await createCourseBanners(formData.value)
break
case 'update':
res = await updateCourserBanners(formData.value)
res = await updateCourseBanners(formData.value)
break
default:
res = await createCourserBanners(formData.value)
res = await createCourseBanners(formData.value)
break
}
if (res.code === 0) {
......
......@@ -22,16 +22,16 @@
<script>
export default {
name: 'CourserBanners'
name: 'CourseBanners'
}
</script>
<script setup>
import {
createCourserBanners,
updateCourserBanners,
findCourserBanners
} from '@/api/courserBanners'
createCourseBanners,
updateCourseBanners,
findCourseBanners
} from '@/api/courseBanners'
// 自动获取字典
import { getDictFunc } from '@/utils/format'
......@@ -57,9 +57,9 @@ const elFormRef = ref()
const init = async () => {
// 建议通过url传参获取目标数据ID 调用 find方法进行查询数据操作 从而决定本页面是create还是update 以下为id作为url参数示例
if (route.query.id) {
const res = await findCourserBanners({ ID: route.query.id })
const res = await findCourseBanners({ ID: route.query.id })
if (res.code === 0) {
formData.value = res.data.recourserBanners
formData.value = res.data.recourseBanners
type.value = 'update'
}
} else {
......@@ -75,13 +75,13 @@ const save = async() => {
let res
switch (type.value) {
case 'create':
res = await createCourserBanners(formData.value)
res = await createCourseBanners(formData.value)
break
case 'update':
res = await updateCourserBanners(formData.value)
res = await updateCourseBanners(formData.value)
break
default:
res = await createCourserBanners(formData.value)
res = await createCourseBanners(formData.value)
break
}
if (res.code === 0) {
......
......@@ -9,7 +9,7 @@
</el-form-item>
<el-form-item label="用户">
<el-input v-model.number="searchInfo.uid" placeholder="搜索条件" />
<el-input v-model.number="searchInfo.addr" placeholder="搜索条件" />
</el-form-item>
<el-form-item label="课程">
......@@ -25,7 +25,7 @@
</div>
<div class="gva-table-box">
<div class="gva-btn-list">
<el-button type="primary" icon="plus" @click="openDialog">新增</el-button>
<!-- <el-button type="primary" icon="plus" @click="openDialog">新增</el-button>-->
<el-popover v-model:visible="deleteVisible" placement="top" width="160">
<p>确定要删除吗?</p>
<div style="text-align: right; margin-top: 8px;">
......@@ -49,14 +49,14 @@
<el-table-column align="left" label="日期" width="180">
<template #default="scope">{{ formatDate(scope.row.CreatedAt) }}</template>
</el-table-column>
<el-table-column align="left" label="用户" prop="uid" width="120" />
<el-table-column align="left" label="课程" prop="cid" width="120" />
<el-table-column align="left" label="用户" prop="addr" width="120" />
<el-table-column align="left" label="课程" prop="courseName" width="120" />
<el-table-column align="left" label="通过 0 未 1 通过" prop="isPass" width="120">
<template #default="scope">{{ formatBoolean(scope.row.isPass) }}</template>
</el-table-column>
<el-table-column align="left" label="按钮组">
<template #default="scope">
<el-button type="primary" link icon="edit" class="table-button" @click="updateCourseSignupFunc(scope.row)">变更</el-button>
<el-button type="primary" link icon="edit" class="table-button" @click="updateCourseSignupFunc(scope.row)">审核</el-button>
<el-button type="primary" link icon="delete" @click="deleteRow(scope.row)">删除</el-button>
</template>
</el-table-column>
......@@ -75,13 +75,13 @@
</div>
<el-dialog v-model="dialogFormVisible" :before-close="closeDialog" title="弹窗操作">
<el-form :model="formData" label-position="right" ref="elFormRef" :rules="rule" label-width="80px">
<el-form-item label="用户:" prop="uid" >
<el-input v-model.number="formData.uid" :clearable="true" placeholder="请输入" />
</el-form-item>
<el-form-item label="课程:" prop="cid" >
<el-input v-model.number="formData.cid" :clearable="true" placeholder="请输入" />
</el-form-item>
<el-form-item label="通过 0 未 1 通过:" prop="isPass" >
<!-- <el-form-item label="用户:" prop="uid" >-->
<!-- <el-input v-model.number="formData.uid" :clearable="true" placeholder="请输入" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="课程:" prop="cid" >-->
<!-- <el-input v-model.number="formData.cid" :clearable="true" placeholder="请输入" />-->
<!-- </el-form-item>-->
<el-form-item label="通过:" prop="isPass" >
<el-switch v-model="formData.isPass" active-color="#13ce66" inactive-color="#ff4949" active-text="是" inactive-text="否" clearable ></el-switch>
</el-form-item>
</el-form>
......
......@@ -116,9 +116,9 @@
<el-form-item label="电话:" prop="phone" >
<el-input v-model="formData.phone" :clearable="true" placeholder="请输入" />
</el-form-item>
<el-form-item label="头像:" prop="photo" >
<el-input v-model="formData.photo" :clearable="true" placeholder="请输入" />
</el-form-item>
<!-- <el-form-item label="头像:" prop="photo" >-->
<!-- <el-input v-model="formData.photo" :clearable="true" placeholder="请输入" />-->
<!-- </el-form-item>-->
<el-form-item label="公司:" prop="company" >
<el-input v-model="formData.company" :clearable="true" placeholder="请输入" />
</el-form-item>
......
......@@ -152,7 +152,7 @@ const path = ref(import.meta.env.VITE_BASE_API + '/')
const twi_act_temp_typeOptions = ref([])
const twi_act_templateOptions = ref([])
const route = useRoute()
console.log(route)
onBeforeRouteUpdate((to) => {
if (to.name === 'twiActTemplate') {
searchInfo.value.actId = to.params.Id
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment