package couponusers import ( "CouponBackendGo/api/v1/couponusers" "CouponBackendGo/internal/model/dto" "CouponBackendGo/internal/service" "CouponBackendGo/utility" "fmt" "github.com/gogf/gf/v2/net/ghttp" "mime/multipart" ) type CouponUsers struct{} func NewCouponUsers() *CouponUsers { return &CouponUsers{} } // 获取拥有卡券的用户列表 func (c *CouponUsers) GetCouponUsers(r *ghttp.Request) { //解析请求 var req *couponusers.GetCouponUsersReq if err := r.Parse(&req); err != nil { r.Response.WriteJsonExit(dto.Error(err.Error())) } result, err := service.CouponUsers().GetCouponUsersByCondition(r.Context(), req.CouponId, req.Jwcode, req.Name) //错误处理 if err != nil { r.Response.WriteJsonExit(dto.Error(err.Error())) } //没有错误,但获取到了0条 if result == nil { r.Response.WriteJsonExit(dto.Error("没有符合条件的用户")) } //成功处理 r.Response.WriteJsonExit(dto.SuccessWithData(result)) } // 删除用户卡券 func (c *CouponUsers) DeleteCouponUserByJwcode(r *ghttp.Request) { // 解析请求 var req *couponusers.DelCouponUserByJwcodeReq if err := r.Parse(&req); err != nil { r.Response.WriteJsonExit(dto.Error(err.Error())) } result, err := service.CouponUsers().DeleteCouponUserByJwcode(r.Context(), req.CouponId, req.Jwcode) //错误处理 if err != nil { r.Response.WriteJsonExit(dto.Error(err.Error())) } //获取影响到的数据条数 affected, err := result.RowsAffected() //没有错误,但删除0条 if affected == 0 { r.Response.WriteJsonExit(dto.Error("删除失败,删除了0条")) } //成功处理 r.Response.WriteJsonExit(dto.SuccessWithMsg("删除成功")) } // 接受前端传来的excel表格,并解析,返回jwcode切片,可以有重复的,在插入时进行验证,如果有重复的,只插入一次 func (c *CouponUsers) InsertJwcodeByExcel(r *ghttp.Request) { // 从请求中获取文件 file, _, err := r.FormFile("excelFile") if err != nil { r.Response.WriteJsonExit(dto.Error(err.Error())) } // 延时关闭文件 defer func(file multipart.File) { err := file.Close() if err != nil { // 处理关闭文件时的错误 r.Response.WriteJsonExit(dto.Error("获取的文件关闭失败")) } }(file) //参数校验,检查文件是否为空 if file == nil { r.Response.WriteJsonExit(dto.Error("获取的文件为空")) } jwcodes, err := service.CouponUsers().InsertJwcodeByExcel(file) //错误处理 if err != nil { r.Response.WriteJsonExit(dto.Error(err.Error())) } //成功处理 r.Response.WriteJsonExit(dto.SuccessWithData(jwcodes)) } // 给用户发放卡券 func (c *CouponUsers) InsertCouponUser(r *ghttp.Request) { // 解析请求 var req *couponusers.InsertCouponUserReq if err := r.Parse(&req); err != nil { r.Response.WriteJsonExit(dto.Error(err.Error())) } result, err := service.CouponUsers().InsertCouponUsersByJwcodes(r.Context(), req.Jwcodes, req.CouponId) //错误处理 if err != nil { r.Response.WriteJsonExit(dto.Error(err.Error())) } //没报错,但插入数据0条 if result == 0 { r.Response.WriteJsonExit(dto.Error("发放失败,发放了0人")) } //成功处理 r.Response.WriteJsonExit(dto.SuccessWithMsg(fmt.Sprintf("发放成功,发放了%d人", result))) } /*近期使用*/ // 导入满足条件的用户jwcode到redis func (c *CouponUsers) InsertJwcodesToRedisByExcel(r *ghttp.Request) { // 从请求中获取文件 file, _, err := r.FormFile("EligibleJwcodesExcel") if err != nil { r.Response.WriteJsonExit(dto.Error(err.Error())) } // 延时关闭文件 defer func(file multipart.File) { err := file.Close() if err != nil { // 处理关闭文件时的错误 r.Response.WriteJsonExit(dto.Error("获取的文件关闭失败")) } }(file) //参数校验,检查文件是否为空 if file == nil { r.Response.WriteJsonExit(dto.Error("获取的文件为空")) } err = service.CouponUsers().InsertJwcodesToRedisByExcel(file) //错误处理 if err != nil { r.Response.WriteJsonExit(dto.Error(err.Error())) } //成功处理 r.Response.WriteJsonExit(dto.SuccessWithMsg("导入redis成功")) } // 给单个用户发放卡券 func (c *CouponUsers) IssueCouponUser(r *ghttp.Request) { // 解析请求参数 //没有token,用于测试 //var req *couponusers.InsertCouponUserReq //if err := r.Parse(&req); err != nil { // r.Response.WriteJsonExit(dto.Error(err.Error())) //} /*正式*/ var req *couponusers.IssueCouponUserReq if err := r.Parse(&req); err != nil { r.Response.WriteJsonExit(dto.Error(err.Error())) } //解析token,获取jwcode token := r.Header.Get("token") if token == "" { r.Response.WriteJsonExit(dto.Error("token为空")) } jwcode, err := utility.GetJwcodeJSON(token) if err != nil { r.Response.WriteJsonExit(dto.Error(err.Error())) } /*正式*/ //没有token,用于测试 //err := service.CouponUsers().IssueCouponToUser(r.Context(), req.Jwcodes[0], req.CouponId) /*正式*/ err = service.CouponUsers().IssueCouponToUser(r.Context(), jwcode, req.CouponId) /*正式*/ //错误处理 if err != nil { r.Response.WriteJsonExit(dto.Error(err.Error())) } //成功处理 r.Response.WriteJsonExit(dto.SuccessWithMsg("发放成功")) } /*近期使用*/ //未编写 //导出拥有卡券的用户