969 lines
31 KiB
Go
969 lines
31 KiB
Go
package cooperativemanage
|
||
|
||
import (
|
||
"errors"
|
||
"fmt"
|
||
"github.com/gin-gonic/gin"
|
||
"go-admin/app/admin/models"
|
||
orm "go-admin/common/global"
|
||
"go-admin/logger"
|
||
"go-admin/pkg/jwtauth"
|
||
"go-admin/tools"
|
||
"go-admin/tools/app"
|
||
"net/http"
|
||
"time"
|
||
)
|
||
|
||
// CooperativeBusinessList 查看供应商列表
|
||
// @Summary 查看供应商列表
|
||
// @Tags 合作商, v1.2.0
|
||
// @Produce json
|
||
// @Accept json
|
||
// @Param request body models.CooperativeBusinessListReq true "查看供应商列表模型"
|
||
// @Success 200 {object} models.CooperativeBusinessListResp
|
||
// @Router /api/v1/cooperative/list [post]
|
||
func CooperativeBusinessList(c *gin.Context) {
|
||
req := &models.CooperativeBusinessListReq{}
|
||
if c.ShouldBindJSON(req) != nil {
|
||
logger.Errorf("para err")
|
||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||
return
|
||
}
|
||
|
||
list, count, err := req.List()
|
||
if err != nil {
|
||
logger.Errorf("err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "查询失败")
|
||
return
|
||
}
|
||
|
||
ret := models.CooperativeBusinessListResp{
|
||
Count: count,
|
||
List: list,
|
||
PageIndex: req.Page,
|
||
TotalPage: req.PageSize,
|
||
}
|
||
|
||
app.OK(c, ret, "")
|
||
return
|
||
}
|
||
|
||
type CooperativeMemberDeductReq struct {
|
||
CooperativeBusinessId uint32 `json:"cooperative_business_id" binding:"required"`
|
||
GoldDeduct uint32 `json:"gold_deduct" binding:"required"` // 黄金会员提成
|
||
PlatinumDeduct uint32 `json:"platinum_deduct" binding:"required"` // 白金会员提成
|
||
BlackGoldDeduct uint32 `json:"black_gold_deduct" binding:"required"` // 黑金金会员提成
|
||
// cooperative_member_deduct
|
||
}
|
||
|
||
// CooperativeAdd 新增供应商
|
||
// @Summary 新增供应商
|
||
// @Tags 合作商, v1.2.0
|
||
// @Produce json
|
||
// @Accept json
|
||
// @Param request body models.CooperativeBusiness true "新增供应商模型"
|
||
// @Success 200 {object} app.Response
|
||
// @Router /api/v1/cooperative/add [post]
|
||
func CooperativeAdd(c *gin.Context) {
|
||
req := &models.CooperativeBusiness{}
|
||
if err := c.ShouldBindJSON(req); err != nil {
|
||
logger.Errorf("para err", err)
|
||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||
return
|
||
}
|
||
|
||
req.AddTime = time.Now()
|
||
err := orm.Eloquent.Create(req).Error
|
||
if err != nil {
|
||
logger.Errorf("err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "添加失败")
|
||
return
|
||
}
|
||
deduct := &models.CooperativeMemberDeduct{
|
||
CooperativeBusinessId: req.ID,
|
||
GoldDeduct: req.CooperativeMemberDeduct.GoldDeduct,
|
||
PlatinumDeduct: req.CooperativeMemberDeduct.PlatinumDeduct,
|
||
BlackGoldDeduct: req.CooperativeMemberDeduct.BlackGoldDeduct,
|
||
RenewalGoldDeduct: req.CooperativeMemberDeduct.RenewalGoldDeduct,
|
||
RenewalPlatinumDeduct: req.CooperativeMemberDeduct.RenewalPlatinumDeduct,
|
||
RenewalBlackGoldDeduct: req.CooperativeMemberDeduct.RenewalBlackGoldDeduct,
|
||
}
|
||
err = orm.Eloquent.Create(deduct).Error
|
||
if err != nil {
|
||
logger.Errorf("create cooperative member deduct err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "添加失败")
|
||
return
|
||
}
|
||
|
||
app.OK(c, nil, "添加成功")
|
||
return
|
||
}
|
||
|
||
// CooperativeEdit 编辑供应商
|
||
// @Summary 编辑供应商
|
||
// @Tags 合作商, v1.2.0
|
||
// @Produce json
|
||
// @Accept json
|
||
// @Param request body models.CooperativeBusiness true "编辑供应商模型"
|
||
// @Success 200 {object} app.Response
|
||
// @Router /api/v1/cooperative/edit [post]
|
||
func CooperativeEdit(c *gin.Context) {
|
||
req := &models.CooperativeBusiness{}
|
||
if err := c.ShouldBindJSON(req); err != nil {
|
||
logger.Errorf("para err", err)
|
||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||
return
|
||
}
|
||
|
||
req.AddTime = time.Now()
|
||
err := orm.Eloquent.Model(&models.CooperativeBusiness{}).Where("id = ?", req.ID).Updates(req).Error
|
||
if err != nil {
|
||
logger.Errorf("edit cooperative err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "更新失败")
|
||
return
|
||
}
|
||
|
||
app.OK(c, nil, "添加成功")
|
||
return
|
||
}
|
||
|
||
func CooperativeMemberPromotionList(c *gin.Context) {
|
||
req := &models.CooperativeMemberPromotionReq{}
|
||
if c.ShouldBindJSON(req) != nil {
|
||
logger.Errorf("para err")
|
||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||
return
|
||
}
|
||
|
||
list, count, err := req.List()
|
||
if err != nil {
|
||
logger.Errorf("err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "查询失败")
|
||
return
|
||
}
|
||
|
||
ret := map[string]interface{}{
|
||
"count": count,
|
||
"list": list,
|
||
"pageIndex": req.Page,
|
||
}
|
||
app.OK(c, ret, "")
|
||
return
|
||
}
|
||
|
||
func CooperativeMemberPromotionStoreList(c *gin.Context) {
|
||
req := &models.CooperativeMemberPromotionStoreReq{}
|
||
if c.ShouldBindJSON(req) != nil {
|
||
logger.Errorf("para err")
|
||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||
return
|
||
}
|
||
|
||
list, count, err := req.List()
|
||
if err != nil {
|
||
logger.Errorf("err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "查询失败")
|
||
return
|
||
}
|
||
|
||
ret := map[string]interface{}{
|
||
"count": count,
|
||
"list": list,
|
||
"pageIndex": req.Page,
|
||
}
|
||
app.OK(c, ret, "")
|
||
return
|
||
}
|
||
|
||
func CooperativeMemberPromotionDayList(c *gin.Context) {
|
||
req := &models.CooperativeMemberPromotionDayReq{}
|
||
if c.ShouldBindJSON(req) != nil {
|
||
logger.Errorf("para err")
|
||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||
return
|
||
}
|
||
|
||
list, count, err := req.List()
|
||
if err != nil {
|
||
logger.Errorf("err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "查询失败")
|
||
return
|
||
}
|
||
|
||
ret := map[string]interface{}{
|
||
"count": count,
|
||
"list": list,
|
||
"pageIndex": req.Page,
|
||
}
|
||
app.OK(c, ret, "")
|
||
return
|
||
}
|
||
|
||
func CooperativeMemberPromotionStoreDayList(c *gin.Context) {
|
||
req := &models.CooperativeMemberPromotionStoreDayReq{}
|
||
if c.ShouldBindJSON(req) != nil {
|
||
logger.Errorf("para err")
|
||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||
return
|
||
}
|
||
|
||
list, count, err := req.List()
|
||
if err != nil {
|
||
logger.Errorf("err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "查询失败")
|
||
return
|
||
}
|
||
|
||
ret := map[string]interface{}{
|
||
"count": count,
|
||
"list": list,
|
||
"pageIndex": req.Page,
|
||
}
|
||
app.OK(c, ret, "")
|
||
return
|
||
}
|
||
|
||
// CooperativeMemberPromotionStatisticList 租卡会员统计
|
||
// @Summary 租卡会员统计
|
||
// @Tags 会员管理, V1.2.0
|
||
// @Produce json
|
||
// @Accept json
|
||
// @Param request body models.CooperativeMemberPromotionStatisticReq true "租卡会员统计模型"
|
||
// @Success 200 {object} models.CooperativeMemberPromotionStatisticListResp
|
||
// @Router /api/v1/cooperative/member_promotion_statistic/list [post]
|
||
func CooperativeMemberPromotionStatisticList(c *gin.Context) {
|
||
req := &models.CooperativeMemberPromotionStatisticReq{}
|
||
if c.ShouldBindJSON(req) != nil {
|
||
logger.Errorf("para err")
|
||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||
return
|
||
}
|
||
|
||
list, count, err := req.List()
|
||
if err != nil {
|
||
logger.Errorf("err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "查询失败")
|
||
return
|
||
}
|
||
|
||
ret := models.CooperativeMemberPromotionStatisticListResp{
|
||
Count: count,
|
||
PageIndex: req.Page,
|
||
List: list,
|
||
}
|
||
|
||
app.OK(c, ret, "")
|
||
return
|
||
}
|
||
|
||
func CooperativeMemberPromotionSettleInfo(c *gin.Context) {
|
||
req := &struct {
|
||
CooperativeMemberPromotionId uint32 `json:"cooperative_member_promotion_id"`
|
||
CooperativeBusinessId uint32 `json:"cooperative_business_id"`
|
||
}{}
|
||
if c.ShouldBindJSON(req) != nil {
|
||
logger.Errorf("para err")
|
||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||
return
|
||
}
|
||
|
||
var memberPromotion models.CooperativeMemberPromotion
|
||
err := orm.Eloquent.Table("").Where("id=?", req.CooperativeMemberPromotionId).Find(&memberPromotion).Error
|
||
if err != nil {
|
||
logger.Errorf("cooperative member promotion err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "结算错误")
|
||
return
|
||
}
|
||
if memberPromotion.CooperativeBusinessId != req.CooperativeBusinessId {
|
||
logger.Errorf("cooperative business id err:")
|
||
app.Error(c, http.StatusInternalServerError, errors.New("cooperative business id err"), "结算错误")
|
||
return
|
||
}
|
||
cooperative := new(models.CooperativeBusiness)
|
||
cooperative.ID = memberPromotion.CooperativeBusinessId
|
||
cooperative.SetMemberDeductConfig()
|
||
|
||
if memberPromotion.State != models.PromotionStateUnSettlement {
|
||
logger.Errorf("cooperative member promotion state err:")
|
||
app.Error(c, http.StatusInternalServerError, err, "结算错误")
|
||
return
|
||
}
|
||
|
||
if cooperative.CooperativeMemberDeduct == nil {
|
||
logger.Errorf("cooperative member deduct nil:")
|
||
app.Error(c, http.StatusInternalServerError, err, "结算错误")
|
||
return
|
||
}
|
||
memberPromotion.GoldDeduct = cooperative.CooperativeMemberDeduct.GoldDeduct
|
||
memberPromotion.PlatinumDeduct = cooperative.CooperativeMemberDeduct.PlatinumDeduct
|
||
memberPromotion.BlackGoldDeduct = cooperative.CooperativeMemberDeduct.BlackGoldDeduct
|
||
|
||
memberPromotion.RenewalGoldDeduct = cooperative.CooperativeMemberDeduct.RenewalGoldDeduct
|
||
memberPromotion.RenewalPlatinumDeduct = cooperative.CooperativeMemberDeduct.RenewalPlatinumDeduct
|
||
memberPromotion.RenewalBlackGoldDeduct = cooperative.CooperativeMemberDeduct.RenewalBlackGoldDeduct
|
||
|
||
memberPromotion.DeductAmount += memberPromotion.GoldCount * memberPromotion.GoldDeduct
|
||
memberPromotion.DeductAmount += memberPromotion.PlatinumCount * memberPromotion.PlatinumDeduct
|
||
memberPromotion.DeductAmount += memberPromotion.BlackGoldCount * memberPromotion.BlackGoldDeduct
|
||
|
||
memberPromotion.DeductAmount += memberPromotion.RenewalGoldCount * memberPromotion.RenewalGoldDeduct
|
||
memberPromotion.DeductAmount += memberPromotion.RenewalPlatinumCount * memberPromotion.RenewalPlatinumDeduct
|
||
memberPromotion.DeductAmount += memberPromotion.RenewalBlackGoldCount * memberPromotion.RenewalBlackGoldDeduct
|
||
|
||
app.OK(c, memberPromotion, "")
|
||
return
|
||
}
|
||
|
||
func CooperativeMemberPromotionSettleConfirm(c *gin.Context) {
|
||
req := &struct {
|
||
CooperativeMemberPromotionId uint32 `json:"cooperative_member_promotion_id"`
|
||
CooperativeBusinessId uint32 `json:"cooperative_business_id"`
|
||
}{}
|
||
if c.ShouldBindJSON(req) != nil {
|
||
logger.Errorf("para err")
|
||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||
return
|
||
}
|
||
|
||
var memberPromotion models.CooperativeMemberPromotion
|
||
err := orm.Eloquent.Table("").Where("id=?", req.CooperativeMemberPromotionId).Find(&memberPromotion).Error
|
||
if err != nil {
|
||
logger.Errorf("cooperative member promotion err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "结算错误")
|
||
return
|
||
}
|
||
if memberPromotion.CooperativeBusinessId != req.CooperativeBusinessId {
|
||
logger.Errorf("cooperative business id err:")
|
||
app.Error(c, http.StatusInternalServerError, errors.New("cooperative business id err"), "结算错误")
|
||
return
|
||
}
|
||
// TODO
|
||
//if memberPromotion.Date != models.MonthDateAdd(-1) {
|
||
// logger.Errorf("settle date err:")
|
||
// app.Error(c, http.StatusInternalServerError, errors.New("settle date err"), "结算错误")
|
||
// return
|
||
//}
|
||
|
||
cooperative := new(models.CooperativeBusiness)
|
||
cooperative.ID = memberPromotion.CooperativeBusinessId
|
||
cooperative.SetMemberDeductConfig()
|
||
|
||
if memberPromotion.State != models.PromotionStateUnSettlement {
|
||
logger.Errorf("cooperative member promotion state err:")
|
||
app.Error(c, http.StatusInternalServerError, err, "结算错误")
|
||
return
|
||
}
|
||
|
||
if cooperative.CooperativeMemberDeduct == nil {
|
||
logger.Errorf("cooperative member deduct nil:")
|
||
app.Error(c, http.StatusInternalServerError, err, "结算错误")
|
||
return
|
||
}
|
||
memberPromotion.GoldDeduct = cooperative.CooperativeMemberDeduct.GoldDeduct
|
||
memberPromotion.PlatinumDeduct = cooperative.CooperativeMemberDeduct.PlatinumDeduct
|
||
memberPromotion.BlackGoldDeduct = cooperative.CooperativeMemberDeduct.BlackGoldDeduct
|
||
|
||
memberPromotion.RenewalGoldDeduct = cooperative.CooperativeMemberDeduct.RenewalGoldDeduct
|
||
memberPromotion.RenewalPlatinumDeduct = cooperative.CooperativeMemberDeduct.RenewalPlatinumDeduct
|
||
memberPromotion.RenewalBlackGoldDeduct = cooperative.CooperativeMemberDeduct.RenewalBlackGoldDeduct
|
||
|
||
memberPromotion.DeductAmount += memberPromotion.GoldCount * memberPromotion.GoldDeduct
|
||
memberPromotion.DeductAmount += memberPromotion.PlatinumCount * memberPromotion.PlatinumDeduct
|
||
memberPromotion.DeductAmount += memberPromotion.BlackGoldCount * memberPromotion.BlackGoldDeduct
|
||
|
||
memberPromotion.DeductAmount += memberPromotion.RenewalGoldCount * memberPromotion.RenewalGoldDeduct
|
||
memberPromotion.DeductAmount += memberPromotion.RenewalPlatinumCount * memberPromotion.RenewalPlatinumDeduct
|
||
memberPromotion.DeductAmount += memberPromotion.RenewalBlackGoldCount * memberPromotion.RenewalBlackGoldDeduct
|
||
|
||
begin := orm.Eloquent.Begin()
|
||
deductSettle := &models.CooperativeDeductSettle{
|
||
CooperativeMemberPromotionId: req.CooperativeMemberPromotionId,
|
||
CooperativeBusinessId: memberPromotion.CooperativeBusinessId,
|
||
CooperativeName: memberPromotion.CooperativeName,
|
||
DeductAmount: memberPromotion.DeductAmount,
|
||
Date: memberPromotion.Date,
|
||
State: models.PromotionStateFinancePay,
|
||
GoldCount: memberPromotion.GoldCount,
|
||
PlatinumCount: memberPromotion.PlatinumCount,
|
||
BlackGoldCount: memberPromotion.BlackGoldCount,
|
||
GoldDeduct: memberPromotion.GoldDeduct,
|
||
PlatinumDeduct: memberPromotion.PlatinumDeduct,
|
||
BlackGoldDeduct: memberPromotion.BlackGoldDeduct,
|
||
|
||
RenewalGoldCount: memberPromotion.RenewalGoldCount,
|
||
RenewalPlatinumCount: memberPromotion.RenewalPlatinumCount,
|
||
RenewalBlackGoldCount: memberPromotion.RenewalBlackGoldCount,
|
||
RenewalGoldDeduct: memberPromotion.RenewalGoldDeduct,
|
||
RenewalPlatinumDeduct: memberPromotion.RenewalPlatinumDeduct,
|
||
RenewalBlackGoldDeduct: memberPromotion.RenewalBlackGoldDeduct,
|
||
}
|
||
err = begin.Create(deductSettle).Error
|
||
if err != nil {
|
||
begin.Rollback()
|
||
logger.Errorf("create cooperative deduct settle err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "结算错误")
|
||
return
|
||
}
|
||
err = begin.Table("cooperative_member_promotion").Where("id=?", memberPromotion.ID).
|
||
Updates(map[string]interface{}{
|
||
"state": models.PromotionStateFinancePay,
|
||
}).Error
|
||
if err != nil {
|
||
begin.Rollback()
|
||
logger.Errorf("update cooperative_member_promotion state err:", err)
|
||
app.Error(c, http.StatusInternalServerError,
|
||
errors.New("update cooperative_member_promotion state err"), "结算错误")
|
||
return
|
||
}
|
||
err = begin.Commit().Error
|
||
if err != nil {
|
||
begin.Rollback()
|
||
logger.Errorf("commit err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "结算错误")
|
||
return
|
||
}
|
||
app.OK(c, memberPromotion, "")
|
||
return
|
||
}
|
||
|
||
func CooperativeMemberPromotionSettleList(c *gin.Context) {
|
||
req := &models.CooperativeMemberPromotionSettleReq{}
|
||
if c.ShouldBindJSON(req) != nil {
|
||
logger.Errorf("para err")
|
||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||
return
|
||
}
|
||
|
||
list, count, err := req.List()
|
||
if err != nil {
|
||
logger.Errorf("err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "查询失败")
|
||
return
|
||
}
|
||
|
||
ret := map[string]interface{}{
|
||
"count": count,
|
||
"list": list,
|
||
"pageIndex": req.Page,
|
||
}
|
||
app.OK(c, ret, "")
|
||
return
|
||
}
|
||
|
||
func CooperativeMemberPromotionSettleRemit(c *gin.Context) {
|
||
req := &struct {
|
||
CooperativeDeductSettleId uint32 `json:"cooperative_deduct_settle_id"`
|
||
CooperativeBusinessId uint32 `json:"cooperative_business_id"`
|
||
}{}
|
||
if c.ShouldBindJSON(req) != nil {
|
||
logger.Errorf("para err")
|
||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||
return
|
||
}
|
||
|
||
var deductSettle models.CooperativeDeductSettle
|
||
err := orm.Eloquent.Table("").Where("id=?", req.CooperativeDeductSettleId).Find(&deductSettle).Error
|
||
if err != nil {
|
||
logger.Errorf("cooperative member promotion err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "结算错误")
|
||
return
|
||
}
|
||
if deductSettle.CooperativeBusinessId != req.CooperativeBusinessId {
|
||
logger.Errorf("cooperative business id err:")
|
||
app.Error(c, http.StatusInternalServerError, errors.New("cooperative business id err"), "操作失败")
|
||
return
|
||
}
|
||
if deductSettle.State != models.PromotionStateFinancePay {
|
||
logger.Errorf("deduct settle state err:")
|
||
app.Error(c, http.StatusInternalServerError, errors.New("deduct settle state err"), "操作失败")
|
||
return
|
||
}
|
||
|
||
begin := orm.Eloquent.Begin()
|
||
err = begin.Table("cooperative_member_promotion").
|
||
Where("id=?", deductSettle.CooperativeMemberPromotionId).Updates(map[string]interface{}{
|
||
"state": models.PromotionStateSettled,
|
||
}).Error
|
||
if err != nil {
|
||
begin.Rollback()
|
||
logger.Errorf("update cooperative_member_promotion state err:", err)
|
||
app.Error(c, http.StatusInternalServerError, errors.New("update cooperative_member_promotion state err"), "操作失败")
|
||
return
|
||
}
|
||
err = begin.Table("cooperative_deduct_settle").Where("id=?", deductSettle.ID).Updates(map[string]interface{}{
|
||
"state": models.PromotionStateSettled,
|
||
}).Error
|
||
if err != nil {
|
||
begin.Rollback()
|
||
logger.Errorf("update cooperative_member_promotion state err:", err)
|
||
app.Error(c, http.StatusInternalServerError, errors.New("update cooperative_member_promotion state err"), "操作失败")
|
||
return
|
||
}
|
||
err = begin.Commit().Error
|
||
if err != nil {
|
||
begin.Rollback()
|
||
logger.Errorf("commit err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "结算错误")
|
||
return
|
||
}
|
||
app.OK(c, nil, "")
|
||
return
|
||
}
|
||
|
||
func CooperativePromotionMemberList(c *gin.Context) {
|
||
req := &models.CooperativePromotionMemberReq{}
|
||
if c.ShouldBindJSON(req) != nil {
|
||
logger.Errorf("para err")
|
||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||
return
|
||
}
|
||
|
||
list, count, err := req.List()
|
||
if err != nil {
|
||
logger.Errorf("err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "查询失败")
|
||
return
|
||
}
|
||
|
||
ret := map[string]interface{}{
|
||
"count": count,
|
||
"list": list,
|
||
"pageIndex": req.Page,
|
||
}
|
||
app.OK(c, ret, "")
|
||
return
|
||
}
|
||
|
||
func UpdateCooperativeMemberDeduct(c *gin.Context) {
|
||
req := &models.CooperativeMemberDeduct{}
|
||
if c.ShouldBindJSON(req) != nil {
|
||
logger.Errorf("para err")
|
||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||
return
|
||
}
|
||
|
||
err := orm.Eloquent.Save(req).Error
|
||
if err != nil {
|
||
logger.Errorf("update cooperative member deduct err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "修改失败")
|
||
return
|
||
}
|
||
|
||
app.OK(c, nil, "修改成功")
|
||
return
|
||
}
|
||
|
||
type CooperativeAssistantMemberDeductReq struct {
|
||
CooperativeBusinessId uint32 `json:"cooperative_business_id" binding:"required"`
|
||
StoreId uint32 `json:"store_id" binding:"required"` //
|
||
GoldDeduct uint32 `json:"gold_deduct" binding:"required"` // 黄金会员提成
|
||
PlatinumDeduct uint32 `json:"platinum_deduct" binding:"required"` // 白金会员提成
|
||
BlackGoldDeduct uint32 `json:"black_gold_deduct" binding:"required"` // 黑金金会员提成
|
||
RenewalGoldDeduct uint32 `json:"renewal_gold_deduct" binding:"required"` // 续费黄金会员提成
|
||
RenewalPlatinumDeduct uint32 `json:"renewal_platinum_deduct" binding:"required"` // 续费白金会员提成
|
||
RenewalBlackGoldDeduct uint32 `json:"renewal_black_gold_deduct" binding:"required"` // 续费黑金金会员提成
|
||
// cooperative_assistant_member_deduct
|
||
}
|
||
|
||
func UpdateCooperativeMemberStoreDeduct(c *gin.Context) {
|
||
req := &CooperativeAssistantMemberDeductReq{}
|
||
if c.ShouldBindJSON(req) != nil {
|
||
logger.Errorf("para err")
|
||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||
return
|
||
}
|
||
memberDeduct := &models.CooperativeAssistantMemberDeduct{
|
||
CooperativeBusinessId: req.CooperativeBusinessId,
|
||
StoreId: req.StoreId,
|
||
GoldDeduct: req.GoldDeduct,
|
||
PlatinumDeduct: req.PlatinumDeduct,
|
||
BlackGoldDeduct: req.BlackGoldDeduct,
|
||
RenewalGoldDeduct: req.RenewalGoldDeduct,
|
||
RenewalPlatinumDeduct: req.RenewalPlatinumDeduct,
|
||
RenewalBlackGoldDeduct: req.RenewalBlackGoldDeduct,
|
||
}
|
||
if memberDeduct.CooperativeBusinessId == 0 {
|
||
var store models.Store
|
||
err := orm.Eloquent.Table("store").Where("id=?", memberDeduct.StoreId).Find(&store).Error
|
||
if err != nil {
|
||
logger.Errorf("store err:", store)
|
||
app.Error(c, http.StatusInternalServerError, err, "修改失败")
|
||
return
|
||
}
|
||
memberDeduct.CooperativeBusinessId = store.CooperativeBusinessId
|
||
}
|
||
err := orm.Eloquent.Save(memberDeduct).Error
|
||
if err != nil {
|
||
logger.Errorf("update cooperative member deduct err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "修改失败")
|
||
return
|
||
}
|
||
|
||
app.OK(c, nil, "修改成功")
|
||
return
|
||
}
|
||
|
||
func CooperativeOrderList(c *gin.Context) {
|
||
req := &models.CooperativeOrderReq{}
|
||
if c.ShouldBindJSON(req) != nil {
|
||
logger.Errorf("para err")
|
||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||
return
|
||
}
|
||
//reqJson, _ := json.Marshal(req)
|
||
//fmt.Println("reqJson:", string(reqJson))
|
||
|
||
list, count, err := req.List()
|
||
if err != nil {
|
||
logger.Errorf("err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "查询失败")
|
||
return
|
||
}
|
||
|
||
ret := map[string]interface{}{
|
||
"count": count,
|
||
"list": list,
|
||
"pageIndex": req.Page,
|
||
}
|
||
app.OK(c, ret, "")
|
||
}
|
||
|
||
// AssistantInviteMemberReportList 店员绩效
|
||
// @Summary 店员绩效
|
||
// @Tags 门店管理, v1.2.0
|
||
// @Produce json
|
||
// @Accept json
|
||
// @Param request body models.AssistantInviteMemberReportReq true "店员绩效模型"
|
||
// @Success 200 {object} models.AssistantInviteMemberReportListResp
|
||
// @Router /api/v1/cooperative/member_promotion/assistant_report [post]
|
||
func AssistantInviteMemberReportList(c *gin.Context) {
|
||
req := models.AssistantInviteMemberReportReq{}
|
||
if c.ShouldBindJSON(&req) != nil {
|
||
logger.Errorf("parameter err")
|
||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||
return
|
||
}
|
||
|
||
data, _ := c.Get(jwtauth.JwtPayloadKey)
|
||
sysUid, ok := data.(jwtauth.MapClaims)["identity"]
|
||
if !ok {
|
||
logger.Errorf("sys uid err")
|
||
app.Error(c, http.StatusInternalServerError, errors.New("sys uid err"), "查询失败")
|
||
return
|
||
}
|
||
sysUser, err := models.GetSysUser(sysUid)
|
||
if err != nil {
|
||
logger.Errorf("sys user err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "查询失败")
|
||
return
|
||
}
|
||
req.SysUser = sysUser
|
||
//req.CooperativeBusinessId = sysUser.CooperativeBusinessId
|
||
|
||
list, count, err := req.List()
|
||
if err != nil {
|
||
logger.Errorf("err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "查询失败")
|
||
return
|
||
}
|
||
|
||
ret := models.AssistantInviteMemberReportListResp{
|
||
List: list,
|
||
CurPage: req.Page,
|
||
Count: count,
|
||
}
|
||
|
||
app.OK(c, ret, "")
|
||
return
|
||
}
|
||
|
||
func CooperativeStoreList(c *gin.Context) {
|
||
req := &models.GetCooperativeStoreReq{}
|
||
if c.ShouldBindJSON(&req) != nil {
|
||
logger.Errorf("para err")
|
||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||
return
|
||
}
|
||
|
||
data, _ := c.Get(jwtauth.JwtPayloadKey)
|
||
mapClaims := data.(jwtauth.MapClaims)
|
||
sysUid := float64(0)
|
||
if v, ok := mapClaims["identity"]; ok {
|
||
sysUid = v.(float64)
|
||
}
|
||
fmt.Println("sysUid:", sysUid)
|
||
|
||
req.SysUid = fmt.Sprintf("%.0f", sysUid)
|
||
list, count, err := req.List()
|
||
if err != nil {
|
||
logger.Errorf("err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "查询失败")
|
||
return
|
||
}
|
||
ret := map[string]interface{}{
|
||
"count": count,
|
||
"list": list,
|
||
"pageIndex": req.Page,
|
||
"total_page": req.PageSize,
|
||
}
|
||
|
||
app.OK(c, ret, "")
|
||
}
|
||
|
||
func CooperativeGameCardStockList(c *gin.Context) {
|
||
req := models.CooperativeGameCardStockReq{}
|
||
if c.ShouldBindJSON(&req) != nil {
|
||
logger.Errorf("parameter err")
|
||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||
return
|
||
}
|
||
|
||
//data, _ := c.Get(jwtauth.JwtPayloadKey)
|
||
//sysUid, ok := data.(jwtauth.MapClaims)["identity"]
|
||
//if !ok {
|
||
// logger.Errorf("sys uid err")
|
||
// app.Error(c, http.StatusInternalServerError, errors.New("sys uid err"), "查询失败")
|
||
// return
|
||
//}
|
||
//sysUser, err := models.GetSysUser(sysUid)
|
||
//if err != nil {
|
||
// logger.Errorf("sys user err:", err)
|
||
// app.Error(c, http.StatusInternalServerError, err, "查询失败")
|
||
// return
|
||
//}
|
||
////req.CooperativeBusinessId = sysUser.CooperativeBusinessId
|
||
businessId, err := models.GetCooperativeBusinessId(c)
|
||
if err != nil {
|
||
logger.Errorf("get cooperative business id err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "查询失败")
|
||
return
|
||
}
|
||
req.CooperativeBusinessId = businessId
|
||
resp, err := req.List()
|
||
if err != nil {
|
||
logger.Errorf("err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "查询失败")
|
||
return
|
||
}
|
||
|
||
app.OK(c, resp, "")
|
||
return
|
||
}
|
||
|
||
func CooperativeGameCardGoodsList(c *gin.Context) {
|
||
req := models.CooperativeGameCardGoodsReq{}
|
||
if c.ShouldBindJSON(&req) != nil {
|
||
logger.Errorf("para err")
|
||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||
return
|
||
}
|
||
businessId, err := models.GetCooperativeBusinessId(c)
|
||
if err != nil {
|
||
logger.Errorf("get cooperative business id err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "查询失败")
|
||
return
|
||
}
|
||
req.CooperativeBusinessId = businessId
|
||
resp, err := req.List()
|
||
if err != nil {
|
||
logger.Errorf("err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "查询失败")
|
||
return
|
||
}
|
||
|
||
app.OK(c, resp, "")
|
||
}
|
||
|
||
// 5.调拨任务列表
|
||
func CooperativeCannibalizeTaskList(c *gin.Context) {
|
||
req := models.CooperativeCannibalizeTaskReq{}
|
||
if c.ShouldBindJSON(&req) != nil {
|
||
logger.Errorf("para err")
|
||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||
return
|
||
}
|
||
businessId, err := models.GetCooperativeBusinessId(c)
|
||
if err != nil {
|
||
logger.Errorf("cannibalize task get cooperative business id err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "查询失败")
|
||
return
|
||
}
|
||
req.CooperativeBusinessId = businessId
|
||
resp, err := req.List()
|
||
if err != nil {
|
||
logger.Errorf("err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "任务列表错误")
|
||
return
|
||
}
|
||
|
||
app.OK(c, resp, "")
|
||
}
|
||
|
||
func CooperativeStockExport(c *gin.Context) {
|
||
req := struct {
|
||
StoreId uint32 `json:"store_id"`
|
||
}{}
|
||
if c.ShouldBindJSON(&req) != nil {
|
||
logger.Errorf("para err")
|
||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||
return
|
||
}
|
||
businessId, err := models.GetCooperativeBusinessId(c)
|
||
if err != nil {
|
||
logger.Errorf("cannibalize task get cooperative business id err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "导出失败")
|
||
return
|
||
}
|
||
//req.CooperativeBusinessId = businessId
|
||
var cooperativeBusiness models.CooperativeBusiness
|
||
err = orm.Eloquent.Table("cooperative_business").Where("id=?", businessId).Find(&cooperativeBusiness).Error
|
||
if err != nil {
|
||
logger.Errorf("cooperative business err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "导出失败")
|
||
return
|
||
}
|
||
storeIds := []uint32{req.StoreId}
|
||
if req.StoreId == 0 {
|
||
ids, err := models.GetStoreIdsByCooperativeBusinessId(businessId)
|
||
if err != nil {
|
||
logger.Errorf("store id cooperative business err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "导出失败")
|
||
return
|
||
}
|
||
storeIds = ids
|
||
}
|
||
|
||
goodsStock := models.CooperativeExportGoodsStock(storeIds, cooperativeBusiness)
|
||
|
||
ret := &map[string]interface{}{
|
||
"goods_stock_url": goodsStock,
|
||
}
|
||
app.OK(c, ret, "数据导出成功")
|
||
return
|
||
}
|
||
|
||
func CooperativeMemberPromotionExport(c *gin.Context) {
|
||
req := models.CooperativeExportMemberPromotionReq{}
|
||
if c.ShouldBindJSON(&req) != nil {
|
||
logger.Errorf("para err")
|
||
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||
return
|
||
}
|
||
|
||
businessId, err := models.GetCooperativeBusinessId(c)
|
||
if err != nil {
|
||
logger.Errorf("cannibalize task get cooperative business id err:", err)
|
||
app.Error(c, http.StatusInternalServerError, err, "导出失败")
|
||
return
|
||
}
|
||
req.CooperativeBusinessId = businessId
|
||
//var cooperativeBusiness models.CooperativeBusiness
|
||
//err = orm.Eloquent.Table("cooperative_business").Where("id=?", businessId).Find(&cooperativeBusiness).Error
|
||
//if err != nil {
|
||
// logger.Errorf("cooperative business err:", err)
|
||
// app.Error(c, http.StatusInternalServerError, err, "导出失败")
|
||
// return
|
||
//}
|
||
//storeIds := []uint32{req.StoreId}
|
||
//if req.StoreId == 0 {
|
||
// ids, err := models.GetStoreIdsByCooperativeBusinessId(businessId)
|
||
// if err != nil {
|
||
// logger.Errorf("store id cooperative business err:", err)
|
||
// app.Error(c, http.StatusInternalServerError, err, "导出失败")
|
||
// return
|
||
// }
|
||
// storeIds = ids
|
||
//}
|
||
|
||
memberPromotion := req.Export()
|
||
if memberPromotion == "" {
|
||
logger.Errorf("member promotion url nil:")
|
||
app.Error(c, http.StatusInternalServerError, errors.New("member promotion url nil"), "导出失败")
|
||
return
|
||
}
|
||
|
||
ret := &map[string]interface{}{
|
||
"member_promotion_url": memberPromotion,
|
||
}
|
||
app.OK(c, ret, "数据导出成功")
|
||
}
|
||
|
||
// CooperativeSetPayInfo 设置支付信息
|
||
// @Summary 设置支付信息
|
||
// @Tags 合作商, v1.2.0
|
||
// @Produce json
|
||
// @Accept json
|
||
// @Param request body models.CooperativeSetPayInfoReq true "设置支付信息模型"
|
||
// @Success 200 {object} app.Response
|
||
// @Router /api/v1/cooperative/set_pay_info [post]
|
||
func CooperativeSetPayInfo(c *gin.Context) {
|
||
var req = new(models.CooperativeSetPayInfoReq)
|
||
if err := c.ShouldBindJSON(&req); err != nil {
|
||
logger.Errorf("ShouldBindJSON err:", logger.Field("err", err))
|
||
app.Error(c, http.StatusBadRequest, err, "参数错误:"+err.Error())
|
||
return
|
||
}
|
||
|
||
err := tools.Validate(req) //必填参数校验
|
||
if err != nil {
|
||
app.Error(c, http.StatusBadRequest, err, err.Error())
|
||
return
|
||
}
|
||
|
||
sysUser, err := models.GetSysUserByCtx(c)
|
||
if err != nil {
|
||
logger.Error("sys user err:", logger.Field("err", err))
|
||
app.Error(c, http.StatusInternalServerError, err, "操作失败:"+err.Error())
|
||
return
|
||
}
|
||
|
||
if req.CooperativeBusinessId == 0 { // 如果入参为空,则默认使用当前用户所属的合作商id
|
||
if sysUser.CooperativeBusinessId == 0 {
|
||
logger.Error("sysUser.CooperativeBusinessId is 0")
|
||
app.Error(c, http.StatusInternalServerError, errors.New("合作商id为空"), "保存失败:合作商id为空")
|
||
return
|
||
}
|
||
req.CooperativeBusinessId = sysUser.CooperativeBusinessId
|
||
}
|
||
|
||
err = models.SetPayInfo(req)
|
||
if err != nil {
|
||
logger.Error("CreateErpOrder err:", logger.Field("err", err))
|
||
app.Error(c, http.StatusInternalServerError, err, err.Error())
|
||
return
|
||
}
|
||
|
||
app.OK(c, nil, "")
|
||
}
|
||
|
||
// CooperativeGetPayInfo 获取支付信息
|
||
// @Summary 获取支付信息
|
||
// @Tags 合作商, v1.2.0
|
||
// @Produce json
|
||
// @Accept json
|
||
// @Success 200 {object} models.CooperativePayInfo
|
||
// @Router /api/v1/cooperative/get_pay_info [post]
|
||
func CooperativeGetPayInfo(c *gin.Context) {
|
||
//var req = new(models.CooperativeGetPayInfoReq)
|
||
//if err := c.ShouldBindJSON(&req); err != nil {
|
||
// logger.Errorf("ShouldBindJSON err:", logger.Field("err", err))
|
||
// app.Error(c, http.StatusBadRequest, err, "参数错误:"+err.Error())
|
||
// return
|
||
//}
|
||
//
|
||
//err := tools.Validate(req) //必填参数校验
|
||
//if err != nil {
|
||
// app.Error(c, http.StatusBadRequest, err, err.Error())
|
||
// return
|
||
//}
|
||
|
||
payInfo, err := models.GetPayInfo()
|
||
if err != nil {
|
||
logger.Error("CreateErpOrder err:", logger.Field("err", err))
|
||
app.Error(c, http.StatusInternalServerError, err, err.Error())
|
||
return
|
||
}
|
||
|
||
app.OK(c, payInfo, "")
|
||
}
|