You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

53 lines
1.7 KiB

package api
import (
"yunyan/comm"
"yunyan/lego/sys/log"
"yunyan/pb"
)
// 更新品牌商信息
func (this *apiComp) UpdateBrand(session comm.IUserSession, req *pb.ApiUpdateBrandReq) (resp *pb.ApiUpdateBrandResp, errdata *pb.ErrorData) {
var (
old *pb.DBBrand
err error
)
if req.Brand == nil || req.Brand.Id == 0 {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ReqParameterError,
Message: "brand id is required",
}
return
}
if old, err = this.module.model.factory(req.Brand.Id); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Message: err.Error(),
}
this.module.Error("UpdateBrand Fail!", log.Field{Key: "req", Value: req.String()}, log.Field{Key: "err", Value: err.Error()})
return
}
// 仅允许客户端覆盖可编辑字段,productlists 等由服务端维护的字段不接受前端写入,
// 防止前端表单缺字段或携带陈旧值时把产品列表覆盖回旧值。
old.Brand = req.Brand.Brand
// providerid 不再由品牌商维护:方案商归属挂在产品上(DBProduct.providerid),这里刻意不覆盖旧值。
old.Description = req.Brand.Description
old.Contactmails = req.Brand.Contactmails
// 分成比例只有超管/管理员能改(品牌商自己改比例等于自定分成)。
if canAuditChannel(session) {
old.Sharerate = req.Brand.Sharerate
}
if err = this.module.model.savefactory(old); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Message: err.Error(),
}
this.module.Error("UpdateBrand Fail!", log.Field{Key: "req", Value: req.String()}, log.Field{Key: "err", Value: err.Error()})
return
}
resp = &pb.ApiUpdateBrandResp{
Brand: old,
}
return
}