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, "操作成功")
|
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) {
|
func GroupSendMessage(c *gin.Context) {
|
||||||
req := &struct {
|
req := &struct {
|
||||||
GroupSendMessageTemplateId uint32 `json:"group_send_message_template_id"`
|
GroupSendMessageTemplateId uint32 `json:"group_send_message_template_id"`
|
||||||
|
@ -1023,3 +1054,95 @@ func TelList(c *gin.Context) {
|
||||||
|
|
||||||
app.OK(c, telListInfo, "")
|
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/codinl/go-logger"
|
||||||
"github.com/xuri/excelize/v2"
|
"github.com/xuri/excelize/v2"
|
||||||
orm "go-admin/common/global"
|
orm "go-admin/common/global"
|
||||||
|
"go-admin/tools/config"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -268,7 +269,7 @@ func (m *UserMemberRecordReq) Export() (string, error) {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return ExportUrl + fileName, nil
|
return config.ExportConfig.Url + fileName, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func UserMemberRecordListSetUser(list []UserMemberRecord) {
|
func UserMemberRecordListSetUser(list []UserMemberRecord) {
|
||||||
|
|
|
@ -1041,18 +1041,21 @@ func (m *StockImporter) ImportStockData(colsMap []map[string]interface{}) error
|
||||||
for i, _ := range list {
|
for i, _ := range list {
|
||||||
v1, ok1 := storeNameMap[list[i].StoreName]
|
v1, ok1 := storeNameMap[list[i].StoreName]
|
||||||
if !ok1 {
|
if !ok1 {
|
||||||
logger.Error("store name err")
|
logger.Errorf("erp store name err:%s", list[i].StoreName)
|
||||||
return errors.New("store name err")
|
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]
|
v2, ok2 := erpCommodityMap[list[i].Name]
|
||||||
if !ok2 || v2 == nil {
|
if !ok2 || v2 == nil {
|
||||||
logger.Error("erp commodity name err")
|
logger.Errorf("erp commodity name err:%s", list[i].Name)
|
||||||
return errors.New("erp commodity name err")
|
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]
|
v3, ok3 := erpSupplierNameMap[list[i].SupplierName]
|
||||||
if !ok3 {
|
if !ok3 {
|
||||||
logger.Error("erp supplier name err")
|
logger.Errorf("erp supplier name err:%s", list[i].SupplierName)
|
||||||
return errors.New("erp supplier name err")
|
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()
|
file := excelize.NewFile()
|
||||||
fSheet := "Sheet1"
|
fSheet := "Sheet1"
|
||||||
|
|
||||||
url := ExportUrl
|
url := config.ExportConfig.Url
|
||||||
fileName := time.Now().Format(TimeFormat) + "商品资料" + ".xlsx"
|
fileName := time.Now().Format(TimeFormat) + "商品资料" + ".xlsx"
|
||||||
|
|
||||||
title := []interface{}{"商品编号", "商品名称", "商品分类", "商品条码", "是否串码", "系统生成串码", "主供应商", "指导零售价",
|
title := []interface{}{"商品编号", "商品名称", "商品分类", "商品条码", "是否串码", "系统生成串码", "主供应商", "指导零售价",
|
||||||
|
@ -1560,7 +1563,7 @@ func InventoryDetailListExport(list []ErpStockCommodity, c *gin.Context) (string
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
url := ExportUrl
|
url := config.ExportConfig.Url
|
||||||
fileName := time.Now().Format(TimeFormat) + "库存详情" + ".xlsx"
|
fileName := time.Now().Format(TimeFormat) + "库存详情" + ".xlsx"
|
||||||
fmt.Println("url fileName:", url+fileName)
|
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))
|
logger.Info("exportStaffCostPrice is:", logger.Field("exportStaffCostPrice", exportStaffCostPrice))
|
||||||
|
|
||||||
// 设置标题行
|
// 设置标题行
|
||||||
title := []interface{}{"商品编号", "商品名称", "商品分类", "是否串码", "商品串码", "所属门店", "供应商", "首次入库时间", "首次入库方式",
|
title := []interface{}{"商品编号", "商品名称", "商品分类", "是否串码", "商品串码", "所属门店", "供应商", "库存数量",
|
||||||
"首次入库订单编号", "最近入库时间"}
|
"首次入库时间", "首次入库方式", "首次入库订单编号", "最近入库时间"}
|
||||||
|
|
||||||
if exportPurchasePrice {
|
if exportPurchasePrice {
|
||||||
title = append(title, "入库采购价")
|
title = append(title, "入库采购价")
|
||||||
|
@ -1626,6 +1629,7 @@ func InventoryDetailListExport(list []ErpStockCommodity, c *gin.Context) (string
|
||||||
list[rowId].IMEI,
|
list[rowId].IMEI,
|
||||||
list[rowId].StoreName,
|
list[rowId].StoreName,
|
||||||
list[rowId].ErpSupplierName,
|
list[rowId].ErpSupplierName,
|
||||||
|
1,
|
||||||
list[rowId].FirstStockTime,
|
list[rowId].FirstStockTime,
|
||||||
storageType,
|
storageType,
|
||||||
list[rowId].OriginalSn,
|
list[rowId].OriginalSn,
|
||||||
|
@ -1672,7 +1676,7 @@ func ErpCategoryListExport(list []ErpCategory) (string, error) {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
url := ExportUrl
|
url := config.ExportConfig.Url
|
||||||
fileName := time.Now().Format(TimeFormat) + "分类列表数据" + ".xlsx"
|
fileName := time.Now().Format(TimeFormat) + "分类列表数据" + ".xlsx"
|
||||||
|
|
||||||
//title := []interface{}{"门店", "用户ID", "订单编号", "下单时间", "卡带", "说明", "回收价", "闲麦价", "审核时间", "审核人", "操作", "复核时间", "复核状态"}
|
//title := []interface{}{"门店", "用户ID", "订单编号", "下单时间", "卡带", "说明", "回收价", "闲麦价", "审核时间", "审核人", "操作", "复核时间", "复核状态"}
|
||||||
|
|
|
@ -108,12 +108,14 @@ type CooperativeMemberPromotion struct {
|
||||||
GoldCount uint32 `json:"gold_count"` // 黄金会员数量
|
GoldCount uint32 `json:"gold_count"` // 黄金会员数量
|
||||||
PlatinumCount uint32 `json:"platinum_count"` // 白金会员数量
|
PlatinumCount uint32 `json:"platinum_count"` // 白金会员数量
|
||||||
BlackGoldCount uint32 `json:"black_gold_count"` // 黑金会员数量
|
BlackGoldCount uint32 `json:"black_gold_count"` // 黑金会员数量
|
||||||
|
PrivilegeCount uint32 `json:"privilege_count"` // 尊享会员数量
|
||||||
Date string `json:"date" gorm:"index"` //
|
Date string `json:"date" gorm:"index"` //
|
||||||
State string `json:"state"` // 待发起结算 待财务打款 已结算
|
State string `json:"state"` // 待发起结算 待财务打款 已结算
|
||||||
|
|
||||||
RenewalGoldCount uint32 `json:"renewal_gold_count"` // 续费黄金会员数量
|
RenewalGoldCount uint32 `json:"renewal_gold_count"` // 续费黄金会员数量
|
||||||
RenewalPlatinumCount uint32 `json:"renewal_platinum_count"` // 续费白金会员数量
|
RenewalPlatinumCount uint32 `json:"renewal_platinum_count"` // 续费白金会员数量
|
||||||
RenewalBlackGoldCount uint32 `json:"renewal_black_gold_count"` // 续费黑金会员数量
|
RenewalBlackGoldCount uint32 `json:"renewal_black_gold_count"` // 续费黑金会员数量
|
||||||
|
RenewalPrivilegeCount uint32 `json:"renewal_privilege_count"` // 续费尊享会员数量
|
||||||
|
|
||||||
GoldDeduct uint32 `json:"gold_deduct" gorm:"-"` // 黄金会员提成
|
GoldDeduct uint32 `json:"gold_deduct" gorm:"-"` // 黄金会员提成
|
||||||
PlatinumDeduct uint32 `json:"platinum_deduct" gorm:"-"` // 白金会员提成
|
PlatinumDeduct uint32 `json:"platinum_deduct" gorm:"-"` // 白金会员提成
|
||||||
|
@ -140,10 +142,12 @@ type CooperativeMemberPromotionStore struct {
|
||||||
GoldCount uint32 `json:"gold_count"` // 黄金会员数量
|
GoldCount uint32 `json:"gold_count"` // 黄金会员数量
|
||||||
PlatinumCount uint32 `json:"platinum_count"` // 白金会员数量
|
PlatinumCount uint32 `json:"platinum_count"` // 白金会员数量
|
||||||
BlackGoldCount uint32 `json:"black_gold_count"` // 黑金会员数量
|
BlackGoldCount uint32 `json:"black_gold_count"` // 黑金会员数量
|
||||||
|
PrivilegeCount uint32 `json:"privilege_count"` // 尊享会员数量
|
||||||
Date string `json:"date" gorm:"index"` //
|
Date string `json:"date" gorm:"index"` //
|
||||||
RenewalGoldCount uint32 `json:"renewal_gold_count"` // 续费黄金会员数量
|
RenewalGoldCount uint32 `json:"renewal_gold_count"` // 续费黄金会员数量
|
||||||
RenewalPlatinumCount uint32 `json:"renewal_platinum_count"` // 续费白金会员数量
|
RenewalPlatinumCount uint32 `json:"renewal_platinum_count"` // 续费白金会员数量
|
||||||
RenewalBlackGoldCount uint32 `json:"renewal_black_gold_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"` // 升级:黄金->白金数量
|
UpgradeGoldToPlatinumCount uint32 `json:"upgrade_gold_to_platinum_count" gorm:"default:0"` // 升级:黄金->白金数量
|
||||||
UpgradeGoldToBlackCount uint32 `json:"upgrade_gold_to_black_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"` // 升级:白金->黑金数量
|
UpgradePlatinumToBlackCount uint32 `json:"upgrade_platinum_to_black_count" gorm:"default:0"` // 升级:白金->黑金数量
|
||||||
|
@ -159,10 +163,12 @@ type CooperativeMemberPromotionDay struct {
|
||||||
GoldCount uint32 `json:"gold_count"` // 黄金会员数量
|
GoldCount uint32 `json:"gold_count"` // 黄金会员数量
|
||||||
PlatinumCount uint32 `json:"platinum_count"` // 白金会员数量
|
PlatinumCount uint32 `json:"platinum_count"` // 白金会员数量
|
||||||
BlackGoldCount uint32 `json:"black_gold_count"` // 黑金会员数量
|
BlackGoldCount uint32 `json:"black_gold_count"` // 黑金会员数量
|
||||||
|
PrivilegeCount uint32 `json:"privilege_count"` // 尊享会员数量
|
||||||
DayTime string `json:"day_time" gorm:"index"` //
|
DayTime string `json:"day_time" gorm:"index"` //
|
||||||
RenewalGoldCount uint32 `json:"renewal_gold_count"` // 续费黄金会员数量
|
RenewalGoldCount uint32 `json:"renewal_gold_count"` // 续费黄金会员数量
|
||||||
RenewalPlatinumCount uint32 `json:"renewal_platinum_count"` // 续费白金会员数量
|
RenewalPlatinumCount uint32 `json:"renewal_platinum_count"` // 续费白金会员数量
|
||||||
RenewalBlackGoldCount uint32 `json:"renewal_black_gold_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"` // 升级:黄金->白金数量
|
UpgradeGoldToPlatinumCount uint32 `json:"upgrade_gold_to_platinum_count" gorm:"default:0"` // 升级:黄金->白金数量
|
||||||
UpgradeGoldToBlackCount uint32 `json:"upgrade_gold_to_black_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"` // 升级:白金->黑金数量
|
UpgradePlatinumToBlackCount uint32 `json:"upgrade_platinum_to_black_count" gorm:"default:0"` // 升级:白金->黑金数量
|
||||||
|
@ -178,10 +184,12 @@ type CooperativeMemberPromotionStoreDay struct {
|
||||||
GoldCount uint32 `json:"gold_count"` // 黄金会员数量
|
GoldCount uint32 `json:"gold_count"` // 黄金会员数量
|
||||||
PlatinumCount uint32 `json:"platinum_count"` // 白金会员数量
|
PlatinumCount uint32 `json:"platinum_count"` // 白金会员数量
|
||||||
BlackGoldCount uint32 `json:"black_gold_count"` // 黑金会员数量
|
BlackGoldCount uint32 `json:"black_gold_count"` // 黑金会员数量
|
||||||
|
PrivilegeCount uint32 `json:"privilege_count"` // 尊享会员数量
|
||||||
DayTime string `json:"day_time" gorm:"index"` //
|
DayTime string `json:"day_time" gorm:"index"` //
|
||||||
RenewalGoldCount uint32 `json:"renewal_gold_count"` // 续费黄金会员数量
|
RenewalGoldCount uint32 `json:"renewal_gold_count"` // 续费黄金会员数量
|
||||||
RenewalPlatinumCount uint32 `json:"renewal_platinum_count"` // 续费白金会员数量
|
RenewalPlatinumCount uint32 `json:"renewal_platinum_count"` // 续费白金会员数量
|
||||||
RenewalBlackGoldCount uint32 `json:"renewal_black_gold_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"` // 升级:黄金->白金数量
|
UpgradeGoldToPlatinumCount uint32 `json:"upgrade_gold_to_platinum_count" gorm:"default:0"` // 升级:黄金->白金数量
|
||||||
UpgradeGoldToBlackCount uint32 `json:"upgrade_gold_to_black_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"` // 升级:白金->黑金数量
|
UpgradePlatinumToBlackCount uint32 `json:"upgrade_platinum_to_black_count" gorm:"default:0"` // 升级:白金->黑金数量
|
||||||
|
@ -200,6 +208,7 @@ type CooperativeDeductSettle struct {
|
||||||
GoldCount uint32 `json:"gold_count"` // 黄金会员数量
|
GoldCount uint32 `json:"gold_count"` // 黄金会员数量
|
||||||
PlatinumCount uint32 `json:"platinum_count"` // 白金会员数量
|
PlatinumCount uint32 `json:"platinum_count"` // 白金会员数量
|
||||||
BlackGoldCount uint32 `json:"black_gold_count"` // 黑金会员数量
|
BlackGoldCount uint32 `json:"black_gold_count"` // 黑金会员数量
|
||||||
|
PrivilegeCount uint32 `json:"privilege_count"` // 尊享会员数量
|
||||||
GoldDeduct uint32 `json:"gold_deduct"` // 黄金会员提成配置
|
GoldDeduct uint32 `json:"gold_deduct"` // 黄金会员提成配置
|
||||||
PlatinumDeduct uint32 `json:"platinum_deduct"` // 白金会员提成配置
|
PlatinumDeduct uint32 `json:"platinum_deduct"` // 白金会员提成配置
|
||||||
BlackGoldDeduct uint32 `json:"black_gold_deduct"` // 黑金会员提成配置
|
BlackGoldDeduct uint32 `json:"black_gold_deduct"` // 黑金会员提成配置
|
||||||
|
@ -207,6 +216,7 @@ type CooperativeDeductSettle struct {
|
||||||
RenewalGoldCount uint32 `json:"renewal_gold_count"` // 续费黄金会员数量
|
RenewalGoldCount uint32 `json:"renewal_gold_count"` // 续费黄金会员数量
|
||||||
RenewalPlatinumCount uint32 `json:"renewal_platinum_count"` // 续费白金会员数量
|
RenewalPlatinumCount uint32 `json:"renewal_platinum_count"` // 续费白金会员数量
|
||||||
RenewalBlackGoldCount uint32 `json:"renewal_black_gold_count"` // 续费黑金会员数量
|
RenewalBlackGoldCount uint32 `json:"renewal_black_gold_count"` // 续费黑金会员数量
|
||||||
|
RenewalPrivilegeCount uint32 `json:"renewal_privilege_count"` // 续费尊享会员数量
|
||||||
|
|
||||||
RenewalGoldDeduct uint32 `json:"renewal_gold_deduct"` // 续费黄金会员提成
|
RenewalGoldDeduct uint32 `json:"renewal_gold_deduct"` // 续费黄金会员提成
|
||||||
RenewalPlatinumDeduct uint32 `json:"renewal_platinum_deduct"` // 续费白金会员提成
|
RenewalPlatinumDeduct uint32 `json:"renewal_platinum_deduct"` // 续费白金会员提成
|
||||||
|
@ -701,11 +711,13 @@ type CooperativeMemberPromotionStatistic struct {
|
||||||
GoldCount uint32 `json:"gold_count"` // 黄金会员数量
|
GoldCount uint32 `json:"gold_count"` // 黄金会员数量
|
||||||
PlatinumCount uint32 `json:"platinum_count"` // 白金会员数量
|
PlatinumCount uint32 `json:"platinum_count"` // 白金会员数量
|
||||||
BlackGoldCount uint32 `json:"black_gold_count"` // 黑金会员数量
|
BlackGoldCount uint32 `json:"black_gold_count"` // 黑金会员数量
|
||||||
|
PrivilegeCount uint32 `json:"privilege_count"` // 尊享会员数量
|
||||||
DayTime string `json:"day_time" gorm:"index"` //
|
DayTime string `json:"day_time" gorm:"index"` //
|
||||||
|
|
||||||
RenewalGoldCount uint32 `json:"renewal_gold_count"` // 续费黄金会员数量
|
RenewalGoldCount uint32 `json:"renewal_gold_count"` // 续费黄金会员数量
|
||||||
RenewalPlatinumCount uint32 `json:"renewal_platinum_count"` // 续费白金会员数量
|
RenewalPlatinumCount uint32 `json:"renewal_platinum_count"` // 续费白金会员数量
|
||||||
RenewalBlackGoldCount uint32 `json:"renewal_black_gold_count"` // 续费黑金会员数量
|
RenewalBlackGoldCount uint32 `json:"renewal_black_gold_count"` // 续费黑金会员数量
|
||||||
|
RenewalPrivilegeCount uint32 `json:"renewal_privilege_count"` // 续费尊享会员数量
|
||||||
Date string `json:"date" gorm:"index"` // 日期
|
Date string `json:"date" gorm:"index"` // 日期
|
||||||
StoreId uint32 `json:"store_id" gorm:"index"` // 门店id
|
StoreId uint32 `json:"store_id" gorm:"index"` // 门店id
|
||||||
|
|
||||||
|
@ -992,7 +1004,7 @@ func promotionStatisticListExport(list []CooperativeMemberPromotionStatistic) (s
|
||||||
file := excelize.NewFile()
|
file := excelize.NewFile()
|
||||||
fSheet := "Sheet1"
|
fSheet := "Sheet1"
|
||||||
|
|
||||||
url := ExportUrl
|
url := config.ExportConfig.Url
|
||||||
fileName := time.Now().Format(TimeFormat) + "租卡会员统计" + ".xlsx"
|
fileName := time.Now().Format(TimeFormat) + "租卡会员统计" + ".xlsx"
|
||||||
fmt.Println("url fileName:", url+fileName)
|
fmt.Println("url fileName:", url+fileName)
|
||||||
|
|
||||||
|
@ -1102,10 +1114,12 @@ func CooperativeMemberPromotionDayListToStatistic(list []CooperativeMemberPromot
|
||||||
GoldCount: list[i].GoldCount,
|
GoldCount: list[i].GoldCount,
|
||||||
PlatinumCount: list[i].PlatinumCount,
|
PlatinumCount: list[i].PlatinumCount,
|
||||||
BlackGoldCount: list[i].BlackGoldCount,
|
BlackGoldCount: list[i].BlackGoldCount,
|
||||||
|
PrivilegeCount: list[i].PrivilegeCount,
|
||||||
DayTime: list[i].DayTime,
|
DayTime: list[i].DayTime,
|
||||||
RenewalGoldCount: list[i].RenewalGoldCount,
|
RenewalGoldCount: list[i].RenewalGoldCount,
|
||||||
RenewalPlatinumCount: list[i].RenewalPlatinumCount,
|
RenewalPlatinumCount: list[i].RenewalPlatinumCount,
|
||||||
RenewalBlackGoldCount: list[i].RenewalBlackGoldCount,
|
RenewalBlackGoldCount: list[i].RenewalBlackGoldCount,
|
||||||
|
RenewalPrivilegeCount: list[i].RenewalPrivilegeCount,
|
||||||
UpgradeGoldToPlatinumCount: list[i].UpgradeGoldToPlatinumCount,
|
UpgradeGoldToPlatinumCount: list[i].UpgradeGoldToPlatinumCount,
|
||||||
UpgradeGoldToBlackCount: list[i].UpgradeGoldToBlackCount,
|
UpgradeGoldToBlackCount: list[i].UpgradeGoldToBlackCount,
|
||||||
UpgradePlatinumToBlackCount: list[i].UpgradePlatinumToBlackCount,
|
UpgradePlatinumToBlackCount: list[i].UpgradePlatinumToBlackCount,
|
||||||
|
@ -1129,10 +1143,12 @@ func CooperativeMemberPromotionStoreDayToStatistic(list []CooperativeMemberPromo
|
||||||
GoldCount: list[i].GoldCount,
|
GoldCount: list[i].GoldCount,
|
||||||
PlatinumCount: list[i].PlatinumCount,
|
PlatinumCount: list[i].PlatinumCount,
|
||||||
BlackGoldCount: list[i].BlackGoldCount,
|
BlackGoldCount: list[i].BlackGoldCount,
|
||||||
|
PrivilegeCount: list[i].PrivilegeCount,
|
||||||
DayTime: list[i].DayTime,
|
DayTime: list[i].DayTime,
|
||||||
RenewalGoldCount: list[i].RenewalGoldCount,
|
RenewalGoldCount: list[i].RenewalGoldCount,
|
||||||
RenewalPlatinumCount: list[i].RenewalPlatinumCount,
|
RenewalPlatinumCount: list[i].RenewalPlatinumCount,
|
||||||
RenewalBlackGoldCount: list[i].RenewalBlackGoldCount,
|
RenewalBlackGoldCount: list[i].RenewalBlackGoldCount,
|
||||||
|
RenewalPrivilegeCount: list[i].RenewalPrivilegeCount,
|
||||||
UpgradeGoldToPlatinumCount: list[i].UpgradeGoldToPlatinumCount,
|
UpgradeGoldToPlatinumCount: list[i].UpgradeGoldToPlatinumCount,
|
||||||
UpgradeGoldToBlackCount: list[i].UpgradeGoldToBlackCount,
|
UpgradeGoldToBlackCount: list[i].UpgradeGoldToBlackCount,
|
||||||
UpgradePlatinumToBlackCount: list[i].UpgradePlatinumToBlackCount,
|
UpgradePlatinumToBlackCount: list[i].UpgradePlatinumToBlackCount,
|
||||||
|
@ -1157,9 +1173,11 @@ func CooperativeMemberPromotionToStatistic(list []CooperativeMemberPromotion) []
|
||||||
GoldCount: list[i].GoldCount,
|
GoldCount: list[i].GoldCount,
|
||||||
PlatinumCount: list[i].PlatinumCount,
|
PlatinumCount: list[i].PlatinumCount,
|
||||||
BlackGoldCount: list[i].BlackGoldCount,
|
BlackGoldCount: list[i].BlackGoldCount,
|
||||||
|
PrivilegeCount: list[i].PrivilegeCount,
|
||||||
RenewalGoldCount: list[i].RenewalGoldCount,
|
RenewalGoldCount: list[i].RenewalGoldCount,
|
||||||
RenewalPlatinumCount: list[i].RenewalPlatinumCount,
|
RenewalPlatinumCount: list[i].RenewalPlatinumCount,
|
||||||
RenewalBlackGoldCount: list[i].RenewalBlackGoldCount,
|
RenewalBlackGoldCount: list[i].RenewalBlackGoldCount,
|
||||||
|
RenewalPrivilegeCount: list[i].RenewalPrivilegeCount,
|
||||||
Date: list[i].Date,
|
Date: list[i].Date,
|
||||||
UpgradePlatinumToBlackCount: list[i].UpgradePlatinumToBlackCount,
|
UpgradePlatinumToBlackCount: list[i].UpgradePlatinumToBlackCount,
|
||||||
UpgradeGoldToBlackCount: list[i].UpgradeGoldToBlackCount,
|
UpgradeGoldToBlackCount: list[i].UpgradeGoldToBlackCount,
|
||||||
|
@ -1184,10 +1202,12 @@ func CooperativeMemberPromotionStoreToStatistic(list []CooperativeMemberPromotio
|
||||||
GoldCount: list[i].GoldCount,
|
GoldCount: list[i].GoldCount,
|
||||||
PlatinumCount: list[i].PlatinumCount,
|
PlatinumCount: list[i].PlatinumCount,
|
||||||
BlackGoldCount: list[i].BlackGoldCount,
|
BlackGoldCount: list[i].BlackGoldCount,
|
||||||
|
PrivilegeCount: list[i].PrivilegeCount,
|
||||||
//DayTime: list[i].DayTime,
|
//DayTime: list[i].DayTime,
|
||||||
RenewalGoldCount: list[i].RenewalGoldCount,
|
RenewalGoldCount: list[i].RenewalGoldCount,
|
||||||
RenewalPlatinumCount: list[i].RenewalPlatinumCount,
|
RenewalPlatinumCount: list[i].RenewalPlatinumCount,
|
||||||
RenewalBlackGoldCount: list[i].RenewalBlackGoldCount,
|
RenewalBlackGoldCount: list[i].RenewalBlackGoldCount,
|
||||||
|
RenewalPrivilegeCount: list[i].RenewalPrivilegeCount,
|
||||||
Date: list[i].Date,
|
Date: list[i].Date,
|
||||||
StoreId: list[i].StoreId,
|
StoreId: list[i].StoreId,
|
||||||
Store: list[i].Store,
|
Store: list[i].Store,
|
||||||
|
|
|
@ -2285,7 +2285,7 @@ func reportDecisionExport(req *ErpDecisionReportResp) (string, error) {
|
||||||
file := excelize.NewFile()
|
file := excelize.NewFile()
|
||||||
fSheet := "Sheet1"
|
fSheet := "Sheet1"
|
||||||
|
|
||||||
url := ExportUrl
|
url := config.ExportConfig.Url
|
||||||
fileName := time.Now().Format(TimeFormat) + "进销存报表" + ".xlsx"
|
fileName := time.Now().Format(TimeFormat) + "进销存报表" + ".xlsx"
|
||||||
fmt.Println("url fileName:", url+fileName)
|
fmt.Println("url fileName:", url+fileName)
|
||||||
|
|
||||||
|
|
|
@ -2395,7 +2395,7 @@ func storeManageDataExport(list []StoreManageData, storeName string, c *gin.Cont
|
||||||
file := excelize.NewFile()
|
file := excelize.NewFile()
|
||||||
fSheet := "Sheet1"
|
fSheet := "Sheet1"
|
||||||
|
|
||||||
url := ExportUrl
|
url := config.ExportConfig.Url
|
||||||
fileName := time.Now().Format(TimeFormat) + storeName + "经营数据" + ".xlsx"
|
fileName := time.Now().Format(TimeFormat) + storeName + "经营数据" + ".xlsx"
|
||||||
fmt.Println("url fileName:", url+fileName)
|
fmt.Println("url fileName:", url+fileName)
|
||||||
|
|
||||||
|
@ -2493,7 +2493,7 @@ func retailMarginDataExport(req *ErpOrderRetailMarginResp, c *gin.Context) (stri
|
||||||
file := excelize.NewFile()
|
file := excelize.NewFile()
|
||||||
fSheet := "Sheet1"
|
fSheet := "Sheet1"
|
||||||
|
|
||||||
url := ExportUrl
|
url := config.ExportConfig.Url
|
||||||
fileName := time.Now().Format(TimeFormat) + "商品零售毛利汇总" + ".xlsx"
|
fileName := time.Now().Format(TimeFormat) + "商品零售毛利汇总" + ".xlsx"
|
||||||
fmt.Println("url fileName:", url+fileName)
|
fmt.Println("url fileName:", url+fileName)
|
||||||
|
|
||||||
|
@ -3009,7 +3009,7 @@ func retailDetailExportBack(list []ErpOrder, sumData RetailDetailTotalData) (str
|
||||||
file := excelize.NewFile()
|
file := excelize.NewFile()
|
||||||
fSheet := "Sheet1"
|
fSheet := "Sheet1"
|
||||||
|
|
||||||
url := ExportUrl
|
url := config.ExportConfig.Url
|
||||||
fileName := time.Now().Format(TimeFormat) + "零售明细" + ".xlsx"
|
fileName := time.Now().Format(TimeFormat) + "零售明细" + ".xlsx"
|
||||||
fmt.Println("url fileName:", url+fileName)
|
fmt.Println("url fileName:", url+fileName)
|
||||||
|
|
||||||
|
@ -3274,7 +3274,7 @@ func retailDetailExport(list []ErpOrder, sumData RetailDetailTotalData, c *gin.C
|
||||||
file := excelize.NewFile()
|
file := excelize.NewFile()
|
||||||
fSheet := "Sheet1"
|
fSheet := "Sheet1"
|
||||||
|
|
||||||
url := ExportUrl
|
url := config.ExportConfig.Url
|
||||||
fileName := time.Now().Format(TimeFormat) + "零售明细" + ".xlsx"
|
fileName := time.Now().Format(TimeFormat) + "零售明细" + ".xlsx"
|
||||||
fmt.Println("url fileName:", url+fileName)
|
fmt.Println("url fileName:", url+fileName)
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ import (
|
||||||
orm "go-admin/common/global"
|
orm "go-admin/common/global"
|
||||||
"go-admin/logger"
|
"go-admin/logger"
|
||||||
"go-admin/tools"
|
"go-admin/tools"
|
||||||
|
"go-admin/tools/config"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
@ -1864,7 +1865,7 @@ func GoodsStockFile(goodsData []ExportGoods, fileName string) string {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return ExportUrl + fileName
|
return config.ExportConfig.Url + fileName
|
||||||
}
|
}
|
||||||
|
|
||||||
func GoodsStatusStringByStatus(status uint8) string {
|
func GoodsStatusStringByStatus(status uint8) string {
|
||||||
|
@ -3332,7 +3333,7 @@ func MemberReportFile(memberReports []InviteMemberReport, fileName string) strin
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return ExportUrl + fileName
|
return config.ExportConfig.Url + fileName
|
||||||
}
|
}
|
||||||
|
|
||||||
type CooperativeSetPayInfoReq struct {
|
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()
|
file := excelize.NewFile()
|
||||||
fSheet := "Sheet1"
|
fSheet := "Sheet1"
|
||||||
|
|
||||||
url := ExportUrl
|
url := config.ExportConfig.Url
|
||||||
fileName := time.Now().Format(TimeFormat) + "产品库存汇总(按门店)" + ".xlsx"
|
fileName := time.Now().Format(TimeFormat) + "产品库存汇总(按门店)" + ".xlsx"
|
||||||
fmt.Println("url fileName:", url+fileName)
|
fmt.Println("url fileName:", url+fileName)
|
||||||
|
|
||||||
|
@ -834,7 +834,7 @@ func reportAllotExport(req *InventoryReportByAllotResp) (string, error) {
|
||||||
file := excelize.NewFile()
|
file := excelize.NewFile()
|
||||||
fSheet := "Sheet1"
|
fSheet := "Sheet1"
|
||||||
|
|
||||||
url := ExportUrl
|
url := config.ExportConfig.Url
|
||||||
fileName := time.Now().Format(TimeFormat) + "库存调拨汇总" + ".xlsx"
|
fileName := time.Now().Format(TimeFormat) + "库存调拨汇总" + ".xlsx"
|
||||||
fmt.Println("url fileName:", url+fileName)
|
fmt.Println("url fileName:", url+fileName)
|
||||||
|
|
||||||
|
@ -1132,7 +1132,7 @@ func reportAllotDetailExport(req *InventoryReportAllotDetailResp) (string, error
|
||||||
file := excelize.NewFile()
|
file := excelize.NewFile()
|
||||||
fSheet := "Sheet1"
|
fSheet := "Sheet1"
|
||||||
|
|
||||||
url := ExportUrl
|
url := config.ExportConfig.Url
|
||||||
fileName := time.Now().Format(TimeFormat) + "库存调拨明细" + ".xlsx"
|
fileName := time.Now().Format(TimeFormat) + "库存调拨明细" + ".xlsx"
|
||||||
fmt.Println("url fileName:", url+fileName)
|
fmt.Println("url fileName:", url+fileName)
|
||||||
|
|
||||||
|
@ -1436,7 +1436,7 @@ func reportOtherExport(req *InventoryReportByOtherResp) (string, error) {
|
||||||
file := excelize.NewFile()
|
file := excelize.NewFile()
|
||||||
fSheet := "Sheet1"
|
fSheet := "Sheet1"
|
||||||
|
|
||||||
url := ExportUrl
|
url := config.ExportConfig.Url
|
||||||
fileName := time.Now().Format(TimeFormat) + "其他出入库汇总" + ".xlsx"
|
fileName := time.Now().Format(TimeFormat) + "其他出入库汇总" + ".xlsx"
|
||||||
fmt.Println("url fileName:", url+fileName)
|
fmt.Println("url fileName:", url+fileName)
|
||||||
|
|
||||||
|
@ -1784,7 +1784,7 @@ func reportOtherDetailExport(req *InventoryReportOtherDetailResp) (string, error
|
||||||
file := excelize.NewFile()
|
file := excelize.NewFile()
|
||||||
fSheet := "Sheet1"
|
fSheet := "Sheet1"
|
||||||
|
|
||||||
url := ExportUrl
|
url := config.ExportConfig.Url
|
||||||
fileName := time.Now().Format(TimeFormat) + "其他出入库明细" + ".xlsx"
|
fileName := time.Now().Format(TimeFormat) + "其他出入库明细" + ".xlsx"
|
||||||
fmt.Println("url fileName:", url+fileName)
|
fmt.Println("url fileName:", url+fileName)
|
||||||
|
|
||||||
|
|
|
@ -519,7 +519,7 @@ func OrderListExport(list []Order) (string, error) {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
url := ExportUrl
|
url := config.ExportConfig.Url
|
||||||
fileName := time.Now().Format(TimeFormat) + "租赁订单" + ".xlsx"
|
fileName := time.Now().Format(TimeFormat) + "租赁订单" + ".xlsx"
|
||||||
fmt.Println("url fileName:", url+fileName)
|
fmt.Println("url fileName:", url+fileName)
|
||||||
|
|
||||||
|
@ -1581,8 +1581,11 @@ func (m *FundRecordListReq) List() ([]FundRecord, int64, string, error) {
|
||||||
var fundRecords []FundRecord
|
var fundRecords []FundRecord
|
||||||
qs := orm.Eloquent.Table("fund_record")
|
qs := orm.Eloquent.Table("fund_record")
|
||||||
|
|
||||||
|
// 默认剔除"尊享会员费",只有传参有才展示
|
||||||
if m.FundType != "" {
|
if m.FundType != "" {
|
||||||
qs = qs.Where("fund_type=?", m.FundType)
|
qs = qs.Where("fund_type=?", m.FundType)
|
||||||
|
} else {
|
||||||
|
qs = qs.Where("fund_type != ?", "privilege_member_fee")
|
||||||
}
|
}
|
||||||
if m.TransactionId != "" {
|
if m.TransactionId != "" {
|
||||||
qs = qs.Where("transaction_id=?", m.TransactionId)
|
qs = qs.Where("transaction_id=?", m.TransactionId)
|
||||||
|
@ -1691,7 +1694,7 @@ func fundRecordListExport(list []FundRecord) (string, error) {
|
||||||
file := excelize.NewFile()
|
file := excelize.NewFile()
|
||||||
fSheet := "Sheet1"
|
fSheet := "Sheet1"
|
||||||
|
|
||||||
url := ExportUrl
|
url := config.ExportConfig.Url
|
||||||
fileName := time.Now().Format(TimeFormat) + "财务统计" + ".xlsx"
|
fileName := time.Now().Format(TimeFormat) + "财务统计" + ".xlsx"
|
||||||
fmt.Println("url fileName:", url+fileName)
|
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
|
var soldOutCommodities []ErpStockCommodity
|
||||||
firstDay, lastDay := GetLastMonthRange() // 获取上个月的时间范围
|
firstDay, lastDay := GetLastMonthRange() // 获取上个月的时间范围
|
||||||
|
@ -1947,12 +1956,12 @@ func getErpPurchaseDemandAll(req *GetErpPurchaseDemandReq, c *gin.Context) (*Get
|
||||||
}
|
}
|
||||||
if len(storeIdList) > 1 {
|
if len(storeIdList) > 1 {
|
||||||
err = orm.Eloquent.Table("erp_stock_commodity").
|
err = orm.Eloquent.Table("erp_stock_commodity").
|
||||||
Where("state = ? AND updated_at BETWEEN ? AND ? AND store_id in (?)",
|
Where("state = ? AND updated_at BETWEEN ? AND ? AND store_id in (?) AND erp_commodity_id IN (?)",
|
||||||
SoldOut, firstDay, lastDay, storeIdList).Find(&soldOutCommodities).Error
|
SoldOut, firstDay, lastDay, storeIdList, commodityIDs).Find(&soldOutCommodities).Error
|
||||||
} else {
|
} else {
|
||||||
err = orm.Eloquent.Table("erp_stock_commodity").
|
err = orm.Eloquent.Table("erp_stock_commodity").
|
||||||
Where("state = ? AND updated_at BETWEEN ? AND ? AND store_id = ?",
|
Where("state = ? AND updated_at BETWEEN ? AND ? AND store_id = ? AND erp_commodity_id IN (?)",
|
||||||
SoldOut, firstDay, lastDay, storeIdList[0]).Find(&soldOutCommodities).Error
|
SoldOut, firstDay, lastDay, storeIdList[0], commodityIDs).Find(&soldOutCommodities).Error
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -1973,12 +1982,12 @@ func getErpPurchaseDemandAll(req *GetErpPurchaseDemandReq, c *gin.Context) (*Get
|
||||||
var stockCommodities []ErpStockCommodity
|
var stockCommodities []ErpStockCommodity
|
||||||
if len(storeIdList) > 1 {
|
if len(storeIdList) > 1 {
|
||||||
err = orm.Eloquent.Table("erp_stock_commodity").
|
err = orm.Eloquent.Table("erp_stock_commodity").
|
||||||
Where("state = ? AND store_id in (?)",
|
Where("state = ? AND store_id in (?) AND erp_commodity_id IN (?)",
|
||||||
InStock, storeIdList).Find(&stockCommodities).Error
|
InStock, storeIdList, commodityIDs).Find(&stockCommodities).Error
|
||||||
} else {
|
} else {
|
||||||
err = orm.Eloquent.Table("erp_stock_commodity").
|
err = orm.Eloquent.Table("erp_stock_commodity").
|
||||||
Where("state = ? AND store_id = ?",
|
Where("state = ? AND store_id = ? AND erp_commodity_id IN (?)",
|
||||||
InStock, storeIdList[0]).Find(&stockCommodities).Error
|
InStock, storeIdList[0], commodityIDs).Find(&stockCommodities).Error
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -1991,14 +2000,14 @@ func getErpPurchaseDemandAll(req *GetErpPurchaseDemandReq, c *gin.Context) (*Get
|
||||||
if exist { // 存在
|
if exist { // 存在
|
||||||
inStockMap[key] += 1
|
inStockMap[key] += 1
|
||||||
} else { // 不存在
|
} else { // 不存在
|
||||||
inStockMap[key] = 0
|
inStockMap[key] = 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询采购需求单信息
|
// 查询采购需求单信息
|
||||||
var demand []ErpPurchaseDemand
|
var demand []ErpPurchaseDemand
|
||||||
demandQs := orm.Eloquent.Table("erp_purchase_demand").
|
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) > 0 {
|
||||||
if len(storeIdList) == 1 {
|
if len(storeIdList) == 1 {
|
||||||
demandQs = demandQs.Where("store_id = ?", storeIdList[0])
|
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").
|
demandRemarkQs := orm.Eloquent.Table("erp_purchase_demand_remark").
|
||||||
Where("state = 1").
|
Where("state = 1").
|
||||||
Where("remark IS NOT NULL").
|
Where("remark IS NOT NULL").
|
||||||
Where("remark <> ''")
|
Where("remark <> ''").Where("erp_commodity_id IN (?)", commodityIDs)
|
||||||
err = demandRemarkQs.Find(&demandRemarkInfo).Error
|
err = demandRemarkQs.Find(&demandRemarkInfo).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -2759,7 +2768,7 @@ func demandDataExport(list []DemandData) (string, error) {
|
||||||
file := excelize.NewFile()
|
file := excelize.NewFile()
|
||||||
fSheet := "Sheet1"
|
fSheet := "Sheet1"
|
||||||
|
|
||||||
url := ExportUrl
|
url := config.ExportConfig.Url
|
||||||
fileName := time.Now().Format(TimeFormat) + "采购需求" + ".xlsx"
|
fileName := time.Now().Format(TimeFormat) + "采购需求" + ".xlsx"
|
||||||
fmt.Println("url fileName:", url+fileName)
|
fmt.Println("url fileName:", url+fileName)
|
||||||
|
|
||||||
|
@ -2911,7 +2920,7 @@ func demandDataExportOnShopAssistant(list []DemandData) (string, error) {
|
||||||
file := excelize.NewFile()
|
file := excelize.NewFile()
|
||||||
fSheet := "Sheet1"
|
fSheet := "Sheet1"
|
||||||
|
|
||||||
url := ExportUrl
|
url := config.ExportConfig.Url
|
||||||
fileName := time.Now().Format(TimeFormat) + "采购需求" + ".xlsx"
|
fileName := time.Now().Format(TimeFormat) + "采购需求" + ".xlsx"
|
||||||
fmt.Println("url fileName:", url+fileName)
|
fmt.Println("url fileName:", url+fileName)
|
||||||
|
|
||||||
|
@ -3632,7 +3641,7 @@ func reportByOrderExport(req *ErpPurchaseReportByOrderResp) (string, error) {
|
||||||
file := excelize.NewFile()
|
file := excelize.NewFile()
|
||||||
fSheet := "Sheet1"
|
fSheet := "Sheet1"
|
||||||
|
|
||||||
url := ExportUrl
|
url := config.ExportConfig.Url
|
||||||
fileName := time.Now().Format(TimeFormat) + "采购报表(按单)" + ".xlsx"
|
fileName := time.Now().Format(TimeFormat) + "采购报表(按单)" + ".xlsx"
|
||||||
fmt.Println("url fileName:", url+fileName)
|
fmt.Println("url fileName:", url+fileName)
|
||||||
|
|
||||||
|
@ -4682,7 +4691,7 @@ func reportByCommodityExport(req *ErpPurchaseReportByCommodityResp) (string, err
|
||||||
file := excelize.NewFile()
|
file := excelize.NewFile()
|
||||||
fSheet := "Sheet1"
|
fSheet := "Sheet1"
|
||||||
|
|
||||||
url := ExportUrl
|
url := config.ExportConfig.Url
|
||||||
fileName := time.Now().Format(TimeFormat) + "采购报表(按商品)" + ".xlsx"
|
fileName := time.Now().Format(TimeFormat) + "采购报表(按商品)" + ".xlsx"
|
||||||
fmt.Println("url fileName:", url+fileName)
|
fmt.Println("url fileName:", url+fileName)
|
||||||
|
|
||||||
|
@ -5228,7 +5237,7 @@ func reportBySupplierExport(req *ErpPurchaseReportBySupplierResp) (string, error
|
||||||
file := excelize.NewFile()
|
file := excelize.NewFile()
|
||||||
fSheet := "Sheet1"
|
fSheet := "Sheet1"
|
||||||
|
|
||||||
url := ExportUrl
|
url := config.ExportConfig.Url
|
||||||
fileName := time.Now().Format(TimeFormat) + "供应商采购汇总" + ".xlsx"
|
fileName := time.Now().Format(TimeFormat) + "供应商采购汇总" + ".xlsx"
|
||||||
fmt.Println("url fileName:", url+fileName)
|
fmt.Println("url fileName:", url+fileName)
|
||||||
|
|
||||||
|
@ -5530,7 +5539,7 @@ func reportDetailExport(req *ErpPurchaseReportDetailResp, c *gin.Context) (strin
|
||||||
file := excelize.NewFile()
|
file := excelize.NewFile()
|
||||||
fSheet := "Sheet1"
|
fSheet := "Sheet1"
|
||||||
|
|
||||||
url := ExportUrl
|
url := config.ExportConfig.Url
|
||||||
fileName := time.Now().Format(TimeFormat) + "采购明细" + ".xlsx"
|
fileName := time.Now().Format(TimeFormat) + "采购明细" + ".xlsx"
|
||||||
fmt.Println("url fileName:", url+fileName)
|
fmt.Println("url fileName:", url+fileName)
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ import (
|
||||||
orm "go-admin/common/global"
|
orm "go-admin/common/global"
|
||||||
"go-admin/logger"
|
"go-admin/logger"
|
||||||
"go-admin/tools"
|
"go-admin/tools"
|
||||||
|
"go-admin/tools/config"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -271,7 +272,7 @@ func RecycleCardOrderListExport(list []RecycleCardOrder) (string, error) {
|
||||||
//if err := file.SaveAs("./" + fileName); err != nil {
|
//if err := file.SaveAs("./" + fileName); err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
return ExportUrl + fileName, nil
|
return config.ExportConfig.Url + fileName, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func RecycleCardOrderStateUpdate() {
|
func RecycleCardOrderStateUpdate() {
|
||||||
|
|
|
@ -417,7 +417,7 @@ func sysUserExport(req []SysUserPage) (string, error) {
|
||||||
file := excelize.NewFile()
|
file := excelize.NewFile()
|
||||||
fSheet := "Sheet1"
|
fSheet := "Sheet1"
|
||||||
|
|
||||||
url := ExportUrl
|
url := config.ExportConfig.Url
|
||||||
fileName := time.Now().Format(TimeFormat) + "系统用户" + ".xlsx"
|
fileName := time.Now().Format(TimeFormat) + "系统用户" + ".xlsx"
|
||||||
fmt.Println("url fileName:", url+fileName)
|
fmt.Println("url fileName:", url+fileName)
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,8 @@ const (
|
||||||
UpgradeGoldToPlatinumAuto // 18-黄金→白金(自动)
|
UpgradeGoldToPlatinumAuto // 18-黄金→白金(自动)
|
||||||
UpgradeGoldToBlackAuto // 19-黄金→黑金(自动)
|
UpgradeGoldToBlackAuto // 19-黄金→黑金(自动)
|
||||||
UpgradePlatinumToBlackAuto // 20-白金→黑金(自动)
|
UpgradePlatinumToBlackAuto // 20-白金→黑金(自动)
|
||||||
|
OpenAnnualPrivilege // 21 开通年费尊享会员
|
||||||
|
RenewAnnualPrivilegeAuto // 22 续费年费尊享会员(自动)
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -56,6 +58,7 @@ const (
|
||||||
MemberLevelPeriod = 3 // 短期会员
|
MemberLevelPeriod = 3 // 短期会员
|
||||||
MemberLevelPlatinum = 4 // 白金会员
|
MemberLevelPlatinum = 4 // 白金会员
|
||||||
MemberLevelBlackGold = 5 // 黑金会员
|
MemberLevelBlackGold = 5 // 黑金会员
|
||||||
|
MemberLevelPrivilege = 6 // 尊享会员
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -63,6 +66,12 @@ const (
|
||||||
UserTypeShopAssistant = 2 // 店员
|
UserTypeShopAssistant = 2 // 店员
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const ( // 尊享会员延保状态
|
||||||
|
ExtendExpire = 1 // 已过期
|
||||||
|
ExtendWaitActive = 2 // 待激活
|
||||||
|
ExtendEffectivity = 3 // 已激活
|
||||||
|
)
|
||||||
|
|
||||||
// gen:qs
|
// gen:qs
|
||||||
//
|
//
|
||||||
//go:generate goqueryset -in user.go
|
//go:generate goqueryset -in user.go
|
||||||
|
@ -132,9 +141,9 @@ const QueryTimeFormat = "2006-01-02T15:04:05+08:00"
|
||||||
const StoreDateTimeFormat = "2006.01.02"
|
const StoreDateTimeFormat = "2006.01.02"
|
||||||
|
|
||||||
const (
|
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 = "https://dev.admin.deovo.com/load/export/" // dev环境
|
||||||
//ExportUrl = "/Users/max/Documents/" // 本地环境
|
// ExportUrl = "/Users/max/Documents/" // 本地环境
|
||||||
)
|
)
|
||||||
|
|
||||||
type UserInvite struct {
|
type UserInvite struct {
|
||||||
|
@ -780,7 +789,7 @@ func newUserListExport(list []U) (string, error) {
|
||||||
file := excelize.NewFile()
|
file := excelize.NewFile()
|
||||||
fSheet := "Sheet1"
|
fSheet := "Sheet1"
|
||||||
|
|
||||||
url := ExportUrl
|
url := config.ExportConfig.Url
|
||||||
fileName := time.Now().Format(TimeFormat) + "所有会员" + ".xlsx"
|
fileName := time.Now().Format(TimeFormat) + "所有会员" + ".xlsx"
|
||||||
fmt.Println("url fileName:", url+fileName)
|
fmt.Println("url fileName:", url+fileName)
|
||||||
|
|
||||||
|
@ -1034,6 +1043,7 @@ type InviteMemberReport struct {
|
||||||
GoldCountQuarter uint32 `json:"gold_count_quarter"` // 季度黄金数量
|
GoldCountQuarter uint32 `json:"gold_count_quarter"` // 季度黄金数量
|
||||||
PlatinumCount uint32 `json:"platinum_count"` // 白金数量
|
PlatinumCount uint32 `json:"platinum_count"` // 白金数量
|
||||||
BlackGoldCount uint32 `json:"black_gold_count"` // 黑金数量
|
BlackGoldCount uint32 `json:"black_gold_count"` // 黑金数量
|
||||||
|
PrivilegeCount uint32 `json:"privilege_count"` // 尊享会员数量
|
||||||
//ReportTime string `json:"report_time" gorm:"index"` // 业绩时间
|
//ReportTime string `json:"report_time" gorm:"index"` // 业绩时间
|
||||||
Date string `json:"date" gorm:"index"` // 业绩时间
|
Date string `json:"date" gorm:"index"` // 业绩时间
|
||||||
DeductAmount uint32 `json:"deduct_amount"` // 店员提成
|
DeductAmount uint32 `json:"deduct_amount"` // 店员提成
|
||||||
|
@ -1047,6 +1057,7 @@ type InviteMemberReport struct {
|
||||||
RenewalGoldCountQuarter uint32 `json:"renewal_gold_count_quarter"` // 续费季度黄金会员数量(自动)
|
RenewalGoldCountQuarter uint32 `json:"renewal_gold_count_quarter"` // 续费季度黄金会员数量(自动)
|
||||||
RenewalPlatinumCount uint32 `json:"renewal_platinum_count"` // 续费白金会员数量(自动)
|
RenewalPlatinumCount uint32 `json:"renewal_platinum_count"` // 续费白金会员数量(自动)
|
||||||
RenewalBlackGoldCount uint32 `json:"renewal_black_gold_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"` // 升级:黄金->白金数量(自动)
|
UpgradeGoldToPlatinumCount uint32 `json:"upgrade_gold_to_platinum_count" gorm:"default:0"` // 升级:黄金->白金数量(自动)
|
||||||
UpgradeGoldToBlackCount uint32 `json:"upgrade_gold_to_black_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"` // 升级:白金->黑金数量(自动)
|
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)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return ExportUrl + fileName
|
return config.ExportConfig.Url + fileName
|
||||||
}
|
}
|
||||||
|
|
||||||
// gen:qs
|
// gen:qs
|
||||||
|
@ -1342,7 +1353,7 @@ type UserInviteRecord struct {
|
||||||
StoreId uint64 `json:"store_id"` // 门店id 邀请用户门店
|
StoreId uint64 `json:"store_id"` // 门店id 邀请用户门店
|
||||||
Action uint32 `json:"action"` // 1-未激活 2-激活邀请
|
Action uint32 `json:"action"` // 1-未激活 2-激活邀请
|
||||||
SpendType uint32 `json:"spend_type"` // 1-未开通 2-开通会员 3-续费 4-升级
|
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-黄金半年
|
MemberGenre uint32 `json:"member_genre"` // 会员类型 200-黄金年费 201-黄金季度 202-黄金半年
|
||||||
First uint32 `json:"first"` // 首次
|
First uint32 `json:"first"` // 首次
|
||||||
Scan uint32 `json:"scan"` // 扫码
|
Scan uint32 `json:"scan"` // 扫码
|
||||||
|
@ -1441,7 +1452,7 @@ type NewUserInviteRecordReq struct {
|
||||||
UserTel string `json:"user_tel"` // 用户手机号
|
UserTel string `json:"user_tel"` // 用户手机号
|
||||||
CreateStartTime time.Time `json:"create_start_time"` // 注册小程序时间-开始时间
|
CreateStartTime time.Time `json:"create_start_time"` // 注册小程序时间-开始时间
|
||||||
CreateEndTime time.Time `json:"create_end_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"` // 记录时间-开始时间
|
RecordStartTime time.Time `json:"record_start_time"` // 记录时间-开始时间
|
||||||
RecordEndTime time.Time `json:"record_end_time"` // 记录时间-结束时间
|
RecordEndTime time.Time `json:"record_end_time"` // 记录时间-结束时间
|
||||||
MemberLevel uint32 `json:"member_level"` // 当前类型:10-普通用户 1-普通会员 2-黄金会员 4-白金会员 5-黑金会员
|
MemberLevel uint32 `json:"member_level"` // 当前类型:10-普通用户 1-普通会员 2-黄金会员 4-白金会员 5-黑金会员
|
||||||
|
@ -1457,29 +1468,33 @@ type UserInviteRecordListResp struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type UserInviteRecordListData struct {
|
type UserInviteRecordListData struct {
|
||||||
StoreId uint32 `json:"store_id"` // 邀请人所属门店id
|
StoreId uint32 `json:"store_id"` // 邀请人所属门店id
|
||||||
StoreName string `json:"store_name"` // 邀请人所属门店名称
|
StoreName string `json:"store_name"` // 邀请人所属门店名称
|
||||||
InviteUserName string `json:"invite_user_name"` // 邀请人昵称
|
InviteUserName string `json:"invite_user_name"` // 邀请人昵称
|
||||||
InviteUid uint32 `json:"invite_uid"` // 邀请人ID
|
InviteUid uint32 `json:"invite_uid"` // 邀请人ID
|
||||||
UserUid uint32 `json:"user_uid"` // 用户ID
|
UserUid uint32 `json:"user_uid"` // 用户ID
|
||||||
UserTel string `json:"user_tel"` // 用户手机号
|
UserTel string `json:"user_tel"` // 用户手机号
|
||||||
CreateTime time.Time `json:"create_time"` // 注册小程序时间
|
CreateTime time.Time `json:"create_time"` // 注册小程序时间
|
||||||
RecordType uint32 `json:"record_type"` // 记录类型
|
RecordType uint32 `json:"record_type"` // 记录类型
|
||||||
RecordTime time.Time `json:"record_time"` // 记录时间
|
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"` // 租卡会员到期时间
|
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) {
|
func (m *NewUserInviteRecordReq) NewList(c *gin.Context) (*UserInviteRecordListResp, error) {
|
||||||
resp := new(UserInviteRecordListResp)
|
resp := new(UserInviteRecordListResp)
|
||||||
var records []struct {
|
var records []struct {
|
||||||
UserInviteRecord
|
UserInviteRecord
|
||||||
StoreId uint32
|
StoreId uint32
|
||||||
InviteUserName string
|
InviteUserName string
|
||||||
UserTel string
|
UserTel string
|
||||||
CreateTime time.Time
|
CreateTime time.Time
|
||||||
MemberExpire time.Time
|
MemberExpire time.Time
|
||||||
UserMemberLevel uint32
|
UserMemberLevel uint32
|
||||||
|
PrivilegeMemberExpire time.Time
|
||||||
|
PrivilegeMemberLevel uint32
|
||||||
}
|
}
|
||||||
err := UpdateUserInviteRecordRenewHide()
|
err := UpdateUserInviteRecordRenewHide()
|
||||||
if err != nil {
|
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")
|
qs := orm.Eloquent.Table("user_invite_record").Where("action=2")
|
||||||
countQuery := 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, " +
|
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 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 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").
|
Group("user_invite_record.id").
|
||||||
Order("MAX(user_invite_record.action_time) DESC")
|
Order("MAX(user_invite_record.action_time) DESC")
|
||||||
|
|
||||||
|
@ -1580,50 +1597,55 @@ func (m *NewUserInviteRecordReq) NewList(c *gin.Context) (*UserInviteRecordListR
|
||||||
var recordTypeConditions []string
|
var recordTypeConditions []string
|
||||||
for _, t := range m.RecordType {
|
for _, t := range m.RecordType {
|
||||||
switch t {
|
switch t {
|
||||||
case 1:
|
case 1: // 首次邀请
|
||||||
recordTypeConditions = append(recordTypeConditions, "(first=1 AND spend_type=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)")
|
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)")
|
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)")
|
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)")
|
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)")
|
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)")
|
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)")
|
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)")
|
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)")
|
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)")
|
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)")
|
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)")
|
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)")
|
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)")
|
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))")
|
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))")
|
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)")
|
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))")
|
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))")
|
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
|
if m.IsExport == 1 { // 导出excel
|
||||||
err = qs.Select("user_invite_record.*, B1.nick_name AS InviteUserName, " +
|
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 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 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").
|
Group("user_invite_record.id").
|
||||||
Order("MAX(user_invite_record.action_time) DESC").
|
Order("MAX(user_invite_record.action_time) DESC").
|
||||||
Find(&records).Error
|
Find(&records).Error
|
||||||
|
@ -1669,9 +1693,11 @@ func (m *NewUserInviteRecordReq) NewList(c *gin.Context) (*UserInviteRecordListR
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
err = qs.Select("user_invite_record.*, B1.nick_name AS InviteUserName, " +
|
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 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 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").
|
Group("user_invite_record.id").
|
||||||
Order("MAX(user_invite_record.action_time) DESC").
|
Order("MAX(user_invite_record.action_time) DESC").
|
||||||
Offset(page * pageSize).
|
Offset(page * pageSize).
|
||||||
|
@ -1686,17 +1712,19 @@ func (m *NewUserInviteRecordReq) NewList(c *gin.Context) (*UserInviteRecordListR
|
||||||
var listData []UserInviteRecordListData
|
var listData []UserInviteRecordListData
|
||||||
for _, item := range records {
|
for _, item := range records {
|
||||||
data := UserInviteRecordListData{
|
data := UserInviteRecordListData{
|
||||||
StoreId: item.StoreId,
|
StoreId: item.StoreId,
|
||||||
StoreName: storeMap[item.StoreId],
|
StoreName: storeMap[item.StoreId],
|
||||||
InviteUserName: item.InviteUserName,
|
InviteUserName: item.InviteUserName,
|
||||||
InviteUid: item.FromUid,
|
InviteUid: item.FromUid,
|
||||||
UserUid: item.ToUid,
|
UserUid: item.ToUid,
|
||||||
UserTel: item.UserTel,
|
UserTel: item.UserTel,
|
||||||
CreateTime: item.CreateTime,
|
CreateTime: item.CreateTime,
|
||||||
RecordType: uint32(CalculateMemberType(item.SpendType, item.RenewHide, item.MemberGenre, item.MemberLevel)),
|
RecordType: uint32(CalculateMemberType(item.SpendType, item.RenewHide, item.MemberGenre, item.MemberLevel)),
|
||||||
RecordTime: item.ActionTime,
|
RecordTime: item.ActionTime,
|
||||||
MemberLevel: item.UserMemberLevel,
|
MemberLevel: item.UserMemberLevel,
|
||||||
MemberExpire: item.MemberExpire,
|
MemberExpire: item.MemberExpire,
|
||||||
|
PrivilegeMemberLevel: item.PrivilegeMemberLevel,
|
||||||
|
PrivilegeMemberExpire: item.PrivilegeMemberExpire,
|
||||||
}
|
}
|
||||||
|
|
||||||
if item.FromUid == 0 {
|
if item.FromUid == 0 {
|
||||||
|
@ -1782,6 +1810,8 @@ func getMemberLevelChineseDescription(memberLevel uint32) string {
|
||||||
return "白金会员"
|
return "白金会员"
|
||||||
case 5:
|
case 5:
|
||||||
return "黑金会员"
|
return "黑金会员"
|
||||||
|
case 6:
|
||||||
|
return "尊享会员"
|
||||||
}
|
}
|
||||||
|
|
||||||
return ""
|
return ""
|
||||||
|
@ -1792,7 +1822,7 @@ func userInviteRecordExport(list []UserInviteRecordListData) (string, error) {
|
||||||
file := excelize.NewFile()
|
file := excelize.NewFile()
|
||||||
fSheet := "Sheet1"
|
fSheet := "Sheet1"
|
||||||
|
|
||||||
url := ExportUrl
|
url := config.ExportConfig.Url
|
||||||
fileName := time.Now().Format(TimeFormat) + "会员邀请记录" + ".xlsx"
|
fileName := time.Now().Format(TimeFormat) + "会员邀请记录" + ".xlsx"
|
||||||
fmt.Println("url fileName:", url+fileName)
|
fmt.Println("url fileName:", url+fileName)
|
||||||
|
|
||||||
|
@ -1888,6 +1918,8 @@ func CalculateMemberType(spendType, renewHide, memberGenre, memberLevel uint32)
|
||||||
return OpenAnnualPlatinum
|
return OpenAnnualPlatinum
|
||||||
case 5:
|
case 5:
|
||||||
return OpenAnnualBlack
|
return OpenAnnualBlack
|
||||||
|
case 6:
|
||||||
|
return OpenAnnualPrivilege
|
||||||
}
|
}
|
||||||
case spendType == 3 && renewHide == 0:
|
case spendType == 3 && renewHide == 0:
|
||||||
switch memberLevel {
|
switch memberLevel {
|
||||||
|
@ -1906,6 +1938,8 @@ func CalculateMemberType(spendType, renewHide, memberGenre, memberLevel uint32)
|
||||||
return RenewAnnualPlatinumAuto
|
return RenewAnnualPlatinumAuto
|
||||||
case 5:
|
case 5:
|
||||||
return RenewAnnualBlackAuto
|
return RenewAnnualBlackAuto
|
||||||
|
case 6:
|
||||||
|
return RenewAnnualPrivilegeAuto
|
||||||
}
|
}
|
||||||
case spendType == 4 && renewHide == 0:
|
case spendType == 4 && renewHide == 0:
|
||||||
switch memberLevel {
|
switch memberLevel {
|
||||||
|
@ -2517,7 +2551,7 @@ func ExportUserMemberList(storeId, memberType, cooperativeId uint32, startTime,
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return ExportUrl + fileName
|
return config.ExportConfig.Url + fileName
|
||||||
}
|
}
|
||||||
|
|
||||||
type ExportUserInviteMemberList []UserInviteMember
|
type ExportUserInviteMemberList []UserInviteMember
|
||||||
|
@ -2782,6 +2816,7 @@ func (m *CooperativeBusiness) UserInviteReport(userInfo UserInfo) {
|
||||||
GoldCountQuarter: 0,
|
GoldCountQuarter: 0,
|
||||||
PlatinumCount: 0,
|
PlatinumCount: 0,
|
||||||
BlackGoldCount: 0,
|
BlackGoldCount: 0,
|
||||||
|
PrivilegeCount: 0,
|
||||||
Date: reportTime,
|
Date: reportTime,
|
||||||
DeductAmount: 0,
|
DeductAmount: 0,
|
||||||
CooperativeBusinessId: userInfo.CooperativeBusinessId,
|
CooperativeBusinessId: userInfo.CooperativeBusinessId,
|
||||||
|
@ -2794,6 +2829,7 @@ func (m *CooperativeBusiness) UserInviteReport(userInfo UserInfo) {
|
||||||
RenewalGoldCountQuarter: 0,
|
RenewalGoldCountQuarter: 0,
|
||||||
RenewalPlatinumCount: 0,
|
RenewalPlatinumCount: 0,
|
||||||
RenewalBlackGoldCount: 0,
|
RenewalBlackGoldCount: 0,
|
||||||
|
RenewalPrivilegeCount: 0,
|
||||||
UpgradeGoldToPlatinumCount: 0,
|
UpgradeGoldToPlatinumCount: 0,
|
||||||
UpgradeGoldToBlackCount: 0,
|
UpgradeGoldToBlackCount: 0,
|
||||||
UpgradePlatinumToBlackCount: 0,
|
UpgradePlatinumToBlackCount: 0,
|
||||||
|
@ -2997,7 +3033,7 @@ func inviteMemberReport(list []InviteMemberReport) (string, error) {
|
||||||
file := excelize.NewFile()
|
file := excelize.NewFile()
|
||||||
fSheet := "Sheet1"
|
fSheet := "Sheet1"
|
||||||
|
|
||||||
url := ExportUrl
|
url := config.ExportConfig.Url
|
||||||
fileName := time.Now().Format(TimeFormat) + "店员绩效" + ".xlsx"
|
fileName := time.Now().Format(TimeFormat) + "店员绩效" + ".xlsx"
|
||||||
fmt.Println("url fileName:", url+fileName)
|
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 {
|
if err := file.SaveAs("/www/server/images/export/" + fileName); err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
return ExportUrl + fileName, nil
|
return config.ExportConfig.Url + fileName, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func UserInviteRecordListSetAssistantName(records []UserInviteRecord) {
|
func UserInviteRecordListSetAssistantName(records []UserInviteRecord) {
|
||||||
|
@ -3915,7 +3951,7 @@ func UpdateExpireMemberLevel() {
|
||||||
|
|
||||||
for i, _ := range users {
|
for i, _ := range users {
|
||||||
if err = orm.Eloquent.Model(&UserInfo{}).Where("id = ?", users[i].ID).Updates(map[string]interface{}{
|
if err = orm.Eloquent.Model(&UserInfo{}).Where("id = ?", users[i].ID).Updates(map[string]interface{}{
|
||||||
"member_level": 1,
|
"member_level": MemberLevelUser,
|
||||||
}).Error; err != nil {
|
}).Error; err != nil {
|
||||||
logger.Errorf("UpdateExpireMemberLevel err,", err.Error())
|
logger.Errorf("UpdateExpireMemberLevel err,", err.Error())
|
||||||
continue
|
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 通过手机号获取用户信息
|
// GetUserInfoByTel 通过手机号获取用户信息
|
||||||
func GetUserInfoByTel(tel string) (UserInfo, error) {
|
func GetUserInfoByTel(tel string) (UserInfo, error) {
|
||||||
var userInfo UserInfo
|
var userInfo UserInfo
|
||||||
|
@ -3955,3 +4016,415 @@ func IsInMemberLevels(memberLevel uint32) bool {
|
||||||
}
|
}
|
||||||
return false
|
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("/invite_derive", usermanage.ExportDataUser)
|
||||||
userInfo.POST("/mark", usermanage.MarkUser)
|
userInfo.POST("/mark", usermanage.MarkUser)
|
||||||
userInfo.POST("/tel", usermanage.TelList)
|
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/list", usermanage.GroupSendMessageCreateTemplateList)
|
||||||
groupSendMessage.POST("template/add", usermanage.GroupSendMessageCreateTemplate)
|
groupSendMessage.POST("template/add", usermanage.GroupSendMessageCreateTemplate)
|
||||||
|
groupSendMessage.POST("template/edit", usermanage.GroupSendMessageEditTemplate)
|
||||||
groupSendMessage.POST("/send", usermanage.GroupSendMessage)
|
groupSendMessage.POST("/send", usermanage.GroupSendMessage)
|
||||||
groupSendMessage.POST("template/del", usermanage.GroupSendMessageCreateTemplateDel)
|
groupSendMessage.POST("template/del", usermanage.GroupSendMessageCreateTemplateDel)
|
||||||
}
|
}
|
||||||
|
|
|
@ -138,27 +138,38 @@ func run() error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("err:", err)
|
fmt.Println("err:", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新过期用户的当前会员等级-20240308添加
|
// 更新过期用户的当前会员等级-20240308添加
|
||||||
err = s.Every(1).Day().At("00:05").Do(models.UpdateExpireMemberLevel)
|
err = s.Every(1).Day().At("00:05").Do(models.UpdateExpireMemberLevel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("err:", err)
|
fmt.Println("err:", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 用户邀请用户报表
|
// 用户邀请用户报表
|
||||||
//err = s.Every(1).Day().At("00:00").Do(models.CreateInviteMemberReport)
|
//err = s.Every(1).Day().At("00:00").Do(models.CreateInviteMemberReport)
|
||||||
err = s.Every(1).Day().At("00:10").Do(models.CreateInviteMemberReport)
|
err = s.Every(1).Day().At("00:10").Do(models.CreateInviteMemberReport)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("err:", err)
|
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)
|
err = s.Every(1).Day().At("19:00").Do(models.SendMessageMemberRenewal)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("err:", err)
|
fmt.Println("err:", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 管理端首页
|
// 管理端首页
|
||||||
err = s.Every(1).Day().At("1:00").Do(models.IndexMemberStatistic)
|
err = s.Every(1).Day().At("1:00").Do(models.IndexMemberStatistic)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("err:", err)
|
fmt.Println("err:", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 卡带回收自动取消
|
// 卡带回收自动取消
|
||||||
err = s.Every(10).Minutes().Do(models.RecycleCardOrderStateUpdate)
|
err = s.Every(10).Minutes().Do(models.RecycleCardOrderStateUpdate)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -52,6 +52,6 @@ settings:
|
||||||
|
|
||||||
export:
|
export:
|
||||||
path: /Users/max/Documents/
|
path: /Users/max/Documents/
|
||||||
url: http://39.108.188.218:8000/img/export/
|
url: /Users/max/Documents/
|
||||||
# path: /www/server/images/export/
|
# path: /www/server/images/export/
|
||||||
# url: https://dev.admin.deovo.com/load/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": {
|
"/api/v1/user_info/tel": {
|
||||||
"post": {
|
"post": {
|
||||||
"consumes": [
|
"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": {
|
"models.AssistantInviteMemberReportListResp": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
@ -6658,6 +6786,18 @@ const docTemplate = `{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"models.CancelPrivilegeMembersReq": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"uid"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"uid": {
|
||||||
|
"description": "用户ID",
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"models.CannibalizeStockTask": {
|
"models.CannibalizeStockTask": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
@ -7353,6 +7493,10 @@ const docTemplate = `{
|
||||||
"description": "白金会员数量",
|
"description": "白金会员数量",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
|
"privilege_count": {
|
||||||
|
"description": "尊享会员数量",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
"renewal_black_gold_count": {
|
"renewal_black_gold_count": {
|
||||||
"description": "续费黑金会员数量",
|
"description": "续费黑金会员数量",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
|
@ -7365,6 +7509,10 @@ const docTemplate = `{
|
||||||
"description": "续费白金会员数量",
|
"description": "续费白金会员数量",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
|
"renewal_privilege_count": {
|
||||||
|
"description": "续费尊享会员数量",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
"store": {
|
"store": {
|
||||||
"$ref": "#/definitions/models.Store"
|
"$ref": "#/definitions/models.Store"
|
||||||
},
|
},
|
||||||
|
@ -7640,6 +7788,10 @@ const docTemplate = `{
|
||||||
"description": "采购进货",
|
"description": "采购进货",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
|
"system_in": {
|
||||||
|
"description": "系统入库",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
"system_out": {
|
"system_out": {
|
||||||
"description": "系统出库",
|
"description": "系统出库",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
|
@ -7709,6 +7861,10 @@ const docTemplate = `{
|
||||||
"description": "采购进货",
|
"description": "采购进货",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
|
"total_system_in": {
|
||||||
|
"description": "系统入库",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
"total_system_out": {
|
"total_system_out": {
|
||||||
"description": "系统出库",
|
"description": "系统出库",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
|
@ -7759,6 +7915,10 @@ const docTemplate = `{
|
||||||
"description": "主供应商名称",
|
"description": "主供应商名称",
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
|
"img": {
|
||||||
|
"description": "图片",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
"last_wholesale_price": {
|
"last_wholesale_price": {
|
||||||
"description": "最近采购价",
|
"description": "最近采购价",
|
||||||
"type": "number"
|
"type": "number"
|
||||||
|
@ -9204,7 +9364,6 @@ const docTemplate = `{
|
||||||
"salesman",
|
"salesman",
|
||||||
"store_id",
|
"store_id",
|
||||||
"store_name",
|
"store_name",
|
||||||
"tel",
|
|
||||||
"total_count"
|
"total_count"
|
||||||
],
|
],
|
||||||
"properties": {
|
"properties": {
|
||||||
|
@ -13192,6 +13351,10 @@ const docTemplate = `{
|
||||||
"description": "白金会员提成",
|
"description": "白金会员提成",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
|
"privilege_count": {
|
||||||
|
"description": "尊享会员数量",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
"renewal_black_gold_count": {
|
"renewal_black_gold_count": {
|
||||||
"description": "续费黑金会员数量(自动)",
|
"description": "续费黑金会员数量(自动)",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
|
@ -13212,6 +13375,10 @@ const docTemplate = `{
|
||||||
"description": "续费白金会员数量(自动)",
|
"description": "续费白金会员数量(自动)",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
|
"renewal_privilege_count": {
|
||||||
|
"description": "续费尊享会员数量",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
"store_id": {
|
"store_id": {
|
||||||
"description": "门店id",
|
"description": "门店id",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
|
@ -13582,7 +13749,7 @@ const docTemplate = `{
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"record_type": {
|
"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",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
"type": "integer"
|
"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": {
|
"models.ProductInventoryAddReq": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
|
@ -16829,7 +17173,15 @@ const docTemplate = `{
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"member_level": {
|
"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"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"record_time": {
|
"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": {
|
"/api/v1/user_info/tel": {
|
||||||
"post": {
|
"post": {
|
||||||
"consumes": [
|
"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": {
|
"models.AssistantInviteMemberReportListResp": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
@ -6647,6 +6775,18 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"models.CancelPrivilegeMembersReq": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"uid"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"uid": {
|
||||||
|
"description": "用户ID",
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"models.CannibalizeStockTask": {
|
"models.CannibalizeStockTask": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
@ -7342,6 +7482,10 @@
|
||||||
"description": "白金会员数量",
|
"description": "白金会员数量",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
|
"privilege_count": {
|
||||||
|
"description": "尊享会员数量",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
"renewal_black_gold_count": {
|
"renewal_black_gold_count": {
|
||||||
"description": "续费黑金会员数量",
|
"description": "续费黑金会员数量",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
|
@ -7354,6 +7498,10 @@
|
||||||
"description": "续费白金会员数量",
|
"description": "续费白金会员数量",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
|
"renewal_privilege_count": {
|
||||||
|
"description": "续费尊享会员数量",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
"store": {
|
"store": {
|
||||||
"$ref": "#/definitions/models.Store"
|
"$ref": "#/definitions/models.Store"
|
||||||
},
|
},
|
||||||
|
@ -7629,6 +7777,10 @@
|
||||||
"description": "采购进货",
|
"description": "采购进货",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
|
"system_in": {
|
||||||
|
"description": "系统入库",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
"system_out": {
|
"system_out": {
|
||||||
"description": "系统出库",
|
"description": "系统出库",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
|
@ -7698,6 +7850,10 @@
|
||||||
"description": "采购进货",
|
"description": "采购进货",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
|
"total_system_in": {
|
||||||
|
"description": "系统入库",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
"total_system_out": {
|
"total_system_out": {
|
||||||
"description": "系统出库",
|
"description": "系统出库",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
|
@ -7748,6 +7904,10 @@
|
||||||
"description": "主供应商名称",
|
"description": "主供应商名称",
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
|
"img": {
|
||||||
|
"description": "图片",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
"last_wholesale_price": {
|
"last_wholesale_price": {
|
||||||
"description": "最近采购价",
|
"description": "最近采购价",
|
||||||
"type": "number"
|
"type": "number"
|
||||||
|
@ -9193,7 +9353,6 @@
|
||||||
"salesman",
|
"salesman",
|
||||||
"store_id",
|
"store_id",
|
||||||
"store_name",
|
"store_name",
|
||||||
"tel",
|
|
||||||
"total_count"
|
"total_count"
|
||||||
],
|
],
|
||||||
"properties": {
|
"properties": {
|
||||||
|
@ -13181,6 +13340,10 @@
|
||||||
"description": "白金会员提成",
|
"description": "白金会员提成",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
|
"privilege_count": {
|
||||||
|
"description": "尊享会员数量",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
"renewal_black_gold_count": {
|
"renewal_black_gold_count": {
|
||||||
"description": "续费黑金会员数量(自动)",
|
"description": "续费黑金会员数量(自动)",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
|
@ -13201,6 +13364,10 @@
|
||||||
"description": "续费白金会员数量(自动)",
|
"description": "续费白金会员数量(自动)",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
|
"renewal_privilege_count": {
|
||||||
|
"description": "续费尊享会员数量",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
"store_id": {
|
"store_id": {
|
||||||
"description": "门店id",
|
"description": "门店id",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
|
@ -13571,7 +13738,7 @@
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"record_type": {
|
"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",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
"type": "integer"
|
"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": {
|
"models.ProductInventoryAddReq": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
|
@ -16818,7 +17162,15 @@
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"member_level": {
|
"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"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"record_time": {
|
"record_time": {
|
||||||
|
|
|
@ -270,6 +270,25 @@ definitions:
|
||||||
required:
|
required:
|
||||||
- id
|
- id
|
||||||
type: object
|
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:
|
models.AssistantInviteMemberReportListResp:
|
||||||
properties:
|
properties:
|
||||||
export_url:
|
export_url:
|
||||||
|
@ -348,6 +367,14 @@ definitions:
|
||||||
required:
|
required:
|
||||||
- print_list_info
|
- print_list_info
|
||||||
type: object
|
type: object
|
||||||
|
models.CancelPrivilegeMembersReq:
|
||||||
|
properties:
|
||||||
|
uid:
|
||||||
|
description: 用户ID
|
||||||
|
type: integer
|
||||||
|
required:
|
||||||
|
- uid
|
||||||
|
type: object
|
||||||
models.CannibalizeStockTask:
|
models.CannibalizeStockTask:
|
||||||
properties:
|
properties:
|
||||||
count:
|
count:
|
||||||
|
@ -854,6 +881,9 @@ definitions:
|
||||||
platinum_count:
|
platinum_count:
|
||||||
description: 白金会员数量
|
description: 白金会员数量
|
||||||
type: integer
|
type: integer
|
||||||
|
privilege_count:
|
||||||
|
description: 尊享会员数量
|
||||||
|
type: integer
|
||||||
renewal_black_gold_count:
|
renewal_black_gold_count:
|
||||||
description: 续费黑金会员数量
|
description: 续费黑金会员数量
|
||||||
type: integer
|
type: integer
|
||||||
|
@ -863,6 +893,9 @@ definitions:
|
||||||
renewal_platinum_count:
|
renewal_platinum_count:
|
||||||
description: 续费白金会员数量
|
description: 续费白金会员数量
|
||||||
type: integer
|
type: integer
|
||||||
|
renewal_privilege_count:
|
||||||
|
description: 续费尊享会员数量
|
||||||
|
type: integer
|
||||||
store:
|
store:
|
||||||
$ref: '#/definitions/models.Store'
|
$ref: '#/definitions/models.Store'
|
||||||
store_id:
|
store_id:
|
||||||
|
@ -1063,6 +1096,9 @@ definitions:
|
||||||
purchase_stock:
|
purchase_stock:
|
||||||
description: 采购进货
|
description: 采购进货
|
||||||
type: integer
|
type: integer
|
||||||
|
system_in:
|
||||||
|
description: 系统入库
|
||||||
|
type: integer
|
||||||
system_out:
|
system_out:
|
||||||
description: 系统出库
|
description: 系统出库
|
||||||
type: integer
|
type: integer
|
||||||
|
@ -1114,6 +1150,9 @@ definitions:
|
||||||
total_purchase_stock:
|
total_purchase_stock:
|
||||||
description: 采购进货
|
description: 采购进货
|
||||||
type: integer
|
type: integer
|
||||||
|
total_system_in:
|
||||||
|
description: 系统入库
|
||||||
|
type: integer
|
||||||
total_system_out:
|
total_system_out:
|
||||||
description: 系统出库
|
description: 系统出库
|
||||||
type: integer
|
type: integer
|
||||||
|
@ -1150,6 +1189,9 @@ definitions:
|
||||||
erp_supplier_name:
|
erp_supplier_name:
|
||||||
description: 主供应商名称
|
description: 主供应商名称
|
||||||
type: string
|
type: string
|
||||||
|
img:
|
||||||
|
description: 图片
|
||||||
|
type: string
|
||||||
last_wholesale_price:
|
last_wholesale_price:
|
||||||
description: 最近采购价
|
description: 最近采购价
|
||||||
type: number
|
type: number
|
||||||
|
@ -2255,7 +2297,6 @@ definitions:
|
||||||
- salesman
|
- salesman
|
||||||
- store_id
|
- store_id
|
||||||
- store_name
|
- store_name
|
||||||
- tel
|
|
||||||
- total_count
|
- total_count
|
||||||
type: object
|
type: object
|
||||||
models.ErpOrderDeleteReq:
|
models.ErpOrderDeleteReq:
|
||||||
|
@ -5092,6 +5133,9 @@ definitions:
|
||||||
platinum_deduct:
|
platinum_deduct:
|
||||||
description: 白金会员提成
|
description: 白金会员提成
|
||||||
type: integer
|
type: integer
|
||||||
|
privilege_count:
|
||||||
|
description: 尊享会员数量
|
||||||
|
type: integer
|
||||||
renewal_black_gold_count:
|
renewal_black_gold_count:
|
||||||
description: 续费黑金会员数量(自动)
|
description: 续费黑金会员数量(自动)
|
||||||
type: integer
|
type: integer
|
||||||
|
@ -5107,6 +5151,9 @@ definitions:
|
||||||
renewal_platinum_count:
|
renewal_platinum_count:
|
||||||
description: 续费白金会员数量(自动)
|
description: 续费白金会员数量(自动)
|
||||||
type: integer
|
type: integer
|
||||||
|
renewal_privilege_count:
|
||||||
|
description: 续费尊享会员数量
|
||||||
|
type: integer
|
||||||
store_id:
|
store_id:
|
||||||
description: 门店id
|
description: 门店id
|
||||||
type: integer
|
type: integer
|
||||||
|
@ -5369,7 +5416,8 @@ definitions:
|
||||||
type: string
|
type: string
|
||||||
record_type:
|
record_type:
|
||||||
description: 记录类型 1-首次邀请,2-开通年费黄金,3-开通季度黄金,4-开通半年黄金, 5-开通年费白金,6-开通年费黑金,7-续费年费黄金(干预),8-续费年费白金(干预),9-续费年费黑金(干预),10-续费年费黄金(自动),
|
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:
|
items:
|
||||||
type: integer
|
type: integer
|
||||||
type: array
|
type: array
|
||||||
|
@ -5771,6 +5819,134 @@ definitions:
|
||||||
description: 更新时间
|
description: 更新时间
|
||||||
type: string
|
type: string
|
||||||
type: object
|
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:
|
models.ProductInventoryAddReq:
|
||||||
properties:
|
properties:
|
||||||
commodities:
|
commodities:
|
||||||
|
@ -7714,11 +7890,17 @@ definitions:
|
||||||
description: 邀请人昵称
|
description: 邀请人昵称
|
||||||
type: string
|
type: string
|
||||||
member_level:
|
member_level:
|
||||||
description: 会员等级:1-普通 2-黄金 4-白金 5-黑金
|
description: 当前租卡会员类型:1-普通 2-黄金 4-白金 5-黑金
|
||||||
type: integer
|
type: integer
|
||||||
memberExpire:
|
memberExpire:
|
||||||
description: 租卡会员到期时间
|
description: 租卡会员到期时间
|
||||||
type: string
|
type: string
|
||||||
|
privilege_member_level:
|
||||||
|
description: 当前尊享会员类型:1-普通 6-尊享会员
|
||||||
|
type: integer
|
||||||
|
privilege_memberExpire:
|
||||||
|
description: 尊享会员到期时间
|
||||||
|
type: string
|
||||||
record_time:
|
record_time:
|
||||||
description: 记录时间
|
description: 记录时间
|
||||||
type: string
|
type: string
|
||||||
|
@ -11904,6 +12086,72 @@ paths:
|
||||||
tags:
|
tags:
|
||||||
- 会员管理
|
- 会员管理
|
||||||
- V1.2.0
|
- 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:
|
/api/v1/user_info/tel:
|
||||||
post:
|
post:
|
||||||
consumes:
|
consumes:
|
||||||
|
|
|
@ -120,7 +120,7 @@ func InitDBTest() {
|
||||||
// "mh_pro", "fLeytnBFCRB553ab", "39.108.188.218", "3306",
|
// "mh_pro", "fLeytnBFCRB553ab", "39.108.188.218", "3306",
|
||||||
// "mh_pro")
|
// "mh_pro")
|
||||||
dialect := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
|
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")
|
"mh_dev")
|
||||||
|
|
||||||
DBTest, err = gorm.Open("mysql", dialect)
|
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