Browse Source

1月3日晚 修改了查询拥有卡券的用户列表的算法设计,条件查询也能分页进行

dev
lijikun 6 months ago
parent
commit
0debd360e0
  1. 1
      api/v1/couponusers/couponUsers.go
  2. 81
      internal/logic/couponusers/couponUsers.go

1
api/v1/couponusers/couponUsers.go

@ -15,6 +15,7 @@ type GetCouponUsersRes struct {
Jwcode int `json:"jwcode" dc:"精网号"`
DeptName string `json:"deptName" dc:"部门"`
ShopName string `json:"shopName" dc:"门店"`
Total int `json:"total" dc:"总数"`
}
// DelCouponUserByJwcodeReq 删除卡券用户

81
internal/logic/couponusers/couponUsers.go

@ -26,75 +26,42 @@ func init() {
// 根据优惠券id查看拥有优惠券的用户
func (s *sCouponUsers) GetCouponUsersByCondition(ctx context.Context, couponId, jwcode int, name string, pageNo, pageSize int) (users []couponusers.GetCouponUsersRes, err error) {
//没有条件查询时,分页
if jwcode == 0 && name == "" {
/*查询所有数据*/
//在coupon_users中查询出对应的jwcode
err = dao.CouponUsers.Ctx(ctx).Fields("jwcode").
Where("coupon_id = ", couponId).Page(pageNo, pageSize).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搜索用户信息失败")
}
db := dao.CouponUsers.Ctx(ctx)
//基于量表JOIN查询
db = db.As("cu").InnerJoin("member_info mi", "cu.jwcode = mi.jwcode").
Where("cu.coupon_id = ?", couponId)
//如果jwcode条件存在
if jwcode != 0 {
db = db.Where("cu.jwcode = ?", jwcode)
}
/*查询所有数据*/
return users, err
} else { //有条件查询时,不在分页,全查后筛选
//如果name条件存在
if name != "" {
db = db.Where("mi.name like ?", "%"+name+"%")
}
/*查询所有数据*/
//在coupon_users中查询出对应的jwcode
err = dao.CouponUsers.Ctx(ctx).Fields("jwcode").
Where("coupon_id = ", couponId).Scan(&users)
//查询总数
total, err := db.Count()
if err != nil {
return nil, errors.New("根据卡券id搜索jwcode失败")
return nil, errors.New("查询总数失败")
}
//根据jwcode查询用户信息
for i, userInfo := range users {
err = dao.MemberInfo.Ctx(ctx).Fields("jwcode", "name", "deptName", "shopName").
Where("jwcode = ?", userInfo.Jwcode).Scan(&users[i])
//查询数据(分页)
err = db.Fields("mi.jwcode, mi.name, mi.deptName, mi.shopName").
Page(pageNo, pageSize).Scan(&users)
if err != nil {
return nil, errors.New("根据jwcode搜索用户信息失败")
return nil, errors.New("查询数据失败")
}
}
/*查询所有数据*/
//条件查询
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
//设置总数
for i := range users {
users[i].Total = total
}
return users, err
}
}
// 根据jwcode,优惠券id删除用户
func (s *sCouponUsers) DeleteCouponUserByJwcode(ctx context.Context, couponId, jwcode int) (result sql.Result, err error) {

Loading…
Cancel
Save