1、excel导出改成读取配置文件的url地址;
2、优化库存导入时门店名称/商品名称/供应商名称跟系统不符提示模糊的问题; 3、导出库存详excel时增加"库存数量"列,数量默认为1,方便采购进行excel数据透视; 4、增加尊享会员相关接口和字段; 5、优化财务统计接口,默认剔除"尊享会员费",只有传参有才展示; 6、解决采购需求页面库存数量统计不准确的问题,初始值由0改成1; 7、增加短信群发编辑接口;
This commit is contained in:
parent
c8cedfb72e
commit
183caeefab
|
@ -732,6 +732,37 @@ func GroupSendMessageCreateTemplate(c *gin.Context) {
|
|||
app.OK(c, nil, "操作成功")
|
||||
}
|
||||
|
||||
func GroupSendMessageEditTemplate(c *gin.Context) {
|
||||
req := &models.GroupSendMessageTemplate{}
|
||||
if c.ShouldBindJSON(req) != nil {
|
||||
logger.Errorf("para err")
|
||||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||||
return
|
||||
}
|
||||
if req.Status == 2 { // 已发送的模版不能编辑
|
||||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "已发送的短信不能编辑,请重新创建!")
|
||||
return
|
||||
}
|
||||
|
||||
if req.UserType == 4 && req.Tels == "" {
|
||||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "指定用户手机号")
|
||||
return
|
||||
}
|
||||
|
||||
if req.Message == "" {
|
||||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "短信内容不能为空")
|
||||
return
|
||||
}
|
||||
err := orm.Eloquent.Save(req).Error
|
||||
if err != nil {
|
||||
logger.Errorf("err:", logger.Field("err", err))
|
||||
app.Error(c, http.StatusInternalServerError, err, "添加文章错误")
|
||||
return
|
||||
}
|
||||
|
||||
app.OK(c, nil, "操作成功")
|
||||
}
|
||||
|
||||
func GroupSendMessage(c *gin.Context) {
|
||||
req := &struct {
|
||||
GroupSendMessageTemplateId uint32 `json:"group_send_message_template_id"`
|
||||
|
@ -1023,3 +1054,95 @@ func TelList(c *gin.Context) {
|
|||
|
||||
app.OK(c, telListInfo, "")
|
||||
}
|
||||
|
||||
// PrivilegeMemberList 零售尊享会员列表
|
||||
// @Summary 零售尊享会员列表
|
||||
// @Tags 会员管理, V1.4.2
|
||||
// @Produce json
|
||||
// @Accept json
|
||||
// @Param request body models.PrivilegeMemberListReq true "零售尊享会员列表模型"
|
||||
// @Success 200 {object} models.PrivilegeMemberListResp
|
||||
// @Router /api/v1/user_info/privilege_member/list [post]
|
||||
func PrivilegeMemberList(c *gin.Context) {
|
||||
req := new(models.PrivilegeMemberListReq)
|
||||
if c.ShouldBindJSON(req) != nil {
|
||||
logger.Errorf("para err")
|
||||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||||
return
|
||||
}
|
||||
|
||||
resp, err := req.PrivilegeMemberList(c)
|
||||
if err != nil {
|
||||
logger.Errorf("err:", logger.Field("err", err))
|
||||
if err.Error() == "您没有该门店权限" {
|
||||
app.Error(c, http.StatusInternalServerError, err, err.Error())
|
||||
} else {
|
||||
app.Error(c, http.StatusInternalServerError, err, "查询失败")
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
app.OK(c, resp, "")
|
||||
}
|
||||
|
||||
// ActivateExtendedWarranty 零售尊享会员激活主机延保
|
||||
// @Summary 零售尊享会员激活主机延保
|
||||
// @Tags 会员管理, V1.4.2
|
||||
// @Produce json
|
||||
// @Accept json
|
||||
// @Param request body models.ActivateExtendedWarrantyReq true "零售尊享会员激活主机延保模型"
|
||||
// @Success 200 {object} app.Response
|
||||
// @Router /api/v1/user_info/privilege_member/activate_extended_warranty [post]
|
||||
func ActivateExtendedWarranty(c *gin.Context) {
|
||||
var req = new(models.ActivateExtendedWarrantyReq)
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
logger.Error("ShouldBindJSON err:", logger.Field("err", err))
|
||||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||||
return
|
||||
}
|
||||
|
||||
err := tools.Validate(req) //必填参数校验
|
||||
if err != nil {
|
||||
app.Error(c, http.StatusBadRequest, err, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
err = req.ActivateExtendedWarranty(c)
|
||||
if err != nil {
|
||||
app.Error(c, http.StatusBadRequest, err, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
app.OK(c, nil, "激活成功")
|
||||
}
|
||||
|
||||
// CancelPrivilegeMembers 取消尊享会员
|
||||
// @Summary 取消尊享会员
|
||||
// @Tags 会员管理, V1.4.2
|
||||
// @Produce json
|
||||
// @Accept json
|
||||
// @Param request body models.CancelPrivilegeMembersReq true "取消尊享会员模型"
|
||||
// @Success 200 {object} app.Response
|
||||
// @Router /api/v1/user_info/privilege_member/cancel_members [post]
|
||||
func CancelPrivilegeMembers(c *gin.Context) {
|
||||
var req = new(models.CancelPrivilegeMembersReq)
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
logger.Error("ShouldBindJSON err:", logger.Field("err", err))
|
||||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||||
return
|
||||
}
|
||||
|
||||
err := tools.Validate(req) //必填参数校验
|
||||
if err != nil {
|
||||
app.Error(c, http.StatusBadRequest, err, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
userInfo, err := req.CancelPrivilegeMembers()
|
||||
if err != nil {
|
||||
app.Error(c, http.StatusBadRequest, err, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
app.OK(c, userInfo, "取消成功")
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import (
|
|||
"github.com/codinl/go-logger"
|
||||
"github.com/xuri/excelize/v2"
|
||||
orm "go-admin/common/global"
|
||||
"go-admin/tools/config"
|
||||
"time"
|
||||
)
|
||||
|
||||
|
@ -268,7 +269,7 @@ func (m *UserMemberRecordReq) Export() (string, error) {
|
|||
fmt.Println(err)
|
||||
}
|
||||
|
||||
return ExportUrl + fileName, nil
|
||||
return config.ExportConfig.Url + fileName, nil
|
||||
}
|
||||
|
||||
func UserMemberRecordListSetUser(list []UserMemberRecord) {
|
||||
|
|
|
@ -1041,18 +1041,21 @@ func (m *StockImporter) ImportStockData(colsMap []map[string]interface{}) error
|
|||
for i, _ := range list {
|
||||
v1, ok1 := storeNameMap[list[i].StoreName]
|
||||
if !ok1 {
|
||||
logger.Error("store name err")
|
||||
return errors.New("store name err")
|
||||
logger.Errorf("erp store name err:%s", list[i].StoreName)
|
||||
fmt.Printf("erp store name err:%s", list[i].StoreName)
|
||||
return errors.New(fmt.Sprintf("导入门店名称[%s]跟系统不符,请检查", list[i].StoreName))
|
||||
}
|
||||
v2, ok2 := erpCommodityMap[list[i].Name]
|
||||
if !ok2 || v2 == nil {
|
||||
logger.Error("erp commodity name err")
|
||||
return errors.New("erp commodity name err")
|
||||
logger.Errorf("erp commodity name err:%s", list[i].Name)
|
||||
fmt.Printf("erp commodity name err:%s", list[i].Name)
|
||||
return errors.New(fmt.Sprintf("导入商品名称[%s]跟系统不符,请检查", list[i].Name))
|
||||
}
|
||||
v3, ok3 := erpSupplierNameMap[list[i].SupplierName]
|
||||
if !ok3 {
|
||||
logger.Error("erp supplier name err")
|
||||
return errors.New("erp supplier name err")
|
||||
logger.Errorf("erp supplier name err:%s", list[i].SupplierName)
|
||||
fmt.Printf("erp supplier name err:%s", list[i].SupplierName)
|
||||
return errors.New(fmt.Sprintf("导入供应商名称[%s]跟系统不符,请检查", list[i].SupplierName))
|
||||
}
|
||||
|
||||
// 注意:表格导入是员工成本价,数据库存储是员工成本价加价=员工成本价-指导采购价
|
||||
|
@ -1447,7 +1450,7 @@ func ErpCommodityListExport(list []ErpCommodity) (string, error) {
|
|||
file := excelize.NewFile()
|
||||
fSheet := "Sheet1"
|
||||
|
||||
url := ExportUrl
|
||||
url := config.ExportConfig.Url
|
||||
fileName := time.Now().Format(TimeFormat) + "商品资料" + ".xlsx"
|
||||
|
||||
title := []interface{}{"商品编号", "商品名称", "商品分类", "商品条码", "是否串码", "系统生成串码", "主供应商", "指导零售价",
|
||||
|
@ -1560,7 +1563,7 @@ func InventoryDetailListExport(list []ErpStockCommodity, c *gin.Context) (string
|
|||
return "", err
|
||||
}
|
||||
|
||||
url := ExportUrl
|
||||
url := config.ExportConfig.Url
|
||||
fileName := time.Now().Format(TimeFormat) + "库存详情" + ".xlsx"
|
||||
fmt.Println("url fileName:", url+fileName)
|
||||
|
||||
|
@ -1573,8 +1576,8 @@ func InventoryDetailListExport(list []ErpStockCommodity, c *gin.Context) (string
|
|||
logger.Info("exportStaffCostPrice is:", logger.Field("exportStaffCostPrice", exportStaffCostPrice))
|
||||
|
||||
// 设置标题行
|
||||
title := []interface{}{"商品编号", "商品名称", "商品分类", "是否串码", "商品串码", "所属门店", "供应商", "首次入库时间", "首次入库方式",
|
||||
"首次入库订单编号", "最近入库时间"}
|
||||
title := []interface{}{"商品编号", "商品名称", "商品分类", "是否串码", "商品串码", "所属门店", "供应商", "库存数量",
|
||||
"首次入库时间", "首次入库方式", "首次入库订单编号", "最近入库时间"}
|
||||
|
||||
if exportPurchasePrice {
|
||||
title = append(title, "入库采购价")
|
||||
|
@ -1626,6 +1629,7 @@ func InventoryDetailListExport(list []ErpStockCommodity, c *gin.Context) (string
|
|||
list[rowId].IMEI,
|
||||
list[rowId].StoreName,
|
||||
list[rowId].ErpSupplierName,
|
||||
1,
|
||||
list[rowId].FirstStockTime,
|
||||
storageType,
|
||||
list[rowId].OriginalSn,
|
||||
|
@ -1672,7 +1676,7 @@ func ErpCategoryListExport(list []ErpCategory) (string, error) {
|
|||
fmt.Println(err)
|
||||
}
|
||||
|
||||
url := ExportUrl
|
||||
url := config.ExportConfig.Url
|
||||
fileName := time.Now().Format(TimeFormat) + "分类列表数据" + ".xlsx"
|
||||
|
||||
//title := []interface{}{"门店", "用户ID", "订单编号", "下单时间", "卡带", "说明", "回收价", "闲麦价", "审核时间", "审核人", "操作", "复核时间", "复核状态"}
|
||||
|
|
|
@ -108,12 +108,14 @@ type CooperativeMemberPromotion struct {
|
|||
GoldCount uint32 `json:"gold_count"` // 黄金会员数量
|
||||
PlatinumCount uint32 `json:"platinum_count"` // 白金会员数量
|
||||
BlackGoldCount uint32 `json:"black_gold_count"` // 黑金会员数量
|
||||
PrivilegeCount uint32 `json:"privilege_count"` // 尊享会员数量
|
||||
Date string `json:"date" gorm:"index"` //
|
||||
State string `json:"state"` // 待发起结算 待财务打款 已结算
|
||||
|
||||
RenewalGoldCount uint32 `json:"renewal_gold_count"` // 续费黄金会员数量
|
||||
RenewalPlatinumCount uint32 `json:"renewal_platinum_count"` // 续费白金会员数量
|
||||
RenewalBlackGoldCount uint32 `json:"renewal_black_gold_count"` // 续费黑金会员数量
|
||||
RenewalPrivilegeCount uint32 `json:"renewal_privilege_count"` // 续费尊享会员数量
|
||||
|
||||
GoldDeduct uint32 `json:"gold_deduct" gorm:"-"` // 黄金会员提成
|
||||
PlatinumDeduct uint32 `json:"platinum_deduct" gorm:"-"` // 白金会员提成
|
||||
|
@ -140,10 +142,12 @@ type CooperativeMemberPromotionStore struct {
|
|||
GoldCount uint32 `json:"gold_count"` // 黄金会员数量
|
||||
PlatinumCount uint32 `json:"platinum_count"` // 白金会员数量
|
||||
BlackGoldCount uint32 `json:"black_gold_count"` // 黑金会员数量
|
||||
PrivilegeCount uint32 `json:"privilege_count"` // 尊享会员数量
|
||||
Date string `json:"date" gorm:"index"` //
|
||||
RenewalGoldCount uint32 `json:"renewal_gold_count"` // 续费黄金会员数量
|
||||
RenewalPlatinumCount uint32 `json:"renewal_platinum_count"` // 续费白金会员数量
|
||||
RenewalBlackGoldCount uint32 `json:"renewal_black_gold_count"` // 续费黑金会员数量
|
||||
RenewalPrivilegeCount uint32 `json:"renewal_privilege_count"` // 续费尊享会员数量
|
||||
UpgradeGoldToPlatinumCount uint32 `json:"upgrade_gold_to_platinum_count" gorm:"default:0"` // 升级:黄金->白金数量
|
||||
UpgradeGoldToBlackCount uint32 `json:"upgrade_gold_to_black_count" gorm:"default:0"` // 升级:黄金->黑金数量
|
||||
UpgradePlatinumToBlackCount uint32 `json:"upgrade_platinum_to_black_count" gorm:"default:0"` // 升级:白金->黑金数量
|
||||
|
@ -159,10 +163,12 @@ type CooperativeMemberPromotionDay struct {
|
|||
GoldCount uint32 `json:"gold_count"` // 黄金会员数量
|
||||
PlatinumCount uint32 `json:"platinum_count"` // 白金会员数量
|
||||
BlackGoldCount uint32 `json:"black_gold_count"` // 黑金会员数量
|
||||
PrivilegeCount uint32 `json:"privilege_count"` // 尊享会员数量
|
||||
DayTime string `json:"day_time" gorm:"index"` //
|
||||
RenewalGoldCount uint32 `json:"renewal_gold_count"` // 续费黄金会员数量
|
||||
RenewalPlatinumCount uint32 `json:"renewal_platinum_count"` // 续费白金会员数量
|
||||
RenewalBlackGoldCount uint32 `json:"renewal_black_gold_count"` // 续费黑金会员数量
|
||||
RenewalPrivilegeCount uint32 `json:"renewal_privilege_count"` // 续费尊享会员数量
|
||||
UpgradeGoldToPlatinumCount uint32 `json:"upgrade_gold_to_platinum_count" gorm:"default:0"` // 升级:黄金->白金数量
|
||||
UpgradeGoldToBlackCount uint32 `json:"upgrade_gold_to_black_count" gorm:"default:0"` // 升级:黄金->黑金数量
|
||||
UpgradePlatinumToBlackCount uint32 `json:"upgrade_platinum_to_black_count" gorm:"default:0"` // 升级:白金->黑金数量
|
||||
|
@ -178,10 +184,12 @@ type CooperativeMemberPromotionStoreDay struct {
|
|||
GoldCount uint32 `json:"gold_count"` // 黄金会员数量
|
||||
PlatinumCount uint32 `json:"platinum_count"` // 白金会员数量
|
||||
BlackGoldCount uint32 `json:"black_gold_count"` // 黑金会员数量
|
||||
PrivilegeCount uint32 `json:"privilege_count"` // 尊享会员数量
|
||||
DayTime string `json:"day_time" gorm:"index"` //
|
||||
RenewalGoldCount uint32 `json:"renewal_gold_count"` // 续费黄金会员数量
|
||||
RenewalPlatinumCount uint32 `json:"renewal_platinum_count"` // 续费白金会员数量
|
||||
RenewalBlackGoldCount uint32 `json:"renewal_black_gold_count"` // 续费黑金会员数量
|
||||
RenewalPrivilegeCount uint32 `json:"renewal_privilege_count"` // 续费尊享会员数量
|
||||
UpgradeGoldToPlatinumCount uint32 `json:"upgrade_gold_to_platinum_count" gorm:"default:0"` // 升级:黄金->白金数量
|
||||
UpgradeGoldToBlackCount uint32 `json:"upgrade_gold_to_black_count" gorm:"default:0"` // 升级:黄金->黑金数量
|
||||
UpgradePlatinumToBlackCount uint32 `json:"upgrade_platinum_to_black_count" gorm:"default:0"` // 升级:白金->黑金数量
|
||||
|
@ -200,6 +208,7 @@ type CooperativeDeductSettle struct {
|
|||
GoldCount uint32 `json:"gold_count"` // 黄金会员数量
|
||||
PlatinumCount uint32 `json:"platinum_count"` // 白金会员数量
|
||||
BlackGoldCount uint32 `json:"black_gold_count"` // 黑金会员数量
|
||||
PrivilegeCount uint32 `json:"privilege_count"` // 尊享会员数量
|
||||
GoldDeduct uint32 `json:"gold_deduct"` // 黄金会员提成配置
|
||||
PlatinumDeduct uint32 `json:"platinum_deduct"` // 白金会员提成配置
|
||||
BlackGoldDeduct uint32 `json:"black_gold_deduct"` // 黑金会员提成配置
|
||||
|
@ -207,6 +216,7 @@ type CooperativeDeductSettle struct {
|
|||
RenewalGoldCount uint32 `json:"renewal_gold_count"` // 续费黄金会员数量
|
||||
RenewalPlatinumCount uint32 `json:"renewal_platinum_count"` // 续费白金会员数量
|
||||
RenewalBlackGoldCount uint32 `json:"renewal_black_gold_count"` // 续费黑金会员数量
|
||||
RenewalPrivilegeCount uint32 `json:"renewal_privilege_count"` // 续费尊享会员数量
|
||||
|
||||
RenewalGoldDeduct uint32 `json:"renewal_gold_deduct"` // 续费黄金会员提成
|
||||
RenewalPlatinumDeduct uint32 `json:"renewal_platinum_deduct"` // 续费白金会员提成
|
||||
|
@ -701,11 +711,13 @@ type CooperativeMemberPromotionStatistic struct {
|
|||
GoldCount uint32 `json:"gold_count"` // 黄金会员数量
|
||||
PlatinumCount uint32 `json:"platinum_count"` // 白金会员数量
|
||||
BlackGoldCount uint32 `json:"black_gold_count"` // 黑金会员数量
|
||||
PrivilegeCount uint32 `json:"privilege_count"` // 尊享会员数量
|
||||
DayTime string `json:"day_time" gorm:"index"` //
|
||||
|
||||
RenewalGoldCount uint32 `json:"renewal_gold_count"` // 续费黄金会员数量
|
||||
RenewalPlatinumCount uint32 `json:"renewal_platinum_count"` // 续费白金会员数量
|
||||
RenewalBlackGoldCount uint32 `json:"renewal_black_gold_count"` // 续费黑金会员数量
|
||||
RenewalPrivilegeCount uint32 `json:"renewal_privilege_count"` // 续费尊享会员数量
|
||||
Date string `json:"date" gorm:"index"` // 日期
|
||||
StoreId uint32 `json:"store_id" gorm:"index"` // 门店id
|
||||
|
||||
|
@ -992,7 +1004,7 @@ func promotionStatisticListExport(list []CooperativeMemberPromotionStatistic) (s
|
|||
file := excelize.NewFile()
|
||||
fSheet := "Sheet1"
|
||||
|
||||
url := ExportUrl
|
||||
url := config.ExportConfig.Url
|
||||
fileName := time.Now().Format(TimeFormat) + "租卡会员统计" + ".xlsx"
|
||||
fmt.Println("url fileName:", url+fileName)
|
||||
|
||||
|
@ -1102,10 +1114,12 @@ func CooperativeMemberPromotionDayListToStatistic(list []CooperativeMemberPromot
|
|||
GoldCount: list[i].GoldCount,
|
||||
PlatinumCount: list[i].PlatinumCount,
|
||||
BlackGoldCount: list[i].BlackGoldCount,
|
||||
PrivilegeCount: list[i].PrivilegeCount,
|
||||
DayTime: list[i].DayTime,
|
||||
RenewalGoldCount: list[i].RenewalGoldCount,
|
||||
RenewalPlatinumCount: list[i].RenewalPlatinumCount,
|
||||
RenewalBlackGoldCount: list[i].RenewalBlackGoldCount,
|
||||
RenewalPrivilegeCount: list[i].RenewalPrivilegeCount,
|
||||
UpgradeGoldToPlatinumCount: list[i].UpgradeGoldToPlatinumCount,
|
||||
UpgradeGoldToBlackCount: list[i].UpgradeGoldToBlackCount,
|
||||
UpgradePlatinumToBlackCount: list[i].UpgradePlatinumToBlackCount,
|
||||
|
@ -1129,10 +1143,12 @@ func CooperativeMemberPromotionStoreDayToStatistic(list []CooperativeMemberPromo
|
|||
GoldCount: list[i].GoldCount,
|
||||
PlatinumCount: list[i].PlatinumCount,
|
||||
BlackGoldCount: list[i].BlackGoldCount,
|
||||
PrivilegeCount: list[i].PrivilegeCount,
|
||||
DayTime: list[i].DayTime,
|
||||
RenewalGoldCount: list[i].RenewalGoldCount,
|
||||
RenewalPlatinumCount: list[i].RenewalPlatinumCount,
|
||||
RenewalBlackGoldCount: list[i].RenewalBlackGoldCount,
|
||||
RenewalPrivilegeCount: list[i].RenewalPrivilegeCount,
|
||||
UpgradeGoldToPlatinumCount: list[i].UpgradeGoldToPlatinumCount,
|
||||
UpgradeGoldToBlackCount: list[i].UpgradeGoldToBlackCount,
|
||||
UpgradePlatinumToBlackCount: list[i].UpgradePlatinumToBlackCount,
|
||||
|
@ -1157,9 +1173,11 @@ func CooperativeMemberPromotionToStatistic(list []CooperativeMemberPromotion) []
|
|||
GoldCount: list[i].GoldCount,
|
||||
PlatinumCount: list[i].PlatinumCount,
|
||||
BlackGoldCount: list[i].BlackGoldCount,
|
||||
PrivilegeCount: list[i].PrivilegeCount,
|
||||
RenewalGoldCount: list[i].RenewalGoldCount,
|
||||
RenewalPlatinumCount: list[i].RenewalPlatinumCount,
|
||||
RenewalBlackGoldCount: list[i].RenewalBlackGoldCount,
|
||||
RenewalPrivilegeCount: list[i].RenewalPrivilegeCount,
|
||||
Date: list[i].Date,
|
||||
UpgradePlatinumToBlackCount: list[i].UpgradePlatinumToBlackCount,
|
||||
UpgradeGoldToBlackCount: list[i].UpgradeGoldToBlackCount,
|
||||
|
@ -1184,10 +1202,12 @@ func CooperativeMemberPromotionStoreToStatistic(list []CooperativeMemberPromotio
|
|||
GoldCount: list[i].GoldCount,
|
||||
PlatinumCount: list[i].PlatinumCount,
|
||||
BlackGoldCount: list[i].BlackGoldCount,
|
||||
PrivilegeCount: list[i].PrivilegeCount,
|
||||
//DayTime: list[i].DayTime,
|
||||
RenewalGoldCount: list[i].RenewalGoldCount,
|
||||
RenewalPlatinumCount: list[i].RenewalPlatinumCount,
|
||||
RenewalBlackGoldCount: list[i].RenewalBlackGoldCount,
|
||||
RenewalPrivilegeCount: list[i].RenewalPrivilegeCount,
|
||||
Date: list[i].Date,
|
||||
StoreId: list[i].StoreId,
|
||||
Store: list[i].Store,
|
||||
|
|
|
@ -2285,7 +2285,7 @@ func reportDecisionExport(req *ErpDecisionReportResp) (string, error) {
|
|||
file := excelize.NewFile()
|
||||
fSheet := "Sheet1"
|
||||
|
||||
url := ExportUrl
|
||||
url := config.ExportConfig.Url
|
||||
fileName := time.Now().Format(TimeFormat) + "进销存报表" + ".xlsx"
|
||||
fmt.Println("url fileName:", url+fileName)
|
||||
|
||||
|
|
|
@ -2395,7 +2395,7 @@ func storeManageDataExport(list []StoreManageData, storeName string, c *gin.Cont
|
|||
file := excelize.NewFile()
|
||||
fSheet := "Sheet1"
|
||||
|
||||
url := ExportUrl
|
||||
url := config.ExportConfig.Url
|
||||
fileName := time.Now().Format(TimeFormat) + storeName + "经营数据" + ".xlsx"
|
||||
fmt.Println("url fileName:", url+fileName)
|
||||
|
||||
|
@ -2493,7 +2493,7 @@ func retailMarginDataExport(req *ErpOrderRetailMarginResp, c *gin.Context) (stri
|
|||
file := excelize.NewFile()
|
||||
fSheet := "Sheet1"
|
||||
|
||||
url := ExportUrl
|
||||
url := config.ExportConfig.Url
|
||||
fileName := time.Now().Format(TimeFormat) + "商品零售毛利汇总" + ".xlsx"
|
||||
fmt.Println("url fileName:", url+fileName)
|
||||
|
||||
|
@ -3009,7 +3009,7 @@ func retailDetailExportBack(list []ErpOrder, sumData RetailDetailTotalData) (str
|
|||
file := excelize.NewFile()
|
||||
fSheet := "Sheet1"
|
||||
|
||||
url := ExportUrl
|
||||
url := config.ExportConfig.Url
|
||||
fileName := time.Now().Format(TimeFormat) + "零售明细" + ".xlsx"
|
||||
fmt.Println("url fileName:", url+fileName)
|
||||
|
||||
|
@ -3274,7 +3274,7 @@ func retailDetailExport(list []ErpOrder, sumData RetailDetailTotalData, c *gin.C
|
|||
file := excelize.NewFile()
|
||||
fSheet := "Sheet1"
|
||||
|
||||
url := ExportUrl
|
||||
url := config.ExportConfig.Url
|
||||
fileName := time.Now().Format(TimeFormat) + "零售明细" + ".xlsx"
|
||||
fmt.Println("url fileName:", url+fileName)
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ import (
|
|||
orm "go-admin/common/global"
|
||||
"go-admin/logger"
|
||||
"go-admin/tools"
|
||||
"go-admin/tools/config"
|
||||
"gorm.io/gorm"
|
||||
"strings"
|
||||
"time"
|
||||
|
@ -1864,7 +1865,7 @@ func GoodsStockFile(goodsData []ExportGoods, fileName string) string {
|
|||
fmt.Println(err)
|
||||
}
|
||||
|
||||
return ExportUrl + fileName
|
||||
return config.ExportConfig.Url + fileName
|
||||
}
|
||||
|
||||
func GoodsStatusStringByStatus(status uint8) string {
|
||||
|
@ -3332,7 +3333,7 @@ func MemberReportFile(memberReports []InviteMemberReport, fileName string) strin
|
|||
fmt.Println(err)
|
||||
}
|
||||
|
||||
return ExportUrl + fileName
|
||||
return config.ExportConfig.Url + fileName
|
||||
}
|
||||
|
||||
type CooperativeSetPayInfoReq struct {
|
||||
|
|
|
@ -1,22 +0,0 @@
|
|||
package models
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSend(t *testing.T) {
|
||||
//tel := "17080320980"
|
||||
tel := "13714071204,17727927738"
|
||||
//tel := "17602181899"
|
||||
|
||||
SmsSend(tel, "【go2switch】温馨提示:您的会员即将过期,请在过期之前将卡归还到门店,如有问题联系客服")
|
||||
}
|
||||
|
||||
func TestCreateInviteMemberReport(t *testing.T) {
|
||||
|
||||
CreateInviteMemberReport()
|
||||
}
|
||||
|
||||
func TestGtSendMessage(t *testing.T) {
|
||||
GtSendMessage([]string{"17080320980"}, "【go2switch】绿城短信推送测试,测试")
|
||||
}
|
|
@ -488,7 +488,7 @@ func reportByProductExport(req *InventoryReportByProductResp) (string, error) {
|
|||
file := excelize.NewFile()
|
||||
fSheet := "Sheet1"
|
||||
|
||||
url := ExportUrl
|
||||
url := config.ExportConfig.Url
|
||||
fileName := time.Now().Format(TimeFormat) + "产品库存汇总(按门店)" + ".xlsx"
|
||||
fmt.Println("url fileName:", url+fileName)
|
||||
|
||||
|
@ -834,7 +834,7 @@ func reportAllotExport(req *InventoryReportByAllotResp) (string, error) {
|
|||
file := excelize.NewFile()
|
||||
fSheet := "Sheet1"
|
||||
|
||||
url := ExportUrl
|
||||
url := config.ExportConfig.Url
|
||||
fileName := time.Now().Format(TimeFormat) + "库存调拨汇总" + ".xlsx"
|
||||
fmt.Println("url fileName:", url+fileName)
|
||||
|
||||
|
@ -1132,7 +1132,7 @@ func reportAllotDetailExport(req *InventoryReportAllotDetailResp) (string, error
|
|||
file := excelize.NewFile()
|
||||
fSheet := "Sheet1"
|
||||
|
||||
url := ExportUrl
|
||||
url := config.ExportConfig.Url
|
||||
fileName := time.Now().Format(TimeFormat) + "库存调拨明细" + ".xlsx"
|
||||
fmt.Println("url fileName:", url+fileName)
|
||||
|
||||
|
@ -1436,7 +1436,7 @@ func reportOtherExport(req *InventoryReportByOtherResp) (string, error) {
|
|||
file := excelize.NewFile()
|
||||
fSheet := "Sheet1"
|
||||
|
||||
url := ExportUrl
|
||||
url := config.ExportConfig.Url
|
||||
fileName := time.Now().Format(TimeFormat) + "其他出入库汇总" + ".xlsx"
|
||||
fmt.Println("url fileName:", url+fileName)
|
||||
|
||||
|
@ -1784,7 +1784,7 @@ func reportOtherDetailExport(req *InventoryReportOtherDetailResp) (string, error
|
|||
file := excelize.NewFile()
|
||||
fSheet := "Sheet1"
|
||||
|
||||
url := ExportUrl
|
||||
url := config.ExportConfig.Url
|
||||
fileName := time.Now().Format(TimeFormat) + "其他出入库明细" + ".xlsx"
|
||||
fmt.Println("url fileName:", url+fileName)
|
||||
|
||||
|
|
|
@ -519,7 +519,7 @@ func OrderListExport(list []Order) (string, error) {
|
|||
fmt.Println(err)
|
||||
}
|
||||
|
||||
url := ExportUrl
|
||||
url := config.ExportConfig.Url
|
||||
fileName := time.Now().Format(TimeFormat) + "租赁订单" + ".xlsx"
|
||||
fmt.Println("url fileName:", url+fileName)
|
||||
|
||||
|
@ -1581,8 +1581,11 @@ func (m *FundRecordListReq) List() ([]FundRecord, int64, string, error) {
|
|||
var fundRecords []FundRecord
|
||||
qs := orm.Eloquent.Table("fund_record")
|
||||
|
||||
// 默认剔除"尊享会员费",只有传参有才展示
|
||||
if m.FundType != "" {
|
||||
qs = qs.Where("fund_type=?", m.FundType)
|
||||
} else {
|
||||
qs = qs.Where("fund_type != ?", "privilege_member_fee")
|
||||
}
|
||||
if m.TransactionId != "" {
|
||||
qs = qs.Where("transaction_id=?", m.TransactionId)
|
||||
|
@ -1691,7 +1694,7 @@ func fundRecordListExport(list []FundRecord) (string, error) {
|
|||
file := excelize.NewFile()
|
||||
fSheet := "Sheet1"
|
||||
|
||||
url := ExportUrl
|
||||
url := config.ExportConfig.Url
|
||||
fileName := time.Now().Format(TimeFormat) + "财务统计" + ".xlsx"
|
||||
fmt.Println("url fileName:", url+fileName)
|
||||
|
||||
|
|
|
@ -1937,6 +1937,15 @@ func getErpPurchaseDemandAll(req *GetErpPurchaseDemandReq, c *gin.Context) (*Get
|
|||
}
|
||||
}
|
||||
|
||||
commodityIDs := make([]uint32, len(commodities))
|
||||
for i, commodity := range commodities {
|
||||
commodityIDs[i] = commodity.ID
|
||||
}
|
||||
|
||||
if len(commodityIDs) == 0 {
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
// 批量查询商品上月销售数量
|
||||
var soldOutCommodities []ErpStockCommodity
|
||||
firstDay, lastDay := GetLastMonthRange() // 获取上个月的时间范围
|
||||
|
@ -1947,12 +1956,12 @@ func getErpPurchaseDemandAll(req *GetErpPurchaseDemandReq, c *gin.Context) (*Get
|
|||
}
|
||||
if len(storeIdList) > 1 {
|
||||
err = orm.Eloquent.Table("erp_stock_commodity").
|
||||
Where("state = ? AND updated_at BETWEEN ? AND ? AND store_id in (?)",
|
||||
SoldOut, firstDay, lastDay, storeIdList).Find(&soldOutCommodities).Error
|
||||
Where("state = ? AND updated_at BETWEEN ? AND ? AND store_id in (?) AND erp_commodity_id IN (?)",
|
||||
SoldOut, firstDay, lastDay, storeIdList, commodityIDs).Find(&soldOutCommodities).Error
|
||||
} else {
|
||||
err = orm.Eloquent.Table("erp_stock_commodity").
|
||||
Where("state = ? AND updated_at BETWEEN ? AND ? AND store_id = ?",
|
||||
SoldOut, firstDay, lastDay, storeIdList[0]).Find(&soldOutCommodities).Error
|
||||
Where("state = ? AND updated_at BETWEEN ? AND ? AND store_id = ? AND erp_commodity_id IN (?)",
|
||||
SoldOut, firstDay, lastDay, storeIdList[0], commodityIDs).Find(&soldOutCommodities).Error
|
||||
}
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -1973,12 +1982,12 @@ func getErpPurchaseDemandAll(req *GetErpPurchaseDemandReq, c *gin.Context) (*Get
|
|||
var stockCommodities []ErpStockCommodity
|
||||
if len(storeIdList) > 1 {
|
||||
err = orm.Eloquent.Table("erp_stock_commodity").
|
||||
Where("state = ? AND store_id in (?)",
|
||||
InStock, storeIdList).Find(&stockCommodities).Error
|
||||
Where("state = ? AND store_id in (?) AND erp_commodity_id IN (?)",
|
||||
InStock, storeIdList, commodityIDs).Find(&stockCommodities).Error
|
||||
} else {
|
||||
err = orm.Eloquent.Table("erp_stock_commodity").
|
||||
Where("state = ? AND store_id = ?",
|
||||
InStock, storeIdList[0]).Find(&stockCommodities).Error
|
||||
Where("state = ? AND store_id = ? AND erp_commodity_id IN (?)",
|
||||
InStock, storeIdList[0], commodityIDs).Find(&stockCommodities).Error
|
||||
}
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -1991,14 +2000,14 @@ func getErpPurchaseDemandAll(req *GetErpPurchaseDemandReq, c *gin.Context) (*Get
|
|||
if exist { // 存在
|
||||
inStockMap[key] += 1
|
||||
} else { // 不存在
|
||||
inStockMap[key] = 0
|
||||
inStockMap[key] = 1
|
||||
}
|
||||
}
|
||||
|
||||
// 查询采购需求单信息
|
||||
var demand []ErpPurchaseDemand
|
||||
demandQs := orm.Eloquent.Table("erp_purchase_demand").
|
||||
Where("state = 1").Where("count <> 0")
|
||||
Where("state = 1").Where("count <> 0").Where("erp_commodity_id IN (?)", commodityIDs)
|
||||
if len(storeIdList) > 0 {
|
||||
if len(storeIdList) == 1 {
|
||||
demandQs = demandQs.Where("store_id = ?", storeIdList[0])
|
||||
|
@ -2016,7 +2025,7 @@ func getErpPurchaseDemandAll(req *GetErpPurchaseDemandReq, c *gin.Context) (*Get
|
|||
demandRemarkQs := orm.Eloquent.Table("erp_purchase_demand_remark").
|
||||
Where("state = 1").
|
||||
Where("remark IS NOT NULL").
|
||||
Where("remark <> ''")
|
||||
Where("remark <> ''").Where("erp_commodity_id IN (?)", commodityIDs)
|
||||
err = demandRemarkQs.Find(&demandRemarkInfo).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -2759,7 +2768,7 @@ func demandDataExport(list []DemandData) (string, error) {
|
|||
file := excelize.NewFile()
|
||||
fSheet := "Sheet1"
|
||||
|
||||
url := ExportUrl
|
||||
url := config.ExportConfig.Url
|
||||
fileName := time.Now().Format(TimeFormat) + "采购需求" + ".xlsx"
|
||||
fmt.Println("url fileName:", url+fileName)
|
||||
|
||||
|
@ -2911,7 +2920,7 @@ func demandDataExportOnShopAssistant(list []DemandData) (string, error) {
|
|||
file := excelize.NewFile()
|
||||
fSheet := "Sheet1"
|
||||
|
||||
url := ExportUrl
|
||||
url := config.ExportConfig.Url
|
||||
fileName := time.Now().Format(TimeFormat) + "采购需求" + ".xlsx"
|
||||
fmt.Println("url fileName:", url+fileName)
|
||||
|
||||
|
@ -3632,7 +3641,7 @@ func reportByOrderExport(req *ErpPurchaseReportByOrderResp) (string, error) {
|
|||
file := excelize.NewFile()
|
||||
fSheet := "Sheet1"
|
||||
|
||||
url := ExportUrl
|
||||
url := config.ExportConfig.Url
|
||||
fileName := time.Now().Format(TimeFormat) + "采购报表(按单)" + ".xlsx"
|
||||
fmt.Println("url fileName:", url+fileName)
|
||||
|
||||
|
@ -4682,7 +4691,7 @@ func reportByCommodityExport(req *ErpPurchaseReportByCommodityResp) (string, err
|
|||
file := excelize.NewFile()
|
||||
fSheet := "Sheet1"
|
||||
|
||||
url := ExportUrl
|
||||
url := config.ExportConfig.Url
|
||||
fileName := time.Now().Format(TimeFormat) + "采购报表(按商品)" + ".xlsx"
|
||||
fmt.Println("url fileName:", url+fileName)
|
||||
|
||||
|
@ -5228,7 +5237,7 @@ func reportBySupplierExport(req *ErpPurchaseReportBySupplierResp) (string, error
|
|||
file := excelize.NewFile()
|
||||
fSheet := "Sheet1"
|
||||
|
||||
url := ExportUrl
|
||||
url := config.ExportConfig.Url
|
||||
fileName := time.Now().Format(TimeFormat) + "供应商采购汇总" + ".xlsx"
|
||||
fmt.Println("url fileName:", url+fileName)
|
||||
|
||||
|
@ -5530,7 +5539,7 @@ func reportDetailExport(req *ErpPurchaseReportDetailResp, c *gin.Context) (strin
|
|||
file := excelize.NewFile()
|
||||
fSheet := "Sheet1"
|
||||
|
||||
url := ExportUrl
|
||||
url := config.ExportConfig.Url
|
||||
fileName := time.Now().Format(TimeFormat) + "采购明细" + ".xlsx"
|
||||
fmt.Println("url fileName:", url+fileName)
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ import (
|
|||
orm "go-admin/common/global"
|
||||
"go-admin/logger"
|
||||
"go-admin/tools"
|
||||
"go-admin/tools/config"
|
||||
"time"
|
||||
)
|
||||
|
||||
|
@ -271,7 +272,7 @@ func RecycleCardOrderListExport(list []RecycleCardOrder) (string, error) {
|
|||
//if err := file.SaveAs("./" + fileName); err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
return ExportUrl + fileName, nil
|
||||
return config.ExportConfig.Url + fileName, nil
|
||||
}
|
||||
|
||||
func RecycleCardOrderStateUpdate() {
|
||||
|
|
|
@ -417,7 +417,7 @@ func sysUserExport(req []SysUserPage) (string, error) {
|
|||
file := excelize.NewFile()
|
||||
fSheet := "Sheet1"
|
||||
|
||||
url := ExportUrl
|
||||
url := config.ExportConfig.Url
|
||||
fileName := time.Now().Format(TimeFormat) + "系统用户" + ".xlsx"
|
||||
fmt.Println("url fileName:", url+fileName)
|
||||
|
||||
|
|
|
@ -47,6 +47,8 @@ const (
|
|||
UpgradeGoldToPlatinumAuto // 18-黄金→白金(自动)
|
||||
UpgradeGoldToBlackAuto // 19-黄金→黑金(自动)
|
||||
UpgradePlatinumToBlackAuto // 20-白金→黑金(自动)
|
||||
OpenAnnualPrivilege // 21 开通年费尊享会员
|
||||
RenewAnnualPrivilegeAuto // 22 续费年费尊享会员(自动)
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -56,6 +58,7 @@ const (
|
|||
MemberLevelPeriod = 3 // 短期会员
|
||||
MemberLevelPlatinum = 4 // 白金会员
|
||||
MemberLevelBlackGold = 5 // 黑金会员
|
||||
MemberLevelPrivilege = 6 // 尊享会员
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -63,6 +66,12 @@ const (
|
|||
UserTypeShopAssistant = 2 // 店员
|
||||
)
|
||||
|
||||
const ( // 尊享会员延保状态
|
||||
ExtendExpire = 1 // 已过期
|
||||
ExtendWaitActive = 2 // 待激活
|
||||
ExtendEffectivity = 3 // 已激活
|
||||
)
|
||||
|
||||
// gen:qs
|
||||
//
|
||||
//go:generate goqueryset -in user.go
|
||||
|
@ -132,7 +141,7 @@ const QueryTimeFormat = "2006-01-02T15:04:05+08:00"
|
|||
const StoreDateTimeFormat = "2006.01.02"
|
||||
|
||||
const (
|
||||
ExportUrl = "https://admin.deovo.com/load/export/"
|
||||
// ExportUrl = "https://admin.deovo.com/load/export/"
|
||||
// ExportUrl = "https://dev.admin.deovo.com/load/export/" // dev环境
|
||||
// ExportUrl = "/Users/max/Documents/" // 本地环境
|
||||
)
|
||||
|
@ -780,7 +789,7 @@ func newUserListExport(list []U) (string, error) {
|
|||
file := excelize.NewFile()
|
||||
fSheet := "Sheet1"
|
||||
|
||||
url := ExportUrl
|
||||
url := config.ExportConfig.Url
|
||||
fileName := time.Now().Format(TimeFormat) + "所有会员" + ".xlsx"
|
||||
fmt.Println("url fileName:", url+fileName)
|
||||
|
||||
|
@ -1034,6 +1043,7 @@ type InviteMemberReport struct {
|
|||
GoldCountQuarter uint32 `json:"gold_count_quarter"` // 季度黄金数量
|
||||
PlatinumCount uint32 `json:"platinum_count"` // 白金数量
|
||||
BlackGoldCount uint32 `json:"black_gold_count"` // 黑金数量
|
||||
PrivilegeCount uint32 `json:"privilege_count"` // 尊享会员数量
|
||||
//ReportTime string `json:"report_time" gorm:"index"` // 业绩时间
|
||||
Date string `json:"date" gorm:"index"` // 业绩时间
|
||||
DeductAmount uint32 `json:"deduct_amount"` // 店员提成
|
||||
|
@ -1047,6 +1057,7 @@ type InviteMemberReport struct {
|
|||
RenewalGoldCountQuarter uint32 `json:"renewal_gold_count_quarter"` // 续费季度黄金会员数量(自动)
|
||||
RenewalPlatinumCount uint32 `json:"renewal_platinum_count"` // 续费白金会员数量(自动)
|
||||
RenewalBlackGoldCount uint32 `json:"renewal_black_gold_count"` // 续费黑金会员数量(自动)
|
||||
RenewalPrivilegeCount uint32 `json:"renewal_privilege_count"` // 续费尊享会员数量
|
||||
UpgradeGoldToPlatinumCount uint32 `json:"upgrade_gold_to_platinum_count" gorm:"default:0"` // 升级:黄金->白金数量(自动)
|
||||
UpgradeGoldToBlackCount uint32 `json:"upgrade_gold_to_black_count" gorm:"default:0"` // 升级:黄金->黑金数量(自动)
|
||||
UpgradePlatinumToBlackCount uint32 `json:"upgrade_platinum_to_black_count" gorm:"default:0"` // 升级:白金->黑金数量(自动)
|
||||
|
@ -1330,7 +1341,7 @@ func ExportUserMember(storeId uint32, startTime, endTime string) string {
|
|||
log.Fatal(err)
|
||||
}
|
||||
|
||||
return ExportUrl + fileName
|
||||
return config.ExportConfig.Url + fileName
|
||||
}
|
||||
|
||||
// gen:qs
|
||||
|
@ -1342,7 +1353,7 @@ type UserInviteRecord struct {
|
|||
StoreId uint64 `json:"store_id"` // 门店id 邀请用户门店
|
||||
Action uint32 `json:"action"` // 1-未激活 2-激活邀请
|
||||
SpendType uint32 `json:"spend_type"` // 1-未开通 2-开通会员 3-续费 4-升级
|
||||
MemberLevel uint32 `json:"member_level"` // 会员等级 0-未开通 1-普通 2-黄金 3-短期 4-白金 5-黑金
|
||||
MemberLevel uint32 `json:"member_level"` // 会员等级 0-未开通 1-普通 2-黄金 3-短期 4-白金 5-黑金 6-尊享会员
|
||||
MemberGenre uint32 `json:"member_genre"` // 会员类型 200-黄金年费 201-黄金季度 202-黄金半年
|
||||
First uint32 `json:"first"` // 首次
|
||||
Scan uint32 `json:"scan"` // 扫码
|
||||
|
@ -1441,7 +1452,7 @@ type NewUserInviteRecordReq struct {
|
|||
UserTel string `json:"user_tel"` // 用户手机号
|
||||
CreateStartTime time.Time `json:"create_start_time"` // 注册小程序时间-开始时间
|
||||
CreateEndTime time.Time `json:"create_end_time"` // 注册小程序时间-结束时间
|
||||
RecordType []uint32 `json:"record_type"` // 记录类型 1-首次邀请,2-开通年费黄金,3-开通季度黄金,4-开通半年黄金, 5-开通年费白金,6-开通年费黑金,7-续费年费黄金(干预),8-续费年费白金(干预),9-续费年费黑金(干预),10-续费年费黄金(自动), 11-续费季度黄金(自动),12-续费半年黄金(自动),13-续费年费白金(自动),14-续费年费黑金(自动),15-黄金→白金(干预), 16-黄金→黑金(干预),17-白金→黑金(干预),18-黄金→白金(自动),19-黄金→黑金(自动),20-白金→黑金(自动)
|
||||
RecordType []uint32 `json:"record_type"` // 记录类型 1-首次邀请,2-开通年费黄金,3-开通季度黄金,4-开通半年黄金, 5-开通年费白金,6-开通年费黑金,7-续费年费黄金(干预),8-续费年费白金(干预),9-续费年费黑金(干预),10-续费年费黄金(自动), 11-续费季度黄金(自动),12-续费半年黄金(自动),13-续费年费白金(自动),14-续费年费黑金(自动),15-黄金→白金(干预), 16-黄金→黑金(干预),17-白金→黑金(干预),18-黄金→白金(自动),19-黄金→黑金(自动),20-白金→黑金(自动),21-开通尊享会员, 22-续费尊享会员
|
||||
RecordStartTime time.Time `json:"record_start_time"` // 记录时间-开始时间
|
||||
RecordEndTime time.Time `json:"record_end_time"` // 记录时间-结束时间
|
||||
MemberLevel uint32 `json:"member_level"` // 当前类型:10-普通用户 1-普通会员 2-黄金会员 4-白金会员 5-黑金会员
|
||||
|
@ -1466,8 +1477,10 @@ type UserInviteRecordListData struct {
|
|||
CreateTime time.Time `json:"create_time"` // 注册小程序时间
|
||||
RecordType uint32 `json:"record_type"` // 记录类型
|
||||
RecordTime time.Time `json:"record_time"` // 记录时间
|
||||
MemberLevel uint32 `json:"member_level"` // 会员等级:1-普通 2-黄金 4-白金 5-黑金
|
||||
MemberLevel uint32 `json:"member_level"` // 当前租卡会员类型:1-普通 2-黄金 4-白金 5-黑金
|
||||
MemberExpire time.Time `json:"memberExpire"` // 租卡会员到期时间
|
||||
PrivilegeMemberLevel uint32 `json:"privilege_member_level"` // 当前尊享会员类型:1-普通 6-尊享会员
|
||||
PrivilegeMemberExpire time.Time `json:"privilege_memberExpire"` // 尊享会员到期时间
|
||||
}
|
||||
|
||||
func (m *NewUserInviteRecordReq) NewList(c *gin.Context) (*UserInviteRecordListResp, error) {
|
||||
|
@ -1480,6 +1493,8 @@ func (m *NewUserInviteRecordReq) NewList(c *gin.Context) (*UserInviteRecordListR
|
|||
CreateTime time.Time
|
||||
MemberExpire time.Time
|
||||
UserMemberLevel uint32
|
||||
PrivilegeMemberExpire time.Time
|
||||
PrivilegeMemberLevel uint32
|
||||
}
|
||||
err := UpdateUserInviteRecordRenewHide()
|
||||
if err != nil {
|
||||
|
@ -1513,9 +1528,11 @@ func (m *NewUserInviteRecordReq) NewList(c *gin.Context) (*UserInviteRecordListR
|
|||
qs := orm.Eloquent.Table("user_invite_record").Where("action=2")
|
||||
countQuery := orm.Eloquent.Table("user_invite_record").Where("action=2").
|
||||
Select("user_invite_record.*, B1.nick_name AS InviteUserName, " +
|
||||
"B2.tel AS UserTel, B2.created_at AS CreateTime, B2.member_expire AS MemberExpire, B2.member_level AS UserMemberLevel").
|
||||
"B2.tel AS UserTel, B2.created_at AS CreateTime, B2.member_expire AS MemberExpire, B2.member_level AS UserMemberLevel, " +
|
||||
"B3.member_expire AS PrivilegeMemberExpire, B3.member_level AS PrivilegeMemberLevel").
|
||||
Joins("Left JOIN sys_user B1 ON user_invite_record.from_uid = B1.uid and B1.uid != 0").
|
||||
Joins("Left JOIN user B2 ON user_invite_record.to_uid = B2.uid").
|
||||
Joins("Left JOIN privilege_member B3 ON user_invite_record.to_uid = B3.uid").
|
||||
Group("user_invite_record.id").
|
||||
Order("MAX(user_invite_record.action_time) DESC")
|
||||
|
||||
|
@ -1580,50 +1597,55 @@ func (m *NewUserInviteRecordReq) NewList(c *gin.Context) (*UserInviteRecordListR
|
|||
var recordTypeConditions []string
|
||||
for _, t := range m.RecordType {
|
||||
switch t {
|
||||
case 1:
|
||||
case 1: // 首次邀请
|
||||
recordTypeConditions = append(recordTypeConditions, "(first=1 AND spend_type=1)")
|
||||
case 2:
|
||||
case 2: // 开通年费黄金
|
||||
recordTypeConditions = append(recordTypeConditions, "(user_invite_record.member_level=2 AND spend_type=2)")
|
||||
case 3:
|
||||
case 3: // 开通季度黄金
|
||||
recordTypeConditions = append(recordTypeConditions, "(user_invite_record.member_level=2 AND spend_type=2 AND user_invite_record.member_genre=201)")
|
||||
case 4:
|
||||
case 4: // 开通半年黄金
|
||||
recordTypeConditions = append(recordTypeConditions, "(user_invite_record.member_level=2 AND spend_type=2 AND user_invite_record.member_genre=202)")
|
||||
case 5:
|
||||
case 5: // 开通年费白金
|
||||
recordTypeConditions = append(recordTypeConditions, "(user_invite_record.member_level=4 AND spend_type=2)")
|
||||
case 6:
|
||||
case 6: // 开通年费黑金
|
||||
recordTypeConditions = append(recordTypeConditions, "(user_invite_record.member_level=5 AND spend_type=2)")
|
||||
|
||||
case 7:
|
||||
case 7: // 续费年费黄金(干预)
|
||||
recordTypeConditions = append(recordTypeConditions, "(user_invite_record.member_level=2 AND spend_type=3 AND renew_hide=0)")
|
||||
case 8:
|
||||
case 8: // 续费年费白金(干预)
|
||||
recordTypeConditions = append(recordTypeConditions, "(user_invite_record.member_level=4 AND spend_type=3 AND renew_hide=0)")
|
||||
case 9:
|
||||
case 9: // 续费年费黑金(干预)
|
||||
recordTypeConditions = append(recordTypeConditions, "(user_invite_record.member_level=5 AND spend_type=3 AND renew_hide=0)")
|
||||
|
||||
case 10:
|
||||
case 10: // 续费年费黄金(自动)
|
||||
recordTypeConditions = append(recordTypeConditions, "(user_invite_record.member_level=2 AND spend_type=3 AND renew_hide=1)")
|
||||
case 11:
|
||||
case 11: // 续费季度黄金(自动)
|
||||
recordTypeConditions = append(recordTypeConditions, "(user_invite_record.member_level=2 AND spend_type=3 AND renew_hide=1 AND user_invite_record.member_genre=201)")
|
||||
case 12:
|
||||
case 12: // 续费半年黄金(自动)
|
||||
recordTypeConditions = append(recordTypeConditions, "(user_invite_record.member_level=2 AND spend_type=3 AND renew_hide=1 AND user_invite_record.member_genre=202)")
|
||||
case 13:
|
||||
case 13: // 续费年费白金(自动)
|
||||
recordTypeConditions = append(recordTypeConditions, "(user_invite_record.member_level=4 AND spend_type=3 AND renew_hide=1)")
|
||||
case 14:
|
||||
case 14: // 续费年费黑金(自动)
|
||||
recordTypeConditions = append(recordTypeConditions, "(user_invite_record.member_level=5 AND spend_type=3 AND renew_hide=1)")
|
||||
|
||||
case 15:
|
||||
case 15: // 黄金→白金(干预)
|
||||
recordTypeConditions = append(recordTypeConditions, "(user_invite_record.member_level=4 AND spend_type=4 AND renew_hide=0)")
|
||||
case 16:
|
||||
case 16: // 黄金→黑金(干预)
|
||||
recordTypeConditions = append(recordTypeConditions, "(user_invite_record.member_level=5 AND spend_type=4 AND renew_hide=0 AND user_invite_record.member_genre in (200,201,202))")
|
||||
case 17:
|
||||
case 17: // 白金→黑金(干预)
|
||||
recordTypeConditions = append(recordTypeConditions, "(user_invite_record.member_level=5 AND spend_type=4 AND renew_hide=0 AND user_invite_record.member_genre not in (200,201,202))")
|
||||
|
||||
case 18:
|
||||
case 18: // 黄金→白金(自动)
|
||||
recordTypeConditions = append(recordTypeConditions, "(user_invite_record.member_level=4 AND spend_type=4 AND renew_hide=1)")
|
||||
case 19:
|
||||
case 19: // 黄金→黑金(自动)
|
||||
recordTypeConditions = append(recordTypeConditions, "(user_invite_record.member_level=5 AND spend_type=4 AND renew_hide=1 AND user_invite_record.member_genre in (200,201,202))")
|
||||
case 20:
|
||||
case 20: // 白金→黑金(自动)
|
||||
recordTypeConditions = append(recordTypeConditions, "(user_invite_record.member_level=5 AND spend_type=4 AND renew_hide=1 AND user_invite_record.member_genre not in (200,201,202))")
|
||||
|
||||
case 21: // 开通年费尊享会员
|
||||
recordTypeConditions = append(recordTypeConditions, "(user_invite_record.member_level=6 AND spend_type=2)")
|
||||
case 22: // 续费年费尊享会员(自动)
|
||||
recordTypeConditions = append(recordTypeConditions, "(user_invite_record.member_level=6 AND spend_type=3 AND renew_hide=1)")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1657,9 +1679,11 @@ func (m *NewUserInviteRecordReq) NewList(c *gin.Context) (*UserInviteRecordListR
|
|||
|
||||
if m.IsExport == 1 { // 导出excel
|
||||
err = qs.Select("user_invite_record.*, B1.nick_name AS InviteUserName, " +
|
||||
"B2.tel AS UserTel, B2.created_at AS CreateTime, B2.member_expire AS MemberExpire, B2.member_level AS UserMemberLevel").
|
||||
"B2.tel AS UserTel, B2.created_at AS CreateTime, B2.member_expire AS MemberExpire, B2.member_level AS UserMemberLevel, " +
|
||||
"B3.member_expire AS PrivilegeMemberExpire, B3.member_level AS PrivilegeMemberLevel").
|
||||
Joins("Left JOIN sys_user B1 ON user_invite_record.from_uid = B1.uid and B1.uid != 0").
|
||||
Joins("Left JOIN user B2 ON user_invite_record.to_uid = B2.uid").
|
||||
Joins("Left JOIN privilege_member B3 ON user_invite_record.to_uid = B3.uid").
|
||||
Group("user_invite_record.id").
|
||||
Order("MAX(user_invite_record.action_time) DESC").
|
||||
Find(&records).Error
|
||||
|
@ -1669,9 +1693,11 @@ func (m *NewUserInviteRecordReq) NewList(c *gin.Context) (*UserInviteRecordListR
|
|||
}
|
||||
} else {
|
||||
err = qs.Select("user_invite_record.*, B1.nick_name AS InviteUserName, " +
|
||||
"B2.tel AS UserTel, B2.created_at AS CreateTime, B2.member_expire AS MemberExpire, B2.member_level AS UserMemberLevel").
|
||||
"B2.tel AS UserTel, B2.created_at AS CreateTime, B2.member_expire AS MemberExpire, B2.member_level AS UserMemberLevel, " +
|
||||
"B3.member_expire AS PrivilegeMemberExpire, B3.member_level AS PrivilegeMemberLevel").
|
||||
Joins("Left JOIN sys_user B1 ON user_invite_record.from_uid = B1.uid and B1.uid != 0").
|
||||
Joins("Left JOIN user B2 ON user_invite_record.to_uid = B2.uid").
|
||||
Joins("Left JOIN privilege_member B3 ON user_invite_record.to_uid = B3.uid").
|
||||
Group("user_invite_record.id").
|
||||
Order("MAX(user_invite_record.action_time) DESC").
|
||||
Offset(page * pageSize).
|
||||
|
@ -1697,6 +1723,8 @@ func (m *NewUserInviteRecordReq) NewList(c *gin.Context) (*UserInviteRecordListR
|
|||
RecordTime: item.ActionTime,
|
||||
MemberLevel: item.UserMemberLevel,
|
||||
MemberExpire: item.MemberExpire,
|
||||
PrivilegeMemberLevel: item.PrivilegeMemberLevel,
|
||||
PrivilegeMemberExpire: item.PrivilegeMemberExpire,
|
||||
}
|
||||
|
||||
if item.FromUid == 0 {
|
||||
|
@ -1782,6 +1810,8 @@ func getMemberLevelChineseDescription(memberLevel uint32) string {
|
|||
return "白金会员"
|
||||
case 5:
|
||||
return "黑金会员"
|
||||
case 6:
|
||||
return "尊享会员"
|
||||
}
|
||||
|
||||
return ""
|
||||
|
@ -1792,7 +1822,7 @@ func userInviteRecordExport(list []UserInviteRecordListData) (string, error) {
|
|||
file := excelize.NewFile()
|
||||
fSheet := "Sheet1"
|
||||
|
||||
url := ExportUrl
|
||||
url := config.ExportConfig.Url
|
||||
fileName := time.Now().Format(TimeFormat) + "会员邀请记录" + ".xlsx"
|
||||
fmt.Println("url fileName:", url+fileName)
|
||||
|
||||
|
@ -1888,6 +1918,8 @@ func CalculateMemberType(spendType, renewHide, memberGenre, memberLevel uint32)
|
|||
return OpenAnnualPlatinum
|
||||
case 5:
|
||||
return OpenAnnualBlack
|
||||
case 6:
|
||||
return OpenAnnualPrivilege
|
||||
}
|
||||
case spendType == 3 && renewHide == 0:
|
||||
switch memberLevel {
|
||||
|
@ -1906,6 +1938,8 @@ func CalculateMemberType(spendType, renewHide, memberGenre, memberLevel uint32)
|
|||
return RenewAnnualPlatinumAuto
|
||||
case 5:
|
||||
return RenewAnnualBlackAuto
|
||||
case 6:
|
||||
return RenewAnnualPrivilegeAuto
|
||||
}
|
||||
case spendType == 4 && renewHide == 0:
|
||||
switch memberLevel {
|
||||
|
@ -2517,7 +2551,7 @@ func ExportUserMemberList(storeId, memberType, cooperativeId uint32, startTime,
|
|||
fmt.Println(err)
|
||||
}
|
||||
|
||||
return ExportUrl + fileName
|
||||
return config.ExportConfig.Url + fileName
|
||||
}
|
||||
|
||||
type ExportUserInviteMemberList []UserInviteMember
|
||||
|
@ -2782,6 +2816,7 @@ func (m *CooperativeBusiness) UserInviteReport(userInfo UserInfo) {
|
|||
GoldCountQuarter: 0,
|
||||
PlatinumCount: 0,
|
||||
BlackGoldCount: 0,
|
||||
PrivilegeCount: 0,
|
||||
Date: reportTime,
|
||||
DeductAmount: 0,
|
||||
CooperativeBusinessId: userInfo.CooperativeBusinessId,
|
||||
|
@ -2794,6 +2829,7 @@ func (m *CooperativeBusiness) UserInviteReport(userInfo UserInfo) {
|
|||
RenewalGoldCountQuarter: 0,
|
||||
RenewalPlatinumCount: 0,
|
||||
RenewalBlackGoldCount: 0,
|
||||
RenewalPrivilegeCount: 0,
|
||||
UpgradeGoldToPlatinumCount: 0,
|
||||
UpgradeGoldToBlackCount: 0,
|
||||
UpgradePlatinumToBlackCount: 0,
|
||||
|
@ -2997,7 +3033,7 @@ func inviteMemberReport(list []InviteMemberReport) (string, error) {
|
|||
file := excelize.NewFile()
|
||||
fSheet := "Sheet1"
|
||||
|
||||
url := ExportUrl
|
||||
url := config.ExportConfig.Url
|
||||
fileName := time.Now().Format(TimeFormat) + "店员绩效" + ".xlsx"
|
||||
fmt.Println("url fileName:", url+fileName)
|
||||
|
||||
|
@ -3667,7 +3703,7 @@ func MemberStatisticDailyListExport(dailys []MemberStatisticDaily) (string, erro
|
|||
if err := file.SaveAs("/www/server/images/export/" + fileName); err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
return ExportUrl + fileName, nil
|
||||
return config.ExportConfig.Url + fileName, nil
|
||||
}
|
||||
|
||||
func UserInviteRecordListSetAssistantName(records []UserInviteRecord) {
|
||||
|
@ -3915,7 +3951,7 @@ func UpdateExpireMemberLevel() {
|
|||
|
||||
for i, _ := range users {
|
||||
if err = orm.Eloquent.Model(&UserInfo{}).Where("id = ?", users[i].ID).Updates(map[string]interface{}{
|
||||
"member_level": 1,
|
||||
"member_level": MemberLevelUser,
|
||||
}).Error; err != nil {
|
||||
logger.Errorf("UpdateExpireMemberLevel err,", err.Error())
|
||||
continue
|
||||
|
@ -3923,6 +3959,31 @@ func UpdateExpireMemberLevel() {
|
|||
}
|
||||
}
|
||||
|
||||
// UpdateExpirePrivilegeMemberLevel 更新过期尊享会员等级
|
||||
func UpdateExpirePrivilegeMemberLevel() {
|
||||
var users []PrivilegeMember
|
||||
err := orm.Eloquent.Table("privilege_member").Where("member_expire < ?", time.Now()).
|
||||
Where("member_level = ?", MemberLevelPrivilege).Find(&users).Error
|
||||
if err != nil {
|
||||
logger.Error(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
if len(users) == 0 {
|
||||
logger.Info("UpdateExpirePrivilegeMemberLevel users is null")
|
||||
return
|
||||
}
|
||||
|
||||
for i, _ := range users {
|
||||
if err = orm.Eloquent.Model(&PrivilegeMember{}).Where("id = ?", users[i].ID).Updates(map[string]interface{}{
|
||||
"member_level": MemberLevelUser,
|
||||
}).Error; err != nil {
|
||||
logger.Errorf("UpdateExpirePrivilegeMemberLevel err,", err.Error())
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// GetUserInfoByTel 通过手机号获取用户信息
|
||||
func GetUserInfoByTel(tel string) (UserInfo, error) {
|
||||
var userInfo UserInfo
|
||||
|
@ -3955,3 +4016,415 @@ func IsInMemberLevels(memberLevel uint32) bool {
|
|||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// PrivilegeMember 零售尊享会员
|
||||
type PrivilegeMember struct {
|
||||
Model
|
||||
Uid uint32 `json:"uid" gorm:"column:uid;unique_index"` // 用户id
|
||||
Tel string `json:"tel"` // 电话
|
||||
StoreId uint64 `json:"store_id"` // 门店id
|
||||
MemberLevel uint32 `json:"member_level"` // 当前会员等级:1-普通用户,6-尊享会员
|
||||
MemberExpire *time.Time `json:"member_expire"` // 会员到期时间
|
||||
OpenMemberTime *time.Time `json:"open_member_time"` // 开通会员时间
|
||||
ExtendStatus uint32 `json:"extend_status"` // 延保状态:0-非会员, 1-已过期,2-待激活、3-已激活
|
||||
HostCode string `json:"host_code"` // 主机编码
|
||||
Images string `json:"images"` // 图片凭证
|
||||
AuditorId uint32 `json:"auditor_id" gorm:"index"` // 审核人id
|
||||
AuditorName string `json:"auditor_name"` // 审核人姓名
|
||||
AuditTime *time.Time `json:"audit_time"` // 审核时间
|
||||
Remark string `json:"remark"` // 备注
|
||||
Store *Store `json:"store" gorm:"-"` // 门店信息
|
||||
}
|
||||
|
||||
// PrivilegeMemberListReq 查询零售尊享会员列表入参
|
||||
type PrivilegeMemberListReq struct {
|
||||
Uid uint32 `json:"uid"` // 用户ID
|
||||
Tel string `json:"tel"` // 手机号
|
||||
HostCode string `json:"host_code"` // 主机编码
|
||||
StoreId []uint32 `json:"store_id"` // 门店列表(支持复选)
|
||||
MemberLevel uint32 `json:"member_level"` // 当前会员等级
|
||||
AuditorId uint32 `json:"auditor_id"` // 审核人
|
||||
ExtendStatus uint32 `json:"extend_status"` // 延保状态
|
||||
OpenMemberStart string `json:"open_member_start"` // 首次开通尊享会员-开始时间
|
||||
OpenMemberEnd string `json:"open_member_end"` // 首次开通尊享会员-结束时间
|
||||
MemberExpireStart string `json:"member_expire_start"` // 尊享会员到期时间-开始时间
|
||||
MemberExpireEnd string `json:"member_expire_end"` // 尊享会员到期时间-结束时间
|
||||
AuditTimeStart string `json:"audit_time_start"` // 审核开始时间
|
||||
AuditTimeEnd string `json:"audit_time_end"` // 审核结束时间
|
||||
IsExport uint32 `json:"is_export"` // 1-导出excel
|
||||
PageIndex int `json:"pageIndex"` // 页码
|
||||
PageSize int `json:"pageSize"` // 页面条数
|
||||
}
|
||||
|
||||
// PrivilegeMemberListResp 查询零售尊享会员列表出参
|
||||
type PrivilegeMemberListResp struct {
|
||||
Total int64 `json:"total"` // 总条数
|
||||
PageIndex int `json:"pageIndex"` // 页码
|
||||
PageSize int `json:"pageSize"` // 页面条数
|
||||
ExportUrl string `json:"export_url"` // 导出excel路径
|
||||
List []PrivilegeMember `json:"list"` // 零售尊享会员信息
|
||||
}
|
||||
|
||||
func (m *PrivilegeMemberListReq) PrivilegeMemberList(c *gin.Context) (*PrivilegeMemberListResp, error) {
|
||||
// 非管理员才判断所属门店
|
||||
if !(tools.GetRoleName(c) == "admin" || tools.GetRoleName(c) == "系统管理员") {
|
||||
sysUser, err := GetSysUserByCtx(c)
|
||||
if err != nil {
|
||||
return nil, errors.New("操作失败:" + err.Error())
|
||||
}
|
||||
|
||||
// 返回sysUser未过期的门店id列表
|
||||
storeList := GetValidStoreIDs(sysUser.StoreData)
|
||||
if len(storeList) > 0 {
|
||||
m.StoreId = CompareLists(storeList, m.StoreId)
|
||||
if len(m.StoreId) == 0 { // 没有匹配的数据,表示入参门店不是用户有权限的门店
|
||||
return &PrivilegeMemberListResp{}, nil
|
||||
}
|
||||
m.StoreId = append(m.StoreId, 0)
|
||||
} else {
|
||||
return nil, errors.New("用户未绑定门店")
|
||||
}
|
||||
}
|
||||
|
||||
page := m.PageIndex - 1
|
||||
if page < 0 {
|
||||
page = 0
|
||||
}
|
||||
if m.PageSize == 0 {
|
||||
m.PageSize = 10
|
||||
}
|
||||
resp := &PrivilegeMemberListResp{
|
||||
PageIndex: page + 1,
|
||||
PageSize: m.PageSize,
|
||||
}
|
||||
var memberList []PrivilegeMember
|
||||
qs := orm.Eloquent.Model(&PrivilegeMember{}).Debug()
|
||||
|
||||
if m.Uid != 0 {
|
||||
qs = qs.Where("uid = ?", m.Uid)
|
||||
}
|
||||
if m.Tel != "" {
|
||||
qs = qs.Where("tel = ?", m.Tel)
|
||||
}
|
||||
if m.HostCode != "" {
|
||||
qs = qs.Where("host_code = ?", m.HostCode)
|
||||
}
|
||||
if len(m.StoreId) != 0 {
|
||||
if len(m.StoreId) == 1 {
|
||||
qs = qs.Where("store_id = ?", m.StoreId[0])
|
||||
} else {
|
||||
qs = qs.Where("store_id IN (?)", m.StoreId)
|
||||
}
|
||||
}
|
||||
if m.MemberLevel != 0 {
|
||||
qs = qs.Where("member_level = ?", m.MemberLevel)
|
||||
}
|
||||
if m.AuditorId != 0 {
|
||||
qs = qs.Where("auditor_id = ?", m.AuditorId)
|
||||
}
|
||||
if m.ExtendStatus != 0 {
|
||||
qs = qs.Where("extend_status = ?", m.ExtendStatus)
|
||||
}
|
||||
if m.OpenMemberStart != "" {
|
||||
parse, err := time.Parse(QueryTimeFormat, m.OpenMemberStart)
|
||||
if err != nil {
|
||||
logger.Errorf("err:", logger.Field("err", err))
|
||||
return nil, err
|
||||
}
|
||||
qs = qs.Where("open_member_time > ?", parse)
|
||||
}
|
||||
if m.OpenMemberEnd != "" {
|
||||
parse, err := time.Parse(QueryTimeFormat, m.OpenMemberEnd)
|
||||
if err != nil {
|
||||
logger.Errorf("err:", logger.Field("err", err))
|
||||
return nil, err
|
||||
}
|
||||
qs = qs.Where("open_member_time < ?", parse)
|
||||
}
|
||||
if m.MemberExpireStart != "" {
|
||||
parse, err := time.Parse(QueryTimeFormat, m.MemberExpireStart)
|
||||
if err != nil {
|
||||
logger.Errorf("err:", logger.Field("err", err))
|
||||
return nil, err
|
||||
}
|
||||
qs = qs.Where("member_expire > ?", parse)
|
||||
}
|
||||
if m.MemberExpireEnd != "" {
|
||||
parse, err := time.Parse(QueryTimeFormat, m.MemberExpireEnd)
|
||||
if err != nil {
|
||||
logger.Errorf("err:", logger.Field("err", err))
|
||||
return nil, err
|
||||
}
|
||||
qs = qs.Where("member_expire < ?", parse)
|
||||
}
|
||||
if m.AuditTimeStart != "" {
|
||||
parse, err := time.Parse(QueryTimeFormat, m.AuditTimeStart)
|
||||
if err != nil {
|
||||
logger.Errorf("err:", logger.Field("err", err))
|
||||
return nil, err
|
||||
}
|
||||
qs = qs.Where("audit_time > ?", parse)
|
||||
}
|
||||
if m.AuditTimeEnd != "" {
|
||||
parse, err := time.Parse(QueryTimeFormat, m.AuditTimeEnd)
|
||||
if err != nil {
|
||||
logger.Errorf("err:", logger.Field("err", err))
|
||||
return nil, err
|
||||
}
|
||||
qs = qs.Where("audit_time < ?", parse)
|
||||
}
|
||||
|
||||
var count int64
|
||||
err := qs.Count(&count).Error
|
||||
if err != nil {
|
||||
logger.Error("count err:", logger.Field("err", err))
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if m.IsExport == 1 { // 导出excel
|
||||
err = qs.Order("id DESC").Find(&memberList).Error
|
||||
if err != nil && err != RecordNotFound {
|
||||
logger.Error("err:", logger.Field("err", err))
|
||||
return nil, err
|
||||
}
|
||||
} else {
|
||||
err = qs.Order("id DESC").Offset(page * m.PageSize).Limit(m.PageSize).Find(&memberList).Error
|
||||
if err != nil && err != RecordNotFound {
|
||||
logger.Error("err:", logger.Field("err", err))
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
// 查询门店信息
|
||||
storeList := make(map[uint32]Store)
|
||||
storeList = GetStoreMap()
|
||||
|
||||
for i, u := range memberList {
|
||||
if u.StoreId == 0 {
|
||||
continue
|
||||
}
|
||||
// 添加门店信息
|
||||
store := storeList[uint32(u.StoreId)]
|
||||
memberList[i].Store = &store
|
||||
|
||||
// 校验时间,如果为01-01-01 08:05,则赋值为空
|
||||
validateZeroTime(&memberList[i].AuditTime)
|
||||
}
|
||||
|
||||
if m.IsExport == 1 {
|
||||
fileName, err := PrivilegeMemberExport(memberList)
|
||||
if err != nil {
|
||||
logger.Error("err:", logger.Field("err", err))
|
||||
return nil, err
|
||||
}
|
||||
resp.ExportUrl = fileName
|
||||
} else {
|
||||
resp.List = memberList
|
||||
resp.Total = count
|
||||
resp.PageSize = m.PageSize
|
||||
resp.PageIndex = m.PageIndex
|
||||
}
|
||||
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
// PrivilegeMemberExport 尊享会员导出excel
|
||||
func PrivilegeMemberExport(list []PrivilegeMember) (string, error) {
|
||||
file := excelize.NewFile()
|
||||
fSheet := "Sheet1"
|
||||
|
||||
url := config.ExportConfig.Url
|
||||
fileName := time.Now().Format(TimeFormat) + "零售尊享会员" + ".xlsx"
|
||||
fmt.Println("url fileName:", url+fileName)
|
||||
|
||||
//title := []interface{}{"用户ID", "手机号", "所属门店", "当前会员等级", "首次开通尊享会员时间", "尊享会员到期时间", "延保状态",
|
||||
// "主机编码", "图片凭证", "审核人", "审核时间"}
|
||||
title := []interface{}{"用户ID", "手机号", "所属门店", "当前会员等级", "首次开通尊享会员时间", "尊享会员到期时间", "延保状态",
|
||||
"主机编码", "审核人", "审核时间"}
|
||||
for i, _ := range title {
|
||||
cell, _ := excelize.CoordinatesToCellName(1+i, 1)
|
||||
err := file.SetCellValue(fSheet, cell, title[i])
|
||||
if err != nil {
|
||||
logger.Error("file set value err:", logger.Field("err", err))
|
||||
}
|
||||
}
|
||||
|
||||
var row []interface{}
|
||||
nExcelStartRow := 0
|
||||
|
||||
// 查询门店信息
|
||||
var storeList []Store
|
||||
err := orm.Eloquent.Table("store").Find(&storeList).Error
|
||||
if err != nil {
|
||||
logger.Errorf("err:", logger.Field("err", err))
|
||||
return "", err
|
||||
}
|
||||
storeMap := make(map[uint32]string, 0)
|
||||
for i, _ := range storeList {
|
||||
storeMap[storeList[i].ID] = storeList[i].Name
|
||||
}
|
||||
fmt.Println("storeMap is:", storeMap)
|
||||
|
||||
for i := 0; i < len(list); i++ {
|
||||
var strExtendStatus string
|
||||
switch list[i].ExtendStatus {
|
||||
case 1:
|
||||
strExtendStatus = "已过期"
|
||||
case 2:
|
||||
strExtendStatus = "待激活"
|
||||
case 3:
|
||||
strExtendStatus = "已激活"
|
||||
default:
|
||||
strExtendStatus = ""
|
||||
}
|
||||
row = []interface{}{
|
||||
list[i].Uid, // 用户ID
|
||||
list[i].Tel, // 手机号
|
||||
storeMap[uint32(list[i].StoreId)], // 所属门店
|
||||
getMemberLevelChineseDescription(list[i].MemberLevel), // 当前会员等级
|
||||
tools.ConvertTimeToStringByPoint(list[i].OpenMemberTime), // 首次开通尊享会员时间
|
||||
tools.ConvertTimeToStringByPoint(list[i].MemberExpire), // 尊享会员到期时间
|
||||
strExtendStatus, // 延保状态
|
||||
list[i].HostCode, // 主机编码
|
||||
//list[i].Images, // 图片凭证
|
||||
list[i].AuditorName, // 审核人
|
||||
tools.ConvertTimeToStringByPoint(list[i].AuditTime), // 审核时间
|
||||
}
|
||||
|
||||
for j, _ := range row {
|
||||
cell, _ := excelize.CoordinatesToCellName(1+j, nExcelStartRow+2)
|
||||
err = file.SetCellValue(fSheet, cell, row[j])
|
||||
if err != nil {
|
||||
logger.Error("file set value err:", logger.Field("err", err))
|
||||
}
|
||||
}
|
||||
nExcelStartRow++
|
||||
}
|
||||
|
||||
// 设置所有单元格的样式: 居中、加边框
|
||||
style, _ := file.NewStyle(`{"alignment":{"horizontal":"center","vertical":"center"},
|
||||
"border":[{"type":"left","color":"000000","style":1},
|
||||
{"type":"top","color":"000000","style":1},
|
||||
{"type":"right","color":"000000","style":1},
|
||||
{"type":"bottom","color":"000000","style":1}]}`)
|
||||
|
||||
// 设置单元格的样式: 居中、加边框、自动换行
|
||||
style1, _ := file.NewStyle(`{"alignment":{"horizontal":"center","vertical":"center","wrap_text":true},
|
||||
"border":[{"type":"left","color":"000000","style":1},
|
||||
{"type":"top","color":"000000","style":1},
|
||||
{"type":"right","color":"000000","style":1},
|
||||
{"type":"bottom","color":"000000","style":1}]}`)
|
||||
|
||||
endRow := fmt.Sprintf("J%d", nExcelStartRow+1)
|
||||
// 应用样式到整个表格
|
||||
file.SetColWidth("Sheet1", "A", "A", 12)
|
||||
file.SetColWidth("Sheet1", "B", "B", 15)
|
||||
file.SetColWidth("Sheet1", "C", "C", 30)
|
||||
file.SetColWidth("Sheet1", "D", "D", 18)
|
||||
file.SetColWidth("Sheet1", "F", "E", 18)
|
||||
file.SetColWidth("Sheet1", "F", "F", 18)
|
||||
file.SetColWidth("Sheet1", "G", "G", 15)
|
||||
file.SetColWidth("Sheet1", "H", "H", 18)
|
||||
file.SetColWidth("Sheet1", "I", "I", 15)
|
||||
file.SetColWidth("Sheet1", "J", "J", 18)
|
||||
_ = file.SetCellStyle("Sheet1", "A1", "J1", style1)
|
||||
_ = file.SetCellStyle("Sheet1", "A2", endRow, style)
|
||||
|
||||
fmt.Println("save fileName:", config.ExportConfig.Path+fileName)
|
||||
if err := file.SaveAs(config.ExportConfig.Path + fileName); err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
return url + fileName, nil
|
||||
}
|
||||
|
||||
type ActivateExtendedWarrantyReq struct {
|
||||
Uid uint32 `json:"uid" binding:"required"` // 用户ID
|
||||
HostCode string `json:"host_code" binding:"required"` // 主机编码
|
||||
Images string `json:"images" binding:"required"` // 图片凭证
|
||||
Remark string `json:"remark"` // 备注
|
||||
}
|
||||
|
||||
func (m *ActivateExtendedWarrantyReq) ActivateExtendedWarranty(c *gin.Context) error {
|
||||
sysUser, err := GetSysUserByCtx(c)
|
||||
if err != nil {
|
||||
logger.Errorf("err:%#v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
var userStoreId uint64
|
||||
// 查询用户尊享会员记录
|
||||
var memberInfo PrivilegeMember
|
||||
err = orm.Eloquent.Model(&PrivilegeMember{}).Debug().Where("uid = ?", m.Uid).Find(&memberInfo).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if memberInfo.StoreId == 0 {
|
||||
// 获取店员有效门店
|
||||
storeInfo, _ := GetUserEffectiveStore(uint32(sysUser.Uid))
|
||||
if len(storeInfo) != 0 {
|
||||
userStoreId = uint64(storeInfo[0].StoreID)
|
||||
}
|
||||
} else {
|
||||
userStoreId = memberInfo.StoreId
|
||||
}
|
||||
|
||||
err = orm.Eloquent.Table("privilege_member").Where("uid = ?", m.Uid).Updates(map[string]interface{}{
|
||||
"store_id": userStoreId,
|
||||
"extend_status": ExtendEffectivity,
|
||||
"host_code": m.HostCode,
|
||||
"images": m.Images,
|
||||
"remark": m.Remark,
|
||||
"audit_time": time.Now(),
|
||||
"auditor_name": sysUser.NickName,
|
||||
"auditor_id": sysUser.UserId,
|
||||
"updated_at": time.Now(),
|
||||
}).Error
|
||||
if err != nil {
|
||||
logger.Error("order err:", logger.Field("err", err))
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
type CancelPrivilegeMembersReq struct {
|
||||
Uid uint32 `json:"uid" binding:"required"` // 用户ID
|
||||
}
|
||||
|
||||
func (m *CancelPrivilegeMembersReq) CancelPrivilegeMembers() (*PrivilegeMember, error) {
|
||||
var userInfo PrivilegeMember
|
||||
err := orm.Eloquent.Table("privilege_member").Where("uid", m.Uid).Find(&userInfo).Error
|
||||
if err != nil {
|
||||
logger.Errorf("err:", logger.Field("err", err))
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if userInfo.MemberLevel != MemberLevelPrivilege {
|
||||
logger.Errorf("err:", logger.Field("err", "用户不是尊享会员"), logger.Field("uid", m.Uid))
|
||||
return nil, errors.New("取消失败,用户不是尊享会员")
|
||||
}
|
||||
|
||||
nowTime := time.Now()
|
||||
userInfo.MemberLevel = MemberLevelUser
|
||||
userInfo.MemberExpire = &nowTime
|
||||
userInfo.ExtendStatus = ExtendExpire
|
||||
|
||||
sql := fmt.Sprintf("UPDATE `privilege_member` SET member_level = 1,member_expire=?,updated_at=?,extend_status=1 WHERE uid = ?;")
|
||||
err = orm.Eloquent.Debug().Exec(sql, nowTime, nowTime, m.Uid).Error
|
||||
if err != nil {
|
||||
logger.Errorf("err:", logger.Field("err", err))
|
||||
return nil, err
|
||||
}
|
||||
|
||||
//var userInvite UserInvite
|
||||
//orm.Eloquent.Table("user_invite").Where("to_uid=?", m.Uid).Where("spend_type=2").
|
||||
// Order("id DESC").Limit(1).Find(&userInvite)
|
||||
//sqlInvite := fmt.Sprintf("UPDATE user_invite SET member_status=3,action=1,spend_type=1 WHERE id= ? ;")
|
||||
//err = orm.Eloquent.Exec(sqlInvite, userInvite.ID).Error
|
||||
//if err != nil {
|
||||
// logger.Errorf("err:", logger.Field("err", err))
|
||||
// return nil, err
|
||||
//}
|
||||
|
||||
return &userInfo, nil
|
||||
}
|
||||
|
|
|
@ -15,7 +15,10 @@ func registerUserManageRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMid
|
|||
userInfo.POST("/invite_derive", usermanage.ExportDataUser)
|
||||
userInfo.POST("/mark", usermanage.MarkUser)
|
||||
userInfo.POST("/tel", usermanage.TelList)
|
||||
userInfo.POST("/new_user_invite_record_list", usermanage.NewUserInviteRecordList)
|
||||
userInfo.POST("/new_user_invite_record_list", usermanage.NewUserInviteRecordList) // 会员邀请记录
|
||||
userInfo.POST("/privilege_member/list", usermanage.PrivilegeMemberList) // 尊享会员列表
|
||||
userInfo.POST("/privilege_member/activate_extended_warranty", usermanage.ActivateExtendedWarranty) // 激活尊享会员主机延保
|
||||
userInfo.POST("/privilege_member/cancel_members", usermanage.CancelPrivilegeMembers) // 取消尊享会员
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -62,6 +65,7 @@ func registerUserManageUnAuthRouter(v1 *gin.RouterGroup) {
|
|||
{
|
||||
groupSendMessage.POST("template/list", usermanage.GroupSendMessageCreateTemplateList)
|
||||
groupSendMessage.POST("template/add", usermanage.GroupSendMessageCreateTemplate)
|
||||
groupSendMessage.POST("template/edit", usermanage.GroupSendMessageEditTemplate)
|
||||
groupSendMessage.POST("/send", usermanage.GroupSendMessage)
|
||||
groupSendMessage.POST("template/del", usermanage.GroupSendMessageCreateTemplateDel)
|
||||
}
|
||||
|
|
|
@ -138,27 +138,38 @@ func run() error {
|
|||
if err != nil {
|
||||
fmt.Println("err:", err)
|
||||
}
|
||||
|
||||
// 更新过期用户的当前会员等级-20240308添加
|
||||
err = s.Every(1).Day().At("00:05").Do(models.UpdateExpireMemberLevel)
|
||||
if err != nil {
|
||||
fmt.Println("err:", err)
|
||||
}
|
||||
|
||||
// 用户邀请用户报表
|
||||
//err = s.Every(1).Day().At("00:00").Do(models.CreateInviteMemberReport)
|
||||
err = s.Every(1).Day().At("00:10").Do(models.CreateInviteMemberReport)
|
||||
if err != nil {
|
||||
fmt.Println("err:", err)
|
||||
}
|
||||
|
||||
// 更新过期尊享会员等级-20240829添加
|
||||
err = s.Every(1).Day().At("00:15").Do(models.UpdateExpirePrivilegeMemberLevel)
|
||||
if err != nil {
|
||||
fmt.Println("err:", err)
|
||||
}
|
||||
|
||||
// 用户续费
|
||||
err = s.Every(1).Day().At("19:00").Do(models.SendMessageMemberRenewal)
|
||||
if err != nil {
|
||||
fmt.Println("err:", err)
|
||||
}
|
||||
|
||||
// 管理端首页
|
||||
err = s.Every(1).Day().At("1:00").Do(models.IndexMemberStatistic)
|
||||
if err != nil {
|
||||
fmt.Println("err:", err)
|
||||
}
|
||||
|
||||
// 卡带回收自动取消
|
||||
err = s.Every(10).Minutes().Do(models.RecycleCardOrderStateUpdate)
|
||||
if err != nil {
|
||||
|
|
|
@ -52,6 +52,6 @@ settings:
|
|||
|
||||
export:
|
||||
path: /Users/max/Documents/
|
||||
url: http://39.108.188.218:8000/img/export/
|
||||
url: /Users/max/Documents/
|
||||
# path: /www/server/images/export/
|
||||
# url: https://dev.admin.deovo.com/load/export/
|
||||
|
|
358
docs/docs.go
358
docs/docs.go
|
@ -6077,6 +6077,108 @@ const docTemplate = `{
|
|||
}
|
||||
}
|
||||
},
|
||||
"/api/v1/user_info/privilege_member/activate_extended_warranty": {
|
||||
"post": {
|
||||
"consumes": [
|
||||
"application/json"
|
||||
],
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"tags": [
|
||||
"会员管理",
|
||||
"V1.4.2"
|
||||
],
|
||||
"summary": "零售尊享会员激活主机延保",
|
||||
"parameters": [
|
||||
{
|
||||
"description": "零售尊享会员激活主机延保模型",
|
||||
"name": "request",
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/models.ActivateExtendedWarrantyReq"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/app.Response"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/v1/user_info/privilege_member/cancel_members": {
|
||||
"post": {
|
||||
"consumes": [
|
||||
"application/json"
|
||||
],
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"tags": [
|
||||
"会员管理",
|
||||
"V1.4.2"
|
||||
],
|
||||
"summary": "取消尊享会员",
|
||||
"parameters": [
|
||||
{
|
||||
"description": "取消尊享会员模型",
|
||||
"name": "request",
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/models.CancelPrivilegeMembersReq"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/app.Response"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/v1/user_info/privilege_member/list": {
|
||||
"post": {
|
||||
"consumes": [
|
||||
"application/json"
|
||||
],
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"tags": [
|
||||
"会员管理",
|
||||
"V1.4.2"
|
||||
],
|
||||
"summary": "零售尊享会员列表",
|
||||
"parameters": [
|
||||
{
|
||||
"description": "零售尊享会员列表模型",
|
||||
"name": "request",
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/models.PrivilegeMemberListReq"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/models.PrivilegeMemberListResp"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/v1/user_info/tel": {
|
||||
"post": {
|
||||
"consumes": [
|
||||
|
@ -6548,6 +6650,32 @@ const docTemplate = `{
|
|||
}
|
||||
}
|
||||
},
|
||||
"models.ActivateExtendedWarrantyReq": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"host_code",
|
||||
"images",
|
||||
"uid"
|
||||
],
|
||||
"properties": {
|
||||
"host_code": {
|
||||
"description": "主机编码",
|
||||
"type": "string"
|
||||
},
|
||||
"images": {
|
||||
"description": "图片凭证",
|
||||
"type": "string"
|
||||
},
|
||||
"remark": {
|
||||
"description": "备注",
|
||||
"type": "string"
|
||||
},
|
||||
"uid": {
|
||||
"description": "用户ID",
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"models.AssistantInviteMemberReportListResp": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
@ -6658,6 +6786,18 @@ const docTemplate = `{
|
|||
}
|
||||
}
|
||||
},
|
||||
"models.CancelPrivilegeMembersReq": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"uid"
|
||||
],
|
||||
"properties": {
|
||||
"uid": {
|
||||
"description": "用户ID",
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"models.CannibalizeStockTask": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
@ -7353,6 +7493,10 @@ const docTemplate = `{
|
|||
"description": "白金会员数量",
|
||||
"type": "integer"
|
||||
},
|
||||
"privilege_count": {
|
||||
"description": "尊享会员数量",
|
||||
"type": "integer"
|
||||
},
|
||||
"renewal_black_gold_count": {
|
||||
"description": "续费黑金会员数量",
|
||||
"type": "integer"
|
||||
|
@ -7365,6 +7509,10 @@ const docTemplate = `{
|
|||
"description": "续费白金会员数量",
|
||||
"type": "integer"
|
||||
},
|
||||
"renewal_privilege_count": {
|
||||
"description": "续费尊享会员数量",
|
||||
"type": "integer"
|
||||
},
|
||||
"store": {
|
||||
"$ref": "#/definitions/models.Store"
|
||||
},
|
||||
|
@ -7640,6 +7788,10 @@ const docTemplate = `{
|
|||
"description": "采购进货",
|
||||
"type": "integer"
|
||||
},
|
||||
"system_in": {
|
||||
"description": "系统入库",
|
||||
"type": "integer"
|
||||
},
|
||||
"system_out": {
|
||||
"description": "系统出库",
|
||||
"type": "integer"
|
||||
|
@ -7709,6 +7861,10 @@ const docTemplate = `{
|
|||
"description": "采购进货",
|
||||
"type": "integer"
|
||||
},
|
||||
"total_system_in": {
|
||||
"description": "系统入库",
|
||||
"type": "integer"
|
||||
},
|
||||
"total_system_out": {
|
||||
"description": "系统出库",
|
||||
"type": "integer"
|
||||
|
@ -7759,6 +7915,10 @@ const docTemplate = `{
|
|||
"description": "主供应商名称",
|
||||
"type": "string"
|
||||
},
|
||||
"img": {
|
||||
"description": "图片",
|
||||
"type": "string"
|
||||
},
|
||||
"last_wholesale_price": {
|
||||
"description": "最近采购价",
|
||||
"type": "number"
|
||||
|
@ -9204,7 +9364,6 @@ const docTemplate = `{
|
|||
"salesman",
|
||||
"store_id",
|
||||
"store_name",
|
||||
"tel",
|
||||
"total_count"
|
||||
],
|
||||
"properties": {
|
||||
|
@ -13192,6 +13351,10 @@ const docTemplate = `{
|
|||
"description": "白金会员提成",
|
||||
"type": "integer"
|
||||
},
|
||||
"privilege_count": {
|
||||
"description": "尊享会员数量",
|
||||
"type": "integer"
|
||||
},
|
||||
"renewal_black_gold_count": {
|
||||
"description": "续费黑金会员数量(自动)",
|
||||
"type": "integer"
|
||||
|
@ -13212,6 +13375,10 @@ const docTemplate = `{
|
|||
"description": "续费白金会员数量(自动)",
|
||||
"type": "integer"
|
||||
},
|
||||
"renewal_privilege_count": {
|
||||
"description": "续费尊享会员数量",
|
||||
"type": "integer"
|
||||
},
|
||||
"store_id": {
|
||||
"description": "门店id",
|
||||
"type": "integer"
|
||||
|
@ -13582,7 +13749,7 @@ const docTemplate = `{
|
|||
"type": "string"
|
||||
},
|
||||
"record_type": {
|
||||
"description": "记录类型 1-首次邀请,2-开通年费黄金,3-开通季度黄金,4-开通半年黄金, 5-开通年费白金,6-开通年费黑金,7-续费年费黄金(干预),8-续费年费白金(干预),9-续费年费黑金(干预),10-续费年费黄金(自动), 11-续费季度黄金(自动),12-续费半年黄金(自动),13-续费年费白金(自动),14-续费年费黑金(自动),15-黄金→白金(干预), 16-黄金→黑金(干预),17-白金→黑金(干预),18-黄金→白金(自动),19-黄金→黑金(自动),20-白金→黑金(自动)",
|
||||
"description": "记录类型 1-首次邀请,2-开通年费黄金,3-开通季度黄金,4-开通半年黄金, 5-开通年费白金,6-开通年费黑金,7-续费年费黄金(干预),8-续费年费白金(干预),9-续费年费黑金(干预),10-续费年费黄金(自动), 11-续费季度黄金(自动),12-续费半年黄金(自动),13-续费年费白金(自动),14-续费年费黑金(自动),15-黄金→白金(干预), 16-黄金→黑金(干预),17-白金→黑金(干预),18-黄金→白金(自动),19-黄金→黑金(自动),20-白金→黑金(自动),21-开通尊享会员, 22-续费尊享会员",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "integer"
|
||||
|
@ -14146,6 +14313,183 @@ const docTemplate = `{
|
|||
}
|
||||
}
|
||||
},
|
||||
"models.PrivilegeMember": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"audit_time": {
|
||||
"description": "审核时间",
|
||||
"type": "string"
|
||||
},
|
||||
"auditor_id": {
|
||||
"description": "审核人id",
|
||||
"type": "integer"
|
||||
},
|
||||
"auditor_name": {
|
||||
"description": "审核人姓名",
|
||||
"type": "string"
|
||||
},
|
||||
"createdAt": {
|
||||
"description": "创建时间",
|
||||
"type": "string"
|
||||
},
|
||||
"extend_status": {
|
||||
"description": "延保状态:0-非会员, 1-已过期,2-待激活、3-已激活",
|
||||
"type": "integer"
|
||||
},
|
||||
"host_code": {
|
||||
"description": "主机编码",
|
||||
"type": "string"
|
||||
},
|
||||
"id": {
|
||||
"description": "数据库记录编号",
|
||||
"type": "integer"
|
||||
},
|
||||
"images": {
|
||||
"description": "图片凭证",
|
||||
"type": "string"
|
||||
},
|
||||
"member_expire": {
|
||||
"description": "会员到期时间",
|
||||
"type": "string"
|
||||
},
|
||||
"member_level": {
|
||||
"description": "当前会员等级:1-普通用户,6-尊享会员",
|
||||
"type": "integer"
|
||||
},
|
||||
"open_member_time": {
|
||||
"description": "开通会员时间",
|
||||
"type": "string"
|
||||
},
|
||||
"remark": {
|
||||
"description": "备注",
|
||||
"type": "string"
|
||||
},
|
||||
"store": {
|
||||
"description": "门店信息",
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/definitions/models.Store"
|
||||
}
|
||||
]
|
||||
},
|
||||
"store_id": {
|
||||
"description": "门店id",
|
||||
"type": "integer"
|
||||
},
|
||||
"tel": {
|
||||
"description": "电话",
|
||||
"type": "string"
|
||||
},
|
||||
"uid": {
|
||||
"description": "用户id",
|
||||
"type": "integer"
|
||||
},
|
||||
"updatedAt": {
|
||||
"description": "更新时间",
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"models.PrivilegeMemberListReq": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"audit_time_end": {
|
||||
"description": "审核结束时间",
|
||||
"type": "string"
|
||||
},
|
||||
"audit_time_start": {
|
||||
"description": "审核开始时间",
|
||||
"type": "string"
|
||||
},
|
||||
"auditor_id": {
|
||||
"description": "审核人",
|
||||
"type": "integer"
|
||||
},
|
||||
"extend_status": {
|
||||
"description": "延保状态",
|
||||
"type": "integer"
|
||||
},
|
||||
"host_code": {
|
||||
"description": "主机编码",
|
||||
"type": "string"
|
||||
},
|
||||
"is_export": {
|
||||
"description": "1-导出excel",
|
||||
"type": "integer"
|
||||
},
|
||||
"member_expire_end": {
|
||||
"description": "尊享会员到期时间-结束时间",
|
||||
"type": "string"
|
||||
},
|
||||
"member_expire_start": {
|
||||
"description": "尊享会员到期时间-开始时间",
|
||||
"type": "string"
|
||||
},
|
||||
"member_level": {
|
||||
"description": "当前会员等级",
|
||||
"type": "integer"
|
||||
},
|
||||
"open_member_end": {
|
||||
"description": "首次开通尊享会员-结束时间",
|
||||
"type": "string"
|
||||
},
|
||||
"open_member_start": {
|
||||
"description": "首次开通尊享会员-开始时间",
|
||||
"type": "string"
|
||||
},
|
||||
"pageIndex": {
|
||||
"description": "页码",
|
||||
"type": "integer"
|
||||
},
|
||||
"pageSize": {
|
||||
"description": "页面条数",
|
||||
"type": "integer"
|
||||
},
|
||||
"store_id": {
|
||||
"description": "门店列表(支持复选)",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"tel": {
|
||||
"description": "手机号",
|
||||
"type": "string"
|
||||
},
|
||||
"uid": {
|
||||
"description": "用户ID",
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"models.PrivilegeMemberListResp": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"export_url": {
|
||||
"description": "导出excel路径",
|
||||
"type": "string"
|
||||
},
|
||||
"list": {
|
||||
"description": "零售尊享会员信息",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/models.PrivilegeMember"
|
||||
}
|
||||
},
|
||||
"pageIndex": {
|
||||
"description": "页码",
|
||||
"type": "integer"
|
||||
},
|
||||
"pageSize": {
|
||||
"description": "页面条数",
|
||||
"type": "integer"
|
||||
},
|
||||
"total": {
|
||||
"description": "总条数",
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"models.ProductInventoryAddReq": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
|
@ -16829,7 +17173,15 @@ const docTemplate = `{
|
|||
"type": "string"
|
||||
},
|
||||
"member_level": {
|
||||
"description": "会员等级:1-普通 2-黄金 4-白金 5-黑金",
|
||||
"description": "当前租卡会员类型:1-普通 2-黄金 4-白金 5-黑金",
|
||||
"type": "integer"
|
||||
},
|
||||
"privilege_memberExpire": {
|
||||
"description": "尊享会员到期时间",
|
||||
"type": "string"
|
||||
},
|
||||
"privilege_member_level": {
|
||||
"description": "当前尊享会员类型:1-普通 6-尊享会员",
|
||||
"type": "integer"
|
||||
},
|
||||
"record_time": {
|
||||
|
|
|
@ -6066,6 +6066,108 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"/api/v1/user_info/privilege_member/activate_extended_warranty": {
|
||||
"post": {
|
||||
"consumes": [
|
||||
"application/json"
|
||||
],
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"tags": [
|
||||
"会员管理",
|
||||
"V1.4.2"
|
||||
],
|
||||
"summary": "零售尊享会员激活主机延保",
|
||||
"parameters": [
|
||||
{
|
||||
"description": "零售尊享会员激活主机延保模型",
|
||||
"name": "request",
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/models.ActivateExtendedWarrantyReq"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/app.Response"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/v1/user_info/privilege_member/cancel_members": {
|
||||
"post": {
|
||||
"consumes": [
|
||||
"application/json"
|
||||
],
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"tags": [
|
||||
"会员管理",
|
||||
"V1.4.2"
|
||||
],
|
||||
"summary": "取消尊享会员",
|
||||
"parameters": [
|
||||
{
|
||||
"description": "取消尊享会员模型",
|
||||
"name": "request",
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/models.CancelPrivilegeMembersReq"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/app.Response"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/v1/user_info/privilege_member/list": {
|
||||
"post": {
|
||||
"consumes": [
|
||||
"application/json"
|
||||
],
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"tags": [
|
||||
"会员管理",
|
||||
"V1.4.2"
|
||||
],
|
||||
"summary": "零售尊享会员列表",
|
||||
"parameters": [
|
||||
{
|
||||
"description": "零售尊享会员列表模型",
|
||||
"name": "request",
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/models.PrivilegeMemberListReq"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/models.PrivilegeMemberListResp"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/api/v1/user_info/tel": {
|
||||
"post": {
|
||||
"consumes": [
|
||||
|
@ -6537,6 +6639,32 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"models.ActivateExtendedWarrantyReq": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"host_code",
|
||||
"images",
|
||||
"uid"
|
||||
],
|
||||
"properties": {
|
||||
"host_code": {
|
||||
"description": "主机编码",
|
||||
"type": "string"
|
||||
},
|
||||
"images": {
|
||||
"description": "图片凭证",
|
||||
"type": "string"
|
||||
},
|
||||
"remark": {
|
||||
"description": "备注",
|
||||
"type": "string"
|
||||
},
|
||||
"uid": {
|
||||
"description": "用户ID",
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"models.AssistantInviteMemberReportListResp": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
@ -6647,6 +6775,18 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"models.CancelPrivilegeMembersReq": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"uid"
|
||||
],
|
||||
"properties": {
|
||||
"uid": {
|
||||
"description": "用户ID",
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"models.CannibalizeStockTask": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
@ -7342,6 +7482,10 @@
|
|||
"description": "白金会员数量",
|
||||
"type": "integer"
|
||||
},
|
||||
"privilege_count": {
|
||||
"description": "尊享会员数量",
|
||||
"type": "integer"
|
||||
},
|
||||
"renewal_black_gold_count": {
|
||||
"description": "续费黑金会员数量",
|
||||
"type": "integer"
|
||||
|
@ -7354,6 +7498,10 @@
|
|||
"description": "续费白金会员数量",
|
||||
"type": "integer"
|
||||
},
|
||||
"renewal_privilege_count": {
|
||||
"description": "续费尊享会员数量",
|
||||
"type": "integer"
|
||||
},
|
||||
"store": {
|
||||
"$ref": "#/definitions/models.Store"
|
||||
},
|
||||
|
@ -7629,6 +7777,10 @@
|
|||
"description": "采购进货",
|
||||
"type": "integer"
|
||||
},
|
||||
"system_in": {
|
||||
"description": "系统入库",
|
||||
"type": "integer"
|
||||
},
|
||||
"system_out": {
|
||||
"description": "系统出库",
|
||||
"type": "integer"
|
||||
|
@ -7698,6 +7850,10 @@
|
|||
"description": "采购进货",
|
||||
"type": "integer"
|
||||
},
|
||||
"total_system_in": {
|
||||
"description": "系统入库",
|
||||
"type": "integer"
|
||||
},
|
||||
"total_system_out": {
|
||||
"description": "系统出库",
|
||||
"type": "integer"
|
||||
|
@ -7748,6 +7904,10 @@
|
|||
"description": "主供应商名称",
|
||||
"type": "string"
|
||||
},
|
||||
"img": {
|
||||
"description": "图片",
|
||||
"type": "string"
|
||||
},
|
||||
"last_wholesale_price": {
|
||||
"description": "最近采购价",
|
||||
"type": "number"
|
||||
|
@ -9193,7 +9353,6 @@
|
|||
"salesman",
|
||||
"store_id",
|
||||
"store_name",
|
||||
"tel",
|
||||
"total_count"
|
||||
],
|
||||
"properties": {
|
||||
|
@ -13181,6 +13340,10 @@
|
|||
"description": "白金会员提成",
|
||||
"type": "integer"
|
||||
},
|
||||
"privilege_count": {
|
||||
"description": "尊享会员数量",
|
||||
"type": "integer"
|
||||
},
|
||||
"renewal_black_gold_count": {
|
||||
"description": "续费黑金会员数量(自动)",
|
||||
"type": "integer"
|
||||
|
@ -13201,6 +13364,10 @@
|
|||
"description": "续费白金会员数量(自动)",
|
||||
"type": "integer"
|
||||
},
|
||||
"renewal_privilege_count": {
|
||||
"description": "续费尊享会员数量",
|
||||
"type": "integer"
|
||||
},
|
||||
"store_id": {
|
||||
"description": "门店id",
|
||||
"type": "integer"
|
||||
|
@ -13571,7 +13738,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"record_type": {
|
||||
"description": "记录类型 1-首次邀请,2-开通年费黄金,3-开通季度黄金,4-开通半年黄金, 5-开通年费白金,6-开通年费黑金,7-续费年费黄金(干预),8-续费年费白金(干预),9-续费年费黑金(干预),10-续费年费黄金(自动), 11-续费季度黄金(自动),12-续费半年黄金(自动),13-续费年费白金(自动),14-续费年费黑金(自动),15-黄金→白金(干预), 16-黄金→黑金(干预),17-白金→黑金(干预),18-黄金→白金(自动),19-黄金→黑金(自动),20-白金→黑金(自动)",
|
||||
"description": "记录类型 1-首次邀请,2-开通年费黄金,3-开通季度黄金,4-开通半年黄金, 5-开通年费白金,6-开通年费黑金,7-续费年费黄金(干预),8-续费年费白金(干预),9-续费年费黑金(干预),10-续费年费黄金(自动), 11-续费季度黄金(自动),12-续费半年黄金(自动),13-续费年费白金(自动),14-续费年费黑金(自动),15-黄金→白金(干预), 16-黄金→黑金(干预),17-白金→黑金(干预),18-黄金→白金(自动),19-黄金→黑金(自动),20-白金→黑金(自动),21-开通尊享会员, 22-续费尊享会员",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "integer"
|
||||
|
@ -14135,6 +14302,183 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"models.PrivilegeMember": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"audit_time": {
|
||||
"description": "审核时间",
|
||||
"type": "string"
|
||||
},
|
||||
"auditor_id": {
|
||||
"description": "审核人id",
|
||||
"type": "integer"
|
||||
},
|
||||
"auditor_name": {
|
||||
"description": "审核人姓名",
|
||||
"type": "string"
|
||||
},
|
||||
"createdAt": {
|
||||
"description": "创建时间",
|
||||
"type": "string"
|
||||
},
|
||||
"extend_status": {
|
||||
"description": "延保状态:0-非会员, 1-已过期,2-待激活、3-已激活",
|
||||
"type": "integer"
|
||||
},
|
||||
"host_code": {
|
||||
"description": "主机编码",
|
||||
"type": "string"
|
||||
},
|
||||
"id": {
|
||||
"description": "数据库记录编号",
|
||||
"type": "integer"
|
||||
},
|
||||
"images": {
|
||||
"description": "图片凭证",
|
||||
"type": "string"
|
||||
},
|
||||
"member_expire": {
|
||||
"description": "会员到期时间",
|
||||
"type": "string"
|
||||
},
|
||||
"member_level": {
|
||||
"description": "当前会员等级:1-普通用户,6-尊享会员",
|
||||
"type": "integer"
|
||||
},
|
||||
"open_member_time": {
|
||||
"description": "开通会员时间",
|
||||
"type": "string"
|
||||
},
|
||||
"remark": {
|
||||
"description": "备注",
|
||||
"type": "string"
|
||||
},
|
||||
"store": {
|
||||
"description": "门店信息",
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/definitions/models.Store"
|
||||
}
|
||||
]
|
||||
},
|
||||
"store_id": {
|
||||
"description": "门店id",
|
||||
"type": "integer"
|
||||
},
|
||||
"tel": {
|
||||
"description": "电话",
|
||||
"type": "string"
|
||||
},
|
||||
"uid": {
|
||||
"description": "用户id",
|
||||
"type": "integer"
|
||||
},
|
||||
"updatedAt": {
|
||||
"description": "更新时间",
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"models.PrivilegeMemberListReq": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"audit_time_end": {
|
||||
"description": "审核结束时间",
|
||||
"type": "string"
|
||||
},
|
||||
"audit_time_start": {
|
||||
"description": "审核开始时间",
|
||||
"type": "string"
|
||||
},
|
||||
"auditor_id": {
|
||||
"description": "审核人",
|
||||
"type": "integer"
|
||||
},
|
||||
"extend_status": {
|
||||
"description": "延保状态",
|
||||
"type": "integer"
|
||||
},
|
||||
"host_code": {
|
||||
"description": "主机编码",
|
||||
"type": "string"
|
||||
},
|
||||
"is_export": {
|
||||
"description": "1-导出excel",
|
||||
"type": "integer"
|
||||
},
|
||||
"member_expire_end": {
|
||||
"description": "尊享会员到期时间-结束时间",
|
||||
"type": "string"
|
||||
},
|
||||
"member_expire_start": {
|
||||
"description": "尊享会员到期时间-开始时间",
|
||||
"type": "string"
|
||||
},
|
||||
"member_level": {
|
||||
"description": "当前会员等级",
|
||||
"type": "integer"
|
||||
},
|
||||
"open_member_end": {
|
||||
"description": "首次开通尊享会员-结束时间",
|
||||
"type": "string"
|
||||
},
|
||||
"open_member_start": {
|
||||
"description": "首次开通尊享会员-开始时间",
|
||||
"type": "string"
|
||||
},
|
||||
"pageIndex": {
|
||||
"description": "页码",
|
||||
"type": "integer"
|
||||
},
|
||||
"pageSize": {
|
||||
"description": "页面条数",
|
||||
"type": "integer"
|
||||
},
|
||||
"store_id": {
|
||||
"description": "门店列表(支持复选)",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"tel": {
|
||||
"description": "手机号",
|
||||
"type": "string"
|
||||
},
|
||||
"uid": {
|
||||
"description": "用户ID",
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"models.PrivilegeMemberListResp": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"export_url": {
|
||||
"description": "导出excel路径",
|
||||
"type": "string"
|
||||
},
|
||||
"list": {
|
||||
"description": "零售尊享会员信息",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/models.PrivilegeMember"
|
||||
}
|
||||
},
|
||||
"pageIndex": {
|
||||
"description": "页码",
|
||||
"type": "integer"
|
||||
},
|
||||
"pageSize": {
|
||||
"description": "页面条数",
|
||||
"type": "integer"
|
||||
},
|
||||
"total": {
|
||||
"description": "总条数",
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"models.ProductInventoryAddReq": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
|
@ -16818,7 +17162,15 @@
|
|||
"type": "string"
|
||||
},
|
||||
"member_level": {
|
||||
"description": "会员等级:1-普通 2-黄金 4-白金 5-黑金",
|
||||
"description": "当前租卡会员类型:1-普通 2-黄金 4-白金 5-黑金",
|
||||
"type": "integer"
|
||||
},
|
||||
"privilege_memberExpire": {
|
||||
"description": "尊享会员到期时间",
|
||||
"type": "string"
|
||||
},
|
||||
"privilege_member_level": {
|
||||
"description": "当前尊享会员类型:1-普通 6-尊享会员",
|
||||
"type": "integer"
|
||||
},
|
||||
"record_time": {
|
||||
|
|
|
@ -270,6 +270,25 @@ definitions:
|
|||
required:
|
||||
- id
|
||||
type: object
|
||||
models.ActivateExtendedWarrantyReq:
|
||||
properties:
|
||||
host_code:
|
||||
description: 主机编码
|
||||
type: string
|
||||
images:
|
||||
description: 图片凭证
|
||||
type: string
|
||||
remark:
|
||||
description: 备注
|
||||
type: string
|
||||
uid:
|
||||
description: 用户ID
|
||||
type: integer
|
||||
required:
|
||||
- host_code
|
||||
- images
|
||||
- uid
|
||||
type: object
|
||||
models.AssistantInviteMemberReportListResp:
|
||||
properties:
|
||||
export_url:
|
||||
|
@ -348,6 +367,14 @@ definitions:
|
|||
required:
|
||||
- print_list_info
|
||||
type: object
|
||||
models.CancelPrivilegeMembersReq:
|
||||
properties:
|
||||
uid:
|
||||
description: 用户ID
|
||||
type: integer
|
||||
required:
|
||||
- uid
|
||||
type: object
|
||||
models.CannibalizeStockTask:
|
||||
properties:
|
||||
count:
|
||||
|
@ -854,6 +881,9 @@ definitions:
|
|||
platinum_count:
|
||||
description: 白金会员数量
|
||||
type: integer
|
||||
privilege_count:
|
||||
description: 尊享会员数量
|
||||
type: integer
|
||||
renewal_black_gold_count:
|
||||
description: 续费黑金会员数量
|
||||
type: integer
|
||||
|
@ -863,6 +893,9 @@ definitions:
|
|||
renewal_platinum_count:
|
||||
description: 续费白金会员数量
|
||||
type: integer
|
||||
renewal_privilege_count:
|
||||
description: 续费尊享会员数量
|
||||
type: integer
|
||||
store:
|
||||
$ref: '#/definitions/models.Store'
|
||||
store_id:
|
||||
|
@ -1063,6 +1096,9 @@ definitions:
|
|||
purchase_stock:
|
||||
description: 采购进货
|
||||
type: integer
|
||||
system_in:
|
||||
description: 系统入库
|
||||
type: integer
|
||||
system_out:
|
||||
description: 系统出库
|
||||
type: integer
|
||||
|
@ -1114,6 +1150,9 @@ definitions:
|
|||
total_purchase_stock:
|
||||
description: 采购进货
|
||||
type: integer
|
||||
total_system_in:
|
||||
description: 系统入库
|
||||
type: integer
|
||||
total_system_out:
|
||||
description: 系统出库
|
||||
type: integer
|
||||
|
@ -1150,6 +1189,9 @@ definitions:
|
|||
erp_supplier_name:
|
||||
description: 主供应商名称
|
||||
type: string
|
||||
img:
|
||||
description: 图片
|
||||
type: string
|
||||
last_wholesale_price:
|
||||
description: 最近采购价
|
||||
type: number
|
||||
|
@ -2255,7 +2297,6 @@ definitions:
|
|||
- salesman
|
||||
- store_id
|
||||
- store_name
|
||||
- tel
|
||||
- total_count
|
||||
type: object
|
||||
models.ErpOrderDeleteReq:
|
||||
|
@ -5092,6 +5133,9 @@ definitions:
|
|||
platinum_deduct:
|
||||
description: 白金会员提成
|
||||
type: integer
|
||||
privilege_count:
|
||||
description: 尊享会员数量
|
||||
type: integer
|
||||
renewal_black_gold_count:
|
||||
description: 续费黑金会员数量(自动)
|
||||
type: integer
|
||||
|
@ -5107,6 +5151,9 @@ definitions:
|
|||
renewal_platinum_count:
|
||||
description: 续费白金会员数量(自动)
|
||||
type: integer
|
||||
renewal_privilege_count:
|
||||
description: 续费尊享会员数量
|
||||
type: integer
|
||||
store_id:
|
||||
description: 门店id
|
||||
type: integer
|
||||
|
@ -5369,7 +5416,8 @@ definitions:
|
|||
type: string
|
||||
record_type:
|
||||
description: 记录类型 1-首次邀请,2-开通年费黄金,3-开通季度黄金,4-开通半年黄金, 5-开通年费白金,6-开通年费黑金,7-续费年费黄金(干预),8-续费年费白金(干预),9-续费年费黑金(干预),10-续费年费黄金(自动),
|
||||
11-续费季度黄金(自动),12-续费半年黄金(自动),13-续费年费白金(自动),14-续费年费黑金(自动),15-黄金→白金(干预), 16-黄金→黑金(干预),17-白金→黑金(干预),18-黄金→白金(自动),19-黄金→黑金(自动),20-白金→黑金(自动)
|
||||
11-续费季度黄金(自动),12-续费半年黄金(自动),13-续费年费白金(自动),14-续费年费黑金(自动),15-黄金→白金(干预), 16-黄金→黑金(干预),17-白金→黑金(干预),18-黄金→白金(自动),19-黄金→黑金(自动),20-白金→黑金(自动),21-开通尊享会员,
|
||||
22-续费尊享会员
|
||||
items:
|
||||
type: integer
|
||||
type: array
|
||||
|
@ -5771,6 +5819,134 @@ definitions:
|
|||
description: 更新时间
|
||||
type: string
|
||||
type: object
|
||||
models.PrivilegeMember:
|
||||
properties:
|
||||
audit_time:
|
||||
description: 审核时间
|
||||
type: string
|
||||
auditor_id:
|
||||
description: 审核人id
|
||||
type: integer
|
||||
auditor_name:
|
||||
description: 审核人姓名
|
||||
type: string
|
||||
createdAt:
|
||||
description: 创建时间
|
||||
type: string
|
||||
extend_status:
|
||||
description: 延保状态:0-非会员, 1-已过期,2-待激活、3-已激活
|
||||
type: integer
|
||||
host_code:
|
||||
description: 主机编码
|
||||
type: string
|
||||
id:
|
||||
description: 数据库记录编号
|
||||
type: integer
|
||||
images:
|
||||
description: 图片凭证
|
||||
type: string
|
||||
member_expire:
|
||||
description: 会员到期时间
|
||||
type: string
|
||||
member_level:
|
||||
description: 当前会员等级:1-普通用户,6-尊享会员
|
||||
type: integer
|
||||
open_member_time:
|
||||
description: 开通会员时间
|
||||
type: string
|
||||
remark:
|
||||
description: 备注
|
||||
type: string
|
||||
store:
|
||||
allOf:
|
||||
- $ref: '#/definitions/models.Store'
|
||||
description: 门店信息
|
||||
store_id:
|
||||
description: 门店id
|
||||
type: integer
|
||||
tel:
|
||||
description: 电话
|
||||
type: string
|
||||
uid:
|
||||
description: 用户id
|
||||
type: integer
|
||||
updatedAt:
|
||||
description: 更新时间
|
||||
type: string
|
||||
type: object
|
||||
models.PrivilegeMemberListReq:
|
||||
properties:
|
||||
audit_time_end:
|
||||
description: 审核结束时间
|
||||
type: string
|
||||
audit_time_start:
|
||||
description: 审核开始时间
|
||||
type: string
|
||||
auditor_id:
|
||||
description: 审核人
|
||||
type: integer
|
||||
extend_status:
|
||||
description: 延保状态
|
||||
type: integer
|
||||
host_code:
|
||||
description: 主机编码
|
||||
type: string
|
||||
is_export:
|
||||
description: 1-导出excel
|
||||
type: integer
|
||||
member_expire_end:
|
||||
description: 尊享会员到期时间-结束时间
|
||||
type: string
|
||||
member_expire_start:
|
||||
description: 尊享会员到期时间-开始时间
|
||||
type: string
|
||||
member_level:
|
||||
description: 当前会员等级
|
||||
type: integer
|
||||
open_member_end:
|
||||
description: 首次开通尊享会员-结束时间
|
||||
type: string
|
||||
open_member_start:
|
||||
description: 首次开通尊享会员-开始时间
|
||||
type: string
|
||||
pageIndex:
|
||||
description: 页码
|
||||
type: integer
|
||||
pageSize:
|
||||
description: 页面条数
|
||||
type: integer
|
||||
store_id:
|
||||
description: 门店列表(支持复选)
|
||||
items:
|
||||
type: integer
|
||||
type: array
|
||||
tel:
|
||||
description: 手机号
|
||||
type: string
|
||||
uid:
|
||||
description: 用户ID
|
||||
type: integer
|
||||
type: object
|
||||
models.PrivilegeMemberListResp:
|
||||
properties:
|
||||
export_url:
|
||||
description: 导出excel路径
|
||||
type: string
|
||||
list:
|
||||
description: 零售尊享会员信息
|
||||
items:
|
||||
$ref: '#/definitions/models.PrivilegeMember'
|
||||
type: array
|
||||
pageIndex:
|
||||
description: 页码
|
||||
type: integer
|
||||
pageSize:
|
||||
description: 页面条数
|
||||
type: integer
|
||||
total:
|
||||
description: 总条数
|
||||
type: integer
|
||||
type: object
|
||||
models.ProductInventoryAddReq:
|
||||
properties:
|
||||
commodities:
|
||||
|
@ -7714,11 +7890,17 @@ definitions:
|
|||
description: 邀请人昵称
|
||||
type: string
|
||||
member_level:
|
||||
description: 会员等级:1-普通 2-黄金 4-白金 5-黑金
|
||||
description: 当前租卡会员类型:1-普通 2-黄金 4-白金 5-黑金
|
||||
type: integer
|
||||
memberExpire:
|
||||
description: 租卡会员到期时间
|
||||
type: string
|
||||
privilege_member_level:
|
||||
description: 当前尊享会员类型:1-普通 6-尊享会员
|
||||
type: integer
|
||||
privilege_memberExpire:
|
||||
description: 尊享会员到期时间
|
||||
type: string
|
||||
record_time:
|
||||
description: 记录时间
|
||||
type: string
|
||||
|
@ -11904,6 +12086,72 @@ paths:
|
|||
tags:
|
||||
- 会员管理
|
||||
- V1.2.0
|
||||
/api/v1/user_info/privilege_member/activate_extended_warranty:
|
||||
post:
|
||||
consumes:
|
||||
- application/json
|
||||
parameters:
|
||||
- description: 零售尊享会员激活主机延保模型
|
||||
in: body
|
||||
name: request
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/models.ActivateExtendedWarrantyReq'
|
||||
produces:
|
||||
- application/json
|
||||
responses:
|
||||
"200":
|
||||
description: OK
|
||||
schema:
|
||||
$ref: '#/definitions/app.Response'
|
||||
summary: 零售尊享会员激活主机延保
|
||||
tags:
|
||||
- 会员管理
|
||||
- V1.4.2
|
||||
/api/v1/user_info/privilege_member/cancel_members:
|
||||
post:
|
||||
consumes:
|
||||
- application/json
|
||||
parameters:
|
||||
- description: 取消尊享会员模型
|
||||
in: body
|
||||
name: request
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/models.CancelPrivilegeMembersReq'
|
||||
produces:
|
||||
- application/json
|
||||
responses:
|
||||
"200":
|
||||
description: OK
|
||||
schema:
|
||||
$ref: '#/definitions/app.Response'
|
||||
summary: 取消尊享会员
|
||||
tags:
|
||||
- 会员管理
|
||||
- V1.4.2
|
||||
/api/v1/user_info/privilege_member/list:
|
||||
post:
|
||||
consumes:
|
||||
- application/json
|
||||
parameters:
|
||||
- description: 零售尊享会员列表模型
|
||||
in: body
|
||||
name: request
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/models.PrivilegeMemberListReq'
|
||||
produces:
|
||||
- application/json
|
||||
responses:
|
||||
"200":
|
||||
description: OK
|
||||
schema:
|
||||
$ref: '#/definitions/models.PrivilegeMemberListResp'
|
||||
summary: 零售尊享会员列表
|
||||
tags:
|
||||
- 会员管理
|
||||
- V1.4.2
|
||||
/api/v1/user_info/tel:
|
||||
post:
|
||||
consumes:
|
||||
|
|
|
@ -120,7 +120,7 @@ func InitDBTest() {
|
|||
// "mh_pro", "fLeytnBFCRB553ab", "39.108.188.218", "3306",
|
||||
// "mh_pro")
|
||||
dialect := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
|
||||
"mh_dev", "m5h4parZsXjbeiFh", "39.108.188.218", "3306",
|
||||
"mh_dev", "d9qy46ONI0ZTF9eH", "112.33.14.191", "3306",
|
||||
"mh_dev")
|
||||
|
||||
DBTest, err = gorm.Open("mysql", dialect)
|
||||
|
|
18
test/greentown_sms_test.go
Normal file
18
test/greentown_sms_test.go
Normal file
|
@ -0,0 +1,18 @@
|
|||
package test
|
||||
|
||||
import (
|
||||
"go-admin/app/admin/models"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSend(t *testing.T) {
|
||||
//tel := "17080320980"
|
||||
tel := "13714071204,17727927738"
|
||||
//tel := "17602181899"
|
||||
|
||||
models.SmsSend(tel, "【go2switch】温馨提示:您的会员即将过期,请在过期之前将卡归还到门店,如有问题联系客服")
|
||||
}
|
||||
|
||||
func TestGtSendMessage(t *testing.T) {
|
||||
models.GtSendMessage([]string{"15019230751"}, "【go2ns】绿城短信推送测试,测试")
|
||||
}
|
Loading…
Reference in New Issue
Block a user