From 8b7ae02a8b3464c223cc08857267f4a800ad9364 Mon Sep 17 00:00:00 2001 From: majun <3060162534@qq.com> Date: Sat, 28 Dec 2024 10:32:50 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=BC=96=E5=86=99=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E9=80=89=E6=8B=A9=E6=AD=A6=E5=99=A8=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/v1/couponusers/couponUsers.go | 5 +++++ internal/cmd/cmd.go | 1 + internal/consts/consts.go | 2 +- internal/controller/couponusers/couponUsers.go | 26 ++++++++++++++++++++++++++ internal/logic/couponusers/couponUsers.go | 11 +++++++++++ internal/service/couponusers.go | 2 ++ 6 files changed, 46 insertions(+), 1 deletion(-) diff --git a/api/v1/couponusers/couponUsers.go b/api/v1/couponusers/couponUsers.go index 3fd5f27..e48cc18 100644 --- a/api/v1/couponusers/couponUsers.go +++ b/api/v1/couponusers/couponUsers.go @@ -26,3 +26,8 @@ type InsertCouponUserReq struct { type IssueCouponUserReq struct { CouponId int `json:"couponId" dc:"卡券id"` } + +type AddRecordReq struct { + CouponId int `json:"couponId" dc:"卡券id"` + Name string `json:"name" dc:"选择武器名称"` +} diff --git a/internal/cmd/cmd.go b/internal/cmd/cmd.go index 6d1d5c5..c3e90c1 100644 --- a/internal/cmd/cmd.go +++ b/internal/cmd/cmd.go @@ -24,6 +24,7 @@ var ( //近期使用 group.POST("/insert-users-to-redis", couponusers.NewCouponUsers().InsertJwcodesToRedisByExcel) //导入满足条件的用户jwcode到redis group.POST("/issue-coupon-to-users", couponusers.NewCouponUsers().IssueCouponUser) //给单个用户发放卡券 + group.POST("/add-record", couponusers.NewCouponUsers().AddRecord) //添加用户选择武器记录 }) s.Run() return nil diff --git a/internal/consts/consts.go b/internal/consts/consts.go index 6f51821..2c59161 100644 --- a/internal/consts/consts.go +++ b/internal/consts/consts.go @@ -5,5 +5,5 @@ const ( //内容: http://39.101.133.168:8828/hljw //测试环境解析token接口: http://39.101.133.168:8828/hljw/api/v2/member/info //正式环境解析token接口: http://api.homilychart.com:8828/hljw/api/v2/member/info - URL_HASH_KEY = "HLJW_BASE_URL" + URL_HASH_KEY = "HLJW_URL" ) diff --git a/internal/controller/couponusers/couponUsers.go b/internal/controller/couponusers/couponUsers.go index 178081a..729cc24 100644 --- a/internal/controller/couponusers/couponUsers.go +++ b/internal/controller/couponusers/couponUsers.go @@ -186,3 +186,29 @@ func (c *CouponUsers) IssueCouponUser(r *ghttp.Request) { //未编写 //导出拥有卡券的用户 + +// 添加用户选择武器记录 +func (c *CouponUsers) AddRecord(r *ghttp.Request) { + var req *couponusers.AddRecordReq + 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())) + } + + err = service.CouponUsers().AddRecord(r.Context(), jwcode, req.CouponId, req.Name) + //错误处理 + if err != nil { + r.Response.WriteJsonExit(dto.Error(err.Error())) + } + //成功处理 + r.Response.WriteJsonExit(dto.SuccessWithMsg("记录成功")) +} diff --git a/internal/logic/couponusers/couponUsers.go b/internal/logic/couponusers/couponUsers.go index a5eea82..a436c70 100644 --- a/internal/logic/couponusers/couponUsers.go +++ b/internal/logic/couponusers/couponUsers.go @@ -311,3 +311,14 @@ func (s *sCouponUsers) IssueCouponToUser(ctx context.Context, jwcode, couponId i return errors.New("该用户精网号不符合领取条件") //遍历完了所有满足条件的用户,发现不在其中,不符合条件 } + +// 添加用户选择武器记录 +func (s *sCouponUsers) AddRecord(ctx context.Context, jwcode int, id int, name string) (err error) { + _, err = dao.CouponUsers.Ctx(ctx).Data(g.Map{ + "record": name, + }).Where("jwcode = ? and coupon_id = ?", jwcode, id).Update() + if err != nil { + return errors.New("添加武器记录失败") + } + return +} diff --git a/internal/service/couponusers.go b/internal/service/couponusers.go index 8f3215e..472aecf 100644 --- a/internal/service/couponusers.go +++ b/internal/service/couponusers.go @@ -26,6 +26,8 @@ type ( InsertJwcodesToRedisByExcel(file multipart.File) (err error) // 给单个用户发放卡券 IssueCouponToUser(ctx context.Context, jwcode int, couponId int) (err error) + // 添加用户选择武器记录 + AddRecord(ctx context.Context, jwcode int, id int, name string) (err error) } ) From bd40c2d71cd3b252593fdcd1ba0be811e960a9ef Mon Sep 17 00:00:00 2001 From: lijikun Date: Sat, 28 Dec 2024 14:58:45 +0800 Subject: [PATCH 2/2] =?UTF-8?q?12.28=E6=97=A5mj=E5=88=86=E7=A6=BB=E5=90=8E?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0,=E5=88=A0=E9=99=A4=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/v1/couponusers/couponUsers.go | 27 --- internal/cmd/cmd.go | 9 +- internal/controller/couponusers/couponUsers.go | 173 -------------- internal/logic/couponusers/couponUsers.go | 298 ------------------------- internal/service/couponusers.go | 15 -- 5 files changed, 1 insertion(+), 521 deletions(-) diff --git a/api/v1/couponusers/couponUsers.go b/api/v1/couponusers/couponUsers.go index e48cc18..b9610b4 100644 --- a/api/v1/couponusers/couponUsers.go +++ b/api/v1/couponusers/couponUsers.go @@ -1,32 +1,5 @@ package couponusers -type GetCouponUsersReq struct { - CouponId int `json:"couponId" dc:"卡券id"` - Jwcode int `json:"jwcode" dc:"查询条件中的精网号"` - Name string `json:"name" dc:"查询条件中的名字"` -} - -type GetCouponUsersRes struct { - Name string `json:"name" dc:"姓名"` - Jwcode int `json:"jwcode" dc:"精网号"` - DeptName string `json:"deptName" dc:"部门"` - ShopName string `json:"shopName" dc:"门店"` -} - -type DelCouponUserByJwcodeReq struct { - CouponId int `json:"couponId" dc:"卡券id"` - Jwcode int `json:"jwcode" dc:"精网号"` -} - -type InsertCouponUserReq struct { - CouponId int `json:"couponId" dc:"卡券id"` - Jwcodes []int `json:"jwcodes" dc:"精网号"` -} - -type IssueCouponUserReq struct { - CouponId int `json:"couponId" dc:"卡券id"` -} - type AddRecordReq struct { CouponId int `json:"couponId" dc:"卡券id"` Name string `json:"name" dc:"选择武器名称"` diff --git a/internal/cmd/cmd.go b/internal/cmd/cmd.go index c3e90c1..8988979 100644 --- a/internal/cmd/cmd.go +++ b/internal/cmd/cmd.go @@ -17,14 +17,7 @@ var ( Func: func(ctx context.Context, parser *gcmd.Parser) (err error) { s := g.Server() s.Group("/api/coupon_backend", func(group *ghttp.RouterGroup) { - group.POST("/get-coupon-users", couponusers.NewCouponUsers().GetCouponUsers) // 获取拥有卡券的用户列表 - group.POST("/delete-coupon-user", couponusers.NewCouponUsers().DeleteCouponUserByJwcode) //删除用户卡券 - group.POST("/import-excel", couponusers.NewCouponUsers().InsertJwcodeByExcel) // 通过excel导入jwcode - group.POST("/insert-coupon-user", couponusers.NewCouponUsers().InsertCouponUser) //给用户发放卡券 - //近期使用 - group.POST("/insert-users-to-redis", couponusers.NewCouponUsers().InsertJwcodesToRedisByExcel) //导入满足条件的用户jwcode到redis - group.POST("/issue-coupon-to-users", couponusers.NewCouponUsers().IssueCouponUser) //给单个用户发放卡券 - group.POST("/add-record", couponusers.NewCouponUsers().AddRecord) //添加用户选择武器记录 + group.POST("/add-record", couponusers.NewCouponUsers().AddRecord) //添加用户选择武器记录 }) s.Run() return nil diff --git a/internal/controller/couponusers/couponUsers.go b/internal/controller/couponusers/couponUsers.go index 729cc24..81baa13 100644 --- a/internal/controller/couponusers/couponUsers.go +++ b/internal/controller/couponusers/couponUsers.go @@ -5,9 +5,7 @@ import ( "CouponBackendGo/internal/model/dto" "CouponBackendGo/internal/service" "CouponBackendGo/utility" - "fmt" "github.com/gogf/gf/v2/net/ghttp" - "mime/multipart" ) type CouponUsers struct{} @@ -16,177 +14,6 @@ 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("发放成功")) - -} - -/*近期使用*/ - -//未编写 -//导出拥有卡券的用户 - // 添加用户选择武器记录 func (c *CouponUsers) AddRecord(r *ghttp.Request) { var req *couponusers.AddRecordReq diff --git a/internal/logic/couponusers/couponUsers.go b/internal/logic/couponusers/couponUsers.go index a436c70..0ed7b94 100644 --- a/internal/logic/couponusers/couponUsers.go +++ b/internal/logic/couponusers/couponUsers.go @@ -1,20 +1,11 @@ package couponusers import ( - "CouponBackendGo/api/v1/couponusers" "CouponBackendGo/internal/dao" "CouponBackendGo/internal/service" "context" - "database/sql" - "encoding/json" "errors" - "fmt" "github.com/gogf/gf/v2/frame/g" - "github.com/gogf/gf/v2/os/gtime" - "github.com/xuri/excelize/v2" - "mime/multipart" - "strconv" - "strings" ) type sCouponUsers struct{} @@ -23,295 +14,6 @@ func init() { service.RegisterCouponUsers(&sCouponUsers{}) } -// 根据优惠券id查看拥有优惠券的用户 -func (s *sCouponUsers) GetCouponUsersByCondition(ctx context.Context, couponId, jwcode int, name string) (users []couponusers.GetCouponUsersRes, err error) { //待解释 - //从redis中获取所有数据但暂时不返回, 用于条件查询 - value, _ := g.Redis().Get(ctx, fmt.Sprintf("%d CouponUsers", couponId)) - //redis中有数据 - if value.String() != "" { - err = json.Unmarshal(value.Bytes(), &users) - if err != nil { - return nil, errors.New("redis中数据解析失败") - } - } else { //redis中没有数据 - //没有从redis中获取成功,从数据库中查询,并存储到redis中 - /*查询所有数据*/ - //在coupon_users中查询出对应的jwcode - err = dao.CouponUsers.Ctx(ctx).Fields("jwcode"). - Where("coupon_id = ", couponId).Scan(&users) - if err != nil { - return nil, errors.New("根据卡券id搜索jwcode失败") - } - //根据jwcode查询用户信息 - for i, userInfo := range users { - err = dao.MemberInfo.Ctx(ctx).Fields("jwcode", "name", "deptName", "shopName"). - Where("jwcode = ?", userInfo.Jwcode).Scan(&users[i]) - if err != nil { - return nil, errors.New("根据jwcode搜索用户信息失败") - } - } - /*查询所有数据*/ - - //将数据存入redis - UsersMarshal, _ := json.Marshal(users) - _, err = g.Redis().Set(ctx, fmt.Sprintf("%d CouponUsers", couponId), UsersMarshal) - if err != nil { - return nil, errors.New("将数据存入redis失败") - } - - } - - //条件查询 - if jwcode != 0 && name == "" { - var result []couponusers.GetCouponUsersRes - for _, user := range users { - if user.Jwcode == jwcode { - result = append(result, user) - } - } - return result, err - } else if jwcode == 0 && name != "" { - var result []couponusers.GetCouponUsersRes - for _, user := range users { - if strings.Contains(user.Name, name) { - result = append(result, user) - } - } - return result, err - } else if jwcode != 0 && name != "" { - var result []couponusers.GetCouponUsersRes - for _, user := range users { - if user.Jwcode == jwcode && strings.Contains(user.Name, name) { - result = append(result, user) - } - } - return result, err - } - - return users, err -} - -// 根据jwcode,优惠券id删除用户 -func (s *sCouponUsers) DeleteCouponUserByJwcode(ctx context.Context, couponId, jwcode int) (result sql.Result, err error) { - if jwcode == 0 { - return nil, errors.New("jwcode不能为空") - } - if couponId == 0 { - return nil, errors.New("couponId不能为空") - } - result, err = dao.CouponUsers.Ctx(ctx).Where("coupon_id = ?", couponId).Where("jwcode = ?", jwcode).Delete() - if err != nil { - return nil, errors.New("删除用户失败") - } - return result, err -} - -// 通过excel导入精网号 -func (s *sCouponUsers) InsertJwcodeByExcel(file multipart.File) (jwcodes []int, err error) { - //打开文件并返回一个excelize.File对象,用于读取和操作Excel文件的内容 - f, err := excelize.OpenReader(file) - if err != nil { - return nil, errors.New("打开文件失败") - } - // 延时关闭文件 - defer func(f *excelize.File) { - err := f.Close() - if err != nil { - return // 返回错误 - } - }(f) - - //读取所有工作表名称 - GetSheetMap := f.GetSheetMap() - if len(GetSheetMap) == 0 { - return nil, errors.New("没有工作表") - } - // 读取第一个工作表 - sheetName := GetSheetMap[1] - //rows, err := f.GetRows(f.GetSheetName(1)) - rows, err := f.GetRows(sheetName) - if err != nil { - return nil, err - } - - // 将每行的第一列转换为int,并添加到切片中 - for i, row := range rows { - //跳过第一行 - if i == 0 { - continue - } - // 假设jwcode在每行的第一列 - /*参数校验*/ - //参数校验,检查每行是否有足够数据 - if len(row) == 0 { - continue // 跳过空行 - } - //参数校验,检查jwcode是否为非空字符串 - jwcodeStr := row[0] - if jwcodeStr == "" { - continue // 跳过空行 - } - //将字符串转换为整数 - jwcode, err := strconv.Atoi(jwcodeStr) - if err != nil { - return nil, errors.New("参数转换失败") - } - jwcodes = append(jwcodes, jwcode) - /*参数校验*/ - } - return //返回jwcodes切片 -} - -// 根据精网号发放用户优惠券 -func (s *sCouponUsers) InsertCouponUsersByJwcodes(ctx context.Context, jwcodes []int, couponId int) (num int, err error) { - //去重 - m := make(map[int]bool) - var uniqueJwcodes []int //存放去重后的精网号 - for _, jwcode := range jwcodes { - if _, exist := m[jwcode]; !exist { - m[jwcode] = true - uniqueJwcodes = append(uniqueJwcodes, jwcode) - } - } - - //插入数据 - for _, jwcode := range uniqueJwcodes { - //检查数据库中是否存在 - count, err := dao.CouponUsers.Ctx(ctx).Where("jwcode = ?", jwcode).Where("coupon_id = ?", couponId).Count() - if err != nil { - return num, errors.New("检索数据库中是否已存在数据失败") - } - //不存在,可以插入 - if count == 0 { - result, err := dao.CouponUsers.Ctx(ctx).Insert(g.Map{ - "jwcode": jwcode, - "coupon_id": couponId, - "time": gtime.Now().Unix(), - }) - if err != nil { - return num, errors.New("插入数据库失败") - } - //获取受影响的行数 - affected, err := result.RowsAffected() - num += int(affected) - } - } - - return num, err //返回受影响的行数,即新增的条数 -} - -// 导入满足条件的用户jwcode到redis -func (s *sCouponUsers) InsertJwcodesToRedisByExcel(file multipart.File) (err error) { - var ctx g.Ctx - //打开文件并返回一个excelize.File对象,用于读取和操作Excel文件的内容 - f, err := excelize.OpenReader(file) - if err != nil { - return errors.New("打开文件失败") - } - // 延时关闭文件 - defer func(f *excelize.File) { - err := f.Close() - if err != nil { - // 处理关闭文件时的错误 - return - } - }(f) - - //读取所有工作表名称 - GetSheetMap := f.GetSheetMap() - if len(GetSheetMap) == 0 { - return errors.New("没有工作表") - } - // 读取第一个工作表 - sheetName := GetSheetMap[1] - //rows, err := f.GetRows(f.GetSheetName(1)) - rows, err := f.GetRows(sheetName) - if err != nil { - return err - } - - // 将每行的第一列转换为int,并添加到切片中 - var jwcodes []int - for i, row := range rows { - //跳过第一行 - if i == 0 { - continue - } - // 假设jwcode在每行的第一列 - /*参数校验*/ - //参数校验,检查每行是否有足够数据 - if len(row) == 0 { - continue // 跳过空行 - } - //参数校验,检查jwcode是否为非空字符串 - jwcodeStr := row[0] - if jwcodeStr == "" { - continue // 跳过空行 - } - //将字符串转换为整数 - jwcode, err := strconv.Atoi(jwcodeStr) - if err != nil { - return errors.New("参数转换失败") - } - - jwcodes = append(jwcodes, jwcode) - /*参数校验*/ - } - - //将jwcodes存入redis - MarshalJwcodes, _ := json.Marshal(jwcodes) - _, err = g.Redis().Set(ctx, "EligibleJwcodes", MarshalJwcodes) - if err != nil { - return errors.New("存入redis失败") - } - return //返回nil表示成功 -} - -// 给单个用户发放卡券 -func (s *sCouponUsers) IssueCouponToUser(ctx context.Context, jwcode, couponId int) (err error) { - //查看库中是否已经存在 - count, err := dao.CouponUsers.Ctx(ctx).Where("jwcode = ?", jwcode).Where("coupon_id = ?", couponId).Count() - if err != nil { - return errors.New("检索数据库中是否已存在数据失败") - } - //已存在 不添加,直接返回 - if count > 0 { - return errors.New("该用户已领取该卡券") - } - - //不存在 查看是否满足条件,满足就添加,不满足就返回 - /*从redis中获取符合条件的精网号EligibleJwcodes*/ - redisResult, err := g.Redis().Get(ctx, "EligibleJwcodes") - if err != nil { - return errors.New("从redis中获取数据失败") - } - var EligibleJwcodes []int - err = json.Unmarshal(redisResult.Bytes(), &EligibleJwcodes) - if err != nil { - return errors.New("redis中数据解析失败") - } - /*从redis中获取符合条件的精网号EligibleJwcodes*/ - - //检查jwcode是否在EligibleJwcodes中 - for _, EligibleJwcode := range EligibleJwcodes { - if EligibleJwcode == jwcode { - //存在,可以插入 - _, err := dao.CouponUsers.Ctx(ctx).Insert(g.Map{ - "jwcode": jwcode, - "coupon_id": couponId, - "time": gtime.Now().Unix(), - }) - if err != nil { - return errors.New("插入数据库失败") - } - return err - } - } - - return errors.New("该用户精网号不符合领取条件") //遍历完了所有满足条件的用户,发现不在其中,不符合条件 - -} - // 添加用户选择武器记录 func (s *sCouponUsers) AddRecord(ctx context.Context, jwcode int, id int, name string) (err error) { _, err = dao.CouponUsers.Ctx(ctx).Data(g.Map{ diff --git a/internal/service/couponusers.go b/internal/service/couponusers.go index 472aecf..6afa42f 100644 --- a/internal/service/couponusers.go +++ b/internal/service/couponusers.go @@ -6,26 +6,11 @@ package service import ( - "CouponBackendGo/api/v1/couponusers" "context" - "database/sql" - "mime/multipart" ) type ( ICouponUsers interface { - // 根据优惠券id查看拥有优惠券的用户 - GetCouponUsersByCondition(ctx context.Context, couponId int, jwcode int, name string) (users []couponusers.GetCouponUsersRes, err error) - // 根据jwcode,优惠券id删除用户 - DeleteCouponUserByJwcode(ctx context.Context, couponId int, jwcode int) (result sql.Result, err error) - // 通过excel导入精网号 - InsertJwcodeByExcel(file multipart.File) (jwcodes []int, err error) - // 根据精网号发放用户优惠券 - InsertCouponUsersByJwcodes(ctx context.Context, jwcodes []int, couponId int) (num int, err error) - // 导入满足条件的用户jwcode到redis - InsertJwcodesToRedisByExcel(file multipart.File) (err error) - // 给单个用户发放卡券 - IssueCouponToUser(ctx context.Context, jwcode int, couponId int) (err error) // 添加用户选择武器记录 AddRecord(ctx context.Context, jwcode int, id int, name string) (err error) }