新增了:修改系统优惠卷、修改系统优惠卷状态
This commit is contained in:
+229
-2
@@ -145,7 +145,7 @@ func (r *CouponService) AddSystemCoupon(req requests.AddSystemCoupon) (bool, err
|
||||
CouponStatus: *req.CouponClient,
|
||||
DistributionObject: *req.DistributionObject,
|
||||
ApplicationScope: *req.ApplicationScope,
|
||||
IsMutex: *req.IsMutex,
|
||||
IsMutex: req.IsMutex,
|
||||
IsDisplay: *req.IsDisplay,
|
||||
CouponCount: *req.CouponCount,
|
||||
CouponPrice: *req.CouponPrice,
|
||||
@@ -208,11 +208,16 @@ func (r *CouponService) AddSystemCoupon(req requests.AddSystemCoupon) (bool, err
|
||||
coupon.DistributionWithDay = *req.DistributionWithDay
|
||||
}
|
||||
|
||||
// 关联 单商品最小可使用数量
|
||||
// 发放关联天数
|
||||
if req.DistributionWithDay != nil {
|
||||
coupon.DistributionWithDay = *req.DistributionWithDay
|
||||
}
|
||||
|
||||
// 单商品最小可使用数量
|
||||
if req.MinUsableNumber != nil {
|
||||
coupon.MinUsableNumber = req.MinUsableNumber
|
||||
}
|
||||
|
||||
// 符合满减标准金额
|
||||
if req.WithAmount != nil {
|
||||
coupon.WithAmount = *req.WithAmount
|
||||
@@ -245,6 +250,228 @@ func (r *CouponService) AddSystemCoupon(req requests.AddSystemCoupon) (bool, err
|
||||
return false, errors.New(err.Error())
|
||||
}
|
||||
|
||||
// 增加优惠卷过期队列
|
||||
|
||||
tx.Commit()
|
||||
return true, nil
|
||||
}
|
||||
|
||||
// PutSystemCoupon 修改系统优惠卷
|
||||
func (r *CouponService) PutSystemCoupon(couponId int64, req requests.PutSystemCoupon) (bool, error) {
|
||||
couponDao := dao.CouponDao{}
|
||||
coupon, err := couponDao.GetCouponById(couponId)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
if coupon.CouponStatus != 1 {
|
||||
return false, errors.New("优惠卷非正常状态,不支持更改")
|
||||
}
|
||||
|
||||
// 开始事务
|
||||
tx := global.Db.Begin()
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
tx.Rollback()
|
||||
}
|
||||
}()
|
||||
|
||||
couponData := make(map[string]interface{})
|
||||
|
||||
// 优惠卷名称
|
||||
if req.CouponName != coupon.CouponName {
|
||||
couponData["coupon_name"] = req.CouponName
|
||||
}
|
||||
|
||||
// 头像
|
||||
if req.CouponIcon != "" {
|
||||
if req.CouponIcon != coupon.CouponIcon {
|
||||
couponData["coupon_icon"] = req.CouponIcon
|
||||
}
|
||||
}
|
||||
|
||||
// 发放对象
|
||||
if req.DistributionObject != nil {
|
||||
if *req.DistributionObject != coupon.DistributionObject {
|
||||
couponData["distribution_object"] = req.DistributionObject
|
||||
}
|
||||
}
|
||||
|
||||
// 关联问诊类型
|
||||
if coupon.ApplicationScope == 2 {
|
||||
if req.InquiryType != nil {
|
||||
if *req.InquiryType != coupon.InquiryType {
|
||||
couponData["inquiry_type"] = req.InquiryType
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 关联品牌id
|
||||
if coupon.ApplicationScope == 3 {
|
||||
// 将 id 转换为 int64 类型
|
||||
brandId, err := strconv.ParseInt(*req.BrandId, 10, 64)
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
return false, errors.New("修改失败")
|
||||
}
|
||||
|
||||
if &brandId != coupon.BrandId {
|
||||
couponData["brand_id"] = req.InquiryType
|
||||
}
|
||||
}
|
||||
|
||||
// 是否互斥
|
||||
if req.IsMutex != nil {
|
||||
if req.IsMutex != coupon.IsMutex {
|
||||
couponData["is_mutex"] = req.IsMutex
|
||||
}
|
||||
}
|
||||
|
||||
// 是否展示
|
||||
if req.IsDisplay != nil {
|
||||
if *req.IsDisplay != coupon.IsDisplay {
|
||||
couponData["is_display"] = req.IsDisplay
|
||||
}
|
||||
}
|
||||
|
||||
// 发放关联天数
|
||||
if coupon.DistributionObject == 4 {
|
||||
if req.DistributionWithDay != nil {
|
||||
if *req.DistributionWithDay != coupon.DistributionWithDay {
|
||||
couponData["distribution_with_day"] = req.InquiryType
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 单商品最小可使用数量
|
||||
if coupon.ApplicationScope == 1 && coupon.CouponType == 3 {
|
||||
if req.MinUsableNumber != nil {
|
||||
couponData["min_usable_number"] = req.InquiryType
|
||||
}
|
||||
}
|
||||
|
||||
// 发放数量
|
||||
if req.CouponCount != nil {
|
||||
if *req.CouponCount != coupon.CouponCount {
|
||||
if *req.CouponCount <= coupon.CouponTakeCount {
|
||||
tx.Rollback()
|
||||
return false, errors.New("发放数量,不可低于已发放数量")
|
||||
}
|
||||
|
||||
couponData["coupon_count"] = req.InquiryType
|
||||
}
|
||||
}
|
||||
|
||||
// 优惠卷金额
|
||||
if req.CouponPrice != nil {
|
||||
if *req.CouponPrice != coupon.CouponPrice {
|
||||
couponData["coupon_price"] = req.InquiryType
|
||||
}
|
||||
}
|
||||
|
||||
// 关联商品id
|
||||
if len(req.ProductId) > 0 {
|
||||
productId := strings.Join(req.ProductId, ",")
|
||||
|
||||
if productId != coupon.ProductId {
|
||||
productDao := dao.ProductDao{}
|
||||
for _, s := range req.ProductId {
|
||||
// 将 id 转换为 int64 类型
|
||||
productId, err := strconv.ParseInt(s, 10, 64)
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
return false, errors.New("修改失败")
|
||||
}
|
||||
|
||||
_, err = productDao.GetProductById(productId)
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
return false, errors.New("存在错误商品")
|
||||
}
|
||||
}
|
||||
|
||||
couponData["product_id"] = productId
|
||||
}
|
||||
}
|
||||
|
||||
// 确认收货后的再次发放间隔天数
|
||||
if req.ReissueIntervalDays != nil {
|
||||
if *req.ReissueIntervalDays != coupon.ReissueIntervalDays {
|
||||
couponData["reissue_interval_days"] = req.ReissueIntervalDays
|
||||
}
|
||||
}
|
||||
|
||||
// 过期之后是否允许再次发放
|
||||
if req.IsReissuableAfterExpire != nil {
|
||||
if *req.IsReissuableAfterExpire != coupon.IsReissuableAfterExpire {
|
||||
couponData["is_reissuable_after_expire"] = req.IsReissuableAfterExpire
|
||||
}
|
||||
}
|
||||
|
||||
// 是否首页弹窗
|
||||
if *req.IsPopup != coupon.IsPopup {
|
||||
couponData["is_popup"] = req.IsPopup
|
||||
}
|
||||
|
||||
// 优惠卷描述
|
||||
if req.CouponDesc != nil {
|
||||
if *req.CouponDesc != coupon.CouponDesc {
|
||||
couponData["coupon_desc"] = req.CouponDesc
|
||||
}
|
||||
}
|
||||
|
||||
err = couponDao.EditCouponById(tx, coupon.CouponId, couponData)
|
||||
if err != nil || coupon == nil {
|
||||
tx.Rollback()
|
||||
return false, errors.New(err.Error())
|
||||
}
|
||||
|
||||
tx.Commit()
|
||||
return true, nil
|
||||
}
|
||||
|
||||
// PutSystemCouponStatus 修改系统优惠卷状态
|
||||
func (r *CouponService) PutSystemCouponStatus(couponId int64, req requests.PutSystemCouponStatus) (bool, error) {
|
||||
couponDao := dao.CouponDao{}
|
||||
coupon, err := couponDao.GetCouponById(couponId)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
// 状态未变
|
||||
if coupon.CouponStatus == req.CouponStatus {
|
||||
return true, nil
|
||||
}
|
||||
|
||||
if coupon.CouponStatus == 2 {
|
||||
return false, errors.New("优惠卷已强制失效,无法再次操作")
|
||||
}
|
||||
|
||||
if coupon.CouponStatus == 3 {
|
||||
return false, errors.New("优惠卷已结束,无法再次操作")
|
||||
}
|
||||
|
||||
if coupon.CouponStatus == 4 {
|
||||
return false, errors.New("优惠卷已删除,无法再次操作")
|
||||
}
|
||||
|
||||
// 开始事务
|
||||
tx := global.Db.Begin()
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
tx.Rollback()
|
||||
}
|
||||
}()
|
||||
|
||||
couponData := make(map[string]interface{})
|
||||
couponData["coupon_status"] = req.CouponStatus
|
||||
|
||||
err = couponDao.EditCouponById(tx, coupon.CouponId, couponData)
|
||||
if err != nil || coupon == nil {
|
||||
tx.Rollback()
|
||||
return false, errors.New(err.Error())
|
||||
}
|
||||
|
||||
tx.Commit()
|
||||
return true, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user