fix:
This commit is contained in:
parent
c556a306f1
commit
133ed7db4b
|
@ -125,6 +125,8 @@ func AuthLogin(c *gin.Context) {
|
|||
|
||||
user.StoreId = inviteUser.StoreId
|
||||
user.UserType = model.UserTypeConsumer
|
||||
user.CooperativeBusinessId = inviteUser.CooperativeBusinessId
|
||||
user.CooperativeName = inviteUser.CooperativeName
|
||||
|
||||
invite := &model.UserInvite{
|
||||
FromUid: req.InviteUid,
|
||||
|
@ -212,7 +214,6 @@ func AuthLogin(c *gin.Context) {
|
|||
// RespJson(c, status.InternalServerError, nil)
|
||||
// return
|
||||
//}
|
||||
//
|
||||
//refreshToken := &model.UserRefreshToken{
|
||||
// Uid: user.Uid,
|
||||
// Token: newRefreshToken,
|
||||
|
@ -259,7 +260,6 @@ func AuthLogin(c *gin.Context) {
|
|||
//"is_new": isNew,
|
||||
//"invite_from_code": inviteCode,
|
||||
})
|
||||
fmt.Println("sqlErr:", sqlErr)
|
||||
return
|
||||
|
||||
}
|
||||
|
|
355
controller/cb_goods_stock.go
Normal file
355
controller/cb_goods_stock.go
Normal file
|
@ -0,0 +1,355 @@
|
|||
package controller
|
||||
|
||||
import (
|
||||
"github.com/codinl/go-logger"
|
||||
"github.com/gin-gonic/gin"
|
||||
"mh-server/lib/auth"
|
||||
"mh-server/lib/status"
|
||||
"mh-server/model"
|
||||
"time"
|
||||
)
|
||||
|
||||
func CooperativeGameCardGoodsStockAdds(c *gin.Context) {
|
||||
req := struct {
|
||||
Cards []model.GameCardGoods `json:"cards"`
|
||||
}{}
|
||||
if c.ShouldBindJSON(&req) != nil {
|
||||
logger.Error("ShouldBindJSON err")
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
|
||||
uc := auth.GetCurrentUser(c)
|
||||
if uc == nil {
|
||||
logger.Error("uc is nil")
|
||||
RespJson(c, status.Unauthorized, nil)
|
||||
return
|
||||
}
|
||||
|
||||
cardGoods := &model.GameCardGoods{}
|
||||
for i, _ := range req.Cards {
|
||||
req.Cards[i].CardType = model.GameCardGoodsTypeCommon
|
||||
req.Cards[i].ShareProfitType = 1
|
||||
}
|
||||
err := cardGoods.Adds(req.Cards)
|
||||
if err != nil {
|
||||
logger.Errorf("err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
RespOK(c, nil)
|
||||
return
|
||||
}
|
||||
|
||||
func GameCardGoodsStockAnalysis(c *gin.Context) {
|
||||
req := model.GameCardGoodsStockAnalysisReq{}
|
||||
if c.ShouldBindJSON(&req) != nil {
|
||||
logger.Error("ShouldBindJSON err")
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
|
||||
resp, err := req.GameCardStockListAnalysis()
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
//ret := make(map[string]interface{}, 0)
|
||||
//ret["list"] = stockList
|
||||
//ret["count"] = total
|
||||
//ret["page_index"] = req.PageNum
|
||||
|
||||
RespOK(c, resp)
|
||||
return
|
||||
}
|
||||
|
||||
func CooperativeExportDataGameCardGoodsStock(c *gin.Context) {
|
||||
uc := auth.GetCurrentUser(c)
|
||||
if uc == nil {
|
||||
logger.Error("uc is nil")
|
||||
RespJson(c, status.Unauthorized, nil)
|
||||
return
|
||||
}
|
||||
assistant := model.GetUserByUid(uc.Uid)
|
||||
if assistant.XcxRoleId != 2 {
|
||||
logger.Error("xcx role err:")
|
||||
RespJson(c, status.NoAuth, nil)
|
||||
return
|
||||
}
|
||||
|
||||
goodsStock := model.ExportGoodsStock(uint32(assistant.StoreId))
|
||||
|
||||
ret := &map[string]interface{}{
|
||||
"goods_stock_url": goodsStock,
|
||||
}
|
||||
RespOK(c, ret)
|
||||
return
|
||||
}
|
||||
|
||||
// 1.创建调拨
|
||||
func CooperativeCannibalizeTaskCreate(c *gin.Context) {
|
||||
req := struct {
|
||||
FromStoreId uint32 `json:"from_store_id"`
|
||||
ToStoreId uint32 `json:"to_store_id"`
|
||||
}{}
|
||||
if c.ShouldBindJSON(&req) != nil {
|
||||
logger.Errorf("para err")
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
|
||||
uc := auth.GetCurrentUser(c)
|
||||
if uc == nil {
|
||||
logger.Error("uc is nil")
|
||||
RespJson(c, status.Unauthorized, nil)
|
||||
return
|
||||
}
|
||||
assistant := model.GetUserByUid(uc.Uid)
|
||||
req.FromStoreId = uint32(assistant.StoreId)
|
||||
if req.FromStoreId == 0 || req.ToStoreId == 0 {
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
|
||||
task := &model.CannibalizeStockTask{
|
||||
FromStoreId: req.FromStoreId,
|
||||
ToStoreId: req.ToStoreId,
|
||||
TaskId: uint32(time.Now().Unix()),
|
||||
Count: 0,
|
||||
Status: model.CannibalizeTaskStatusNotImportGoods,
|
||||
}
|
||||
err := model.DB.Create(task).Error
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
RespOK(c, nil)
|
||||
}
|
||||
|
||||
// 2.导入调拨卡
|
||||
func CooperativeCannibalizeTaskImportGoods(c *gin.Context) {
|
||||
req := struct {
|
||||
CannibalizeStockTaskId uint32 `json:"cannibalize_stock_task_id"`
|
||||
SerialNumberList []string `json:"serial_number_list"` // 编号
|
||||
}{}
|
||||
if c.ShouldBindJSON(&req) != nil {
|
||||
logger.Errorf("para err")
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
unImportGoods, err := model.CannibalizeTaskImportGoods(req.CannibalizeStockTaskId, req.SerialNumberList)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
if unImportGoods > 0 {
|
||||
//app.OK(c, nil, fmt.Sprintf("有 %d 个卡未导入", unImportGoods))
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
//app.OK(c, nil, "导入调拨卡成功")
|
||||
RespOK(c, nil)
|
||||
return
|
||||
}
|
||||
|
||||
// 3.确认发货
|
||||
func CooperativeCannibalizeTaskDeliverGoods(c *gin.Context) {
|
||||
req := struct {
|
||||
CannibalizeStockTaskId uint32 `json:"cannibalize_stock_task_id"`
|
||||
}{}
|
||||
if c.ShouldBindJSON(&req) != nil {
|
||||
logger.Errorf("para err")
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
err := model.CannibalizeDeliverGoods(req.CannibalizeStockTaskId)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
//app.Error(c, http.StatusInternalServerError, err, "发货错误")
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
//app.OK(c, nil, "发货成功")
|
||||
RespOK(c, nil)
|
||||
return
|
||||
}
|
||||
|
||||
// 4.确认入库
|
||||
func CooperativeCannibalizeTaskPutInStorage(c *gin.Context) {
|
||||
req := struct {
|
||||
CannibalizeStockTaskId uint32 `json:"cannibalize_stock_task_id"`
|
||||
}{}
|
||||
if c.ShouldBindJSON(&req) != nil {
|
||||
logger.Errorf("para err")
|
||||
//app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
err := model.CannibalizePutInStorage(req.CannibalizeStockTaskId)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
RespOK(c, nil)
|
||||
return
|
||||
}
|
||||
|
||||
// 5.调拨任务列表
|
||||
func CooperativeCannibalizeTaskList(c *gin.Context) {
|
||||
req := model.CannibalizeTaskListReq{}
|
||||
if c.ShouldBindJSON(&req) != nil {
|
||||
logger.Errorf("para err")
|
||||
//app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
uc := auth.GetCurrentUser(c)
|
||||
if uc == nil {
|
||||
logger.Error("uc is nil")
|
||||
RespJson(c, status.Unauthorized, nil)
|
||||
return
|
||||
}
|
||||
assistant := model.GetUserByUid(uc.Uid)
|
||||
req.StoreId = uint32(assistant.StoreId)
|
||||
if req.StoreId == 0 {
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
|
||||
resp, err := req.GetCannibalizeTaskList()
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
//app.Error(c, http.StatusInternalServerError, err, "任务列表错误")
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
//app.OK(c, resp, "")
|
||||
RespOK(c, resp)
|
||||
return
|
||||
}
|
||||
|
||||
// 6.调拨任务卡列表
|
||||
func CooperativeCannibalizeTaskGameCardGoodsList(c *gin.Context) {
|
||||
req := model.CannibalizeTaskGameCardGoodsListReq{}
|
||||
if c.ShouldBindJSON(&req) != nil {
|
||||
logger.Errorf("para err")
|
||||
//app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
|
||||
resp, err := req.GetCannibalizeTaskGameCardGoodsList()
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
//app.Error(c, http.StatusInternalServerError, err, "任务列表错误")
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
//app.OK(c, resp, "")
|
||||
RespOK(c, resp)
|
||||
return
|
||||
}
|
||||
|
||||
func CooperativeCannibalizeTaskDel(c *gin.Context) {
|
||||
req := struct {
|
||||
CannibalizeStockTaskId uint32 `json:"cannibalize_stock_task_id"`
|
||||
}{}
|
||||
if c.ShouldBindJSON(&req) != nil {
|
||||
logger.Errorf("para err")
|
||||
//app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
err := model.CannibalizeTaskDel(req.CannibalizeStockTaskId)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
//app.Error(c, http.StatusInternalServerError, err, "改任务状态不能删除")
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
//app.OK(c, nil, "发货成功")
|
||||
RespOK(c, nil)
|
||||
return
|
||||
}
|
||||
|
||||
func CooperativeGameCardGoodsList(c *gin.Context) {
|
||||
req := model.CooperativeGameCardGoodsListReq{}
|
||||
if c.ShouldBindJSON(&req) != nil {
|
||||
logger.Errorf("para err")
|
||||
//app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
//goodsStock := model.ExportGoodsStock(req.StoreId)
|
||||
uc := auth.GetCurrentUser(c)
|
||||
if uc == nil {
|
||||
logger.Error("uc is nil")
|
||||
RespJson(c, status.Unauthorized, nil)
|
||||
return
|
||||
}
|
||||
req.AssistantUid = uc.Uid
|
||||
|
||||
resp, err := req.List()
|
||||
if err != nil {
|
||||
logger.Error("list err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
//ret := &map[string]interface{}{
|
||||
// "goods_stock_url": goodsStock,
|
||||
//}
|
||||
//app.OK(c, ret, "数据导出成功")
|
||||
RespOK(c, resp)
|
||||
return
|
||||
}
|
||||
|
||||
func AssistantMemberPromotionList(c *gin.Context) {
|
||||
req := model.AssistantMemberPromotionReq{}
|
||||
if c.ShouldBindJSON(&req) != nil {
|
||||
logger.Errorf("para err")
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
uc := auth.GetCurrentUser(c)
|
||||
if uc == nil {
|
||||
logger.Error("uc is nil")
|
||||
RespJson(c, status.Unauthorized, nil)
|
||||
return
|
||||
}
|
||||
req.AssistantUid = uc.Uid
|
||||
|
||||
req.Assistant = model.GetUserByUid(uc.Uid)
|
||||
if req.Assistant.XcxRoleId != 2 {
|
||||
logger.Error("xcx role err:")
|
||||
RespJson(c, status.NoAuth, nil)
|
||||
return
|
||||
}
|
||||
list, totalPage, err := req.List()
|
||||
if err != nil {
|
||||
logger.Error("list err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
ret := &map[string]interface{}{
|
||||
"list": list,
|
||||
"total_page": totalPage,
|
||||
"page_num": req.PageNum,
|
||||
}
|
||||
RespOK(c, ret)
|
||||
return
|
||||
}
|
122
controller/cb_rent_order.go
Normal file
122
controller/cb_rent_order.go
Normal file
|
@ -0,0 +1,122 @@
|
|||
package controller
|
||||
|
||||
import (
|
||||
"github.com/codinl/go-logger"
|
||||
"github.com/gin-gonic/gin"
|
||||
"mh-server/lib/auth"
|
||||
"mh-server/lib/status"
|
||||
"mh-server/model"
|
||||
)
|
||||
|
||||
func CooperativeRentCardOrderList(c *gin.Context) {
|
||||
req := model.CooperativeRentCardOrderListReq{}
|
||||
if c.ShouldBindJSON(&req) != nil {
|
||||
logger.Error("ShouldBindJSON err")
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
uc := auth.GetCurrentUser(c)
|
||||
if uc == nil {
|
||||
logger.Error("uc is nil")
|
||||
RespJson(c, status.Unauthorized, nil)
|
||||
return
|
||||
}
|
||||
req.AssistantUid = uc.Uid
|
||||
list, count, err := req.List()
|
||||
if err != nil {
|
||||
logger.Errorf("err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
ret := map[string]interface{}{
|
||||
"count": count,
|
||||
"list": list,
|
||||
"pageIndex": req.PageNum,
|
||||
"total_page": req.PageSize,
|
||||
}
|
||||
|
||||
RespOK(c, ret)
|
||||
return
|
||||
}
|
||||
|
||||
func CooperativeRentCardOrderInfo(c *gin.Context) {
|
||||
req := model.CooperativeRentCardOrderReq{}
|
||||
if c.ShouldBindJSON(&req) != nil {
|
||||
logger.Error("ShouldBindJSON err")
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
uc := auth.GetCurrentUser(c)
|
||||
if uc == nil {
|
||||
logger.Error("uc is nil")
|
||||
RespJson(c, status.Unauthorized, nil)
|
||||
return
|
||||
}
|
||||
order, err := req.Info()
|
||||
if err != nil {
|
||||
logger.Error("rent card order err:", err)
|
||||
if err.Error() == "parameter_err" {
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
} else {
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
RespOK(c, order)
|
||||
return
|
||||
}
|
||||
|
||||
func CooperativeRentCardOrderDeliver(c *gin.Context) {
|
||||
req := model.CooperativeRentCardOrderDeliverReq{}
|
||||
if c.ShouldBindJSON(&req) != nil {
|
||||
logger.Error("ShouldBindJSON err")
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
uc := auth.GetCurrentUser(c)
|
||||
if uc == nil {
|
||||
logger.Error("uc is nil")
|
||||
RespJson(c, status.Unauthorized, nil)
|
||||
return
|
||||
}
|
||||
assistant := model.GetUserByUid(uc.Uid)
|
||||
req.OperationUid = uc.Uid
|
||||
req.StoreId = uint32(assistant.StoreId)
|
||||
err, _ := req.Deliver()
|
||||
if err != nil {
|
||||
logger.Error("rent card order err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
RespOK(c, nil)
|
||||
return
|
||||
}
|
||||
|
||||
func CooperativeRentCardOrderRevert(c *gin.Context) {
|
||||
req := model.CooperativeRentCardOrderRevertReq{}
|
||||
if c.ShouldBindJSON(&req) != nil {
|
||||
logger.Error("ShouldBindJSON err")
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
uc := auth.GetCurrentUser(c)
|
||||
if uc == nil {
|
||||
logger.Error("uc is nil")
|
||||
RespJson(c, status.Unauthorized, nil)
|
||||
return
|
||||
}
|
||||
req.OperationUid = uc.Uid
|
||||
err := req.Revert()
|
||||
if err != nil {
|
||||
logger.Error("rent card order revert err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
RespOK(c, nil)
|
||||
return
|
||||
}
|
|
@ -418,8 +418,9 @@ func PushWXPayNotice(c *gin.Context) {
|
|||
if !user.OpenMemberTime.IsZero() {
|
||||
openMemberTime = user.OpenMemberTime
|
||||
}
|
||||
_, err = model.NewUserQuerySet(model.DB).UidEq(record.Uid).GetUpdater().SetMemberLevel(record.MemberLevel).SetMemberExpire(expireTime).
|
||||
SetDeposit(memberConfig.MemberDeposit).SetOpenMemberTime(openMemberTime).UpdateNum()
|
||||
_, err = model.NewUserQuerySet(model.DB).UidEq(record.Uid).GetUpdater().SetMemberLevel(record.MemberLevel).
|
||||
SetMemberExpire(expireTime).SetDeposit(memberConfig.MemberDeposit).SetOpenMemberTime(openMemberTime).
|
||||
UpdateNum()
|
||||
//err = model.UserUpdate(&model.User{Uid: uint32(record.Uid), MemberLevel: record.MemberLevel, MemberExpire: expireTime, Deposit: memberConfig.MemberDeposit})
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
|
@ -466,11 +467,6 @@ func PushWXPayNotice(c *gin.Context) {
|
|||
if invite.FromUid != 0 {
|
||||
inviteUser := model.GetUserByUid(invite.FromUid)
|
||||
if inviteUser.UserType != 2 /*不是店员*/ && user.MemberLevel != 2 { // 邀请 新用户推送一次
|
||||
//err := model.CodeSendToUser(invite.FromUid, model.CodeTypeMemberCard30, model.RedeemCodeActivityTypeUserInvite)
|
||||
//if err != nil {
|
||||
// logger.Error("err:", err)
|
||||
//}
|
||||
|
||||
err = model.SendUserVm(inviteUser.Uid, record.MemberLevel, 1)
|
||||
if err != nil {
|
||||
logger.Error("send user vm err:", err)
|
||||
|
@ -485,12 +481,15 @@ func PushWXPayNotice(c *gin.Context) {
|
|||
openMemberChannel := model.OpenMemberChannelUserInvite
|
||||
if inviteUser.UserType == 2 {
|
||||
openMemberChannel = model.OpenMemberChannelStorePromotion
|
||||
model.AddCooperativeMemberPromotion(inviteUser.CooperativeBusinessId,
|
||||
uint32(inviteUser.StoreId), inviteUser.Uid, int(record.MemberLevel))
|
||||
}
|
||||
_, err = model.NewUserQuerySet(model.DB).UidEq(record.Uid).GetUpdater().
|
||||
SetOpenMemberChannel(openMemberChannel).UpdateNum()
|
||||
SetOpenMemberChannel(openMemberChannel).
|
||||
SetCooperativeBusinessId(inviteUser.CooperativeBusinessId).
|
||||
SetCooperativeName(inviteUser.CooperativeName).UpdateNum()
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -920,7 +920,8 @@ func UserAttendanceDetail(c *gin.Context) {
|
|||
|
||||
var attendanceRecord model.UserAttendanceRecord
|
||||
//err = model.NewUserAttendanceRecordQuerySet(model.DB).UidEq(uc.Uid).AttendanceDateEq(todayZero).One(&attendanceRecord)
|
||||
err = model.NewUserAttendanceRecordQuerySet(model.DB).UidEq(uc.Uid).OrderDescByID().Limit(1).One(&attendanceRecord)
|
||||
err = model.NewUserAttendanceRecordQuerySet(model.DB).UidEq(uc.Uid).OrderDescByID().
|
||||
Limit(1).One(&attendanceRecord)
|
||||
if err != nil && err != model.RecordNotFound {
|
||||
logger.Error("user attendance record err:")
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
|
@ -975,6 +976,35 @@ func UserAttendanceDetail(c *gin.Context) {
|
|||
return
|
||||
}
|
||||
|
||||
func InviteMemberReportList(c *gin.Context) {
|
||||
req := model.InviteMemberReportListReq{}
|
||||
if c.ShouldBindJSON(&req) != nil {
|
||||
logger.Error("parameter err")
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
uc := auth.GetCurrentUser(c)
|
||||
if uc == nil {
|
||||
RespJson(c, status.Unauthorized, nil)
|
||||
return
|
||||
}
|
||||
req.Uid = uc.Uid
|
||||
list, totalPage, err := req.List()
|
||||
if err != nil {
|
||||
logger.Errorf("err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
ret := map[string]interface{}{
|
||||
"list": list,
|
||||
"cur_page": req.PageNum,
|
||||
"total_page": totalPage,
|
||||
}
|
||||
RespOK(c, ret)
|
||||
return
|
||||
}
|
||||
|
||||
// 升级 1-黄金会员 2-白金会员 3-黑金会员
|
||||
// 开通会员
|
||||
// 升级会员
|
||||
|
|
1
go.mod
1
go.mod
|
@ -19,6 +19,7 @@ require (
|
|||
github.com/spf13/cobra v1.1.3
|
||||
github.com/spf13/viper v1.7.1
|
||||
github.com/wechatpay-apiv3/wechatpay-go v0.2.6
|
||||
github.com/xuri/excelize/v2 v2.6.0
|
||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9
|
||||
qiniupkg.com/x v7.0.8+incompatible // indirect
|
||||
)
|
||||
|
|
33
go.sum
33
go.sum
|
@ -186,6 +186,8 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJ
|
|||
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||
github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
|
||||
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
|
||||
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
|
||||
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
||||
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
|
||||
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
|
||||
|
@ -211,6 +213,10 @@ github.com/qiniu/api.v7 v7.2.5+incompatible h1:6KKaGt7MbFzVGSniwzv7qsM/Qv0or4SkR
|
|||
github.com/qiniu/api.v7 v7.2.5+incompatible/go.mod h1:V8/EzlTgLN6q0s0CJmg/I81ytsvldSF22F7h6MI02+c=
|
||||
github.com/qiniu/x v7.0.8+incompatible h1:P4LASsfwJY7SoZ13dwqBwGhZh7HKU8cdFVCUkmz0gZ8=
|
||||
github.com/qiniu/x v7.0.8+incompatible/go.mod h1:KpRKWYG/GaidPQVpoQ2Cvuvtts3gYnoo2PftgdmAiU4=
|
||||
github.com/richardlehane/mscfb v1.0.4 h1:WULscsljNPConisD5hR0+OyZjwK46Pfyr6mPu5ZawpM=
|
||||
github.com/richardlehane/mscfb v1.0.4/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7gK3DypaEsUk=
|
||||
github.com/richardlehane/msoleps v1.0.1 h1:RfrALnSNXzmXLbGct/P2b4xkFz4e8Gmj/0Vj9M9xC1o=
|
||||
github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg=
|
||||
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
|
||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||
github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
|
||||
|
@ -260,6 +266,12 @@ github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLY
|
|||
github.com/wechatpay-apiv3/wechatpay-go v0.2.6 h1:iWXgJ7nt8vTMU/MYYdZa6yklC8r4qdAJu+CKnRe0Bo0=
|
||||
github.com/wechatpay-apiv3/wechatpay-go v0.2.6/go.mod h1:W8ucVAOCKOii933cWROLaDLmRQ2cg/vHHVF4vGAVq9Q=
|
||||
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
|
||||
github.com/xuri/efp v0.0.0-20220407160117-ad0f7a785be8 h1:3X7aE0iLKJ5j+tz58BpvIZkXNV7Yq4jC93Z/rbN2Fxk=
|
||||
github.com/xuri/efp v0.0.0-20220407160117-ad0f7a785be8/go.mod h1:ybY/Jr0T0GTCnYjKqmdwxyxn2BQf2RcQIIvex5QldPI=
|
||||
github.com/xuri/excelize/v2 v2.6.0 h1:m/aXAzSAqxgt74Nfd+sNzpzVKhTGl7+S9nbG4A57mF4=
|
||||
github.com/xuri/excelize/v2 v2.6.0/go.mod h1:Q1YetlHesXEKwGFfeJn7PfEZz2IvHb6wdOeYjBxVcVs=
|
||||
github.com/xuri/nfp v0.0.0-20220409054826-5e722a1d9e22 h1:OAmKAfT06//esDdpi/DZ8Qsdt4+M5+ltca05dA5bG2M=
|
||||
github.com/xuri/nfp v0.0.0-20220409054826-5e722a1d9e22/go.mod h1:WwHg+CVyzlv/TX9xqBFXEZAuxOPxn2k1GNHwG41IIUQ=
|
||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
|
||||
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
|
||||
|
@ -275,8 +287,9 @@ golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8U
|
|||
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20220408190544-5352b0902921 h1:iU7T1X1J6yxDr0rda54sWGkHgOp5XJrqm79gcNlC2VM=
|
||||
golang.org/x/crypto v0.0.0-20220408190544-5352b0902921/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
||||
|
@ -284,6 +297,8 @@ golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm0
|
|||
golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
|
||||
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
||||
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||
golang.org/x/image v0.0.0-20211028202545-6944b10bf410 h1:hTftEOvwiOq2+O8k2D5/Q7COC7k5Qcrgc2TFURJYnvQ=
|
||||
golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM=
|
||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
||||
golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
|
@ -313,8 +328,10 @@ golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR
|
|||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI=
|
||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20220407224826-aac1ed45d8e3 h1:EN5+DfgmRMvRUrMGERW2gQl3Vc+Z7ZMnI/xdEpPSf0c=
|
||||
golang.org/x/net v0.0.0-20220407224826-aac1ed45d8e3/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
|
@ -342,13 +359,21 @@ golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7w
|
|||
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4 h1:myAQVi0cGEoqQVR5POX+8RR2mrocKqNN1hmeMqhX27k=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e h1:fLOSk5Q00efkSvAm+4xcoXD+RRmLmmulPn5I3Y9F2EM=
|
||||
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
|
|
|
@ -99,6 +99,7 @@ const (
|
|||
CardRetrieveBefore6Month = 500515 // 用户收回卡需要半年后
|
||||
IssueFeedbackRepetition = 500516 // 问题反馈已存在,不能重复反馈
|
||||
TodayAttendance = 500517 // 已签到
|
||||
NoAuth = 500519 // 没有权限
|
||||
GoodsNotSale = 500508 // 商品已下架
|
||||
|
||||
ToastErr = 600 // 报错
|
||||
|
@ -202,7 +203,9 @@ var statusMsg = map[int]string{
|
|||
HbKeySendFail: "口令发送失败,60秒后重试",
|
||||
IsNoviceFail: "该用户不是新用户",
|
||||
|
||||
CheckInAlready: "今日已签到",
|
||||
CheckInAlready: "今日已签到",
|
||||
NoAuth: "没有权限",
|
||||
|
||||
OpenChestTimeNot: "宝箱时间未到",
|
||||
|
||||
NotExists: "请求的资源不存在",
|
||||
|
|
|
@ -31,6 +31,10 @@ func TodayZero() time.Time {
|
|||
return tm
|
||||
}
|
||||
|
||||
func MonthDate() string {
|
||||
return NowTime().Format("2006-01")
|
||||
}
|
||||
|
||||
func TodayZeroAddDays(days int) time.Time {
|
||||
return TodayZero().AddDate(0, 0, days)
|
||||
}
|
||||
|
@ -58,3 +62,7 @@ func Yesterday() time.Time {
|
|||
func TodayAddDays(days int) time.Time {
|
||||
return Now().AddDate(0, 0, days)
|
||||
}
|
||||
|
||||
func NowTime() time.Time {
|
||||
return time.Now().In(cstZone)
|
||||
}
|
||||
|
|
7825
model/autogenerated_cooperative_business.go
Normal file
7825
model/autogenerated_cooperative_business.go
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,15 +1,28 @@
|
|||
package model
|
||||
|
||||
import "time"
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/codinl/go-logger"
|
||||
"github.com/jinzhu/gorm"
|
||||
"mh-server/lib/utils"
|
||||
"time"
|
||||
)
|
||||
|
||||
//go:generate goqueryset -in cooperative_business.go
|
||||
// gen:qs
|
||||
type CooperativeBusiness struct {
|
||||
Model
|
||||
Name string `json:"name"` //
|
||||
AddTime time.Time `json:"add_time"` // 加入时间
|
||||
//Identification string `json:"identification"` // 标识
|
||||
Name string `json:"name" binding:"required"` //
|
||||
AddTime time.Time `json:"add_time"` // 加入时间
|
||||
Avatar string `json:"avatar" binding:"required"`
|
||||
Address string `json:"address" binding:"required"`
|
||||
Tel string `json:"tel" binding:"required"`
|
||||
|
||||
CooperativeMemberDeduct *CooperativeMemberDeduct `json:"cooperative_member_deduct" gorm:"-"`
|
||||
CooperativeAssistantMemberDeduct *CooperativeAssistantMemberDeduct `json:"cooperative_assistant_member_deduct" gorm:"-"`
|
||||
//Identification string `json:"identification"` // 标识
|
||||
// cooperative_business
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -17,6 +30,427 @@ type CooperativeBusiness struct {
|
|||
游戏
|
||||
卡
|
||||
库存
|
||||
用户 绑定门店 店员
|
||||
|
||||
借卡 订单
|
||||
|
||||
*/
|
||||
|
||||
// gen:qs
|
||||
type CooperativeMemberDeduct struct {
|
||||
Model
|
||||
CooperativeBusinessId uint32 `json:"cooperative_business_id" gorm:"index"`
|
||||
GoldDeduct uint32 `json:"gold_deduct"` // 黄金会员提成
|
||||
PlatinumDeduct uint32 `json:"platinum_deduct"` // 白金会员提成
|
||||
BlackGoldDeduct uint32 `json:"black_gold_deduct"` // 黑金金会员提成
|
||||
// cooperative_member_deduct
|
||||
}
|
||||
|
||||
// gen:qs
|
||||
type CooperativeAssistantMemberDeduct struct {
|
||||
Model
|
||||
CooperativeBusinessId uint32 `json:"cooperative_business_id" gorm:"index"`
|
||||
StoreId uint32 `json:"store_id" gorm:"index"` //
|
||||
GoldDeduct uint32 `json:"gold_deduct"` // 黄金会员提成
|
||||
PlatinumDeduct uint32 `json:"platinum_deduct"` // 白金会员提成
|
||||
BlackGoldDeduct uint32 `json:"black_gold_deduct"` // 黑金金会员提成
|
||||
// cooperative_assistant_member_deduct
|
||||
}
|
||||
|
||||
const (
|
||||
PromotionStateUnSettlement = "un_settlement"
|
||||
PromotionStateFinancePay = "finance_pay"
|
||||
PromotionStateSettled = "settled"
|
||||
)
|
||||
|
||||
// 合作商推广会员
|
||||
// gen:qs
|
||||
type CooperativeMemberPromotion struct {
|
||||
Model
|
||||
CooperativeBusinessId uint32 `json:"cooperative_business_id" gorm:"index"`
|
||||
CooperativeName string `json:"cooperative_name"` // 合作商名称
|
||||
GoldCount uint32 `json:"gold_count"` // 黄金会员数量
|
||||
PlatinumCount uint32 `json:"platinum_count"` // 白金会员数量
|
||||
BlackGoldCount uint32 `json:"black_gold_count"` // 黑金会员数量
|
||||
Date string `json:"date" gorm:"index"` //
|
||||
State string `json:"state"` // 待发起结算 待财务打款 已结算
|
||||
// cooperative_member_promotion
|
||||
}
|
||||
|
||||
// 合作商推广会员门店 饼图
|
||||
// gen:qs
|
||||
type CooperativeMemberPromotionStore struct {
|
||||
Model
|
||||
CooperativeBusinessId uint32 `json:"cooperative_business_id" gorm:"index"`
|
||||
CooperativeName string `json:"cooperative_name"` // 合作商名称
|
||||
StoreId uint32 `json:"store_id" gorm:"index"` // 门店id
|
||||
GoldCount uint32 `json:"gold_count"` // 黄金会员数量
|
||||
PlatinumCount uint32 `json:"platinum_count"` // 白金会员数量
|
||||
BlackGoldCount uint32 `json:"black_gold_count"` // 黑金会员数量
|
||||
Date string `json:"date" gorm:"index"` //
|
||||
// cooperative_member_promotion_store
|
||||
}
|
||||
|
||||
// 合作商推广会员每天
|
||||
// gen:qs
|
||||
type CooperativeMemberPromotionDay struct {
|
||||
Model
|
||||
CooperativeBusinessId uint32 `json:"cooperative_business_id" gorm:"index"`
|
||||
CooperativeName string `json:"cooperative_name"` // 合作商名称
|
||||
GoldCount uint32 `json:"gold_count"` // 黄金会员数量
|
||||
PlatinumCount uint32 `json:"platinum_count"` // 白金会员数量
|
||||
BlackGoldCount uint32 `json:"black_gold_count"` // 黑金会员数量
|
||||
DayTime string `json:"day_time" gorm:"index"` //
|
||||
// cooperative_member_promotion_day
|
||||
}
|
||||
|
||||
// 合作商推广会员门店每天 柱状图
|
||||
// gen:qs
|
||||
type CooperativeMemberPromotionStoreDay struct {
|
||||
Model
|
||||
CooperativeBusinessId uint32 `json:"cooperative_business_id" gorm:"index"`
|
||||
CooperativeName string `json:"cooperative_name"` // 合作商名称
|
||||
StoreId uint32 `json:"store_id" gorm:"index"` // 门店id
|
||||
GoldCount uint32 `json:"gold_count"` // 黄金会员数量
|
||||
PlatinumCount uint32 `json:"platinum_count"` // 白金会员数量
|
||||
BlackGoldCount uint32 `json:"black_gold_count"` // 黑金会员数量
|
||||
DayTime string `json:"day_time" gorm:"index"` //
|
||||
//
|
||||
}
|
||||
|
||||
// gen:qs
|
||||
type CooperativeDeductSettle struct {
|
||||
Model
|
||||
CooperativeMemberPromotionId uint32 `json:"cooperative_member_promotion_id" gorm:"index"`
|
||||
CooperativeBusinessId uint32 `json:"cooperative_business_id" gorm:"index"`
|
||||
CooperativeName string `json:"cooperative_name"` // 合作商名称
|
||||
DeductAmount uint32 `json:"deduct_amount"` // 提成金额
|
||||
Date string `json:"date" gorm:"index"` //
|
||||
State string `json:"state"` // 待财务打款 已结算
|
||||
GoldCount uint32 `json:"gold_count"` // 黄金会员数量
|
||||
PlatinumCount uint32 `json:"platinum_count"` // 白金会员数量
|
||||
BlackGoldCount uint32 `json:"black_gold_count"` // 黑金会员数量
|
||||
GoldDeduct uint32 `json:"gold_deduct"` // 黄金会员提成配置
|
||||
PlatinumDeduct uint32 `json:"platinum_deduct"` // 白金会员提成配置
|
||||
BlackGoldDeduct uint32 `json:"black_gold_deduct"` // 黑金会员提成配置
|
||||
}
|
||||
|
||||
func AddCooperativeMemberPromotion(cooperativeId, storeId, assistantUid uint32, memberLevel int) {
|
||||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
logger.Error("err:", err)
|
||||
}
|
||||
}()
|
||||
var cooperativeBusiness CooperativeBusiness
|
||||
err := NewCooperativeBusinessQuerySet(DB).IDEq(cooperativeId).One(&cooperativeBusiness)
|
||||
if err != nil {
|
||||
logger.Error("cooperative business err:", err)
|
||||
return
|
||||
}
|
||||
|
||||
go func() {
|
||||
promotion := &CooperativeMemberPromotion{CooperativeBusinessId: cooperativeId, CooperativeName: cooperativeBusiness.Name}
|
||||
promotionStore := &CooperativeMemberPromotionStore{CooperativeBusinessId: cooperativeId, CooperativeName: cooperativeBusiness.Name}
|
||||
promotionDay := &CooperativeMemberPromotionDay{CooperativeBusinessId: cooperativeId, CooperativeName: cooperativeBusiness.Name}
|
||||
promotionStoreDay := &CooperativeMemberPromotionStoreDay{CooperativeBusinessId: cooperativeId, CooperativeName: cooperativeBusiness.Name}
|
||||
inviteReport := &InviteMemberReport{CooperativeBusinessId: cooperativeId, CooperativeName: cooperativeBusiness.Name,
|
||||
Uid: assistantUid, StoreId: storeId,
|
||||
}
|
||||
begin := DB.Begin()
|
||||
err := promotion.AddPromotion(begin, memberLevel)
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("promotion add promotion err:", err)
|
||||
return
|
||||
}
|
||||
|
||||
err = promotionStore.AddPromotion(begin, memberLevel, storeId)
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("promotion add promotion err:", err)
|
||||
return
|
||||
}
|
||||
|
||||
err = promotionDay.AddPromotion(begin, memberLevel)
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("promotion add promotion err:", err)
|
||||
return
|
||||
}
|
||||
|
||||
err = promotionStoreDay.AddPromotion(begin, memberLevel, storeId)
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("promotion add promotion err:", err)
|
||||
return
|
||||
}
|
||||
|
||||
err = inviteReport.AddPromotion(begin, memberLevel)
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("promotion add promotion err:", err)
|
||||
return
|
||||
}
|
||||
err = begin.Commit().Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("commit err:", err)
|
||||
return
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
func (m *CooperativeMemberPromotion) AddPromotion(gdb *gorm.DB, memberLevel int) error {
|
||||
dateString := utils.MonthDate()
|
||||
if memberLevel < 0 {
|
||||
return errors.New("member level err")
|
||||
}
|
||||
m.Date = dateString
|
||||
sql := ""
|
||||
switch memberLevel {
|
||||
case 2:
|
||||
sql = "UPDATE cooperative_member_promotion SET gold_count=gold_count+1 " +
|
||||
fmt.Sprintf("WHERE date=%s AND cooperative_business_id=%d", dateString, m.CooperativeBusinessId)
|
||||
m.GoldCount = 1
|
||||
case 4:
|
||||
sql = "UPDATE cooperative_member_promotion SET platinum_count=platinum_count+1 " +
|
||||
fmt.Sprintf("WHERE date=%s AND cooperative_business_id=%d", dateString, m.CooperativeBusinessId)
|
||||
m.PlatinumCount = 1
|
||||
case 5:
|
||||
sql = "UPDATE cooperative_member_promotion SET black_gold_count=black_gold_count+1 " +
|
||||
fmt.Sprintf("WHERE date=%s AND cooperative_business_id=%d", dateString, m.CooperativeBusinessId)
|
||||
m.BlackGoldCount = 1
|
||||
}
|
||||
fmt.Println("邀请会员sql:", sql)
|
||||
exist, err := QueryRecordExist(fmt.Sprintf(
|
||||
"SELECT * FROM cooperative_member_promotion WHERE cooperative_business_id=%d AND date=%s",
|
||||
m.CooperativeBusinessId, dateString))
|
||||
if err != nil {
|
||||
logger.Error("cooperative member promotion record exist err:", err)
|
||||
return err
|
||||
}
|
||||
if exist {
|
||||
err = gdb.Exec(sql).Error
|
||||
if err != nil {
|
||||
logger.Error("update cooperative member promotion err:", err)
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
m.State = PromotionStateUnSettlement
|
||||
err = gdb.Create(m).Error
|
||||
if err != nil {
|
||||
logger.Error("create cooperative member promotion err:", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *CooperativeMemberPromotionStore) AddPromotion(gdb *gorm.DB, memberLevel int, storeId uint32) error {
|
||||
dateString := utils.MonthDate()
|
||||
if memberLevel < 0 {
|
||||
return errors.New("member level err")
|
||||
}
|
||||
m.Date = dateString
|
||||
m.StoreId = storeId
|
||||
sql := ""
|
||||
switch memberLevel {
|
||||
case 2:
|
||||
sql = "UPDATE cooperative_member_promotion_store SET gold_count=gold_count+1 " +
|
||||
fmt.Sprintf("WHERE date=%s AND cooperative_business_id=%d AND store_id=%d",
|
||||
dateString, m.CooperativeBusinessId, storeId)
|
||||
m.GoldCount = 1
|
||||
case 4:
|
||||
sql = "UPDATE cooperative_member_promotion_store SET platinum_count=platinum_count+1 " +
|
||||
fmt.Sprintf("WHERE date=%s AND cooperative_business_id=%d AND store_id=%d",
|
||||
dateString, m.CooperativeBusinessId, storeId)
|
||||
m.PlatinumCount = 1
|
||||
case 5:
|
||||
sql = "UPDATE cooperative_member_promotion_store SET black_gold_count=black_gold_count+1 " +
|
||||
fmt.Sprintf("WHERE date=%s AND cooperative_business_id=%d AND store_id=%d",
|
||||
dateString, m.CooperativeBusinessId, storeId)
|
||||
m.BlackGoldCount = 1
|
||||
}
|
||||
exist, err := QueryRecordExist(fmt.Sprintf(
|
||||
"SELECT * FROM cooperative_member_promotion_store WHERE cooperative_business_id=%d AND date=%s AND store_id=%d",
|
||||
m.CooperativeBusinessId, dateString, storeId))
|
||||
if err != nil {
|
||||
logger.Error("cooperative member promotion record exist err:", err)
|
||||
return err
|
||||
}
|
||||
if exist {
|
||||
err = gdb.Exec(sql).Error
|
||||
if err != nil {
|
||||
logger.Error("update cooperative member promotion err:", err)
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
err = gdb.Create(m).Error
|
||||
if err != nil {
|
||||
logger.Error("create cooperative member promotion err:", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *CooperativeMemberPromotionDay) AddPromotion(gdb *gorm.DB, memberLevel int) error {
|
||||
dayString := utils.TodayZeroDateFormat()
|
||||
if memberLevel < 0 {
|
||||
return errors.New("member level err")
|
||||
}
|
||||
m.DayTime = dayString
|
||||
sql := ""
|
||||
switch memberLevel {
|
||||
case 2:
|
||||
sql = "UPDATE cooperative_member_promotion_day SET gold_count=gold_count+1 " +
|
||||
fmt.Sprintf("WHERE day_time=%s AND cooperative_business_id=%d", dayString, m.CooperativeBusinessId)
|
||||
m.GoldCount = 1
|
||||
case 4:
|
||||
sql = "UPDATE cooperative_member_promotion_day SET platinum_count=platinum_count+1 " +
|
||||
fmt.Sprintf("WHERE day_time=%s AND cooperative_business_id=%d", dayString, m.CooperativeBusinessId)
|
||||
m.PlatinumCount = 1
|
||||
case 5:
|
||||
sql = "UPDATE cooperative_member_promotion_day SET black_gold_count=black_gold_count+1 " +
|
||||
fmt.Sprintf("WHERE day_time=%s AND cooperative_business_id=%d", dayString, m.CooperativeBusinessId)
|
||||
m.BlackGoldCount = 1
|
||||
}
|
||||
exist, err := QueryRecordExist(fmt.Sprintf(
|
||||
"SELECT * FROM cooperative_member_promotion_day WHERE cooperative_business_id=%d AND day_time=%s",
|
||||
m.CooperativeBusinessId, dayString))
|
||||
if err != nil {
|
||||
logger.Error("cooperative member promotion record exist err:", err)
|
||||
return err
|
||||
}
|
||||
if exist {
|
||||
err = gdb.Exec(sql).Error
|
||||
if err != nil {
|
||||
logger.Error("update cooperative member promotion day err:", err)
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
err = gdb.Create(m).Error
|
||||
if err != nil {
|
||||
logger.Error("create cooperative member promotion day err:", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *CooperativeMemberPromotionStoreDay) AddPromotion(gdb *gorm.DB, memberLevel int, storeId uint32) error {
|
||||
dateString := utils.TodayZeroDateFormat()
|
||||
if memberLevel < 0 {
|
||||
return errors.New("member level err")
|
||||
}
|
||||
m.DayTime = dateString
|
||||
m.StoreId = storeId
|
||||
sql := ""
|
||||
switch memberLevel {
|
||||
case 2:
|
||||
sql = "UPDATE cooperative_member_promotion_store_day SET gold_count=gold_count+1 " +
|
||||
fmt.Sprintf("WHERE day_time=%s AND cooperative_business_id=%d AND store_id=%d",
|
||||
dateString, m.CooperativeBusinessId, storeId)
|
||||
m.GoldCount = 1
|
||||
case 4:
|
||||
sql = "UPDATE cooperative_member_promotion_store_day SET platinum_count=platinum_count+1 " +
|
||||
fmt.Sprintf("WHERE day_time=%s AND cooperative_business_id=%d AND store_id=%d",
|
||||
dateString, m.CooperativeBusinessId, storeId)
|
||||
m.PlatinumCount = 1
|
||||
case 5:
|
||||
sql = "UPDATE cooperative_member_promotion_store_day SET black_gold_count=black_gold_count+1 " +
|
||||
fmt.Sprintf("WHERE day_time=%s AND cooperative_business_id=%d AND store_id=%d",
|
||||
dateString, m.CooperativeBusinessId, storeId)
|
||||
m.BlackGoldCount = 1
|
||||
}
|
||||
exist, err := QueryRecordExist("SELECT * FROM cooperative_member_promotion_store_day " +
|
||||
fmt.Sprintf("WHERE cooperative_business_id=%d AND day_time=%s AND store_id=%d",
|
||||
m.CooperativeBusinessId, dateString, storeId))
|
||||
if err != nil {
|
||||
logger.Error("cooperative member promotion store day record exist err:", err)
|
||||
return err
|
||||
}
|
||||
if exist {
|
||||
err = gdb.Exec(sql).Error
|
||||
if err != nil {
|
||||
logger.Error("update cooperative member promotion store day err:", err)
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
err = gdb.Create(m).Error
|
||||
if err != nil {
|
||||
logger.Error("create cooperative member promotion store day err:", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *InviteMemberReport) AddPromotion(gdb *gorm.DB, memberLevel int) error {
|
||||
dateString := utils.MonthDate()
|
||||
if memberLevel < 0 {
|
||||
return errors.New("member level err")
|
||||
}
|
||||
if gdb == nil {
|
||||
gdb = DB
|
||||
}
|
||||
if m.StoreId == 0 {
|
||||
return errors.New("store id is null")
|
||||
}
|
||||
if m.Uid == 0 {
|
||||
return errors.New("uid is null")
|
||||
}
|
||||
m.ReportTime = dateString
|
||||
sql := ""
|
||||
switch memberLevel {
|
||||
case 2:
|
||||
sql = "UPDATE invite_member_report SET gold_count=gold_count+1 " +
|
||||
fmt.Sprintf("WHERE report_time=%s AND cooperative_business_id=%d AND store_id=%d AND uid=%d",
|
||||
dateString, m.CooperativeBusinessId, m.StoreId, m.Uid)
|
||||
m.GoldCount = 1
|
||||
case 4:
|
||||
sql = "UPDATE invite_member_report SET platinum_count=platinum_count+1 " +
|
||||
fmt.Sprintf("WHERE report_time=%s AND cooperative_business_id=%d AND store_id=%d AND uid=%d",
|
||||
dateString, m.CooperativeBusinessId, m.StoreId, m.Uid)
|
||||
m.PlatinumCount = 1
|
||||
case 5:
|
||||
sql = "UPDATE invite_member_report SET black_gold_count=black_gold_count+1 " +
|
||||
fmt.Sprintf("WHERE report_time=%s AND cooperative_business_id=%d AND store_id=%d AND uid=%d",
|
||||
dateString, m.CooperativeBusinessId, m.StoreId, m.Uid)
|
||||
m.BlackGoldCount = 1
|
||||
}
|
||||
|
||||
exist, err := QueryRecordExist(fmt.Sprintf(
|
||||
"SELECT * FROM invite_member_report WHERE cooperative_business_id=%d AND report_time=%s AND store_id=%d AND uid=%d",
|
||||
m.CooperativeBusinessId, dateString, m.StoreId, m.Uid))
|
||||
if err != nil {
|
||||
logger.Error("cooperative member promotion record exist err:", err)
|
||||
return err
|
||||
}
|
||||
if exist {
|
||||
err = gdb.Exec(sql).Error
|
||||
if err != nil {
|
||||
logger.Error("update cooperative member promotion err:", err)
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
//m.State = PromotionStateUnSettlement
|
||||
err = gdb.Create(m).Error
|
||||
if err != nil {
|
||||
logger.Error("create cooperative member promotion err:", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *CooperativeBusiness) SetAssistantMemberDeductConfig(storeId uint32) {
|
||||
var assistantDeductConfig CooperativeAssistantMemberDeduct
|
||||
err := DB.Table("cooperative_assistant_member_deduct").Where("cooperative_business_id=?", m.ID).
|
||||
Where("store_id=?", storeId).Order("id DESC").Limit(1).Find(&assistantDeductConfig).Error
|
||||
if err != nil && err != RecordNotFound {
|
||||
logger.Error("cooperative err:", err)
|
||||
return
|
||||
}
|
||||
m.CooperativeAssistantMemberDeduct = &assistantDeductConfig
|
||||
}
|
||||
|
|
1111
model/game_card.go
1111
model/game_card.go
File diff suppressed because it is too large
Load Diff
|
@ -11,6 +11,7 @@ import (
|
|||
//"github.com/andreburgaud/crypt2go/padding"
|
||||
"github.com/codinl/go-logger"
|
||||
"github.com/jinzhu/gorm"
|
||||
"github.com/xuri/excelize/v2"
|
||||
"math/rand"
|
||||
"strings"
|
||||
"testing"
|
||||
|
@ -74,61 +75,33 @@ func InitTestDB() {
|
|||
db.SingularTable(true)
|
||||
|
||||
db.AutoMigrate(
|
||||
//&User{},
|
||||
////&LotteryInviteTargetUser{},
|
||||
//&GameCard{},
|
||||
//&Collection{},
|
||||
//&Config{},
|
||||
//&HistoryBrowsing{},
|
||||
//&ShoppingCart{},
|
||||
//&UserAddress{},
|
||||
//&SearchHistory{},
|
||||
//&Order{},
|
||||
//&HotSearch{},
|
||||
//&HomeCarousel{},
|
||||
//&GameCardType{},
|
||||
//&Store{},
|
||||
//&GameType{},
|
||||
//&UserOpenMemberRecord{},
|
||||
//&CommonProblem{},
|
||||
//&ExpressCompany{},
|
||||
//&GameCardGoodsStock{},
|
||||
//&GameCardGoods{},
|
||||
//&UserInvite{},
|
||||
//&ArticleTitlePanel{},
|
||||
//&RedeemCode{},
|
||||
//&UserRedeemCode{},
|
||||
//&DepositRefundRecord{},
|
||||
//&GroupSendMessageTemplate{},
|
||||
//
|
||||
//&Goods{},
|
||||
//&GoodsOrder{},
|
||||
//&UserVm{},
|
||||
//&UserVmRecord{},
|
||||
//
|
||||
//&OrderCard{},
|
||||
//&UserRentCard{},
|
||||
//&UserConsumeRecord{},
|
||||
//&UserMemberExpireDelay{},
|
||||
//
|
||||
//&UserShareCardBill{},
|
||||
//&ShareCardBillGame{},
|
||||
//&UserShareCard{},
|
||||
//&ShareCardVmRecord{},
|
||||
//&UserShareCardVm{},
|
||||
//&ShareCardDateVm{},
|
||||
//&ShareCardVmRecord{},
|
||||
//&ShareCardRetrieve{},
|
||||
//&ShareCardRetrieveCard{},
|
||||
//&GameCardLabel{},
|
||||
//&CardIssueFeedback{},
|
||||
//&GameShareCardVm{},
|
||||
|
||||
//&GameCard{},
|
||||
//&FundRecord{},
|
||||
//&User{},
|
||||
//&UserAttendance{},
|
||||
//&UserAttendanceRecord{},
|
||||
|
||||
// 合作商
|
||||
&Store{},
|
||||
&GameCard{},
|
||||
&FundRecord{},
|
||||
&GameCardGoods{},
|
||||
&GameCardGoodsStock{},
|
||||
&User{},
|
||||
&UserAttendance{},
|
||||
&UserAttendanceRecord{},
|
||||
&Order{},
|
||||
&OrderCard{},
|
||||
|
||||
&OperationLog{},
|
||||
&CooperativeBusiness{},
|
||||
&CooperativeMemberDeduct{},
|
||||
&CooperativeAssistantMemberDeduct{},
|
||||
&CooperativeMemberPromotion{},
|
||||
&CooperativeMemberPromotionStore{},
|
||||
&CooperativeMemberPromotionDay{},
|
||||
&CooperativeMemberPromotionStoreDay{},
|
||||
&InviteMemberReport{},
|
||||
&CooperativeDeductSettle{},
|
||||
&XcxRole{},
|
||||
)
|
||||
|
||||
fmt.Println("DB init success")
|
||||
|
@ -164,31 +137,32 @@ func InitDBProd() {
|
|||
DBProd.LogMode(false)
|
||||
DBProd.SingularTable(true)
|
||||
DBProd.AutoMigrate(
|
||||
//&RedeemCode{},
|
||||
//&UserRedeemCode{},
|
||||
//&GameCardGoods{},
|
||||
//
|
||||
//&UserShareCardBill{},
|
||||
//&ShareCardBillGame{},
|
||||
//&UserShareCard{},
|
||||
//&ShareCardVmRecord{},
|
||||
//&UserShareCardVm{},
|
||||
//&ShareCardDateVm{},
|
||||
//&ShareCardGameVm{},
|
||||
//&ShareCardRetrieve{},
|
||||
//&ShareCardRetrieveCard{},
|
||||
//&GameCardLabel{},
|
||||
//&CardIssueFeedback{},
|
||||
//&RedeemCode{},
|
||||
//&UserRedeemCode{},
|
||||
//&GameCardGoods{},
|
||||
//
|
||||
//&UserShareCardBill{},
|
||||
//&ShareCardBillGame{},
|
||||
//&UserShareCard{},
|
||||
//&ShareCardVmRecord{},
|
||||
//&UserShareCardVm{},
|
||||
//&ShareCardDateVm{},
|
||||
//&ShareCardGameVm{},
|
||||
//&ShareCardRetrieve{},
|
||||
//&ShareCardRetrieveCard{},
|
||||
//&GameCardLabel{},
|
||||
//&CardIssueFeedback{},
|
||||
|
||||
//&GameCard{},
|
||||
//&FundRecord{},
|
||||
//&User{},
|
||||
//&GameCard{},
|
||||
//&FundRecord{},
|
||||
//&User{},
|
||||
|
||||
//&GameCard{},
|
||||
//&FundRecord{},
|
||||
//&User{},
|
||||
//&UserAttendance{},
|
||||
//&UserAttendanceRecord{},
|
||||
|
||||
&GameCard{},
|
||||
&FundRecord{},
|
||||
&User{},
|
||||
&UserAttendance{},
|
||||
&UserAttendanceRecord{},
|
||||
)
|
||||
|
||||
if err := DBProd.DB().Ping(); err != nil {
|
||||
|
@ -1104,3 +1078,83 @@ func UserAttendanceDays() {
|
|||
retJson, _ := json.Marshal(&ret)
|
||||
fmt.Println("ret:", string(retJson))
|
||||
}
|
||||
|
||||
func TestAddCooperativeBusiness(t *testing.T) {
|
||||
InitTestDB()
|
||||
//business := &CooperativeBusiness{
|
||||
// Name: "迪为",
|
||||
// AddTime: time.Now(),
|
||||
//}
|
||||
//err := DBDev.Create(business).Error
|
||||
//if err != nil {
|
||||
// logger.Error("err:")
|
||||
//}
|
||||
deduct := &CooperativeMemberDeduct{
|
||||
CooperativeBusinessId: 1,
|
||||
GoldDeduct: 5000,
|
||||
PlatinumDeduct: 8000,
|
||||
BlackGoldDeduct: 1500,
|
||||
}
|
||||
err := DBDev.Create(deduct).Error
|
||||
if err != nil {
|
||||
logger.Error("err:")
|
||||
}
|
||||
}
|
||||
|
||||
func CreateEx() {
|
||||
file := excelize.NewFile()
|
||||
sheet := "Sheet1"
|
||||
index := file.NewSheet(sheet)
|
||||
|
||||
file.SetCellStr(sheet, "A1", "这个表格")
|
||||
|
||||
file.SetActiveSheet(index)
|
||||
|
||||
err := file.SaveAs("boo.xlsx")
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestAddMemberPromotion(t *testing.T) {
|
||||
AddMemberPromotion()
|
||||
}
|
||||
|
||||
func AddMemberPromotion() {
|
||||
InitTestDB()
|
||||
sql := fmt.Sprintf("UPDATE cooperative_member_promotion SET gold_count=gold_count+1 WHERE date=%s AND cooperative_business_id=%d", "2022-04", 1)
|
||||
err := DBDev.Exec(sql).Error
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestXcxRoleAdd(t *testing.T) {
|
||||
InitTestDB()
|
||||
role := &XcxRole{
|
||||
RoleName: "店长",
|
||||
RoleKey: "shop_manager",
|
||||
RoleSort: 2,
|
||||
Status: "normal",
|
||||
Flag: "",
|
||||
CreateBy: "",
|
||||
UpdateBy: "",
|
||||
Remark: "",
|
||||
}
|
||||
err := DBDev.Create(role).Error
|
||||
if err != nil {
|
||||
logger.Error("err:")
|
||||
}
|
||||
// assistant
|
||||
//shop_manager 长
|
||||
}
|
||||
|
||||
func TestExportGoodsStock(t *testing.T) {
|
||||
InitTestDB()
|
||||
DB = DBDev
|
||||
stock := ExportGoodsStock(13)
|
||||
fmt.Println("stock:", stock)
|
||||
|
||||
}
|
||||
|
|
700
model/order.go
700
model/order.go
|
@ -6,6 +6,7 @@ import (
|
|||
"fmt"
|
||||
"github.com/codinl/go-logger"
|
||||
"github.com/jinzhu/gorm"
|
||||
"golang.org/x/sync/errgroup"
|
||||
"math/rand"
|
||||
"time"
|
||||
)
|
||||
|
@ -62,8 +63,13 @@ type Order struct {
|
|||
RevertExpressDuration uint64 `json:"revert_express_duration"` // 归还物流时长
|
||||
OutTradeNo string `json:"out_trade_no"` // 支付订单
|
||||
Mchid string `json:"mchid"` // 商户
|
||||
CooperativeBusinessId uint32 `json:"cooperative_business_id" gorm:"index"` // 合作商id
|
||||
CooperativeName string `json:"cooperative_name"` // 合作商名称
|
||||
OrderCardId uint32 `json:"order_card_id" gorm:"-"` //
|
||||
|
||||
OrderCardId uint32 `json:"order_card_id" gorm:"-"` //
|
||||
OrderCards []OrderCard `json:"order_cards" gorm:"-"`
|
||||
Store *Store `json:"store" gorm:"-"`
|
||||
UserAddress *UserAddress `json:"user_address" gorm:"-"`
|
||||
}
|
||||
|
||||
// gen:qs
|
||||
|
@ -81,24 +87,28 @@ type OrderCard struct {
|
|||
SerialNumber string `json:"serial_number" gorm:"index"` // 编号
|
||||
PayStatus uint8 `json:"pay_status"` // 支付状态 1-未支付 2-已支付
|
||||
|
||||
RevertStoreId uint64 `json:"revert_store_id"` // 归还门店id
|
||||
RevertTime time.Time `json:"revert_time"` // 归还时间
|
||||
RevertExpressCompany string `json:"revert_express_company"` // 归还物流公司
|
||||
RevertExpressCompanyNo string `json:"revert_express_company_no"` // 归还物流公司编号
|
||||
RevertExpressNo string `json:"revert_express_no"` // 归还物流单号
|
||||
RevertExpressDuration uint64 `json:"revert_express_duration"` // 归还物流时长
|
||||
//Status uint8 `json:"status" gorm:"index"` // 1-待领取 2-游玩中 3-已归还 4-未领取
|
||||
IssueType uint32 `json:"issue_type"` // 问题类型: 1-问题反馈 2-正常
|
||||
Postage uint32 `json:"postage" gorm:"-"` // 邮费
|
||||
ExpressCompany string `json:"express_company" gorm:"-"` // 物流公司
|
||||
ExpressCompanyNo string `json:"express_company_no" gorm:"-"` // 物流公司编号
|
||||
ExpressNo string `json:"express_no" gorm:"-"` // 物流单号
|
||||
RevertStoreId uint64 `json:"revert_store_id"` // 归还门店id
|
||||
RevertTime time.Time `json:"revert_time"` // 归还时间
|
||||
RevertExpressCompany string `json:"revert_express_company"` // 归还物流公司
|
||||
RevertExpressCompanyNo string `json:"revert_express_company_no"` // 归还物流公司编号
|
||||
RevertExpressNo string `json:"revert_express_no"` // 归还物流单号
|
||||
RevertExpressDuration uint64 `json:"revert_express_duration"` // 归还物流时长
|
||||
IssueType uint32 `json:"issue_type"` // 问题类型: 1-问题反馈 2-正常
|
||||
CooperativeBusinessId uint32 `json:"cooperative_business_id" gorm:"index"` // 合作商id
|
||||
CooperativeName string `json:"cooperative_name"` // 合作商名称
|
||||
|
||||
GameName string `json:"name" gorm:"-"` // 名称
|
||||
GamePrice uint32 `json:"price" gorm:"-"` // 价格
|
||||
GameCoverImg string `json:"cover_img" gorm:"-"` // 封面
|
||||
IssueFeedbackStoreId uint32 `json:"issue_feedback_store_id" gorm:"-"` // 问题反馈门店
|
||||
Order *Order `json:"order" gorm:"-"` // 订单
|
||||
Postage uint32 `json:"postage" gorm:"-"` // 邮费
|
||||
ExpressCompany string `json:"express_company" gorm:"-"` // 物流公司
|
||||
ExpressCompanyNo string `json:"express_company_no" gorm:"-"` // 物流公司编号
|
||||
ExpressNo string `json:"express_no" gorm:"-"` // 物流单号
|
||||
GameName string `json:"name" gorm:"-"` // 名称
|
||||
GamePrice uint32 `json:"price" gorm:"-"` // 价格
|
||||
GameCoverImg string `json:"cover_img" gorm:"-"` // 封面
|
||||
IssueFeedbackStoreId uint32 `json:"issue_feedback_store_id" gorm:"-"` // 问题反馈门店
|
||||
Order *Order `json:"order" gorm:"-"` // 订单
|
||||
GameCard *GameCard `json:"game_card" gorm:"-"` // 游戏
|
||||
Store *Store `json:"store" gorm:"-"` // 游戏
|
||||
//Status uint8 `json:"status" gorm:"index"` // 1-待领取 2-游玩中 3-已归还 4-未领取
|
||||
//PickupCode string `json:"pickup_code"` // 取货码
|
||||
}
|
||||
|
||||
|
@ -118,7 +128,6 @@ type OrderInfo struct {
|
|||
}
|
||||
|
||||
func OrderCardListSetGameInfo(list []OrderCard) []OrderCard {
|
||||
//GameCardMap
|
||||
ids := make([]uint32, 0, len(list))
|
||||
orderIds := make([]uint32, 0, len(list))
|
||||
for i, _ := range list {
|
||||
|
@ -141,31 +150,20 @@ func OrderCardListSetGameInfo(list []OrderCard) []OrderCard {
|
|||
return list
|
||||
}
|
||||
|
||||
//fmt.Println("ids:", ids)
|
||||
//NewCardIssueFeedbackQuerySet(DB).SerialNumberEq()
|
||||
//bytes, _ := json.Marshal(&cardMap)
|
||||
//orderMapbytes, _ := json.Marshal(&orderMap)
|
||||
//fmt.Println("cardMap:", string(bytes))
|
||||
//fmt.Println("orderMap:", string(orderMapbytes))
|
||||
for i, _ := range list {
|
||||
//fmt.Println("list[i].GameCardId", list[i].GameCardId)
|
||||
//fmt.Println("list[i].OrderId", list[i].OrderId)
|
||||
gameCard, ok1 := cardMap[list[i].GameCardId]
|
||||
order, ok2 := orderMap[list[i].OrderId]
|
||||
//fmt.Printf("gameCard1:%#v \n", gameCard)
|
||||
if ok1 && ok2 {
|
||||
if order.CardStatus == 2 || order.CardStatus == 3 {
|
||||
order.CardStatus = 4
|
||||
}
|
||||
//fmt.Printf("gameCard2:%#v \n", gameCard)
|
||||
list[i].GameName = gameCard.Name
|
||||
list[i].GameCoverImg = gameCard.CoverImg
|
||||
list[i].GamePrice = gameCard.Price
|
||||
list[i].Order = &order
|
||||
}
|
||||
}
|
||||
//listbytes, _ := json.Marshal(&list)
|
||||
//fmt.Println("listbytes:", string(listbytes))
|
||||
|
||||
return list
|
||||
}
|
||||
|
||||
|
@ -288,7 +286,7 @@ func (m *Order) Revert() error {
|
|||
//qs := NewOrderQuerySet(DB).IDEq(m.ID)
|
||||
//err := qs.One(&order)
|
||||
//if err != nil {
|
||||
// logger.Errorf("err:%#v", err)
|
||||
// logger.Error("err:%#v", err)
|
||||
// return err
|
||||
//}
|
||||
//if order.CardStatus == OrderCardStatusCompleted {
|
||||
|
@ -358,7 +356,7 @@ func (m *Order) RevertCancel() (bool, error) {
|
|||
//qs := NewOrderQuerySet(DB).IDEq(m.ID)
|
||||
//err := qs.One(&order)
|
||||
//if err != nil {
|
||||
// logger.Errorf("err:%#v", err)
|
||||
// logger.Error("err:%#v", err)
|
||||
// return false, err
|
||||
//}
|
||||
//if order.CardStatus != OrderCardStatusReturning {
|
||||
|
@ -844,3 +842,639 @@ func QueryRecordExist(sql string) (bool, error) {
|
|||
|
||||
return recordExist.RecordExist == 1, nil
|
||||
}
|
||||
|
||||
type CooperativeRentCardOrderReq struct {
|
||||
SerialNumber string `json:"serial_number" ` // 编号
|
||||
PickupCode string `json:"pickup_code"` // 取货码
|
||||
OrderId uint32 `json:"order_id"` // 取货码
|
||||
}
|
||||
|
||||
func (m *CooperativeRentCardOrderReq) Info() (Order, error) {
|
||||
var order Order
|
||||
if m.PickupCode != "" {
|
||||
err := NewOrderQuerySet(DB).PickupCodeEq(m.PickupCode).PayStatusEq(PayStatusPaid).
|
||||
CardStatusEq(OrderCardStatusUnPick).One(&order)
|
||||
if err != nil {
|
||||
logger.Error("order err:", err)
|
||||
return order, err
|
||||
}
|
||||
} else if m.SerialNumber != "" {
|
||||
var orderCard OrderCard
|
||||
err := NewOrderCardQuerySet(DB).SerialNumberEq(m.SerialNumber).CardStatusIn(OrderCardStatusPlaying,
|
||||
OrderCardStatusReturning).One(&orderCard)
|
||||
if err != nil {
|
||||
logger.Error("order card err:", err)
|
||||
return order, err
|
||||
}
|
||||
|
||||
err = NewOrderQuerySet(DB).IDEq(orderCard.OrderId).One(&order)
|
||||
if err != nil {
|
||||
logger.Error("order err:", err)
|
||||
return order, err
|
||||
}
|
||||
} else if m.OrderId != 0 {
|
||||
err := NewOrderQuerySet(DB).IDEq(m.OrderId).One(&order)
|
||||
if err != nil {
|
||||
logger.Error("order err:", err)
|
||||
return order, err
|
||||
}
|
||||
} else {
|
||||
return order, errors.New("parameter_err")
|
||||
}
|
||||
|
||||
var orderCards []OrderCard
|
||||
err := NewOrderCardQuerySet(DB).OrderIdEq(order.ID).All(&orderCards)
|
||||
if err != nil {
|
||||
logger.Error("order card err:", err)
|
||||
return order, err
|
||||
}
|
||||
var store Store
|
||||
err = NewStoreQuerySet(DB).IDEq(uint32(order.StoreId)).One(&store)
|
||||
if err != nil {
|
||||
logger.Error("store err:", err)
|
||||
return order, err
|
||||
}
|
||||
if order.UserAddressId != 0 {
|
||||
var address UserAddress
|
||||
err = NewUserAddressQuerySet(DB).IDEq(uint32(order.UserAddressId)).One(&address)
|
||||
if err != nil {
|
||||
logger.Error("address err:", err)
|
||||
return order, err
|
||||
}
|
||||
order.UserAddress = &address
|
||||
}
|
||||
order.Store = &store
|
||||
order.OrderCards = CooperativeOrderCardListSetInfo(orderCards)
|
||||
return order, nil
|
||||
}
|
||||
|
||||
func CooperativeOrderCardListSetInfo(list []OrderCard) []OrderCard {
|
||||
ids := make([]uint32, 0, len(list))
|
||||
for i, _ := range list {
|
||||
ids = append(ids, list[i].GameCardId)
|
||||
}
|
||||
if len(ids) == 0 {
|
||||
return list
|
||||
}
|
||||
|
||||
cardMap, err := GameCardMap(ids)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return list
|
||||
}
|
||||
|
||||
for i, _ := range list {
|
||||
gameCard, ok1 := cardMap[list[i].GameCardId]
|
||||
if ok1 {
|
||||
list[i].GameName = gameCard.Name
|
||||
list[i].GameCoverImg = gameCard.CoverImg
|
||||
list[i].GamePrice = gameCard.Price
|
||||
}
|
||||
}
|
||||
|
||||
return list
|
||||
}
|
||||
|
||||
func GetStoreMap(ids []uint32) (map[uint32]Store, error) {
|
||||
storeMap := make(map[uint32]Store, 0)
|
||||
if len(ids) == 0 {
|
||||
return storeMap, nil
|
||||
}
|
||||
var stores []Store
|
||||
err := NewStoreQuerySet(DB).IDIn(ids...).All(&stores)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return storeMap, err
|
||||
}
|
||||
|
||||
if len(stores) == 0 {
|
||||
return storeMap, nil
|
||||
}
|
||||
for i, _ := range stores {
|
||||
storeMap[stores[i].ID] = stores[i]
|
||||
}
|
||||
return storeMap, nil
|
||||
}
|
||||
|
||||
func (m *Order) GetById() error {
|
||||
err := NewOrderQuerySet(DB).IDEq(m.ID).One(m)
|
||||
if err != nil {
|
||||
logger.Error("get order err")
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *Order) SetUnPickOrderCards() error {
|
||||
var cards []OrderCard
|
||||
err := NewOrderCardQuerySet(DB).OrderIdEq(m.ID).CardStatusEq(OrderCardStatusUnPick).All(&cards)
|
||||
if err != nil {
|
||||
logger.Error("get order err")
|
||||
return err
|
||||
}
|
||||
m.OrderCards = cards
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *Order) SetOrderCards() error {
|
||||
var cards []OrderCard
|
||||
err := NewOrderCardQuerySet(DB).OrderIdEq(m.ID).All(&cards)
|
||||
if err != nil {
|
||||
logger.Error("get order err")
|
||||
return err
|
||||
}
|
||||
m.OrderCards = cards
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *Order) GetOrderCardMap() (map[string]OrderCard, error) {
|
||||
cardMap := make(map[string]OrderCard, 0)
|
||||
err := m.SetOrderCards()
|
||||
if err != nil {
|
||||
logger.Error("order card err:", err)
|
||||
return cardMap, err
|
||||
}
|
||||
for i, _ := range m.OrderCards {
|
||||
cardMap[m.OrderCards[i].SerialNumber] = m.OrderCards[i]
|
||||
}
|
||||
return cardMap, nil
|
||||
}
|
||||
|
||||
type CooperativeRentCardOrderDeliverReq struct {
|
||||
OrderId uint32 `json:"order_id"`
|
||||
SerialNumbers []string `json:"serial_numbers"`
|
||||
StoreId uint32 `json:"store_id"`
|
||||
ExpressCompany string `json:"express_company"`
|
||||
ExpressCompanyNo string `json:"express_company_no"`
|
||||
ExpressNo string `json:"express_no"`
|
||||
OperationUid uint32 `json:"operation_uid"`
|
||||
}
|
||||
|
||||
func (m *CooperativeRentCardOrderDeliverReq) Deliver() (error, string) {
|
||||
paraMap := make(map[string]interface{}, 0)
|
||||
order := new(Order)
|
||||
order.ID = m.OrderId
|
||||
|
||||
err := order.GetById()
|
||||
if err != nil && err != RecordNotFound {
|
||||
logger.Error("err:", err)
|
||||
return err, ""
|
||||
}
|
||||
err = order.SetUnPickOrderCards()
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return err, ""
|
||||
}
|
||||
if len(m.SerialNumbers) != len(order.OrderCards) || len(m.SerialNumbers) == 0 {
|
||||
logger.Error("发货卡的数量与订单游戏卡数量不一致")
|
||||
return errors.New("发货卡的数量与订单游戏卡数量不一致"), "发货卡的数量与订单游戏卡数量不一致"
|
||||
}
|
||||
|
||||
user := GetUserByUid(uint32(order.Uid))
|
||||
if user.MemberExpire.Before(time.Now()) {
|
||||
logger.Error("会员已过期,不能发货")
|
||||
return errors.New("会员已过期,不能发货"), "会员已过期,不能发货"
|
||||
}
|
||||
|
||||
orderCardMaps := make(map[uint32]OrderCard, 0)
|
||||
for i, _ := range order.OrderCards {
|
||||
orderCardMaps[order.OrderCards[i].ID] = order.OrderCards[i]
|
||||
}
|
||||
receiptTime := time.Time{}
|
||||
if order.DeliveryType == 1 {
|
||||
receiptTime = time.Now()
|
||||
}
|
||||
serialNumberMap := make(map[string]GameCardGoods, 0)
|
||||
var serialGoods []GameCardGoods
|
||||
err = NewGameCardGoodsQuerySet(DB).SerialNumberIn(m.SerialNumbers...).All(&serialGoods)
|
||||
if err != nil {
|
||||
logger.Error("serial goods err:", err)
|
||||
return err, ""
|
||||
}
|
||||
for i, _ := range serialGoods {
|
||||
serialNumberMap[serialGoods[i].SerialNumber] = serialGoods[i]
|
||||
}
|
||||
|
||||
isUpdateOrder := false
|
||||
begin := DB.Begin()
|
||||
for _, serialNumber := range m.SerialNumbers {
|
||||
if serialNumber != "" {
|
||||
continue
|
||||
}
|
||||
paraMap["game_card_serial_number"] = serialNumber
|
||||
gameCardGoods, ok := serialNumberMap["serialNumber"]
|
||||
if !ok {
|
||||
begin.Rollback()
|
||||
logger.Errorf("游戏编号卡未找到:%s", serialNumber)
|
||||
return errors.New("游戏卡未找到"), "编号的游戏卡不存在"
|
||||
}
|
||||
|
||||
if gameCardGoods.Status == GameCardGoodsStatusCannibalize {
|
||||
begin.Rollback()
|
||||
return errors.New("card goods status err"), "该卡在调拨中,不能发货"
|
||||
}
|
||||
if gameCardGoods.Status != GameCardGoodsStatusStock {
|
||||
begin.Rollback()
|
||||
return errors.New("card goods status err"), "该卡状态,不能发货"
|
||||
}
|
||||
|
||||
if order.CardStatus != OrderCardStatusUnPick {
|
||||
begin.Rollback()
|
||||
logger.Error("order not unpick")
|
||||
return errors.New("order not unpick"), "订单不是待取货状态"
|
||||
}
|
||||
if order.PayStatus != PayStatusPaid {
|
||||
begin.Rollback()
|
||||
logger.Error("order not pay")
|
||||
return errors.New("order not pay"), "订单未支付"
|
||||
}
|
||||
|
||||
orderCard := GetOrderCardMapSerialNumberUnset(orderCardMaps, uint32(gameCardGoods.GameCardId))
|
||||
if orderCard == nil {
|
||||
begin.Rollback()
|
||||
logger.Error("发货游戏卡错误")
|
||||
return errors.New("发货游戏卡错误"), "发货游戏卡错误"
|
||||
}
|
||||
|
||||
if m.StoreId != uint32(gameCardGoods.StoreId) {
|
||||
begin.Rollback()
|
||||
logger.Error("游戏编号卡不是该门店")
|
||||
return errors.New("游戏编号卡不是该门店"), "该门店没有改游戏卡"
|
||||
}
|
||||
|
||||
if uint32(m.StoreId) != orderCard.StoreId {
|
||||
begin.Rollback()
|
||||
// 订单锁库存
|
||||
logger.Error("订单门店与发货门店不一致")
|
||||
return errors.New("订单门店与发货门店不一致"), "订单门店与发货门店不一致,请取消订单后重新下单"
|
||||
}
|
||||
|
||||
if !isUpdateOrder {
|
||||
if m.StoreId != 0 {
|
||||
paraMap["store_id"] = m.StoreId
|
||||
paraMap["pickup_code"] = "已取货"
|
||||
paraMap["card_status"] = 4
|
||||
paraMap["store_id"] = m.StoreId
|
||||
paraMap["delivery_time"] = time.Now()
|
||||
}
|
||||
if m.ExpressCompany != "" {
|
||||
paraMap["express_company"] = m.ExpressCompany
|
||||
}
|
||||
if m.ExpressCompanyNo != "" {
|
||||
paraMap["express_company_no"] = m.ExpressCompanyNo
|
||||
}
|
||||
if m.ExpressNo != "" {
|
||||
paraMap["express_no"] = m.ExpressNo
|
||||
}
|
||||
err := begin.Table("order").Where("id", m.OrderId).Updates(paraMap).Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("err:", err)
|
||||
return err, ""
|
||||
}
|
||||
isUpdateOrder = true
|
||||
}
|
||||
|
||||
var eg errgroup.Group
|
||||
eg.Go(func() error {
|
||||
err := begin.Table("game_card_goods").Where("serial_number", serialNumber).
|
||||
Update("status", GameCardGoodsStatusCustomerHold).Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("err:", err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
})
|
||||
eg.Go(func() error {
|
||||
goodsStock := &GameCardGoodsStock{
|
||||
StoreId: uint64(m.StoreId),
|
||||
GameCardId: gameCardGoods.GameCardId,
|
||||
}
|
||||
err = goodsStock.AddUserHoldStock(begin)
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("err:", err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
})
|
||||
|
||||
eg.Go(func() error {
|
||||
user := GetUserByUid(uint32(order.Uid))
|
||||
if user.StoreId == 0 {
|
||||
sql := fmt.Sprintf("UPDATE `user` SET store_id = %d WHERE uid =%d", order.StoreId, order.Uid)
|
||||
err := DB.Exec(sql).Error
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
})
|
||||
eg.Go(func() error {
|
||||
err = begin.Table("order_card").Where("id=?", orderCard.ID).Updates(&map[string]interface{}{
|
||||
"store_id": m.StoreId,
|
||||
"delivery_time": time.Now(),
|
||||
"game_card_goods_id": gameCardGoods.ID,
|
||||
"serial_number": gameCardGoods.SerialNumber,
|
||||
"card_status": 2,
|
||||
"receipt_time": receiptTime,
|
||||
}).Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("err:", err)
|
||||
return err
|
||||
}
|
||||
delete(orderCardMaps, orderCard.ID)
|
||||
return nil
|
||||
})
|
||||
|
||||
err = eg.Wait()
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("err:", err)
|
||||
return err, ""
|
||||
}
|
||||
}
|
||||
|
||||
err = begin.Table("order_card").Where("order_id=?", m.OrderId).Where("uid=?", order.Uid).
|
||||
Where("serial_number=''").Updates(&map[string]interface{}{
|
||||
"card_status": 5,
|
||||
}).Error
|
||||
err = begin.Commit().Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("err:", err)
|
||||
return err, ""
|
||||
}
|
||||
|
||||
// TODO
|
||||
//if m.ExpressCompanyNo != "" && m.ExpressNo != "" {
|
||||
// _, err = kuaidi.SubscribeExpressState(m.ExpressCompanyNo, m.ExpressNo)
|
||||
// if err != nil {
|
||||
// logger.Error("subscribe express state err:", err)
|
||||
// }
|
||||
//}
|
||||
|
||||
operationLog := &OperationLog{
|
||||
Uid: m.OperationUid,
|
||||
Description: "借卡归还入库",
|
||||
OperationType: OperationTypeRentCardDeliver,
|
||||
CorrelationId: order.ID,
|
||||
CorrelationName: LogCorrelationOrderId,
|
||||
StoreId: m.StoreId,
|
||||
StoreName: "",
|
||||
CooperativeName: "",
|
||||
//SerialNumber: m.SerialNumber,
|
||||
}
|
||||
operationLog.AddLog()
|
||||
|
||||
return nil, ""
|
||||
}
|
||||
|
||||
type CooperativeRentCardOrderRevertReq struct {
|
||||
OrderId uint32 `json:"order_id"`
|
||||
SerialNumber string `json:"serial_number"`
|
||||
RevertStoreId uint32 `json:"revert_store_id"`
|
||||
OperationUid uint32 `json:"operation_uid"`
|
||||
}
|
||||
|
||||
func (m *CooperativeRentCardOrderRevertReq) Revert() error {
|
||||
order := new(Order)
|
||||
order.ID = m.OrderId
|
||||
err := order.GetById()
|
||||
if err != nil {
|
||||
logger.Error("get order err:", err)
|
||||
return err
|
||||
}
|
||||
|
||||
cardMap, err := order.GetOrderCardMap()
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return err
|
||||
}
|
||||
orderCardIds := make([]uint32, 0, len(cardMap))
|
||||
orderCardIdString := ""
|
||||
for _, card := range cardMap {
|
||||
orderCardIds = append(orderCardIds, card.ID)
|
||||
orderCardIdString += fmt.Sprintf("%d,", card.ID)
|
||||
}
|
||||
|
||||
recordExist, err := QueryRecordExist(fmt.Sprintf(
|
||||
"SELECT * FROM card_issue_feedback WHERE state='%s' AND relevance_id in (%s)",
|
||||
CardIssueStateFollowing, orderCardIdString[:len(orderCardIdString)-1]))
|
||||
if err != nil {
|
||||
logger.Errorf("err:%#v", err)
|
||||
return err
|
||||
}
|
||||
if recordExist {
|
||||
logger.Error("untreated_issue_feedback")
|
||||
return errors.New("untreated_issue_feedback")
|
||||
}
|
||||
|
||||
serialNumber := m.SerialNumber
|
||||
|
||||
orderCard, ok := cardMap[serialNumber]
|
||||
if !ok {
|
||||
logger.Error("order card is not revert card")
|
||||
return errors.New("order card is not revert card")
|
||||
}
|
||||
if m.RevertStoreId == 0 {
|
||||
logger.Error("revert store id null")
|
||||
return errors.New("revert store id null")
|
||||
}
|
||||
if orderCard.CardStatus != OrderCardStatusReturning && orderCard.CardStatus != OrderCardStatusPlaying {
|
||||
logger.Error("order card status not returning playing ")
|
||||
return errors.New("order card status not returning playing ")
|
||||
}
|
||||
|
||||
gameCardGoods, err := GetGameCardGoodsBySerialNumber(serialNumber)
|
||||
if err != nil {
|
||||
logger.Errorf("err:%#v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
if order.StoreId != gameCardGoods.StoreId {
|
||||
logger.Error("order store id not game card goods store id")
|
||||
return errors.New("order store id not game card goods store id")
|
||||
}
|
||||
|
||||
begin := DB.Begin()
|
||||
var eg errgroup.Group
|
||||
eg.Go(func() error {
|
||||
goodsStatus := GameCardGoodsStatusStock
|
||||
if gameCardGoods.Status == 7 {
|
||||
goodsStatus = GameCardGoodsStatusUnusual
|
||||
}
|
||||
err := begin.Table("game_card_goods").Where("serial_number=?", serialNumber).
|
||||
Updates(map[string]interface{}{
|
||||
"status": goodsStatus,
|
||||
"store_id": m.RevertStoreId,
|
||||
"stock_time": time.Now(),
|
||||
}).Error
|
||||
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("err:", err)
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
eg.Go(func() error {
|
||||
if uint32(gameCardGoods.StoreId) != m.RevertStoreId {
|
||||
sqlStore := fmt.Sprintf(
|
||||
"UPDATE game_card_goods_stock SET user_hold_stock= user_hold_stock-1,order_count=order_count+1,total_stock=total_stock-1 WHERE store_id=%d AND game_card_id=%d;",
|
||||
order.StoreId, gameCardGoods.GameCardId)
|
||||
fmt.Println("sqlStore:", sqlStore)
|
||||
err = begin.Exec(sqlStore).Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("err:", err)
|
||||
return err
|
||||
}
|
||||
|
||||
var count int64
|
||||
err := DB.Table("game_card_goods_stock").Where("store_id", m.RevertStoreId).
|
||||
Where("game_card_id", gameCardGoods.GameCardId).Count(&count).Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("err:", err)
|
||||
return err
|
||||
}
|
||||
if count == 0 && (gameCardGoods.Status != 7 || gameCardGoods.FunctionState != 1) {
|
||||
goodsStock := &GameCardGoodsStock{
|
||||
StoreId: uint64(m.RevertStoreId),
|
||||
GameCardId: gameCardGoods.GameCardId,
|
||||
StoreStock: 0,
|
||||
RentStock: 1,
|
||||
UserHoldStock: 0,
|
||||
OrderCount: 0,
|
||||
TotalStock: 1,
|
||||
}
|
||||
err := begin.Create(goodsStock).Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("err:", err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
} else {
|
||||
if gameCardGoods.Status != 7 || gameCardGoods.FunctionState != 1 {
|
||||
sql := fmt.Sprintf("UPDATE game_card_goods_stock SET rent_stock= rent_stock+1,total_stock=total_stock+1 WHERE store_id=%d AND game_card_id=%d;", m.RevertStoreId, gameCardGoods.GameCardId)
|
||||
fmt.Println("sql:", sql)
|
||||
err = begin.Exec(sql).Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("err:", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
//sqlStore := fmt.Sprintf("UPDATE game_card_goods_stock SET user_hold_stock= user_hold_stock-1,order_count=order_count+1,order_count=order_count+1 WHERE store_id=%d AND game_card_id=%d;", order.StoreId, gameCardGoods.GameCardId)
|
||||
sqlStore := fmt.Sprintf("UPDATE game_card_goods_stock SET user_hold_stock= user_hold_stock-1,order_count=order_count+1 WHERE store_id=%d AND game_card_id=%d;", order.StoreId, gameCardGoods.GameCardId)
|
||||
fmt.Println("sqlStore:", sqlStore)
|
||||
err = begin.Exec(sqlStore).Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("err:", err)
|
||||
return err
|
||||
}
|
||||
if gameCardGoods.Status != 7 || gameCardGoods.FunctionState != 1 {
|
||||
//sql := fmt.Sprintf("UPDATE game_card_goods_stock SET rent_stock= rent_stock+1,user_hold_stock= user_hold_stock-1 WHERE store_id=%d AND game_card_id=%d;", m.RevertStoreId, gameCardGoods.GameCardId)
|
||||
sql := fmt.Sprintf("UPDATE game_card_goods_stock SET rent_stock= rent_stock+1 WHERE store_id=%d AND game_card_id=%d;", m.RevertStoreId, gameCardGoods.GameCardId)
|
||||
fmt.Println("sql:", sql)
|
||||
err = begin.Exec(sql).Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("err:", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
})
|
||||
eg.Go(func() error {
|
||||
if order.GameCardId != 0 {
|
||||
sql := fmt.Sprintf("UPDATE game_card SET order_count = order_count+1 WHERE id = %d", order.GameCardId)
|
||||
err := begin.Exec(sql).Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("err:", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
eg.Go(func() error {
|
||||
err := begin.Table("order_card").Where("id=?", orderCard.ID).Updates(&map[string]interface{}{
|
||||
"card_status": OrderCardStatusCompleted,
|
||||
"revert_store_id": m.RevertStoreId,
|
||||
"revert_time": time.Now(),
|
||||
}).Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("err:", err)
|
||||
return err
|
||||
}
|
||||
var count int64
|
||||
err = DB.Table("order_card").Where("order_id=?", orderCard.OrderId).
|
||||
Where("card_status in (?)", []uint32{1, 2, 3}).Count(&count).Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("err:", err)
|
||||
return err
|
||||
}
|
||||
if count == 0 {
|
||||
err := begin.Table("order").Where("id=?", orderCard.OrderId).Updates(&map[string]interface{}{
|
||||
"card_status": OrderCardStatusCompleted,
|
||||
}).Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("err:", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
})
|
||||
eg.Go(func() error {
|
||||
sql := fmt.Sprintf("UPDATE user_rent_card SET have_rent_count = have_rent_count-1,can_rent_count=can_rent_count+1 WHERE uid =%d;", orderCard.Uid)
|
||||
//sql := fmt.Sprintf("UPDATE user_rent_card SET have_rent_count = have_rent_count-1,can_rent_count=can_rent_count+1 WHERE uid =%d;", m.Uid)
|
||||
fmt.Println("sql:", sql)
|
||||
err = begin.Exec(sql).Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("err:", err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
})
|
||||
err = eg.Wait()
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("err:", err)
|
||||
return err
|
||||
}
|
||||
err = begin.Commit().Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("err:", err)
|
||||
return err
|
||||
}
|
||||
operationLog := &OperationLog{
|
||||
Uid: m.OperationUid,
|
||||
Description: "借卡归还入库",
|
||||
OperationType: OperationTypeRentCardRevert,
|
||||
CorrelationId: orderCard.ID,
|
||||
CorrelationName: LogCorrelationOrderCard,
|
||||
StoreId: m.RevertStoreId,
|
||||
StoreName: "",
|
||||
CooperativeName: "",
|
||||
SerialNumber: m.SerialNumber,
|
||||
}
|
||||
operationLog.AddLog()
|
||||
return nil
|
||||
}
|
||||
|
|
243
model/stock.go
Normal file
243
model/stock.go
Normal file
|
@ -0,0 +1,243 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"encoding/csv"
|
||||
"fmt"
|
||||
"github.com/codinl/go-logger"
|
||||
"github.com/xuri/excelize/v2"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
type ExportGoods struct {
|
||||
GoodsName string `json:"goods_name"`
|
||||
CardPool uint32 `json:"card_pool"`
|
||||
RentStock uint32 `json:"rent_stock"`
|
||||
PlayerHold uint32 `json:"player_hold"`
|
||||
OrderCount uint32 `json:"order_count"`
|
||||
DelayDeliverGameCard uint32 `json:"delay_deliver_game_card"`
|
||||
Goods []GameCardGoods `json:"goods"`
|
||||
}
|
||||
|
||||
func ExportGoodsStock(storeId uint32) string {
|
||||
var games []GameCard
|
||||
err := DB.Table("game_card").Order("id DESC").Find(&games).Error
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return ""
|
||||
}
|
||||
|
||||
if storeId == 0 {
|
||||
allInfo, err := GoodsStockAllInfo(games)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return ""
|
||||
}
|
||||
return GoodsStockFile(allInfo, "全部门店")
|
||||
} else {
|
||||
var store Store
|
||||
err := DB.Table("store").Where("id=?", storeId).Find(&store).Error
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return ""
|
||||
}
|
||||
|
||||
storeInfo, err := GoodsStockStoreInfo(games, storeId)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return ""
|
||||
}
|
||||
|
||||
return GoodsStockFile(storeInfo, store.Name)
|
||||
}
|
||||
}
|
||||
|
||||
func GoodsStockAllInfo(gameCards []GameCard) ([]ExportGoods, error) {
|
||||
goodsData := make([]ExportGoods, 0, len(gameCards))
|
||||
|
||||
cardStocks := make([]GameCardGoodsStock, 0)
|
||||
err := DB.Table("game_card_goods_stock").Order("id DESC").Find(&cardStocks).Error
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return goodsData, err
|
||||
}
|
||||
cardStockMap := make(map[uint64][]GameCardGoodsStock, 0)
|
||||
for i, _ := range cardStocks {
|
||||
cardStockMap[cardStocks[i].GameCardId] = append(cardStockMap[cardStocks[i].GameCardId], cardStocks[i])
|
||||
}
|
||||
|
||||
cardGoods := make([]GameCardGoods, 0)
|
||||
err = DB.Table("game_card_goods").Order("id DESC").Find(&cardGoods).Error
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return goodsData, err
|
||||
}
|
||||
cardGoodsMap := make(map[uint64][]GameCardGoods, 0)
|
||||
for i, _ := range cardGoods {
|
||||
cardGoodsMap[cardGoods[i].GameCardId] = append(cardGoodsMap[cardGoods[i].GameCardId], cardGoods[i])
|
||||
}
|
||||
|
||||
for _, game := range gameCards {
|
||||
cardStock, ok1 := cardStockMap[uint64(game.ID)]
|
||||
gameCardGoods, ok2 := cardGoodsMap[uint64(game.ID)]
|
||||
if !ok1 || !ok2 {
|
||||
continue
|
||||
}
|
||||
|
||||
exportGoods := &ExportGoods{
|
||||
GoodsName: game.Name,
|
||||
Goods: gameCardGoods,
|
||||
}
|
||||
|
||||
for i, _ := range cardStock {
|
||||
exportGoods.RentStock += cardStock[i].RentStock
|
||||
exportGoods.OrderCount += cardStock[i].OrderCount
|
||||
}
|
||||
exportGoods.CardPool = uint32(len(gameCardGoods))
|
||||
for i, _ := range gameCardGoods {
|
||||
if gameCardGoods[i].Status == GameCardGoodsStatusCustomerHold {
|
||||
exportGoods.PlayerHold += 1
|
||||
}
|
||||
}
|
||||
exportGoods.DelayDeliverGameCard = uint32(len(gameCardGoods)) - exportGoods.RentStock - exportGoods.PlayerHold
|
||||
goodsData = append(goodsData, *exportGoods)
|
||||
}
|
||||
return goodsData, err
|
||||
}
|
||||
|
||||
func GoodsStockFile(goodsData []ExportGoods, fileName string) string {
|
||||
url := "http://switch.deovo.com:8000/img/export/"
|
||||
fileName = fileName + time.Now().Format("2006-01-02 15:04:05") + ".csv"
|
||||
// /www/server/images/export
|
||||
//f, err := os.OpenFile(fmt.Sprintf("./")+fileName, os.O_CREATE|os.O_TRUNC|os.O_APPEND|os.O_RDWR, 0644)
|
||||
f, err := os.OpenFile(fmt.Sprintf("/www/server/images/export/")+fileName, os.O_CREATE|os.O_TRUNC|os.O_APPEND|os.O_RDWR, 0644)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return url + fileName
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
w := csv.NewWriter(f)
|
||||
|
||||
headline := []string{"游戏名称", "卡池总数", "在库数量", "玩家持有数量", "锁定数量", "借出总数", "游戏卡编号", "状态"}
|
||||
if err := w.Write(headline); err != nil {
|
||||
logger.Error("error writing record to csv:", err)
|
||||
return url
|
||||
}
|
||||
|
||||
for _, goods := range goodsData {
|
||||
record := []string{goods.GoodsName, fmt.Sprintf("%d", goods.CardPool),
|
||||
fmt.Sprintf("%d", goods.RentStock),
|
||||
fmt.Sprintf("%d", goods.PlayerHold),
|
||||
fmt.Sprintf("%d", goods.DelayDeliverGameCard),
|
||||
fmt.Sprintf("%d", goods.OrderCount)}
|
||||
if len(goods.Goods) > 0 {
|
||||
record = append(record, goods.Goods[0].SerialNumber, GoodsStatusStringByStatus(goods.Goods[0].Status))
|
||||
}
|
||||
if err := w.Write(record); err != nil {
|
||||
logger.Error("error writing record to csv:", err)
|
||||
return url
|
||||
}
|
||||
|
||||
if len(goods.Goods) <= 1 {
|
||||
continue
|
||||
}
|
||||
|
||||
for _, cardGoods := range goods.Goods[1:] {
|
||||
recordGoods := make([]string, 6)
|
||||
recordGoods = append(recordGoods, cardGoods.SerialNumber, GoodsStatusStringByStatus(cardGoods.Status))
|
||||
if err := w.Write(recordGoods); err != nil {
|
||||
logger.Error("error writing record to csv:", err)
|
||||
return url
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
newFile := excelize.NewFile()
|
||||
fmt.Println("newFile:", newFile)
|
||||
|
||||
w.Flush()
|
||||
if err := w.Error(); err != nil {
|
||||
//log.Fatal(err)
|
||||
logger.Error("err:", err)
|
||||
}
|
||||
|
||||
return url + fileName
|
||||
}
|
||||
|
||||
func GoodsStockStoreInfo(gameCards []GameCard, storeId uint32) ([]ExportGoods, error) {
|
||||
goodsData := make([]ExportGoods, 0, len(gameCards))
|
||||
|
||||
cardStocks := make([]GameCardGoodsStock, 0)
|
||||
err := DB.Table("game_card_goods_stock").Where("store_id=?", storeId).Order("id DESC").Find(&cardStocks).Error
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return goodsData, err
|
||||
}
|
||||
cardStockMap := make(map[uint64]GameCardGoodsStock, 0)
|
||||
for i, _ := range cardStocks {
|
||||
cardStockMap[cardStocks[i].GameCardId] = cardStocks[i]
|
||||
}
|
||||
|
||||
cardGoods := make([]GameCardGoods, 0)
|
||||
err = DB.Table("game_card_goods").Where("store_id=?", storeId).Order("id DESC").Find(&cardGoods).Error
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return goodsData, err
|
||||
}
|
||||
cardGoodsMap := make(map[uint64][]GameCardGoods, 0)
|
||||
for i, _ := range cardGoods {
|
||||
cardGoodsMap[cardGoods[i].GameCardId] = append(cardGoodsMap[cardGoods[i].GameCardId], cardGoods[i])
|
||||
}
|
||||
|
||||
for _, game := range gameCards {
|
||||
cardStock, ok1 := cardStockMap[uint64(game.ID)]
|
||||
gameCardGoods, ok2 := cardGoodsMap[uint64(game.ID)]
|
||||
if !ok1 || !ok2 {
|
||||
continue
|
||||
}
|
||||
|
||||
exportGoods := &ExportGoods{
|
||||
GoodsName: game.Name,
|
||||
//CardPool: cardStock.StoreStock,
|
||||
RentStock: cardStock.RentStock,
|
||||
OrderCount: cardStock.OrderCount,
|
||||
Goods: gameCardGoods,
|
||||
}
|
||||
|
||||
exportGoods.CardPool = uint32(len(gameCardGoods))
|
||||
for i, _ := range gameCardGoods {
|
||||
if gameCardGoods[i].Status == GameCardGoodsStatusCustomerHold {
|
||||
exportGoods.PlayerHold += 1
|
||||
}
|
||||
}
|
||||
if uint32(len(gameCardGoods)) > exportGoods.RentStock+exportGoods.PlayerHold {
|
||||
exportGoods.DelayDeliverGameCard = uint32(len(gameCardGoods)) - exportGoods.RentStock - exportGoods.PlayerHold
|
||||
}
|
||||
|
||||
goodsData = append(goodsData, *exportGoods)
|
||||
}
|
||||
|
||||
return goodsData, err
|
||||
}
|
||||
|
||||
func GoodsStatusStringByStatus(status uint32) string {
|
||||
switch status {
|
||||
case 1:
|
||||
return "库存中"
|
||||
case 2:
|
||||
return "在途"
|
||||
case 3:
|
||||
return "客户持有"
|
||||
case 4:
|
||||
return "调拨中"
|
||||
case 5:
|
||||
return "待收回"
|
||||
case 6:
|
||||
return "已收回"
|
||||
case 7:
|
||||
return "异常锁定"
|
||||
}
|
||||
|
||||
return ""
|
||||
}
|
109
model/store.go
109
model/store.go
|
@ -4,6 +4,7 @@ import (
|
|||
"fmt"
|
||||
"github.com/codinl/go-logger"
|
||||
"golang.org/x/sync/errgroup"
|
||||
"time"
|
||||
)
|
||||
|
||||
//go:generate goqueryset -in store.go
|
||||
|
@ -11,16 +12,18 @@ import (
|
|||
type Store struct {
|
||||
Model
|
||||
|
||||
Name string `json:"name"` // 门店名称
|
||||
Img string `json:"img"` // 门面图
|
||||
Tel string `json:"tel" gorm:"type:varchar(20)"` // 电话
|
||||
Province string `json:"province" gorm:"type:varchar(100)"` // 省
|
||||
City string `json:"city" gorm:"type:varchar(100)"` // 市
|
||||
District string `json:"district" gorm:"type:varchar(100)"` // 区
|
||||
Address string `json:"address" gorm:"type:varchar(100)"` // 详细地址
|
||||
Longitude float64 `json:"longitude" gorm:"column:longitude"` // 经度
|
||||
Latitude float64 `json:"latitude" gorm:"column:latitude"` // 纬度
|
||||
IsOnline uint32 `json:"is_online"`
|
||||
Name string `json:"name"` // 门店名称
|
||||
Img string `json:"img"` // 门面图
|
||||
Tel string `json:"tel" gorm:"type:varchar(20)"` // 电话
|
||||
Province string `json:"province" gorm:"type:varchar(100)"` // 省
|
||||
City string `json:"city" gorm:"type:varchar(100)"` // 市
|
||||
District string `json:"district" gorm:"type:varchar(100)"` // 区
|
||||
Address string `json:"address" gorm:"type:varchar(100)"` // 详细地址
|
||||
Longitude float64 `json:"longitude" gorm:"column:longitude"` // 经度
|
||||
Latitude float64 `json:"latitude" gorm:"column:latitude"` // 纬度
|
||||
IsOnline uint32 `json:"is_online"` // 在线
|
||||
CooperativeBusinessId uint32 `json:"cooperative_business_id" gorm:"index"` // 合作商id
|
||||
CooperativeName string `json:"cooperative_name"` // 合作商名称
|
||||
}
|
||||
|
||||
func (*Store) TableName() string {
|
||||
|
@ -136,22 +139,40 @@ func (m *Store) Info() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
const (
|
||||
CannibalizeTaskStatusNotImportGoods = 1 // 1-待填调拨卡
|
||||
CannibalizeTaskStatusNotDeliverGoods = 2 // 2-待发货
|
||||
CannibalizeTaskStatusDeliveredGoods = 3 // 3-已发货
|
||||
CannibalizeTaskStatusInStorage = 4 // 4-已入库
|
||||
CannibalizeTaskStatusDel = 5 // 4-已删除
|
||||
)
|
||||
|
||||
// gen:qs
|
||||
type CannibalizeStockTask struct {
|
||||
Model
|
||||
FromStoreId uint32 `json:"from_store_id"`
|
||||
ToStoreId uint32 `json:"to_store_id"`
|
||||
TaskId uint32 `json:"task_id"`
|
||||
GameCardId uint32 `json:"game_card_id"` // 游戏卡id
|
||||
Count uint32 `json:"count"`
|
||||
Status uint8 `json:"status"` // 1-待填调拨卡 2-待发货 3-已发货 4-已入库
|
||||
//GameCardId uint32 `json:"game_card_id"` // 游戏卡id
|
||||
Count uint32 `json:"count"` // 总数量
|
||||
Status uint8 `json:"status"` // 1-待填调拨卡 2-待发货 3-已发货 4-已入库
|
||||
DeliveryTime time.Time `json:"delivery_time"`
|
||||
InStorageTime time.Time `json:"in_storage_time"`
|
||||
|
||||
FromStoreName string `json:"from_store_name" gorm:"-"`
|
||||
ToStoreName string `json:"to_store_name" gorm:"-"`
|
||||
// cannibalize_stock_task
|
||||
}
|
||||
|
||||
// gen:qs
|
||||
type CannibalizeGameCardGoods struct {
|
||||
Model
|
||||
|
||||
CannibalizeStockTaskId uint32 `json:"cannibalize_stock_task_id"`
|
||||
GameCardId uint32 `json:"game_card_id"` // 游戏卡id
|
||||
SerialNumber string `json:"serial_number" gorm:"index"` // 编号
|
||||
GameCardName string `json:"game_card_name" gorm:"–"`
|
||||
// cannibalize_game_card_goods
|
||||
}
|
||||
|
||||
func IsStoreStockEnough(cardInfos []CardInfo, gameStockMap map[uint64]uint32) bool {
|
||||
|
@ -164,3 +185,65 @@ func IsStoreStockEnough(cardInfos []CardInfo, gameStockMap map[uint64]uint32) bo
|
|||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func CannibalizeStockTaskListSetInfo(tasks []CannibalizeStockTask) []CannibalizeStockTask {
|
||||
if len(tasks) == 0 {
|
||||
return tasks
|
||||
}
|
||||
storeMap := GetAllStoreMap()
|
||||
for i, _ := range tasks {
|
||||
toStore, ok1 := storeMap[tasks[i].ToStoreId]
|
||||
if ok1 {
|
||||
tasks[i].ToStoreName = toStore.Name
|
||||
}
|
||||
fromStore, ok2 := storeMap[tasks[i].FromStoreId]
|
||||
if ok2 {
|
||||
tasks[i].FromStoreName = fromStore.Name
|
||||
}
|
||||
}
|
||||
return tasks
|
||||
}
|
||||
|
||||
func GetAllStoreMap() map[uint32]Store {
|
||||
storeMap := make(map[uint32]Store, 0)
|
||||
var stores []Store
|
||||
err := DB.Table("store").Find(&stores).Error
|
||||
if err != nil {
|
||||
logger.Errorf("err:%s", err)
|
||||
return storeMap
|
||||
}
|
||||
for i, _ := range stores {
|
||||
storeMap[stores[i].ID] = stores[i]
|
||||
}
|
||||
|
||||
return storeMap
|
||||
}
|
||||
|
||||
func CannibalizeGameCardGoodsSetInfo(goodses []CannibalizeGameCardGoods) []CannibalizeGameCardGoods {
|
||||
if len(goodses) == 0 {
|
||||
return goodses
|
||||
}
|
||||
ids := make([]uint32, 0)
|
||||
for i, _ := range goodses {
|
||||
ids = append(ids, goodses[i].GameCardId)
|
||||
}
|
||||
var gameCards []GameCard
|
||||
err := DB.Table("game_card").Where("id IN (?)", ids).Find(&gameCards).Error
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return goodses
|
||||
}
|
||||
gameCardMap := make(map[uint32]GameCard, 0)
|
||||
for i, _ := range gameCards {
|
||||
gameCardMap[gameCards[i].ID] = gameCards[i]
|
||||
}
|
||||
|
||||
for i, _ := range goodses {
|
||||
v, ok := gameCardMap[goodses[i].GameCardId]
|
||||
if ok {
|
||||
goodses[i].GameCardName = v.Name
|
||||
}
|
||||
}
|
||||
//UserOpenMemberRecord{}
|
||||
return goodses
|
||||
}
|
||||
|
|
263
model/user.go
263
model/user.go
|
@ -16,32 +16,36 @@ import (
|
|||
type User struct {
|
||||
Model
|
||||
|
||||
Uid uint32 `json:"uid" gorm:"column:uid;unique_index"`
|
||||
MemberLevel uint32 `json:"member_level"` // 会员等级 1-用户 2-会员
|
||||
MemberExpire time.Time `json:"member_expire"` // 会员到期时间
|
||||
OpenMemberTime time.Time `json:"open_member_time"` // 开通会员
|
||||
Bond uint32 `json:"bond"` // 保证金
|
||||
WxName string `json:"wx_name"` // 昵称
|
||||
WxAvatar string `json:"wx_avatar"` // 头像
|
||||
WxOpenID string `json:"wx_open_id"`
|
||||
AppOpenID string `json:"app_open_id"`
|
||||
WxUnionID string `json:"wx_union_id"`
|
||||
Tel string `json:"tel"` // 电话
|
||||
Gender uint8 `json:"gender"` // 性别
|
||||
City string `json:"city"` // 城市
|
||||
Province string `json:"province"` // 省
|
||||
Country string `json:"country"` // 市
|
||||
Deposit uint32 `json:"deposit"` // 押金
|
||||
UserType uint8 `json:"user_type"` // 用户类型 1-普通用户 2-店员
|
||||
OpenMemberChannel string `json:"open_member_channel" ` // 开通会员渠道 -门店推广 -用户邀请 -兑换码
|
||||
StoreId uint64 `json:"store_id"` // 门店id
|
||||
InviteCodeUrl string `json:"invite_code_url"` // 分享二维码
|
||||
LastLoginAt time.Time `json:"last_login_at"` // 最近登录时间
|
||||
IP string `json:"-" gorm:"type:varchar(60)"` // ip
|
||||
InBlack bool `json:"in_black"` // 是否在黑名单
|
||||
StoreType uint8 `json:"store_type"` // 1-订单门店
|
||||
Version uint32 `json:"-"`
|
||||
UserVm *UserVm `json:"user_vm" gorm:"-"` //
|
||||
Uid uint32 `json:"uid" gorm:"column:uid;unique_index"`
|
||||
MemberLevel uint32 `json:"member_level"` // 会员等级 1-用户 2-会员
|
||||
MemberExpire time.Time `json:"member_expire"` // 会员到期时间
|
||||
OpenMemberTime time.Time `json:"open_member_time"` // 开通会员
|
||||
Bond uint32 `json:"bond"` // 保证金
|
||||
WxName string `json:"wx_name"` // 昵称
|
||||
WxAvatar string `json:"wx_avatar"` // 头像
|
||||
WxOpenID string `json:"wx_open_id"`
|
||||
AppOpenID string `json:"app_open_id"`
|
||||
WxUnionID string `json:"wx_union_id"`
|
||||
Tel string `json:"tel"` // 电话
|
||||
Gender uint8 `json:"gender"` // 性别
|
||||
City string `json:"city"` // 城市
|
||||
Province string `json:"province"` // 省
|
||||
Country string `json:"country"` // 市
|
||||
Deposit uint32 `json:"deposit"` // 押金
|
||||
UserType uint32 `json:"user_type"` // 用户类型: 1-普通用户 2-店员
|
||||
XcxRoleId uint32 `json:"xcx_role_id"` // 角色id
|
||||
OpenMemberChannel string `json:"open_member_channel" ` // 开通会员渠道: -门店推广 -用户邀请 -兑换码
|
||||
StoreId uint64 `json:"store_id"` // 门店id
|
||||
InviteCodeUrl string `json:"invite_code_url"` // 分享二维码
|
||||
LastLoginAt time.Time `json:"last_login_at"` // 最近登录时间
|
||||
IP string `json:"-" gorm:"type:varchar(60)"` // ip
|
||||
InBlack bool `json:"in_black"` // 是否在黑名单
|
||||
StoreType uint32 `json:"store_type"` // 1-订单门店
|
||||
CooperativeBusinessId uint32 `json:"cooperative_business_id" gorm:"index"` // 合作商id
|
||||
CooperativeName string `json:"cooperative_name"` // 合作商名称
|
||||
Version uint32 `json:"-"`
|
||||
UserVm *UserVm `json:"user_vm" gorm:"-"` //
|
||||
//RoleId uint32 `json:"role_id"` // 角色id
|
||||
}
|
||||
|
||||
func (o *User) TableName() string {
|
||||
|
@ -76,10 +80,10 @@ type UserInvite struct {
|
|||
Model
|
||||
|
||||
FromUid uint32 `json:"from_uid"` // 邀请用户id
|
||||
UserType uint8 `json:"user_type"` // 用户类型
|
||||
UserType uint32 `json:"user_type"` // 用户类型
|
||||
StoreId uint64 `json:"store_id"` // 门店id
|
||||
MemberOpenTime time.Time `json:"member_open_time"` // 开通会员
|
||||
MemberType uint8 `json:"member_type"` // 被邀请用户 1-普通用户 2-会员
|
||||
MemberType uint32 `json:"member_type"` // 被邀请用户 1-普通用户 2-会员
|
||||
MemberStatus uint8 `json:"member_status"` // 被邀请用户 1-未开通 2-已开通 3-已取消会员
|
||||
ToUid uint32 `json:"to_uid"` // 被邀请用户
|
||||
StoreType uint32 `json:"store_type"` // 门店类型
|
||||
|
@ -162,6 +166,24 @@ type UserMemberExpireDelay struct {
|
|||
IsPay uint32 `json:"is_pay"` // 1-已支付
|
||||
}
|
||||
|
||||
// gen:qs
|
||||
type XcxRole struct {
|
||||
Model
|
||||
RoleId uint32 `json:"role_id" gorm:"unique_index,not null"`
|
||||
RoleName string `json:"role_name" gorm:"size:255;"` // 角色名称
|
||||
RoleKey string `json:"role_key" gorm:"size:255;"` // 角色代码
|
||||
RoleSort int `json:"role_sort" gorm:""` // 角色排序
|
||||
Status string `json:"status" gorm:"size:255;"` // 状态:1-停用 2-正常
|
||||
Flag string `json:"flag" gorm:"size:255;"` //
|
||||
CreateBy string `json:"create_by" gorm:"size:255;"` //
|
||||
UpdateBy string `json:"update_by" gorm:"size:255;"` //
|
||||
Remark string `json:"remark" gorm:"size:255;"` // 备注
|
||||
|
||||
Params string `json:"params" gorm:"-"`
|
||||
MenuIds []int `json:"menuIds" gorm:"-"`
|
||||
DeptIds []int `json:"deptIds" gorm:"-"`
|
||||
}
|
||||
|
||||
func GetUserByUid(uid uint32) *User {
|
||||
user := new(User)
|
||||
if err := NewUserQuerySet(DB).UidEq(uid).One(user); err != nil {
|
||||
|
@ -217,9 +239,9 @@ func UserUpdate(user *User) error {
|
|||
type UserOpenMemberRecord struct {
|
||||
Model
|
||||
|
||||
Uid uint32 `json:"uid"`
|
||||
Uid uint32 `json:"uid" gorm:"index"`
|
||||
OpenNo string `json:"open_no" gorm:"index"`
|
||||
OrderId uint32 `json:"order_id"`
|
||||
OrderId uint32 `json:"order_id" gorm:"index"`
|
||||
OrderType uint32 `json:"order_type"` // 1-物流支付 2-取消物流租卡 3-滞纳金 4-收回卡 5-退物流费
|
||||
MemberLevel uint32 `json:"member_level"`
|
||||
MemberExpire time.Time `json:"member_expire"` // 会员到期时间
|
||||
|
@ -241,6 +263,29 @@ func (m UserOpenMemberRecord) Insert() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
const (
|
||||
LogCorrelationOrderId = "order_id"
|
||||
LogCorrelationOrderCard = "order_card_id"
|
||||
)
|
||||
const (
|
||||
OperationTypeRentCardRevert = "rent_card_revert"
|
||||
OperationTypeRentCardDeliver = "rent_card_deliver"
|
||||
)
|
||||
|
||||
// gen:qs
|
||||
type OperationLog struct {
|
||||
Model
|
||||
Uid uint32 `json:"uid" gorm:"index"` // 店员id
|
||||
Description string `json:"description"` // 描述
|
||||
OperationType string `json:"operation_type" gorm:"index"` // 操作类型
|
||||
CorrelationId uint32 `json:"correlation_id" gorm:"index"` // 关联id
|
||||
CorrelationName string `json:"correlation_name" gorm:"index"` // 关联name
|
||||
StoreId uint32 `json:"store_id" gorm:"index"` // 门店id
|
||||
StoreName string `json:"store_name"` // 门店名称
|
||||
CooperativeName string `json:"cooperative_name"` // 合作商名称
|
||||
SerialNumber string `json:"serial_number" gorm:"index"` // 卡编号
|
||||
}
|
||||
|
||||
func (m *UserOpenMemberRecord) OrderRefund(outTradeNo string) error {
|
||||
if m.Order == nil {
|
||||
return errors.New("order is nil")
|
||||
|
@ -260,6 +305,24 @@ func (m *UserOpenMemberRecord) OrderRefund(outTradeNo string) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// gen:qs
|
||||
type InviteMemberReport struct {
|
||||
Model
|
||||
Uid uint32 `json:"uid" gorm:"index"` // 店员uid
|
||||
StoreId uint32 `json:"store_id" gorm:"index"` // 门店id
|
||||
GoldCount uint32 `json:"gold_count"` // 黄金数量
|
||||
PlatinumCount uint32 `json:"platinum_count"` // 白金数量
|
||||
BlackGoldCount uint32 `json:"black_gold_count"` // 黑金数量
|
||||
ReportTime string `json:"report_time" gorm:"index"` // 业绩时间
|
||||
DeductAmount uint32 `json:"deduct_amount"` // 店员提成
|
||||
CooperativeBusinessId uint32 `json:"cooperative_business_id" gorm:"index"` // 合作商id
|
||||
CooperativeName string `json:"cooperative_name"` // 合作商名称
|
||||
GoldDeduct uint32 `json:"gold_deduct"` // 黄金会员提成
|
||||
PlatinumDeduct uint32 `json:"platinum_deduct"` // 白金会员提成
|
||||
BlackGoldDeduct uint32 `json:"black_gold_deduct"` // 黑金会员提成
|
||||
// invite_member_report
|
||||
}
|
||||
|
||||
func (m *UserOpenMemberRecord) Refund(outTradeNo string, amount uint32) error {
|
||||
configInfo, err := PayConfigInfo()
|
||||
if err != nil {
|
||||
|
@ -301,45 +364,44 @@ func (m *UserOpenMemberRecord) Refund(outTradeNo string, amount uint32) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (m *UserOpenMemberRecord) ShareCardRetrieveRefund(outTradeNo string) error {
|
||||
//if m.ShareCardRetrieve == nil {
|
||||
// return errors.New("order is nil")
|
||||
//}
|
||||
//if m.OpenNo == "" {
|
||||
// m.OpenNo = GetShareCardRetrieveOrderSn()
|
||||
//}
|
||||
//m.Uid = uint32(m.Order.Uid)
|
||||
//m.OrderId = m.ShareCardRetrieve.ID
|
||||
//configInfo, err := PayConfigInfo()
|
||||
//if err != nil {
|
||||
// logger.Error("config info err:", err)
|
||||
// return err
|
||||
//}
|
||||
//
|
||||
//err = m.Insert()
|
||||
//if err != nil {
|
||||
// logger.Error("insert user open member record err:", err)
|
||||
// return err
|
||||
//}
|
||||
//
|
||||
//orderRefund := wxpay.OrderRefund{
|
||||
// OutTradeNo: outTradeNo,
|
||||
// OutRefundNo: m.OpenNo,
|
||||
// NotifyUrl: configInfo.NotifyUrl,
|
||||
// Amount: wxpay.OrderRefundAmount{
|
||||
// Refund: m.ShareCardRetrieve.PayAmount,
|
||||
// Total: m.ShareCardRetrieve.PayAmount,
|
||||
// Currency: "CNY",
|
||||
// },
|
||||
//}
|
||||
//err = wxpay.TransactionOrderRefund(orderRefund)
|
||||
//if err != nil {
|
||||
// logger.Error("err:", err)
|
||||
// return err
|
||||
//}
|
||||
|
||||
return nil
|
||||
}
|
||||
//func (m *UserOpenMemberRecord) ShareCardRetrieveRefund(outTradeNo string) error {
|
||||
// //if m.ShareCardRetrieve == nil {
|
||||
// // return errors.New("order is nil")
|
||||
// //}
|
||||
// //if m.OpenNo == "" {
|
||||
// // m.OpenNo = GetShareCardRetrieveOrderSn()
|
||||
// //}
|
||||
// //m.Uid = uint32(m.Order.Uid)
|
||||
// //m.OrderId = m.ShareCardRetrieve.ID
|
||||
// //configInfo, err := PayConfigInfo()
|
||||
// //if err != nil {
|
||||
// // logger.Error("config info err:", err)
|
||||
// // return err
|
||||
// //}
|
||||
// //
|
||||
// //err = m.Insert()
|
||||
// //if err != nil {
|
||||
// // logger.Error("insert user open member record err:", err)
|
||||
// // return err
|
||||
// //}
|
||||
// //
|
||||
// //orderRefund := wxpay.OrderRefund{
|
||||
// // OutTradeNo: outTradeNo,
|
||||
// // OutRefundNo: m.OpenNo,
|
||||
// // NotifyUrl: configInfo.NotifyUrl,
|
||||
// // Amount: wxpay.OrderRefundAmount{
|
||||
// // Refund: m.ShareCardRetrieve.PayAmount,
|
||||
// // Total: m.ShareCardRetrieve.PayAmount,
|
||||
// // Currency: "CNY",
|
||||
// // },
|
||||
// //}
|
||||
// //err = wxpay.TransactionOrderRefund(orderRefund)
|
||||
// //if err != nil {
|
||||
// // logger.Error("err:", err)
|
||||
// // return err
|
||||
// //}
|
||||
// return nil
|
||||
//}
|
||||
|
||||
func (m *UserOpenMemberRecord) GetByOpenNo() error {
|
||||
err := NewUserOpenMemberRecordQuerySet(DB).OpenNoEq(m.OpenNo).One(m)
|
||||
|
@ -431,7 +493,7 @@ func (m *UserInviteListReq) InviteUserList() (*UserInviteListResp, error) {
|
|||
|
||||
qs := NewUserInviteQuerySet(DB).FromUidEq(m.Uid)
|
||||
if m.MemberType != 0 {
|
||||
qs = qs.MemberTypeEq(uint8(m.MemberType))
|
||||
qs = qs.MemberTypeEq(uint32(m.MemberType))
|
||||
}
|
||||
if m.StartTime != "" {
|
||||
parse, err := time.Parse(DateTimeFormat, m.StartTime)
|
||||
|
@ -786,3 +848,64 @@ func MemberExpireDelaying(uid uint32) (map[string]interface{}, error) {
|
|||
}
|
||||
return ret, nil
|
||||
}
|
||||
|
||||
func (m *OperationLog) AddLog() {
|
||||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
fmt.Println("recover err:", err)
|
||||
}
|
||||
}()
|
||||
go func() {
|
||||
err := DB.Create(m).Error
|
||||
if err != nil {
|
||||
logger.Error("create operation log err:")
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
type InviteMemberReportListReq struct {
|
||||
PageNum int `json:"page_num"`
|
||||
PageSize int `json:"page_size"`
|
||||
Uid uint32 `json:"uid"`
|
||||
}
|
||||
|
||||
func (m *InviteMemberReportListReq) List() ([]InviteMemberReport, int, error) {
|
||||
var memberReport []InviteMemberReport
|
||||
qs := NewInviteMemberReportQuerySet(DB).UidEq(m.Uid)
|
||||
count, err := qs.Count()
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return memberReport, 0, err
|
||||
}
|
||||
page := m.PageNum - 1
|
||||
if page < 0 {
|
||||
page = 0
|
||||
}
|
||||
if m.PageSize == 0 {
|
||||
m.PageSize = 10
|
||||
}
|
||||
totalPage := count/m.PageSize + 1
|
||||
|
||||
err = qs.Offset(page * m.PageSize).Limit(m.PageSize).OrderDescByID().All(&memberReport)
|
||||
if err != nil && err != RecordNotFound {
|
||||
logger.Error("err:", err)
|
||||
return memberReport, totalPage, err
|
||||
}
|
||||
|
||||
assistant := GetUserByUid(m.Uid)
|
||||
cooperative := new(CooperativeBusiness)
|
||||
cooperative.ID = assistant.CooperativeBusinessId
|
||||
cooperative.SetAssistantMemberDeductConfig(uint32(assistant.StoreId))
|
||||
if len(memberReport) > 0 {
|
||||
memberReport[len(memberReport)-1].GoldDeduct = cooperative.CooperativeAssistantMemberDeduct.GoldDeduct
|
||||
memberReport[len(memberReport)-1].PlatinumDeduct = cooperative.CooperativeAssistantMemberDeduct.PlatinumDeduct
|
||||
memberReport[len(memberReport)-1].BlackGoldDeduct = cooperative.CooperativeAssistantMemberDeduct.BlackGoldDeduct
|
||||
|
||||
report := memberReport[len(memberReport)-1]
|
||||
memberReport[len(memberReport)-1].DeductAmount += report.GoldCount * report.GoldDeduct
|
||||
memberReport[len(memberReport)-1].DeductAmount += report.PlatinumCount * report.PlatinumDeduct
|
||||
memberReport[len(memberReport)-1].DeductAmount += report.BlackGoldCount * report.BlackGoldDeduct
|
||||
}
|
||||
|
||||
return memberReport, totalPage, nil
|
||||
}
|
||||
|
|
|
@ -88,6 +88,7 @@ func ConfigAppRouter(r gin.IRouter) {
|
|||
user.POST("member_config", controller.MemberConfigList) // 开通会员配置
|
||||
user.POST("attendance", controller.UserAttendance) // 签到
|
||||
user.POST("attendance/detail", controller.UserAttendanceDetail) // 签到详情
|
||||
user.POST("invite_report", controller.InviteMemberReportList) // 用户邀请会员业绩报表
|
||||
|
||||
user.POST("common_problem/list", controller.CommonProblemList) // 常见问题列表
|
||||
//user.POST("service/wechat_id", controller.GetCustomerServiceWechatId) // 获取客服微信号
|
||||
|
@ -210,9 +211,29 @@ func ConfigAppRouter(r gin.IRouter) {
|
|||
shareCard.POST("card_issue/list", controller.CardIssueList) // 我的共享卡问题反馈列表
|
||||
shareCard.POST("card_issue/info", controller.CardIssueInfo) // 我的共享卡问题反馈详情
|
||||
shareCard.POST("card_issue/deliver", controller.CardIssueDeliver) // 我的共享卡问题反馈卡发货
|
||||
|
||||
//shoppingCart.POST("del", controller.ShoppingCartDel) //
|
||||
}
|
||||
cooperative := api.Group("cooperative_business")
|
||||
{
|
||||
cooperative.Use(auth.UserAccessAuth)
|
||||
cooperative.POST("rent_card_order/list", controller.CooperativeRentCardOrderList)
|
||||
cooperative.POST("rent_card_order/info", controller.CooperativeRentCardOrderInfo)
|
||||
cooperative.POST("rent_card_order/deliver", controller.CooperativeRentCardOrderDeliver) // 订单发货
|
||||
cooperative.POST("rent_card_order/revert", controller.CooperativeRentCardOrderRevert) // 订单归还
|
||||
cooperative.POST("goods_stock/adds", controller.CooperativeGameCardGoodsStockAdds) // 游戏卡入库
|
||||
cooperative.POST("goods_stock/analysis", controller.GameCardGoodsStockAnalysis) // 游戏卡
|
||||
cooperative.POST("goods_stock/export", controller.CooperativeExportDataGameCardGoodsStock) // 库存导出
|
||||
cooperative.POST("goods_stock/goods_list", controller.CooperativeGameCardGoodsList) // 卡列表
|
||||
cooperative.POST("member_promotion/assistant_list", controller.AssistantMemberPromotionList) // 店员推广 TODO
|
||||
|
||||
cooperative.POST("/cannibalize_task/create", controller.CooperativeCannibalizeTaskCreate) // 创建调拨
|
||||
cooperative.POST("/cannibalize_task/import_goods", controller.CooperativeCannibalizeTaskImportGoods) //
|
||||
cooperative.POST("/cannibalize_task/deliver_goods", controller.CooperativeCannibalizeTaskDeliverGoods) //
|
||||
cooperative.POST("/cannibalize_task/put_in_storage", controller.CooperativeCannibalizeTaskPutInStorage) //
|
||||
cooperative.POST("/cannibalize_task/list", controller.CooperativeCannibalizeTaskList) //
|
||||
cooperative.POST("/cannibalize_task/goods_list", controller.CooperativeCannibalizeTaskGameCardGoodsList) //
|
||||
cooperative.POST("/cannibalize_task/del", controller.CooperativeCannibalizeTaskDel) //
|
||||
//order.POST("/card/adds", stockmanage.GameCardGoodsStockAdds) // 游戏卡入库
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user