|
@@ -553,84 +553,157 @@ func (this *ProductController) ProductRisk() {
|
|
|
br.Msg = "获取成功"
|
|
|
}
|
|
|
|
|
|
-//
|
|
|
-//// OnSale @Title 上架产品
|
|
|
-//// @Description 上架产品
|
|
|
-//// @Param File query file true "文件"
|
|
|
-//// @Success 200 {object} models.ReportAuthorResp
|
|
|
-//// @router /onSale [post]
|
|
|
-//func (this *ProductController) OnSale() {
|
|
|
-// br := new(models.BaseResponse).Init()
|
|
|
-// defer func() {
|
|
|
-// this.Data["json"] = br
|
|
|
-// this.ServeJSON()
|
|
|
-// }()
|
|
|
-// f, h, err := this.GetFile("File")
|
|
|
-// if err != nil {
|
|
|
-// br.Msg = "获取资源信息失败"
|
|
|
-// br.ErrMsg = "获取资源信息失败,Err:" + err.Error()
|
|
|
-// return
|
|
|
-// }
|
|
|
-// defer f.Close()
|
|
|
-// size, err := strconv.Atoi(utils.UPLOAD_IMG_SIZE)
|
|
|
-// if err != nil {
|
|
|
-// size = 100
|
|
|
-// }
|
|
|
-// if h.Size > 1024*1024*int64(size) {
|
|
|
-// br.Msg = fmt.Sprintf("图片大小不能超过%dK", size)
|
|
|
-// br.ErrMsg = "图片上传失败,Err:" + err.Error()
|
|
|
-// return
|
|
|
-// }
|
|
|
-// ext := path.Ext(h.Filename)
|
|
|
-// //if ext != ".mp3" {
|
|
|
-// // br.Msg = "音频格式不正确"
|
|
|
-// // br.ErrMsg = "音频上传失败,Err:" + err.Error()
|
|
|
-// // return
|
|
|
-// //}
|
|
|
-// dateDir := time.Now().Format("20060102")
|
|
|
-// uploadDir := utils.STATIC_DIR + "ht/audio" + dateDir
|
|
|
-// err = os.MkdirAll(uploadDir, utils.DIR_MOD)
|
|
|
-// if err != nil {
|
|
|
-// br.Msg = "存储目录创建失败"
|
|
|
-// br.ErrMsg = "存储目录创建失败,Err:" + err.Error()
|
|
|
-// return
|
|
|
-// }
|
|
|
-// randStr := utils.GetRandStringNoSpecialChar(28)
|
|
|
-// fileName := randStr + ext
|
|
|
-// fpath := uploadDir + "/" + fileName
|
|
|
-// err = this.SaveToFile("File", fpath)
|
|
|
-// if err != nil {
|
|
|
-// br.Msg = "图片上传失败"
|
|
|
-// br.ErrMsg = "图片上传失败,Err:" + err.Error()
|
|
|
-// return
|
|
|
-// }
|
|
|
-// audioUploadDir := utils.RESOURCE_DIR + "img/"
|
|
|
-// savePdfToOssPath := audioUploadDir + time.Now().Format("200601/20060102/")
|
|
|
-// audioName := utils.GetRandStringNoSpecialChar(28)
|
|
|
-// savePdfToOssPath += audioName + ext
|
|
|
-//
|
|
|
-// defer func() {
|
|
|
-// err = os.Remove(fpath)
|
|
|
-// fmt.Sprintf("删除文件失败:%v", err)
|
|
|
-// }()
|
|
|
-// ossClient := services.NewOssClient()
|
|
|
-// if ossClient == nil {
|
|
|
-// br.Msg = "图片上传失败"
|
|
|
-// br.ErrMsg = "初始化OSS服务失败"
|
|
|
-// return
|
|
|
-// }
|
|
|
-// mp3Url, err := ossClient.UploadFile("", fpath, savePdfToOssPath)
|
|
|
-// if err != nil {
|
|
|
-// br.Msg = "图片上传失败"
|
|
|
-// br.ErrMsg = "图片上传失败,Err:" + err.Error()
|
|
|
-// return
|
|
|
-// }
|
|
|
-// base := path.Base(h.Filename)
|
|
|
-// resp := new(response.MediaUploadResp)
|
|
|
-// resp.Url = mp3Url
|
|
|
-// resp.FileName = base
|
|
|
-// br.Data = resp
|
|
|
-// br.Msg = "上架成功"
|
|
|
-// br.Ret = 200
|
|
|
-// br.Success = true
|
|
|
-//}
|
|
|
+// EditProduct @Title 编辑产品
|
|
|
+// @Description 编辑产品
|
|
|
+// @Param File query file true "文件"
|
|
|
+// @Success 200 {object} models.ReportAuthorResp
|
|
|
+// @router /editProduct [post]
|
|
|
+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())
|
|
|
+ //br.Msg = "默认套餐封面获取失败,请上传封面"
|
|
|
+ //br.ErrMsg = "默认套餐封面获取失败,请上传封面,Err:" + err.Error()
|
|
|
+ //return
|
|
|
+ } 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
|
|
|
+}
|