act_m.go 1.21 KB
Newer Older
chenweijian's avatar
chenweijian committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
package act_m

import (
	"fmt"
	"git.hilo.cn/hilo-common/domain"
)

type ActPoint struct {
	AcId   uint64 `json:"ac_id"`
	UserId uint64 `json:"user_id"`
	Point  uint64 `json:"point"`
}

type ActPointLog struct {
	Id        uint64 `json:"id"`
	AcId      uint64 `json:"ac_id"`
	UserId    uint64 `json:"user_id"`
	Point     uint64 `json:"point"`
	AddReduce uint8  `json:"add_reduce"` // 1.增加2.减少
	Remark    string `json:"remark"`
}

func (this *ActPoint) Add(model *domain.Model) error {
	sql := "insert into hilo.act_point (ac_id,user_id,point) " +
		"values(?,?,?) on duplicate key update point = point+values(point);"
	return model.DB().Exec(sql, this.AcId, this.UserId, this.Point).Error
}

func (this *ActPoint) Reduce(model *domain.Model) error {
	sql := "update hilo.act_point set point = point - ? where ac_id=? and user_id=? and point >= ?;"
	result := model.DB().Exec(sql, this.Point, this.AcId, this.UserId, this.Point)
	if result.Error != nil {
		return result.Error
	}
	if result.RowsAffected <= 0 {
		return fmt.Errorf("bizerr.TransactionFailed")
	}
	return nil
}

func CreateActPointLog(model *domain.Model, info *ActPointLog) error {
	err := model.DB().Create(&info).Error
	if err != nil {
		return err
	}
	return nil
}