package controller import ( "github.com/gin-gonic/gin" "hepa-calc-admin-api/api/dao" "hepa-calc-admin-api/api/dto" "hepa-calc-admin-api/api/model" "hepa-calc-admin-api/api/requests" "hepa-calc-admin-api/api/responses" "hepa-calc-admin-api/global" "hepa-calc-admin-api/utils" "strconv" "time" ) type SystemMember struct{} // GetSystemMemberList 获取会员配置列表 func (b *SystemMember) GetSystemMemberList(c *gin.Context) { // 获取数据 systemMemberDao := dao.SystemMemberDao{} systemMembers, err := systemMemberDao.GetSystemMemberListSearch() if err != nil { responses.FailWithMessage(err.Error(), c) return } // 处理返回值 g := dto.GetSystemMemberListDto(systemMembers) responses.OkWithData(g, c) } // GetSystemMember 获取会员配置详情 func (b *SystemMember) GetSystemMember(c *gin.Context) { id := c.Param("system_member_id") if id == "" { responses.FailWithMessage("缺少参数", c) return } // 将 id 转换为 int64 类型 systemMemberId, err := strconv.ParseInt(id, 10, 64) if err != nil { responses.Fail(c) return } // 获取问题数据 systemMemberDao := dao.SystemMemberDao{} systemMember, err := systemMemberDao.GetSystemMemberById(systemMemberId) if err != nil { responses.FailWithMessage("数据异常", c) return } // 处理返回值 g := dto.GetSystemMemberDto(systemMember) responses.OkWithData(g, c) } // PutSystemMember 修改会员配置 func (b *SystemMember) PutSystemMember(c *gin.Context) { systemMemberRequest := requests.SystemMemberRequest{} req := systemMemberRequest.PutSystemMember if err := c.ShouldBindJSON(&req); err != nil { responses.FailWithMessage(err.Error(), c) return } // 参数验证 if err := global.Validate.Struct(req); err != nil { responses.FailWithMessage(utils.Translate(err), c) return } if req.DiscountPrice != nil { if req.Price < *req.DiscountPrice { responses.FailWithMessage("优惠价格不可超过原价", c) return } if req.DiscountEndTime == nil { responses.FailWithMessage("请填写优惠过期时间", c) return } } id := c.Param("system_member_id") if id == "" { responses.FailWithMessage("缺少参数", c) return } // 将 id 转换为 int64 类型 systemMemberId, err := strconv.ParseInt(id, 10, 64) if err != nil { responses.Fail(c) return } // 获取问题数据 systemMemberDao := dao.SystemMemberDao{} systemMember, err := systemMemberDao.GetSystemMemberById(systemMemberId) if err != nil { responses.FailWithMessage("数据异常", c) return } // 修改值 systemMemberData := make(map[string]interface{}) // 会员天数 if req.MemberDays != systemMember.MemberDays { systemMemberData["member_days"] = req.MemberDays } // 价格 if req.Price != systemMember.Price { systemMemberData["price"] = req.Price } // 优惠价格 if req.DiscountPrice != nil { if systemMember.DiscountPrice == nil { systemMemberData["discount_price"] = req.DiscountPrice } else { if *req.DiscountPrice != *systemMember.DiscountPrice { systemMemberData["discount_price"] = req.DiscountPrice } } } else { if systemMember.DiscountPrice != nil { systemMemberData["discount_price"] = nil } } // 优惠截止时间 if req.DiscountEndTime != nil { // 获取本地时区 location, err := time.LoadLocation("Local") if err != nil { responses.FailWithMessage("优惠截止时间错误", c) return } discountEndTime, err := time.ParseInLocation("2006-01-02 15:04:05", *req.DiscountEndTime, location) if err != nil { responses.FailWithMessage("优惠截止时间错误", c) return } if systemMember.DiscountEndTime == nil { systemMemberData["discount_end_time"] = discountEndTime } else { if *systemMember.DiscountEndTime != discountEndTime { systemMemberData["discount_end_time"] = discountEndTime } } } else { if systemMember.DiscountEndTime != nil { systemMemberData["discount_end_time"] = nil } } // 开始事务 tx := global.Db.Begin() defer func() { if r := recover(); r != nil { tx.Rollback() } }() if len(systemMemberData) > 0 { err = systemMemberDao.EditSystemMemberById(tx, systemMember.SystemMemberId, systemMemberData) if err != nil { tx.Rollback() responses.FailWithMessage("操作失败", c) return } } tx.Commit() responses.Ok(c) } // AddSystemMember 新增会员配置 func (b *SystemMember) AddSystemMember(c *gin.Context) { systemMemberRequest := requests.SystemMemberRequest{} req := systemMemberRequest.AddSystemMember if err := c.ShouldBindJSON(&req); err != nil { responses.FailWithMessage(err.Error(), c) return } // 参数验证 if err := global.Validate.Struct(req); err != nil { responses.FailWithMessage(utils.Translate(err), c) return } if req.DiscountPrice != nil { if req.Price < *req.DiscountPrice { responses.FailWithMessage("优惠价格不可超过原价", c) return } if req.DiscountEndTime == nil { responses.FailWithMessage("请填写优惠过期时间", c) return } } // 开始事务 tx := global.Db.Begin() defer func() { if r := recover(); r != nil { tx.Rollback() } }() systemMember := &model.SystemMember{ MemberDays: req.MemberDays, Price: req.Price, DiscountPrice: req.DiscountPrice, } // 处理优惠截止时间 if req.DiscountEndTime != nil { // 获取本地时区 location, err := time.LoadLocation("Local") if err != nil { tx.Rollback() responses.FailWithMessage("优惠截止时间错误", c) return } discountEndTime, err := time.ParseInLocation("2006-01-02 15:04:05", *req.DiscountEndTime, location) if err != nil { tx.Rollback() responses.FailWithMessage("优惠截止时间错误", c) return } systemMember.DiscountEndTime = &discountEndTime } systemMemberDao := dao.SystemMemberDao{} systemMember, err := systemMemberDao.AddSystemMember(tx, systemMember) if err != nil { tx.Rollback() responses.FailWithMessage("操作失败", c) return } tx.Commit() responses.Ok(c) }