1、特定角色用户在新增零售订单时可以不受最低零售价的限制;
This commit is contained in:
parent
195ad99c81
commit
1e09e997d3
|
@ -9,6 +9,7 @@ import (
|
||||||
"go-admin/logger"
|
"go-admin/logger"
|
||||||
"go-admin/tools"
|
"go-admin/tools"
|
||||||
"go-admin/tools/app"
|
"go-admin/tools/app"
|
||||||
|
"golang.org/x/time/rate"
|
||||||
"math"
|
"math"
|
||||||
"net/http"
|
"net/http"
|
||||||
"time"
|
"time"
|
||||||
|
@ -830,6 +831,12 @@ func ErpPurchaseReportByCommodity(c *gin.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var limiter = rate.NewLimiter(5, 10) // 每秒最多5个请求
|
||||||
|
if !limiter.Allow() {
|
||||||
|
app.Error(c, http.StatusTooManyRequests, errors.New("too Many Requests"), "Too Many Requests")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
resp, err := model.GetReportByCommodity(req, c)
|
resp, err := model.GetReportByCommodity(req, c)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("GetReportByCommodity err:", logger.Field("err", err))
|
logger.Error("GetReportByCommodity err:", logger.Field("err", err))
|
||||||
|
|
|
@ -6195,6 +6195,27 @@ func AuthUserStore(c *gin.Context, storeId uint32) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HasPermission 校验角色权限:以下角色支持零售开单修改零售价 < 商品最低零售价
|
||||||
|
func HasPermission(c *gin.Context) bool {
|
||||||
|
// 获取用户角色
|
||||||
|
roleName := tools.GetRoleName(c)
|
||||||
|
|
||||||
|
// 允许的角色列表
|
||||||
|
allowedRoles := map[string]bool{
|
||||||
|
"manager": true, "经理": true,
|
||||||
|
"cg": true, "采购": true,
|
||||||
|
"yunying": true, "运营": true,
|
||||||
|
"admin": true, "系统管理员": true,
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查用户角色是否在允许列表中
|
||||||
|
if _, ok := allowedRoles[roleName]; !ok {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
// checkOrderData 校验订单数据
|
// checkOrderData 校验订单数据
|
||||||
func checkOrderData(req *ErpOrderCreateReq, c *gin.Context) (*ErpOrder, error) {
|
func checkOrderData(req *ErpOrderCreateReq, c *gin.Context) (*ErpOrder, error) {
|
||||||
sysUser, err := GetSysUserByCtx(c)
|
sysUser, err := GetSysUserByCtx(c)
|
||||||
|
@ -6442,8 +6463,10 @@ func checkOrderData(req *ErpOrderCreateReq, c *gin.Context) (*ErpOrder, error) {
|
||||||
return nil, errors.New("赠送商品最低零售价不为0,不符合赠送条件,请检查")
|
return nil, errors.New("赠送商品最低零售价不为0,不符合赠送条件,请检查")
|
||||||
}
|
}
|
||||||
if req.ErpOrderCommodities[i].SalePrice < v.MinRetailPrice { //零售价不能低于最低零售价
|
if req.ErpOrderCommodities[i].SalePrice < v.MinRetailPrice { //零售价不能低于最低零售价
|
||||||
logger.Error("SalePrice less than MinRetailPrice")
|
if !HasPermission(c) {
|
||||||
return nil, errors.New("零售价不能低于最低零售价,请检查")
|
logger.Error("SalePrice less than MinRetailPrice")
|
||||||
|
return nil, errors.New("零售价不能低于最低零售价,请检查")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if req.ErpOrderCommodities[i].PresentType == 1 &&
|
if req.ErpOrderCommodities[i].PresentType == 1 &&
|
||||||
req.ErpOrderCommodities[i].CouponDiscount < req.ErpOrderCommodities[i].Amount { // 有非赠送商品
|
req.ErpOrderCommodities[i].CouponDiscount < req.ErpOrderCommodities[i].Amount { // 有非赠送商品
|
||||||
|
|
|
@ -4610,7 +4610,7 @@ func getReportByCommodityFromCommon(req *ErpPurchaseReportByCommodityReq, c *gin
|
||||||
//close(ch)
|
//close(ch)
|
||||||
|
|
||||||
// 并发查询的限制
|
// 并发查询的限制
|
||||||
const maxConcurrency = 15
|
const maxConcurrency = 10
|
||||||
sem := make(chan struct{}, maxConcurrency)
|
sem := make(chan struct{}, maxConcurrency)
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
ch := make(chan TempData, len(orders)*len(commodityAndOrderIdMap))
|
ch := make(chan TempData, len(orders)*len(commodityAndOrderIdMap))
|
||||||
|
|
|
@ -207,16 +207,18 @@ func run() error {
|
||||||
fmt.Println("err:", err)
|
fmt.Println("err:", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检测小程序商城有无待发货订单
|
if config.ApplicationConfig.Mode != "dev" {
|
||||||
err = s.Every(1).Day().At("09:00").Do(models.CheckOnDeliverMall)
|
// 检测小程序商城有无待发货订单
|
||||||
if err != nil {
|
err = s.Every(1).Day().At("09:00").Do(models.CheckOnDeliverMall)
|
||||||
fmt.Println("err:", err)
|
if err != nil {
|
||||||
}
|
fmt.Println("err:", err)
|
||||||
|
}
|
||||||
|
|
||||||
// 检测小程序商城有无待发货订单
|
// 检测小程序商城有无待发货订单
|
||||||
err = s.Every(1).Day().At("14:00").Do(models.CheckOnDeliverMall)
|
err = s.Every(1).Day().At("14:00").Do(models.CheckOnDeliverMall)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("err:", err)
|
fmt.Println("err:", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
<-s.Start()
|
<-s.Start()
|
||||||
|
|
1
go.mod
1
go.mod
|
@ -55,6 +55,7 @@ require (
|
||||||
golang.org/x/arch v0.5.0 // indirect
|
golang.org/x/arch v0.5.0 // indirect
|
||||||
golang.org/x/crypto v0.14.0
|
golang.org/x/crypto v0.14.0
|
||||||
golang.org/x/sync v0.4.0
|
golang.org/x/sync v0.4.0
|
||||||
|
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4
|
||||||
golang.org/x/tools v0.14.0 // indirect
|
golang.org/x/tools v0.14.0 // indirect
|
||||||
google.golang.org/protobuf v1.31.0 // indirect
|
google.golang.org/protobuf v1.31.0 // indirect
|
||||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1
|
gopkg.in/natefinch/lumberjack.v2 v2.2.1
|
||||||
|
|
1
go.sum
1
go.sum
|
@ -760,6 +760,7 @@ golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||||
golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
|
golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
|
||||||
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
|
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
|
||||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
|
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ=
|
||||||
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/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=
|
golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
|
Loading…
Reference in New Issue
Block a user