k.zhang 6 月之前
父节点
当前提交
902a949dea

+ 11 - 0
apis/shanghu/base.go

@@ -69,4 +69,15 @@ func InitShangHuRouter(engine *gin.RouterGroup) {
 		recharge.POST("/merchant/cancel/log", GetMerchantRechargeLog)               // 商家核销记录
 		recharge.POST("/merchant/cancel/log", GetMerchantRechargeLog)               // 商家核销记录
 		recharge.POST("/client/cancel/log", GetClientRechargeLog)                   // c端核销记录
 		recharge.POST("/client/cancel/log", GetClientRechargeLog)                   // c端核销记录
 	}
 	}
+
+	activeV1 := engine.Group("activeV1")
+	{
+		activeV1.POST("/active/draw/product/create", DrawProductCreate) //抽奖奖品创建
+		activeV1.POST("/active/group/buy/create", GroupBuyCreate)       //拼团创建
+		activeV1.POST("/active/config/create", ActiveConfigCreate)      //创建活动
+		//活动列表
+		activeV1.POST("/active/config/info", ActiveConfigInfo) //活动详情
+		//奖品列表
+		//拼团列表
+	}
 }
 }

+ 161 - 0
apis/shanghu/merchant.active.config.go

@@ -0,0 +1,161 @@
+package shanghu
+
+import (
+	"duoduo/apis/shanghu/models"
+	"duoduo/models/shanghu"
+	"duoduo/tools/app"
+	"errors"
+	"github.com/gin-gonic/gin"
+	"time"
+)
+
+// 一个活动对应一个抽奖,一个抽奖对应多个奖品
+// 一个活动对应多个拼团,一个拼团对应一个张主图,一个拼团对应多个商品(多个商品是为了核销)
+func ActiveConfigCreate(c *gin.Context) {
+	var inData models.CreateActiveConfigRequest
+	var sqlData shanghu.MerchantActiveConfig
+
+	err := c.ShouldBindJSON(&inData)
+	if err != nil {
+		app.Error(c, 400, err, err.Error())
+		return
+	}
+
+	if inData.GroupBuyMode == 0 && inData.DrawMode == 0 {
+		app.Error(c, 500, errors.New("请选择抽奖与开团"), "请选择抽奖与开团")
+		return
+	}
+
+	sqlData.MerchantOpenID = inData.MerchantOpenID
+	sqlData.CreatedAt = time.Now()
+	sqlData.UpdatedAt = time.Now()
+	sqlData.ConfigMode = 1
+	sqlData.DrawOneBiZhong = inData.DrawOneBiZhong
+	sqlData.DrawMode = inData.DrawMode
+	sqlData.GroupBuyMode = inData.GroupBuyMode
+	sqlData.GroupBuyUrl = inData.GroupBuyUrl
+	sqlData.GroupBuy = `{}`
+	sqlData.DrawProduct = `{}`
+
+	configData, err := sqlData.Create()
+	if err != nil {
+		app.Error(c, 500, err, err.Error())
+		return
+	}
+
+	for _, v := range inData.DrawId {
+		var drawData shanghu.MerchantActiveDrawProduct
+		drawData.ActiveConfigID = configData.ID
+		err = drawData.UpdateConfigId(v)
+		if err != nil {
+			app.Error(c, 500, err, err.Error())
+			return
+		}
+	}
+	for _, v := range inData.GroupBuyId {
+		var groupBuy shanghu.MerchantActiveGroupBuy
+		groupBuy.ActiveConfigID = configData.ID
+		err = groupBuy.UpdateConfigId(v)
+		if err != nil {
+			app.Error(c, 500, err, err.Error())
+			return
+		}
+	}
+
+	app.OK(c, nil, app.Success)
+}
+
+// 活动配置信息
+func ActiveConfigInfo(c *gin.Context) {
+	var inData models.ActiveConfigRequest
+	var sqlData shanghu.MerchantActiveConfig
+	var outData models.ActiveConfigReply
+	var drawInfoSql shanghu.MerchantActiveDrawProduct
+	var groupBuy shanghu.MerchantActiveGroupBuy
+
+	err := c.ShouldBindJSON(&inData)
+	if err != nil {
+		app.Error(c, 400, err, err.Error())
+		return
+	}
+
+	sqlData.MerchantOpenID = inData.MerchantOpenID
+	sqlData.ID = inData.ActiveConfigId
+
+	configInfo, err := sqlData.GetConfigInfoById()
+	if err != nil {
+		app.Error(c, 500, err, err.Error())
+		return
+	}
+	outData.GroupBuyMode = configInfo.GroupBuyMode
+	outData.DrawMode = configInfo.DrawMode
+	outData.GroupBuyUrl = configInfo.GroupBuyUrl
+	outData.DrawOneBiZhong = configInfo.DrawOneBiZhong
+
+	//中奖商品
+	drawInfoSql.ActiveConfigID = configInfo.ID
+
+	drawInfo, _, err := drawInfoSql.GetDrawProductList()
+	if err != nil {
+		app.Error(c, 500, err, err.Error())
+		return
+	}
+
+	for _, v := range drawInfo {
+		var drawProduct models.DrawProduct
+		drawProduct.DrawProductName = v.DrawProductName
+		drawProduct.DrawUrl = v.DrawUrl
+		drawProduct.DrawOdds = v.DrawOdds
+		drawProduct.IsPrize = v.IsPrize
+		drawProduct.TotalStock = v.TotalStock
+		drawProduct.Stock = v.Stock
+		outData.DrawProduct = append(outData.DrawProduct, drawProduct)
+	}
+
+	// 查询拼团列表
+	groupBuy.ActiveConfigID = configInfo.ID
+
+	groupBuyInfoList, _, err := groupBuy.GetGroupBuyList()
+	if err != nil {
+		app.Error(c, 500, err, err.Error())
+		return
+	}
+
+	for _, v := range groupBuyInfoList {
+		var groupBuyInfo models.DrawGroupBuy
+		var groupBuyProject shanghu.MerchantActiveGroupByProject
+		groupBuyInfo.GroupBuyName = v.GroupBuyName
+		groupBuyInfo.GroupBuyMode = v.GroupBuyMode
+		groupBuyInfo.GroupBuyUrl = v.GroupBuyUrl
+		groupBuyInfo.GroupBuyThreeNum = v.GroupBuyThreeNum
+		groupBuyInfo.GroupBuyThreePrice = v.GroupBuyThreePrice
+		groupBuyInfo.GroupBuyFourNum = v.GroupBuyFourNum
+		groupBuyInfo.GroupBuyFourPrice = v.GroupBuyFourPrice
+		groupBuyInfo.GroupBuyTwoNum = v.GroupBuyTwoNum
+		groupBuyInfo.GroupBuyTwoPrice = v.GroupBuyTwoPrice
+		groupBuyInfo.GroupBuyOneNum = v.GroupBuyOneNum
+		groupBuyInfo.GroupBuyOnePrice = v.GroupBuyOnePrice
+		groupBuyInfo.MerchantOpenID = v.MerchantOpenID
+		groupBuyInfo.OriginalPrice = v.OriginalPrice
+
+		groupBuyProject.GroupBuyID = v.ID
+		projectList, _, err := groupBuyProject.GetGroupBuyProjectList()
+		if err != nil {
+			app.Error(c, 500, err, err.Error())
+			return
+		}
+
+		for _, v := range projectList {
+			var groupBuyProjectInfo models.GroupBuyProject
+			groupBuyProjectInfo.ProjectName = v.ProjectName
+			groupBuyProjectInfo.CancelNum = v.CancelNum
+			groupBuyInfo.GroupBuyProject = append(groupBuyInfo.GroupBuyProject, groupBuyProjectInfo)
+		}
+
+		outData.DrawGroupBuy = append(outData.DrawGroupBuy, groupBuyInfo)
+
+	}
+
+	app.OK(c, outData, app.Success)
+
+}

+ 52 - 0
apis/shanghu/merchant.active.draw.product.go

@@ -0,0 +1,52 @@
+package shanghu
+
+import (
+	"duoduo/apis/shanghu/models"
+	"duoduo/models/shanghu"
+	"duoduo/tools/app"
+	"errors"
+	"github.com/gin-gonic/gin"
+	"github.com/shopspring/decimal"
+	"time"
+)
+
+// 中奖商品与库存
+func DrawProductCreate(c *gin.Context) {
+	var inData models.CreateDrawProductRequest
+	var sqlData shanghu.MerchantActiveDrawProduct
+
+	err := c.ShouldBindJSON(&inData)
+	if err != nil {
+		app.Error(c, 400, err, err.Error())
+		return
+	}
+
+	if inData.DrawProductName == "" || inData.DrawUrl == "" || inData.TotalStock <= 0 {
+		app.Error(c, 500, errors.New("必填参数缺失"), "必填参数缺失")
+		return
+	}
+
+	if !inData.DrawOdds.GreaterThan(decimal.NewFromFloat(0)) {
+		app.Error(c, 500, errors.New("中奖率需要大于0"), "中奖率需要大于0")
+		return
+	}
+
+	sqlData.CreatedAt = time.Now()
+	sqlData.UpdatedAt = time.Now()
+	sqlData.DrawOdds = inData.DrawOdds
+	sqlData.TotalStock = inData.TotalStock
+	sqlData.MerchantOpenID = inData.MerchantOpenID
+	sqlData.DrawProductName = inData.DrawProductName
+	sqlData.Stock = 0
+	sqlData.DrawUrl = inData.DrawUrl
+	sqlData.Version = 0
+	sqlData.IsPrize = inData.IsPrize
+
+	_, err = sqlData.Create()
+	if err != nil {
+		app.Error(c, 500, err, err.Error())
+		return
+	}
+
+	app.OK(c, nil, app.Success)
+}

+ 62 - 0
apis/shanghu/merchant.active.group.buy.go

@@ -0,0 +1,62 @@
+package shanghu
+
+import (
+	"duoduo/apis/shanghu/models"
+	"duoduo/models/shanghu"
+	"duoduo/tools/app"
+	"github.com/gin-gonic/gin"
+	"time"
+)
+
+// 拼团与商品一起创建
+func GroupBuyCreate(c *gin.Context) {
+	var inData models.CreateGroupBuyRequest
+	var sqlData shanghu.MerchantActiveGroupBuy
+
+	err := c.ShouldBindJSON(&inData)
+	if err != nil {
+		app.Error(c, 400, err, err.Error())
+		return
+	}
+
+	sqlData.CreatedAt = time.Now()
+	sqlData.UpdatedAt = time.Now()
+	sqlData.MerchantOpenID = inData.MerchantOpenId
+	sqlData.GroupBuyOneNum = inData.GroupBuyOneNum
+	sqlData.GroupBuyOnePrice = inData.GroupBuyOnePrice
+	sqlData.GroupBuyName = inData.GroupBuyName
+	sqlData.GroupBuyMode = inData.GroupBuyMode
+	sqlData.OriginalPrice = inData.OriginalPrice
+	sqlData.GroupBuyThreePrice = inData.GroupBuyThreePrice
+	sqlData.GroupBuyThreeNum = inData.GroupBuyThreeNum
+	sqlData.GroupBuyTwoPrice = inData.GroupBuyTwoPrice
+	sqlData.GroupBuyTwoNum = inData.GroupBuyTwoNum
+	sqlData.GroupBuyFourPrice = inData.GroupBuyFourPrice
+	sqlData.GroupBuyFourNum = inData.GroupBuyFourNum
+	sqlData.GroupBuyUrl = inData.GroupBuyUrl
+
+	groupBuyData, err := sqlData.Create()
+	if err != nil {
+		app.Error(c, 500, err, err.Error())
+		return
+	}
+
+	for _, v := range inData.GroupBuyProject {
+		projectSql := shanghu.MerchantActiveGroupByProject{
+			GroupBuyID:     groupBuyData.ID,
+			ProjectName:    v.ProjectName,
+			CancelNum:      v.CancelNum,
+			MerchantOpenID: inData.MerchantOpenId,
+			CreatedAt:      time.Now(),
+			UpdatedAt:      time.Now(),
+		}
+		_, err := projectSql.Create()
+		if err != nil {
+			app.Error(c, 500, err, err.Error())
+			return
+		}
+	}
+
+	app.OK(c, nil, app.Success)
+
+}

+ 59 - 0
apis/shanghu/models/active.config.go

@@ -0,0 +1,59 @@
+package models
+
+import "github.com/shopspring/decimal"
+
+type CreateActiveConfigRequest struct {
+	MerchantOpenID string  `json:"merchant_open_id"`
+	DrawOneBiZhong int64   `json:"draw_one_bi_zhong"`
+	GroupBuyUrl    string  `json:"group_buy_url"`
+	DrawId         []int64 `json:"draw_id"`
+	GroupBuyId     []int64 `json:"group_buy_id"`
+	GroupBuyMode   int     `json:"group_buy_mode"` // 0-不开团 1-虚拟开团 2-真实开团
+	DrawMode       int     `json:"draw_mode"`      //抽奖模式 0-不抽奖,1-盲盒
+}
+
+type ActiveConfigRequest struct {
+	ActiveConfigId int64  `json:"active_config_id"`
+	MerchantOpenID string `json:"merchant_open_id"`
+}
+
+type ActiveConfigReply struct {
+	DrawOneBiZhong int64          `json:"draw_one_bi_zhong"`
+	GroupBuyUrl    string         `json:"group_buy_url"`
+	GroupBuyMode   int            `json:"group_buy_mode"` // 0-不开团 1-虚拟开团 2-真实开团
+	DrawMode       int            `json:"draw_mode"`      //抽奖模式 0-不抽奖,1-盲盒
+	DrawProduct    []DrawProduct  `json:"draw_product"`   //中奖商品
+	DrawGroupBuy   []DrawGroupBuy `json:"draw_group_buy"` //活动拼团
+}
+
+type DrawProduct struct {
+	DrawProductName string          `json:"draw_product_name"` // 抽奖名称
+	DrawOdds        decimal.Decimal `json:"draw_odds"`         // 中奖概率
+	Stock           int             `json:"stock"`             // 剩余库存
+	IsPrize         bool            `json:"is_prize"`          // 是否需要兑奖  谢谢惠顾不需要兑奖
+	DrawUrl         string          `json:"draw_url"`          // 中奖图片
+	TotalStock      int             `json:"total_stock"`       // 总库存
+
+}
+
+type DrawGroupBuy struct {
+	GroupBuyName       string            `json:"group_buy_name"`        // 拼团名
+	GroupBuyMode       int               `json:"group_buy_mode"`        // 拼团模式 1-真实拼团 2-虚拟拼团
+	MerchantOpenID     string            `json:"merchant_open_id"`      //
+	OriginalPrice      decimal.Decimal   `json:"original_price"`        // 原价
+	GroupBuyOneNum     int               `json:"group_buy_one_num"`     // 人数
+	GroupBuyOnePrice   decimal.Decimal   `json:"group_buy_one_price"`   // 价格
+	GroupBuyTwoNum     int               `json:"group_buy_two_num"`     // 人数
+	GroupBuyTwoPrice   decimal.Decimal   `json:"group_buy_two_price"`   // 价格
+	GroupBuyThreeNum   int               `json:"group_buy_three_num"`   //
+	GroupBuyThreePrice decimal.Decimal   `json:"group_buy_three_price"` //
+	GroupBuyFourNum    int               `json:"group_buy_four_num"`    //
+	GroupBuyFourPrice  decimal.Decimal   `json:"group_buy_four_price"`  //
+	GroupBuyUrl        string            `json:"group_buy_url"`         // 图片
+	GroupBuyProject    []GroupBuyProject `json:"group_buy_project"`
+}
+
+type GroupBuyProject struct {
+	ProjectName string `json:"project_name"`
+	CancelNum   int    `json:"cancel_num"`
+}

+ 12 - 0
apis/shanghu/models/active.draw.product.go

@@ -0,0 +1,12 @@
+package models
+
+import "github.com/shopspring/decimal"
+
+type CreateDrawProductRequest struct {
+	MerchantOpenID  string          `json:"merchant_open_id"`
+	DrawProductName string          `json:"draw_product_name"` // 抽奖名称
+	DrawOdds        decimal.Decimal `json:"draw_odds"`         // 中奖概率
+	IsPrize         bool            `json:"is_prize"`          // 是否需要兑奖  谢谢惠顾不需要兑奖
+	DrawUrl         string          `json:"draw_url"`          // 中奖图片
+	TotalStock      int             `json:"total_stock"`       // 总库存
+}

+ 25 - 0
apis/shanghu/models/active.group.buy.go

@@ -0,0 +1,25 @@
+package models
+
+import "github.com/shopspring/decimal"
+
+type CreateGroupBuyRequest struct {
+	MerchantOpenId     string                  `json:"merchant_open_id"`
+	GroupBuyName       string                  `json:"group_buy_name"`        // 拼团名
+	GroupBuyMode       int                     `json:"group_buy_mode"`        // 拼团模式 1-真实拼团 2-虚拟拼团
+	OriginalPrice      decimal.Decimal         `json:"original_price"`        // 原价
+	GroupBuyOneNum     int                     `json:"group_buy_one_num"`     // 人数
+	GroupBuyOnePrice   decimal.Decimal         `json:"group_buy_one_price"`   // 价格
+	GroupBuyTwoNum     int                     `json:"group_buy_two_num"`     // 人数
+	GroupBuyTwoPrice   decimal.Decimal         `json:"group_buy_two_price"`   // 价格
+	GroupBuyThreeNum   int                     `json:"group_buy_three_num"`   //
+	GroupBuyThreePrice decimal.Decimal         `json:"group_buy_three_price"` //
+	GroupBuyFourNum    int                     `json:"group_buy_four_num"`    //
+	GroupBuyFourPrice  decimal.Decimal         `json:"group_buy_four_price"`  //
+	GroupBuyUrl        string                  `json:"group_buy_url"`         // 图片
+	GroupBuyProject    []CreateGroupBuyProject `json:"group_buy_project"`
+}
+
+type CreateGroupBuyProject struct {
+	ProjectName string `json:"project_name"`
+	CancelNum   int    `json:"cancel_num"`
+}

+ 55 - 0
models/shanghu/merchant.active.config.go

@@ -0,0 +1,55 @@
+package shanghu
+
+import (
+	orm "duoduo/database"
+	"time"
+)
+
+// 活动中奖配置,拼团配置,秒杀配置
+type MerchantActiveConfig struct {
+	ID             int64     `gorm:"column:id;type:bigint(20);primary_key;AUTO_INCREMENT" json:"id"`
+	ConfigMode     int       `gorm:"column:config_mode;type:int(11)" json:"config_mode"`                // 模式 1-默认模式
+	MerchantOpenID string    `gorm:"column:merchant_open_id;type:varchar(255)" json:"merchant_open_id"` // openid
+	DrawMode       int       `gorm:"column:draw_mode;type:int(11);default:0" json:"draw_mode"`          // 抽奖模式 0-不抽奖,1-盲盒
+	DrawOneBiZhong int64     `gorm:"column:draw_one_bi_zhong;type:bigint(20)" json:"draw_one_bi_zhong"` // 首次必中抽奖商品ID
+	DrawProduct    string    `gorm:"column:draw_product;type:json" json:"draw_product"`                 // 抽奖商品 商品ID 与中奖率
+	CreateBy       int64     `gorm:"column:create_by;type:bigint(20)" json:"create_by"`                 // 创建者
+	UpdateBy       int64     `gorm:"column:update_by;type:bigint(20)" json:"update_by"`                 // 更新者
+	CreatedAt      time.Time `gorm:"column:created_at;type:datetime(3)" json:"created_at"`              // 创建时间
+	UpdatedAt      time.Time `gorm:"column:updated_at;type:datetime(3)" json:"updated_at"`              // 最后更新时间
+	DeletedAt      time.Time `gorm:"column:deleted_at;type:datetime(3);default:null" json:"deleted_at"` // 删除时间
+	GroupBuyMode   int       `gorm:"column:group_buy_mode;type:int(11)" json:"group_buy_mode"`          // 0-不开团 1-虚拟开团 2-真实开团
+	GroupBuy       string    `gorm:"column:group_buy;type:json" json:"group_buy"`                       // 开团配置
+	GroupBuyUrl    string    `gorm:"column:group_buy_url;type:varchar(255)" json:"group_buy_url"`       // 介绍图url
+}
+
+func (m *MerchantActiveConfig) TableName() string {
+	return "merchant_active_config"
+}
+
+func (u *MerchantActiveConfig) Create() (MerchantActiveConfig, error) {
+	var doc MerchantActiveConfig
+	var err error
+
+	doc = *u
+	err = orm.ShMysql.Table(u.TableName()).Create(&doc).Error
+	if err != nil {
+		return doc, err
+	}
+
+	return doc, nil
+}
+
+func (m *MerchantActiveConfig) GetConfigInfoById() (MerchantActiveConfig, error) {
+	var doc MerchantActiveConfig
+
+	table := orm.ShMysql.Table(m.TableName())
+	table = table.Where("id = ?  ", m.ID)
+
+	if err := table.Select("*").First(&doc).Error; err != nil {
+		return doc, err
+	}
+
+	return doc, nil
+
+}

+ 75 - 0
models/shanghu/merchant.active.draw.product.go

@@ -0,0 +1,75 @@
+package shanghu
+
+import (
+	orm "duoduo/database"
+	"errors"
+	"github.com/shopspring/decimal"
+	"time"
+)
+
+// 中奖活动商品 库存,中奖率
+type MerchantActiveDrawProduct struct {
+	ID              int64           `gorm:"column:id;type:bigint(20);primary_key;AUTO_INCREMENT" json:"id"`
+	MerchantOpenID  string          `gorm:"column:merchant_open_id;type:varchar(255)" json:"merchant_open_id"`
+	DrawProductName string          `gorm:"column:draw_product_name;type:varchar(255)" json:"draw_product_name"` // 抽奖名称
+	DrawOdds        decimal.Decimal `gorm:"column:draw_odds;type:decimal(10,2)" json:"draw_odds"`                // 中奖概率
+	Stock           int             `gorm:"column:stock;type:int(11)" json:"stock"`                              // 剩余库存
+	Version         int             `gorm:"column:version;type:int(11)" json:"version"`                          // Version
+	IsPrize         bool            `gorm:"column:is_prize;type:tinyint(1)" json:"is_prize"`                     // 是否需要兑奖  谢谢惠顾不需要兑奖
+	DrawUrl         string          `gorm:"column:draw_url;type:varchar(255)" json:"draw_url"`                   // 中奖图片
+	TotalStock      int             `gorm:"column:total_stock;type:int(11)" json:"total_stock"`                  // 总库存
+	ActiveConfigID  int64           `gorm:"column:active_config_id;type:bigint(20)" json:"active_config_id"`     // 关联活动
+	CreateBy        int64           `gorm:"column:create_by;type:bigint(20)" json:"create_by"`                   // 创建者
+	UpdateBy        int64           `gorm:"column:update_by;type:bigint(20)" json:"update_by"`                   // 更新者
+	CreatedAt       time.Time       `gorm:"column:created_at;type:datetime(3)" json:"created_at"`                // 创建时间
+	UpdatedAt       time.Time       `gorm:"column:updated_at;type:datetime(3)" json:"updated_at"`                // 最后更新时间
+	DeletedAt       time.Time       `gorm:"column:deleted_at;type:datetime(3);default:null" json:"deleted_at"`   // 删除时间
+}
+
+func (m *MerchantActiveDrawProduct) TableName() string {
+	return "merchant_active_draw_product"
+}
+
+func (u *MerchantActiveDrawProduct) Create() (MerchantActiveDrawProduct, error) {
+	var doc MerchantActiveDrawProduct
+	var err error
+
+	doc = *u
+	err = orm.ShMysql.Table(u.TableName()).Create(&doc).Error
+	if err != nil {
+		return doc, err
+	}
+
+	return doc, nil
+}
+
+func (u *MerchantActiveDrawProduct) UpdateConfigId(drawId int64) error {
+	res := orm.ShMysql.Table(u.TableName()).Where("id = ?", drawId).Updates(
+		map[string]interface{}{
+			"active_config_id": u.ActiveConfigID,
+			"updated_at":       time.Now(),
+		})
+	if res.Error != nil {
+		return res.Error
+	}
+	if res.RowsAffected <= 0 {
+		return errors.New("未更新数据")
+	}
+	return nil
+
+}
+
+// 中奖商品列表
+func (m *MerchantActiveDrawProduct) GetDrawProductList() ([]MerchantActiveDrawProduct, int, error) {
+	var doc []MerchantActiveDrawProduct
+
+	table := orm.ShMysql.Table(m.TableName())
+
+	table = table.Where("active_config_id = ?  ", m.ActiveConfigID)
+	var count int
+	if err := table.Select("*").Order("id desc").Find(&doc).Error; err != nil {
+		return nil, 0, err
+	}
+	table.Count(&count)
+	return doc, count, nil
+}

+ 79 - 0
models/shanghu/merchant.active.group.buy.go

@@ -0,0 +1,79 @@
+package shanghu
+
+import (
+	orm "duoduo/database"
+	"errors"
+	"github.com/shopspring/decimal"
+	"time"
+)
+
+type MerchantActiveGroupBuy struct {
+	ID                 int64           `gorm:"column:id;type:bigint(20);primary_key" json:"id"`
+	ActiveConfigID     int64           `gorm:"column:active_config_id;type:bigint(20)" json:"active_config_id"` // 关联活动
+	GroupBuyName       string          `gorm:"column:group_buy_name;type:varchar(255)" json:"group_buy_name"`   // 拼团名
+	GroupBuyMode       int             `gorm:"column:group_buy_mode;type:int(11)" json:"group_buy_mode"`        // 拼团模式 1-真实拼团 2-虚拟拼团
+	MerchantOpenID     string          `gorm:"column:merchant_open_id;type:varchar(255)" json:"merchant_open_id"`
+	OriginalPrice      decimal.Decimal `gorm:"column:original_price;type:decimal(10,2)" json:"original_price"`           // 原价
+	GroupBuyOneNum     int             `gorm:"column:group_buy_one_num;type:int(11)" json:"group_buy_one_num"`           // 人数
+	GroupBuyOnePrice   decimal.Decimal `gorm:"column:group_buy_one_price;type:decimal(10,2)" json:"group_buy_one_price"` // 价格
+	GroupBuyTwoNum     int             `gorm:"column:group_buy_two_num;type:int(11)" json:"group_buy_two_num"`           // 人数
+	GroupBuyTwoPrice   decimal.Decimal `gorm:"column:group_buy_two_price;type:decimal(10,2)" json:"group_buy_two_price"` // 价格
+	GroupBuyThreeNum   int             `gorm:"column:group_buy_three_num;type:int(11)" json:"group_buy_three_num"`
+	GroupBuyThreePrice decimal.Decimal `gorm:"column:group_buy_three_price;type:decimal(10,2)" json:"group_buy_three_price"`
+	GroupBuyFourNum    int             `gorm:"column:group_buy_four_num;type:int(11)" json:"group_buy_four_num"`
+	GroupBuyFourPrice  decimal.Decimal `gorm:"column:group_buy_four_price;type:decimal(10,2)" json:"group_buy_four_price"`
+	GroupBuyUrl        string          `gorm:"column:group_buy_url;type:varchar(255)" json:"group_buy_url"`         // 图片
+	GroupBuyBigUrl     string          `gorm:"column:group_buy_big_url;type:varchar(255)" json:"group_buy_big_url"` // 大图
+	CreateBy           int64           `gorm:"column:create_by;type:bigint(20)" json:"create_by"`                   // 创建者
+	UpdateBy           int64           `gorm:"column:update_by;type:bigint(20)" json:"update_by"`                   // 更新者
+	CreatedAt          time.Time       `gorm:"column:created_at;type:datetime(3)" json:"created_at"`                // 创建时间
+	UpdatedAt          time.Time       `gorm:"column:updated_at;type:datetime(3)" json:"updated_at"`                // 最后更新时间
+	DeletedAt          time.Time       `gorm:"column:deleted_at;type:datetime(3);default:null" json:"deleted_at"`   // 删除时间
+}
+
+func (m *MerchantActiveGroupBuy) TableName() string {
+	return "merchant_active_group_buy"
+}
+
+func (u *MerchantActiveGroupBuy) Create() (MerchantActiveGroupBuy, error) {
+	var doc MerchantActiveGroupBuy
+	var err error
+	doc = *u
+	err = orm.ShMysql.Table(u.TableName()).Create(&doc).Error
+	if err != nil {
+		return doc, err
+	}
+
+	return doc, nil
+}
+
+func (u *MerchantActiveGroupBuy) UpdateConfigId(groupBuyId int64) error {
+	res := orm.ShMysql.Table(u.TableName()).Where("id = ?", groupBuyId).Updates(
+		map[string]interface{}{
+			"active_config_id": u.ActiveConfigID,
+			"updated_at":       time.Now(),
+		})
+	if res.Error != nil {
+		return res.Error
+	}
+	if res.RowsAffected <= 0 {
+		return errors.New("未更新数据")
+	}
+	return nil
+
+}
+
+// 中奖商品列表
+func (m *MerchantActiveGroupBuy) GetGroupBuyList() ([]MerchantActiveGroupBuy, int, error) {
+	var doc []MerchantActiveGroupBuy
+
+	table := orm.ShMysql.Table(m.TableName())
+
+	table = table.Where("active_config_id = ?  ", m.ActiveConfigID)
+	var count int
+	if err := table.Select("*").Order("id desc").Find(&doc).Error; err != nil {
+		return nil, 0, err
+	}
+	table.Count(&count)
+	return doc, count, nil
+}

+ 51 - 0
models/shanghu/merchant.active.group.buy.project.go

@@ -0,0 +1,51 @@
+package shanghu
+
+import (
+	orm "duoduo/database"
+	"time"
+)
+
+type MerchantActiveGroupByProject struct {
+	ID             int64     `gorm:"column:id;type:bigint(20);primary_key;AUTO_INCREMENT" json:"id"`
+	MerchantOpenID string    `gorm:"column:merchant_open_id;type:varchar(255)" json:"merchant_open_id"` // Open id
+	GroupBuyID     int64     `gorm:"column:group_buy_id;type:bigint(20)" json:"group_buy_id"`           // 关联活动
+	ProjectName    string    `gorm:"column:project_name;type:varchar(255)" json:"project_name"`         // 项目名
+	CancelNum      int       `gorm:"column:cancel_num;type:int(11)" json:"cancel_num"`                  // 核销数量
+	CreateBy       int64     `gorm:"column:create_by;type:bigint(20)" json:"create_by"`                 // 创建者
+	UpdateBy       int64     `gorm:"column:update_by;type:bigint(20)" json:"update_by"`                 // 更新者
+	CreatedAt      time.Time `gorm:"column:created_at;type:datetime(3)" json:"created_at"`              // 创建时间
+	UpdatedAt      time.Time `gorm:"column:updated_at;type:datetime(3)" json:"updated_at"`              // 最后更新时间
+	DeletedAt      time.Time `gorm:"column:deleted_at;type:datetime(3);default:null" json:"deleted_at"` // 删除时间
+}
+
+func (m *MerchantActiveGroupByProject) TableName() string {
+	return "merchant_active_group_by_project"
+}
+
+func (u *MerchantActiveGroupByProject) Create() (MerchantActiveGroupByProject, error) {
+	var doc MerchantActiveGroupByProject
+	var err error
+
+	doc = *u
+	err = orm.ShMysql.Table(u.TableName()).Create(&doc).Error
+	if err != nil {
+		return doc, err
+	}
+
+	return doc, nil
+}
+
+// 中奖商品列表
+func (m *MerchantActiveGroupByProject) GetGroupBuyProjectList() ([]MerchantActiveGroupByProject, int, error) {
+	var doc []MerchantActiveGroupByProject
+
+	table := orm.ShMysql.Table(m.TableName())
+
+	table = table.Where("group_buy_id = ?  ", m.GroupBuyID)
+	var count int
+	if err := table.Select("*").Order("id desc").Find(&doc).Error; err != nil {
+		return nil, 0, err
+	}
+	table.Count(&count)
+	return doc, count, nil
+}