|
@@ -553,84 +553,157 @@ func (this *ProductController) ProductRisk() {
|
|
br.Msg = "获取成功"
|
|
br.Msg = "获取成功"
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
+
|
|
-
|
|
+
|
|
-
|
|
+
|
|
-
|
|
+
|
|
-
|
|
+
|
|
-
|
|
+func (this *ProductController) EditProduct() {
|
|
-
|
|
+ br := new(models.BaseResponse).Init()
|
|
-
|
|
+ defer func() {
|
|
-
|
|
+ this.Data["json"] = br
|
|
-
|
|
+ this.ServeJSON()
|
|
-
|
|
+ }()
|
|
-
|
|
+ var req request.ProductReq
|
|
-
|
|
+ var permissionName string
|
|
-
|
|
+ err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
|
|
-
|
|
+ if err != nil {
|
|
-
|
|
+ br.Msg = "参数解析异常!"
|
|
-
|
|
+ br.ErrMsg = "参数解析失败,Err:" + err.Error()
|
|
-
|
|
+ return
|
|
-
|
|
+ }
|
|
-
|
|
+
|
|
-
|
|
+ var product models.MerchantProduct
|
|
-
|
|
+ if req.Type == "package" {
|
|
-
|
|
+ if req.ValidDays <= 0 {
|
|
-
|
|
+ br.Msg = "套餐有效期非法"
|
|
-
|
|
+ br.ErrMsg = "套餐有效期非法,天数不能是负数"
|
|
-
|
|
+ return
|
|
-
|
|
+ }
|
|
-
|
|
+ if req.ProductName == "" {
|
|
-
|
|
+ br.Msg = "套餐名称不能为空"
|
|
-
|
|
+ br.ErrMsg = "套餐名称不能为空"
|
|
-
|
|
+ return
|
|
-
|
|
+ }
|
|
-
|
|
+ product.Title = req.ProductName
|
|
-
|
|
+ product.ValidDays = req.ValidDays
|
|
-
|
|
+ product.Description = req.Description
|
|
-
|
|
+ if req.CoverSrc == "" {
|
|
-
|
|
+ var imageList []models.ImageSource
|
|
-
|
|
+ imageList, err = models.GetImageByPermissionId(req.SourceId)
|
|
-
|
|
+ if err != nil {
|
|
-
|
|
+ utils.FileLog.Error("套餐封面获取失败", err.Error())
|
|
-
|
|
+
|
|
-
|
|
+
|
|
-
|
|
+
|
|
-
|
|
+ } else {
|
|
-
|
|
+ var rnd = rand.New(rand.NewSource(time.Now().UnixNano()))
|
|
-
|
|
+ index := rnd.Intn(len(imageList))
|
|
-
|
|
+ product.CoverSrc = imageList[index].SrcUrl
|
|
-
|
|
+ }
|
|
-
|
|
+ } else {
|
|
-
|
|
+ product.CoverSrc = req.CoverSrc
|
|
-
|
|
+ }
|
|
-
|
|
+
|
|
-
|
|
+ }
|
|
-
|
|
+ switch req.Type {
|
|
-
|
|
+ case "report":
|
|
-
|
|
+ product.RiskLevel, product.Title, err = services.GetRiskLevel("report", req.SourceId)
|
|
-
|
|
+ case "audio":
|
|
-
|
|
+ product.RiskLevel, product.Title, err = services.GetRiskLevel("audio", req.SourceId)
|
|
-
|
|
+ case "video":
|
|
-
|
|
+ product.RiskLevel, product.Title, err = services.GetRiskLevel("video", req.SourceId)
|
|
-
|
|
+ case "package":
|
|
-
|
|
+ product.RiskLevel, permissionName, err = services.GetRiskLevel("package", req.SourceId)
|
|
-
|
|
+ default:
|
|
-
|
|
+ br.Msg = "产品类型错误"
|
|
-
|
|
+ br.ErrMsg = "获取产品列表失败,Err:产品类型错误"
|
|
-
|
|
+ return
|
|
-
|
|
+ }
|
|
-
|
|
+
|
|
-
|
|
+ if err != nil {
|
|
-
|
|
+ utils.FileLog.Error("新增单品失败", err.Error())
|
|
-
|
|
+ br.Msg = "新增产品错误"
|
|
-
|
|
+ if strings.Contains(err.Error(), "<QuerySeter> no row found") {
|
|
-
|
|
+ br.Msg = "新增产品错误,产品信息不存在"
|
|
-
|
|
+ } else {
|
|
-
|
|
+ br.Msg = "新增产品错误" + err.Error()
|
|
-
|
|
+ }
|
|
-
|
|
+ return
|
|
-
|
|
+ }
|
|
-
|
|
+ if product.RiskLevel == "" {
|
|
-
|
|
+ br.Msg = "新增产品错误"
|
|
-
|
|
+ br.ErrMsg = "未获取到风险等级"
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if !checkProductRiskLevel(product.RiskLevel) {
|
|
|
|
+ br.Msg = "产品风险等级不合法"
|
|
|
|
+ br.ErrMsg = "产品风险等级不合法:" + product.RiskLevel
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if product.Title == "" {
|
|
|
|
+ br.Msg = "产品名称不能为空"
|
|
|
|
+ br.ErrMsg = "产品名称不能为空"
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ var price decimal.Decimal
|
|
|
|
+ price, err = decimal.NewFromString(req.Price)
|
|
|
|
+ if err != nil {
|
|
|
|
+ br.Msg = "产品价格格式不正确"
|
|
|
|
+ br.ErrMsg = "产品价格格式不正确,err:" + err.Error() + "price:" + product.Price
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if price.Cmp(decimal.New(0, 0)) <= 0 {
|
|
|
|
+ br.Msg = "产品价格不能小于0"
|
|
|
|
+ br.ErrMsg = "产品价格不能小于0"
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ product.SaleStatus = models.OnSale
|
|
|
|
+ product.CreatedTime = time.Now()
|
|
|
|
+ product.Price = req.Price
|
|
|
|
+ product.SourceId = req.SourceId
|
|
|
|
+ product.Type = models.MerchantProductType(req.Type)
|
|
|
|
+ product.Creator = this.SysUser.SysRealName
|
|
|
|
+ if product.Type == "" {
|
|
|
|
+ br.Msg = "新增产品错误"
|
|
|
|
+ br.ErrMsg = "产品类型为空"
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ err = product.EditProduct()
|
|
|
|
+ if err != nil {
|
|
|
|
+ var mysqlErr *mysql.MySQLError
|
|
|
|
+ if errors.As(err, &mysqlErr) {
|
|
|
|
+ if mysqlErr.Number == 1062 {
|
|
|
|
+ if product.Type == models.ProductPackage {
|
|
|
|
+ var dbProduct models.MerchantProduct
|
|
|
|
+ dbProduct, err = models.GetProductByProductType(product.SourceId, models.ProductPackage)
|
|
|
|
+ if err != nil {
|
|
|
|
+ utils.FileLog.Error("获取套餐产品信息失败,err:" + err.Error())
|
|
|
|
+ br.Msg = "[" + permissionName + "]已设置付费套餐,请重新选择"
|
|
|
|
+ br.ErrMsg = "[" + permissionName + "]已设置付费套餐,请重新选择"
|
|
|
|
+ } else {
|
|
|
|
+ br.Msg = "[" + permissionName + "]已设置付费套餐[" + dbProduct.Title + "],请重新选择"
|
|
|
|
+ br.ErrMsg = "[" + permissionName + "]已设置付费套餐[" + dbProduct.Title + "],请重新选择"
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ br.Msg = "该产品已设置付费,请刷新后重试"
|
|
|
|
+ br.ErrMsg = "该产品已设置付费,请刷新后重试"
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ utils.FileLog.Error("新增产品失败,err:" + err.Error())
|
|
|
|
+ br.Msg = "新增产品失败"
|
|
|
|
+ br.ErrMsg = "新增产品失败,err:" + err.Error()
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ utils.FileLog.Error("新增产品失败,err:" + err.Error())
|
|
|
|
+ br.Msg = "新增产品失败"
|
|
|
|
+ br.ErrMsg = "新增产品失败,err:" + err.Error()
|
|
|
|
+ }
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ br.Ret = 200
|
|
|
|
+ br.Success = true
|
|
|
|
+ br.Msg = "新增产品成功"
|
|
|
|
+ return
|
|
|
|
+}
|